<?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>100751</bug_id>
          
          <creation_ts>2012-10-30 06:20:37 -0700</creation_ts>
          <short_desc>[EFL][WK2] Common ref and unref functions for EFL WK2 objects</short_desc>
          <delta_ts>2012-11-02 03:15:55 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754286</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-30 06:20:37 -0700</bug_when>
    <thetext>As all the ref-counting EWK classes are inherited from WTF::RefCounted
it is possible now to have generic REF/UNREF functions in the public API instead of 
having separate pair of such functions for every object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755220</commentid>
    <comment_count>1</comment_count>
      <attachid>171634</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-31 06:24:53 -0700</bug_when>
    <thetext>Created attachment 171634
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755247</commentid>
    <comment_count>2</comment_count>
      <attachid>171634</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 06:50:38 -0700</bug_when>
    <thetext>Comment on attachment 171634
patch

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

Still not sure how I feel about this change, but here is some initial feedback:

&gt; Source/WebKit2/PlatformEfl.cmake:61
&gt; +    UIProcess/API/efl/ewk_ref_counted.cpp

You need to add &quot;ewk_ref_counted.h&quot; to the installable headers below in the same file.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp:62
&gt; +    if (const EwkBackForwardListItem* impl = ewkCastToType&lt;EwkBackForwardListItem&gt;(item))

Maybe we could have a macro.

Something like EWK_GET_IMPL_OR_RETURN(item, 0);

&gt; Source/WebKit2/UIProcess/API/efl/ewk_ref_counted.h:50
&gt; +EAPI Ewk_Ref_Counted *ewk_ref_counted_ref(Ewk_Ref_Counted *object);

Why not simply ewk_ref() / ewk_unref()?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_ref_counted_private.h:34
&gt; +    virtual const char* instClassName() const = 0;

&quot;inst&quot;? What does it stand for? We usually try to avoid abbreviations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755781</commentid>
    <comment_count>3</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-31 18:30:10 -0700</bug_when>
    <thetext>The referencing count files(ewk_ref_counted.h | cpp) are placed to Source/WTF/wtf. Why these files should be place to WebKit2&apos;s UIProcess side ? If we can move these files to there, I think we can use this functionality in all EFL places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755894</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 22:49:02 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; The referencing count files(ewk_ref_counted.h | cpp) are placed to Source/WTF/wtf. Why these files should be place to WebKit2&apos;s UIProcess side ? If we can move these files to there, I think we can use this functionality in all EFL places.

AFAIK, they need to be in the API folder because they are part of the public API (e.g. ewe_ref_counted_ref() is in ewk_ref_counted.h).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755907</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-31 22:57:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; The referencing count files(ewk_ref_counted.h | cpp) are placed to Source/WTF/wtf. Why these files should be place to WebKit2&apos;s UIProcess side ? If we can move these files to there, I think we can use this functionality in all EFL places.
&gt; 
&gt; AFAIK, they need to be in the API folder because they are part of the public API (e.g. ewe_ref_counted_ref() is in ewk_ref_counted.h).

I think we can try this. Anyway, this might to be new item on other bug later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756028</commentid>
    <comment_count>6</comment_count>
      <attachid>171634</attachid>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-11-01 02:55:19 -0700</bug_when>
    <thetext>Comment on attachment 171634
patch

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

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:89
&gt;  static inline void freeEinaList(Eina_List* list)
&gt;  {
&gt;      void* data = 0;
&gt;      EINA_LIST_FREE(list, data)
&gt; -        ewk_back_forward_list_item_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; +        ewk_ref_counted_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt;  }
&gt;  
&gt;  TEST_F(EWK2UnitTestBase, ewk_back_forward_list_current_item_get)

Would be nice if we could have more unit tests for these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756137</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 05:57:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 171634 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171634&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:89
&gt; &gt;  static inline void freeEinaList(Eina_List* list)
&gt; &gt;  {
&gt; &gt;      void* data = 0;
&gt; &gt;      EINA_LIST_FREE(list, data)
&gt; &gt; -        ewk_back_forward_list_item_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt; +        ewk_ref_counted_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt;  }
&gt; &gt;  
&gt; &gt;  TEST_F(EWK2UnitTestBase, ewk_back_forward_list_current_item_get)
&gt; 
&gt; Would be nice if we could have more unit tests for these functions.

we will have these functions checked for every ref counted object we have</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756202</commentid>
    <comment_count>8</comment_count>
      <attachid>171840</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 07:14:29 -0700</bug_when>
    <thetext>Created attachment 171840
patch v2

Used macro as proposed by Chris, used Ewk_Object as proposed by Kenneth. Thanks for feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756212</commentid>
    <comment_count>9</comment_count>
      <attachid>171840</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-01 07:18:14 -0700</bug_when>
    <thetext>Comment on attachment 171840
patch v2

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_object_private.h:62
&gt; +template &lt;class T&gt;
&gt; +inline const T* ewkObjectCast(const Ewk_Object* object)
&gt; +{
&gt; +    return ewkObjectCastCheck&lt;T&gt;(object) ? static_cast&lt;const T*&gt;(object) : 0;
&gt; +}

as all casts are of the style some_cast maybe we should do the same?

ewk_object_cast() it might even make sense to expose to C++ developers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756219</commentid>
    <comment_count>10</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 07:22:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 171840 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171840&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_object_private.h:62
&gt; &gt; +template &lt;class T&gt;
&gt; &gt; +inline const T* ewkObjectCast(const Ewk_Object* object)
&gt; &gt; +{
&gt; &gt; +    return ewkObjectCastCheck&lt;T&gt;(object) ? static_cast&lt;const T*&gt;(object) : 0;
&gt; &gt; +}
&gt; 
&gt; as all casts are of the style some_cast maybe we should do the same?
&gt; 
&gt; ewk_object_cast() it might even make sense to expose to C++ developers

no problem :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756240</commentid>
    <comment_count>11</comment_count>
      <attachid>171852</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 07:42:47 -0700</bug_when>
    <thetext>Created attachment 171852
patch v3

Took Kenneth feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756274</commentid>
    <comment_count>12</comment_count>
      <attachid>171852</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 08:29:40 -0700</bug_when>
    <thetext>Comment on attachment 171852
patch v3

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

&gt; Source/WebKit2/ChangeLog:28
&gt; +        * UIProcess/API/efl/ewk_back_forward_list_private.h:

ewk_object seems to be missing from the changelog?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp:62
&gt; +    EWK_OBJ_CONST_IMPL_GET_OR_RETURN_VAL(EwkBackForwardListItem, item, impl, 0);

Do we really need to distinguish CONST and non-CONST macros? We end up with 4 macros this way.

Also do we really need to use Yoda style for internal macros?

How about EWK_OBJ_GET_IMPL_OR_RETURN_VAL()

&gt; Source/WebKit2/UIProcess/API/efl/ewk_object_private.h:85
&gt; +#define EWK_OBJ_CONST_IMPL_GET_OR_RETURN_VAL(ImplClass, object, impl, ...) \

Doesn&apos;t VA_ARGS work with 0 arguments? Then we would need only 2 macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756278</commentid>
    <comment_count>13</comment_count>
      <attachid>171852</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 08:32:52 -0700</bug_when>
    <thetext>Comment on attachment 171852
patch v3

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_object_private.h:85
&gt;&gt; +#define EWK_OBJ_CONST_IMPL_GET_OR_RETURN_VAL(ImplClass, object, impl, ...) \
&gt; 
&gt; Doesn&apos;t VA_ARGS work with 0 arguments? Then we would need only 2 macros.

Actually, in Ewk_view, we don&apos;t differentiate and we need only one macro (leveraging VA_ARGS):
EWK_VIEW_IMPL_GET_OR_RETURN()

No need for EWK_VIEW_IMPL_GET_OR_RETURN_VAL().

Sadly, this macro uses Yoda style too :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756302</commentid>
    <comment_count>14</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 08:45:38 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 171852 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171852&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_object_private.h:85
&gt; &gt;&gt; +#define EWK_OBJ_CONST_IMPL_GET_OR_RETURN_VAL(ImplClass, object, impl, ...) \
&gt; &gt; 
&gt; &gt; Doesn&apos;t VA_ARGS work with 0 arguments? Then we would need only 2 macros.
&gt; 
&gt; Actually, in Ewk_view, we don&apos;t differentiate and we need only one macro (leveraging VA_ARGS):
&gt; EWK_VIEW_IMPL_GET_OR_RETURN()
&gt; 
&gt; No need for EWK_VIEW_IMPL_GET_OR_RETURN_VAL().
&gt; 
&gt; Sadly, this macro uses Yoda style too :(

It&apos;s consistent with yoda style from other macros there, but they all can be changed off course</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756312</commentid>
    <comment_count>15</comment_count>
      <attachid>171864</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-01 08:59:13 -0700</bug_when>
    <thetext>Created attachment 171864
patch v4

Changed ewk_object_cast semantics, removed all extra macros. Thank you Kenneth and Chris!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756316</commentid>
    <comment_count>16</comment_count>
      <attachid>171864</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-01 09:03:42 -0700</bug_when>
    <thetext>Comment on attachment 171864
patch v4

Looks better now. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756333</commentid>
    <comment_count>17</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-11-01 09:19:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 171634 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171634&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:89
&gt; &gt; &gt;  static inline void freeEinaList(Eina_List* list)
&gt; &gt; &gt;  {
&gt; &gt; &gt;      void* data = 0;
&gt; &gt; &gt;      EINA_LIST_FREE(list, data)
&gt; &gt; &gt; -        ewk_back_forward_list_item_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt; &gt; +        ewk_ref_counted_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt; &gt;  }
&gt; &gt; &gt;  
&gt; &gt; &gt;  TEST_F(EWK2UnitTestBase, ewk_back_forward_list_current_item_get)
&gt; &gt; 
&gt; &gt; Would be nice if we could have more unit tests for these functions.
&gt; 
&gt; we will have these functions checked for every ref counted object we have

I would write specific unit tests just for that. WTF has its own unit tests, but some may argue that is tested all around WebKit code.

The point of having separated unit tests is: it will make it easier to isolate a problem, check for leaks, measure performance, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756972</commentid>
    <comment_count>18</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-02 01:31:56 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; (From update of attachment 171634 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171634&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:89
&gt; &gt; &gt; &gt;  static inline void freeEinaList(Eina_List* list)
&gt; &gt; &gt; &gt;  {
&gt; &gt; &gt; &gt;      void* data = 0;
&gt; &gt; &gt; &gt;      EINA_LIST_FREE(list, data)
&gt; &gt; &gt; &gt; -        ewk_back_forward_list_item_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt; &gt; &gt; +        ewk_ref_counted_unref(static_cast&lt;Ewk_Back_Forward_List_Item*&gt;(data));
&gt; &gt; &gt; &gt;  }
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt;  TEST_F(EWK2UnitTestBase, ewk_back_forward_list_current_item_get)
&gt; &gt; &gt; 
&gt; &gt; &gt; Would be nice if we could have more unit tests for these functions.
&gt; &gt; 
&gt; &gt; we will have these functions checked for every ref counted object we have
&gt; 
&gt; I would write specific unit tests just for that. WTF has its own unit tests, but some may argue that is tested all around WebKit code.
&gt; 
&gt; The point of having separated unit tests is: it will make it easier to isolate a problem, check for leaks, measure performance, etc.

Ewk_Object is abstract class and it cannot live apart from an inherited object , so I guess those inherited objects should be tested including ref/unref functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756983</commentid>
    <comment_count>19</comment_count>
      <attachid>171864</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-02 01:58:20 -0700</bug_when>
    <thetext>Comment on attachment 171864
patch v4

I think we can do the tests separate from this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757005</commentid>
    <comment_count>20</comment_count>
      <attachid>171864</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 02:24:51 -0700</bug_when>
    <thetext>Comment on attachment 171864
patch v4

Clearing flags on attachment: 171864

Committed r133278: &lt;http://trac.webkit.org/changeset/133278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757006</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 02:24:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757044</commentid>
    <comment_count>22</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-02 03:15:55 -0700</bug_when>
    <thetext>Bug for unit tests:
https://bugs.webkit.org/show_bug.cgi?id=101037</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171634</attachid>
            <date>2012-10-31 06:24:53 -0700</date>
            <delta_ts>2012-11-01 07:14:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug100751</filename>
            <type>text/plain</type>
            <size>19785</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGNmYTYzNDJlODVmYWVhYTcyN2EyM2U0Mzg2YWRiYmJjZjg3ZGY4ODIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIE9jdCAzMSAxNTowMTo1MSAyMDEyICswMjAwCgogICAgYnVnMTAwNzUxCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGY2MzlmZmIuLmMyNmFiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0x
MC0zMSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIENvbW1vbiByZWYgYW5kIHVucmVmIGZ1bmN0aW9ucyBmb3Ig
RUZMIFdLMiBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBjb21tb24gRXdrX1JlZl9Db3VudGVkIEFQSSBhbHNvIGFkZGVkIHNldmVy
YWwgYXV4IGZ1bmN0aW9ucyBmb3Igc2FmZSBjb252ZXJzaW9uCisgICAgICAgIGZyb20gRXdrX1Jl
Zl9Db3VudGVkIHRvIGl0cyBjaGlsZHJlbi4gVXNlZCBuZXcgYXBwcm9hY2ggb24gZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW0KKyAgICAgICAgYXMgZXhhbXBsZS4KKworICAgICAgICAqIFBsYXRm
b3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcDoKKyAg
ICAgICAgKEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Z2V0RnJvbUNhY2hlT3JDcmVhdGUpOgorICAg
ICAgICAoRXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGVFaW5hTGlzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwOgorICAgICAg
ICAoRXdrQmFja0ZvcndhcmRMaXN0SXRlbTo6RXdrQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAg
ICAgIChFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjp1cmwpOgorICAgICAgICAoRXdrQmFja0Zvcndh
cmRMaXN0SXRlbTo6dGl0bGUpOgorICAgICAgICAoRXdrQmFja0ZvcndhcmRMaXN0SXRlbTo6b3Jp
Z2luYWxVUkwpOgorICAgICAgICAoZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdXJsX2dldCk6
CisgICAgICAgIChld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV90aXRsZV9nZXQpOgorICAgICAg
ICAoZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fb3JpZ2luYWxfdXJsX2dldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9wcml2YXRl
Lmg6CisgICAgICAgIChFd2tCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKEV3a0JhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcmVmX2NvdW50ZWQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9wcml2YXRlLmguCisgICAgICAg
IChld2tfcmVmX2NvdW50ZWRfcmVmKToKKyAgICAgICAgKGV3a19yZWZfY291bnRlZF91bnJlZik6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3JlZl9jb3VudGVkLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtX3ByaXZhdGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVmX2Nv
dW50ZWRfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a19SZWZfQ291bnRlZCk6CisgICAg
ICAgIChFd2tfUmVmX0NvdW50ZWQ6On5Fd2tfUmVmX0NvdW50ZWQpOgorICAgICAgICAoZXdrSXNP
ZlR5cGUpOgorICAgICAgICAoZXdrQ2FzdENoZWNrKToKKyAgICAgICAgKGV3a0Nhc3RUb1R5cGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9iYWNrX2Zvcndh
cmRfbGlzdC5jcHA6CisgICAgICAgIChmcmVlRWluYUxpc3QpOgorCiAyMDEyLTEwLTMxICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZ1bGwtcGFnZSBQ
REZQbHVnaW4gc2hvdWxkIHN1cHBvcnQgaW5saW5lIGZvcm0gZWRpdGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQppbmRleCA2Y2VkZWQ3Li44MTY2OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtNTgsNiArNTgsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVm
X2NvdW50ZWQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdGV4dF9jaGVja2VyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRVdlYktpdDIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0VXZWJLaXQyLmgKaW5kZXggN2ZkYTc1NC4uY2UzODIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAi
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21l
bnUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCisjaW5jbHVkZSAiZXdrX3Jl
Zl9jb3VudGVkLmgiCiAjaW5jbHVkZSAiZXdrX3Jlc291cmNlLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiZXdrX3RleHRfY2hlY2tlci5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5j
cHAKaW5kZXggMTJkYmI4Zi4uMGEzMDA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldLQmFja0ZvcndhcmRM
aXN0LmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfcmVmX2NvdW50ZWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05MCw3ICs5MSw3IEBAIEV3a19CYWNrX0Zvcndh
cmRfTGlzdF9JdGVtKiBFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmdldEZyb21DYWNoZU9yQ3JlYXRl
KFdLQmFja0ZvCiAKICAgICBSZWZQdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0+IGl0ZW0g
PSBtX3dyYXBwZXJDYWNoZS5nZXQod2tJdGVtKTsKICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAg
aXRlbSA9IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjpjcmVhdGUod2tJdGVtKTsKKyAgICAg
ICAgaXRlbSA9IEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZSh3a0l0ZW0pOwogICAgICAg
ICBtX3dyYXBwZXJDYWNoZS5zZXQod2tJdGVtLCBpdGVtKTsKICAgICB9CiAKQEAgLTEwOCw3ICsx
MDksNyBAQCBFaW5hX0xpc3QqIEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlRWluYUxpc3Qo
V0tBcnJheVJlZiB3a0xpc3QpIGNvbnN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CiAgICAgICAgIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiB3a0l0ZW0gPSBzdGF0
aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3
a0xpc3QsIGkpKTsKICAgICAgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0gPSBn
ZXRGcm9tQ2FjaGVPckNyZWF0ZSh3a0l0ZW0pOwotICAgICAgICByZXN1bHQgPSBlaW5hX2xpc3Rf
YXBwZW5kKHJlc3VsdCwgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcmVmKGl0ZW0pKTsKKyAg
ICAgICAgcmVzdWx0ID0gZWluYV9saXN0X2FwcGVuZChyZXN1bHQsIGV3a19yZWZfY291bnRlZF9y
ZWYoaXRlbSkpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xp
c3RfaXRlbS5jcHAKaW5kZXggNWVjMjM2MC4uN2MzOWZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtLmNwcApAQCAtMzIsNjMgKzMyLDUxIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKLUV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjpFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRl
bShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKK0V3a0JhY2tGb3J3YXJkTGlzdEl0
ZW06OkV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1S
ZWYpCiAgICAgOiBtX3drSXRlbShpdGVtUmVmKQogeyB9CiAKLWNvbnN0IGNoYXIqIEV3a19CYWNr
X0ZvcndhcmRfTGlzdF9JdGVtOjp1cmwoKSBjb25zdAorY29uc3QgY2hhciogRXdrQmFja0Zvcndh
cmRMaXN0SXRlbTo6dXJsKCkgY29uc3QKIHsKICAgICBtX3VybCA9IFdLRWluYVNoYXJlZFN0cmlu
ZyhBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VVJMKG1fd2tJdGVtLmdldCgpKSk7
CiAKICAgICByZXR1cm4gbV91cmw7CiB9CiAKLWNvbnN0IGNoYXIqIEV3a19CYWNrX0ZvcndhcmRf
TGlzdF9JdGVtOjp0aXRsZSgpIGNvbnN0Citjb25zdCBjaGFyKiBFd2tCYWNrRm9yd2FyZExpc3RJ
dGVtOjp0aXRsZSgpIGNvbnN0CiB7CiAgICAgbV90aXRsZSA9IFdLRWluYVNoYXJlZFN0cmluZyhB
ZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5VGl0bGUobV93a0l0ZW0uZ2V0KCkpKTsK
IAogICAgIHJldHVybiBtX3RpdGxlOwogfQogCi1jb25zdCBjaGFyKiBFd2tfQmFja19Gb3J3YXJk
X0xpc3RfSXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAorY29uc3QgY2hhciogRXdrQmFja0Zvcndh
cmRMaXN0SXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAogewogICAgIG1fb3JpZ2luYWxVUkwgPSBX
S0VpbmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weU9yaWdp
bmFsVVJMKG1fd2tJdGVtLmdldCgpKSk7CiAKICAgICByZXR1cm4gbV9vcmlnaW5hbFVSTDsKIH0K
IAotRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVt
X3JlZihFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkKLXsKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7Ci0gICAgaXRlbS0+cmVmKCk7Ci0KLSAgICBy
ZXR1cm4gaXRlbTsKLX0KLQotdm9pZCBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV91bnJlZihF
d2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihpdGVtKTsKLQotICAgIGl0ZW0tPmRlcmVmKCk7Ci19Ci0KIGNvbnN0IGNoYXIq
IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VybF9nZXQoY29uc3QgRXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KGl0ZW0sIDApOworICAgIGlmIChjb25zdCBFd2tCYWNrRm9yd2FyZExpc3RJdGVtKiBpbXBsID0g
ZXdrQ2FzdFRvVHlwZTxFd2tCYWNrRm9yd2FyZExpc3RJdGVtPihpdGVtKSkKKyAgICAgICAgcmV0
dXJuIGltcGwtPnVybCgpOwogCi0gICAgcmV0dXJuIGl0ZW0tPnVybCgpOworICAgIHJldHVybiAw
OwogfQogCiBjb25zdCBjaGFyKiBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV90aXRsZV9nZXQo
Y29uc3QgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworICAgIGlmIChjb25zdCBFd2tCYWNrRm9y
d2FyZExpc3RJdGVtKiBpbXBsID0gZXdrQ2FzdFRvVHlwZTxFd2tCYWNrRm9yd2FyZExpc3RJdGVt
PihpdGVtKSkKKyAgICAgICAgcmV0dXJuIGltcGwtPnRpdGxlKCk7CiAKLSAgICByZXR1cm4gaXRl
bS0+dGl0bGUoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogY29uc3QgY2hhciogZXdrX2JhY2tfZm9y
d2FyZF9saXN0X2l0ZW1fb3JpZ2luYWxfdXJsX2dldChjb25zdCBFd2tfQmFja19Gb3J3YXJkX0xp
c3RfSXRlbSogaXRlbSkKIHsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRl
bSwgMCk7CisgICAgaWYgKGNvbnN0IEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0qIGltcGwgPSBld2tD
YXN0VG9UeXBlPEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0+KGl0ZW0pKQorICAgICAgICByZXR1cm4g
aW1wbC0+b3JpZ2luYWxVUkwoKTsKIAotICAgIHJldHVybiBpdGVtLT5vcmlnaW5hbFVSTCgpOwor
ICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgKaW5kZXggOGQwNzI0ZC4u
MWVlZGQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oCkBAIC0zNywyNiArMzcsMTIgQEAK
IGV4dGVybiAiQyIgewogI2VuZGlmCiAKLS8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tf
QmFja19Gb3J3YXJkX0xpc3RfSXRlbSAqLwotdHlwZWRlZiBzdHJ1Y3QgRXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0X0l0ZW0gRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW07Ci0KIC8qKgotICogSW5jcmVh
c2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KLSAqCi0gKiBAcGFy
YW0gaXRlbSB0aGUgYmFjay1mb3J3YXJkIGxpc3QgaXRlbSBpbnN0YW5jZSB0byBpbmNyZWFzZSB0
aGUgcmVmZXJlbmNlIGNvdW50Ci0gKgotICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG9iamVj
dCBvbiBzdWNjZXNzLCBAYyBOVUxMIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFd2tfQmFja19Gb3J3
YXJkX0xpc3RfSXRlbSAqZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcmVmKEV3a19CYWNrX0Zv
cndhcmRfTGlzdF9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5j
ZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgotICoKLSAq
IFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDAsIHRoZSBpdGVtIGlzIGZyZWVkLgor
ICogRGVjbGFyZSBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSBhcyBFd2tfUmVmX0NvdW50ZWQg
b2JqZWN0LgogICoKLSAqIEBwYXJhbSBpdGVtIHRoZSBiYWNrLWZvcndhcmQgbGlzdCBpdGVtIGlu
c3RhbmNlIHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqIEBzZWUgRXdrX1JlZl9D
b3VudGVkCiAgKi8KLUVBUEkgdm9pZCBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV91bnJlZihF
d2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSAqaXRlbSk7Cit0eXBlZGVmIHN0cnVjdCBFd2tfUmVm
X0NvdW50ZWQgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW07CiAKIC8qKgogICogUmV0dXJucyBV
Ukwgb2YgdGhlIGl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9wcml2YXRlLmgK
aW5kZXggNTA3MThiYy4uMjcyNThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVt
X3ByaXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBld2tfYmFja19mb3J3YXJkX2xp
c3RfaXRlbV9wcml2YXRlX2gKIAogI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgorI2lu
Y2x1ZGUgImV3a19yZWZfY291bnRlZF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0zNSwxMSArMzYsMTIgQEAKICAqIFxzdHJ1Y3QgIEV3a19CYWNrX0ZvcndhcmRf
TGlzdAogICogQGJyaWVmICAgQ29udGFpbnMgdGhlIEJhY2sgRm9yd2FyZCBMaXN0IGRhdGEuCiAg
Ki8KLWNsYXNzIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8
RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0+IHsKK2NsYXNzIEV3a0JhY2tGb3J3YXJkTGlzdEl0
ZW0gOiBwdWJsaWMgRXdrX1JlZl9Db3VudGVkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbT4gY3JlYXRlKFdLQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiBpdGVtUmVmKQorICAgIEVXS19SRUZfQ09VTlRFRF9ERUNMQVJFKEV3a19CYWNrX0Zv
cndhcmRfTGlzdF9JdGVtKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0JhY2tGb3J3YXJkTGlz
dEl0ZW0+IGNyZWF0ZShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0oaXRl
bVJlZikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0JhY2tGb3J3YXJkTGlzdEl0
ZW0oaXRlbVJlZikpOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIHVybCgpIGNvbnN0OwpAQCAt
NDcsNyArNDksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxVUkwoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbShX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZik7CisgICAgZXhwbGljaXQgRXdrQmFja0Zv
cndhcmRMaXN0SXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJlZik7CiAKICAgICBX
S1JldGFpblB0cjxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+IG1fd2tJdGVtOwogICAgIG11dGFi
bGUgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRl
LmgKaW5kZXggN2FhZDQ2Ny4uZmQwZGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0
ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2
YXRlX2gKIAogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCisjaW5jbHVkZSAiZXdrX2JhY2tfZm9y
d2FyZF9saXN0X2l0ZW0uaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9w
cml2YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3JlZl9jb3VudGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19y
ZWZfY291bnRlZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgzYjE4
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19yZWZfY291bnRlZC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgaXRlbSBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGl0ZW0gb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19yZWZfY291bnRlZC5oIgorCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiZXdrX3JlZl9jb3VudGVkX3ByaXZhdGUuaCIK
KworRXdrX1JlZl9Db3VudGVkKiBld2tfcmVmX2NvdW50ZWRfcmVmKEV3a19SZWZfQ291bnRlZCog
b2JqZWN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvYmplY3QsIDAp
OworICAgIG9iamVjdC0+cmVmKCk7CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIGV3
a19yZWZfY291bnRlZF91bnJlZihFd2tfUmVmX0NvdW50ZWQqIG9iamVjdCkKK3sKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihvYmplY3QpOworCisgICAgb2JqZWN0LT5kZXJlZigpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3JlZl9j
b3VudGVkLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVmX2NvdW50
ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmNTNmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3JlZl9jb3Vu
dGVkLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAZmls
ZSAgICBld2tfcmVmX2NvdW50ZWQuaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgUmVm
IENvdW50ZWQgQVBJLgorICovCisKKyNpZm5kZWYgZXdrX3JlZl9jb3VudGVkX2gKKyNkZWZpbmUg
ZXdrX3JlZl9jb3VudGVkX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
RXdrX1JlZl9Db3VudGVkICovCit0eXBlZGVmIHN0cnVjdCBFd2tfUmVmX0NvdW50ZWQgRXdrX1Jl
Zl9Db3VudGVkOworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRo
ZSBnaXZlbiBFd2tfUmVmX0NvdW50ZWQgb2JqZWN0LgorICoKKyAqIEBwYXJhbSBvYmplY3QgdGhl
IEV3a19SZWZfQ291bnRlZCBvYmplY3QgaW5zdGFuY2UgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5j
ZSBjb3VudAorICoKKyAqIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBvYmplY3Qgb24gc3VjY2Vz
cywgQGMgTlVMTCBvdGhlcndpc2UuCisgKi8KK0VBUEkgRXdrX1JlZl9Db3VudGVkICpld2tfcmVm
X2NvdW50ZWRfcmVmKEV3a19SZWZfQ291bnRlZCAqb2JqZWN0KTsKKworLyoqCisgKiBEZWNyZWFz
ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVl
aW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDAsIHRoZSBp
dGVtIGlzIGZyZWVkLgorICoKKyAqIEBwYXJhbSBvYmplY3QgdGhlIEV3a19SZWZfQ291bnRlZCBv
YmplY3QgaW5zdGFuY2UgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICovCitFQVBJ
IHZvaWQgZXdrX3JlZl9jb3VudGVkX3VucmVmKEV3a19SZWZfQ291bnRlZCAqb2JqZWN0KTsKKwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19yZWZfY291bnRl
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVm
X2NvdW50ZWRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3JlZl9jb3VudGVkX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li4zYmY5YTAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3JlZl9jb3VudGVkX3ByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19yZWZfY291bnRlZF9wcml2YXRlX2gKKyNkZWZpbmUg
ZXdrX3JlZl9jb3VudGVkX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworY2xhc3MgRXdrX1JlZl9Db3VudGVkIDogcHVibGljIFJlZkNvdW50ZWQ8RXdrX1JlZl9Db3Vu
dGVkPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RXdrX1JlZl9Db3VudGVkKCkgeyB9CisgICAg
dmlydHVhbCBjb25zdCBjaGFyKiBpbnN0Q2xhc3NOYW1lKCkgY29uc3QgPSAwOworfTsKKwordGVt
cGxhdGUgPGNsYXNzIFQ+CitpbmxpbmUgYm9vbCBld2tJc09mVHlwZShjb25zdCBFd2tfUmVmX0Nv
dW50ZWQqIHJlZkNvdW50ZWQpCit7CisgICAgcmV0dXJuIChUOjpjbGFzc05hbWUoKSA9PSByZWZD
b3VudGVkLT5pbnN0Q2xhc3NOYW1lKCkpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2lubGlu
ZSBib29sIGV3a0Nhc3RDaGVjayhjb25zdCBFd2tfUmVmX0NvdW50ZWQqIHJlZkNvdW50ZWQpCit7
CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHJlZkNvdW50ZWQsIGZhbHNlKTsK
KworICAgIGlmICghZXdrSXNPZlR5cGU8VD4ocmVmQ291bnRlZCkpIHsKKyAgICAgICAgRUlOQV9M
T0dfQ1JJVCgiYXR0ZW1wdCB0byBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICVzIHRvIHR5cGUgJXMi
LAorICAgICAgICAgICAgcmVmQ291bnRlZC0+aW5zdENsYXNzTmFtZSgpLCBUOjpjbGFzc05hbWUo
KSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5s
aW5lIGNvbnN0IFQqIGV3a0Nhc3RUb1R5cGUoY29uc3QgRXdrX1JlZl9Db3VudGVkKiByZWZDb3Vu
dGVkKQoreworICAgIHJldHVybiBld2tDYXN0Q2hlY2s8VD4ocmVmQ291bnRlZCkgPyBzdGF0aWNf
Y2FzdDxjb25zdCBUKj4ocmVmQ291bnRlZCkgOiAwOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4K
K2lubGluZSBUKiBld2tDYXN0VG9UeXBlKEV3a19SZWZfQ291bnRlZCogcmVmQ291bnRlZCkKK3sK
KyAgICByZXR1cm4gZXdrQ2FzdENoZWNrPFQ+KHJlZkNvdW50ZWQpID8gc3RhdGljX2Nhc3Q8VCo+
KHJlZkNvdW50ZWQpIDogMDsKK30KKworI2RlZmluZSBFV0tfUkVGX0NPVU5URURfREVDTEFSRShf
Y2xhc3NOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0
aWMgY29uc3QgY2hhciogY2xhc3NOYW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lID0gI19jbGFzc05hbWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIG5hbWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAordmlydHVhbCBjb25zdCBjaGFyKiBpbnN0Q2xhc3NO
YW1lKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gY2xhc3NOYW1lKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
fQorCisjZW5kaWYgLy8gZXdrX3JlZl9jb3VudGVkX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2JhY2tfZm9yd2Fy
ZF9saXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl9iYWNrX2ZvcndhcmRfbGlzdC5jcHAKaW5kZXggODBkNzc1NS4uZWYxZjkxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Jh
Y2tfZm9yd2FyZF9saXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy90ZXN0X2V3azJfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlRWluYUxpc3QoRWluYV9MaXN0KiBsaXN0KQogewogICAg
IHZvaWQqIGRhdGEgPSAwOwogICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGRhdGEpCi0gICAgICAg
IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VucmVmKHN0YXRpY19jYXN0PEV3a19CYWNrX0Zv
cndhcmRfTGlzdF9JdGVtKj4oZGF0YSkpOworICAgICAgICBld2tfcmVmX2NvdW50ZWRfdW5yZWYo
c3RhdGljX2Nhc3Q8RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qPihkYXRhKSk7CiB9CiAKIFRF
U1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfYmFja19mb3J3YXJkX2xpc3RfY3VycmVudF9pdGVt
X2dldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171840</attachid>
            <date>2012-11-01 07:14:29 -0700</date>
            <delta_ts>2012-11-01 07:42:47 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug100751_v2</filename>
            <type>text/plain</type>
            <size>20414</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGE1OWEwZWY5NjgwZWZlY2FhZGE0N2E2MGE3YTJkYmU0ZTI5Nzc3Y2UKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IE5vdiAxIDE2OjAyOjAzIDIwMTIgKzAyMDAKCiAgICBidWcxMDA3NTEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMDIwYTVjYi4uYmU4NzVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTEx
LTAxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgog
CisgICAgICAgIFtFRkxdW1dLMl0gQ29tbW9uIHJlZiBhbmQgdW5yZWYgZnVuY3Rpb25zIGZvciBF
RkwgV0syIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGNvbW1vbiBFd2tfT2JqZWN0IGNsYXNzIHdpdGggcmVmL3VucmVmIEFQSSBh
bHNvIGFkZGVkIHNldmVyYWwgYXV4IGZ1bmN0aW9ucyBmb3Igc2FmZQorICAgICAgICBFd2tfT2Jq
ZWN0IGNvbnZlcnNpb24uIFVzZWQgbmV3IGFwcHJvYWNoIG9uIGV3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtIGFzIGV4YW1wbGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHA6CisgICAgICAgIChFd2tfQmFja19Gb3J3
YXJkX0xpc3Q6OmdldEZyb21DYWNoZU9yQ3JlYXRlKToKKyAgICAgICAgKEV3a19CYWNrX0Zvcndh
cmRfTGlzdDo6Y3JlYXRlRWluYUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcDoKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlz
dEl0ZW06OkV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAoRXdrQmFja0ZvcndhcmRM
aXN0SXRlbTo6dXJsKToKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OnRpdGxlKToK
KyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06Om9yaWdpbmFsVVJMKToKKyAgICAgICAg
KGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VybF9nZXQpOgorICAgICAgICAoZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX29yaWdpbmFsX3VybF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oOgorICAgICAgICAoRXdrQmFj
a0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Jh
Y2tfZm9yd2FyZF9saXN0LmNwcDoKKyAgICAgICAgKGZyZWVFaW5hTGlzdCk6CisKKzIwMTItMTEt
MDEgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisK
ICAgICAgICAgW0FDXVtFRkxdW1dLMl0gUmVuYW1lIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6Om1fcGFnZVZpZXdwb3J0Q29udHJvbGxlciB0byBtX2NvbnRyb2xsZXIKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkzMwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IDc3YjU0NDMuLmE1ZTJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC01OSw2ICs1OSw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmln
YXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmpl
Y3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfcmVzb3VyY2UuY3BwCkBAIC0yNTcsNiArMjU4LDcgQEAgU0VUIChFV2ViS2l0Ml9I
RUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfb2JqZWN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Jlc291cmNlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaAppbmRleCBmOTdlYmQ4
Li5mNmY5ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
V2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQy
LmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJld2tfbWFpbi5oIgogI2luY2x1ZGUgImV3
a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0LmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21l
bnUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3Jl
c291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAppbmRleCAxMmRiYjhmLi5kZDNhZTYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJk
X2xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXS0FycmF5Lmgi
CiAjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3
YXJkX2xpc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19vYmplY3QuaCIKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC05MCw3ICs5
MSw3IEBAIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBFd2tfQmFja19Gb3J3YXJkX0xpc3Q6
OmdldEZyb21DYWNoZU9yQ3JlYXRlKFdLQmFja0ZvCiAKICAgICBSZWZQdHI8RXdrX0JhY2tfRm9y
d2FyZF9MaXN0X0l0ZW0+IGl0ZW0gPSBtX3dyYXBwZXJDYWNoZS5nZXQod2tJdGVtKTsKICAgICBp
ZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjpj
cmVhdGUod2tJdGVtKTsKKyAgICAgICAgaXRlbSA9IEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OmNy
ZWF0ZSh3a0l0ZW0pOwogICAgICAgICBtX3dyYXBwZXJDYWNoZS5zZXQod2tJdGVtLCBpdGVtKTsK
ICAgICB9CiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFaW5hX0xpc3QqIEV3a19CYWNrX0ZvcndhcmRf
TGlzdDo6Y3JlYXRlRWluYUxpc3QoV0tBcnJheVJlZiB3a0xpc3QpIGNvbnN0CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFdLQmFja0ZvcndhcmRMaXN0
SXRlbVJlZiB3a0l0ZW0gPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWY+KFdL
QXJyYXlHZXRJdGVtQXRJbmRleCh3a0xpc3QsIGkpKTsKICAgICAgICAgRXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0X0l0ZW0qIGl0ZW0gPSBnZXRGcm9tQ2FjaGVPckNyZWF0ZSh3a0l0ZW0pOwotICAgICAg
ICByZXN1bHQgPSBlaW5hX2xpc3RfYXBwZW5kKHJlc3VsdCwgZXdrX2JhY2tfZm9yd2FyZF9saXN0
X2l0ZW1fcmVmKGl0ZW0pKTsKKyAgICAgICAgcmVzdWx0ID0gZWluYV9saXN0X2FwcGVuZChyZXN1
bHQsIGV3a19vYmplY3RfcmVmKGl0ZW0pKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9y
d2FyZF9saXN0X2l0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCmluZGV4IDVlYzIzNjAuLjU2OGMwNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKQEAgLTMyLDYzICszMiw0OCBAQAogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6RXdrX0JhY2tf
Rm9yd2FyZF9MaXN0X0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCitFd2tC
YWNrRm9yd2FyZExpc3RJdGVtOjpFd2tCYWNrRm9yd2FyZExpc3RJdGVtKFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiBpdGVtUmVmKQogICAgIDogbV93a0l0ZW0oaXRlbVJlZikKIHsgfQogCi1jb25z
dCBjaGFyKiBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6dXJsKCkgY29uc3QKK2NvbnN0IGNo
YXIqIEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OnVybCgpIGNvbnN0CiB7CiAgICAgbV91cmwgPSBX
S0VpbmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVVSTCht
X3drSXRlbS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIG1fdXJsOwogfQogCi1jb25zdCBjaGFyKiBF
d2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6dGl0bGUoKSBjb25zdAorY29uc3QgY2hhciogRXdr
QmFja0ZvcndhcmRMaXN0SXRlbTo6dGl0bGUoKSBjb25zdAogewogICAgIG1fdGl0bGUgPSBXS0Vp
bmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExpc3RJdGVtQ29weVRpdGxlKG1f
d2tJdGVtLmdldCgpKSk7CiAKICAgICByZXR1cm4gbV90aXRsZTsKIH0KIAotY29uc3QgY2hhciog
RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW06Om9yaWdpbmFsVVJMKCkgY29uc3QKK2NvbnN0IGNo
YXIqIEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKICAgICBt
X29yaWdpbmFsVVJMID0gV0tFaW5hU2hhcmVkU3RyaW5nKEFkb3B0V0ssIFdLQmFja0ZvcndhcmRM
aXN0SXRlbUNvcHlPcmlnaW5hbFVSTChtX3drSXRlbS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIG1f
b3JpZ2luYWxVUkw7CiB9CiAKLUV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBld2tfYmFja19m
b3J3YXJkX2xpc3RfaXRlbV9yZWYoRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCi17
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOwotICAgIGl0ZW0t
PnJlZigpOwotCi0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLXZvaWQgZXdrX2JhY2tfZm9yd2FyZF9s
aXN0X2l0ZW1fdW5yZWYoRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCi17Ci0gICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7Ci0KLSAgICBpdGVtLT5kZXJlZigpOwot
fQotCiBjb25zdCBjaGFyKiBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV91cmxfZ2V0KGNvbnN0
IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBpdGVtKQogewotICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKyAgICBFV0tfT0JKX0NPTlNUX0lNUExfR0VUX09S
X1JFVFVSTl9WQUwoRXdrQmFja0ZvcndhcmRMaXN0SXRlbSwgaXRlbSwgaW1wbCwgMCk7CiAKLSAg
ICByZXR1cm4gaXRlbS0+dXJsKCk7CisgICAgcmV0dXJuIGltcGwtPnVybCgpOwogfQogCiBjb25z
dCBjaGFyKiBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV90aXRsZV9nZXQoY29uc3QgRXdrX0Jh
Y2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGl0ZW0sIDApOworICAgIEVXS19PQkpfQ09OU1RfSU1QTF9HRVRfT1JfUkVUVVJO
X1ZBTChFd2tCYWNrRm9yd2FyZExpc3RJdGVtLCBpdGVtLCBpbXBsLCAwKTsKIAotICAgIHJldHVy
biBpdGVtLT50aXRsZSgpOworICAgIHJldHVybiBpbXBsLT50aXRsZSgpOwogfQogCiBjb25zdCBj
aGFyKiBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9vcmlnaW5hbF91cmxfZ2V0KGNvbnN0IEV3
a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBpdGVtKQogewotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKyAgICBFV0tfT0JKX0NPTlNUX0lNUExfR0VUX09SX1JF
VFVSTl9WQUwoRXdrQmFja0ZvcndhcmRMaXN0SXRlbSwgaXRlbSwgaW1wbCwgMCk7CiAKLSAgICBy
ZXR1cm4gaXRlbS0+b3JpZ2luYWxVUkwoKTsKKyAgICByZXR1cm4gaW1wbC0+b3JpZ2luYWxVUkwo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19i
YWNrX2ZvcndhcmRfbGlzdF9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oCmluZGV4IDhkMDcyNGQuLjE4YmM2MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdF9pdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaApAQCAtMzcsMjYgKzM3LDEyIEBACiBleHRlcm4gIkMi
IHsKICNlbmRpZgogCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0JhY2tfRm9yd2Fy
ZF9MaXN0X0l0ZW0gKi8KLXR5cGVkZWYgc3RydWN0IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVt
IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOwotCiAvKioKLSAqIEluY3JlYXNlcyB0aGUgcmVm
ZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCi0gKgotICogQHBhcmFtIGl0ZW0gdGhl
IGJhY2stZm9yd2FyZCBsaXN0IGl0ZW0gaW5zdGFuY2UgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5j
ZSBjb3VudAotICoKLSAqIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBvYmplY3Qgb24gc3VjY2Vz
cywgQGMgTlVMTCBvdGhlcndpc2UuCi0gKi8KLUVBUEkgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0
ZW0gKmV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3JlZihFd2tfQmFja19Gb3J3YXJkX0xpc3Rf
SXRlbSAqaXRlbSk7Ci0KLS8qKgotICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2Yg
dGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KLSAqCi0gKiBXaGVuIHRoZSBy
ZWZlcmVuY2UgY291bnQgcmVhY2hlcyAwLCB0aGUgaXRlbSBpcyBmcmVlZC4KKyAqIERlY2xhcmUg
RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0gYXMgRXdrX09iamVjdC4KICAqCi0gKiBAcGFyYW0g
aXRlbSB0aGUgYmFjay1mb3J3YXJkIGxpc3QgaXRlbSBpbnN0YW5jZSB0byBkZWNyZWFzZSB0aGUg
cmVmZXJlbmNlIGNvdW50CisgKiBAc2VlIEV3a19PYmplY3QKICAqLwotRUFQSSB2b2lkIGV3a19i
YWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VucmVmKEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtICpp
dGVtKTsKK3R5cGVkZWYgc3RydWN0IEV3a19PYmplY3QgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0
ZW07CiAKIC8qKgogICogUmV0dXJucyBVUkwgb2YgdGhlIGl0ZW0uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3
YXJkX2xpc3RfaXRlbV9wcml2YXRlLmgKaW5kZXggNTA3MThiYy4uODc1MjUxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0
X2l0ZW1fcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZhdGUuaApAQCAtMjcsMTkgKzI3LDIxIEBACiAj
ZGVmaW5lIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZhdGVfaAogCiAjaW5jbHVkZSAi
V0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRlLmgiCiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIC8qKgogICogXHN0cnVjdCAgRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0CiAgKiBAYnJpZWYgICBDb250YWlucyB0aGUgQmFjayBGb3J3YXJkIExpc3Qg
ZGF0YS4KICAqLwotY2xhc3MgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0gOiBwdWJsaWMgUmVm
Q291bnRlZDxFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbT4geworY2xhc3MgRXdrQmFja0Zvcndh
cmRMaXN0SXRlbSA6IHB1YmxpYyBFd2tfT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbT4gY3JlYXRlKFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiBpdGVtUmVmKQorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tCYWNrRm9yd2Fy
ZExpc3RJdGVtKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrQmFja0ZvcndhcmRMaXN0SXRl
bT4gY3JlYXRlKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbShpdGVtUmVm
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQmFja0ZvcndhcmRMaXN0SXRlbShp
dGVtUmVmKSk7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogdXJsKCkgY29uc3Q7CkBAIC00Nyw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbFVSTCgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKTsKKyAgICBleHBsaWNpdCBFd2tCYWNrRm9yd2Fy
ZExpc3RJdGVtKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKTsKIAogICAgIFdLUmV0
YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gbV93a0l0ZW07CiAgICAgbXV0YWJsZSBX
S0VpbmFTaGFyZWRTdHJpbmcgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGUuaApp
bmRleCA3YWFkNDY3Li5mZDBkYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZhdGVf
aAogCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfYmFja19mb3J3YXJk
X2xpc3RfaXRlbS5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNWQ2NjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmNwcApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBpdGVtIG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgaXRlbSBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiZXdrX29iamVjdC5oIgorCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRl
LmgiCisKK0V3a19PYmplY3QqIGV3a19vYmplY3RfcmVmKEV3a19PYmplY3QqIG9iamVjdCkKK3sK
KyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob2JqZWN0LCAwKTsKKyAgICBvYmpl
Y3QtPnJlZigpOworCisgICAgcmV0dXJuIG9iamVjdDsKK30KKwordm9pZCBld2tfb2JqZWN0X3Vu
cmVmKEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
TihvYmplY3QpOworCisgICAgb2JqZWN0LT5kZXJlZigpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjAzNDk0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfb2JqZWN0LmgKKyAqIEBicmllZiAgIERlc2Ny
aWJlcyB0aGUgRXdrIFJlZiBDb3VudGVkIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19vYmplY3Rf
aAorI2RlZmluZSBld2tfb2JqZWN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFt
ZSBmb3IgRXdrX09iamVjdCAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrX09iamVjdCBFd2tfT2JqZWN0
OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBF
d2tfT2JqZWN0LgorICoKKyAqIEBwYXJhbSBvYmplY3QgdGhlIEV3a19PYmplY3QgaW5zdGFuY2Ug
dG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICoKKyAqIEByZXR1cm4gYSBwb2ludGVy
IHRvIHRoZSBvYmplY3Qgb24gc3VjY2VzcywgQGMgTlVMTCBvdGhlcndpc2UuCisgKi8KK0VBUEkg
RXdrX09iamVjdCAqZXdrX29iamVjdF9yZWYoRXdrX09iamVjdCAqb2JqZWN0KTsKKworLyoqCisg
KiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gRXdrX09iamVjdCwg
cG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVh
Y2hlcyAwLCB0aGUgaXRlbSBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gb2JqZWN0IHRoZSBFd2tf
T2JqZWN0IGluc3RhbmNlIHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqLworRUFQ
SSB2b2lkIGV3a19vYmplY3RfdW5yZWYoRXdrX09iamVjdCAqb2JqZWN0KTsKKworCisjaWZkZWYg
X19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19vYmplY3RfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdF9wcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3ByaXZhdGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDljZmQyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdF9wcml2YXRl
LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX29i
amVjdF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX29iamVjdF9wcml2YXRlX2gKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisKK2NsYXNzIEV3a19PYmplY3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxFd2tfT2JqZWN0PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RXdrX09iamVjdCgpIHsgfQor
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogaW5zdGFuY2VDbGFzc05hbWUoKSBjb25zdCA9IDA7Cit9
OworCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2lubGluZSBib29sIGV3a09iamVjdElzT2ZUeXBlKGNv
bnN0IEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gKFQ6OmNsYXNzTmFtZSgpID09
IG9iamVjdC0+aW5zdGFuY2VDbGFzc05hbWUoKSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgor
aW5saW5lIGJvb2wgZXdrT2JqZWN0Q2FzdENoZWNrKGNvbnN0IEV3a19PYmplY3QqIG9iamVjdCkK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob2JqZWN0LCBmYWxzZSk7CisK
KyAgICBpZiAoIWV3a09iamVjdElzT2ZUeXBlPFQ+KG9iamVjdCkpIHsKKyAgICAgICAgRUlOQV9M
T0dfQ1JJVCgiYXR0ZW1wdCB0byBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICVzIHRvIHR5cGUgJXMi
LAorICAgICAgICAgICAgb2JqZWN0LT5pbnN0YW5jZUNsYXNzTmFtZSgpLCBUOjpjbGFzc05hbWUo
KSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5s
aW5lIGNvbnN0IFQqIGV3a09iamVjdENhc3QoY29uc3QgRXdrX09iamVjdCogb2JqZWN0KQorewor
ICAgIHJldHVybiBld2tPYmplY3RDYXN0Q2hlY2s8VD4ob2JqZWN0KSA/IHN0YXRpY19jYXN0PGNv
bnN0IFQqPihvYmplY3QpIDogMDsKK30KKwordGVtcGxhdGUgPGNsYXNzIFQ+CitpbmxpbmUgVCog
ZXdrT2JqZWN0Q2FzdChFd2tfT2JqZWN0KiBvYmplY3QpCit7CisgICAgcmV0dXJuIGV3a09iamVj
dENhc3RDaGVjazxUPihvYmplY3QpID8gc3RhdGljX2Nhc3Q8VCo+KG9iamVjdCkgOiAwOworfQor
CisjZGVmaW5lIEVXS19PQkpfSU1QTF9HRVRfT1JfUkVUVVJOKEltcGxDbGFzcywgb2JqZWN0LCBp
bXBsKSAgICAgICAgICAgICAgICBcCisgICAgSW1wbENsYXNzKiBpbXBsID0gZXdrT2JqZWN0Q2Fz
dDxJbXBsQ2xhc3M+KG9iamVjdCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFpbXBs
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybgorCisjZGVmaW5lIEVXS19PQkpfQ09OU1RfSU1QTF9HRVRf
T1JfUkVUVVJOKEltcGxDbGFzcywgb2JqZWN0LCBpbXBsKSAgICAgICAgICBcCisgICAgY29uc3Qg
SW1wbENsYXNzKiBpbXBsID0gZXdrT2JqZWN0Q2FzdDxJbXBsQ2xhc3M+KG9iamVjdCk7ICAgICAg
ICAgICAgICBcCisgICAgaWYgKCFpbXBsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybgorCisjZGVmaW5l
IEVXS19PQkpfSU1QTF9HRVRfT1JfUkVUVVJOX1ZBTChJbXBsQ2xhc3MsIG9iamVjdCwgaW1wbCwg
Li4uKSAgICAgICBcCisgICAgSW1wbENsYXNzKiBpbXBsID0gZXdrT2JqZWN0Q2FzdDxJbXBsQ2xh
c3M+KG9iamVjdCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFpbXBsKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXworCisjZGVmaW5lIEVXS19PQkpfQ09OU1RfSU1QTF9H
RVRfT1JfUkVUVVJOX1ZBTChJbXBsQ2xhc3MsIG9iamVjdCwgaW1wbCwgLi4uKSBcCisgICAgY29u
c3QgSW1wbENsYXNzKiBpbXBsID0gZXdrT2JqZWN0Q2FzdDxJbXBsQ2xhc3M+KG9iamVjdCk7ICAg
ICAgICAgICAgICBcCisgICAgaWYgKCFpbXBsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX1ZBX0FS
R1NfXworCisKKyNkZWZpbmUgRVdLX09CSkVDVF9ERUNMQVJFKF9jbGFzc05hbWUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRpYyBjb25zdCBjaGFyKiBjbGFzc05h
bWUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSA9ICNfY2xhc3NOYW1l
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gbmFtZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
K30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKK3ZpcnR1YWwgY29uc3QgY2hhciogaW5zdGFuY2VDbGFzc05h
bWUoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICByZXR1cm4gY2xhc3NOYW1lKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2VuZGlmIC8vIGV3a19vYmplY3RfcHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfYmFja19mb3J3YXJkX2xpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2JhY2tfZm9yd2FyZF9saXN0LmNwcAppbmRleCA4
MGQ3NzU1Li5lYzRhNGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfYmFja19mb3J3YXJkX2xpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVFaW5hTGlzdChF
aW5hX0xpc3QqIGxpc3QpCiB7CiAgICAgdm9pZCogZGF0YSA9IDA7CiAgICAgRUlOQV9MSVNUX0ZS
RUUobGlzdCwgZGF0YSkKLSAgICAgICAgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdW5yZWYo
c3RhdGljX2Nhc3Q8RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qPihkYXRhKSk7CisgICAgICAg
IGV3a19vYmplY3RfdW5yZWYoc3RhdGljX2Nhc3Q8RXdrX09iamVjdCo+KGRhdGEpKTsKIH0KIAog
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9jdXJyZW50X2l0
ZW1fZ2V0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171852</attachid>
            <date>2012-11-01 07:42:47 -0700</date>
            <delta_ts>2012-11-01 08:59:13 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug100751_v3</filename>
            <type>text/plain</type>
            <size>20329</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDIyYjk4MGFlYzI4NGFkZGUxMzZmOTA4NGNiNDc5OThmOGY3MGNmYjAKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IE5vdiAxIDE2OjAyOjAzIDIwMTIgKzAyMDAKCiAgICBidWcxMDA3NTEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZWM1NTUxZC4uNjAyMmFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEx
LTAxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gQ29tbW9uIHJlZiBhbmQgdW5yZWYgZnVuY3Rpb25zIGZvciBF
RkwgV0syIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGNvbW1vbiBFd2tfT2JqZWN0IGNsYXNzIHdpdGggcmVmL3VucmVmIEFQSSBh
bHNvIGFkZGVkIHNldmVyYWwgYXV4IGZ1bmN0aW9ucyBmb3Igc2FmZQorICAgICAgICBFd2tfT2Jq
ZWN0IGNvbnZlcnNpb24uIFVzZWQgbmV3IGFwcHJvYWNoIG9uIGV3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtIGFzIGV4YW1wbGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHA6CisgICAgICAgIChFd2tfQmFja19Gb3J3
YXJkX0xpc3Q6OmdldEZyb21DYWNoZU9yQ3JlYXRlKToKKyAgICAgICAgKEV3a19CYWNrX0Zvcndh
cmRfTGlzdDo6Y3JlYXRlRWluYUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcDoKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlz
dEl0ZW06OkV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAoRXdrQmFja0ZvcndhcmRM
aXN0SXRlbTo6dXJsKToKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OnRpdGxlKToK
KyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06Om9yaWdpbmFsVVJMKToKKyAgICAgICAg
KGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VybF9nZXQpOgorICAgICAgICAoZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX29yaWdpbmFsX3VybF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oOgorICAgICAgICAoRXdrQmFj
a0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Jh
Y2tfZm9yd2FyZF9saXN0LmNwcDoKKyAgICAgICAgKGZyZWVFaW5hTGlzdCk6CisKIDIwMTItMTEt
MDEgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtFRkxdIENvcnJlY3Qgb3VyIHVzZSBvZiB0aGUgY29vcmRpbmF0ZWQgZ3JhcGhpY3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNzdiNTQ0My4uYTVlMmUwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTU5LDYgKzU5LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9T
T1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX29iamVjdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19yZXNvdXJjZS5jcHAKQEAgLTI1Nyw2ICsyNTgsNyBAQCBTRVQgKEVX
ZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19tYWluLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAgICAgIiR7Q01BS0VfQ1VS
UkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lf
ZGVjaXNpb24uaCIKKyAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19vYmplY3QuaCIKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3Vy
Y2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJL
aXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCmluZGV4
IGY5N2ViZDguLmY2ZjllN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImV3a19tYWluLmgiCiAjaW5j
bHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3Bv
bGljeV9kZWNpc2lvbi5oIgorI2luY2x1ZGUgImV3a19vYmplY3QuaCIKICNpbmNsdWRlICJld2tf
cG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKICNpbmNsdWRl
ICJld2tfcmVzb3VyY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCmluZGV4IDEyZGJiOGYuLmRkM2Fl
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldL
QXJyYXkuaCIKICNpbmNsdWRlICJXS0JhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgImV3a19i
YWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX29iamVjdC5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAg
LTkwLDcgKzkxLDcgQEAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIEV3a19CYWNrX0Zvcndh
cmRfTGlzdDo6Z2V0RnJvbUNhY2hlT3JDcmVhdGUoV0tCYWNrRm8KIAogICAgIFJlZlB0cjxFd2tf
QmFja19Gb3J3YXJkX0xpc3RfSXRlbT4gaXRlbSA9IG1fd3JhcHBlckNhY2hlLmdldCh3a0l0ZW0p
OwogICAgIGlmICghaXRlbSkgewotICAgICAgICBpdGVtID0gRXdrX0JhY2tfRm9yd2FyZF9MaXN0
X0l0ZW06OmNyZWF0ZSh3a0l0ZW0pOworICAgICAgICBpdGVtID0gRXdrQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKHdrSXRlbSk7CiAgICAgICAgIG1fd3JhcHBlckNhY2hlLnNldCh3a0l0ZW0s
IGl0ZW0pOwogICAgIH0KIApAQCAtMTA4LDcgKzEwOSw3IEBAIEVpbmFfTGlzdCogRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0OjpjcmVhdGVFaW5hTGlzdChXS0FycmF5UmVmIHdrTGlzdCkgY29uc3QKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIHdrSXRlbSA9IHN0YXRpY19jYXN0PFdLQmFja0ZvcndhcmRMaXN0SXRl
bVJlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrTGlzdCwgaSkpOwogICAgICAgICBFd2tfQmFj
a19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSA9IGdldEZyb21DYWNoZU9yQ3JlYXRlKHdrSXRlbSk7
Ci0gICAgICAgIHJlc3VsdCA9IGVpbmFfbGlzdF9hcHBlbmQocmVzdWx0LCBld2tfYmFja19mb3J3
YXJkX2xpc3RfaXRlbV9yZWYoaXRlbSkpOworICAgICAgICByZXN1bHQgPSBlaW5hX2xpc3RfYXBw
ZW5kKHJlc3VsdCwgZXdrX29iamVjdF9yZWYoaXRlbSkpOwogICAgIH0KIAogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKaW5kZXggNWVjMjM2MC4uNTY4YzA1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcApAQCAtMzIsNjMgKzMyLDQ4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjpF
d2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbShXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbVJl
ZikKK0V3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OkV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0oV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiAgICAgOiBtX3drSXRlbShpdGVtUmVmKQogeyB9
CiAKLWNvbnN0IGNoYXIqIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjp1cmwoKSBjb25zdAor
Y29uc3QgY2hhciogRXdrQmFja0ZvcndhcmRMaXN0SXRlbTo6dXJsKCkgY29uc3QKIHsKICAgICBt
X3VybCA9IFdLRWluYVNoYXJlZFN0cmluZyhBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1D
b3B5VVJMKG1fd2tJdGVtLmdldCgpKSk7CiAKICAgICByZXR1cm4gbV91cmw7CiB9CiAKLWNvbnN0
IGNoYXIqIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOjp0aXRsZSgpIGNvbnN0Citjb25zdCBj
aGFyKiBFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjp0aXRsZSgpIGNvbnN0CiB7CiAgICAgbV90aXRs
ZSA9IFdLRWluYVNoYXJlZFN0cmluZyhBZG9wdFdLLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5
VGl0bGUobV93a0l0ZW0uZ2V0KCkpKTsKIAogICAgIHJldHVybiBtX3RpdGxlOwogfQogCi1jb25z
dCBjaGFyKiBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAor
Y29uc3QgY2hhciogRXdrQmFja0ZvcndhcmRMaXN0SXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAog
ewogICAgIG1fb3JpZ2luYWxVUkwgPSBXS0VpbmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNr
Rm9yd2FyZExpc3RJdGVtQ29weU9yaWdpbmFsVVJMKG1fd2tJdGVtLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gbV9vcmlnaW5hbFVSTDsKIH0KIAotRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGV3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3JlZihFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSog
aXRlbSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7Ci0g
ICAgaXRlbS0+cmVmKCk7Ci0KLSAgICByZXR1cm4gaXRlbTsKLX0KLQotdm9pZCBld2tfYmFja19m
b3J3YXJkX2xpc3RfaXRlbV91bnJlZihFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkK
LXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpdGVtKTsKLQotICAgIGl0ZW0tPmRl
cmVmKCk7Ci19Ci0KIGNvbnN0IGNoYXIqIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VybF9n
ZXQoY29uc3QgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworICAgIEVXS19PQkpfQ09OU1RfSU1Q
TF9HRVRfT1JfUkVUVVJOX1ZBTChFd2tCYWNrRm9yd2FyZExpc3RJdGVtLCBpdGVtLCBpbXBsLCAw
KTsKIAotICAgIHJldHVybiBpdGVtLT51cmwoKTsKKyAgICByZXR1cm4gaW1wbC0+dXJsKCk7CiB9
CiAKIGNvbnN0IGNoYXIqIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3RpdGxlX2dldChjb25z
dCBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkKIHsKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgRVdLX09CSl9DT05TVF9JTVBMX0dFVF9P
Ul9SRVRVUk5fVkFMKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0sIGl0ZW0sIGltcGwsIDApOwogCi0g
ICAgcmV0dXJuIGl0ZW0tPnRpdGxlKCk7CisgICAgcmV0dXJuIGltcGwtPnRpdGxlKCk7CiB9CiAK
IGNvbnN0IGNoYXIqIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX29yaWdpbmFsX3VybF9nZXQo
Y29uc3QgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0pCiB7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0ZW0sIDApOworICAgIEVXS19PQkpfQ09OU1RfSU1QTF9H
RVRfT1JfUkVUVVJOX1ZBTChFd2tCYWNrRm9yd2FyZExpc3RJdGVtLCBpdGVtLCBpbXBsLCAwKTsK
IAotICAgIHJldHVybiBpdGVtLT5vcmlnaW5hbFVSTCgpOworICAgIHJldHVybiBpbXBsLT5vcmln
aW5hbFVSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmgKaW5kZXggOGQwNzI0ZC4uMThi
YzYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0X2l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oCkBAIC0zNywyNiArMzcsMTIgQEAKIGV4
dGVybiAiQyIgewogI2VuZGlmCiAKLS8qKiBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfQmFj
a19Gb3J3YXJkX0xpc3RfSXRlbSAqLwotdHlwZWRlZiBzdHJ1Y3QgRXdrX0JhY2tfRm9yd2FyZF9M
aXN0X0l0ZW0gRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW07Ci0KIC8qKgotICogSW5jcmVhc2Vz
IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9iamVjdC4KLSAqCi0gKiBAcGFyYW0g
aXRlbSB0aGUgYmFjay1mb3J3YXJkIGxpc3QgaXRlbSBpbnN0YW5jZSB0byBpbmNyZWFzZSB0aGUg
cmVmZXJlbmNlIGNvdW50Ci0gKgotICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCBv
biBzdWNjZXNzLCBAYyBOVUxMIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFd2tfQmFja19Gb3J3YXJk
X0xpc3RfSXRlbSAqZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcmVmKEV3a19CYWNrX0Zvcndh
cmRfTGlzdF9JdGVtICppdGVtKTsKLQotLyoqCi0gKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBj
b3VudCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgotICoKLSAqIFdo
ZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDAsIHRoZSBpdGVtIGlzIGZyZWVkLgorICog
RGVjbGFyZSBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSBhcyBFd2tfT2JqZWN0LgogICoKLSAq
IEBwYXJhbSBpdGVtIHRoZSBiYWNrLWZvcndhcmQgbGlzdCBpdGVtIGluc3RhbmNlIHRvIGRlY3Jl
YXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAqIEBzZWUgRXdrX09iamVjdAogICovCi1FQVBJIHZv
aWQgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdW5yZWYoRXdrX0JhY2tfRm9yd2FyZF9MaXN0
X0l0ZW0gKml0ZW0pOwordHlwZWRlZiBzdHJ1Y3QgRXdrX09iamVjdCBFd2tfQmFja19Gb3J3YXJk
X0xpc3RfSXRlbTsKIAogLyoqCiAgKiBSZXR1cm5zIFVSTCBvZiB0aGUgaXRlbS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19i
YWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZhdGUuaAppbmRleCA1MDcxOGJjLi44NzUyNTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3
YXJkX2xpc3RfaXRlbV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oCkBAIC0yNywxOSArMjcs
MjEgQEAKICNkZWZpbmUgZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZV9oCiAKICNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogLyoqCiAgKiBcc3RydWN0ICBF
d2tfQmFja19Gb3J3YXJkX0xpc3QKICAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBCYWNrIEZvcndh
cmQgTGlzdCBkYXRhLgogICovCi1jbGFzcyBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSA6IHB1
YmxpYyBSZWZDb3VudGVkPEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtPiB7CitjbGFzcyBFd2tC
YWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEV3a19PYmplY3QgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtPiBjcmVhdGUoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCisgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0pCisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBjcmVhdGUoV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVt
KGl0ZW1SZWYpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tCYWNrRm9yd2FyZExp
c3RJdGVtKGl0ZW1SZWYpKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiB1cmwoKSBjb25zdDsK
QEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsVVJMKCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0
ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpOworICAgIGV4cGxpY2l0IEV3a0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGl0ZW1SZWYpOwogCiAg
ICAgV0tSZXRhaW5QdHI8V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiBtX3drSXRlbTsKICAgICBt
dXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJp
dmF0ZS5oCmluZGV4IDdhYWQ0NjcuLmZkMGRiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X3By
aXZhdGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBld2tfYmFja19mb3J3YXJkX2xpc3Rf
cHJpdmF0ZV9oCiAKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1ZGUgImV3a19iYWNr
X2ZvcndhcmRfbGlzdF9pdGVtLmgiCiAjaW5jbHVkZSAiZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0
ZW1fcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19vYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29i
amVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI1ZDY2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmpl
Y3QuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGl0
ZW0gb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBpdGVtIG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0LmgiCisKKyNpbmNsdWRlICJld2tfb2JqZWN0
X3ByaXZhdGUuaCIKKworRXdrX09iamVjdCogZXdrX29iamVjdF9yZWYoRXdrX09iamVjdCogb2Jq
ZWN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChvYmplY3QsIDApOwor
ICAgIG9iamVjdC0+cmVmKCk7CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lkIGV3a19v
YmplY3RfdW5yZWYoRXdrX09iamVjdCogb2JqZWN0KQoreworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKG9iamVjdCk7CisKKyAgICBvYmplY3QtPmRlcmVmKCk7Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDM0OTQ5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3QuaApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19vYmplY3QuaAorICogQGJyaWVm
ICAgRGVzY3JpYmVzIHRoZSBFd2sgUmVmIENvdW50ZWQgQVBJLgorICovCisKKyNpZm5kZWYgZXdr
X29iamVjdF9oCisjZGVmaW5lIGV3a19vYmplY3RfaAorCisjaW5jbHVkZSA8RWluYS5oPgorCisj
aWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEg
dHlwZSBuYW1lIGZvciBFd2tfT2JqZWN0ICovCit0eXBlZGVmIHN0cnVjdCBFd2tfT2JqZWN0IEV3
a19PYmplY3Q7CisKKy8qKgorICogSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhl
IGdpdmVuIEV3a19PYmplY3QuCisgKgorICogQHBhcmFtIG9iamVjdCB0aGUgRXdrX09iamVjdCBp
bnN0YW5jZSB0byBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKgorICogQHJldHVybiBh
IHBvaW50ZXIgdG8gdGhlIG9iamVjdCBvbiBzdWNjZXNzLCBAYyBOVUxMIG90aGVyd2lzZS4KKyAq
LworRUFQSSBFd2tfT2JqZWN0ICpld2tfb2JqZWN0X3JlZihFd2tfT2JqZWN0ICpvYmplY3QpOwor
CisvKioKKyAqIERlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBFd2tf
T2JqZWN0LCBwb3NzaWJseSBmcmVlaW5nIGl0LgorICoKKyAqIFdoZW4gdGhlIHJlZmVyZW5jZSBj
b3VudCByZWFjaGVzIDAsIHRoZSBpdGVtIGlzIGZyZWVkLgorICoKKyAqIEBwYXJhbSBvYmplY3Qg
dGhlIEV3a19PYmplY3QgaW5zdGFuY2UgdG8gZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAor
ICovCitFQVBJIHZvaWQgZXdrX29iamVjdF91bnJlZihFd2tfT2JqZWN0ICpvYmplY3QpOworCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX29iamVjdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmplY3RfcHJp
dmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZmIyMmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0
X3ByaXZhdGUuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBld2tfb2JqZWN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfb2JqZWN0X3ByaXZhdGVfaAorCisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworY2xhc3MgRXdrX09iamVjdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEV3a19PYmplY3Q+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Fd2tfT2JqZWN0
KCkgeyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBpbnN0YW5jZUNsYXNzTmFtZSgpIGNvbnN0
ID0gMDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5saW5lIGJvb2wgZXdrX29iamVjdF9p
c19vZl90eXBlKGNvbnN0IEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gKFQ6OmNs
YXNzTmFtZSgpID09IG9iamVjdC0+aW5zdGFuY2VDbGFzc05hbWUoKSk7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBUPgoraW5saW5lIGJvb2wgZXdrX29iamVjdF9jYXN0X2NoZWNrKGNvbnN0IEV3a19P
YmplY3QqIG9iamVjdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob2Jq
ZWN0LCBmYWxzZSk7CisKKyAgICBpZiAoIWV3a19vYmplY3RfaXNfb2ZfdHlwZTxUPihvYmplY3Qp
KSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoImF0dGVtcHQgdG8gY29udmVydCBvYmplY3Qgb2Yg
dHlwZSAlcyB0byB0eXBlICVzIiwKKyAgICAgICAgICAgIG9iamVjdC0+aW5zdGFuY2VDbGFzc05h
bWUoKSwgVDo6Y2xhc3NOYW1lKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK2lubGluZSBjb25zdCBUKiBld2tfb2JqZWN0X2Nhc3QoY29uc3QgRXdr
X09iamVjdCogb2JqZWN0KQoreworICAgIHJldHVybiBld2tfb2JqZWN0X2Nhc3RfY2hlY2s8VD4o
b2JqZWN0KSA/IHN0YXRpY19jYXN0PGNvbnN0IFQqPihvYmplY3QpIDogMDsKK30KKwordGVtcGxh
dGUgPGNsYXNzIFQ+CitpbmxpbmUgVCogZXdrX29iamVjdF9jYXN0KEV3a19PYmplY3QqIG9iamVj
dCkKK3sKKyAgICByZXR1cm4gZXdrX29iamVjdF9jYXN0X2NoZWNrPFQ+KG9iamVjdCkgPyBzdGF0
aWNfY2FzdDxUKj4ob2JqZWN0KSA6IDA7Cit9CisKKyNkZWZpbmUgRVdLX09CSl9JTVBMX0dFVF9P
Ul9SRVRVUk4oSW1wbENsYXNzLCBvYmplY3QsIGltcGwpICAgICAgICAgICAgICAgIFwKKyAgICBJ
bXBsQ2xhc3MqIGltcGwgPSBld2tfb2JqZWN0X2Nhc3Q8SW1wbENsYXNzPihvYmplY3QpOyAgICAg
ICAgICAgICAgICAgIFwKKyAgICBpZiAoIWltcGwpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuCisKKyNk
ZWZpbmUgRVdLX09CSl9DT05TVF9JTVBMX0dFVF9PUl9SRVRVUk4oSW1wbENsYXNzLCBvYmplY3Qs
IGltcGwpICAgICAgICAgIFwKKyAgICBjb25zdCBJbXBsQ2xhc3MqIGltcGwgPSBld2tfb2JqZWN0
X2Nhc3Q8SW1wbENsYXNzPihvYmplY3QpOyAgICAgICAgICAgIFwKKyAgICBpZiAoIWltcGwpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuCisKKyNkZWZpbmUgRVdLX09CSl9JTVBMX0dFVF9PUl9SRVRVUk5f
VkFMKEltcGxDbGFzcywgb2JqZWN0LCBpbXBsLCAuLi4pICAgICAgIFwKKyAgICBJbXBsQ2xhc3Mq
IGltcGwgPSBld2tfb2JqZWN0X2Nhc3Q8SW1wbENsYXNzPihvYmplY3QpOyAgICAgICAgICAgICAg
ICAgIFwKKyAgICBpZiAoIWltcGwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fCisK
KyNkZWZpbmUgRVdLX09CSl9DT05TVF9JTVBMX0dFVF9PUl9SRVRVUk5fVkFMKEltcGxDbGFzcywg
b2JqZWN0LCBpbXBsLCAuLi4pIFwKKyAgICBjb25zdCBJbXBsQ2xhc3MqIGltcGwgPSBld2tfb2Jq
ZWN0X2Nhc3Q8SW1wbENsYXNzPihvYmplY3QpOyAgICAgICAgICAgIFwKKyAgICBpZiAoIWltcGwp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fCisKKworI2RlZmluZSBFV0tfT0JKRUNU
X0RFQ0xBUkUoX2NsYXNzTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorc3RhdGljIGNvbnN0IGNoYXIqIGNsYXNzTmFtZSgpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBuYW1lID0gI19jbGFzc05hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIHJldHVybiBuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAordmlydHVh
bCBjb25zdCBjaGFyKiBpbnN0YW5jZUNsYXNzTmFtZSgpIGNvbnN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBjbGFzc05hbWUo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
fQorCisjZW5kaWYgLy8gZXdrX29iamVjdF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
YmFja19mb3J3YXJkX2xpc3QuY3BwCmluZGV4IDgwZDc3NTUuLmVjNGE0ZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9iYWNrX2Zv
cndhcmRfbGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX2JhY2tfZm9yd2FyZF9saXN0LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgZnJlZUVpbmFMaXN0KEVpbmFfTGlzdCogbGlzdCkKIHsKICAgICB2b2lk
KiBkYXRhID0gMDsKICAgICBFSU5BX0xJU1RfRlJFRShsaXN0LCBkYXRhKQotICAgICAgICBld2tf
YmFja19mb3J3YXJkX2xpc3RfaXRlbV91bnJlZihzdGF0aWNfY2FzdDxFd2tfQmFja19Gb3J3YXJk
X0xpc3RfSXRlbSo+KGRhdGEpKTsKKyAgICAgICAgZXdrX29iamVjdF91bnJlZihzdGF0aWNfY2Fz
dDxFd2tfT2JqZWN0Kj4oZGF0YSkpOwogfQogCiBURVNUX0YoRVdLMlVuaXRUZXN0QmFzZSwgZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2N1cnJlbnRfaXRlbV9nZXQpCg==
</data>
<flag name="review"
          id="185930"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171864</attachid>
            <date>2012-11-01 08:59:13 -0700</date>
            <delta_ts>2012-11-02 02:24:49 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug100751_v4</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDViYmRiMThkNGFmYzM2NmFjYjZhZTk0NGUxYWMwMWRhOWViYzUxYTQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IE5vdiAxIDE2OjAyOjAzIDIwMTIgKzAyMDAKCiAgICBidWcxMDA3NTEKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZWM1NTUxZC4uNTY0ZWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEx
LTAxICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtFRkxdW1dLMl0gQ29tbW9uIHJlZiBhbmQgdW5yZWYgZnVuY3Rpb25zIGZvciBF
RkwgV0syIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDc1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGNvbW1vbiBFd2tfT2JqZWN0IGNsYXNzIHdpdGggcmVmL3VucmVmIEFQSSBh
bHNvIGFkZGVkIHNldmVyYWwgYXV4IGZ1bmN0aW9ucyBmb3Igc2FmZQorICAgICAgICBFd2tfT2Jq
ZWN0IGNvbnZlcnNpb24uIFVzZWQgbmV3IGFwcHJvYWNoIG9uIGV3a19iYWNrX2ZvcndhcmRfbGlz
dF9pdGVtIGFzIGV4YW1wbGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHA6CisgICAgICAgIChFd2tfQmFja19Gb3J3
YXJkX0xpc3Q6OmdldEZyb21DYWNoZU9yQ3JlYXRlKToKKyAgICAgICAgKEV3a19CYWNrX0Zvcndh
cmRfTGlzdDo6Y3JlYXRlRWluYUxpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcDoKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlz
dEl0ZW06OkV3a0JhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAoRXdrQmFja0ZvcndhcmRM
aXN0SXRlbTo6dXJsKToKKyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OnRpdGxlKToK
KyAgICAgICAgKEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06Om9yaWdpbmFsVVJMKToKKyAgICAgICAg
KGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VybF9nZXQpOgorICAgICAgICAoZXdrX2JhY2tf
Zm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a19iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX29yaWdpbmFsX3VybF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oOgorICAgICAgICAoRXdrQmFj
a0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVh
dGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9w
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdF9pdGVtX3ByaXZhdGUuaC4KKyAgICAgICAgKGV3a19vYmplY3RfcmVmKToKKyAgICAg
ICAgKGV3a19vYmplY3RfdW5yZWYpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19v
YmplY3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19vYmplY3RfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKEV3a19PYmplY3Qp
OgorICAgICAgICAoRXdrX09iamVjdDo6fkV3a19PYmplY3QpOgorICAgICAgICAoZXdrX29iamVj
dF9pc19vZl90eXBlKToKKyAgICAgICAgKGV3a19vYmplY3RfY2FzdF9jaGVjayk6CisgICAgICAg
IChld2tfb2JqZWN0X2Nhc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlzdC5jcHA6CisgICAgICAgIChmcmVlRWluYUxpc3QpOgor
CiAyMDEyLTExLTAxICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbRUZMXSBDb3JyZWN0IG91ciB1c2Ugb2YgdGhlIGNvb3JkaW5hdGVk
IGdyYXBoaWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDc3YjU0NDMuLmE1ZTJlMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01OSw2ICs1OSw3IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19tYWluLmNwcAogICAg
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX2RhdGEuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAorICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19vYmplY3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVw
X21lbnUuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRlbS5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfcmVzb3VyY2UuY3BwCkBAIC0yNTcsNiArMjU4LDcg
QEAgU0VUIChFV2ViS2l0Ml9IRUFERVJTCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElS
fS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5oIgogICAgICIk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uLmgiCisgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9TT1VS
Q0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5oIgogICAgICIke0NNQUtF
X0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfaXRl
bS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktp
dDIuaAppbmRleCBmOTdlYmQ4Li5mNmY5ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJld2tfbWFp
bi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRlICJld2tfb2JqZWN0LmgiCiAjaW5j
bHVkZSAiZXdrX3BvcHVwX21lbnUuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudV9pdGVtLmgi
CiAjaW5jbHVkZSAiZXdrX3Jlc291cmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAppbmRleCAxMmRi
YjhmLi5kZDNhZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJXS0FycmF5LmgiCiAjaW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNs
dWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19vYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CkBAIC05MCw3ICs5MSw3IEBAIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBFd2tf
QmFja19Gb3J3YXJkX0xpc3Q6OmdldEZyb21DYWNoZU9yQ3JlYXRlKFdLQmFja0ZvCiAKICAgICBS
ZWZQdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0+IGl0ZW0gPSBtX3dyYXBwZXJDYWNoZS5n
ZXQod2tJdGVtKTsKICAgICBpZiAoIWl0ZW0pIHsKLSAgICAgICAgaXRlbSA9IEV3a19CYWNrX0Zv
cndhcmRfTGlzdF9JdGVtOjpjcmVhdGUod2tJdGVtKTsKKyAgICAgICAgaXRlbSA9IEV3a0JhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZSh3a0l0ZW0pOwogICAgICAgICBtX3dyYXBwZXJDYWNoZS5z
ZXQod2tJdGVtLCBpdGVtKTsKICAgICB9CiAKQEAgLTEwOCw3ICsxMDksNyBAQCBFaW5hX0xpc3Qq
IEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlRWluYUxpc3QoV0tBcnJheVJlZiB3a0xpc3Qp
IGNvbnN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiB3a0l0ZW0gPSBzdGF0aWNfY2FzdDxXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a0xpc3QsIGkpKTsKICAgICAg
ICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0qIGl0ZW0gPSBnZXRGcm9tQ2FjaGVPckNyZWF0
ZSh3a0l0ZW0pOwotICAgICAgICByZXN1bHQgPSBlaW5hX2xpc3RfYXBwZW5kKHJlc3VsdCwgZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fcmVmKGl0ZW0pKTsKKyAgICAgICAgcmVzdWx0ID0gZWlu
YV9saXN0X2FwcGVuZChyZXN1bHQsIGV3a19vYmplY3RfcmVmKGl0ZW0pKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCmluZGV4IDVlYzIz
NjAuLjQzZjI5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKQEAgLTMyLDYzICsz
Miw0OCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tfQmFja19Gb3J3YXJkX0xp
c3RfSXRlbTo6RXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0oV0tCYWNrRm9yd2FyZExpc3RJdGVt
UmVmIGl0ZW1SZWYpCitFd2tCYWNrRm9yd2FyZExpc3RJdGVtOjpFd2tCYWNrRm9yd2FyZExpc3RJ
dGVtKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogICAgIDogbV93a0l0ZW0oaXRl
bVJlZikKIHsgfQogCi1jb25zdCBjaGFyKiBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6dXJs
KCkgY29uc3QKK2NvbnN0IGNoYXIqIEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06OnVybCgpIGNvbnN0
CiB7CiAgICAgbV91cmwgPSBXS0VpbmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtQ29weVVSTChtX3drSXRlbS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIG1fdXJsOwog
fQogCi1jb25zdCBjaGFyKiBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbTo6dGl0bGUoKSBjb25z
dAorY29uc3QgY2hhciogRXdrQmFja0ZvcndhcmRMaXN0SXRlbTo6dGl0bGUoKSBjb25zdAogewog
ICAgIG1fdGl0bGUgPSBXS0VpbmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tCYWNrRm9yd2FyZExp
c3RJdGVtQ29weVRpdGxlKG1fd2tJdGVtLmdldCgpKSk7CiAKICAgICByZXR1cm4gbV90aXRsZTsK
IH0KIAotY29uc3QgY2hhciogRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW06Om9yaWdpbmFsVVJM
KCkgY29uc3QKK2NvbnN0IGNoYXIqIEV3a0JhY2tGb3J3YXJkTGlzdEl0ZW06Om9yaWdpbmFsVVJM
KCkgY29uc3QKIHsKICAgICBtX29yaWdpbmFsVVJMID0gV0tFaW5hU2hhcmVkU3RyaW5nKEFkb3B0
V0ssIFdLQmFja0ZvcndhcmRMaXN0SXRlbUNvcHlPcmlnaW5hbFVSTChtX3drSXRlbS5nZXQoKSkp
OwogCiAgICAgcmV0dXJuIG1fb3JpZ2luYWxVUkw7CiB9CiAKLUV3a19CYWNrX0ZvcndhcmRfTGlz
dF9JdGVtKiBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9yZWYoRXdrX0JhY2tfRm9yd2FyZF9M
aXN0X0l0ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGl0
ZW0sIDApOwotICAgIGl0ZW0tPnJlZigpOwotCi0gICAgcmV0dXJuIGl0ZW07Ci19Ci0KLXZvaWQg
ZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdW5yZWYoRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0
ZW0qIGl0ZW0pCi17Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oaXRlbSk7Ci0KLSAg
ICBpdGVtLT5kZXJlZigpOwotfQotCiBjb25zdCBjaGFyKiBld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbV91cmxfZ2V0KGNvbnN0IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtKiBpdGVtKQogewot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpdGVtLCAwKTsKKyAgICBFV0tfT0JK
X0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tCYWNrRm9yd2FyZExpc3RJdGVtLCBpdGVtLCBp
bXBsLCAwKTsKIAotICAgIHJldHVybiBpdGVtLT51cmwoKTsKKyAgICByZXR1cm4gaW1wbC0+dXJs
KCk7CiB9CiAKIGNvbnN0IGNoYXIqIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3RpdGxlX2dl
dChjb25zdCBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkKIHsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgRVdLX09CSl9HRVRfSU1QTF9P
Ul9SRVRVUk4oY29uc3QgRXdrQmFja0ZvcndhcmRMaXN0SXRlbSwgaXRlbSwgaW1wbCwgMCk7CiAK
LSAgICByZXR1cm4gaXRlbS0+dGl0bGUoKTsKKyAgICByZXR1cm4gaW1wbC0+dGl0bGUoKTsKIH0K
IAogY29uc3QgY2hhciogZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fb3JpZ2luYWxfdXJsX2dl
dChjb25zdCBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbSogaXRlbSkKIHsKLSAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaXRlbSwgMCk7CisgICAgRVdLX09CSl9HRVRfSU1QTF9P
Ul9SRVRVUk4oY29uc3QgRXdrQmFja0ZvcndhcmRMaXN0SXRlbSwgaXRlbSwgaW1wbCwgMCk7CiAK
LSAgICByZXR1cm4gaXRlbS0+b3JpZ2luYWxVUkwoKTsKKyAgICByZXR1cm4gaW1wbC0+b3JpZ2lu
YWxVUkwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5oCmluZGV4IDhkMDcyNGQuLjE4YmM2
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdF9pdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uaApAQCAtMzcsMjYgKzM3LDEyIEBACiBleHRl
cm4gIkMiIHsKICNlbmRpZgogCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0X0l0ZW0gKi8KLXR5cGVkZWYgc3RydWN0IEV3a19CYWNrX0ZvcndhcmRfTGlz
dF9JdGVtIEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVtOwotCiAvKioKLSAqIEluY3JlYXNlcyB0
aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbiBvYmplY3QuCi0gKgotICogQHBhcmFtIGl0
ZW0gdGhlIGJhY2stZm9yd2FyZCBsaXN0IGl0ZW0gaW5zdGFuY2UgdG8gaW5jcmVhc2UgdGhlIHJl
ZmVyZW5jZSBjb3VudAotICoKLSAqIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBvYmplY3Qgb24g
c3VjY2VzcywgQGMgTlVMTCBvdGhlcndpc2UuCi0gKi8KLUVBUEkgRXdrX0JhY2tfRm9yd2FyZF9M
aXN0X0l0ZW0gKmV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3JlZihFd2tfQmFja19Gb3J3YXJk
X0xpc3RfSXRlbSAqaXRlbSk7Ci0KLS8qKgotICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291
bnQgb2YgdGhlIGdpdmVuIG9iamVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KLSAqCi0gKiBXaGVu
IHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyAwLCB0aGUgaXRlbSBpcyBmcmVlZC4KKyAqIERl
Y2xhcmUgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0gYXMgRXdrX09iamVjdC4KICAqCi0gKiBA
cGFyYW0gaXRlbSB0aGUgYmFjay1mb3J3YXJkIGxpc3QgaXRlbSBpbnN0YW5jZSB0byBkZWNyZWFz
ZSB0aGUgcmVmZXJlbmNlIGNvdW50CisgKiBAc2VlIEV3a19PYmplY3QKICAqLwotRUFQSSB2b2lk
IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VucmVmKEV3a19CYWNrX0ZvcndhcmRfTGlzdF9J
dGVtICppdGVtKTsKK3R5cGVkZWYgc3RydWN0IEV3a19PYmplY3QgRXdrX0JhY2tfRm9yd2FyZF9M
aXN0X0l0ZW07CiAKIC8qKgogICogUmV0dXJucyBVUkwgb2YgdGhlIGl0ZW0uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFj
a19mb3J3YXJkX2xpc3RfaXRlbV9wcml2YXRlLmgKaW5kZXggNTA3MThiYy4uODc1MjUxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0X2l0ZW1fcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZhdGUuaApAQCAtMjcsMTkgKzI3LDIx
IEBACiAjZGVmaW5lIGV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3ByaXZhdGVfaAogCiAjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRl
LmgiCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIC8qKgogICogXHN0cnVjdCAgRXdr
X0JhY2tfRm9yd2FyZF9MaXN0CiAgKiBAYnJpZWYgICBDb250YWlucyB0aGUgQmFjayBGb3J3YXJk
IExpc3QgZGF0YS4KICAqLwotY2xhc3MgRXdrX0JhY2tfRm9yd2FyZF9MaXN0X0l0ZW0gOiBwdWJs
aWMgUmVmQ291bnRlZDxFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbT4geworY2xhc3MgRXdrQmFj
a0ZvcndhcmRMaXN0SXRlbSA6IHB1YmxpYyBFd2tfT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbT4gY3JlYXRlKFdLQmFja0Zv
cndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQorICAgIEVXS19PQkpFQ1RfREVDTEFSRShFd2tCYWNr
Rm9yd2FyZExpc3RJdGVtKQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrQmFja0ZvcndhcmRM
aXN0SXRlbT4gY3JlYXRlKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFd2tfQmFja19Gb3J3YXJkX0xpc3RfSXRlbShp
dGVtUmVmKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrQmFja0ZvcndhcmRMaXN0
SXRlbShpdGVtUmVmKSk7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogdXJsKCkgY29uc3Q7CkBA
IC00Nyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbFVSTCgpIGNv
bnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEV3a19CYWNrX0ZvcndhcmRfTGlzdF9JdGVt
KFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKTsKKyAgICBleHBsaWNpdCBFd2tCYWNr
Rm9yd2FyZExpc3RJdGVtKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtUmVmKTsKIAogICAg
IFdLUmV0YWluUHRyPFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZj4gbV93a0l0ZW07CiAgICAgbXV0
YWJsZSBXS0VpbmFTaGFyZWRTdHJpbmcgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X3ByaXZh
dGUuaAppbmRleCA3YWFkNDY3Li5mZDBkYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2
YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgZXdrX2JhY2tfZm9yd2FyZF9saXN0X3By
aXZhdGVfaAogCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfYmFja19m
b3J3YXJkX2xpc3RfaXRlbS5oIgogI2luY2x1ZGUgImV3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVt
X3ByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19vYmpl
Y3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNWQ2NjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0
LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBpdGVt
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgaXRlbSBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiZXdrX29iamVjdC5oIgorCisjaW5jbHVkZSAiZXdrX29iamVjdF9w
cml2YXRlLmgiCisKK0V3a19PYmplY3QqIGV3a19vYmplY3RfcmVmKEV3a19PYmplY3QqIG9iamVj
dCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwob2JqZWN0LCAwKTsKKyAg
ICBvYmplY3QtPnJlZigpOworCisgICAgcmV0dXJuIG9iamVjdDsKK30KKwordm9pZCBld2tfb2Jq
ZWN0X3VucmVmKEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihvYmplY3QpOworCisgICAgb2JqZWN0LT5kZXJlZigpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjAzNDk0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfb2JqZWN0LmgKKyAqIEBicmllZiAg
IERlc2NyaWJlcyB0aGUgRXdrIFJlZiBDb3VudGVkIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19v
YmplY3RfaAorI2RlZmluZSBld2tfb2JqZWN0X2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5
cGUgbmFtZSBmb3IgRXdrX09iamVjdCAqLwordHlwZWRlZiBzdHJ1Y3QgRXdrX09iamVjdCBFd2tf
T2JqZWN0OworCisvKioKKyAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBn
aXZlbiBFd2tfT2JqZWN0LgorICoKKyAqIEBwYXJhbSBvYmplY3QgdGhlIEV3a19PYmplY3QgaW5z
dGFuY2UgdG8gaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudAorICoKKyAqIEByZXR1cm4gYSBw
b2ludGVyIHRvIHRoZSBvYmplY3Qgb24gc3VjY2VzcywgQGMgTlVMTCBvdGhlcndpc2UuCisgKi8K
K0VBUEkgRXdrX09iamVjdCAqZXdrX29iamVjdF9yZWYoRXdrX09iamVjdCAqb2JqZWN0KTsKKwor
LyoqCisgKiBEZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgZ2l2ZW4gRXdrX09i
amVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KKyAqCisgKiBXaGVuIHRoZSByZWZlcmVuY2UgY291
bnQgcmVhY2hlcyAwLCB0aGUgaXRlbSBpcyBmcmVlZC4KKyAqCisgKiBAcGFyYW0gb2JqZWN0IHRo
ZSBFd2tfT2JqZWN0IGluc3RhbmNlIHRvIGRlY3JlYXNlIHRoZSByZWZlcmVuY2UgY291bnQKKyAq
LworRUFQSSB2b2lkIGV3a19vYmplY3RfdW5yZWYoRXdrX09iamVjdCAqb2JqZWN0KTsKKworCisj
aWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8vIGV3a19vYmplY3RfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdF9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfb2JqZWN0X3ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDRjY2ZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX29iamVjdF9w
cml2YXRlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBl
d2tfb2JqZWN0X3ByaXZhdGVfaAorI2RlZmluZSBld2tfb2JqZWN0X3ByaXZhdGVfaAorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworY2xhc3MgRXdrX09iamVjdCA6IHB1YmxpYyBSZWZD
b3VudGVkPEV3a19PYmplY3Q+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Fd2tfT2JqZWN0KCkg
eyB9CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBpbnN0YW5jZUNsYXNzTmFtZSgpIGNvbnN0ID0g
MDsKK307CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5saW5lIGJvb2wgZXdrX29iamVjdF9pc19v
Zl90eXBlKGNvbnN0IEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gKHJlaW50ZXJw
cmV0X2Nhc3Q8VD4oMCktPmNsYXNzTmFtZSgpID09IG9iamVjdC0+aW5zdGFuY2VDbGFzc05hbWUo
KSk7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5saW5lIGJvb2wgZXdrX29iamVjdF9jYXN0
X2NoZWNrKGNvbnN0IEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwob2JqZWN0LCBmYWxzZSk7CisKKyAgICBpZiAoIWV3a19vYmplY3RfaXNf
b2ZfdHlwZTxUPihvYmplY3QpKSB7CisgICAgICAgIEVJTkFfTE9HX0NSSVQoImF0dGVtcHQgdG8g
Y29udmVydCBvYmplY3Qgb2YgdHlwZSAlcyB0byB0eXBlICVzIiwKKyAgICAgICAgICAgIG9iamVj
dC0+aW5zdGFuY2VDbGFzc05hbWUoKSwgcmVpbnRlcnByZXRfY2FzdDxUPigwKS0+Y2xhc3NOYW1l
KCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2lu
bGluZSBjb25zdCBUIGV3a19vYmplY3RfY2FzdChjb25zdCBFd2tfT2JqZWN0KiBvYmplY3QpCit7
CisgICAgcmV0dXJuIGV3a19vYmplY3RfY2FzdF9jaGVjazxUPihvYmplY3QpID8gc3RhdGljX2Nh
c3Q8VD4ob2JqZWN0KSA6IDA7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBUPgoraW5saW5lIFQgZXdr
X29iamVjdF9jYXN0KEV3a19PYmplY3QqIG9iamVjdCkKK3sKKyAgICByZXR1cm4gZXdrX29iamVj
dF9jYXN0X2NoZWNrPFQ+KG9iamVjdCkgPyBzdGF0aWNfY2FzdDxUPihvYmplY3QpIDogMDsKK30K
KworI2RlZmluZSBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihJbXBsQ2xhc3MsIG9iamVjdCwg
aW1wbCwgLi4uKSAgICAgICAgICAgXAorICAgIEltcGxDbGFzcyogaW1wbCA9IGV3a19vYmplY3Rf
Y2FzdDxJbXBsQ2xhc3MqPihvYmplY3QpOyAgICAgICAgICAgICAgICAgXAorICAgIGlmICghaW1w
bCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gX19WQV9BUkdTX18KKworCisjZGVmaW5lIEVXS19PQkpF
Q1RfREVDTEFSRShfY2xhc3NOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCitzdGF0aWMgY29uc3QgY2hhciogY2xhc3NOYW1lKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWUgPSAjX2NsYXNzTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgcmV0dXJuIG5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit2aXJ0
dWFsIGNvbnN0IGNoYXIqIGluc3RhbmNlQ2xhc3NOYW1lKCkgY29uc3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIGNsYXNzTmFt
ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Cit9CisKKyNlbmRpZiAvLyBld2tfb2JqZWN0X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2JhY2tfZm9yd2FyZF9s
aXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdr
Ml9iYWNrX2ZvcndhcmRfbGlzdC5jcHAKaW5kZXggODBkNzc1NS4uZWM0YTRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2JhY2tf
Zm9yd2FyZF9saXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBmcmVlRWluYUxpc3QoRWluYV9MaXN0KiBsaXN0KQogewogICAgIHZv
aWQqIGRhdGEgPSAwOwogICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGRhdGEpCi0gICAgICAgIGV3
a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX3VucmVmKHN0YXRpY19jYXN0PEV3a19CYWNrX0Zvcndh
cmRfTGlzdF9JdGVtKj4oZGF0YSkpOworICAgICAgICBld2tfb2JqZWN0X3VucmVmKHN0YXRpY19j
YXN0PEV3a19PYmplY3QqPihkYXRhKSk7CiB9CiAKIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBl
d2tfYmFja19mb3J3YXJkX2xpc3RfY3VycmVudF9pdGVtX2dldCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>