<?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>93229</bug_id>
          
          <creation_ts>2012-08-06 00:55:28 -0700</creation_ts>
          <short_desc>[EFL] EFL Webkit needs a class wrapping eina stringshare</short_desc>
          <delta_ts>2012-08-16 03:08:34 -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>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687832</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-06 00:55:28 -0700</bug_when>
    <thetext>EFL WebKit is currently using eina_stringshare to manage strings in a shared pull, however its EFL C API turns to be not quite convenient comparing to a C++ wrapper class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688963</commentid>
    <comment_count>1</comment_count>
      <attachid>156895</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 02:01:12 -0700</bug_when>
    <thetext>Created attachment 156895
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688994</commentid>
    <comment_count>2</comment_count>
      <attachid>156895</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-07 02:50:27 -0700</bug_when>
    <thetext>Comment on attachment 156895
patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:32
&gt; +    :m_string(eina_stringshare_ref(other.m_string))

space missing before m_

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:37
&gt; +    :m_string(eina_stringshare_add(str))

same here

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:43
&gt; +    if (m_string)

when will that happen? why not assert in the ctor instead?

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:34
&gt; +class WK_EXPORT WKEinaSharedString {

maybe it should be made non inheritable

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:36
&gt; +    WKEinaSharedString() : m_string(0) { }

ok I see now. It might still make sense to assert in the other ctors

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:38
&gt; +    WKEinaSharedString(const char* str);

I think think it might make sense to make a WKEinaSharedString(WKStringRef) or so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688996</commentid>
    <comment_count>3</comment_count>
      <attachid>156895</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:09:30 -0700</bug_when>
    <thetext>Comment on attachment 156895
patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:34
&gt;&gt; +class WK_EXPORT WKEinaSharedString {
&gt; 
&gt; maybe it should be made non inheritable

How to make it non inheritable? The only way that comes to my mind is to inherit it virtually from a friend class with private default constructor :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688999</commentid>
    <comment_count>4</comment_count>
      <attachid>156903</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:21:30 -0700</bug_when>
    <thetext>Created attachment 156903
patch v2

Kenneth, thanks for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689000</commentid>
    <comment_count>5</comment_count>
      <attachid>156903</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 03:27:40 -0700</bug_when>
    <thetext>Comment on attachment 156903
patch v2

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; +    ASSERT(str);

Eina stringshare accepts null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689002</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 03:29:08 -0700</bug_when>
    <thetext>It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689008</commentid>
    <comment_count>7</comment_count>
      <attachid>156903</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:33:22 -0700</bug_when>
    <thetext>Comment on attachment 156903
patch v2

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt;&gt; +    ASSERT(str);
&gt; 
&gt; Eina stringshare accepts null

right, but do we want &quot;einaSharedString = 0;&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689009</commentid>
    <comment_count>8</comment_count>
      <attachid>156903</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-07 03:34:12 -0700</bug_when>
    <thetext>Comment on attachment 156903
patch v2

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt;&gt; +    ASSERT(str);
&gt; 
&gt; Eina stringshare accepts null

and the _del doesn&apos;t?

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:36
&gt; +    WKEinaSharedString() : m_string(0) { }

ALWAYS_INLINE WKEinaSharedString() ? RefPtr does this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689010</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:35:51 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.

Please see example here: https://bugs.webkit.org/attachment.cgi?id=156900&amp;action=prettypatch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689011</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-07 03:37:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.

It basically provides the same as OwnPtr in that it takes care of freeing for you which in complex code and refactorings easily can be forgotten. But anyway I agree with you and think it would be nice to include it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689012</commentid>
    <comment_count>11</comment_count>
      <attachid>156903</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:39:20 -0700</bug_when>
    <thetext>Comment on attachment 156903
patch v2

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt;&gt;&gt;&gt; +    ASSERT(str);
&gt;&gt;&gt; 
&gt;&gt;&gt; Eina stringshare accepts null
&gt;&gt; 
&gt;&gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; 
&gt; and the _del doesn&apos;t?

From eina_stringshare_del docs &quot;Note that if the given pointer is not shared or NULL, bad things will happen, likely a segmentation fault. &quot; :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689013</commentid>
    <comment_count>12</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:42:19 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #6)
&gt; &gt; It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.
&gt; 
&gt; It basically provides the same as OwnPtr in that it takes care of freeing for you which in complex code and refactorings easily can be forgotten. But anyway I agree with you and think it would be nice to include it

Shall I use WKEinaSharedString class through all the ewk_ classes in same patch? (Can do it but I&apos;m a bit afraid that the patch becomes huge)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689014</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 03:44:33 -0700</bug_when>
    <thetext>Eina string share replace accepts null and it is used in several places in our code. The fact that you need to do a null check before calling del() is unrelated to the matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689015</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 03:45:52 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 156903 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; 
&gt; &gt; Eina stringshare accepts null
&gt; 
&gt; right, but do we want &quot;einaSharedString = 0;&quot; ?

Why not. I think of your class as OwnPtr. It accepts 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689020</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 03:51:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.
&gt; &gt; 
&gt; &gt; It basically provides the same as OwnPtr in that it takes care of freeing for you which in complex code and refactorings easily can be forgotten. But anyway I agree with you and think it would be nice to include it
&gt; 
&gt; Shall I use WKEinaSharedString class through all the ewk_ classes in same patch? (Can do it but I&apos;m a bit afraid that the patch becomes huge)

Kenneth should decide but I propose to update just the back forward list code for now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689021</commentid>
    <comment_count>16</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:56:20 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 156903 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; &gt; 
&gt; &gt; &gt; Eina stringshare accepts null
&gt; &gt; 
&gt; &gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; 
&gt; Why not. I think of your class as OwnPtr. It accepts 0.

That&apos;s a string class at the same time and such semantics would look weird IMHO.
I&apos;d rather add empty() function or write einaSharedString = &quot;&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689022</commentid>
    <comment_count>17</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 03:57:05 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; &gt; It would be nice to use it in the same patch to see how convenient it is. Personally I&apos;m not convinced yet.
&gt; &gt; &gt; 
&gt; &gt; &gt; It basically provides the same as OwnPtr in that it takes care of freeing for you which in complex code and refactorings easily can be forgotten. But anyway I agree with you and think it would be nice to include it
&gt; &gt; 
&gt; &gt; Shall I use WKEinaSharedString class through all the ewk_ classes in same patch? (Can do it but I&apos;m a bit afraid that the patch becomes huge)
&gt; 
&gt; Kenneth should decide but I propose to update just the back forward list code for now?

Agree with you, that I will do for sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689030</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 04:27:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 156903 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt; &gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Eina stringshare accepts null
&gt; &gt; &gt; 
&gt; &gt; &gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; &gt; 
&gt; &gt; Why not. I think of your class as OwnPtr. It accepts 0.
&gt; 
&gt; That&apos;s a string class at the same time and such semantics would look weird IMHO.
&gt; I&apos;d rather add empty() function or write einaSharedString = &quot;&quot;;

Well, having isNull(), isEmpty() and reset() methods is a good idea. I still think supporting 0 is a good idea because it is used in EFL port. We use char* for in / out values and they may be null. If you don&apos;t support 0, this will result in extra code and checks when refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689033</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-07 04:29:44 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; (From update of attachment 156903 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt; &gt; &gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Eina stringshare accepts null
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not. I think of your class as OwnPtr. It accepts 0.
&gt; &gt; 
&gt; &gt; That&apos;s a string class at the same time and such semantics would look weird IMHO.
&gt; &gt; I&apos;d rather add empty() function or write einaSharedString = &quot;&quot;;
&gt; 
&gt; Well, having isNull(), isEmpty() and reset() methods is a good idea. I still think supporting 0 is a good idea because it is used in EFL port. We use char* for in / out values and they may be null. If you don&apos;t support 0, this will result in extra code and checks when refactoring.

BTW, using &quot;&quot; instead of 0 has a different meaning. Empty string is different than null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689035</commentid>
    <comment_count>20</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 04:33:37 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; &gt; (From update of attachment 156903 [details] [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt; &gt; &gt; &gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Eina stringshare accepts null
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why not. I think of your class as OwnPtr. It accepts 0.
&gt; &gt; &gt; 
&gt; &gt; &gt; That&apos;s a string class at the same time and such semantics would look weird IMHO.
&gt; &gt; &gt; I&apos;d rather add empty() function or write einaSharedString = &quot;&quot;;
&gt; &gt; 
&gt; &gt; Well, having isNull(), isEmpty() and reset() methods is a good idea. I still think supporting 0 is a good idea because it is used in EFL port. We use char* for in / out values and they may be null. If you don&apos;t support 0, this will result in extra code and checks when refactoring.
&gt; 
&gt; BTW, using &quot;&quot; instead of 0 has a different meaning. Empty string is different than null.

Yeah, that&apos;s just in case you want make smth empty..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689038</commentid>
    <comment_count>21</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 04:35:03 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; (From update of attachment 156903 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156903&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:60
&gt; &gt; &gt; &gt; &gt;&gt; +    ASSERT(str);
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Eina stringshare accepts null
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; right, but do we want &quot;einaSharedString = 0;&quot; ?
&gt; &gt; &gt; 
&gt; &gt; &gt; Why not. I think of your class as OwnPtr. It accepts 0.
&gt; &gt; 
&gt; &gt; That&apos;s a string class at the same time and such semantics would look weird IMHO.
&gt; &gt; I&apos;d rather add empty() function or write einaSharedString = &quot;&quot;;
&gt; 
&gt; Well, having isNull(), isEmpty() and reset() methods is a good idea. I still think supporting 0 is a good idea because it is used in EFL port. We use char* for in / out values and they may be null. If you don&apos;t support 0, this will result in extra code and checks when refactoring.

Ok, let&apos;s keep it so far</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689041</commentid>
    <comment_count>22</comment_count>
      <attachid>156912</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-07 04:41:38 -0700</bug_when>
    <thetext>Created attachment 156912
patch v3

Considered comments from Kenneth and Chris. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690187</commentid>
    <comment_count>23</comment_count>
      <attachid>156912</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 05:26:08 -0700</bug_when>
    <thetext>Comment on attachment 156912
patch v3

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

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)

Is the WKAdoptTag supposed to be ignored?

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:52
&gt; +    ALWAYS_INLINE WKEinaSharedString(WKRefType strRef)

WKRefType could be something that doesn&apos;t have -&gt;string(), no? Maybe it is better to specialize it to only accept WKStringRef and WKURLRef ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690199</commentid>
    <comment_count>24</comment_count>
      <attachid>156912</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-08 05:36:16 -0700</bug_when>
    <thetext>Comment on attachment 156912
patch v3

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

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)
&gt; 
&gt; Is the WKAdoptTag supposed to be ignored?

Yes, at least WKRetainPtr ignores it.

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:52
&gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKRefType strRef)
&gt; 
&gt; WKRefType could be something that doesn&apos;t have -&gt;string(), no? Maybe it is better to specialize it to only accept WKStringRef and WKURLRef ?

I guess we can have other WKRefType having -&gt;string() in future (for instance StringWithDirection ;-) ). Specialization will mean repeating of existing code basically.. I would say if we at some point have WKRefType having -&gt;someWeirdStringGetter() we will specialize for that type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690201</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 05:39:18 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 156912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156912&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt; &gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)
&gt; &gt; 
&gt; &gt; Is the WKAdoptTag supposed to be ignored?
&gt; 
&gt; Yes, at least WKRetainPtr ignores it.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:52
&gt; &gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKRefType strRef)
&gt; &gt; 
&gt; &gt; WKRefType could be something that doesn&apos;t have -&gt;string(), no? Maybe it is better to specialize it to only accept WKStringRef and WKURLRef ?

Then we could ASSERT if it is not AdoptWK right?

&gt; 
&gt; I guess we can have other WKRefType having -&gt;string() in future (for instance StringWithDirection ;-) ). Specialization will mean repeating of existing code basically.. I would say if we at some point have WKRefType having -&gt;someWeirdStringGetter() we will specialize for that type.

But are there any WKRefType not having the string() method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690207</commentid>
    <comment_count>26</comment_count>
      <attachid>156912</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-08 05:43:46 -0700</bug_when>
    <thetext>Comment on attachment 156912
patch v3

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt;&gt;&gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)
&gt;&gt;&gt; 
&gt;&gt;&gt; Is the WKAdoptTag supposed to be ignored?
&gt;&gt; 
&gt;&gt; Yes, at least WKRetainPtr ignores it.
&gt; 
&gt; Then we could ASSERT if it is not AdoptWK right?

enum WKAdoptTag { AdoptWK }; -&gt; guess, it has to be AdoptWK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690210</commentid>
    <comment_count>27</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-08 05:45:59 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 156912 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156912&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt; &gt; &gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)
&gt; &gt; &gt; 
&gt; &gt; &gt; Is the WKAdoptTag supposed to be ignored?
&gt; &gt; 
&gt; &gt; Yes, at least WKRetainPtr ignores it.
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:52
&gt; &gt; &gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKRefType strRef)
&gt; &gt; &gt; 
&gt; &gt; &gt; WKRefType could be something that doesn&apos;t have -&gt;string(), no? Maybe it is better to specialize it to only accept WKStringRef and WKURLRef ?
&gt; 
&gt; Then we could ASSERT if it is not AdoptWK right?
&gt; 
&gt; &gt; 
&gt; &gt; I guess we can have other WKRefType having -&gt;string() in future (for instance StringWithDirection ;-) ). Specialization will mean repeating of existing code basically.. I would say if we at some point have WKRefType having -&gt;someWeirdStringGetter() we will specialize for that type.
&gt; 
&gt; But are there any WKRefType not having the string() method?
Think we have plenty of them, but if the Client puts inappropriate WKRefType to function, there will be compiler error..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690211</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 05:47:05 -0700</bug_when>
    <thetext>
&gt; &gt; But are there any WKRefType not having the string() method?
&gt; Think we have plenty of them, but if the Client puts inappropriate WKRefType to function, there will be compiler error..

Sure I just find it more safe to open this up for classes we trust and where we know it makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690215</commentid>
    <comment_count>29</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 05:48:08 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 156912 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156912&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.h:41
&gt; &gt;&gt;&gt;&gt; +    ALWAYS_INLINE WKEinaSharedString(WKAdoptTag, WKRefType strRef)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is the WKAdoptTag supposed to be ignored?
&gt; &gt;&gt; 
&gt; &gt;&gt; Yes, at least WKRetainPtr ignores it.
&gt; &gt; 
&gt; &gt; Then we could ASSERT if it is not AdoptWK right?
&gt; 
&gt; enum WKAdoptTag { AdoptWK }; -&gt; guess, it has to be AdoptWK

It one is added at some point, you could still ASSERT. It is an enum so basically a number</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690258</commentid>
    <comment_count>30</comment_count>
      <attachid>157201</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-08 06:27:04 -0700</bug_when>
    <thetext>Created attachment 157201
patch v4

Kenneth, thanks for your patience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690263</commentid>
    <comment_count>31</comment_count>
      <attachid>157201</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-08 06:36:21 -0700</bug_when>
    <thetext>Comment on attachment 157201
patch v4

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

Very nice

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:44
&gt; +        if (adopt)
&gt; +            WKRelease(strRef); // Have stored a copy into eina_stringshare, do not need adopted strRef.

What about the comment now?

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:61
&gt; +    : m_string(fromRefType(stringRef, true /*adopt*/))

Don&apos;t we usually do /* adopt */ true? and not the other way around

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:63
&gt; +    ASSERT(adoptTag == AdoptWK);

// Guard for future enum changes.

&gt; Source/WebKit2/UIProcess/API/cpp/efl/WKEinaSharedString.cpp:82
&gt; +
&gt; +

unneeded double newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690268</commentid>
    <comment_count>32</comment_count>
      <attachid>157205</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-08-08 06:45:49 -0700</bug_when>
    <thetext>Created attachment 157205
patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690304</commentid>
    <comment_count>33</comment_count>
      <attachid>157205</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 07:41:10 -0700</bug_when>
    <thetext>Comment on attachment 157205
patch v5

Clearing flags on attachment: 157205

Committed r125035: &lt;http://trac.webkit.org/changeset/125035&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690305</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-08 07:41:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696603</commentid>
    <comment_count>35</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-15 18:40:24 -0700</bug_when>
    <thetext>Mikhail, thank you for your great patch. :)  As I said webkit-efl mailing list, could you add this WKEinaSharedString usage to EFL WebKit coding style wiki page ?

http://trac.webkit.org/wiki/EFLWebKitCodingStyle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696899</commentid>
    <comment_count>36</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-16 01:34:56 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Mikhail, thank you for your great patch. :)  As I said webkit-efl mailing list, could you add this WKEinaSharedString usage to EFL WebKit coding style wiki page ?
&gt; 
&gt; http://trac.webkit.org/wiki/EFLWebKitCodingStyle

What list is that? can you add me ? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696949</commentid>
    <comment_count>37</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-16 02:53:11 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; Mikhail, thank you for your great patch. :)  As I said webkit-efl mailing list, could you add this WKEinaSharedString usage to EFL WebKit coding style wiki page ?
&gt; &gt; 
&gt; &gt; http://trac.webkit.org/wiki/EFLWebKitCodingStyle
&gt; 
&gt; What list is that? can you add me ? :-)

As you know, EFL port had efl specific coding style in last year. So, many reviewer couldn&apos;t review patches for EFL port because of EFL specific coding style. EFL port decided to use WebKit style except for some specific cases. To guide changed EFL port coding style, I made the wiki page. In my humble opinion, everybody can change it after getting agreements from WebKit EFL folks. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696951</commentid>
    <comment_count>38</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-16 02:56:25 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #36)
&gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; Mikhail, thank you for your great patch. :)  As I said webkit-efl mailing list, could you add this WKEinaSharedString usage to EFL WebKit coding style wiki page ?
&gt; &gt; &gt; 
&gt; &gt; &gt; http://trac.webkit.org/wiki/EFLWebKitCodingStyle
&gt; &gt; 
&gt; &gt; What list is that? can you add me ? :-)
&gt; 
&gt; As you know, EFL port had efl specific coding style in last year. So, many reviewer couldn&apos;t review patches for EFL port because of EFL specific coding style. EFL port decided to use WebKit style except for some specific cases. To guide changed EFL port coding style, I made the wiki page. In my humble opinion, everybody can change it after getting agreements from WebKit EFL folks. :-)

I was talking about your mailing list, if you could add me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696962</commentid>
    <comment_count>39</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-16 03:08:34 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; (In reply to comment #36)
&gt; &gt; &gt; (In reply to comment #35)
&gt; &gt; &gt; &gt; Mikhail, thank you for your great patch. :)  As I said webkit-efl mailing list, could you add this WKEinaSharedString usage to EFL WebKit coding style wiki page ?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; http://trac.webkit.org/wiki/EFLWebKitCodingStyle
&gt; &gt; &gt; 
&gt; &gt; &gt; What list is that? can you add me ? :-)
&gt; &gt; 
&gt; &gt; As you know, EFL port had efl specific coding style in last year. So, many reviewer couldn&apos;t review patches for EFL port because of EFL specific coding style. EFL port decided to use WebKit style except for some specific cases. To guide changed EFL port coding style, I made the wiki page. In my humble opinion, everybody can change it after getting agreements from WebKit EFL folks. :-)
&gt; 
&gt; I was talking about your mailing list, if you could add me.

I thought you had already subscribed (didn&apos;t you comment about licensing there not so long ago?) Anyway, here is the link:
http://lists.webkit.org/mailman/listinfo/webkit-efl</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156895</attachid>
            <date>2012-08-07 02:01:12 -0700</date>
            <delta_ts>2012-08-07 03:21:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug93229</filename>
            <type>text/plain</type>
            <size>7146</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU4MjMxMmRjNjU2NDcyYTBkNDExODY3MjY4MmFkOGMyZmNiMmU1MzUKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEF1ZyA3IDExOjIwOjMwIDIwMTIgKzAzMDAKCiAgICBidWc5MzIyOQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlZDYxODA1Li41NWIxYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF0gRUZMIFdlYmtpdCBuZWVkcyBhIGNsYXNzIHdyYXBwaW5nIGVpbmEgc3Ry
aW5nc2hhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSBuZXcgYXV4aWxpYXJ5IGNsYXNzIHdyYXBwaW5nIEVpbmEgU3RyaW5nc2hhcmUgYW5k
IHByb3ZpZGluZworICAgICAgICBtb3JlIGNvbnZlbmllbnQgQysrIGludGVyZmFjZSBmb3IgdXNp
bmcgaXQuIAorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
Om1fc3RyaW5nKToKKyAgICAgICAgKFdLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZyk6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjQ4
MTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDliY2JkYjAuLmFhMTI2NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zMyw2ICszMyw4IEBAIExJU1QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CiAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKyAgICAKKyAgICBVSVByb2Nl
c3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEyMCw2ICsxMjIsNyBAQCBMSVNUKEFQUEVORCBXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUxMWQ1MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3Bw
CkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworV0tFaW5hU2hhcmVkU3RyaW5nOjpXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgV0tF
aW5hU2hhcmVkU3RyaW5nJiBvdGhlcikKKyAgICA6bV9zdHJpbmcoZWluYV9zdHJpbmdzaGFyZV9y
ZWYob3RoZXIubV9zdHJpbmcpKQoreworfQorCitXS0VpbmFTaGFyZWRTdHJpbmc6OldLRWluYVNo
YXJlZFN0cmluZyhjb25zdCBjaGFyKiBzdHIpCisgICAgOm1fc3RyaW5nKGVpbmFfc3RyaW5nc2hh
cmVfYWRkKHN0cikpCit7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZygpCit7CisgICAgaWYgKG1fc3RyaW5nKQorICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2Rl
bChtX3N0cmluZyk7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZyYgV0tFaW5hU2hhcmVkU3RyaW5n
OjpvcGVyYXRvcj0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcikKK3sKKyAgICBpZiAo
dGhpcyAhPSAmb3RoZXIpIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nKQorICAgICAgICAgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwobV9zdHJpbmcpOworICAgICAgICBtX3N0cmluZyA9IGVpbmFfc3Ry
aW5nc2hhcmVfcmVmKG90aGVyLm1fc3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitXS0VpbmFTaGFyZWRTdHJpbmcmIFdLRWluYVNoYXJlZFN0cmluZzo6b3BlcmF0b3I9KGNv
bnN0IGNoYXIqIHN0cikKK3sKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJm1fc3RyaW5n
LCBzdHIpOworICAgIHJldHVybiAqdGhpczsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODliOTY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tFaW5hU2hhcmVk
U3RyaW5nX2gKKyNkZWZpbmUgV0tFaW5hU2hhcmVkU3RyaW5nX2gKKworI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV0tfRVhQT1JUIFdLRWluYVNoYXJlZFN0cmluZyB7CitwdWJsaWM6CisgICAgV0tFaW5h
U2hhcmVkU3RyaW5nKCkgOiBtX3N0cmluZygwKSB7IH0KKyAgICBXS0VpbmFTaGFyZWRTdHJpbmco
Y29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcik7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5n
KGNvbnN0IGNoYXIqIHN0cik7CisKKyAgICB+V0tFaW5hU2hhcmVkU3RyaW5nKCk7CisKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG90
aGVyKTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBzdHIp
OworCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcm
IG90aGVyKSBjb25zdCB7IHJldHVybiB0aGlzLT5tX3N0cmluZyA9PSBvdGhlci5tX3N0cmluZzsg
fQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIGlubGluZSBv
cGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorCisgICAg
aW5saW5lIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fc3RyaW5nOyB9CisKKyAgICBp
bmxpbmUgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nID8gc3RhdGljX2Nh
c3Q8c2l6ZV90PihlaW5hX3N0cmluZ3NoYXJlX3N0cmxlbihtX3N0cmluZykpIDogMDsgfQorCitw
cml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fc3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKK3VzaW5nIFdlYktpdDo6V0tFaW5hU2hhcmVkU3RyaW5nOworCisjZW5kaWYgLy8g
V0tFaW5hU2hhcmVkU3RyaW5nX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156903</attachid>
            <date>2012-08-07 03:21:30 -0700</date>
            <delta_ts>2012-08-07 04:41:38 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug93229_v2</filename>
            <type>text/plain</type>
            <size>7949</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ4M2MwMDg5MTI2MWEwOTM2YWE0M2I0NDkxYTQxYWY3OWE3NzIxNDYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEF1ZyA3IDExOjIwOjMwIDIwMTIgKzAzMDAKCiAgICBidWc5MzIyOQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCAyYmVmZDY5Li5hY2Q1YzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTItMDgt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
KyAgICAgICAgW0VGTF0gRUZMIFdlYmtpdCBuZWVkcyBhIGNsYXNzIHdyYXBwaW5nIGVpbmEgc3Ry
aW5nc2hhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSBuZXcgYXV4aWxpYXJ5IGNsYXNzIHdyYXBwaW5nIEVpbmEgU3RyaW5nc2hhcmUgYW5k
IHByb3ZpZGluZworICAgICAgICBtb3JlIGNvbnZlbmllbnQgQysrIGludGVyZmFjZSBmb3IgdXNp
bmcgaXQuIAorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
Om1fc3RyaW5nKToKKyAgICAgICAgKFdLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZyk6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisKKzIwMTItMDgtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hh
aWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKICAgICAgICAgQ1VTVE9NX1NDSEVNRV9IQU5ETEVS
IGZsYWcgc2hvdWxkIGRlcGVuZCBvbiBSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA4MQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IDA4YWFhY2UuLjJhMjE1YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC0zMyw2ICszMyw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKyAgICAKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9l
ZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFu
YWdlci5jcHAKQEAgLTEyMSw2ICsxMjMsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9l
ZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9E
b3dubG9hZHMvc291cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Y3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYjZiMDNmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tF
aW5hU2hhcmVkU3RyaW5nOjpXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgV0tFaW5hU2hhcmVkU3Ry
aW5nJiBvdGhlcikKKyAgICA6IG1fc3RyaW5nKGVpbmFfc3RyaW5nc2hhcmVfcmVmKG90aGVyLm1f
c3RyaW5nKSkKK3sKK30KKworV0tFaW5hU2hhcmVkU3RyaW5nOjpXS0VpbmFTaGFyZWRTdHJpbmco
Y29uc3QgY2hhciogc3RyKQorICAgIDogbV9zdHJpbmcoZWluYV9zdHJpbmdzaGFyZV9hZGQoc3Ry
KSkKK3sKKyAgICBBU1NFUlQobV9zdHJpbmcpOworfQorCitXS0VpbmFTaGFyZWRTdHJpbmc6On5X
S0VpbmFTaGFyZWRTdHJpbmcoKQoreworICAgIGlmIChtX3N0cmluZykKKyAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwobV9zdHJpbmcpOworfQorCitXS0VpbmFTaGFyZWRTdHJpbmcmIFdLRWlu
YVNoYXJlZFN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgb3RoZXIp
Cit7CisgICAgaWYgKHRoaXMgIT0gJm90aGVyKSB7CisgICAgICAgIGlmIChtX3N0cmluZykKKyAg
ICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKG1fc3RyaW5nKTsKKyAgICAgICAgbV9zdHJp
bmcgPSBlaW5hX3N0cmluZ3NoYXJlX3JlZihvdGhlci5tX3N0cmluZyk7CisgICAgfQorICAgIHJl
dHVybiAqdGhpczsKK30KKworV0tFaW5hU2hhcmVkU3RyaW5nJiBXS0VpbmFTaGFyZWRTdHJpbmc6
Om9wZXJhdG9yPShjb25zdCBjaGFyKiBzdHIpCit7CisgICAgQVNTRVJUKHN0cik7CisKKyAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJm1fc3RyaW5nLCBzdHIpOworICAgIHJldHVybiAqdGhp
czsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9X
S0VpbmFTaGFyZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2Vm
bC9XS0VpbmFTaGFyZWRTdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40ZTVhY2MxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV0tFaW5hU2hhcmVkU3RyaW5nX2gKKyNkZWZpbmUgV0tFaW5h
U2hhcmVkU3RyaW5nX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXS19FWFBPUlQgV0tF
aW5hU2hhcmVkU3RyaW5nIHsKK3B1YmxpYzoKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoKSA6IG1f
c3RyaW5nKDApIHsgfQorICAgIFdLRWluYVNoYXJlZFN0cmluZyhjb25zdCBXS0VpbmFTaGFyZWRT
dHJpbmcmIG90aGVyKTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgY2hhciogc3RyKTsK
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBXS1JlZlR5cGU+CisgICAgV0tFaW5hU2hhcmVkU3Ry
aW5nKFdLQWRvcHRUYWcsIFdLUmVmVHlwZSBzdHJSZWYpCisgICAgICAgIDogbV9zdHJpbmcoMCkK
KyAgICB7CisgICAgICAgIGlmIChzdHJSZWYpIHsKKyAgICAgICAgICAgIG1fc3RyaW5nID0gZWlu
YV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHN0clJlZiktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgQVNTRVJUKG1fc3RyaW5nKTsKKyAgICAgICAgICAgIFdLUmVsZWFzZShz
dHJSZWYpOyAvLyBIYXZlIHN0b3JlZCBhIGNvcHkgaW50byBlaW5hX3N0cmluZ3NoYXJlLCBkbyBu
b3QgbmVlZCBhZG9wdGVkIHN0clJlZi4KKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBXS1JlZlR5cGU+CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nKFdLUmVmVHlwZSBz
dHJSZWYpCisgICAgICAgIDogbV9zdHJpbmcoMCkKKyAgICB7CisgICAgICAgIGlmIChzdHJSZWYp
IHsKKyAgICAgICAgICAgIG1fc3RyaW5nID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHN0
clJlZiktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fc3Ry
aW5nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIH5XS0VpbmFTaGFyZWRTdHJpbmcoKTsKKwor
ICAgIFdLRWluYVNoYXJlZFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFdLRWluYVNoYXJlZFN0cmlu
ZyYgb3RoZXIpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIq
IHN0cik7CisKKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLRWluYVNoYXJlZFN0
cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1fc3RyaW5nID09IG90aGVyLm1fc3Ry
aW5nOyB9CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS0VpbmFTaGFyZWRTdHJp
bmcmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgaW5s
aW5lIG9wZXJhdG9yIGNvbnN0IGNoYXIqICgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisK
KyAgICBpbmxpbmUgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9zdHJpbmc7IH0KKwor
ICAgIGlubGluZSBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcgPyBzdGF0
aWNfY2FzdDxzaXplX3Q+KGVpbmFfc3RyaW5nc2hhcmVfc3RybGVuKG1fc3RyaW5nKSkgOiAwOyB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKwordXNpbmcgV2ViS2l0OjpXS0VpbmFTaGFyZWRTdHJpbmc7CisKKyNlbmRp
ZiAvLyBXS0VpbmFTaGFyZWRTdHJpbmdfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156912</attachid>
            <date>2012-08-07 04:41:38 -0700</date>
            <delta_ts>2012-08-08 06:27:04 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug93229_v3</filename>
            <type>text/plain</type>
            <size>9443</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDI1ZGZlNGQ0MjM1Mjg1YjJkZjdkMTU2Mzc5M2UxMTNmZTI3Yzk0MTEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEF1ZyA3IDExOjIwOjMwIDIwMTIgKzAzMDAKCiAgICBidWc5MzIyOQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA2ZDQ5OTc2Li44MjBhYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAKIDIwMTItMDgt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAK
KyAgICAgICAgW0VGTF0gRUZMIFdlYmtpdCBuZWVkcyBhIGNsYXNzIHdyYXBwaW5nIGVpbmEgc3Ry
aW5nc2hhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSBuZXcgYXV4aWxpYXJ5IGNsYXNzIHdyYXBwaW5nIEVpbmEgU3RyaW5nc2hhcmUgYW5k
IHByb3ZpZGluZworICAgICAgICBtb3JlIGNvbnZlbmllbnQgQysrIGludGVyZmFjZSBmb3IgdXNp
bmcgaXQuIAorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
Om1fc3RyaW5nKToKKyAgICAgICAgKFdLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZyk6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisKKzIwMTItMDgtMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hh
aWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKICAgICAgICAgW0VGTF1bV0syXSBBZGQgYmFjayBm
b3J3YXJkIGxpc3QgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjM0NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDcxNWUxMTcuLmMw
MzAxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zMyw2ICszMyw4IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKyAgICAK
KyAgICBVSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmNwcAogCiAgICAg
VUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEyMyw2ICsxMjUsNyBAQCBMSVNU
KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkZWQyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFy
ZWRTdHJpbmcuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworV0tFaW5hU2hhcmVkU3RyaW5nOjpXS0VpbmFTaGFyZWRTdHJp
bmcoY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcikKKyAgICA6IG1fc3RyaW5nKGVpbmFf
c3RyaW5nc2hhcmVfcmVmKG90aGVyLm1fc3RyaW5nKSkKK3sKK30KKworV0tFaW5hU2hhcmVkU3Ry
aW5nOjpXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgY2hhciogc3RyKQorICAgIDogbV9zdHJpbmco
ZWluYV9zdHJpbmdzaGFyZV9hZGQoc3RyKSkKK3sKK30KKworV0tFaW5hU2hhcmVkU3RyaW5nOjp+
V0tFaW5hU2hhcmVkU3RyaW5nKCkKK3sKKyAgICBpZiAobV9zdHJpbmcpCisgICAgICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKG1fc3RyaW5nKTsKK30KKworV0tFaW5hU2hhcmVkU3RyaW5nJiBXS0Vp
bmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG90aGVy
KQoreworICAgIGlmICh0aGlzICE9ICZvdGhlcikgeworICAgICAgICBpZiAobV9zdHJpbmcpCisg
ICAgICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChtX3N0cmluZyk7CisgICAgICAgIG1fc3Ry
aW5nID0gZWluYV9zdHJpbmdzaGFyZV9yZWYob3RoZXIubV9zdHJpbmcpOworICAgIH0KKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZyYgV0tFaW5hU2hhcmVkU3RyaW5n
OjpvcGVyYXRvcj0oY29uc3QgY2hhciogc3RyKQoreworICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZSgmbV9zdHJpbmcsIHN0cik7CisgICAgcmV0dXJuICp0aGlzOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmlu
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MTlhZWMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hh
cmVkU3RyaW5nLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS0VpbmFTaGFyZWRTdHJpbmdfaAorI2RlZmluZSBXS0VpbmFTaGFyZWRTdHJpbmdfaAorCisj
aW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdLX0VYUE9SVCBXS0VpbmFTaGFyZWRTdHJpbmcgewor
cHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgV0tFaW5hU2hhcmVkU3RyaW5nKCkgOiBtX3N0cmlu
ZygwKSB7IH0KKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5n
JiBvdGhlcik7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nKGNvbnN0IGNoYXIqIHN0cik7CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgV0tSZWZUeXBlPgorICAgIEFMV0FZU19JTkxJTkUgV0tFaW5h
U2hhcmVkU3RyaW5nKFdLQWRvcHRUYWcsIFdLUmVmVHlwZSBzdHJSZWYpCisgICAgICAgIDogbV9z
dHJpbmcoMCkKKyAgICB7CisgICAgICAgIGlmIChzdHJSZWYpIHsKKyAgICAgICAgICAgIG1fc3Ry
aW5nID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHN0clJlZiktPnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RyaW5nKTsKKyAgICAgICAgICAgIFdL
UmVsZWFzZShzdHJSZWYpOyAvLyBIYXZlIHN0b3JlZCBhIGNvcHkgaW50byBlaW5hX3N0cmluZ3No
YXJlLCBkbyBub3QgbmVlZCBhZG9wdGVkIHN0clJlZi4KKyAgICAgICAgfQorICAgIH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBXS1JlZlR5cGU+CisgICAgQUxXQVlTX0lOTElORSBXS0VpbmFT
aGFyZWRTdHJpbmcoV0tSZWZUeXBlIHN0clJlZikKKyAgICAgICAgOiBtX3N0cmluZygwKQorICAg
IHsKKyAgICAgICAgaWYgKHN0clJlZikgeworICAgICAgICAgICAgbV9zdHJpbmcgPSBlaW5hX3N0
cmluZ3NoYXJlX2FkZCh0b0ltcGwoc3RyUmVmKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9zdHJpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAgfldL
RWluYVNoYXJlZFN0cmluZygpOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nJiBvcGVyYXRvcj0o
Y29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcik7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5n
JiBvcGVyYXRvcj0oY29uc3QgY2hhciogc3RyKTsKKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IHRoaXMtPm1fc3RyaW5nID09IG90aGVyLm1fc3RyaW5nOyB9CisgICAgQUxXQVlTX0lOTElORSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIEFMV0FZU19JTkxJTkUgb3BlcmF0b3Ig
Y29uc3QgY2hhciogKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKworICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9zdHJpbmc7IH0KKworICAgIEFM
V0FZU19JTkxJTkUgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nID8gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihlaW5hX3N0cmluZ3NoYXJlX3N0cmxlbihtX3N0cmluZykpIDogMDsg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fc3RyaW5nOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKK3VzaW5nIFdlYktpdDo6V0tFaW5hU2hhcmVkU3RyaW5nOworCisjZW5k
aWYgLy8gV0tFaW5hU2hhcmVkU3RyaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcApp
bmRleCAzMDRhZGI1Li5jMTM2MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNp
bmNsdWRlICJXS1JldGFpblB0ci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V0tVUkwuaCIKQEAgLTM1LDM2ICszNiw2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LWNsYXNzIFdLRWluYVNoYXJlZFN0cmluZyB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFdLUmVmVHlwZT4KLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcoV0tBZG9wdFRhZywgV0tSZWZU
eXBlIHN0clJlZikKLSAgICAgICAgOiBtX3N0cmluZygwKQotICAgIHsKLSAgICAgICAgaWYgKHN0
clJlZikgewotICAgICAgICAgICAgbV9zdHJpbmcgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh0b0lt
cGwoc3RyUmVmKS0+c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBBU1NFUlQo
bV9zdHJpbmcpOwotICAgICAgICAgICAgV0tSZWxlYXNlKHN0clJlZik7IC8vIEhhdmUgc3RvcmVk
IGEgY29weSBpbnRvIGVpbmFfc3RyaW5nc2hhcmUsIGRvIG5vdCBuZWVkIGFkb3B0ZWQgc3RyUmVm
LgotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFdLUmVmVHlwZT4K
LSAgICBXS0VpbmFTaGFyZWRTdHJpbmcoV0tSZWZUeXBlIHN0clJlZikKLSAgICAgICAgOiBtX3N0
cmluZygwKQotICAgIHsKLSAgICAgICAgaWYgKHN0clJlZikgewotICAgICAgICAgICAgbV9zdHJp
bmcgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh0b0ltcGwoc3RyUmVmKS0+c3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9zdHJpbmcpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgfldLRWluYVNoYXJlZFN0cmluZygpIHsgZWluYV9zdHJpbmdzaGFyZV9kZWwobV9z
dHJpbmcpOyB9Ci0gICAgaW5saW5lIG9wZXJhdG9yIGNvbnN0IGNoYXIqICgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogbV9zdHJpbmc7Ci19
OwotCiAvKioKICAqIFxzdHJ1Y3QgIF9Fd2tfQmFja19Gb3J3YXJkX0xpc3QKICAqIEBicmllZiAg
IENvbnRhaW5zIHRoZSBCYWNrIEZvcndhcmQgTGlzdCBkYXRhLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157201</attachid>
            <date>2012-08-08 06:27:04 -0700</date>
            <delta_ts>2012-08-08 06:45:49 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug93229_v4</filename>
            <type>text/plain</type>
            <size>10045</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDNkYjQ2MjBhODE4ZmUxZjIxNjdhNmM1YjQ5ZDQzOGE1MTgyYTA1N2EKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEF1ZyA3IDExOjIwOjMwIDIwMTIgKzAzMDAKCiAgICBidWc5MzIyOQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlOThjNjEzLi5kMzAwYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF0gRUZMIFdlYmtpdCBuZWVkcyBhIGNsYXNzIHdyYXBwaW5nIGVpbmEgc3Ry
aW5nc2hhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSBuZXcgYXV4aWxpYXJ5IGNsYXNzIHdyYXBwaW5nIEVpbmEgU3RyaW5nc2hhcmUgYW5k
IHByb3ZpZGluZworICAgICAgICBtb3JlIGNvbnZlbmllbnQgQysrIGludGVyZmFjZSBmb3IgdXNp
bmcgaXQuIAorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
Om1fc3RyaW5nKToKKyAgICAgICAgKFdLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZyk6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMDggIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNz
aUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCB0aGUgZml4ZWQgbGF5b3V0IHNl
dHRpbmcgYmVmb3JlIGNyZWF0aW5nIHRoZSBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmlu
ZGV4IGIyYjUxYzAuLmQ3N2MxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zMyw2
ICszMyw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9zb3VwL1dl
YkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAKKyAgICAKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3Ry
aW5nLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEyNCw2
ICsxMjYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgor
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
c291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFy
ZWRTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWlu
YVNoYXJlZFN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0
YjMyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3Ry
aW5nLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgV0tSZWZUeXBlPgorQUxXQVlTX0lOTElORSBjb25zdCBjaGFyKiBmcm9tUmVmVHlw
ZShXS1JlZlR5cGUgc3RyUmVmLCBib29sIGFkb3B0ID0gZmFsc2UpCit7CisgICAgY29uc3QgY2hh
ciogcmVzID0gMDsKKyAgICBpZiAoc3RyUmVmKSB7CisgICAgICAgIHJlcyA9IGVpbmFfc3RyaW5n
c2hhcmVfYWRkKHRvSW1wbChzdHJSZWYpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJlcyk7CisgICAgICAgIGlmIChhZG9wdCkKKyAgICAgICAgICAgIFdLUmVsZWFz
ZShzdHJSZWYpOyAvLyBIYXZlIHN0b3JlZCBhIGNvcHkgaW50byBlaW5hX3N0cmluZ3NoYXJlLCBk
byBub3QgbmVlZCBhZG9wdGVkIHN0clJlZi4KKyAgICB9CisKKyAgICByZXR1cm4gcmVzOworfQor
CitXS0VpbmFTaGFyZWRTdHJpbmc6OldLRWluYVNoYXJlZFN0cmluZyhjb25zdCBXS0VpbmFTaGFy
ZWRTdHJpbmcmIG90aGVyKQorICAgIDogbV9zdHJpbmcoZWluYV9zdHJpbmdzaGFyZV9yZWYob3Ro
ZXIubV9zdHJpbmcpKQoreworfQorCitXS0VpbmFTaGFyZWRTdHJpbmc6OldLRWluYVNoYXJlZFN0
cmluZyhjb25zdCBjaGFyKiBzdHIpCisgICAgOiBtX3N0cmluZyhlaW5hX3N0cmluZ3NoYXJlX2Fk
ZChzdHIpKQoreworfQorCitXS0VpbmFTaGFyZWRTdHJpbmc6OldLRWluYVNoYXJlZFN0cmluZyhX
S0Fkb3B0VGFnIGFkb3B0VGFnLCBXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCisgICAgOiBtX3N0cmlu
Zyhmcm9tUmVmVHlwZShzdHJpbmdSZWYsIHRydWUgLyphZG9wdCovKSkKK3sKKyAgICBBU1NFUlQo
YWRvcHRUYWcgPT0gQWRvcHRXSyk7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6V0tFaW5hU2hh
cmVkU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKKyAgICA6IG1fc3RyaW5nKGZyb21SZWZU
eXBlKHN0cmluZ1JlZikpCit7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6V0tFaW5hU2hhcmVk
U3RyaW5nKFdLQWRvcHRUYWcgYWRvcHRUYWcsIFdLVVJMUmVmIHVybFJlZikKKyAgICA6IG1fc3Ry
aW5nKGZyb21SZWZUeXBlKHVybFJlZiwgdHJ1ZSAvKmFkb3B0Ki8pKQoreworICAgIEFTU0VSVChh
ZG9wdFRhZyA9PSBBZG9wdFdLKTsKK30KKworV0tFaW5hU2hhcmVkU3RyaW5nOjpXS0VpbmFTaGFy
ZWRTdHJpbmcoV0tVUkxSZWYgdXJsUmVmKQorICAgIDogbV9zdHJpbmcoZnJvbVJlZlR5cGUodXJs
UmVmKSkKK3sKK30KKworCitXS0VpbmFTaGFyZWRTdHJpbmc6On5XS0VpbmFTaGFyZWRTdHJpbmco
KQoreworICAgIGlmIChtX3N0cmluZykKKyAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwobV9z
dHJpbmcpOworfQorCitXS0VpbmFTaGFyZWRTdHJpbmcmIFdLRWluYVNoYXJlZFN0cmluZzo6b3Bl
cmF0b3I9KGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgb3RoZXIpCit7CisgICAgaWYgKHRoaXMg
IT0gJm90aGVyKSB7CisgICAgICAgIGlmIChtX3N0cmluZykKKyAgICAgICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKG1fc3RyaW5nKTsKKyAgICAgICAgbV9zdHJpbmcgPSBlaW5hX3N0cmluZ3No
YXJlX3JlZihvdGhlci5tX3N0cmluZyk7CisgICAgfQorICAgIHJldHVybiAqdGhpczsKK30KKwor
V0tFaW5hU2hhcmVkU3RyaW5nJiBXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBj
aGFyKiBzdHIpCit7CisgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZtX3N0cmluZywgc3Ry
KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODNmNjYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaApAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRWluYVNoYXJlZFN0cmlu
Z19oCisjZGVmaW5lIFdLRWluYVNoYXJlZFN0cmluZ19oCisKKyNpbmNsdWRlIDxFaW5hLmg+Cisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXS19FWFBPUlQgV0tFaW5hU2hhcmVk
U3RyaW5nIHsKK3B1YmxpYzoKKyAgICBBTFdBWVNfSU5MSU5FIFdLRWluYVNoYXJlZFN0cmluZygp
IDogbV9zdHJpbmcoMCkgeyB9CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nKGNvbnN0IFdLRWluYVNo
YXJlZFN0cmluZyYgb3RoZXIpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyhjb25zdCBjaGFyKiBz
dHIpOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nKFdLQWRvcHRUYWcsIFdLU3RyaW5nUmVmKTsK
KyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoV0tTdHJpbmdSZWYpOworCisgICAgV0tFaW5hU2hhcmVk
U3RyaW5nKFdLQWRvcHRUYWcsIFdLVVJMUmVmKTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoV0tV
UkxSZWYpOworCisgICAgfldLRWluYVNoYXJlZFN0cmluZygpOworCisgICAgV0tFaW5hU2hhcmVk
U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcik7CisgICAg
V0tFaW5hU2hhcmVkU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgY2hhciogc3RyKTsKKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1fc3RyaW5nID09IG90aGVyLm1fc3RyaW5nOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yIT0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5n
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgb3BlcmF0b3IgY29uc3QgY2hhciogKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9z
dHJpbmc7IH0KKworICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nID8gc3RhdGljX2Nhc3Q8c2l6ZV90PihlaW5hX3N0cmluZ3NoYXJlX3N0cmxl
bihtX3N0cmluZykpIDogMDsgfQorCitwcml2YXRlOgorICAgIGNvbnN0IGNoYXIqIG1fc3RyaW5n
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK3VzaW5nIFdlYktpdDo6V0tFaW5hU2hh
cmVkU3RyaW5nOworCisjZW5kaWYgLy8gV0tFaW5hU2hhcmVkU3RyaW5nX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9p
dGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdF9pdGVtLmNwcAppbmRleCAzMDRhZGI1Li5hODU4NmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2Fy
ZF9saXN0X2l0ZW0uY3BwCkBAIC0yOCw0MyArMjgsMTAgQEAKIAogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLQmFja0ZvcndhcmRMaXN0SXRlbS5oIgotI2luY2x1ZGUgIldLUmV0
YWluUHRyLmgiCi0jaW5jbHVkZSAiV0tTdHJpbmcuaCIKLSNpbmNsdWRlICJXS1VSTC5oIgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotY2xhc3MgV0tFaW5hU2hhcmVkU3RyaW5n
IHsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgV0tSZWZUeXBlPgotICAgIFdLRWlu
YVNoYXJlZFN0cmluZyhXS0Fkb3B0VGFnLCBXS1JlZlR5cGUgc3RyUmVmKQotICAgICAgICA6IG1f
c3RyaW5nKDApCi0gICAgewotICAgICAgICBpZiAoc3RyUmVmKSB7Ci0gICAgICAgICAgICBtX3N0
cmluZyA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHRvSW1wbChzdHJSZWYpLT5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cmluZyk7Ci0gICAgICAgICAgICBX
S1JlbGVhc2Uoc3RyUmVmKTsgLy8gSGF2ZSBzdG9yZWQgYSBjb3B5IGludG8gZWluYV9zdHJpbmdz
aGFyZSwgZG8gbm90IG5lZWQgYWRvcHRlZCBzdHJSZWYuCi0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgV0tSZWZUeXBlPgotICAgIFdLRWluYVNoYXJlZFN0cmluZyhX
S1JlZlR5cGUgc3RyUmVmKQotICAgICAgICA6IG1fc3RyaW5nKDApCi0gICAgewotICAgICAgICBp
ZiAoc3RyUmVmKSB7Ci0gICAgICAgICAgICBtX3N0cmluZyA9IGVpbmFfc3RyaW5nc2hhcmVfYWRk
KHRvSW1wbChzdHJSZWYpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIEFT
U0VSVChtX3N0cmluZyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB+V0tFaW5hU2hhcmVkU3Ry
aW5nKCkgeyBlaW5hX3N0cmluZ3NoYXJlX2RlbChtX3N0cmluZyk7IH0KLSAgICBpbmxpbmUgb3Bl
cmF0b3IgY29uc3QgY2hhciogKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQotcHJpdmF0
ZToKLSAgICBjb25zdCBjaGFyKiBtX3N0cmluZzsKLX07Ci0KIC8qKgogICogXHN0cnVjdCAgX0V3
a19CYWNrX0ZvcndhcmRfTGlzdAogICogQGJyaWVmICAgQ29udGFpbnMgdGhlIEJhY2sgRm9yd2Fy
ZCBMaXN0IGRhdGEuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157205</attachid>
            <date>2012-08-08 06:45:49 -0700</date>
            <delta_ts>2012-08-08 07:41:10 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>bug93229_v5</filename>
            <type>text/plain</type>
            <size>10038</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDBmOTgxNjliNmNlYTU4ZmMxMTFmM2UyMzVhYTQyMjFlMzIxZDlkMTMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEF1ZyA3IDExOjIwOjMwIDIwMTIgKzAzMDAKCiAgICBidWc5MzIyOQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlOThjNjEzLi5kMzAwYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDgt
MDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF0gRUZMIFdlYmtpdCBuZWVkcyBhIGNsYXNzIHdyYXBwaW5nIGVpbmEgc3Ry
aW5nc2hhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkzMjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgYSBuZXcgYXV4aWxpYXJ5IGNsYXNzIHdyYXBwaW5nIEVpbmEgU3RyaW5nc2hhcmUgYW5k
IHByb3ZpZGluZworICAgICAgICBtb3JlIGNvbnZlbmllbnQgQysrIGludGVyZmFjZSBmb3IgdXNp
bmcgaXQuIAorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5jcHA6IEFkZGVkLgorICAgICAgICAo
Om1fc3RyaW5nKToKKyAgICAgICAgKFdLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0
cmluZyk6CisgICAgICAgIChXS0VpbmFTaGFyZWRTdHJpbmc6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMDggIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNz
aUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIFNldCB0aGUgZml4ZWQgbGF5b3V0IHNl
dHRpbmcgYmVmb3JlIGNyZWF0aW5nIHRoZSBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmlu
ZGV4IGIyYjUxYzAuLmQ3N2MxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0zMyw2
ICszMyw4IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9zb3VwL1dl
YkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5jcHAKKyAgICAKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9lZmwvV0tFaW5hU2hhcmVkU3Ry
aW5nLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5jcHAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAKQEAgLTEyNCw2
ICsxMjYsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkvQy9lZmwiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgor
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcC9lZmwiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mv
c291cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMvc291cCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFy
ZWRTdHJpbmcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWlu
YVNoYXJlZFN0cmluZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI2
ODEyMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3Ry
aW5nLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgV0tSZWZUeXBlPgorQUxXQVlTX0lOTElORSBjb25zdCBjaGFyKiBmcm9tUmVmVHlw
ZShXS1JlZlR5cGUgc3RyUmVmLCBib29sIGFkb3B0ID0gZmFsc2UpCit7CisgICAgY29uc3QgY2hh
ciogcmVzID0gMDsKKyAgICBpZiAoc3RyUmVmKSB7CisgICAgICAgIHJlcyA9IGVpbmFfc3RyaW5n
c2hhcmVfYWRkKHRvSW1wbChzdHJSZWYpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgQVNTRVJUKHJlcyk7CisgICAgICAgIGlmIChhZG9wdCkKKyAgICAgICAgICAgIFdLUmVsZWFz
ZShzdHJSZWYpOworICAgIH0KKworICAgIHJldHVybiByZXM7Cit9CisKK1dLRWluYVNoYXJlZFN0
cmluZzo6V0tFaW5hU2hhcmVkU3RyaW5nKGNvbnN0IFdLRWluYVNoYXJlZFN0cmluZyYgb3RoZXIp
CisgICAgOiBtX3N0cmluZyhlaW5hX3N0cmluZ3NoYXJlX3JlZihvdGhlci5tX3N0cmluZykpCit7
Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6V0tFaW5hU2hhcmVkU3RyaW5nKGNvbnN0IGNoYXIq
IHN0cikKKyAgICA6IG1fc3RyaW5nKGVpbmFfc3RyaW5nc2hhcmVfYWRkKHN0cikpCit7Cit9CisK
K1dLRWluYVNoYXJlZFN0cmluZzo6V0tFaW5hU2hhcmVkU3RyaW5nKFdLQWRvcHRUYWcgYWRvcHRU
YWcsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKKyAgICA6IG1fc3RyaW5nKGZyb21SZWZUeXBlKHN0
cmluZ1JlZiwgLyphZG9wdCovIHRydWUpKQoreworICAgIEFTU0VSVChhZG9wdFRhZyA9PSBBZG9w
dFdLKTsgLy8gR3VhcmQgZm9yIGZ1dHVyZSBlbnVtIGNoYW5nZXMuCit9CisKK1dLRWluYVNoYXJl
ZFN0cmluZzo6V0tFaW5hU2hhcmVkU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKKyAgICA6
IG1fc3RyaW5nKGZyb21SZWZUeXBlKHN0cmluZ1JlZikpCit7Cit9CisKK1dLRWluYVNoYXJlZFN0
cmluZzo6V0tFaW5hU2hhcmVkU3RyaW5nKFdLQWRvcHRUYWcgYWRvcHRUYWcsIFdLVVJMUmVmIHVy
bFJlZikKKyAgICA6IG1fc3RyaW5nKGZyb21SZWZUeXBlKHVybFJlZiwgLyphZG9wdCovIHRydWUp
KQoreworICAgIEFTU0VSVChhZG9wdFRhZyA9PSBBZG9wdFdLKTsgLy8gR3VhcmQgZm9yIGZ1dHVy
ZSBlbnVtIGNoYW5nZXMuCit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6V0tFaW5hU2hhcmVkU3Ry
aW5nKFdLVVJMUmVmIHVybFJlZikKKyAgICA6IG1fc3RyaW5nKGZyb21SZWZUeXBlKHVybFJlZikp
Cit7Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZzo6fldLRWluYVNoYXJlZFN0cmluZygpCit7Cisg
ICAgaWYgKG1fc3RyaW5nKQorICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChtX3N0cmluZyk7
Cit9CisKK1dLRWluYVNoYXJlZFN0cmluZyYgV0tFaW5hU2hhcmVkU3RyaW5nOjpvcGVyYXRvcj0o
Y29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcikKK3sKKyAgICBpZiAodGhpcyAhPSAmb3Ro
ZXIpIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nKQorICAgICAgICAgICAgZWluYV9zdHJpbmdzaGFy
ZV9kZWwobV9zdHJpbmcpOworICAgICAgICBtX3N0cmluZyA9IGVpbmFfc3RyaW5nc2hhcmVfcmVm
KG90aGVyLm1fc3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCitXS0VpbmFT
aGFyZWRTdHJpbmcmIFdLRWluYVNoYXJlZFN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IGNoYXIqIHN0
cikKK3sKKyAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJm1fc3RyaW5nLCBzdHIpOworICAg
IHJldHVybiAqdGhpczsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvY3BwL2VmbC9XS0VpbmFTaGFyZWRTdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44M2Y2NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvZWZsL1dLRWluYVNoYXJlZFN0cmluZy5oCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tFaW5hU2hhcmVkU3RyaW5nX2gKKyNk
ZWZpbmUgV0tFaW5hU2hhcmVkU3RyaW5nX2gKKworI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdLX0VYUE9SVCBXS0VpbmFTaGFyZWRTdHJpbmcg
eworcHVibGljOgorICAgIEFMV0FZU19JTkxJTkUgV0tFaW5hU2hhcmVkU3RyaW5nKCkgOiBtX3N0
cmluZygwKSB7IH0KKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoY29uc3QgV0tFaW5hU2hhcmVkU3Ry
aW5nJiBvdGhlcik7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nKGNvbnN0IGNoYXIqIHN0cik7CisK
KyAgICBXS0VpbmFTaGFyZWRTdHJpbmcoV0tBZG9wdFRhZywgV0tTdHJpbmdSZWYpOworICAgIFdL
RWluYVNoYXJlZFN0cmluZyhXS1N0cmluZ1JlZik7CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmco
V0tBZG9wdFRhZywgV0tVUkxSZWYpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyhXS1VSTFJlZik7
CisKKyAgICB+V0tFaW5hU2hhcmVkU3RyaW5nKCk7CisKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcm
IG9wZXJhdG9yPShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG90aGVyKTsKKyAgICBXS0VpbmFT
aGFyZWRTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBjaGFyKiBzdHIpOworCisgICAgQUxXQVlTX0lO
TElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tFaW5hU2hhcmVkU3RyaW5nJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gdGhpcy0+bV9zdHJpbmcgPT0gb3RoZXIubV9zdHJpbmc7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS0VpbmFTaGFyZWRTdHJpbmcmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgQUxXQVlTX0lOTElO
RSBvcGVyYXRvciBjb25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorCisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cmluZzsg
fQorCisgICAgQUxXQVlTX0lOTElORSBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJpbmcgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGVpbmFfc3RyaW5nc2hhcmVfc3RybGVuKG1fc3Ry
aW5nKSkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgY2hhciogbV9zdHJpbmc7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwordXNpbmcgV2ViS2l0OjpXS0VpbmFTaGFyZWRTdHJp
bmc7CisKKyNlbmRpZiAvLyBXS0VpbmFTaGFyZWRTdHJpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0
X2l0ZW0uY3BwCmluZGV4IDMwNGFkYjUuLmE4NTg2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKQEAgLTI4LDQzICsyOCwxMCBAQAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tCYWNrRm9yd2FyZExpc3RJdGVtLmgiCi0jaW5jbHVkZSAiV0tSZXRhaW5QdHIu
aCIKLSNpbmNsdWRlICJXS1N0cmluZy5oIgotI2luY2x1ZGUgIldLVVJMLmgiCi0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1jbGFzcyBXS0VpbmFTaGFyZWRTdHJpbmcgewotcHVi
bGljOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBXS1JlZlR5cGU+Ci0gICAgV0tFaW5hU2hhcmVk
U3RyaW5nKFdLQWRvcHRUYWcsIFdLUmVmVHlwZSBzdHJSZWYpCi0gICAgICAgIDogbV9zdHJpbmco
MCkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJSZWYpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0g
ZWluYV9zdHJpbmdzaGFyZV9hZGQodG9JbXBsKHN0clJlZiktPnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICAgICAgQVNTRVJUKG1fc3RyaW5nKTsKLSAgICAgICAgICAgIFdLUmVsZWFz
ZShzdHJSZWYpOyAvLyBIYXZlIHN0b3JlZCBhIGNvcHkgaW50byBlaW5hX3N0cmluZ3NoYXJlLCBk
byBub3QgbmVlZCBhZG9wdGVkIHN0clJlZi4KLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBXS1JlZlR5cGU+Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nKFdLUmVmVHlw
ZSBzdHJSZWYpCi0gICAgICAgIDogbV9zdHJpbmcoMCkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJS
ZWYpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodG9JbXBs
KHN0clJlZiktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgQVNTRVJUKG1f
c3RyaW5nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIH5XS0VpbmFTaGFyZWRTdHJpbmcoKSB7
IGVpbmFfc3RyaW5nc2hhcmVfZGVsKG1fc3RyaW5nKTsgfQotICAgIGlubGluZSBvcGVyYXRvciBj
b25zdCBjaGFyKiAoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotCi1wcml2YXRlOgotICAg
IGNvbnN0IGNoYXIqIG1fc3RyaW5nOwotfTsKLQogLyoqCiAgKiBcc3RydWN0ICBfRXdrX0JhY2tf
Rm9yd2FyZF9MaXN0CiAgKiBAYnJpZWYgICBDb250YWlucyB0aGUgQmFjayBGb3J3YXJkIExpc3Qg
ZGF0YS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>