<?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>40655</bug_id>
          
          <creation_ts>2010-06-15 23:04:40 -0700</creation_ts>
          <short_desc>Database access in worker threads results in WebKit SPI notifications being posted from worker threads</short_desc>
          <delta_ts>2010-10-20 17:47:02 -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 Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</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>40654</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>dimich</cc>
    
    <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>238678</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-06-15 23:04:40 -0700</bug_when>
    <thetext>Database access from a worker thread results in WebDatabaseTrackerClient being called on a background thread.  dispatchDidModifyOrigin / dispatchDidModifyDatabase both post notifications using NSNotification.  This means that with workers these notifications are now being posted from background threads, rather than only from the main thread as in the past.  I don’t think it’s safe to post these notifications from a background thread since existing applications may be observing them and not expect their code to be invoked in background threads.  For sake of compatibility I’d think these need to be proxied over to the main thread to be posted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238681</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-15 23:18:16 -0700</bug_when>
    <thetext>I definitely agree - an embedder application only talks to WebKit from main thread, and thus should only receive delegate calls on main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238701</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-16 00:32:27 -0700</bug_when>
    <thetext>+2 in agreement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239101</commentid>
    <comment_count>3</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-16 14:40:16 -0700</bug_when>
    <thetext>I think this should be done in the client, not in DatabaseTracker: future clients might not care what thread they&apos;re called on or might actually prefer to be called on the worker thread.

Unfortunately, I&apos;m not very familiar with the code specific to the win and mac ports, and I have zero experience with Objective C, so I can&apos;t fix the two clients, unless you can point me to some code that does something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239126</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-16 15:44:41 -0700</bug_when>
    <thetext>The client implementation in WebKit can probably just use callOnMainThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241199</commentid>
    <comment_count>5</comment_count>
      <attachid>59356</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-22 02:53:19 -0700</bug_when>
    <thetext>Created attachment 59356
patch

Do we need to worry that the WebDatabaseTrackerClient/WebDatabaseManager might be destroyed before the task runs on the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241430</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-22 13:41:37 -0700</bug_when>
    <thetext>See also: bug 40654.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243357</commentid>
    <comment_count>7</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-26 04:10:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; See also: bug 40654.

I&apos;ll upload a separate patch in that bug to (hopefully) fix that problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248663</commentid>
    <comment_count>8</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-07-08 18:26:03 -0700</bug_when>
    <thetext>Does the patch look OK? Anything I need to add/change? Is this still a problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248708</commentid>
    <comment_count>9</comment_count>
      <attachid>59356</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-07-08 21:08:12 -0700</bug_when>
    <thetext>Comment on attachment 59356
patch

Is it safe to pass String and SecurityOrigin instances between threads like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248722</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-08 22:00:38 -0700</bug_when>
    <thetext>Strings and SecurityOrigin instances need to be copied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248792</commentid>
    <comment_count>11</comment_count>
      <attachid>59356</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-07-09 00:32:06 -0700</bug_when>
    <thetext>Comment on attachment 59356
patch

I wonder how the concept of isMainThread maps to the work being done in WebKit2 with respect to multiple threads. If someone chimes in on that, maybe it can be addressed (but I&apos;m guessing that it may need a more systematic pass later).


&gt; Index: WebKit/mac/Storage/WebDatabaseTrackerClient.mm
&gt; +struct OriginModifiedInfo {

I can&apos;t parse this name (but my attempt was comical).
...
Now that I read lower, I get it. I personally like DidModifyOriginData better. What do you think? (I chose Data instead of Info to avoid an abbreviation per WebKit style while keeping it short.)

&gt; +    OriginModifiedInfo(WebDatabaseTrackerClient* client, SecurityOrigin* origin)
&gt; +        : client(client), origin(origin) { }

Ideally on separate lines.


&gt; +    WebDatabaseTrackerClient* client;

Is WebDatabaseTrackerClient threadsafe? (Not many things in WebKit are.)

&gt; +    SecurityOrigin* origin;

Definitely not threadsafe.

&gt; +};
&gt; +
&gt; +static void dispatchDidModifyOriginOnMainThread(void* context)
&gt; +{
&gt; +    OriginModifiedInfo* info = static_cast&lt;OriginModifiedInfo*&gt;(context);
&gt; +    info-&gt;client-&gt;dispatchDidModifyOrigin(info-&gt;origin);
&gt; +    delete info;
&gt; +}
&gt; +
&gt;  void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
&gt;  {
&gt; -     RetainPtr&lt;WebSecurityOrigin&gt; webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
&gt; +    if (!isMainThread()) {
&gt; +        OriginModifiedInfo* context = new OriginModifiedInfo(this, origin);

Use origin-&gt;threadsafeCopy(); to get something appropriate for another thread (and change the member variable to be a RefPtr).


&gt; +        callOnMainThread(dispatchDidModifyOriginOnMainThread, static_cast&lt;void*&gt;(context));

I would just make &quot;dispatchDidModifyOriginOnMainThread&quot; a static method on the class above and then make the variables private.

Taking it a step further you could just have the class have just one exposed static method: DidModifyOriginData::dispatchToMainThread which does the new and then the callOnMainThread. (It also makes it clear who should do the copies -- the class itself since it is doing the call to the main thread.)

&gt; +        return;
&gt; +    }
&gt; +
&gt; +    RetainPtr&lt;WebSecurityOrigin&gt; webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
&gt;  
&gt;      [[NSNotificationCenter defaultCenter] postNotificationName:WebDatabaseDidModifyOriginNotification 
&gt;                                                          object:webSecurityOrigin.get()];
&gt;  }
&gt;  
&gt; +struct DatabaseModifiedInfo {
&gt; +    DatabaseModifiedInfo(WebDatabaseTrackerClient* client, SecurityOrigin* origin, const String&amp; databaseName)
&gt; +        : client(client), origin(origin), databaseIdentifier(databaseIdentifier) { }

Ideally separate lines.

&gt; +    WebDatabaseTrackerClient* client;
&gt; +    SecurityOrigin* origin;

Same as before.

&gt; +    String databaseIdentifier;

Use databaseIdentifier-&gt;crossThreadString(); (I&apos;m sorry about the name. It doesn&apos;t provide a string that can be used on multiple threads at the same time. It does provide a string to be given to another thread. Maybe otherThreadString would be a better name?)


&gt;  void WebDatabaseTrackerClient::dispatchDidModifyDatabase(SecurityOrigin* origin, const String&amp; databaseIdentifier)
&gt;  {
&gt; +    if (!isMainThread()) {
&gt; +        DatabaseModifiedInfo* context = new DatabaseModifiedInfo(this, origin, databaseIdentifier);

Same comments as before.


&gt; Index: WebKit/win/WebDatabaseManager.cpp


It&apos;s déjà vu all over again. Is there anyway to share code here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248793</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-07-09 00:34:50 -0700</bug_when>
    <thetext>andersca@ From my code review comment:
&quot;I wonder how the concept of isMainThread maps to the work being done in WebKit2 with respect to multiple threads. If someone chimes in on that, maybe it can be addressed (but I&apos;m guessing that it may need a more systematic pass later).&quot;

This code is attempting to call back the embedder on the same thread that the embedder is using it on. It does that by proxying callbacks to the &quot;main thread&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248796</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-07-09 00:37:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=59356) [details]
&gt; patch
&gt; 
&gt; Do we need to worry that the WebDatabaseTrackerClient/WebDatabaseManager might be destroyed before the task runs on the main thread?

Possibly. What are the lifetimes of these objects? How is the lifetime controlled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265249</commentid>
    <comment_count>14</comment_count>
      <attachid>64525</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-16 14:56:21 -0700</bug_when>
    <thetext>Created attachment 64525
patch

WebDatabaseManager and WebDatabaseTrackerClient seem to be initialized as static variables in a function, so i don&apos;t think we need to worry that they&apos;ll be destroyed while a dispatchDidModifyOrigin task is pending on the main thread.

&gt; &gt; Index: WebKit/mac/Storage/WebDatabaseTrackerClient.mm
&gt; &gt; +struct OriginModifiedInfo {
&gt; 
&gt; I can&apos;t parse this name (but my attempt was comical).
&gt; ...
&gt; Now that I read lower, I get it. I personally like DidModifyOriginData better. What do you think? (I chose Data instead of Info to avoid an abbreviation per WebKit style while keeping it short.)

changed.

&gt; &gt; +    OriginModifiedInfo(WebDatabaseTrackerClient* client, SecurityOrigin* origin)
&gt; &gt; +        : client(client), origin(origin) { }
&gt; 
&gt; Ideally on separate lines.

done.

&gt; &gt; +    WebDatabaseTrackerClient* client;
&gt; 
&gt; Is WebDatabaseTrackerClient threadsafe? (Not many things in WebKit are.)

i think it is. it doesn&apos;t have any field, only methods.

&gt; &gt; +    SecurityOrigin* origin;
&gt; 
&gt; Definitely not threadsafe.

fixed.

&gt; &gt; +static void dispatchDidModifyOriginOnMainThread(void* context)
&gt; &gt; +{
&gt; &gt; +    OriginModifiedInfo* info = static_cast&lt;OriginModifiedInfo*&gt;(context);
&gt; &gt; +    info-&gt;client-&gt;dispatchDidModifyOrigin(info-&gt;origin);
&gt; &gt; +    delete info;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt;  void WebDatabaseTrackerClient::dispatchDidModifyOrigin(SecurityOrigin* origin)
&gt; &gt;  {
&gt; &gt; -     RetainPtr&lt;WebSecurityOrigin&gt; webSecurityOrigin(AdoptNS, [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin]);
&gt; &gt; +    if (!isMainThread()) {
&gt; &gt; +        OriginModifiedInfo* context = new OriginModifiedInfo(this, origin);
&gt; 
&gt; Use origin-&gt;threadsafeCopy(); to get something appropriate for another thread (and change the member variable to be a RefPtr).

done.

&gt; &gt; +        callOnMainThread(dispatchDidModifyOriginOnMainThread, static_cast&lt;void*&gt;(context));
&gt; 
&gt; I would just make &quot;dispatchDidModifyOriginOnMainThread&quot; a static method on the class above and then make the variables private.
&gt; 
&gt; Taking it a step further you could just have the class have just one exposed static method: DidModifyOriginData::dispatchToMainThread which does the new and then the callOnMainThread. (It also makes it clear who should do the copies -- the class itself since it is doing the call to the main thread.)

done.

&gt; &gt; +struct DatabaseModifiedInfo {
&gt; &gt; +    DatabaseModifiedInfo(WebDatabaseTrackerClient* client, SecurityOrigin* origin, const String&amp; databaseName)
&gt; &gt; +        : client(client), origin(origin), databaseIdentifier(databaseIdentifier) { }
&gt; 
&gt; Ideally separate lines.

done.

&gt; &gt; +    WebDatabaseTrackerClient* client;
&gt; &gt; +    SecurityOrigin* origin;
&gt; 
&gt; Same as before.

done.

&gt; &gt; +    String databaseIdentifier;
&gt; 
&gt; Use databaseIdentifier-&gt;crossThreadString(); (I&apos;m sorry about the name. It doesn&apos;t provide a string that can be used on multiple threads at the same time. It does provide a string to be given to another thread. Maybe otherThreadString would be a better name?)

looks like this parameter went away.

&gt; &gt;  void WebDatabaseTrackerClient::dispatchDidModifyDatabase(SecurityOrigin* origin, const String&amp; databaseIdentifier)
&gt; &gt;  {
&gt; &gt; +    if (!isMainThread()) {
&gt; &gt; +        DatabaseModifiedInfo* context = new DatabaseModifiedInfo(this, origin, databaseIdentifier);
&gt; 
&gt; Same comments as before.

done.

&gt; &gt; Index: WebKit/win/WebDatabaseManager.cpp
&gt; 
&gt; 
&gt; It&apos;s déjà vu all over again. Is there anyway to share code here?

not sure. the mac implementation uses objective-c and implements only the methods defined in DatabaseTrackerClient.h. the win implementation has a bunch of other methods too, and uses win-specific types. in addition, even if we wanted to share only the DidModifyOriginData class, i&apos;m not sure where we&apos;d put that file: there&apos;s no WebKit/generic (or similar) directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265416</commentid>
    <comment_count>15</comment_count>
      <attachid>64525</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-17 01:15:47 -0700</bug_when>
    <thetext>Comment on attachment 64525
patch

None of the changes suggested for DatabaseModifiedInfo were done (in either file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265708</commentid>
    <comment_count>16</comment_count>
      <attachid>64623</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 12:50:14 -0700</bug_when>
    <thetext>Created attachment 64623
patch

forgot to clean up the old struct in the last patch... sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265738</commentid>
    <comment_count>17</comment_count>
      <attachid>64623</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-17 13:45:16 -0700</bug_when>
    <thetext>Comment on attachment 64623
patch

What guarantees these main-thread calls don&apos;t outlive the WebDatabaseTrackerClient and WebDatabaseManager objects? Are those immortal objects? I see a destructor for WebDatabaseTrackerClient, so there seems to be some code that thinks it can destroy one. It would be bad if it destroyed one that had an outstanding DidModifyOriginData object.

&gt; +        DidModifyOriginData* context = new DidModifyOriginData(client, origin-&gt;threadsafeCopy());
&gt; +        callOnMainThread(&amp;DidModifyOriginData::dispatchDidModifyOriginOnMainThread, context);

Soon we&apos;ll be implementing a rule where you have to call adoptPtr any time you do new. We might want to come up with a new idiom for this that avoids the raw new/delete because we&apos;ll have to come back to all these call sites some day.

review- because of the lifetime issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265750</commentid>
    <comment_count>18</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 13:57:17 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 64623 [details])
&gt; What guarantees these main-thread calls don&apos;t outlive the WebDatabaseTrackerClient and WebDatabaseManager objects? Are those immortal objects? I see a destructor for WebDatabaseTrackerClient, so there seems to be some code that thinks it can destroy one. It would be bad if it destroyed one that had an outstanding DidModifyOriginData object.

&gt; WebDatabaseManager and WebDatabaseTrackerClient seem to be initialized as static variables in a function, so i don&apos;t think we need to worry that they&apos;ll be destroyed while a dispatchDidModifyOrigin task is pending on the main thread.

doesn&apos;t that take care of the problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265754</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-17 13:58:45 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; WebDatabaseManager and WebDatabaseTrackerClient seem to be initialized as static variables in a function, so i don&apos;t think we need to worry that they&apos;ll be destroyed while a dispatchDidModifyOrigin task is pending on the main thread.
&gt; 
&gt; doesn&apos;t that take care of the problem?

Yes. If they’re immortal objects, then I suggest we get rid of their destructors entirely. Don&apos;t define them. Then we&apos;ll get a linker failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265773</commentid>
    <comment_count>20</comment_count>
      <attachid>64633</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 14:39:34 -0700</bug_when>
    <thetext>Created attachment 64633
patch

same patch, removed the destructors. no linker errors on either win or mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265784</commentid>
    <comment_count>21</comment_count>
      <attachid>64633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-17 14:52:20 -0700</bug_when>
    <thetext>Comment on attachment 64633
patch

&gt;  class WebDatabaseTrackerClient : public WebCore::DatabaseTrackerClient {
&gt;  public:
&gt;      static WebDatabaseTrackerClient* sharedWebDatabaseTrackerClient();
&gt; -    
&gt; -    virtual ~WebDatabaseTrackerClient();
&gt; +

&gt; Index: WebKit/win/WebDatabaseManager.h
&gt; ===================================================================
&gt; --- WebKit/win/WebDatabaseManager.h	(revision 65540)
&gt; +++ WebKit/win/WebDatabaseManager.h	(working copy)
&gt; @@ -83,7 +83,6 @@ public:
&gt;  
&gt;  private:
&gt;      WebDatabaseManager();
&gt; -    ~WebDatabaseManager();

By removing the destructor&apos;s declaration, you are making it use the default destructor. If you kept the declaration, but had no definition, then we&apos;d get a link error if someone tries to destroy the object.

You could make the destructor private, but if you leave it out entirely, the compiler will create a default one for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265854</commentid>
    <comment_count>22</comment_count>
      <attachid>64654</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 17:02:58 -0700</bug_when>
    <thetext>Created attachment 64654
patch

made the destructors private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265857</commentid>
    <comment_count>23</comment_count>
      <attachid>64654</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-17 17:07:41 -0700</bug_when>
    <thetext>Comment on attachment 64654
patch

This is fine, r=me

But you should remove the destructors from the .cpp files. Leave them in the headers. I’m sorry if I wasn’t clear enough about this before. This patch leaves them in .cpp files, which is not good enough to ensure the objects never get destroyed. They could be destroyed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265884</commentid>
    <comment_count>24</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 18:05:36 -0700</bug_when>
    <thetext>I get an error if I remove the implementation:

unresolved external symbol &quot;private: virtual __thiscall WebDatabaseManager::~WebDatabaseManager(void)&quot; (??1WebDatabaseManager@@EAE@XZ) referenced in function &quot;private: virtual void * __thiscall WebDatabaseManager::`scalar deleting destructor&apos;(unsigned int)&quot; (??_GWebDatabaseManager@@EAEPAXI@Z)

I&apos;m not sure what exactly this error means, but I&apos;m guessing it has something to do with the ULONG member variable in WebDatabaseManager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265886</commentid>
    <comment_count>25</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-17 18:14:53 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; I get an error if I remove the implementation:
&gt; 
&gt; unresolved external symbol &quot;private: virtual __thiscall WebDatabaseManager::~WebDatabaseManager(void)&quot; (??1WebDatabaseManager@@EAE@XZ) referenced in function &quot;private: virtual void * __thiscall WebDatabaseManager::`scalar deleting destructor&apos;(unsigned int)&quot; (??_GWebDatabaseManager@@EAEPAXI@Z)
&gt; 
&gt; I&apos;m not sure what exactly this error means, but I&apos;m guessing it has something to do with the ULONG member variable in WebDatabaseManager.

It means that the destructor for WebDatabaseManager is being called and there is no implementation, so it sounds like you need to figure out why this class is getting desctructed and get rid of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265957</commentid>
    <comment_count>26</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 22:54:36 -0700</bug_when>
    <thetext>I can&apos;t find any place where WebDatabaseManager is created. It looks like this class is trying to be ref-counted, but it definitely wasn&apos;t designed to be used on multiple threads (the ref-count variable is not protected by a lock, even though it looks thread-safe otherwise). The fact that there are zero comments doesn&apos;t help either.

I think it would be best if the original author of this code took a look at this bug and fixed it, especially since he&apos;s still an active contributor to WebKit and knows a lot more about Safari&apos;s WebKit APIs than I do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265960</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-08-17 23:05:03 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I can&apos;t find any place where WebDatabaseManager is created.

WebDatabaseManager* WebDatabaseManager::createInstance()
{
    WebDatabaseManager* manager = new WebDatabaseManager();


As for where it’s destroyed:

ULONG STDMETHODCALLTYPE WebDatabaseManager::Release()
{
    ULONG newRef = --m_refCount;
    if (!newRef)
        delete this;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265961</commentid>
    <comment_count>28</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 23:07:22 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; I can&apos;t find any place where WebDatabaseManager is created.
&gt; 
&gt; WebDatabaseManager* WebDatabaseManager::createInstance()
&gt; {
&gt;     WebDatabaseManager* manager = new WebDatabaseManager();

and who calls this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265962</commentid>
    <comment_count>29</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-08-17 23:10:03 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; I can&apos;t find any place where WebDatabaseManager is created.
&gt; &gt; 
&gt; &gt; WebDatabaseManager* WebDatabaseManager::createInstance()
&gt; &gt; {
&gt; &gt;     WebDatabaseManager* manager = new WebDatabaseManager();
&gt; 
&gt; and who calls this method?

WebDatabaseManager::sharedWebDatabaseManager… &lt;http://trac.webkit.org/browser/trunk/WebKit/win/WebDatabaseManager.cpp#L197&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265963</commentid>
    <comment_count>30</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 23:15:30 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #27)
&gt; &gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; &gt; I can&apos;t find any place where WebDatabaseManager is created.
&gt; &gt; &gt; 
&gt; &gt; &gt; WebDatabaseManager* WebDatabaseManager::createInstance()
&gt; &gt; &gt; {
&gt; &gt; &gt;     WebDatabaseManager* manager = new WebDatabaseManager();
&gt; &gt; 
&gt; &gt; and who calls this method?
&gt; 
&gt; WebDatabaseManager::sharedWebDatabaseManager… &lt;http://trac.webkit.org/browser/trunk/WebKit/win/WebDatabaseManager.cpp#L197&gt;.

hmm, i missed that... didn&apos;t notice that codesearch showed only the first 3 references to &quot;WebDatabaseManager&quot; in this file...

still, if it&apos;s a static variable, i don&apos;t understand why it needs to be AddRef()&apos;d and Release()&apos;d. i understand that those methods need to be implemented because IWebDatabaseManager has them, but why not have them be empty functions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265964</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-08-17 23:19:35 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; still, if it&apos;s a static variable, i don&apos;t understand why it needs to be AddRef()&apos;d and Release()&apos;d. i understand that those methods need to be implemented because IWebDatabaseManager has them, but why not have them be empty functions?

::Release is required to return the new reference count, so at a minimum AddRef / Release needs to keep the reference count up to date.  The “delete this” code should never be hit due to our permanent reference kept in s_sharedWebDatabaseManager.  If the “delete this” case were to be hit it would indicate a programming error in the client application, so it may be useful to CRASH() in that scenario instead.  At the very least you’ll need to remove the “delete this” in order to avoid a link error if you’re removing the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265969</commentid>
    <comment_count>32</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-17 23:53:02 -0700</bug_when>
    <thetext>if i remove &quot;delete this&quot; from Release(), i get exactly the same linker error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265973</commentid>
    <comment_count>33</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-18 00:21:22 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; if i remove &quot;delete this&quot; from Release(), i get exactly the same linker error.

If all else fails, you can fallback to the tried and true technique of commenting things out until you figure out what is causing the delete of WebDatabaseManager (linker error).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265974</commentid>
    <comment_count>34</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-08-18 00:28:54 -0700</bug_when>
    <thetext>I’d just disassemble the object files and see which function references the relevant symbol.  I’m not sure exactly how one would do this on Windows, but I’m sure it’s possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267453</commentid>
    <comment_count>35</comment_count>
      <attachid>64623</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-20 15:31:11 -0700</bug_when>
    <thetext>Comment on attachment 64623
patch

Cleared Darin Adler&apos;s review+ from obsolete attachment 64623 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268765</commentid>
    <comment_count>36</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-24 13:49:08 -0700</bug_when>
    <thetext>Lets not get hung up on that minor issue. We should land this and then eliminate the destructor later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295357</commentid>
    <comment_count>37</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-17 23:02:07 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Lets not get hung up on that minor issue. We should land this and then eliminate the destructor later.

Dumi, ping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295758</commentid>
    <comment_count>38</comment_count>
      <attachid>71084</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-10-18 14:36:05 -0700</bug_when>
    <thetext>Created attachment 71084
patch

Removed the destructors, the patch seems to build on both Windows and Mac. Not sure why it didn&apos;t build before.

Please don&apos;t r+/r- the patch before the EWS bots are done with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296514</commentid>
    <comment_count>39</comment_count>
      <attachid>71084</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-19 16:25:29 -0700</bug_when>
    <thetext>Comment on attachment 71084
patch

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

&gt; WebKit/mac/ChangeLog:5
&gt; +        Repost the DatabaseTracker notifications to the main thread, if needed.

This would probably be best as a function level comment. (And leave this area for the bug title.)

&gt; WebKit/mac/ChangeLog:8
&gt; +        Removing WebDatabaseTrackerClient::~WebDatabaseTrackerClient(),

If that is true, then leave the destructor declaration and remove the implementation. Otherwise, you&apos;ll get the default destructor implementation.

(btw, this will likely generate the link error you had before, so you&apos;ll likely need an implementation, but then this ChangeLog can be updated to be more accurate.)

Also this type of comment would be better at the function level.

&gt; WebKit/mac/Storage/WebDatabaseTrackerClient.mm:51
&gt; +class DidModifyOriginData {

Inherit from Noncopyable.

&gt; WebKit/win/ChangeLog:8
&gt; +        Removing WebDatabaseManager::~WebDatabaseManager(), because

Same comments as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296542</commentid>
    <comment_count>40</comment_count>
      <attachid>71228</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-10-19 16:57:38 -0700</bug_when>
    <thetext>Created attachment 71228
patch

&gt; &gt; WebKit/mac/ChangeLog:5
&gt; &gt; +        Repost the DatabaseTracker notifications to the main thread, if needed.
&gt; 
&gt; This would probably be best as a function level comment. (And leave this area for the bug title.)

to me, this looks like a pretty good description of the changes made to the code in this dir... also, i think it&apos;s redundant to add the bug description to the ChangeLog entry, since we already include a link to the bug. but i don&apos;t feel strongly about this, so please let me know what you want me to put in the &quot;overall description&quot; part of the ChangeLog entry (bug title?) and i&apos;ll do it.


&gt; &gt; WebKit/mac/ChangeLog:8
&gt; &gt; +        Removing WebDatabaseTrackerClient::~WebDatabaseTrackerClient(),
&gt; 
&gt; If that is true, then leave the destructor declaration and remove the implementation. Otherwise, you&apos;ll get the default destructor implementation.
&gt; 
&gt; (btw, this will likely generate the link error you had before, so you&apos;ll likely need an implementation, but then this ChangeLog can be updated to be more accurate.)
&gt; 
&gt; Also this type of comment would be better at the function level.

you&apos;re right, still getting those link errors. i added the destructors back.

&gt; &gt; WebKit/mac/Storage/WebDatabaseTrackerClient.mm:51
&gt; &gt; +class DidModifyOriginData {
&gt; 
&gt; Inherit from Noncopyable.

done.

&gt; &gt; WebKit/win/ChangeLog:8
&gt; &gt; +        Removing WebDatabaseManager::~WebDatabaseManager(), because
&gt; 
&gt; Same comments as before.

did the same things i did for the changes in WebKit/mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297165</commentid>
    <comment_count>41</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-10-20 17:26:15 -0700</bug_when>
    <thetext>patch landed: r70195.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297172</commentid>
    <comment_count>42</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-20 17:42:09 -0700</bug_when>
    <thetext>Did a bug get filed about removing the destructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297173</commentid>
    <comment_count>43</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-10-20 17:42:59 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; Did a bug get filed about removing the destructor?

No, I&apos;ll do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297177</commentid>
    <comment_count>44</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-10-20 17:47:02 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; Did a bug get filed about removing the destructor?
&gt; 
&gt; No, I&apos;ll do that.

opened bug 48033.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59356</attachid>
            <date>2010-06-22 02:53:19 -0700</date>
            <delta_ts>2010-08-16 14:56:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7546</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2MTYxMSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMjIgIER1bWl0cnUgRGFuaWxpdWMgIDxk
dW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJhY2tlciBub3RpZmljYXRpb25zIHRvIHRo
ZSBtYWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoT3JpZ2luTW9kaWZpZWRJbmZvOjpPcmlnaW5Nb2Rp
ZmllZEluZm8pOgorICAgICAgICAoZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQp
OgorICAgICAgICAoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbik6CisgICAgICAgIChEYXRhYmFzZU1vZGlmaWVkSW5mbzo6RGF0YWJhc2VNb2RpZmllZElu
Zm8pOgorICAgICAgICAoZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZU9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJh
c2UpOgorCiAyMDEwLTA2LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC9tYWMvU3Rv
cmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21h
Yy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkocmV2aXNpb24gNjE2MTEpCisr
KyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclBy
aXZhdGUuaCIKICNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKQEAgLTUxLDE2ICs1Miw1NyBAQCBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyCiB7CiB9CiAgICAgCitzdHJ1Y3QgT3JpZ2lu
TW9kaWZpZWRJbmZvIHsKKyAgICBPcmlnaW5Nb2RpZmllZEluZm8oV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgICAgIDogY2xpZW50
KGNsaWVudCksIG9yaWdpbihvcmlnaW4pIHsgfQorICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCogY2xpZW50OworICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW47Cit9OworCitzdGF0aWMgdm9p
ZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorewor
ICAgIE9yaWdpbk1vZGlmaWVkSW5mbyogaW5mbyA9IHN0YXRpY19jYXN0PE9yaWdpbk1vZGlmaWVk
SW5mbyo+KGNvbnRleHQpOworICAgIGluZm8tPmNsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oaW5mby0+b3JpZ2luKTsKKyAgICBkZWxldGUgaW5mbzsKK30KKwogdm9pZCBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4pCiB7Ci0gICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlP
cmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29y
ZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAg
ICAgICAgT3JpZ2luTW9kaWZpZWRJbmZvKiBjb250ZXh0ID0gbmV3IE9yaWdpbk1vZGlmaWVkSW5m
byh0aGlzLCBvcmlnaW4pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKGRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luT25NYWluVGhyZWFkLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29udGV4dCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3
ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CiAKICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNl
RGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0
KCldOwogfQogCitzdHJ1Y3QgRGF0YWJhc2VNb2RpZmllZEluZm8geworICAgIERhdGFiYXNlTW9k
aWZpZWRJbmZvKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKKyAgICAgICAgOiBjbGllbnQo
Y2xpZW50KSwgb3JpZ2luKG9yaWdpbiksIGRhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50
aWZpZXIpIHsgfQorICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW47CisgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllcjsKK307
CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VPbk1haW5UaHJlYWQodm9p
ZCogY29udGV4dCkKK3sKKyAgICBEYXRhYmFzZU1vZGlmaWVkSW5mbyogaW5mbyA9IHN0YXRpY19j
YXN0PERhdGFiYXNlTW9kaWZpZWRJbmZvKj4oY29udGV4dCk7CisgICAgaW5mby0+Y2xpZW50LT5k
aXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKGluZm8tPm9yaWdpbiwgaW5mby0+ZGF0YWJhc2VJZGVu
dGlmaWVyKTsKKyAgICBkZWxldGUgaW5mbzsKK30KKwogdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgeworICAgICAgICBEYXRhYmFzZU1vZGlmaWVkSW5mbyogY29udGV4dCA9IG5ldyBEYXRh
YmFzZU1vZGlmaWVkSW5mbyh0aGlzLCBvcmlnaW4sIGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZU9uTWFpblRocmVh
ZCwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRv
cHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5
T3JpZ2luOm9yaWdpbl0pOwogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHVzZXJJbmZvKEFk
b3B0TlMsIFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5pdFdpdGhPYmplY3RzQW5kS2V5czooTlNTdHJpbmcgKilk
YXRhYmFzZUlkZW50aWZpZXIsIFdlYkRhdGFiYXNlSWRlbnRpZmllcktleSwgbmlsXSk7CkluZGV4
OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjE2MTEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTIyICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwb3N0IHRoZSBEYXRhYmFzZVRyYWNrZXIgbm90aWZpY2F0aW9ucyB0byB0aGUgbWFp
biB0aHJlYWQsIGlmIG5lZWRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoT3JpZ2luTW9kaWZpZWRJbmZvOjpPcmlnaW5Nb2RpZmllZEluZm8pOgorICAgICAg
ICAoZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0
YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChEYXRhYmFz
ZU1vZGlmaWVkSW5mbzo6RGF0YWJhc2VNb2RpZmllZEluZm8pOgorICAgICAgICAoZGlzcGF0Y2hE
aWRNb2RpZnlEYXRhYmFzZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFn
ZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorCiAyMDEwLTA2LTIxICBOYXRlIENoYXBp
biAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgV2luZG93cyBi
dWlsZCBmaXguCkluZGV4OiBXZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA2MTYx
MSkKKysrIFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNlbnRlci5oIgogI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgpAQCAt
MzI3LDggKzMyOCwyOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFu
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK3N0cnVjdCBPcmlnaW5Nb2RpZmllZEluZm8geworICAg
IE9yaWdpbk1vZGlmaWVkSW5mbyhXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKKyAgICAgICAgOiBkYXRhYmFzZU1hbmFnZXIoZGF0YWJh
c2VNYW5hZ2VyKSwgb3JpZ2luKG9yaWdpbikgeyB9CisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBk
YXRhYmFzZU1hbmFnZXI7CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbjsKK307CisKK3N0YXRp
YyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQp
Cit7CisgICAgT3JpZ2luTW9kaWZpZWRJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8T3JpZ2luTW9k
aWZpZWRJbmZvKj4oY29udGV4dCk7CisgICAgaW5mby0+ZGF0YWJhc2VNYW5hZ2VyLT5kaXNwYXRj
aERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4pOworICAgIGRlbGV0ZSBpbmZvOworfQorCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKIHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIE9y
aWdpbk1vZGlmaWVkSW5mbyogY29udGV4dCA9IG5ldyBPcmlnaW5Nb2RpZmllZEluZm8odGhpcywg
b3JpZ2luKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bk9uTWFpblRocmVhZCwgc3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnRleHQpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIHN0YXRpYyBCU1RSIGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTmFt
ZSA9IFN5c0FsbG9jU3RyaW5nKFdlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9u
KTsKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmlj
YXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwogCkBAIC0zNTEsOCArMzcyLDI5
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICByZXR1cm4g
U19PSzsKIH0KIAorc3RydWN0IERhdGFiYXNlTW9kaWZpZWRJbmZvIHsKKyAgICBEYXRhYmFzZU1v
ZGlmaWVkSW5mbyhXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCisgICAgICAgIDogZGF0
YWJhc2VNYW5hZ2VyKGRhdGFiYXNlTWFuYWdlciksIG9yaWdpbihvcmlnaW4pLCBkYXRhYmFzZU5h
bWUoZGF0YWJhc2VOYW1lKSB7IH0KKyAgICBXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFu
YWdlcjsKKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luOworICAgIFN0cmluZyBkYXRhYmFzZU5h
bWU7Cit9OworCitzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlT25NYWluVGhy
ZWFkKHZvaWQqIGNvbnRleHQpCit7CisgICAgRGF0YWJhc2VNb2RpZmllZEluZm8qIGluZm8gPSBz
dGF0aWNfY2FzdDxEYXRhYmFzZU1vZGlmaWVkSW5mbyo+KGNvbnRleHQpOworICAgIGluZm8tPmRh
dGFiYXNlTWFuYWdlci0+ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShpbmZvLT5vcmlnaW4sIGlu
Zm8tPmRhdGFiYXNlTmFtZSk7CisgICAgZGVsZXRlIGluZm87Cit9CisKIHZvaWQgV2ViRGF0YWJh
c2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogeworICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICAgICAgRGF0YWJhc2VNb2RpZmllZEluZm8qIGNvbnRleHQgPSBuZXcgRGF0YWJh
c2VNb2RpZmllZEluZm8odGhpcywgb3JpZ2luLCBkYXRhYmFzZU5hbWUpOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VPbk1haW5UaHJlYWQsIHN0YXRp
Y19jYXN0PHZvaWQqPihjb250ZXh0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBz
dGF0aWMgQlNUUiBkYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5hbWUgPSBTeXNBbGxvY1N0cmluZyhX
ZWJEYXRhYmFzZURpZE1vZGlmeURhdGFiYXNlTm90aWZpY2F0aW9uKTsKICAgICBJV2ViTm90aWZp
Y2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1
bHRDZW50ZXJJbnRlcm5hbCgpOwogCg==
</data>
<flag name="review"
          id="46166"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="46167"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64525</attachid>
            <date>2010-08-16 14:56:21 -0700</date>
            <delta_ts>2010-08-17 12:50:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9620</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTQ1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTYgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0wOC0xNiAg
VmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjU0NTYpCisrKyBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDcgQEAgX19a
TjdXZWJDb3JlMTRTVkdTTUlMRWxlbWVudDEzaXNTTUlMRWxlbQogX19aTjdXZWJDb3JlMTRTY2hl
bWVSZWdpc3RyeTI0cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzMnJlZ2lzdGVyVVJMU2No
ZW1lQXNFbXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjE0dGhyZWFkc2FmZUNvcHlFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2
Y3JlYXRlRnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCiBfX1pON1dl
YkNvcmUxNFNlY3VyaXR5T3JpZ2luMThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04z
V1RGNlN0cmluZ0UKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTQ1OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDgtMTYgIER1bWl0cnUg
RGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJhY2tlciBub3RpZmlj
YXRpb25zIHRvIHRoZSBtYWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAgICAqIFN0b3JhZ2Uv
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0
YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
RGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNw
YXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKERhdGFiYXNl
TW9kaWZpZWRJbmZvOjpEYXRhYmFzZU1vZGlmaWVkSW5mbyk6CisgICAgICAgIChkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisKIDIwMTAtMDgtMTQgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tCShyZXZpc2lvbiA2NTQ1NikKKysrIFdlYktpdC9tYWMvU3RvcmFnZS9X
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKIAogI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KIApAQCAtNTEsMTYgKzUyLDY5IEBAIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYkRh
dGFiYXNlVHIKIHsKIH0KICAgICAKK2NsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworcHVibGlj
OgorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorICAgIHsKKyAgICAgICAg
RGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGNs
aWVudCwgb3JpZ2luLT50aHJlYWRzYWZlQ29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJl
YWQsIGNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
KFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4pCisgICAgICAgIDogY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBvcmlnaW4o
b3JpZ2luKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlm
eU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0
YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5mby0+
Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOworICAg
ICAgICBkZWxldGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQq
IGNsaWVudDsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKIHZvaWQg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogewotICAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdl
YlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0
V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKKyAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFk
KHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8
V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJp
dHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsK
IAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNh
dGlvbk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmljYXRpb24gCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDp3
ZWJTZWN1cml0eU9yaWdpbi5nZXQoKV07CiB9CiAKK3N0cnVjdCBEYXRhYmFzZU1vZGlmaWVkSW5m
byB7CisgICAgRGF0YWJhc2VNb2RpZmllZEluZm8oV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBj
bGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
KQorICAgICAgICA6IGNsaWVudChjbGllbnQpLCBvcmlnaW4ob3JpZ2luKSwgZGF0YWJhc2VJZGVu
dGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcikgeyB9CisgICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQ7CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbjsKKyAgICBTdHJpbmcgZGF0
YWJhc2VJZGVudGlmaWVyOworfTsKKworc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZU9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQoreworICAgIERhdGFiYXNlTW9kaWZpZWRJ
bmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VNb2RpZmllZEluZm8qPihjb250ZXh0KTsK
KyAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoaW5mby0+b3JpZ2lu
LCBpbmZvLT5kYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGRlbGV0ZSBpbmZvOworfQorCiB2b2lk
IFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsK
KyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERhdGFiYXNlTW9kaWZpZWRJbmZv
KiBjb250ZXh0ID0gbmV3IERhdGFiYXNlTW9kaWZpZWRJbmZvKHRoaXMsIG9yaWdpbiwgZGF0YWJh
c2VJZGVudGlmaWVyKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChkaXNwYXRjaERpZE1vZGlm
eURhdGFiYXNlT25NYWluVGhyZWFkLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29udGV4dCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3
ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CiAgICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9iamVjdHNB
bmRLZXlzOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJZGVudGlm
aWVyS2V5LCBuaWxdKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTQ1OCkKKysrIFdlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDgtMTYgIER1bWl0
cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJhY2tlciBub3Rp
ZmljYXRpb25zIHRvIHRoZSBtYWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAgICAqIFdlYkRh
dGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRj
aFRvTWFpblRocmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpEaWRNb2RpZnlP
cmlnaW5EYXRhKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorICAgICAgICAoRGF0YWJhc2VNb2RpZmllZEluZm86OkRh
dGFiYXNlTW9kaWZpZWRJbmZvKToKKyAgICAgICAgKGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2VP
bk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1v
ZGlmeURhdGFiYXNlKToKKwogMjAxMC0wOC0xMiAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZlcnQgZm9yIG5vdwpJbmRleDogV2ViS2l0L3dpbi9XZWJE
YXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcAkocmV2aXNpb24gNjU0NTYpCisrKyBXZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
QlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTMyNyw4ICszMjgsNDAgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogICAgIHJldHVybiBTX09LOwogfQogCitjbGFzcyBE
aWRNb2RpZnlPcmlnaW5EYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZChXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKKyAgICB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRl
eHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShkYXRhYmFzZU1hbmFnZXIsIG9yaWdpbi0+dGhy
ZWFkc2FmZUNvcHkoKSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdp
bkRhdGE6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkLCBjb250ZXh0KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZU1hbmFn
ZXIqIGRhdGFiYXNlTWFuYWdlciwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQor
ICAgICAgICA6IGRhdGFiYXNlTWFuYWdlcihkYXRhYmFzZU1hbmFnZXIpCisgICAgICAgICwgb3Jp
Z2luKG9yaWdpbikKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQodm9pZCogY29udGV4dCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8g
PSBzdGF0aWNfY2FzdDxEaWRNb2RpZnlPcmlnaW5EYXRhKj4oY29udGV4dCk7CisgICAgICAgIGlu
Zm8tPmRhdGFiYXNlTWFuYWdlci0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oaW5mby0+b3JpZ2lu
LmdldCgpKTsKKyAgICAgICAgZGVsZXRlIGluZm87CisgICAgfQorCisgICAgV2ViRGF0YWJhc2VN
YW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXI7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW47Cit9OworCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7
CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMs
IG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGF0aWMgQlNUUiBkYXRh
YmFzZURpZE1vZGlmeU9yaWdpbk5hbWUgPSBTeXNBbGxvY1N0cmluZyhXZWJEYXRhYmFzZURpZE1v
ZGlmeU9yaWdpbk5vdGlmaWNhdGlvbik7CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90
aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwo
KTsKIApAQCAtMzUxLDggKzM4NCwyOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRh
dGFiYXNlTWFuCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK3N0cnVjdCBEYXRhYmFzZU1vZGlmaWVk
SW5mbyB7CisgICAgRGF0YWJhc2VNb2RpZmllZEluZm8oV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRh
YmFzZU1hbmFnZXIsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lKQorICAgICAgICA6IGRhdGFiYXNlTWFuYWdlcihkYXRhYmFzZU1hbmFnZXIpLCBvcmln
aW4ob3JpZ2luKSwgZGF0YWJhc2VOYW1lKGRhdGFiYXNlTmFtZSkgeyB9CisgICAgV2ViRGF0YWJh
c2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXI7CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbjsK
KyAgICBTdHJpbmcgZGF0YWJhc2VOYW1lOworfTsKKworc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZU9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQoreworICAgIERhdGFiYXNl
TW9kaWZpZWRJbmZvKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VNb2RpZmllZEluZm8qPihj
b250ZXh0KTsKKyAgICBpbmZvLT5kYXRhYmFzZU1hbmFnZXItPmRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UoaW5mby0+b3JpZ2luLCBpbmZvLT5kYXRhYmFzZU5hbWUpOworICAgIGRlbGV0ZSBpbmZv
OworfQorCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsK
KyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERhdGFiYXNlTW9kaWZpZWRJbmZv
KiBjb250ZXh0ID0gbmV3IERhdGFiYXNlTW9kaWZpZWRJbmZvKHRoaXMsIG9yaWdpbiwgZGF0YWJh
c2VOYW1lKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChkaXNwYXRjaERpZE1vZGlmeURhdGFi
YXNlT25NYWluVGhyZWFkLCBzdGF0aWNfY2FzdDx2b2lkKj4oY29udGV4dCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgc3RhdGljIEJTVFIgZGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5O
YW1lID0gU3lzQWxsb2NTdHJpbmcoV2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNh
dGlvbik7CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90
aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKIAo=
</data>
<flag name="review"
          id="53112"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="53113"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64623</attachid>
            <date>2010-08-17 12:50:14 -0700</date>
            <delta_ts>2010-08-20 15:31:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8235</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTUzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0wOC0xNyAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgSHlhdHQuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY1NTMwKQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCw3IEBAIF9fWk43
V2ViQ29yZTE0U1ZHU01JTEVsZW1lbnQxM2lzU01JTEVsZW0KIF9fWk43V2ViQ29yZTE0U2NoZW1l
UmVnaXN0cnkyNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xNHRocmVhZHNhZmVDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNy
ZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9saWN5RQogX19aTjdXZWJD
b3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjU1MzApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA4LTE3ICBEdW1pdHJ1IERh
bmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwb3N0IHRoZSBEYXRhYmFzZVRyYWNrZXIgbm90aWZpY2F0
aW9ucyB0byB0aGUgbWFpbiB0aHJlYWQsIGlmIG5lZWRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBTdG9yYWdlL1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OkRp
ZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChEYXRhYmFzZU1v
ZGlmaWVkSW5mbzo6RGF0YWJhc2VNb2RpZmllZEluZm8pOgorICAgICAgICAoZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorCiAyMDEwLTA4LTE0ICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2
ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudC5tbQkocmV2aXNpb24gNjU1MzApCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKICNpbXBvcnQgIldlYlNl
Y3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAKQEAgLTUxLDkgKzUyLDQxIEBAIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6fldlYkRhdGFi
YXNlVHIKIHsKIH0KICAgICAKK2NsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgeworcHVibGljOgor
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCogY2xpZW50LCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorICAgIHsKKyAgICAgICAgRGlk
TW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGNsaWVu
dCwgb3JpZ2luLT50aHJlYWRzYWZlQ29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgm
RGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQs
IGNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdl
YkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBvcmlnaW4pCisgICAgICAgIDogY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBvcmlnaW4ob3Jp
Z2luKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0YXRp
Y19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5mby0+Y2xp
ZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOworICAgICAg
ICBkZWxldGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNs
aWVudDsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKIHZvaWQgV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQogewotICAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNl
Y3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRo
aXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlP
cmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKIAog
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6V2ViRGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmljYXRpb24gCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDp3ZWJT
ZWN1cml0eU9yaWdpbi5nZXQoKV07CkBAIC02MSw2ICs5NCwxMSBAQCB2b2lkIFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hECiAKIHZvaWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50
OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogeworICAgIGlmICghaXNNYWluVGhyZWFkKCkp
IHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhp
cywgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFpblB0cjxXZWJT
ZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9y
aWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOwogICAg
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHVzZXJJbmZvKEFkb3B0TlMsIFtbTlNEaWN0aW9uYXJ5
IGFsbG9jXSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5pdFdpdGhPYmplY3RzQW5kS2V5czooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXIsIFdl
YkRhdGFiYXNlSWRlbnRpZmllcktleSwgbmlsXSk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjU1MzApCisr
KyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisy
MDEwLTA4LTE3ICBEdW1pdHJ1IERhbmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwb3N0IHRoZSBEYXRh
YmFzZVRyYWNrZXIgbm90aWZpY2F0aW9ucyB0byB0aGUgbWFpbiB0aHJlYWQsIGlmIG5lZWRlZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjU1CisK
KyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoRGlkTW9kaWZ5T3Jp
Z2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2lu
RGF0YTo6RGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRh
OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRh
YmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKERhdGFiYXNl
TW9kaWZpZWRJbmZvOjpEYXRhYmFzZU1vZGlmaWVkSW5mbyk6CisgICAgICAgIChkaXNwYXRjaERp
ZE1vZGlmeURhdGFiYXNlT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdl
cjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisKIDIwMTAtMDgtMTYgIEtpbnVrbyBZYXN1
ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IGJ1aWxkIGZp
eCBhdHRlbXB0IGZvciBXaW5kb3dzLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAko
cmV2aXNpb24gNjU1MzApCisrKyBXZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25D
ZW50ZXIuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRy
YWNrZXIuaD4KQEAgLTMyNyw4ICszMjgsNDAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEYXRhYmFzZU1hbgogICAgIHJldHVybiBTX09LOwogfQogCitjbGFzcyBEaWRNb2RpZnlPcmln
aW5EYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChX
ZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdlciwgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
bikKKyAgICB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlk
TW9kaWZ5T3JpZ2luRGF0YShkYXRhYmFzZU1hbmFnZXIsIG9yaWdpbi0+dGhyZWFkc2FmZUNvcHko
KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkLCBjb250ZXh0KTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNl
TWFuYWdlciwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQorICAgICAgICA6IGRh
dGFiYXNlTWFuYWdlcihkYXRhYmFzZU1hbmFnZXIpCisgICAgICAgICwgb3JpZ2luKG9yaWdpbikK
KyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5P
bk1haW5UaHJlYWQodm9pZCogY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8gPSBzdGF0aWNfY2Fz
dDxEaWRNb2RpZnlPcmlnaW5EYXRhKj4oY29udGV4dCk7CisgICAgICAgIGluZm8tPmRhdGFiYXNl
TWFuYWdlci0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oaW5mby0+b3JpZ2luLmdldCgpKTsKKyAg
ICAgICAgZGVsZXRlIGluZm87CisgICAgfQorCisgICAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRh
YmFzZU1hbmFnZXI7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW47Cit9OworCiB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKIHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERp
ZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGF0aWMgQlNUUiBkYXRhYmFzZURpZE1vZGlm
eU9yaWdpbk5hbWUgPSBTeXNBbGxvY1N0cmluZyhXZWJEYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5v
dGlmaWNhdGlvbik7CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0g
V2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKIApAQCAtMzUz
LDYgKzM4NiwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAK
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogeworICAgIGlm
ICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIHN0YXRpYyBCU1RSIGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTmFtZSA9IFN5c0FsbG9jU3Ry
aW5nKFdlYkRhdGFiYXNlRGlkTW9kaWZ5RGF0YWJhc2VOb3RpZmljYXRpb24pOwogICAgIElXZWJO
b3RpZmljYXRpb25DZW50ZXIqIG5vdGlmeUNlbnRlciA9IFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6
ZGVmYXVsdENlbnRlckludGVybmFsKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64633</attachid>
            <date>2010-08-17 14:39:34 -0700</date>
            <delta_ts>2010-08-17 17:02:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10097</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0wOC0xNyAg
RmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXZpZCBIeWF0dC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjU1NDApCisrKyBXZWJDb3JlL1dl
YkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDcgQEAgX19aTjdXZWJD
b3JlMTRTVkdTTUlMRWxlbWVudDEzaXNTTUlMRWxlbQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdp
c3RyeTI0cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJVUkxTY2hlbWVBc1NlY3VyZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkzMnJlZ2lzdGVyVVJMU2NoZW1lQXNF
bXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjE0dGhyZWFkc2FmZUNvcHlFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2Y3JlYXRl
RnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4x
OHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCiBfX1pON1dlYkNvcmUx
NFNlY3VyaXR5T3JpZ2luMThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0
cmluZ0UKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTU0MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDgtMTcgIER1bWl0cnUgRGFuaWxp
dWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJhY2tlciBub3RpZmljYXRpb25z
IHRvIHRoZSBtYWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAgICBSZW1vdmluZyBXZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKSwKKyAgICAgICAg
YmVjYXVzZSB0aGVyZSdzIG9ubHkgb25lIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCBpbnN0YW5j
ZSBhbmQgaXQKKyAgICAgICAgbmV2ZXIgZ2V0cyBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBTdG9y
YWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0
YWJhc2VUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlz
cGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6RGlkTW9k
aWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERp
ZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisKIDIwMTAtMDgtMTQgIEpv
c2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJh
Y2tlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQuaAkocmV2aXNpb24gNjU1NDApCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2Uv
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwx
NCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgRU5BQkxFKERBVEFCQVNFKSAKKyNpZiBFTkFC
TEUoREFUQUJBU0UpCiAKICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+
CiAKIGNsYXNzIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRh
YmFzZVRyYWNrZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNr
ZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotICAgIAotICAgIHZp
cnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworCiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKIHByaXZhdGU6Cklu
ZGV4OiBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0J
KHJldmlzaW9uIDY1NTQwKQorKysgV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW1wb3J0ICJX
ZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbklu
dGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCkBAIC00NywxMyAr
NDgsNDEgQEAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpXZWJEYXRhYmFzZVRyYQogewogfQog
Ci1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQot
ewotfQotICAgIAorY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBj
bGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgeworICAgICAgICBEaWRNb2RpZnlP
cmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmln
aW4tPnRocmVhZHNhZmVDb3B5KCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2Rp
ZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4
dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJh
c2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
bikKKyAgICAgICAgOiBjbGllbnQoY2xpZW50KQorICAgICAgICAsIG9yaWdpbihvcmlnaW4pCisg
ICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25N
YWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8
RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOworICAgICAgICBpbmZvLT5jbGllbnQtPmRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdpbi5nZXQoKSk7CisgICAgICAgIGRlbGV0
ZSBpbmZvOworICAgIH0KKworICAgIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50Owor
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOworfTsKKwogdm9pZCBXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4pCiB7Ci0gICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlP
cmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29y
ZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAg
ICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3Jp
Z2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJldGFpblB0cjxXZWJTZWN1cml0
eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBh
bGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOwogCiAgICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpX
ZWJEYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5vdGlmaWNhdGlvbiAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5
T3JpZ2luLmdldCgpXTsKQEAgLTYxLDYgKzkwLDExIEBAIHZvaWQgV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50OjpkaXNwYXRjaEQKIAogdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAg
ICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmln
aW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CiAgICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gdXNlckluZm8oQWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0
aE9iamVjdHNBbmRLZXlzOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJh
c2VJZGVudGlmaWVyS2V5LCBuaWxdKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTU0MCkKKysrIFdlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDgt
MTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJh
Y2tlciBub3RpZmljYXRpb25zIHRvIHRoZSBtYWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAg
ICBSZW1vdmluZyBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKSwgYmVj
YXVzZQorICAgICAgICB0aGVyZSdzIG9ubHkgb25lIFdlYkRhdGFiYXNlTWFuYWdlciBpbnN0YW5j
ZSBhbmQgaXQgbmV2ZXIgZ2V0cworICAgICAgICBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBXZWJE
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6RGlkTW9kaWZ5
T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlz
cGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmg6
CisKIDIwMTAtMDgtMTYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQ7IGJ1aWxkIGZpeCBhdHRlbXB0IGZvciBXaW5kb3dzLgpJbmRleDog
V2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gNjU1NDApCisrKyBXZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0
eU9yaWdpbi5oIgogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTE1NywxMiArMTU4LDYgQEAg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogICAgIGdDbGFzc05hbWVD
b3VudC5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOwogfQogCi1XZWJEYXRhYmFzZU1hbmFnZXI6
On5XZWJEYXRhYmFzZU1hbmFnZXIoKQotewotICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50LnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7Ci19Ci0KIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1h
bmFnZXI6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQogewpA
QCAtMzI3LDggKzMyMiw0MCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFiYXNl
TWFuCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK2NsYXNzIERpZE1vZGlmeU9yaWdpbkRhdGEgewor
cHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKFdlYkRhdGFiYXNl
TWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyLCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQorICAgIHsK
KyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4dCA9IG5ldyBEaWRNb2RpZnlPcmln
aW5EYXRhKGRhdGFiYXNlTWFuYWdlciwgb3JpZ2luLT50aHJlYWRzYWZlQ29weSgpKTsKKyAgICAg
ICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2Rp
ZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBE
aWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisgICAgICAgIDogZGF0YWJhc2VNYW5h
Z2VyKGRhdGFiYXNlTWFuYWdlcikKKyAgICAgICAgLCBvcmlnaW4ob3JpZ2luKQorICAgIHsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVh
ZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0YXRpY19jYXN0PERpZE1vZGlm
eU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5mby0+ZGF0YWJhc2VNYW5hZ2VyLT5k
aXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOworICAgICAgICBkZWxl
dGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZU1hbmFnZXIqIGRhdGFiYXNlTWFuYWdl
cjsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKK307CisKIHZvaWQgV2ViRGF0
YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQogeworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5T3Jp
Z2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIHN0YXRpYyBCU1RSIGRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTmFt
ZSA9IFN5c0FsbG9jU3RyaW5nKFdlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9u
KTsKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmlj
YXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwogCkBAIC0zNTMsNiArMzgwLDEx
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KIAogdm9pZCBXZWJE
YXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpCiB7CisgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRo
cmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc3RhdGlj
IEJTVFIgZGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5OYW1lID0gU3lzQWxsb2NTdHJpbmcoV2ViRGF0
YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbik7CiAgICAgSVdlYk5vdGlmaWNhdGlv
bkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpkZWZhdWx0Q2Vu
dGVySW50ZXJuYWwoKTsKIApJbmRleDogV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiA2
NTU0MCkKKysrIFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDcgKzgzLDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYkRhdGFiYXNlTWFu
YWdlcigpOwotICAgIH5XZWJEYXRhYmFzZU1hbmFnZXIoKTsKIAogICAgIFVMT05HIG1fcmVmQ291
bnQ7CiB9Owo=
</data>
<flag name="review"
          id="53239"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="53240"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64654</attachid>
            <date>2010-08-17 17:02:58 -0700</date>
            <delta_ts>2010-10-18 14:36:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>9337</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTU3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgtMTcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0wOC0xNyAg
TWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY1NTczKQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzE0LDYgKzMxNCw3IEBAIF9fWk43
V2ViQ29yZTE0U1ZHU01JTEVsZW1lbnQxM2lzU01JTEVsZW0KIF9fWk43V2ViQ29yZTE0U2NoZW1l
UmVnaXN0cnkyNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xNHRocmVhZHNhZmVDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNy
ZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9saWN5RQogX19aTjdXZWJD
b3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjU1NzMpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA4LTE3ICBEdW1pdHJ1IERh
bmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwb3N0IHRoZSBEYXRhYmFzZVRyYWNrZXIgbm90aWZpY2F0
aW9ucyB0byB0aGUgbWFpbiB0aHJlYWQsIGlmIG5lZWRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjU1CisKKyAgICAgICAgUmVtb3ZpbmcgV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Ojp+V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCksCisgICAg
ICAgIGJlY2F1c2UgdGhlcmUncyBvbmx5IG9uZSBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQgaW5z
dGFuY2UgYW5kIGl0CisgICAgICAgIG5ldmVyIGdldHMgZGVzdHJveWVkLgorCisgICAgICAgICog
U3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDoKKyAgICAgICAgKiBTdG9yYWdlL1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OkRp
ZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorCiAyMDEwLTA4LTE3
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaAkocmV2aXNpb24gNjU1NzMpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwxOSBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWYgRU5BQkxFKERBVEFCQVNFKSAKKyNpZiBFTkFCTEUo
REFUQUJBU0UpCiAKICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CiAK
IGNsYXNzIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFz
ZVRyYWNrZXJDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJD
bGllbnQqIHNoYXJlZFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOwotICAgIAotICAgIHZpcnR1
YWwgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVudCgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKTsKIHByaXZhdGU6CiAgICAg
V2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KCk7CisgICAgfldlYkRhdGFiYXNlVHJhY2tlckNsaWVu
dCgpOwogfTsKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VU
cmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRh
YmFzZVRyYWNrZXJDbGllbnQubW0JKHJldmlzaW9uIDY1NTczKQorKysgV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogCiAjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgiCiAjaW1wb3J0
ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogCkBAIC01MSw5ICs1Miw0MSBAQCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5X
ZWJEYXRhYmFzZVRyCiB7CiB9CiAgICAgCitjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRvTWFpblRocmVhZChXZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKKyAgICB7CisgICAg
ICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQgPSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0
YShjbGllbnQsIG9yaWdpbi0+dGhyZWFkc2FmZUNvcHkoKSk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoJkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWlu
VGhyZWFkLCBjb250ZXh0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlkTW9kaWZ5T3JpZ2lu
RGF0YShXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luKQorICAgICAgICA6IGNsaWVudChjbGllbnQpCisgICAgICAgICwgb3Jp
Z2luKG9yaWdpbikKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQodm9pZCogY29udGV4dCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8g
PSBzdGF0aWNfY2FzdDxEaWRNb2RpZnlPcmlnaW5EYXRhKj4oY29udGV4dCk7CisgICAgICAgIGlu
Zm8tPmNsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oaW5mby0+b3JpZ2luLmdldCgpKTsK
KyAgICAgICAgZGVsZXRlIGluZm87CisgICAgfQorCisgICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBjbGllbnQ7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW47Cit9OworCiB2
b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2lu
PiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBf
aW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CisgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRo
cmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmV0YWlu
UHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNl
Y3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2lu
XSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5T3JpZ2luTm90aWZpY2F0aW9uIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwpAQCAtNjEsNiArOTQsMTEgQEAgdm9pZCBXZWJE
YXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRAogCiB2b2lkIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzTWFpblRo
cmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhy
ZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBSZXRhaW5Q
dHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5d
KTsKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1c2VySW5mbyhBZG9wdE5TLCBbW05TRGlj
dGlvbmFyeSBhbGxvY10gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlm
aWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5pbF0pOwpJbmRleDogV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1
NTczKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MiBAQAorMjAxMC0wOC0xNyAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcG9zdCB0
aGUgRGF0YWJhc2VUcmFja2VyIG5vdGlmaWNhdGlvbnMgdG8gdGhlIG1haW4gdGhyZWFkLCBpZiBu
ZWVkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDY1NQorCisgICAgICAgIFJlbW92aW5nIFdlYkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNl
TWFuYWdlcigpLCBiZWNhdXNlCisgICAgICAgIHRoZXJlJ3Mgb25seSBvbmUgV2ViRGF0YWJhc2VN
YW5hZ2VyIGluc3RhbmNlIGFuZCBpdCBuZXZlciBnZXRzCisgICAgICAgIGRlc3Ryb3llZC4KKwor
ICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChEaWRNb2RpZnlPcmln
aW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCk6CisgICAgICAgIChEaWRNb2RpZnlPcmlnaW5E
YXRhOjpEaWRNb2RpZnlPcmlnaW5EYXRhKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkRhdGFi
YXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4pOgorICAgICAgICAoV2ViRGF0YWJh
c2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKToKKyAgICAgICAgKiBXZWJEYXRh
YmFzZU1hbmFnZXIuaDoKKwogMjAxMC0wOC0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDY1NTczKQorKysgV2ViS2l0L3dpbi9XZWJEYXRh
YmFzZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4u
aCIKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC0zMjcsOCArMzI4LDQwIEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICByZXR1cm4gU19PSzsKIH0KIAor
Y2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4pCisgICAgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
KiBjb250ZXh0ID0gbmV3IERpZE1vZGlmeU9yaWdpbkRhdGEoZGF0YWJhc2VNYW5hZ2VyLCBvcmln
aW4tPnRocmVhZHNhZmVDb3B5KCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2Rp
ZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4
dCk7CisgICAgfQorCitwcml2YXRlOgorICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJh
c2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbikKKyAgICAgICAgOiBkYXRhYmFzZU1hbmFnZXIoZGF0YWJhc2VNYW5hZ2VyKQorICAgICAg
ICAsIG9yaWdpbihvcmlnaW4pCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCisgICAgeworICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRh
KiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOworICAg
ICAgICBpbmZvLT5kYXRhYmFzZU1hbmFnZXItPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8t
Pm9yaWdpbi5nZXQoKSk7CisgICAgICAgIGRlbGV0ZSBpbmZvOworICAgIH0KKworICAgIFdlYkRh
dGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luOworfTsKKwogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9k
aWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7CisgICAgaWYgKCFpc01haW5UaHJl
YWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVh
ZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc3RhdGljIEJT
VFIgZGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5OYW1lID0gU3lzQWxsb2NTdHJpbmcoV2ViRGF0YWJh
c2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmljYXRpb24pOwogICAgIElXZWJOb3RpZmljYXRpb25DZW50
ZXIqIG5vdGlmeUNlbnRlciA9IFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlcklu
dGVybmFsKCk7CiAKQEAgLTM1Myw2ICszODYsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEYXRhYmFzZU1hbgogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRN
b2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSkKIHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBzdGF0aWMgQlNUUiBkYXRhYmFzZURpZE1vZGlmeU9yaWdp
bk5hbWUgPSBTeXNBbGxvY1N0cmluZyhXZWJEYXRhYmFzZURpZE1vZGlmeURhdGFiYXNlTm90aWZp
Y2F0aW9uKTsKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgpOwogCg==
</data>
<flag name="commit-queue"
          id="53266"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71084</attachid>
            <date>2010-10-18 14:36:05 -0700</date>
            <delta_ts>2010-10-19 16:57:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10118</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTk4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTAtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0xMC0xOCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgKiBkb20vTm9kZS5oOiBG
aXggYW5jaWVudCB0eXBvIGluIGp1c3QtbW9kaWZpZWQgY29tbWVudC4KSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gNjk5ODkpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTgsNiArMzE4LDcgQEAgX19aTjdXZWJDb3JlMTRTVkdTTUlMRWxlbWVudDEzaXNTTUlMRWxl
bQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI0cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2Fs
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTY2hlbWVSZWdpc3RyeTI1cmVnaXN0ZXJV
UkxTY2hlbWVBc1NlY3VyZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2NoZW1lUmVn
aXN0cnkzMnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50RVJLTjNXVEY2U3RyaW5nRQor
X19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE0dGhyZWFkc2FmZUNvcHlFdgogX19aTjdXZWJD
b3JlMTRTZWN1cml0eU9yaWdpbjE2Y3JlYXRlRnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2Nh
bExvYWRQb2xpY3lFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMThzaG91bGRIaWRlUmVm
ZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2OTk4OSkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTAtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBvc3QgdGhlIERh
dGFiYXNlVHJhY2tlciBub3RpZmljYXRpb25zIHRvIHRoZSBtYWluIHRocmVhZCwgaWYgbmVlZGVk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NTUK
KworICAgICAgICBSZW1vdmluZyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQoKSwKKyAgICAgICAgYmVjYXVzZSB0aGVyZSdzIG9ubHkgb25lIFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCBpbnN0YW5jZSBhbmQgaXQKKyAgICAgICAgbmV2ZXIgZ2V0cyBk
ZXN0cm95ZWQuCisKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5o
OgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tOgorICAgICAg
ICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAo
RGlkTW9kaWZ5T3JpZ2luRGF0YTo6RGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRN
b2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2lu
KToKKyAgICAgICAgKFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlE
YXRhYmFzZSk6CisKIDIwMTAtMTAtMTggIFN0dWFydCBNb3JnYW4gIDxzdHVhcnRtb3JnYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQuaAkocmV2aXNpb24g
Njk5ODkpCisrKyBXZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxNCBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWYgRU5BQkxFKERBVEFCQVNFKSAKKyNpZiBFTkFCTEUoREFUQUJBU0UpCiAKICNpbXBvcnQgPFdl
YkNvcmUvRGF0YWJhc2VUcmFja2VyQ2xpZW50Lmg+CiAKIGNsYXNzIFdlYkRhdGFiYXNlVHJhY2tl
ckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIHNoYXJlZFdlYkRhdGFiYXNl
VHJhY2tlckNsaWVudCgpOwotICAgIAotICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlVHJhY2tlckNs
aWVudCgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5
RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0
YWJhc2VJZGVudGlmaWVyKTsKIHByaXZhdGU6CkluZGV4OiBXZWJLaXQvbWFjL1N0b3JhZ2UvV2Vi
RGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQubW0JKHJldmlzaW9uIDY5OTg5KQorKysgV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogCiAjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXJQcml2YXRlLmgi
CiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogCkBAIC00NywxMyArNDgsNDEgQEAgV2ViRGF0YWJhc2VUcmFja2Vy
Q2xpZW50OjpXZWJEYXRhYmFzZVRyYQogewogfQogCi1XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
On5XZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQoKQotewotfQotICAgIAorY2xhc3MgRGlkTW9kaWZ5
T3JpZ2luRGF0YSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJl
YWQoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCisgICAgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERp
ZE1vZGlmeU9yaWdpbkRhdGEoY2xpZW50LCBvcmlnaW4tPnRocmVhZHNhZmVDb3B5KCkpOworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7CisgICAgfQorCitwcml2YXRlOgorICAg
IERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKKyAgICAgICAgOiBjbGllbnQoY2xpZW50
KQorICAgICAgICAsIG9yaWdpbihvcmlnaW4pCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBEaWRNb2RpZnlP
cmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRl
eHQpOworICAgICAgICBpbmZvLT5jbGllbnQtPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8t
Pm9yaWdpbi5nZXQoKSk7CisgICAgICAgIGRlbGV0ZSBpbmZvOworICAgIH0KKworICAgIFdlYkRh
dGFiYXNlVHJhY2tlckNsaWVudCogY2xpZW50OworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
b3JpZ2luOworfTsKKwogdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgIFJldGFpblB0cjxX
ZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4oQWRvcHROUywgW1tXZWJTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbl0pOwor
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6
ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4o
QWRvcHROUywgW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3Vy
aXR5T3JpZ2luOm9yaWdpbl0pOwogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJEYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5v
dGlmaWNhdGlvbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0OndlYlNlY3VyaXR5T3JpZ2luLmdldCgpXTsKQEAgLTYxLDYgKzkw
LDExIEBAIHZvaWQgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50OjpkaXNwYXRjaEQKIAogdm9pZCBX
ZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7Cisg
ICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpk
aXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihB
ZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJp
dHlPcmlnaW46b3JpZ2luXSk7CiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gdXNlckluZm8o
QWRvcHROUywgW1tOU0RpY3Rpb25hcnkgYWxsb2NdIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbml0V2l0aE9iamVjdHNBbmRLZXlzOihOU1N0cmluZyAq
KWRhdGFiYXNlSWRlbnRpZmllciwgV2ViRGF0YWJhc2VJZGVudGlmaWVyS2V5LCBuaWxdKTsKSW5k
ZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiA2OTk4OSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMTAtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1p
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBvc3QgdGhlIERhdGFiYXNlVHJhY2tlciBub3RpZmljYXRpb25zIHRvIHRoZSBt
YWluIHRocmVhZCwgaWYgbmVlZGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDA2NTUKKworICAgICAgICBSZW1vdmluZyBXZWJEYXRhYmFzZU1hbmFn
ZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKSwgYmVjYXVzZQorICAgICAgICB0aGVyZSdzIG9ubHkg
b25lIFdlYkRhdGFiYXNlTWFuYWdlciBpbnN0YW5jZSBhbmQgaXQgbmV2ZXIgZ2V0cworICAgICAg
ICBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQpOgorICAgICAgICAo
RGlkTW9kaWZ5T3JpZ2luRGF0YTo6RGlkTW9kaWZ5T3JpZ2luRGF0YSk6CisgICAgICAgIChEaWRN
b2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKToKKyAg
ICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZSk6Cisg
ICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisKIDIwMTAtMTAtMTggIFBhdmVsIFBvZGl2
aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGlt
b3RoeSBIYXRjaGVyLgpJbmRleDogV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAkocmV2aXNpb24g
Njk5ODkpCisrKyBXZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIK
ICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4K
QEAgLTE1NywxMiArMTU4LDYgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFn
ZXIoKQogICAgIGdDbGFzc05hbWVDb3VudC5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOwogfQog
Ci1XZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQotewotICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50LnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2Vy
Iik7Ci19Ci0KIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEYXRhYmFzZU1hbmFnZXI6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KQogewpAQCAtMzI3LDggKzMyMiw0MCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRhdGFiYXNlTWFuCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK2NsYXNzIERp
ZE1vZGlmeU9yaWdpbkRhdGEgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoVG9N
YWluVGhyZWFkKFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VNYW5hZ2VyLCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKQorICAgIHsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogY29udGV4
dCA9IG5ldyBEaWRNb2RpZnlPcmlnaW5EYXRhKGRhdGFiYXNlTWFuYWdlciwgb3JpZ2luLT50aHJl
YWRzYWZlQ29weSgpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmRGlkTW9kaWZ5T3JpZ2lu
RGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIGNvbnRleHQpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKFdlYkRhdGFiYXNlTWFuYWdl
ciogZGF0YWJhc2VNYW5hZ2VyLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCisg
ICAgICAgIDogZGF0YWJhc2VNYW5hZ2VyKGRhdGFiYXNlTWFuYWdlcikKKyAgICAgICAgLCBvcmln
aW4ob3JpZ2luKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9
IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKKyAgICAgICAgaW5m
by0+ZGF0YWJhc2VNYW5hZ2VyLT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4u
Z2V0KCkpOworICAgICAgICBkZWxldGUgaW5mbzsKKyAgICB9CisKKyAgICBXZWJEYXRhYmFzZU1h
bmFnZXIqIGRhdGFiYXNlTWFuYWdlcjsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
bjsKK307CisKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogeworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsK
KyAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywg
b3JpZ2luKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHN0YXRpYyBCU1RSIGRhdGFi
YXNlRGlkTW9kaWZ5T3JpZ2luTmFtZSA9IFN5c0FsbG9jU3RyaW5nKFdlYkRhdGFiYXNlRGlkTW9k
aWZ5T3JpZ2luTm90aWZpY2F0aW9uKTsKICAgICBJV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBub3Rp
ZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1bHRDZW50ZXJJbnRlcm5hbCgp
OwogCkBAIC0zNTMsNiArMzgwLDExIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0
YWJhc2VNYW4KIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUp
CiB7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5E
YXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgc3RhdGljIEJTVFIgZGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5OYW1lID0g
U3lzQWxsb2NTdHJpbmcoV2ViRGF0YWJhc2VEaWRNb2RpZnlEYXRhYmFzZU5vdGlmaWNhdGlvbik7
CiAgICAgSVdlYk5vdGlmaWNhdGlvbkNlbnRlciogbm90aWZ5Q2VudGVyID0gV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpkZWZhdWx0Q2VudGVySW50ZXJuYWwoKTsKIApJbmRleDogV2ViS2l0L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5oCShyZXZpc2lvbiA2OTk4OSkKKysrIFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIFdlYkRhdGFiYXNlTWFuYWdlcigpOwotICAgIH5XZWJEYXRhYmFzZU1hbmFnZXIoKTsK
IAogICAgIFVMT05HIG1fcmVmQ291bnQ7CiB9Owo=
</data>
<flag name="review"
          id="61042"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="61043"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71228</attachid>
            <date>2010-10-19 16:57:38 -0700</date>
            <delta_ts>2010-10-19 17:37:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8116</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDEwOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTAtMTAtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgU2VjdXJpdHlPcmlnaW46OnRocmVhZHNhZmVDb3B5KCkgdG8gdGhlIGxpc3Qgb2YgZXhw
b3J0ZWQgc3ltYm9scy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxMC0xMC0xOSAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgg
KEVGTCwgbWF5YmUgbW9yZSkuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDcwMTA4KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzE4LDYgKzMxOCw3IEBAIF9fWk43
V2ViQ29yZTE0U1ZHU01JTEVsZW1lbnQxM2lzU01JTEVsZW0KIF9fWk43V2ViQ29yZTE0U2NoZW1l
UmVnaXN0cnkyNHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbEVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTE0U2NoZW1lUmVnaXN0cnkyNXJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmVFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNjaGVtZVJlZ2lzdHJ5MzJyZWdpc3RlclVSTFNjaGVt
ZUFzRW1wdHlEb2N1bWVudEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW4xNHRocmVhZHNhZmVDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNy
ZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9saWN5RQogX19aTjdXZWJD
b3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzAxMDgpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEwLTE5ICBEdW1pdHJ1IERh
bmlsaXVjICA8ZHVtaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwb3N0IHRoZSBEYXRhYmFzZVRyYWNrZXIgbm90aWZpY2F0
aW9ucyB0byB0aGUgbWFpbiB0aHJlYWQsIGlmIG5lZWRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNjU1CisKKyAgICAgICAgKiBTdG9yYWdlL1dl
YkRhdGFiYXNlVHJhY2tlckNsaWVudC5tbToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6
OmRpc3BhdGNoVG9NYWluVGhyZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OkRp
ZE1vZGlmeU9yaWdpbkRhdGEpOgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0YWJhc2VUcmFj
a2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UpOgorCiAyMDEwLTEwLTE5
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFz
ZVRyYWNrZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlVHJhY2tlckNsaWVudC5tbQkocmV2aXNpb24gNzAxMDgpCisrKyBXZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAKICNpbXBvcnQgIldlYkRhdGFiYXNlTWFuYWdlclByaXZhdGUuaCIKICNpbXBv
cnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAKQEAgLTUwLDEwICs1MSw0MiBAQCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6
OldlYkRhdGFiYXNlVHJhCiBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6On5XZWJEYXRhYmFzZVRy
YWNrZXJDbGllbnQoKQogewogfQotICAgIAorCitjbGFzcyBEaWRNb2RpZnlPcmlnaW5EYXRhIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFRv
TWFpblRocmVhZChXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNsaWVudCwgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKKyAgICB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGNvbnRleHQg
PSBuZXcgRGlkTW9kaWZ5T3JpZ2luRGF0YShjbGllbnQsIG9yaWdpbi0+dGhyZWFkc2FmZUNvcHko
KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJkRpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3Bh
dGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkLCBjb250ZXh0KTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YShXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQqIGNs
aWVudCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQorICAgICAgICA6IGNsaWVu
dChjbGllbnQpCisgICAgICAgICwgb3JpZ2luKG9yaWdpbikKKyAgICB7CisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQodm9pZCogY29u
dGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIERp
ZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8gPSBzdGF0aWNfY2FzdDxEaWRNb2RpZnlPcmlnaW5EYXRh
Kj4oY29udGV4dCk7CisgICAgICAgIGluZm8tPmNsaWVudC0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmln
aW4oaW5mby0+b3JpZ2luLmdldCgpKTsKKyAgICAgICAgZGVsZXRlIGluZm87CisgICAgfQorCisg
ICAgV2ViRGF0YWJhc2VUcmFja2VyQ2xpZW50KiBjbGllbnQ7CisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW47Cit9OworCiB2b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICAgUmV0
YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dl
YlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3Jp
Z2luXSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2RpZnlPcmln
aW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0
eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJD
b3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYkRhdGFiYXNlRGlkTW9kaWZ5
T3JpZ2luTm90aWZpY2F0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3Q6d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCldOwpAQCAt
NjEsNiArOTQsMTEgQEAgdm9pZCBXZWJEYXRhYmFzZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRAog
CiB2b2lkIFdlYkRhdGFiYXNlVHJhY2tlckNsaWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmll
cikKIHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdp
bkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5
T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNv
cmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB1
c2VySW5mbyhBZG9wdE5TLCBbW05TRGljdGlvbmFyeSBhbGxvY10gCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6KE5T
U3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyLCBXZWJEYXRhYmFzZUlkZW50aWZpZXJLZXksIG5p
bF0pOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwMTA4KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0xOSAgRHVtaXRydSBEYW5pbGl1
YyAgPGR1bWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcG9zdCB0aGUgRGF0YWJhc2VUcmFja2VyIG5vdGlmaWNhdGlvbnMg
dG8gdGhlIG1haW4gdGhyZWFkLCBpZiBuZWVkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY1NQorCisgICAgICAgICogV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhy
ZWFkKToKKyAgICAgICAgKERpZE1vZGlmeU9yaWdpbkRhdGE6OkRpZE1vZGlmeU9yaWdpbkRhdGEp
OgorICAgICAgICAoRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5P
bk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1v
ZGlmeU9yaWdpbik6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9k
aWZ5RGF0YWJhc2UpOgorCiAyMDEwLTEwLTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAJKHJldmlzaW9uIDcwMTA4KQorKysgV2ViS2l0
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2VudGVyLmgiCiAjaW5jbHVkZSAiV2ViU2Vj
dXJpdHlPcmlnaW4uaCIKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CkBAIC0zMjcsOCArMzI4LDQw
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW4KICAgICByZXR1cm4g
U19PSzsKIH0KIAorY2xhc3MgRGlkTW9kaWZ5T3JpZ2luRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hUb01haW5UaHJlYWQoV2ViRGF0
YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFnZXIsIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCisg
ICAgeworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBjb250ZXh0ID0gbmV3IERpZE1vZGlm
eU9yaWdpbkRhdGEoZGF0YWJhc2VNYW5hZ2VyLCBvcmlnaW4tPnRocmVhZHNhZmVDb3B5KCkpOwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaERp
ZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCwgY29udGV4dCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIERpZE1vZGlmeU9yaWdpbkRhdGEoV2ViRGF0YWJhc2VNYW5hZ2VyKiBkYXRhYmFzZU1hbmFn
ZXIsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikKKyAgICAgICAgOiBkYXRhYmFz
ZU1hbmFnZXIoZGF0YWJhc2VNYW5hZ2VyKQorICAgICAgICAsIG9yaWdpbihvcmlnaW4pCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWlu
VGhyZWFkKHZvaWQqIGNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZvID0gc3RhdGljX2Nhc3Q8RGlk
TW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOworICAgICAgICBpbmZvLT5kYXRhYmFzZU1hbmFn
ZXItPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdpbi5nZXQoKSk7CisgICAgICAg
IGRlbGV0ZSBpbmZvOworICAgIH0KKworICAgIFdlYkRhdGFiYXNlTWFuYWdlciogZGF0YWJhc2VN
YW5hZ2VyOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luOworfTsKKwogdm9pZCBX
ZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4pCiB7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgICAgICBEaWRNb2Rp
ZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgc3RhdGljIEJTVFIgZGF0YWJhc2VEaWRNb2RpZnlPcmln
aW5OYW1lID0gU3lzQWxsb2NTdHJpbmcoV2ViRGF0YWJhc2VEaWRNb2RpZnlPcmlnaW5Ob3RpZmlj
YXRpb24pOwogICAgIElXZWJOb3RpZmljYXRpb25DZW50ZXIqIG5vdGlmeUNlbnRlciA9IFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6ZGVmYXVsdENlbnRlckludGVybmFsKCk7CiAKQEAgLTM1Myw2ICsz
ODYsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhYmFzZU1hbgogCiB2b2lk
IFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKKyAgICBpZiAoIWlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9N
YWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBz
dGF0aWMgQlNUUiBkYXRhYmFzZURpZE1vZGlmeU9yaWdpbk5hbWUgPSBTeXNBbGxvY1N0cmluZyhX
ZWJEYXRhYmFzZURpZE1vZGlmeURhdGFiYXNlTm90aWZpY2F0aW9uKTsKICAgICBJV2ViTm90aWZp
Y2F0aW9uQ2VudGVyKiBub3RpZnlDZW50ZXIgPSBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmRlZmF1
bHRDZW50ZXJJbnRlcm5hbCgpOwogCg==
</data>
<flag name="review"
          id="61239"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="61240"
          type_id="3"
          status="-"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>