<?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>111631</bug_id>
          
          <creation_ts>2013-03-06 15:04:08 -0800</creation_ts>
          <short_desc>Regression: WebPageProxy::exceededDatabaseQuota() needs to be serialized</short_desc>
          <delta_ts>2013-03-07 17:33:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>849345</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-06 15:04:08 -0800</bug_when>
    <thetext>In webkit1, WebPageProxy::exceededDatabaseQuota() will only be called in a serial fashion.  Hence, if we have more than one webpage needing to put up the &quot;quota exceeded&quot; dialog, then only one of them will be put up at a time..  Subsequent ones will wait till the first one returns before proceeding.

With webkit2, there is now nothing to serialize the requests for putting up the &quot;quota exceeded&quot; dialog.  This patch will fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849350</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-06 15:07:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/13354445&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849443</commentid>
    <comment_count>2</comment_count>
      <attachid>191864</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-06 16:33:11 -0800</bug_when>
    <thetext>Created attachment 191864
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849450</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 16:35:03 -0800</bug_when>
    <thetext>Attachment 191864 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/HandleMessage.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/WebPageProxy.cpp:155:  The parameter name &quot;reply&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/UIProcess/WebPageProxy.cpp:155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/WebPageProxy.h:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849543</commentid>
    <comment_count>4</comment_count>
      <attachid>191864</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-06 17:47:00 -0800</bug_when>
    <thetext>Comment on attachment 191864
the patch.

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:155
&gt;&gt;&gt; +                   PassRefPtr&lt;Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&gt; reply);
&gt;&gt; 
&gt;&gt; The parameter name &quot;reply&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

I&apos;ll fix this indentation before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849658</commentid>
    <comment_count>5</comment_count>
      <attachid>191864</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-06 19:41:33 -0800</bug_when>
    <thetext>Comment on attachment 191864
the patch.

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        In webkit2, we can have multiple WebProcesses concurrently triggering a
&gt; +        call to this function. While the function is waiting on feedback from a
&gt; +        UI dialog, the wait loop may re-enter the function to service a second
&gt; +        request to call this function from another WebProcess. This results in

I&apos;m not sure if I understand the mechanism of this. Is this a CoreIPC bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849772</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-06 23:13:15 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 191864 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191864&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:15
&gt; &gt; +        In webkit2, we can have multiple WebProcesses concurrently triggering a
&gt; &gt; +        call to this function. While the function is waiting on feedback from a
&gt; &gt; +        UI dialog, the wait loop may re-enter the function to service a second
&gt; &gt; +        request to call this function from another WebProcess. This results in
&gt; 
&gt; I&apos;m not sure if I understand the mechanism of this. Is this a CoreIPC bug?

Alexey, to illustrate what went wrong in this bug, I&apos;ve include below an excerpt of the backtrace that has the recursive calls into Connection::SyncMessageState::dispatchMessages() (and WebPageProxy::exceededDatabaseQuota()) before my fix is applied.  Note: I added some blank lines and commentary in the middle to help highlight some points.

Regarding whether it is a bug for the idle loop to service more messages from CoreIPC or not (while waiting for user input on a modal dialog), I&apos;m not the best person to make that determination.  Maybe Anders can chime in.

=== BEGIN backtrace ===================
(gdb) bt
... // Cut out the higher levels of recursions for brevity.  Just showing one level of recursion below.

         // Here&apos;s the 2nd time we invoke the &quot;exceeded quota&quot; modal dialog on this stack.  We shouldn&apos;t be doing this.

#216 0x00007fff96136c8b in -[NSApplication runModalForWindow:] ()

         // 2nd time in exceededDatabaseQuota:

#217 0x000000010dcb0665 in Safari::BrowserContentViewController::exceededDatabaseQuota (this=0x7fb6a24c17d0, originDisplayName=@0x7fff52085cf0, requestingURL=@0x7fff52085ce8, databaseIdentifier=@0x7fff52085cc8, databaseDisplayName=@0x7fff52085cc0, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserContentViewController.mm:2501
#218 0x000000010dd24b41 in Safari::BrowserPageUIClient::exceededDatabaseQuota (this=0x7fb6a244ae10, frame=@0x7fff52085dc8, origin=@0x7fff52085dc0, databaseName=@0x7fff52085db8, displayName=@0x7fff52085db0, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserPageUIClient.mm:539
#219 0x000000010e072e97 in Safari::WK::exceededDatabaseQuota (page=0x7fb6a28e3400, frame=0x7fb6a3c2a130, origin=0x7fb6a7101c40, databaseName=0x7fb6a2468020, displayName=0x7fb6a7165f10, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1, clientInfo=0x7fb6a244ae10) at /Volumes/Source/ws7/Internal/Safari/Wrappers/WK/PageUIClient.cpp:345
#220 0x00000001115b1bd4 in WebKit::WebUIClient::exceededDatabaseQuota (this=0x7fb6a28e3598, page=0x7fb6a28e3400, frame=0x7fb6a3c2a130, origin=0x7fb6a7101c40, databaseName=@0x7fff52086168, databaseDisplayName=@0x7fff52086170, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebUIClient.cpp:324
#221 0x00000001114e8155 in WebKit::WebPageProxy::exceededDatabaseQuota (this=0x7fb6a28e3400, frameID=1, originIdentifier=@0x7fff52086160, databaseName=@0x7fff52086168, displayName=@0x7fff52086170, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1, newQuota=@0x7fff52086148) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebPageProxy.cpp:3945

#222 0x0000000111539117 in CoreIPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&amp;), unsigned long long, WTF::String, WTF::String, WTF::String, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&gt; (args=@0x7fff52086158, replyArgs=@0x7fff52086148, object=0x7fb6a28e3400, function={ptr = 4585324400, ptr = 0}) at HandleMessage.h:173
#223 0x000000011153740e in CoreIPC::handleMessage&lt;Messages::WebPageProxy::ExceededDatabaseQuota, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&amp;)&gt; (decoder=@0x7fb6a7005370, replyEncoder=@0x7fb6a713bc40, object=0x7fb6a28e3400, function={ptr = 4585324400, ptr = 0}) at HandleMessage.h:345
#224 0x0000000111531044 in WebKit::WebPageProxy::didReceiveSyncMessage (this=0x7fb6a28e3400, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebPageProxyMessageReceiver.cpp:816
#225 0x0000000111531aaf in non-virtual thunk to WebKit::WebPageProxy::didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, WTF::OwnPtr&lt;CoreIPC::MessageEncoder&gt;&amp;) (this=0x7fb6a28e3418, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebPageProxyMessageReceiver.cpp:894
#226 0x0000000111265512 in CoreIPC::MessageReceiverMap::dispatchSyncMessage (this=0x7fb6a3910b30, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp:103
#227 0x00000001111b917f in WebKit::ChildProcessProxy::dispatchSyncMessage (this=0x7fb6a3910af0, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Shared/ChildProcessProxy.cpp:112
#228 0x000000011158e1f2 in WebKit::WebProcessProxy::didReceiveSyncMessage (this=0x7fb6a3910af0, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebProcessProxy.cpp:378
#229 0x000000011158e2ef in non-virtual thunk to WebKit::WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, WTF::OwnPtr&lt;CoreIPC::MessageEncoder&gt;&amp;) (this=0x7fb6a3910af8, connection=0x7fb6a24db870, decoder=@0x7fb6a7005370, replyEncoder=@0x7fff52086f80) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebProcessProxy.cpp:390

         // 2nd time in dispatchMessages:

#230 0x00000001111c1011 in CoreIPC::Connection::dispatchSyncMessage (this=0x7fb6a24db870, decoder=@0x7fb6a7005370) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:728
#231 0x00000001111bd8f0 in CoreIPC::Connection::dispatchMessage (this=0x7fb6a24db870, incomingMessage=&lt;value temporarily unavailable, due to optimizations&gt;) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:778
#232 0x00000001111bd7b3 in CoreIPC::Connection::SyncMessageState::dispatchMessages (this=0x7fb6a24ab910, allowedConnection=0x7fb6a24db870) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:187
#233 0x00000001111bd63e in CoreIPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection (this=0x7fb6a24ab910, connection=0x7fb6a24db870) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:204
#234 0x00000001111d27ca in WTF::FunctionWrapper&lt;void (CoreIPC::Connection::SyncMessageState::*)(CoreIPC::Connection*)&gt;::operator() (this=0x7fb6a2659cb0, c=0x7fb6a24ab910, p1=0x7fb6a24db870) at Functional.h:246
#235 0x00000001111d273c in WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (CoreIPC::Connection::SyncMessageState::*)(CoreIPC::Connection*)&gt;, void ()(CoreIPC::Connection::SyncMessageState*, WTF::RefPtr&lt;CoreIPC::Connection&gt;)&gt;::operator() (this=0x7fb6a2659ca0) at Functional.h:522
#236 0x0000000113e93d6e in WTF::Function&lt;void ()()&gt;::operator() (this=0x7fff52087220) at Functional.h:704
#237 0x0000000113e93a1f in WebCore::RunLoop::performWork (this=0x7fb6a260a4c0) at /Volumes/Source/ws7/OpenSource/Source/WebCore/platform/RunLoop.cpp:91
#238 0x0000000113e94dde in WebCore::RunLoop::performWork (context=0x7fb6a260a4c0) at /Volumes/Source/ws7/OpenSource/Source/WebCore/platform/cf/RunLoopCF.cpp:66

         // 2nd time in idle wait loop waiting for user to click on a button on the modal dialog, but another sync message is in the queue to be processed (see above):

#239 0x00007fff8fae31b1 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#240 0x00007fff8fae2b16 in __CFRunLoopDoSources0 ()
#241 0x00007fff8fb00b7b in __CFRunLoopRun ()
#242 0x00007fff8fb000d9 in CFRunLoopRunSpecific ()
#243 0x00007fff8ba0b7d5 in RunCurrentEventLoopInMode ()
#244 0x00007fff8ba0b478 in ReceiveNextEventCommon ()
#245 0x00007fff8bb1dc2b in _BlockUntilNextEventMatchingListInModeWithFilter ()
#246 0x00007fff95f0471f in _DPSNextEvent ()
#247 0x00007fff95f03d4e in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#248 0x000000010dc69b13 in -[BrowserApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (self=0x7fb6a260f780, _cmd=0x7fff967b03cf, mask=18446744073709551615, expiration=0x422d63c37f00000d, mode=0x7fff7a333610, dequeue=1 &apos;\001&apos;) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserApplication.mm:365
#249 0x00007fff961369af in -[NSApplication _realDoModalLoop:peek:] ()

         // 1st time invoking the &quot;quota exceeded&quot; modal dialog:

#250 0x00007fff96136c8b in -[NSApplication runModalForWindow:] ()

         // 1st time in exceededDatabaseQuota:

#251 0x000000010dcb0665 in Safari::BrowserContentViewController::exceededDatabaseQuota (this=0x7fb6a3c12da0, originDisplayName=@0x7fff52088da0, requestingURL=@0x7fff52088d98, databaseIdentifier=@0x7fff52088d78, databaseDisplayName=@0x7fff52088d70, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserContentViewController.mm:2501
#252 0x000000010dd24b41 in Safari::BrowserPageUIClient::exceededDatabaseQuota (this=0x7fb6a3c0e920, frame=@0x7fff52088e78, origin=@0x7fff52088e70, databaseName=@0x7fff52088e68, displayName=@0x7fff52088e60, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserPageUIClient.mm:539
#253 0x000000010e072e97 in Safari::WK::exceededDatabaseQuota (page=0x7fb6a6814400, frame=0x7fb6a3c1de70, origin=0x7fb6a71281b0, databaseName=0x7fb6a7154610, displayName=0x7fb6a71307d0, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1, clientInfo=0x7fb6a3c0e920) at /Volumes/Source/ws7/Internal/Safari/Wrappers/WK/PageUIClient.cpp:345
#254 0x00000001115b1bd4 in WebKit::WebUIClient::exceededDatabaseQuota (this=0x7fb6a6814598, page=0x7fb6a6814400, frame=0x7fb6a3c1de70, origin=0x7fb6a71281b0, databaseName=@0x7fff52089218, databaseDisplayName=@0x7fff52089220, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebUIClient.cpp:324
#255 0x00000001114e8155 in WebKit::WebPageProxy::exceededDatabaseQuota (this=0x7fb6a6814400, frameID=1, originIdentifier=@0x7fff52089210, databaseName=@0x7fff52089218, displayName=@0x7fff52089220, currentQuota=5000000, currentOriginUsage=5001216, currentDatabaseUsage=0, expectedUsage=1, newQuota=@0x7fff520891f8) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebPageProxy.cpp:3945

#256 0x0000000111539117 in CoreIPC::callMemberFunction&lt;WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&amp;), unsigned long long, WTF::String, WTF::String, WTF::String, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&gt; (args=@0x7fff52089208, replyArgs=@0x7fff520891f8, object=0x7fb6a6814400, function={ptr = 4585324400, ptr = 0}) at HandleMessage.h:173
#257 0x000000011153740e in CoreIPC::handleMessage&lt;Messages::WebPageProxy::ExceededDatabaseQuota, WebKit::WebPageProxy, void (WebKit::WebPageProxy::*)(unsigned long long, WTF::String const&amp;, WTF::String const&amp;, WTF::String const&amp;, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long&amp;)&gt; (decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fb6a714c250, object=0x7fb6a6814400, function={ptr = 4585324400, ptr = 0}) at HandleMessage.h:345
#258 0x0000000111531044 in WebKit::WebPageProxy::didReceiveSyncMessage (this=0x7fb6a6814400, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebPageProxyMessageReceiver.cpp:816
#259 0x0000000111531aaf in non-virtual thunk to WebKit::WebPageProxy::didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, WTF::OwnPtr&lt;CoreIPC::MessageEncoder&gt;&amp;) (this=0x7fb6a6814418, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebPageProxyMessageReceiver.cpp:894
#260 0x0000000111265512 in CoreIPC::MessageReceiverMap::dispatchSyncMessage (this=0x7fb6a3c10080, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp:103
#261 0x00000001111b917f in WebKit::ChildProcessProxy::dispatchSyncMessage (this=0x7fb6a3c10040, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Shared/ChildProcessProxy.cpp:112
#262 0x000000011158e1f2 in WebKit::WebProcessProxy::didReceiveSyncMessage (this=0x7fb6a3c10040, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebProcessProxy.cpp:378
#263 0x000000011158e2ef in non-virtual thunk to WebKit::WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageDecoder&amp;, WTF::OwnPtr&lt;CoreIPC::MessageEncoder&gt;&amp;) (this=0x7fb6a3c10048, connection=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120, replyEncoder=@0x7fff5208a030) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/UIProcess/WebProcessProxy.cpp:390

         // 1st time in dispatchMessages:

#264 0x00000001111c1011 in CoreIPC::Connection::dispatchSyncMessage (this=0x7fb6a3a17e10, decoder=@0x7fb6a3b3a120) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:728
#265 0x00000001111bd8f0 in CoreIPC::Connection::dispatchMessage (this=0x7fb6a3a17e10, incomingMessage=&lt;value temporarily unavailable, due to optimizations&gt;) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:778
#266 0x00000001111bd7b3 in CoreIPC::Connection::SyncMessageState::dispatchMessages (this=0x7fb6a24ab910, allowedConnection=0x7fb6a3a17e10) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:187
#267 0x00000001111bd63e in CoreIPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection (this=0x7fb6a24ab910, connection=0x7fb6a3a17e10) at /Volumes/Source/ws7/OpenSource/Source/WebKit2/Platform/CoreIPC/Connection.cpp:204
#268 0x00000001111d27ca in WTF::FunctionWrapper&lt;void (CoreIPC::Connection::SyncMessageState::*)(CoreIPC::Connection*)&gt;::operator() (this=0x7fb6a3b3a2b0, c=0x7fb6a24ab910, p1=0x7fb6a3a17e10) at Functional.h:246
#269 0x00000001111d273c in WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (CoreIPC::Connection::SyncMessageState::*)(CoreIPC::Connection*)&gt;, void ()(CoreIPC::Connection::SyncMessageState*, WTF::RefPtr&lt;CoreIPC::Connection&gt;)&gt;::operator() (this=0x7fb6a3b3a2a0) at Functional.h:522
#270 0x0000000113e93d6e in WTF::Function&lt;void ()()&gt;::operator() (this=0x7fff5208a2d0) at Functional.h:704
#271 0x0000000113e93a1f in WebCore::RunLoop::performWork (this=0x7fb6a260a4c0) at /Volumes/Source/ws7/OpenSource/Source/WebCore/platform/RunLoop.cpp:91
#272 0x0000000113e94dde in WebCore::RunLoop::performWork (context=0x7fb6a260a4c0) at /Volumes/Source/ws7/OpenSource/Source/WebCore/platform/cf/RunLoopCF.cpp:66

         // 1st time in idle wait loop:

#273 0x00007fff8fae31b1 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#274 0x00007fff8fae2b16 in __CFRunLoopDoSources0 ()
#275 0x00007fff8fb00b7b in __CFRunLoopRun ()
#276 0x00007fff8fb000d9 in CFRunLoopRunSpecific ()
#277 0x00007fff8ba0b7d5 in RunCurrentEventLoopInMode ()
#278 0x00007fff8ba0b576 in ReceiveNextEventCommon ()
#279 0x00007fff8bb1dc2b in _BlockUntilNextEventMatchingListInModeWithFilter ()
#280 0x00007fff95f0471f in _DPSNextEvent ()
#281 0x00007fff95f03d4e in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#282 0x000000010dc69b13 in -[BrowserApplication nextEventMatchingMask:untilDate:inMode:dequeue:] (self=0x7fb6a260f780, _cmd=0x7fff967b03cf, mask=18446744073709551615, expiration=0x422d63c37f00000d, mode=0x7fff7a333610, dequeue=1 &apos;\001&apos;) at /Volumes/Source/ws7/Internal/Safari/Basics/BrowserApplication.mm:365
#283 0x00007fff95efbe8c in -[NSApplication run] ()
#284 0x00007fff95ea5d16 in NSApplicationMain ()
#285 0x000000010e0ef666 in SafariMain (argc=1, argv=0x7fff5208ba98) at /Volumes/Source/ws7/Internal/Safari/Basics/SafariMain.mm:52
#286 0x000000010db74f42 in main (argc=1, argv=0x7fff5208ba98) at /Volumes/Source/ws7/Internal/Safari/Basics/main.c:13
(gdb) 
=== END backtrace ===================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849785</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-06 23:25:49 -0800</bug_when>
    <thetext>It seems wrong to me that CoreIPC messages are being handled under a modal dialog, and perhaps that&apos;s what we should fix instead. Anders would know for sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850296</commentid>
    <comment_count>8</comment_count>
      <attachid>191864</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-07 11:05:52 -0800</bug_when>
    <thetext>Comment on attachment 191864
the patch.

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:150
&gt; +    static ExceededDatabaseQuotaRecords&amp; getRecords();

Our idiomatic name for a singleton is &quot;shared()&quot;.

Please remember that the &quot;get&quot; prefix is reserved for out parameters.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:176
&gt; +    static ExceededDatabaseQuotaRecords* records = 0;
&gt; +    // FIXME: The following is vulnerable to a race between threads. Need to
&gt; +    // implement a thread safe on-first-use static initializer.
&gt; +    if (!records)
&gt; +        records = new ExceededDatabaseQuotaRecords();
&gt; +
&gt; +    return *records;

Please use DEFINE_STATIC_LOCAL.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:179
&gt; +void ExceededDatabaseQuotaRecords::add(uint64_t frameID, String originIdentifier,

This function should take a PassOwnPtr&lt;Record&gt; as its argument.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:198
&gt; +ExceededDatabaseQuotaRecords::Record* ExceededDatabaseQuotaRecords::getNext()

This should be named &quot;next()&quot;.

Please remember that the get prefix is reserved for out parameters.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:203
&gt; +    else
&gt; +        m_currentRecord.clear();

I think this would be clearer if you started by unconditionally clearing m_currentRecord.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850368</commentid>
    <comment_count>9</comment_count>
      <attachid>192065</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-07 12:17:36 -0800</bug_when>
    <thetext>Created attachment 192065
updated patch.

Addressed Geoff&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850371</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 12:19:48 -0800</bug_when>
    <thetext>Attachment 192065 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/HandleMessage.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.messages.in&apos;]&quot; exit_code: 1
Source/WebKit2/UIProcess/WebPageProxy.cpp:180:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/UIProcess/WebPageProxy.cpp:4012:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebKit2/UIProcess/WebPageProxy.h:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850383</commentid>
    <comment_count>11</comment_count>
      <attachid>192065</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-07 12:34:29 -0800</bug_when>
    <thetext>Comment on attachment 192065
updated patch.

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

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:180
&gt;&gt; +    PassOwnPtr&lt;Record&gt; record = adoptPtr(new Record);
&gt; 
&gt; Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]

I&apos;ll change this to an OwnPtr and release it on return below.

&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:4012
&gt;&gt; +    PassOwnPtr&lt;ExceededDatabaseQuotaRecords::Record&gt; newRecord =  records.createRecord(frameID,
&gt; 
&gt; Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]

I&apos;ll change this to an OwnPtr and release it to add() below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850688</commentid>
    <comment_count>12</comment_count>
      <attachid>192065</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-07 17:22:38 -0800</bug_when>
    <thetext>Comment on attachment 192065
updated patch.

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

r=me with the changes you mentioned.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:175
&gt; +PassOwnPtr&lt;ExceededDatabaseQuotaRecords::Record&gt; ExceededDatabaseQuotaRecords::createRecord(

Usually we put the &apos;create&apos; function inside the class. In this case, it would be Record::create.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850697</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-03-07 17:33:58 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r145164: &lt;http://trac.webkit.org/changeset/145164&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191864</attachid>
            <date>2013-03-06 16:33:11 -0800</date>
            <delta_ts>2013-03-07 12:17:36 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-111631.patch</filename>
            <type>text/plain</type>
            <size>11342</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDk5OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEzLTAzLTA2ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJQYWdlUHJveHk6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSgpIG5lZWRzIHRvIGJlIHNlcmlhbGl6ZWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2MzEuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgV2ViUGFnZVByb3h5
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoKSBpcyBjYWxsZWQgc3luY2hyb25vdXNseQorICAgICAg
ICB3aXRoIHNjcmlwdCBleGVjdXRpb24gaW4gdGhlIFdlYlByb2Nlc3MuIEhlbmNlLCBpdCBpcyBu
ZXZlciBjYWxsZWQgaW4gYQorICAgICAgICByZWN1cnNpdmUgbWFubmVyLgorCisgICAgICAgIElu
IHdlYmtpdDIsIHdlIGNhbiBoYXZlIG11bHRpcGxlIFdlYlByb2Nlc3NlcyBjb25jdXJyZW50bHkg
dHJpZ2dlcmluZyBhCisgICAgICAgIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4gV2hpbGUgdGhlIGZ1
bmN0aW9uIGlzIHdhaXRpbmcgb24gZmVlZGJhY2sgZnJvbSBhCisgICAgICAgIFVJIGRpYWxvZywg
dGhlIHdhaXQgbG9vcCBtYXkgcmUtZW50ZXIgdGhlIGZ1bmN0aW9uIHRvIHNlcnZpY2UgYSBzZWNv
bmQKKyAgICAgICAgcmVxdWVzdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbm90aGVyIFdl
YlByb2Nlc3MuIFRoaXMgcmVzdWx0cyBpbgorICAgICAgICBwcm9ibGVtcyB3aGVyZSBzb21lIG9m
IHRoZSBXZWJQcm9jZXNzZXMgd2lsbCBub3QgZ2V0IGEgcHJvcGVyIHJlcGx5LCBhbmQKKyAgICAg
ICAgdGhlcmVmb3JlIGhhbmdzIHBlcnBldHVhbGx5IHdhaXRpbmcgZm9yIGEgbm9uLWZvcnRoY29t
aW5nIHJlcGx5LgorCisgICAgICAgIFRoaXMgY2hhbmdlc2V0IGNoYW5nZXMgdGhlIGZ1bmN0aW9u
IHRvIHF1ZXVlIHRoZSByZXF1ZXN0cyBhbmQgZW5zdXJlCisgICAgICAgIHRoYXQgd2UgZG8gbm90
IHJlY3Vyc2l2ZWx5IGNhbGxiYWNrIHRvIHRoZSBVSSBjbGllbnQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1i
ZXJGdW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKToKKyAgICAgICAgKFJlY29yZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFyZUJlaW5nUHJv
Y2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6
RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YVJlY29yZHM6On5FeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKToKKyAg
ICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Z2V0UmVjb3Jkcyk6
CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmdldE5leHQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKIDIwMTMtMDMtMDYgIFN1ZGFyc2FuYSBOYWdpbmVu
aSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBpbnRlbC5jb20+CiAKICAgICAgICAgW0dUS11bV0syXSBJ
bXBsZW1lbnQgV2ViSW5zcGVjdG9yOjpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgdG8gcmV0dXJuIHRo
ZSBmaWxlIFVSTCBvZiBsb2NhbGl6ZWRTdHJpbmdzLmpzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMTQ0OTkzKQor
KysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxNiw2ICsyMTYsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29u
c3QgQXJndW1lbnRzMgogICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFy
Z3MuYXJndW1lbnQyLCBkZWxheWVkUmVwbHkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0
eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5h
bWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIFA4
LCB0eXBlbmFtZSBSPgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzODxQ
MSwgUDIsIFAzLCBQNCwgUDUsIFA2LCBQNywgUDg+JiBhcmdzLCBQYXNzUmVmUHRyPFI+IGRlbGF5
ZWRSZXBseSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rp
b24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3Mu
YXJndW1lbnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1lbnQ3
LCBhcmdzLmFyZ3VtZW50OCwgZGVsYXllZFJlcGx5KTsKK30KKwogLy8gRGlzcGF0Y2ggZnVuY3Rp
b25zIHdpdGggY29ubmVjdGlvbiBwYXJhbWV0ZXIuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBl
bmFtZSBNRj4KIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24s
IGNvbnN0IEFyZ3VtZW50czAmLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE0NDk5MykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzIsNiArMTMyLDc4IEBAIFdLUGFnZURlYnVnUGFpbnRGbGFncyBXZWJQYWdlUHJveHk6
OnNfZGUKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3Vu
dGVyLCB3ZWJQYWdlUHJveHlDb3VudGVyLCAoIldlYlBhZ2VQcm94eSIpKTsKIAorY2xhc3MgRXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkcyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0cnVjdCBSZWNvcmQgeworICAgICAgICB1aW50NjRfdCBmcmFtZUlEOworICAg
ICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFt
ZTsKKyAgICAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOworICAgICAgICB1aW50NjRfdCBjdXJyZW50
UXVvdGE7CisgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKKyAgICAgICAgdWlu
dDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2U7CisgICAgICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2U7CisgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFi
YXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7CisgICAgfTsKKworICAgIHN0YXRpYyBFeGNl
ZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBnZXRSZWNvcmRzKCk7CisKKyAgICB2b2lkIGFkZCh1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwKKyAgICAgICAgU3RyaW5n
IGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEs
CisgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERh
dGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAorICAgICAgICAgICAgICAgICAg
IFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+IHJlcGx5KTsKKworICAgIGJvb2wgYXJlQmVpbmdQcm9jZXNzZWQoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRSZWNvcmQ7IH0KKyAgICBSZWNvcmQqIGdldE5leHQoKTsK
KworcHJpdmF0ZToKKyAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKCkgeyB9CisgICAg
fkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMoKSB7IH0KKworICAgIERlcXVlPE93blB0cjxS
ZWNvcmQ+ID4gbV9yZWNvcmRzOworICAgIE93blB0cjxSZWNvcmQ+IG1fY3VycmVudFJlY29yZDsK
K307CisKK0V4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIEV4Y2VlZGVkRGF0YWJhc2VRdW90
YVJlY29yZHM6OmdldFJlY29yZHMoKQoreworICAgIHN0YXRpYyBFeGNlZWRlZERhdGFiYXNlUXVv
dGFSZWNvcmRzKiByZWNvcmRzID0gMDsKKyAgICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBpcyB2
dWxuZXJhYmxlIHRvIGEgcmFjZSBiZXR3ZWVuIHRocmVhZHMuIE5lZWQgdG8KKyAgICAvLyBpbXBs
ZW1lbnQgYSB0aHJlYWQgc2FmZSBvbi1maXJzdC11c2Ugc3RhdGljIGluaXRpYWxpemVyLgorICAg
IGlmICghcmVjb3JkcykKKyAgICAgICAgcmVjb3JkcyA9IG5ldyBFeGNlZWRlZERhdGFiYXNlUXVv
dGFSZWNvcmRzKCk7CisKKyAgICByZXR1cm4gKnJlY29yZHM7Cit9CisKK3ZvaWQgRXhjZWVkZWRE
YXRhYmFzZVF1b3RhUmVjb3Jkczo6YWRkKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyLAorICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwg
dWludDY0X3QgY3VycmVudFF1b3RhLAorICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwg
dWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAor
ICAgIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1
b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIFJlY29yZCogcmVjb3JkID0gIG5ldyBS
ZWNvcmQ7CisgICAgcmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKKyAgICByZWNvcmQtPm9yaWdp
bklkZW50aWZpZXIgPSBvcmlnaW5JZGVudGlmaWVyOworICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1l
ID0gZGF0YWJhc2VOYW1lOworICAgIHJlY29yZC0+ZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsK
KyAgICByZWNvcmQtPmN1cnJlbnRRdW90YSA9IGN1cnJlbnRRdW90YTsKKyAgICByZWNvcmQtPmN1
cnJlbnRPcmlnaW5Vc2FnZSA9IGN1cnJlbnRPcmlnaW5Vc2FnZTsKKyAgICByZWNvcmQtPmN1cnJl
bnREYXRhYmFzZVVzYWdlID0gY3VycmVudERhdGFiYXNlVXNhZ2U7CisgICAgcmVjb3JkLT5leHBl
Y3RlZFVzYWdlID0gZXhwZWN0ZWRVc2FnZTsKKyAgICByZWNvcmQtPnJlcGx5ID0gcmVwbHk7CisK
KyAgICBtX3JlY29yZHMuYXBwZW5kKGFkb3B0UHRyKHJlY29yZCkpOworfQorCitFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6
OmdldE5leHQoKQoreworICAgIGlmICghbV9yZWNvcmRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9j
dXJyZW50UmVjb3JkID0gbV9yZWNvcmRzLnRha2VGaXJzdCgpOworICAgIGVsc2UKKyAgICAgICAg
bV9jdXJyZW50UmVjb3JkLmNsZWFyKCk7CisgICAgcmV0dXJuIG1fY3VycmVudFJlY29yZC5nZXQo
KTsKK30KKwogI2lmICFMT0dfRElTQUJMRUQKIHN0YXRpYyBjb25zdCBjaGFyKiB3ZWJLZXlib2Fy
ZEV2ZW50VHlwZVN0cmluZyhXZWJFdmVudDo6VHlwZSB0eXBlKQogewpAQCAtMzkzNSwxNCArNDAw
NywyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0CiAgICAgbV9s
b2FkZXJDbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSh0aGlz
LCBmcmFtZSwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZSwgdWludDY0X3QmIG5ld1F1b3RhKQordm9pZCBXZWJQYWdlUHJveHk6OmV4
Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5V
c2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1
b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
bV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsK
KyAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiByZWNvcmRzID0gRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6Z2V0UmVjb3JkcygpOworICAgIHJlY29yZHMuYWRkKGZyYW1lSUQs
IG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRRdW90
YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2Fn
ZSwgcmVwbHkpOwogCi0gICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBXZWJT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlm
aWVyKTsKKyAgICBpZiAocmVjb3Jkcy5hcmVCZWluZ1Byb2Nlc3NlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQqIHJlY29yZCA9
IHJlY29yZHMuZ2V0TmV4dCgpOworICAgIHdoaWxlIChyZWNvcmQpIHsKKyAgICAgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKHJlY29yZC0+ZnJhbWVJRCk7Cisg
ICAgICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgbmV3UXVvdGEgPSBtX3VpQ2xpZW50
LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLCBkYXRhYmFz
ZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UpOworICAgICAgICBSZWZQdHI8V2ViU2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyKHJlY29yZC0+b3JpZ2luSWRlbnRpZmllcik7CisKKyAgICAgICAgdWludDY0
X3QgbmV3UXVvdGEgPSBtX3VpQ2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh0aGlzLCBmcmFt
ZSwgb3JpZ2luLmdldCgpLAorICAgICAgICAgICAgcmVjb3JkLT5kYXRhYmFzZU5hbWUsIHJlY29y
ZC0+ZGlzcGxheU5hbWUsIHJlY29yZC0+Y3VycmVudFF1b3RhLAorICAgICAgICAgICAgcmVjb3Jk
LT5jdXJyZW50T3JpZ2luVXNhZ2UsIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UsIHJlY29y
ZC0+ZXhwZWN0ZWRVc2FnZSk7CisKKyAgICAgICAgcmVjb3JkLT5yZXBseS0+c2VuZChuZXdRdW90
YSk7CisgICAgICAgIHJlY29yZCA9IHJlY29yZHMuZ2V0TmV4dCgpOworICAgIH0KIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50
NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRp
ZmllcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDE0NDk5MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBACiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIldlYkxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50Lmg+IC8vIEZJWE1FOiBOZWVkZWQgYnkgV2ViUGFnZVByb3h5TWVzc2FnZXMuaCBmb3IgRElD
VEFUSU9OX0FMVEVSTkFUSVZFUy4KKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBvbGljeUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViVUlDbGllbnQuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0FsdGVybmF0
aXZlVGV4dENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgpA
QCAtODU3LDcgKzg1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CiAg
ICAgdm9pZCBydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6Rmls
ZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgcHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlE
KTsKLSAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIHVpbnQ2NF90JiBuZXdRdW90YSk7CisgICAgdm9pZCBleGNlZWRl
ZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6
RGVsYXllZFJlcGx5Pik7CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9y
RnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9y
aWdpbklkZW50aWZpZXIpOwogICAgIHZvaWQgcnVuTW9kYWwoKTsKICAgICB2b2lkIG5vdGlmeVNj
cm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAxNDQ5OTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Y2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgICMgRGF0YWJhc2UgbWVzc2Fn
ZXMKLSAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJp
bmcgb3JpZ2luSWRlbnRpZmllciwgV1RGOjpTdHJpbmcgZGF0YWJhc2VOYW1lLCBXVEY6OlN0cmlu
ZyBkYXRhYmFzZURpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90
IGV4cGVjdGVkVXNhZ2UpIC0+ICh1aW50NjRfdCBuZXdRdW90YSkKKyAgICBFeGNlZWRlZERhdGFi
YXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwg
V1RGOjpTdHJpbmcgZGF0YWJhc2VOYW1lLCBXVEY6OlN0cmluZyBkYXRhYmFzZURpc3BsYXlOYW1l
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWlu
dDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UpIC0+ICh1
aW50NjRfdCBuZXdRdW90YSkgRGVsYXllZAogCiAgICAgIyBHZW9sb2NhdGlvbiBtZXNzYWdlcwog
ICAgIFJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2Nh
dGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192065</attachid>
            <date>2013-03-07 12:17:36 -0800</date>
            <delta_ts>2013-03-07 17:22:38 -0800</delta_ts>
            <desc>updated patch.</desc>
            <filename>bug-111631.patch</filename>
            <type>text/plain</type>
            <size>11437</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTExNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA3ICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJQYWdlUHJveHk6OmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSgpIG5lZWRzIHRvIGJlIHNlcmlhbGl6ZWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2MzEuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgV2ViUGFnZVByb3h5
OjpleGNlZWRlZERhdGFiYXNlUXVvdGEoKSBpcyBjYWxsZWQgc3luY2hyb25vdXNseQorICAgICAg
ICB3aXRoIHNjcmlwdCBleGVjdXRpb24gaW4gdGhlIFdlYlByb2Nlc3MuIEhlbmNlLCBpdCBpcyBu
ZXZlciBjYWxsZWQgaW4gYQorICAgICAgICByZWN1cnNpdmUgbWFubmVyLgorCisgICAgICAgIElu
IHdlYmtpdDIsIHdlIGNhbiBoYXZlIG11bHRpcGxlIFdlYlByb2Nlc3NlcyBjb25jdXJyZW50bHkg
dHJpZ2dlcmluZyBhCisgICAgICAgIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4gV2hpbGUgdGhlIGZ1
bmN0aW9uIGlzIHdhaXRpbmcgb24gZmVlZGJhY2sgZnJvbSBhCisgICAgICAgIFVJIGRpYWxvZywg
dGhlIHdhaXQgbG9vcCBtYXkgcmUtZW50ZXIgdGhlIGZ1bmN0aW9uIHRvIHNlcnZpY2UgYSBzZWNv
bmQKKyAgICAgICAgcmVxdWVzdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZnJvbSBhbm90aGVyIFdl
YlByb2Nlc3MuIFRoaXMgcmVzdWx0cyBpbgorICAgICAgICBwcm9ibGVtcyB3aGVyZSBzb21lIG9m
IHRoZSBXZWJQcm9jZXNzZXMgd2lsbCBub3QgZ2V0IGEgcHJvcGVyIHJlcGx5LCBhbmQKKyAgICAg
ICAgdGhlcmVmb3JlIGhhbmdzIHBlcnBldHVhbGx5IHdhaXRpbmcgZm9yIGEgbm9uLWZvcnRoY29t
aW5nIHJlcGx5LgorCisgICAgICAgIFRoaXMgY2hhbmdlc2V0IGNoYW5nZXMgdGhlIGZ1bmN0aW9u
IHRvIHF1ZXVlIHRoZSByZXF1ZXN0cyBhbmQgZW5zdXJlCisgICAgICAgIHRoYXQgd2UgZG8gbm90
IHJlY3Vyc2l2ZWx5IGNhbGxiYWNrIHRvIHRoZSBVSSBjbGllbnQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAgICAgKENvcmVJUEM6OmNhbGxNZW1i
ZXJGdW5jdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKToKKyAgICAgICAgKFJlY29yZCk6Cisg
ICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFyZUJlaW5nUHJv
Y2Vzc2VkKToKKyAgICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6
RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OkV4Y2VlZGVk
RGF0YWJhc2VRdW90YVJlY29yZHM6On5FeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKToKKyAg
ICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6c2hhcmVkKToKKyAg
ICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3JlYXRlUmVjb3Jk
KToKKyAgICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6bmV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxMy0wMy0wNyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsLWNoZWNrIHRoZSBwYWdlIG92ZXJs
YXkgYmVmb3JlIHRyeWluZyB0byB1c2UgaXQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gMTQ0OTkzKQorKysgU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9IYW5kbGVNZXNzYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNiw2ICsyMTYsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJn
dW1lbnRzMgogICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEsIGFyZ3MuYXJn
dW1lbnQyLCBkZWxheWVkUmVwbHkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFt
ZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQs
IHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIFA4LCB0eXBl
bmFtZSBSPgordm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oY29uc3QgQXJndW1lbnRzODxQMSwgUDIs
IFAzLCBQNCwgUDUsIFA2LCBQNywgUDg+JiBhcmdzLCBQYXNzUmVmUHRyPFI+IGRlbGF5ZWRSZXBs
eSwgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0LT4qZnVuY3Rpb24pKGFy
Z3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVudDMsIGFyZ3MuYXJndW1l
bnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3MuYXJndW1lbnQ3LCBhcmdz
LmFyZ3VtZW50OCwgZGVsYXllZFJlcGx5KTsKK30KKwogLy8gRGlzcGF0Y2ggZnVuY3Rpb25zIHdp
dGggY29ubmVjdGlvbiBwYXJhbWV0ZXIuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBN
Rj4KIHZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IEFyZ3VtZW50czAmLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE0NDk5MykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIsNiArMTMyLDc3IEBAIFdLUGFnZURlYnVnUGFpbnRGbGFncyBXZWJQYWdlUHJveHk6OnNfZGUK
IAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3
ZWJQYWdlUHJveHlDb3VudGVyLCAoIldlYlBhZ2VQcm94eSIpKTsKIAorY2xhc3MgRXhjZWVkZWRE
YXRhYmFzZVF1b3RhUmVjb3JkcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXhjZWVkZWRE
YXRhYmFzZVF1b3RhUmVjb3Jkcyk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0cnVjdCBSZWNvcmQgeworICAgICAgICB1aW50NjRfdCBmcmFtZUlEOworICAgICAgICBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllcjsKKyAgICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZTsKKyAg
ICAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOworICAgICAgICB1aW50NjRfdCBjdXJyZW50UXVvdGE7
CisgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKKyAgICAgICAgdWludDY0X3Qg
Y3VycmVudERhdGFiYXNlVXNhZ2U7CisgICAgICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2U7Cisg
ICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVv
dGE6OkRlbGF5ZWRSZXBseT4gcmVwbHk7CisgICAgfTsKKworICAgIHN0YXRpYyBFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzJiBzaGFyZWQoKTsKKworICAgIFBhc3NPd25QdHI8UmVjb3JkPiBj
cmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsCisg
ICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwgdWludDY0X3Qg
Y3VycmVudFF1b3RhLAorICAgICAgICB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2
NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCAKKyAgICAg
ICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVv
dGE6OkRlbGF5ZWRSZXBseT4pOworCisgICAgdm9pZCBhZGQoUGFzc093blB0cjxSZWNvcmQ+KTsK
KyAgICBib29sIGFyZUJlaW5nUHJvY2Vzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UmVj
b3JkOyB9CisgICAgUmVjb3JkKiBuZXh0KCk7CisKK3ByaXZhdGU6CisgICAgRXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3JkcygpIHsgfQorICAgIH5FeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRz
KCkgeyB9CisKKyAgICBEZXF1ZTxPd25QdHI8UmVjb3JkPiA+IG1fcmVjb3JkczsKKyAgICBPd25Q
dHI8UmVjb3JkPiBtX2N1cnJlbnRSZWNvcmQ7Cit9OworCitFeGNlZWRlZERhdGFiYXNlUXVvdGFS
ZWNvcmRzJiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaGFyZWQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcywgcmVjb3Jkcywg
KCkpOworICAgIHJldHVybiByZWNvcmRzOworfQorCitQYXNzT3duUHRyPEV4Y2VlZGVkRGF0YWJh
c2VRdW90YVJlY29yZHM6OlJlY29yZD4gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6Y3Jl
YXRlUmVjb3JkKAorICAgIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVy
LCBTdHJpbmcgZGF0YWJhc2VOYW1lLCBTdHJpbmcgZGlzcGxheU5hbWUsCisgICAgdWludDY0X3Qg
Y3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJl
bnREYXRhYmFzZVVzYWdlLAorICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVw
bHk+IHJlcGx5KQoreworICAgIFBhc3NPd25QdHI8UmVjb3JkPiByZWNvcmQgPSBhZG9wdFB0cihu
ZXcgUmVjb3JkKTsKKyAgICByZWNvcmQtPmZyYW1lSUQgPSBmcmFtZUlEOworICAgIHJlY29yZC0+
b3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbklkZW50aWZpZXI7CisgICAgcmVjb3JkLT5kYXRhYmFz
ZU5hbWUgPSBkYXRhYmFzZU5hbWU7CisgICAgcmVjb3JkLT5kaXNwbGF5TmFtZSA9IGRpc3BsYXlO
YW1lOworICAgIHJlY29yZC0+Y3VycmVudFF1b3RhID0gY3VycmVudFF1b3RhOworICAgIHJlY29y
ZC0+Y3VycmVudE9yaWdpblVzYWdlID0gY3VycmVudE9yaWdpblVzYWdlOworICAgIHJlY29yZC0+
Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2FnZTsKKyAgICByZWNvcmQt
PmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOworICAgIHJlY29yZC0+cmVwbHkgPSByZXBs
eTsKKyAgICByZXR1cm4gcmVjb3JkOworfQorCit2b2lkIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJl
Y29yZHM6OmFkZChQYXNzT3duUHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29y
ZD4gcmVjb3JkKQoreworICAgIG1fcmVjb3Jkcy5hcHBlbmQocmVjb3JkKTsKK30KKworRXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkKiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpuZXh0KCkKK3sKKyAgICBtX2N1cnJlbnRSZWNvcmQuY2xlYXIoKTsKKyAgICBpZiAoIW1f
cmVjb3Jkcy5pc0VtcHR5KCkpCisgICAgICAgIG1fY3VycmVudFJlY29yZCA9IG1fcmVjb3Jkcy50
YWtlRmlyc3QoKTsKKyAgICByZXR1cm4gbV9jdXJyZW50UmVjb3JkLmdldCgpOworfQorCiAjaWYg
IUxPR19ESVNBQkxFRAogc3RhdGljIGNvbnN0IGNoYXIqIHdlYktleWJvYXJkRXZlbnRUeXBlU3Ry
aW5nKFdlYkV2ZW50OjpUeXBlIHR5cGUpCiB7CkBAIC0zOTM1LDE0ICs0MDA2LDMxIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXQKICAgICBtX2xvYWRlckNsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKHRoaXMsIGZyYW1lLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNw
bGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNh
Z2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdl
LCB1aW50NjRfdCYgbmV3UXVvdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRf
dCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOwotICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOworICAgIEV4Y2VlZGVk
RGF0YWJhc2VRdW90YVJlY29yZHMmIHJlY29yZHMgPSBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpzaGFyZWQoKTsKKyAgICBQYXNzT3duUHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29y
ZHM6OlJlY29yZD4gbmV3UmVjb3JkID0gIHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCisg
ICAgICAgIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJl
bnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLAorICAgICAgICBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgZXhwZWN0ZWRVc2FnZSwgcmVwbHkpOworICAgIHJlY29yZHMuYWRkKG5ld1JlY29yZCk7CiAK
LSAgICBSZWZQdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOworICAgIGlm
IChyZWNvcmRzLmFyZUJlaW5nUHJvY2Vzc2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEV4
Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZCogcmVjb3JkID0gcmVjb3Jkcy5uZXh0
KCk7CisgICAgd2hpbGUgKHJlY29yZCkgeworICAgICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUocmVjb3JkLT5mcmFtZUlEKTsKKyAgICAgICAgTUVTU0FHRV9D
SEVDSyhmcmFtZSk7CisKKyAgICAgICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQt
Pm9yaWdpbklkZW50aWZpZXIpOwogCi0gICAgbmV3UXVvdGEgPSBtX3VpQ2xpZW50LmV4Y2VlZGVk
RGF0YWJhc2VRdW90YSh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLCBkYXRhYmFzZU5hbWUsIGRp
c3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwgY3VycmVudERhdGFi
YXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UpOworICAgICAgICB1aW50NjRfdCBuZXdRdW90YSA9IG1f
dWlDbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRoaXMsIGZyYW1lLCBvcmlnaW4uZ2V0KCks
CisgICAgICAgICAgICByZWNvcmQtPmRhdGFiYXNlTmFtZSwgcmVjb3JkLT5kaXNwbGF5TmFtZSwg
cmVjb3JkLT5jdXJyZW50UXVvdGEsCisgICAgICAgICAgICByZWNvcmQtPmN1cnJlbnRPcmlnaW5V
c2FnZSwgcmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSwgcmVjb3JkLT5leHBlY3RlZFVzYWdl
KTsKKworICAgICAgICByZWNvcmQtPnJlcGx5LT5zZW5kKG5ld1F1b3RhKTsKKyAgICAgICAgcmVj
b3JkID0gcmVjb3Jkcy5uZXh0KCk7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTQ0OTkzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSwxMCArNDksMTEgQEAKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
V2ViTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4gLy8gRklYTUU6IE5l
ZWRlZCBieSBXZWJQYWdlUHJveHlNZXNzYWdlcy5oIGZvciBESUNUQVRJT05fQUxURVJOQVRJVkVT
LgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9saWN5
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNpbmNsdWRlICJXZWJV
SUNsaWVudC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQWx0ZXJuYXRpdmVUZXh0Q2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CkBAIC04NTcsNyArODU4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoKTsKICAgICB2b2lkIHJ1bk9wZW5QYW5l
bCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJik7
CiAgICAgdm9pZCBwcmludEZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
dWludDY0X3QmIG5ld1F1b3RhKTsKKyAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJy
ZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERh
dGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+KTsKICAg
ICB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9s
b2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBydW5Nb2RhbCgpOwogICAgIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJs
ZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE0NDk5
MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTIxMiw3ICsyMTIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQogCiAgICAgIyBEYXRhYmFzZSBtZXNzYWdlcwotICAgIEV4Y2VlZGVkRGF0
YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVy
LCBXVEY6OlN0cmluZyBkYXRhYmFzZU5hbWUsIFdURjo6U3RyaW5nIGRhdGFiYXNlRGlzcGxheU5h
bWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1
aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSkgLT4g
KHVpbnQ2NF90IG5ld1F1b3RhKQorICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBm
cmFtZUlELCBXVEY6OlN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCBXVEY6OlN0cmluZyBkYXRhYmFz
ZU5hbWUsIFdURjo6U3RyaW5nIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSkgLT4gKHVpbnQ2NF90IG5ld1F1b3RhKSBE
ZWxheWVkCiAKICAgICAjIEdlb2xvY2F0aW9uIG1lc3NhZ2VzCiAgICAgUmVxdWVzdEdlb2xvY2F0
aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFdURjo6U3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCg==
</data>
<flag name="review"
          id="213183"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>