<?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>85229</bug_id>
          
          <creation_ts>2012-04-30 14:06:09 -0700</creation_ts>
          <short_desc>Move RenderTableCell&apos;s row index to RenderTableRow</short_desc>
          <delta_ts>2012-05-01 09:32:21 -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>Tables</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>inferno</cc>
    
    <cc>ojan</cc>
    
    <cc>robert</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>612933</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-30 14:06:09 -0700</bug_when>
    <thetext>Apart from this being cleaner from a concept perspective (the row index is a RenderTableRow concept), it also avoids having to keep track and update all the cells&apos; indexes.

On top of that, it should enable more optimizations as the row now has an efficient way to query its row index.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>612984</commentid>
    <comment_count>1</comment_count>
      <attachid>139525</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-30 14:56:09 -0700</bug_when>
    <thetext>Created attachment 139525
Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613063</commentid>
    <comment_count>2</comment_count>
      <attachid>139525</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-30 16:45:45 -0700</bug_when>
    <thetext>Comment on attachment 139525
Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().

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

&gt; Source/WebCore/rendering/RenderTableRow.h:57
&gt; +        if (UNLIKELY(rowIndex &gt; maxRowIndex))
&gt; +            CRASH();

Odd.  I wonder if this overflow can get us in trouble, since we don&apos;t actually crash on release systems...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613065</commentid>
    <comment_count>3</comment_count>
      <attachid>139525</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-30 16:46:58 -0700</bug_when>
    <thetext>Comment on attachment 139525
Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().

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

Certainly looks like a big improvement. Please address comments before committing.

&gt; Source/WebCore/rendering/RenderTableCell.cpp:333
&gt; +    if (parent() &amp;&amp; section() &amp;&amp; oldStyle &amp;&amp; style()-&gt;height() != oldStyle-&gt;height())

Shouldn&apos;t you continue to check rowWasSet here? Seems like the same applies. rowIndex could be unsetRowIndex, no? Actually, now that I look at RenderTableSection::addChild, it looks like it might not be possible. If you think it&apos;s not possible, maybe add an ASSERT?

&gt; Source/WebCore/rendering/RenderTableCell.h:185
&gt;      unsigned m_column : 31;

If you s/31/30/ here you should be able to get better big packing here.

&gt; Source/WebCore/rendering/RenderTableRow.h:93
&gt; +    unsigned m_rowIndex : 31;

Don&apos;t think we need to make this a bitfield now that it doesn&apos;t save us any memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613079</commentid>
    <comment_count>4</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2012-04-30 17:11:29 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 139525 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139525&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTableRow.h:57
&gt; &gt; +        if (UNLIKELY(rowIndex &gt; maxRowIndex))
&gt; &gt; +            CRASH();
&gt; 
&gt; Odd.  I wonder if this overflow can get us in trouble, since we don&apos;t actually crash on release systems...

We do actually crash on release systems. e.g. testcase from ClusterFuzz. 

Testcase:
&lt;table&gt;&lt;tr style=&apos;-webkit-border-image: none; content: counter(ident46); &apos;&gt;&gt;&lt;style&gt;div {
&lt;/style&gt;&lt;th colspan=2147483647&gt;&lt;th&gt;&gt;

+----------------------------------------Release Build Stacktrace----------------------------------------+

/mnt/scratch0/clusterfuzz/slave-bot/builds/symbolized/release/asan-symbolized-linux-release-134098/chrome --no-first-run --single-process --disable-gpu-plugin --disable-gpu-rendering --disable-accelerated-compositing --disable-webgl --disable-accelerated-2d-canvas --user-data-dir=/mnt/scratch0/tmp/user_profile_chrome_0

LaunchProcess: failed to execvp:
/mnt/scratch0/clusterfuzz/slave-bot/builds/symbolized/release/asan-symbolized-linux-release-134098/nacl_helper_bootstrap
[11617:11617:29268359655:ERROR:nacl_fork_delegate_linux.cc(106)] Bad NaCl helper startup ack (0 bytes)
[11615:11627:29268402664:ERROR:proxy_service_factory.cc(84)] Cannot use V8 Proxy resolver in single process mode.
[11615:11627:29268640692:ERROR:proxy_service_factory.cc(84)] Cannot use V8 Proxy resolver in single process mode.
1   0x7fd08acb73da
2   0x7fd08acb7015
3   0x7fd08acb4cd1
4   0x7fd089b7ac1f
5   0x7fd089b59706
6   0x7fd089b2d24e
7   0x7fd08a05f009
8   0x7fd08a05ed63
9   0x7fd089ff8cc5
10  0x7fd089fd80e5
11  0x7fd089fd933a
12  0x7fd08cd27b1e
13  0x7fd08a6e343e
14  0x7fd089a2f5fc
15  0x7fd08a6e333b
16  0x7fd08a7406c2
17  0x7fd08a72c5cc
18  0x7fd08a741451
19  0x7fd089577582
20  0x7fd089578ed6
21  0x7fd089575a1e
22  0x7fd089574de7
23  0x7fd08947c642
24  0x7fd0887e75c4
25  0x7fd0887ed698
26  0x7fd0886f7623
27  0x7fd0886f7d89
28  0x7fd0886f80a2
29  0x7fd088704488
30  0x7fd0886f6e1c
31  0x7fd0886f5b18
ASAN:SIGSEGV
==11615== ERROR: AddressSanitizer crashed on unknown address 0x0000bbadbeef (pc 0x7fd08acb73f5 sp 0x7fd06eb65e80 bp 0x7fd06eb65e90 T16)
AddressSanitizer can not provide additional info. ABORTING
    #0 0x7fd08acb73f5 in WebCore::RenderTableCell::setCol(unsigned int) third_party/WebKit/Source/WebCore/rendering/RenderTableCell.h:57
    #1 0x7fd08acb7015 in WebCore::RenderTableSection::addCell(WebCore::RenderTableCell*, WebCore::RenderTableRow*) third_party/WebKit/Source/WebCore/rendering/RenderTableSection.cpp:271
    #2 0x7fd08acb4cd1 in WebCore::RenderTableRow::addChild(WebCore::RenderObject*, WebCore::RenderObject*) third_party/WebKit/Source/WebCore/rendering/RenderTableRow.cpp:132
    #3 0x7fd089b7ac1f in WebCore::NodeRendererFactory::createRendererIfNeeded() third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:405
    #4 0x7fd089b59706 in WebCore::Node::createRendererIfNeeded() third_party/WebKit/Source/WebCore/dom/Node.cpp:1427
    #5 0x7fd089b2d24e in WebCore::Element::attach() third_party/WebKit/Source/WebCore/dom/Element.cpp:960
    #6 0x7fd08a05f009 in WebCore::executeTask(WebCore::HTMLConstructionSiteTask&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:101
    #7 0x7fd08a05ed63 in WebCore::HTMLConstructionSite::executeQueuedTasks() third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:139
    #8 0x7fd089ff8cc5 in WebCore::HTMLTreeBuilder::constructTreeFromToken(WebCore::HTMLToken&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:461
    #9 0x7fd089fd80e5 in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:263
    #10 0x7fd089fd933a in WebCore::HTMLDocumentParser::append(WebCore::SegmentedString const&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:372
    #11 0x7fd08cd27b1e in WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter*, char const*, unsigned long) third_party/WebKit/Source/WebCore/dom/DecodedDataDocumentParser.cpp:50
    #12 0x7fd08a6e343e in ~RefPtr third_party/WebKit/Source/WTF/wtf/RefPtr.h:56
    #13 0x7fd089a2f5fc in WebKit::FrameLoaderClientImpl::committedLoad(WebCore::DocumentLoader*, char const*, int) third_party/WebKit/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1129
    #14 0x7fd08a6e333b in void WTF::derefIfNotNull&lt;WebCore::DocumentLoader&gt;(WebCore::DocumentLoader*) third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:52
    #15 0x7fd08a7406c2 in WebCore::ResourceLoader::didReceiveData(char const*, int, long long, bool) third_party/WebKit/Source/WebCore/loader/ResourceLoader.cpp:276
    #16 0x7fd08a72c5cc in void WTF::derefIfNotNull&lt;WebCore::MainResourceLoader&gt;(WebCore::MainResourceLoader*) third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:52
    #17 0x7fd08a741451 in WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) third_party/WebKit/Source/WebCore/loader/ResourceLoader.cpp:430
    #18 0x7fd089577582 in ResourceDispatcher::OnReceivedData(IPC::Message const&amp;, int, base::FileDescriptor, int, int) content/common/resource_dispatcher.cc:404
    #19 0x7fd089578ed6 in bool ResourceMsg_DataReceived::Dispatch&lt;ResourceDispatcher, ResourceDispatcher, int, base::FileDescriptor, int, int&gt;(IPC::Message const*, ResourceDispatcher*, ResourceDispatcher*, void (ResourceDispatcher::*)(IPC::Message const&amp;, int, base::FileDescriptor, int, int)) ./content/common/resource_messages.h:155
    #20 0x7fd089575a1e in ResourceDispatcher::DispatchMessage(IPC::Message const&amp;) content/common/resource_dispatcher.cc:557
    #21 0x7fd089574de7 in ResourceDispatcher::OnMessageReceived(IPC::Message const&amp;) content/common/resource_dispatcher.cc:326
    #22 0x7fd08947c642 in ChildThread::OnMessageReceived(IPC::Message const&amp;) content/common/child_thread.cc:177
    #23 0x7fd0887e75c4 in IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&amp;) ipc/ipc_channel_proxy.cc:269
    #24 0x7fd0887ed698 in base::internal::InvokeHelper&lt;false, void, base::internal::RunnableAdapter&lt;void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;)&gt;, void ()(IPC::ChannelProxy::Context* const&amp;, IPC::Message const&amp;)&gt;::MakeItSo(base::internal::RunnableAdapter&lt;void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;)&gt;, IPC::ChannelProxy::Context* const&amp;, IPC::Message const&amp;) ./base/bind_internal.h:897
    #25 0x7fd0886f7623 in MessageLoop::RunTask(base::PendingTask const&amp;) base/message_loop.cc:459
    #26 0x7fd0886f7d89 in MessageLoop::DeferOrRunPendingTask(base::PendingTask const&amp;) base/message_loop.cc:470
    #27 0x7fd0886f80a2 in MessageLoop::DoWork() base/message_loop.cc:647
    #28 0x7fd088704488 in base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_pump_default.cc:28
    #29 0x7fd0886f6e1c in MessageLoop::RunInternal() base/message_loop.cc:418
    #30 0x7fd0886f5b18 in MessageLoop::Run() base/message_loop.cc:301
    #31 0x7fd08876c461 in base::Thread::ThreadMain() base/threading/thread.cc:164
    #32 0x7fd0887614bc in base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:65
    #33 0x7fd08d53956c in __asan::AsanThread::ThreadStart() 
Stats: 30M malloced (51M for red zones) by 173565 calls
Stats: 1M realloced by 4424 calls
Stats: 23M freed by 127118 calls
Stats: 0M really freed by 0 calls
Stats: 116M (29708 full pages) mmaped in 29 calls
  mmaps   by size class: 8:163830; 9:16382; 10:12285; 11:4094; 12:2048; 13:512; 14:512; 15:128; 16:192; 17:32; 18:16; 20:4;
  mallocs by size class: 8:153839; 9:8310; 10:6959; 11:2351; 12:1276; 13:286; 14:318; 15:50; 16:151; 17:12; 18:12; 20:1;
  frees   by size class: 8:111742; 9:5707; 10:6082; 11:1922; 12:1037; 13:165; 14:290; 15:32; 16:129; 17:1; 18:10; 20:1;
  rfrees  by size class:
Stats: malloc large: 25 small slow: 676</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613094</commentid>
    <comment_count>5</comment_count>
      <attachid>139525</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-30 17:31:58 -0700</bug_when>
    <thetext>Comment on attachment 139525
Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().

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

&gt;&gt; Source/WebCore/rendering/RenderTableCell.cpp:333
&gt;&gt; +    if (parent() &amp;&amp; section() &amp;&amp; oldStyle &amp;&amp; style()-&gt;height() != oldStyle-&gt;height())
&gt; 
&gt; Shouldn&apos;t you continue to check rowWasSet here? Seems like the same applies. rowIndex could be unsetRowIndex, no? Actually, now that I look at RenderTableSection::addChild, it looks like it might not be possible. If you think it&apos;s not possible, maybe add an ASSERT?

The tests that prompted this check are passing even after that. The logic shouldn&apos;t allow this case anymore as we always set the row straight away (the logic on the cell side was open to race conditions as it didn&apos;t do it straight away). I will add the following ASSERT:

ASSERT(!row() || row()-&gt;rowIndexWasSet());

Adding back the rowIndexWasSet method.

&gt;&gt; Source/WebCore/rendering/RenderTableCell.h:185
&gt;&gt;      unsigned m_column : 31;
&gt; 
&gt; If you s/31/30/ here you should be able to get better big packing here.

You are totally right. However the change is big as-is so I didn&apos;t want to pollute it with an orthogonal - yet neat change. That will be moved to a follow-up bug.

&gt;&gt;&gt; Source/WebCore/rendering/RenderTableRow.h:57
&gt;&gt;&gt; +            CRASH();
&gt;&gt; 
&gt;&gt; Odd.  I wonder if this overflow can get us in trouble, since we don&apos;t actually crash on release systems...
&gt; 
&gt; We do actually crash on release systems. e.g. testcase from ClusterFuzz. 
&gt; 
&gt; Testcase:
&gt; &lt;table&gt;&lt;tr style=&apos;-webkit-border-image: none; content: counter(ident46); &apos;&gt;&gt;&lt;style&gt;div {
&gt; &lt;/style&gt;&lt;th colspan=2147483647&gt;&lt;th&gt;&gt;
&gt; 
&gt; +----------------------------------------Release Build Stacktrace----------------------------------------+
&gt; 
&gt; /mnt/scratch0/clusterfuzz/slave-bot/builds/symbolized/release/asan-symbolized-linux-release-134098/chrome --no-first-run --single-process --disable-gpu-plugin --disable-gpu-rendering --disable-accelerated-compositing --disable-webgl --disable-accelerated-2d-canvas --user-data-dir=/mnt/scratch0/tmp/user_profile_chrome_0
&gt; 
&gt; LaunchProcess: failed to execvp:
&gt; /mnt/scratch0/clusterfuzz/slave-bot/builds/symbolized/release/asan-symbolized-linux-release-134098/nacl_helper_bootstrap
&gt; [11617:11617:29268359655:ERROR:nacl_fork_delegate_linux.cc(106)] Bad NaCl helper startup ack (0 bytes)
&gt; [11615:11627:29268402664:ERROR:proxy_service_factory.cc(84)] Cannot use V8 Proxy resolver in single process mode.
&gt; [11615:11627:29268640692:ERROR:proxy_service_factory.cc(84)] Cannot use V8 Proxy resolver in single process mode.
&gt; 1   0x7fd08acb73da
&gt; 2   0x7fd08acb7015
&gt; 3   0x7fd08acb4cd1
&gt; 4   0x7fd089b7ac1f
&gt; 5   0x7fd089b59706
&gt; 6   0x7fd089b2d24e
&gt; 7   0x7fd08a05f009
&gt; 8   0x7fd08a05ed63
&gt; 9   0x7fd089ff8cc5
&gt; 10  0x7fd089fd80e5
&gt; 11  0x7fd089fd933a
&gt; 12  0x7fd08cd27b1e
&gt; 13  0x7fd08a6e343e
&gt; 14  0x7fd089a2f5fc
&gt; 15  0x7fd08a6e333b
&gt; 16  0x7fd08a7406c2
&gt; 17  0x7fd08a72c5cc
&gt; 18  0x7fd08a741451
&gt; 19  0x7fd089577582
&gt; 20  0x7fd089578ed6
&gt; 21  0x7fd089575a1e
&gt; 22  0x7fd089574de7
&gt; 23  0x7fd08947c642
&gt; 24  0x7fd0887e75c4
&gt; 25  0x7fd0887ed698
&gt; 26  0x7fd0886f7623
&gt; 27  0x7fd0886f7d89
&gt; 28  0x7fd0886f80a2
&gt; 29  0x7fd088704488
&gt; 30  0x7fd0886f6e1c
&gt; 31  0x7fd0886f5b18
&gt; ASAN:SIGSEGV
&gt; ==11615== ERROR: AddressSanitizer crashed on unknown address 0x0000bbadbeef (pc 0x7fd08acb73f5 sp 0x7fd06eb65e80 bp 0x7fd06eb65e90 T16)
&gt; AddressSanitizer can not provide additional info. ABORTING
&gt;     #0 0x7fd08acb73f5 in WebCore::RenderTableCell::setCol(unsigned int) third_party/WebKit/Source/WebCore/rendering/RenderTableCell.h:57
&gt;     #1 0x7fd08acb7015 in WebCore::RenderTableSection::addCell(WebCore::RenderTableCell*, WebCore::RenderTableRow*) third_party/WebKit/Source/WebCore/rendering/RenderTableSection.cpp:271
&gt;     #2 0x7fd08acb4cd1 in WebCore::RenderTableRow::addChild(WebCore::RenderObject*, WebCore::RenderObject*) third_party/WebKit/Source/WebCore/rendering/RenderTableRow.cpp:132
&gt;     #3 0x7fd089b7ac1f in WebCore::NodeRendererFactory::createRendererIfNeeded() third_party/WebKit/Source/WebCore/dom/NodeRenderingContext.cpp:405
&gt;     #4 0x7fd089b59706 in WebCore::Node::createRendererIfNeeded() third_party/WebKit/Source/WebCore/dom/Node.cpp:1427
&gt;     #5 0x7fd089b2d24e in WebCore::Element::attach() third_party/WebKit/Source/WebCore/dom/Element.cpp:960
&gt;     #6 0x7fd08a05f009 in WebCore::executeTask(WebCore::HTMLConstructionSiteTask&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:101
&gt;     #7 0x7fd08a05ed63 in WebCore::HTMLConstructionSite::executeQueuedTasks() third_party/WebKit/Source/WebCore/html/parser/HTMLConstructionSite.cpp:139
&gt;     #8 0x7fd089ff8cc5 in WebCore::HTMLTreeBuilder::constructTreeFromToken(WebCore::HTMLToken&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLTreeBuilder.cpp:461
&gt;     #9 0x7fd089fd80e5 in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:263
&gt;     #10 0x7fd089fd933a in WebCore::HTMLDocumentParser::append(WebCore::SegmentedString const&amp;) third_party/WebKit/Source/WebCore/html/parser/HTMLDocumentParser.cpp:372
&gt;     #11 0x7fd08cd27b1e in WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter*, char const*, unsigned long) third_party/WebKit/Source/WebCore/dom/DecodedDataDocumentParser.cpp:50
&gt;     #12 0x7fd08a6e343e in ~RefPtr third_party/WebKit/Source/WTF/wtf/RefPtr.h:56
&gt;     #13 0x7fd089a2f5fc in WebKit::FrameLoaderClientImpl::committedLoad(WebCore::DocumentLoader*, char const*, int) third_party/WebKit/Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1129
&gt;     #14 0x7fd08a6e333b in void WTF::derefIfNotNull&lt;WebCore::DocumentLoader&gt;(WebCore::DocumentLoader*) third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:52
&gt;     #15 0x7fd08a7406c2 in WebCore::ResourceLoader::didReceiveData(char const*, int, long long, bool) third_party/WebKit/Source/WebCore/loader/ResourceLoader.cpp:276
&gt;     #16 0x7fd08a72c5cc in void WTF::derefIfNotNull&lt;WebCore::MainResourceLoader&gt;(WebCore::MainResourceLoader*) third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:52
&gt;     #17 0x7fd08a741451 in WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) third_party/WebKit/Source/WebCore/loader/ResourceLoader.cpp:430
&gt;     #18 0x7fd089577582 in ResourceDispatcher::OnReceivedData(IPC::Message const&amp;, int, base::FileDescriptor, int, int) content/common/resource_dispatcher.cc:404
&gt;     #19 0x7fd089578ed6 in bool ResourceMsg_DataReceived::Dispatch&lt;ResourceDispatcher, ResourceDispatcher, int, base::FileDescriptor, int, int&gt;(IPC::Message const*, ResourceDispatcher*, ResourceDispatcher*, void (ResourceDispatcher::*)(IPC::Message const&amp;, int, base::FileDescriptor, int, int)) ./content/common/resource_messages.h:155
&gt;     #20 0x7fd089575a1e in ResourceDispatcher::DispatchMessage(IPC::Message const&amp;) content/common/resource_dispatcher.cc:557
&gt;     #21 0x7fd089574de7 in ResourceDispatcher::OnMessageReceived(IPC::Message const&amp;) content/common/resource_dispatcher.cc:326
&gt;     #22 0x7fd08947c642 in ChildThread::OnMessageReceived(IPC::Message const&amp;) content/common/child_thread.cc:177
&gt;     #23 0x7fd0887e75c4 in IPC::ChannelProxy::Context::OnDispatchMessage(IPC::Message const&amp;) ipc/ipc_channel_proxy.cc:269
&gt;     #24 0x7fd0887ed698 in base::internal::InvokeHelper&lt;false, void, base::internal::RunnableAdapter&lt;void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;)&gt;, void ()(IPC::ChannelProxy::Context* const&amp;, IPC::Message const&amp;)&gt;::MakeItSo(base::internal::RunnableAdapter&lt;void (IPC::ChannelProxy::Context::*)(IPC::Message const&amp;)&gt;, IPC::ChannelProxy::Context* const&amp;, IPC::Message const&amp;) ./base/bind_internal.h:897
&gt;     #25 0x7fd0886f7623 in MessageLoop::RunTask(base::PendingTask const&amp;) base/message_loop.cc:459
&gt;     #26 0x7fd0886f7d89 in MessageLoop::DeferOrRunPendingTask(base::PendingTask const&amp;) base/message_loop.cc:470
&gt;     #27 0x7fd0886f80a2 in MessageLoop::DoWork() base/message_loop.cc:647
&gt;     #28 0x7fd088704488 in base::MessagePumpDefault::Run(base::MessagePump::Delegate*) base/message_pump_default.cc:28
&gt;     #29 0x7fd0886f6e1c in MessageLoop::RunInternal() base/message_loop.cc:418
&gt;     #30 0x7fd0886f5b18 in MessageLoop::Run() base/message_loop.cc:301
&gt;     #31 0x7fd08876c461 in base::Thread::ThreadMain() base/threading/thread.cc:164
&gt;     #32 0x7fd0887614bc in base::(anonymous namespace)::ThreadFunc(void*) base/threading/platform_thread_posix.cc:65
&gt;     #33 0x7fd08d53956c in __asan::AsanThread::ThreadStart() 
&gt; Stats: 30M malloced (51M for red zones) by 173565 calls
&gt; Stats: 1M realloced by 4424 calls
&gt; Stats: 23M freed by 127118 calls
&gt; Stats: 0M really freed by 0 calls
&gt; Stats: 116M (29708 full pages) mmaped in 29 calls
&gt;   mmaps   by size class: 8:163830; 9:16382; 10:12285; 11:4094; 12:2048; 13:512; 14:512; 15:128; 16:192; 17:32; 18:16; 20:4;
&gt;   mallocs by size class: 8:153839; 9:8310; 10:6959; 11:2351; 12:1276; 13:286; 14:318; 15:50; 16:151; 17:12; 18:12; 20:1;
&gt;   frees   by size class: 8:111742; 9:5707; 10:6082; 11:1922; 12:1037; 13:165; 14:290; 15:32; 16:129; 17:1; 18:10; 20:1;
&gt;   rfrees  by size class:
&gt; Stats: malloc large: 25 small slow: 676

Violent comment!

Another proof are the ASSERT_DEATHs below that check that we do crash in this case. They are also running in Release (and I hope passing :)).

&gt;&gt; Source/WebCore/rendering/RenderTableRow.h:93
&gt;&gt; +    unsigned m_rowIndex : 31;
&gt; 
&gt; Don&apos;t think we need to make this a bitfield now that it doesn&apos;t save us any memory.

You are right again but I would rather keep it for 2 reasons: symmetry with the column case and also as it keeps one bit for future optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613123</commentid>
    <comment_count>6</comment_count>
      <attachid>139559</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-30 18:07:13 -0700</bug_when>
    <thetext>Created attachment 139559
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613168</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-30 18:56:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 139525 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139525&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/rendering/RenderTableCell.h:185
&gt; &gt;&gt;      unsigned m_column : 31;
&gt; &gt; 
&gt; &gt; If you s/31/30/ here you should be able to get better big packing here.
&gt; 
&gt; You are totally right. However the change is big as-is so I didn&apos;t want to pollute it with an orthogonal - yet neat change. That will be moved to a follow-up bug.

A FIXME would be good.

&gt; &gt;&gt; Source/WebCore/rendering/RenderTableRow.h:93
&gt; &gt;&gt; +    unsigned m_rowIndex : 31;
&gt; &gt; 
&gt; &gt; Don&apos;t think we need to make this a bitfield now that it doesn&apos;t save us any memory.
&gt; 
&gt; You are right again but I would rather keep it for 2 reasons: symmetry with the column case and also as it keeps one bit for future optimization.

Meh. Up to you, but I don&apos;t think it makes sense to clutter header files with bitfields that aren&apos;t accomplishing anything. Symmetry with the column case doesn&apos;t really buy us anything since we clamp the value anyways and it doesn&apos;t let us share more code or anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613197</commentid>
    <comment_count>8</comment_count>
      <attachid>139559</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 20:12:23 -0700</bug_when>
    <thetext>Comment on attachment 139559
Patch for landing

Clearing flags on attachment: 139559

Committed r115705: &lt;http://trac.webkit.org/changeset/115705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613198</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-30 20:12:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613462</commentid>
    <comment_count>10</comment_count>
      <attachid>139525</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-05-01 09:32:21 -0700</bug_when>
    <thetext>Comment on attachment 139525
Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().

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

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderTableCell.h:185
&gt;&gt;&gt;&gt;      unsigned m_column : 31;
&gt;&gt;&gt; 
&gt;&gt;&gt; If you s/31/30/ here you should be able to get better big packing here.
&gt;&gt; 
&gt;&gt; You are totally right. However the change is big as-is so I didn&apos;t want to pollute it with an orthogonal - yet neat change. That will be moved to a follow-up bug.
&gt; 
&gt; A FIXME would be good.

I was going to reap this optimization directly after which is why I didn&apos;t want to put the FIXME. Sorry for being unclear about me considering the optimization. I filed bug 85291 to track that and assigned it to me.

&gt;&gt;&gt;&gt; Source/WebCore/rendering/RenderTableRow.h:93
&gt;&gt;&gt;&gt; +    unsigned m_rowIndex : 31;
&gt;&gt;&gt; 
&gt;&gt;&gt; Don&apos;t think we need to make this a bitfield now that it doesn&apos;t save us any memory.
&gt;&gt; 
&gt;&gt; You are right again but I would rather keep it for 2 reasons: symmetry with the column case and also as it keeps one bit for future optimization.
&gt; 
&gt; Meh. Up to you, but I don&apos;t think it makes sense to clutter header files with bitfields that aren&apos;t accomplishing anything. Symmetry with the column case doesn&apos;t really buy us anything since we clamp the value anyways and it doesn&apos;t let us share more code or anything.

I really would prefer to keep it this way as it means we also keep the existing testing (that we would have to throw away if we remove the bitfield, then we would also have to re-do if we add it back).

Btw, we may clamp the value but most of the table code is manipulating unsigned without consideration of whether they will be truncated at the cell / row level, which would lead to bad behaviors. This is also the reason we CRASH() if we will overflow.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139525</attachid>
            <date>2012-04-30 14:56:09 -0700</date>
            <delta_ts>2012-05-01 09:32:21 -0700</delta_ts>
            <desc>Proposed refactoring 1: move the code to RenderTableRow and rename row() to rowIndex().</desc>
            <filename>bug-85229-20120430145608.patch</filename>
            <type>text/plain</type>
            <size>22476</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEzYzkwZTI4NmZiZjY4
M2ExYWVkZjcwNzBhZjdhMDNlYzZlYzZiMy4uNWY5M2YwZDYyOGJjNGEwNzNjNzY1OTBlNjNhOWY5
NWIwZjgyYjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTA0LTMwICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUmVu
ZGVyVGFibGVDZWxsJ3Mgcm93IGluZGV4IHRvIFJlbmRlclRhYmxlUm93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTIyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgdGhlIGV4aXN0aW5n
IHRhYmxlIHRlc3RzLgorCisgICAgICAgIFJvdyBpbmRleCBpcyBhIFJlbmRlclRhYmxlUm93IGNv
bmNlcHQgYW5kIGFzIHN1Y2ggdGhpcyBjaGFuZ2UgbW92ZXMKKyAgICAgICAgdGhlIHJlbGV2YW50
IGxvZ2ljIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgIFdoaWxlIHRvdWNoaW5nIHRoZSBjb2Rl
LCByZW5hbWVkIHJvdygpIC0+IHJvd0luZGV4KCkgYXMgbm93IFJlbmRlclRhYmxlQ2VsbAorICAg
ICAgICBjYW4gcmV0dXJuIGl0cyBwYXJlbnQgUmVuZGVyVGFibGVSb3cgYW5kIHdlIHdlcmUgcmV0
dXJuaW5nIGFuIGluZGV4LCBub3QgdGhlIHJvdworICAgICAgICBpdHNlbGYuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3cpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6
OmNlbGxBYm92ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2VsbEJlbG93KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjZWxsQmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlOjpjZWxsQWZ0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6Ondy
aXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgVXBkYXRlZCBhZnRlciB0aGUgcmVuYW1pbmcgUmVu
ZGVyVGFibGVDZWxsOjpyb3coKSAtPiByb3dJbmRleCgpLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6
OlJlbmRlclRhYmxlQ2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bXB1dGVDb2xsYXBzZWRCZWZvcmVCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkQWZ0ZXJCb3JkZXIpOgorICAgICAgICBVcGRhdGVkIGFm
dGVyIG1fcm93SW5kZXggcmVtb3ZhbCBhbmQgcm93KCkgLT4gcm93SW5kZXgoKSByZW5hbWluZy4K
KworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpzdHlsZURpZENoYW5nZSk6Cisg
ICAgICAgIFJlbW92ZWQgdGhlIHJvd1dhc1NldCBjaGVjay4gVGhlIG5ldyBsb2dpYyBndWFyYW50
ZWVzIHRoYXQgcm93IGluZGV4IHdhcyBzZXQKKyAgICAgICAgYXMgaXQgaXMgZG9uZSBhdCByb3cg
aW5zZXJ0aW9uIHRpbWUuIFRoZSBwcmV2aW91cyBsb2dpYyB3b3VsZCBzb21ldGltZXMgZGVsYXkK
KyAgICAgICAgdW50aWwgcmVjYWxjQ2VsbHMgd2FzIGNhbGxlZC4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6cm93KToKKyAgICAgICAgQWRkZWQgdGhpcyBSZW5kZXJUYWJsZVJvdyBnZXR0ZXIuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cm93SW5kZXgpOgorICAgICAgICBSZW5h
bWVkIGZyb20gcm93KCkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAg
IFVwZGF0ZWQgYWZ0ZXIgYWRkaW5nIG1fcm93SW5kZXggLyByb3dJbmRleCgpLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZVJvdzo6c2V0Um93SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6
OnJvd0luZGV4KToKKyAgICAgICAgQWRkZWQgdGhvc2UgZ2V0dGVyIC8gc2V0dGVyLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlU2VjdGlvbjo6cmVjYWxjQ2VsbHMpOgorICAgICAgICBNYWRlIHN1cmUgdGhhdCB3aGVu
ZXZlciB3ZSBpbnNlcnQgb3IgdXBkYXRlIG91ciByb3cgaW5kZXgKKyAgICAgICAgd2UgZG8gY2Fs
bCBzZXRSb3dJbmRleCgpLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246
OmFkZENlbGwpOgorICAgICAgICBUaGlzIGxvZ2ljIG5vdyBkb2Vzbid0IG5lZWQgdG8gcXVlcnkg
aW5zZXJ0aW9uUm93IGFzIHRoZSBjZWxsJ3MKKyAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGluZGV4
IG9mIHRoZSByb3cgaW4gd2hpY2ggaXQgaXMgaW5zZXJ0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbXBhcmVDZWxsUG9zaXRpb25zV2l0aE92ZXJmbG93aW5nQ2VsbHMpOgorICAgICAgICBNb3Jl
IHVwZGF0ZXMgYWZ0ZXIgcm93KCkgLT4gcm93SW5kZXgoKSByZW5hbWluZy4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgUmVtb3ZlZCByb3dJbmRl
eEZvclJlbmRlcmVyIG5vdyB0aGF0IHRoZSByb3cgY2FjaGVzIHRoaXMgaW5mb3JtYXRpbi4KKwog
MjAxMi0wNC0zMCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTIyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDJiOGEwNzkyZDBiMDlmMmVlMzY5MGJmNDY1Mzc3YmUwNDI2ODNmMzIu
LmQ1Yzk0YTMzZjZlZTY2MWZjMDczNzU5OTRmN2NkYzIwNTdmY2RkN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDQtMzAgIEp1bGllbiBDaGFmZnJh
aXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBSZW5kZXJUYWJsZUNl
bGwncyByb3cgaW5kZXggdG8gUmVuZGVyVGFibGVSb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcDoK
KyAgICAgICAgVXBkYXRlZCBhZnRlciB0aGUgcmVmYWN0b3JpbmcuCisKIDIwMTItMDQtMzAgIE1h
cmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
VXNlIG5ldyBzeW50YXggdG8gY2FsbCBjYWxsT25NYWluVGhyZWFkIGRpcmVjdGx5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5k
ZXggNTZlZjQ3YmNkNGE3ZmQzNzFjNTVmZjI0MDcyZjFmNTA5OWViZmJkMS4uODczODJlYmVlMzk1
OWEwNjRkYzlmYjMyZDAzMzMwOGQ5ZWNkZGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVt
bkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0YWJs
ZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQodGVzdFJvdywgY29sdW1uKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gY2VsbCBvdmVybGFwcGVkLiB1c2UgdGhpcyBvbmUKICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGNlbGwtPnJvd1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGNlbGwgJiYgKChjZWxsLT5yb3coKSArIChjZWxsLT5yb3dTcGFuKCkgLSAxKSkgPj0gc2VjdGlv
blNwZWNpZmljUm93KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxsLT5y
b3dJbmRleCgpICsgKGNlbGwtPnJvd1NwYW4oKSAtIDEpKSA+PSBzZWN0aW9uU3BlY2lmaWNSb3cp
KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNl
bGwgPSAwOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IGI1Zjc0NDVhMjEz
NTNhMTIxMzcyYjlkNjVlMjNhMmM3MGRjMjA2NzEuLjdlYzg3YjJkODBlMzQzZmQ3ZWI0MmIzM2Ux
NDgyMTJiMzBlNDMxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYgcm93
UmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRl
ckNlbGwgPSB0b1JlbmRlclRhYmxlQ2VsbChtX3JlbmRlcmVyKTsKLSAgICByb3dSYW5nZS5maXJz
dCA9IHJlbmRlckNlbGwtPnJvdygpOworICAgIHJvd1JhbmdlLmZpcnN0ID0gcmVuZGVyQ2VsbC0+
cm93SW5kZXgoKTsKICAgICByb3dSYW5nZS5zZWNvbmQgPSByZW5kZXJDZWxsLT5yb3dTcGFuKCk7
CiAgICAgCiAgICAgLy8gc2luY2Ugb3VyIHRhYmxlIG1pZ2h0IGhhdmUgbXVsdGlwbGUgc2VjdGlv
bnMsIHdlIGhhdmUgdG8gb2Zmc2V0IG91ciByb3cgYXBwcm9wcmlhdGVseQpAQCAtMTYwLDcgKzE2
MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxl
VUlFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWNvbCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBpbnQgcm93ID0gcmVuZGVyQ2VsbC0+cm93KCk7CisgICAgaW50IHJvdyA9IHJlbmRlckNlbGwt
PnJvd0luZGV4KCk7CiAKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSByZW5kZXJD
ZWxsLT5zZWN0aW9uKCk7CiAgICAgaWYgKCFzZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggOTg2NDc2ZWQ5ZmY5NmMwOGVjYWRlZGM3MDRhMjc0YTBj
OTYzNmZmZi4uZDhhYWEwMzYwZTI2MzAyZDc4MTA5ZTJmMTQ2YmJhZmIwNGRjZmU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMTM0LDcgKzExMzQsNyBA
QCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWJvdmUoY29uc3QgUmVuZGVyVGFi
bGVDZWxsKiBjZWxsKSBjb25zdAogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAogICAg
IC8vIEZpbmQgdGhlIHNlY3Rpb24gYW5kIHJvdyB0byBsb29rIGluCi0gICAgdW5zaWduZWQgciA9
IGNlbGwtPnJvdygpOworICAgIHVuc2lnbmVkIHIgPSBjZWxsLT5yb3dJbmRleCgpOwogICAgIFJl
bmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgckFib3ZlID0gMDsK
ICAgICBpZiAociA+IDApIHsKQEAgLTExNjMsNyArMTE2Myw3IEBAIFJlbmRlclRhYmxlQ2VsbCog
UmVuZGVyVGFibGU6OmNlbGxCZWxvdyhjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0
CiAgICAgcmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwogCiAgICAgLy8gRmluZCB0aGUgc2VjdGlv
biBhbmQgcm93IHRvIGxvb2sgaW4KLSAgICB1bnNpZ25lZCByID0gY2VsbC0+cm93KCkgKyBjZWxs
LT5yb3dTcGFuKCkgLSAxOworICAgIHVuc2lnbmVkIHIgPSBjZWxsLT5yb3dJbmRleCgpICsgY2Vs
bC0+cm93U3BhbigpIC0gMTsKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSAwOwog
ICAgIHVuc2lnbmVkIHJCZWxvdyA9IDA7CiAgICAgaWYgKHIgPCBjZWxsLT5zZWN0aW9uKCktPm51
bVJvd3MoKSAtIDEpIHsKQEAgLTExOTUsNyArMTE5NSw3IEBAIFJlbmRlclRhYmxlQ2VsbCogUmVu
ZGVyVGFibGU6OmNlbGxCZWZvcmUoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAog
ICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBJZiB3ZSBoaXQgYSBjb2xzcGFuIGJhY2sg
dXAgdG8gYSByZWFsIGNlbGwuCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0JiBw
cmV2Q2VsbCA9IHNlY3Rpb24tPmNlbGxBdChjZWxsLT5yb3coKSwgZWZmQ29sIC0gMSk7CisgICAg
UmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0JiBwcmV2Q2VsbCA9IHNlY3Rpb24tPmNlbGxB
dChjZWxsLT5yb3dJbmRleCgpLCBlZmZDb2wgLSAxKTsKICAgICByZXR1cm4gcHJldkNlbGwucHJp
bWFyeUNlbGwoKTsKIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgUmVuZGVyVGFibGVDZWxsKiBS
ZW5kZXJUYWJsZTo6Y2VsbEFmdGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QK
ICAgICB1bnNpZ25lZCBlZmZDb2wgPSBjb2xUb0VmZkNvbChjZWxsLT5jb2woKSArIGNlbGwtPmNv
bFNwYW4oKSk7CiAgICAgaWYgKGVmZkNvbCA+PSBudW1FZmZDb2xzKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlDZWxsQXQoY2VsbC0+cm93
KCksIGVmZkNvbCk7CisgICAgcmV0dXJuIGNlbGwtPnNlY3Rpb24oKS0+cHJpbWFyeUNlbGxBdChj
ZWxsLT5yb3dJbmRleCgpLCBlZmZDb2wpOwogfQogCiBSZW5kZXJCbG9jayogUmVuZGVyVGFibGU6
OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKaW5kZXggNDcxMjFiZGYxN2QyNmZlNDk4Y2U2NzdiYmE1ZTBhNmQ4YTBj
Y2ZkYS4uNjg3M2UwYTlhNWI1YWE5NTNiOTMyZTExOWMxYWM5NDQ3NmRkNzJiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQzLDcgKzQzLDYg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJU
YWJsZUNlbGwoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCi0gICAgLCBtX3Jv
dyh1bnNldFJvd0luZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQogICAgICwg
bV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1faGFzQXNzb2NpYXRlZFRhYmxlQ2Vs
bEVsZW1lbnQobm9kZSAmJiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZS0+aGFzVGFn
TmFtZSh0aFRhZykpKQpAQCAtMzMxLDggKzMzMCw4IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
CiAgICAgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKICAgICBz
ZXRIYXNCb3hEZWNvcmF0aW9ucyh0cnVlKTsKIAotICAgIGlmIChwYXJlbnQoKSAmJiBzZWN0aW9u
KCkgJiYgb2xkU3R5bGUgJiYgc3R5bGUoKS0+aGVpZ2h0KCkgIT0gb2xkU3R5bGUtPmhlaWdodCgp
ICYmIHJvd1dhc1NldCgpKQotICAgICAgICBzZWN0aW9uKCktPnJvd0xvZ2ljYWxIZWlnaHRDaGFu
Z2VkKHJvdygpKTsKKyAgICBpZiAocGFyZW50KCkgJiYgc2VjdGlvbigpICYmIG9sZFN0eWxlICYm
IHN0eWxlKCktPmhlaWdodCgpICE9IG9sZFN0eWxlLT5oZWlnaHQoKSkKKyAgICAgICAgc2VjdGlv
bigpLT5yb3dMb2dpY2FsSGVpZ2h0Q2hhbmdlZChyb3dJbmRleCgpKTsKIAogICAgIC8vIElmIGJv
cmRlciB3YXMgY2hhbmdlZCwgbm90aWZ5IHRhYmxlLgogICAgIGlmIChwYXJlbnQoKSkgewpAQCAt
NTk3LDcgKzU5Niw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29t
cHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcihJbmNsdWRlQm9yZGVyCiAgICAgCiAgICAgLy8gTm93
IGNoZWNrIHJvdyBncm91cHMuCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9
IHNlY3Rpb24oKTsKLSAgICBpZiAoIXJvdygpKSB7CisgICAgaWYgKCFyb3dJbmRleCgpKSB7CiAg
ICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYmVmb3JlIGJvcmRlci4KICAgICAgICAgcmVz
dWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY3VyclNlY3Rp
b24tPnN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBpbmNsdWRlQ29sb3IgPyBjdXJyU2VjdGlvbi0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZUNvbG9yUHJvcGVydHkpIDogQ29s
b3IoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQpAQCAtNjc1
LDcgKzY3NCw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0
ZUNvbGxhcHNlZEFmdGVyQm9yZGVyKEluY2x1ZGVCb3JkZXJDCiAgICAgCiAgICAgLy8gTm93IGNo
ZWNrIHJvdyBncm91cHMuCiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBjdXJyU2VjdGlvbiA9IHNl
Y3Rpb24oKTsKLSAgICBpZiAocm93KCkgKyByb3dTcGFuKCkgPj0gY3VyclNlY3Rpb24tPm51bVJv
d3MoKSkgeworICAgIGlmIChyb3dJbmRleCgpICsgcm93U3BhbigpID49IGN1cnJTZWN0aW9uLT5u
dW1Sb3dzKCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBhZnRlciBib3JkZXIu
CiAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBpbmNsdWRlQ29sb3IgPyBj
dXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9w
ZXJ0eSkgOiBDb2xvcigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKaW5kZXggMDZh
Mjc3NDZhZWFhNzkzY2MyMzBhNmU3NWQzNTdlOGExMWNjYjJhOS4uY2EwYzFjYzBmNDBjM2RmODg5
MTY5OTI3M2EwZmRlOWY1Nzc2MmY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBSZW5kZXJUYWJsZUNlbGxf
aAogI2RlZmluZSBSZW5kZXJUYWJsZUNlbGxfaAogCisjaW5jbHVkZSAiUmVuZGVyVGFibGVSb3cu
aCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzIsOSArMzMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgdW5zZXRDb2x1bW5JbmRleCA9IDB4N0ZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbWF4Q29sdW1uSW5kZXggPSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiAKLXN0YXRp
YyBjb25zdCB1bnNpZ25lZCB1bnNldFJvd0luZGV4ID0gMHg3RkZGRkZGRjsKLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhSb3dJbmRleCA9IDB4N0ZGRkZGRkU7IC8vIDIsMTQ3LDQ4Myw2NDYKLQog
ZW51bSBJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbHVkZUJvcmRlckNvbG9yLCBJ
bmNsdWRlQm9yZGVyQ29sb3IgfTsKIAogY2xhc3MgUmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJl
bmRlckJsb2NrIHsKQEAgLTY1LDI0ICs2MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2NvbHVtbjsKICAgICB9CiAKLSAgICB2b2lkIHNldFJvdyh1bnNpZ25lZCByb3cpCi0gICAgewot
ICAgICAgICBpZiAoVU5MSUtFTFkocm93ID4gbWF4Um93SW5kZXgpKQotICAgICAgICAgICAgQ1JB
U0goKTsKLQotICAgICAgICBtX3JvdyA9IHJvdzsKLSAgICB9CisgICAgUmVuZGVyVGFibGVSb3cq
IHJvdygpIGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGVSb3cocGFyZW50KCkpOyB9CisgICAg
UmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJUYWJs
ZVNlY3Rpb24ocGFyZW50KCktPnBhcmVudCgpKTsgfQorICAgIFJlbmRlclRhYmxlKiB0YWJsZSgp
IGNvbnN0IHsgcmV0dXJuIHRvUmVuZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpLT5wYXJlbnQo
KSk7IH0KIAotICAgIGJvb2wgcm93V2FzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9yb3cgIT0gdW5z
ZXRSb3dJbmRleDsgfQotICAgIHVuc2lnbmVkIHJvdygpIGNvbnN0CisgICAgdW5zaWduZWQgcm93
SW5kZXgoKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNTRVJUKHJvd1dhc1NldCgpKTsKLSAgICAg
ICAgcmV0dXJuIG1fcm93OworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZG4ndCBiZSBj
YWxsZWQgb24gYSBkZXRhY2hlZCBjZWxsLgorICAgICAgICBBU1NFUlQocm93KCkpOworICAgICAg
ICByZXR1cm4gcm93KCktPnJvd0luZGV4KCk7CiAgICAgfQogCi0gICAgUmVuZGVyVGFibGVTZWN0
aW9uKiBzZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJUYWJsZVNlY3Rpb24ocGFyZW50
KCktPnBhcmVudCgpKTsgfQotICAgIFJlbmRlclRhYmxlKiB0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IHRvUmVuZGVyVGFibGUocGFyZW50KCktPnBhcmVudCgpLT5wYXJlbnQoKSk7IH0KLQogICAgIExl
bmd0aCBzdHlsZU9yQ29sTG9naWNhbFdpZHRoKCkgY29uc3Q7CiAKICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHRGb3JSb3dTaXppbmcoKSBjb25zdDsKQEAgLTE5MCw3ICsxODEsNiBAQCBwcml2
YXRlOgogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbXB1dGVDb2xsYXBzZWRCZWZvcmVCb3Jk
ZXIoSW5jbHVkZUJvcmRlckNvbG9yT3JOb3QgPSBJbmNsdWRlQm9yZGVyQ29sb3IpIGNvbnN0Owog
ICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbXB1dGVDb2xsYXBzZWRBZnRlckJvcmRlcihJbmNs
dWRlQm9yZGVyQ29sb3JPck5vdCA9IEluY2x1ZGVCb3JkZXJDb2xvcikgY29uc3Q7CiAKLSAgICB1
bnNpZ25lZCBtX3JvdyA6IDMxOwogICAgIGJvb2wgbV9jZWxsV2lkdGhDaGFuZ2VkIDogMTsKICAg
ICB1bnNpZ25lZCBtX2NvbHVtbiA6IDMxOwogICAgIGJvb2wgbV9oYXNBc3NvY2lhdGVkVGFibGVD
ZWxsRWxlbWVudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcAppbmRleCA5YWM4ZWNiMGZhNTkwM2U4OTAxNGFhY2RhNGU2MjM4MTE1NjE0ZTA0Li5mNWEz
ZDY1MzNlOWUyNDUyNDRiNWIyZjQyMmYxZjZhZTFmZDI2OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KE5vZGUq
IG5vZGUpCiAgICAgOiBSZW5kZXJCb3gobm9kZSkKKyAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJ
bmRleCkKIHsKICAgICAvLyBpbml0IFJlbmRlck9iamVjdCBhdHRyaWJ1dGVzCiAgICAgc2V0SW5s
aW5lKGZhbHNlKTsgICAvLyBvdXIgb2JqZWN0IGlzIG5vdCBJbmxpbmUKQEAgLTcyLDcgKzczLDcg
QEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKICAgICAgICAgdXBkYXRlQmVmb3JlQW5kQWZ0ZXJD
b250ZW50KCk7CiAKICAgICBpZiAoc2VjdGlvbigpICYmIG9sZFN0eWxlICYmIHN0eWxlKCktPmxv
Z2ljYWxIZWlnaHQoKSAhPSBvbGRTdHlsZS0+bG9naWNhbEhlaWdodCgpKQotICAgICAgICBzZWN0
aW9uKCktPnJvd0xvZ2ljYWxIZWlnaHRDaGFuZ2VkKHNlY3Rpb24oKS0+cm93SW5kZXhGb3JSZW5k
ZXJlcih0aGlzKSk7CisgICAgICAgIHNlY3Rpb24oKS0+cm93TG9naWNhbEhlaWdodENoYW5nZWQo
cm93SW5kZXgoKSk7CiAKICAgICAvLyBJZiBib3JkZXIgd2FzIGNoYW5nZWQsIG5vdGlmeSB0YWJs
ZS4KICAgICBpZiAocGFyZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlUm93LmgKaW5kZXggOTI3NTUxYjU2N2Q2MWNmM2RjNTRhNmM0ZDcwZWM1ZWQ3MTYyMGMzYS4u
NjU0NGVhZDQyODQ0ZTJmNGIxZDE5ZWY0N2ZlYTFmMTQwNzY3NGE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKQEAgLTI5LDYgKzI5LDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgdW5zZXRSb3dJbmRleCA9IDB4
N0ZGRkZGRkY7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Um93SW5kZXggPSAweDdGRkZGRkZF
OyAvLyAyLDE0Nyw0ODMsNjQ2CisKIGNsYXNzIFJlbmRlclRhYmxlUm93IDogcHVibGljIFJlbmRl
ckJveCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyVGFibGVSb3coTm9kZSopOwpAQCAt
NDgsNiArNTEsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7CiAgICAgfQogCisgICAgdm9pZCBzZXRSb3dJbmRleCh1
bnNpZ25lZCByb3dJbmRleCkKKyAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWShyb3dJbmRleCA+
IG1heFJvd0luZGV4KSkKKyAgICAgICAgICAgIENSQVNIKCk7CisKKyAgICAgICAgbV9yb3dJbmRl
eCA9IHJvd0luZGV4OworICAgIH0KKworICAgIHVuc2lnbmVkIHJvd0luZGV4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3Jvd0luZGV4ICE9IHVuc2V0Um93SW5kZXgpOworICAgICAg
ICByZXR1cm4gbV9yb3dJbmRleDsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7
IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxk
cmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpAQCAtNzMsNiArOTAsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3Qg
bV9jaGlsZHJlbjsKKyAgICB1bnNpZ25lZCBtX3Jvd0luZGV4IDogMzE7CiB9OwogCiBpbmxpbmUg
UmVuZGVyVGFibGVSb3cqIHRvUmVuZGVyVGFibGVSb3coUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4
IDhkODdiMTU3YjY5MTllOWI5MjNiYWE5ZDk3NWQ5M2ZiM2ZhOThmYjQuLjI5MGFhMDRiYzFkOTY2
Y2M3NTM1NzJjZDg5NzliODRhOTM3MzBjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xNzYsNyArMTc2LDkgQEAgdm9pZCBSZW5k
ZXJUYWJsZVNlY3Rpb246OmFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQKIAogICAgIGVuc3VyZVJvd3MobV9jUm93KTsKIAotICAgIG1fZ3JpZFtp
bnNlcnRpb25Sb3ddLnJvd1JlbmRlcmVyID0gdG9SZW5kZXJUYWJsZVJvdyhjaGlsZCk7CisgICAg
UmVuZGVyVGFibGVSb3cqIHJvdyA9IHRvUmVuZGVyVGFibGVSb3coY2hpbGQpOworICAgIG1fZ3Jp
ZFtpbnNlcnRpb25Sb3ddLnJvd1JlbmRlcmVyID0gcm93OworICAgIHJvdy0+c2V0Um93SW5kZXgo
aW5zZXJ0aW9uUm93KTsKIAogICAgIGlmICghYmVmb3JlQ2hpbGQpCiAgICAgICAgIHNldFJvd0xv
Z2ljYWxIZWlnaHRUb1Jvd1N0eWxlTG9naWNhbEhlaWdodElmTm90UmVsYXRpdmUobV9ncmlkW2lu
c2VydGlvblJvd10pOwpAQCAtMjIwLDkgKzIyMiw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
OjphZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgUmVuZGVyVGFibGVSb3cqIHJvdykKICAg
ICB1bnNpZ25lZCBjU3BhbiA9IGNlbGwtPmNvbFNwYW4oKTsKICAgICBWZWN0b3I8UmVuZGVyVGFi
bGU6OkNvbHVtblN0cnVjdD4mIGNvbHVtbnMgPSB0YWJsZSgpLT5jb2x1bW5zKCk7CiAgICAgdW5z
aWduZWQgbkNvbHMgPSBjb2x1bW5zLnNpemUoKTsKLSAgICAvLyBhZGRDZWxsIHNob3VsZCBiZSBj
YWxsZWQgb25seSBhZnRlciBtX2NSb3cgaGFzIGJlZW4gaW5jcmVtZW50ZWQuCi0gICAgQVNTRVJU
KG1fY1Jvdyk7Ci0gICAgdW5zaWduZWQgaW5zZXJ0aW9uUm93ID0gbV9jUm93IC0gMTsKKyAgICB1
bnNpZ25lZCBpbnNlcnRpb25Sb3cgPSByb3ctPnJvd0luZGV4KCk7CiAKICAgICAvLyAjIyMgbW96
aWxsYSBzdGlsbCBzZWVtcyB0byBkbyB0aGUgb2xkIEhUTUwgd2F5LCBldmVuIGZvciBzdHJpY3Qg
RFRECiAgICAgLy8gKHNlZSB0aGUgYW5ub3RhdGlvbiBvbiB0YWJsZSBjZWxsIGxheW91dGluZyBp
biB0aGUgQ1NTIHNwZWNzIGFuZCB0aGUgdGVzdGNhc2UgYmVsb3c6CkBAIC0yNjYsNyArMjY2LDYg
QEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmFkZENlbGwoUmVuZGVyVGFibGVDZWxsKiBjZWxs
LCBSZW5kZXJUYWJsZVJvdyogcm93KQogICAgICAgICBjU3BhbiAtPSBjdXJyZW50U3BhbjsKICAg
ICAgICAgaW5Db2xTcGFuID0gdHJ1ZTsKICAgICB9Ci0gICAgY2VsbC0+c2V0Um93KGluc2VydGlv
blJvdyk7CiAgICAgY2VsbC0+c2V0Q29sKHRhYmxlKCktPmVmZkNvbFRvQ29sKGNvbCkpOwogfQog
CkBAIC0zNDgsMTEgKzM0NywxMSBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9n
aWNhbEhlaWdodCgpCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBhcmUgYWx3YXlzIGFkZGlu
ZyB0aGUgaGVpZ2h0IG9mIGEgcm93c3BhbiB0byB0aGUgbGFzdCByb3dzIHdoaWNoIGRvZXNuJ3Qg
bWF0Y2gKICAgICAgICAgICAgIC8vIG90aGVyIGJyb3dzZXJzLiBTZWUgd2Via2l0Lm9yZy9iLzUy
MTg1IGZvciBleGFtcGxlLgotICAgICAgICAgICAgaWYgKChjZWxsLT5yb3coKSArIGNlbGwtPnJv
d1NwYW4oKSAtIDEpICE9IHIpCisgICAgICAgICAgICBpZiAoKGNlbGwtPnJvd0luZGV4KCkgKyBj
ZWxsLT5yb3dTcGFuKCkgLSAxKSAhPSByKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAvLyBGb3Igcm93IHNwYW5uaW5nIGNlbGxzLCB8cnwgaXMgdGhlIGxhc3Qgcm93
IGluIHRoZSBzcGFuLgotICAgICAgICAgICAgdW5zaWduZWQgY2VsbFN0YXJ0Um93ID0gY2VsbC0+
cm93KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjZWxsU3RhcnRSb3cgPSBjZWxsLT5yb3dJbmRl
eCgpOwogCiAgICAgICAgICAgICBpZiAoY2VsbC0+aGFzT3ZlcnJpZGVIZWlnaHQoKSkgewogICAg
ICAgICAgICAgICAgIGlmICghc3RhdGVQdXNoZXIuZGlkUHVzaCgpKSB7CkBAIC01NTQsNyArNTUz
LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoKQogICAgICAgICAgICAg
aWYgKCFjZWxsIHx8IGNzLmluQ29sU3BhbikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgcmluZHggPSBjZWxsLT5yb3coKTsKKyAgICAgICAgICAgIHJpbmR4ID0gY2Vs
bC0+cm93SW5kZXgoKTsKICAgICAgICAgICAgIHJIZWlnaHQgPSBtX3Jvd1Bvc1tyaW5keCArIGNl
bGwtPnJvd1NwYW4oKV0gLSBtX3Jvd1Bvc1tyaW5keF0gLSB2c3BhY2luZzsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gRm9yY2UgcGVyY2VudCBoZWlnaHQgY2hpbGRyZW4gdG8gbGF5IHRo
ZW1zZWx2ZXMgb3V0IGFnYWluLgpAQCAtOTg5LDE1ICs5ODgsMTUgQEAgdm9pZCBSZW5kZXJUYWJs
ZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmYKIAogc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVDZWxsUG9zaXRpb25zKFJlbmRl
clRhYmxlQ2VsbCogZWxlbTEsIFJlbmRlclRhYmxlQ2VsbCogZWxlbTIpCiB7Ci0gICAgcmV0dXJu
IGVsZW0xLT5yb3coKSA8IGVsZW0yLT5yb3coKTsKKyAgICByZXR1cm4gZWxlbTEtPnJvd0luZGV4
KCkgPCBlbGVtMi0+cm93SW5kZXgoKTsKIH0KIAogLy8gVGhpcyBjb21wYXJpc29uIGlzIHVzZWQg
b25seSB3aGVuIHdlIGhhdmUgb3ZlcmZsb3dpbmcgY2VsbHMgYXMgd2UgaGF2ZSBhbiB1bnNvcnRl
ZCBhcnJheSB0byBzb3J0LiBXZSB0aHVzIG5lZWQKIC8vIHRvIHNvcnQgYm90aCBvbiByb3dzIGFu
ZCBjb2x1bW5zIHRvIHByb3Blcmx5IHJlcGFpbnQuCiBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFy
ZUNlbGxQb3NpdGlvbnNXaXRoT3ZlcmZsb3dpbmdDZWxscyhSZW5kZXJUYWJsZUNlbGwqIGVsZW0x
LCBSZW5kZXJUYWJsZUNlbGwqIGVsZW0yKQogewotICAgIGlmIChlbGVtMS0+cm93KCkgIT0gZWxl
bTItPnJvdygpKQotICAgICAgICByZXR1cm4gZWxlbTEtPnJvdygpIDwgZWxlbTItPnJvdygpOwor
ICAgIGlmIChlbGVtMS0+cm93SW5kZXgoKSAhPSBlbGVtMi0+cm93SW5kZXgoKSkKKyAgICAgICAg
cmV0dXJuIGVsZW0xLT5yb3dJbmRleCgpIDwgZWxlbTItPnJvd0luZGV4KCk7CiAKICAgICByZXR1
cm4gZWxlbTEtPmNvbCgpIDwgZWxlbTItPmNvbCgpOwogfQpAQCAtMTIyMyw2ICsxMjIyLDcgQEAg
dm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY0NlbGxzKCkKIAogICAgICAgICAgICAgUmVu
ZGVyVGFibGVSb3cqIHRhYmxlUm93ID0gdG9SZW5kZXJUYWJsZVJvdyhyb3cpOwogICAgICAgICAg
ICAgbV9ncmlkW2luc2VydGlvblJvd10ucm93UmVuZGVyZXIgPSB0YWJsZVJvdzsKKyAgICAgICAg
ICAgIHRhYmxlUm93LT5zZXRSb3dJbmRleChpbnNlcnRpb25Sb3cpOwogICAgICAgICAgICAgc2V0
Um93TG9naWNhbEhlaWdodFRvUm93U3R5bGVMb2dpY2FsSGVpZ2h0SWZOb3RSZWxhdGl2ZShtX2dy
aWRbaW5zZXJ0aW9uUm93XSk7CiAKICAgICAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjZWxs
ID0gcm93LT5maXJzdENoaWxkKCk7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0U2libGluZygpKSB7
CkBAIC0xMzg5LDE2ICsxMzg5LDYgQEAgYm9vbCBSZW5kZXJUYWJsZVNlY3Rpb246Om5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWwKIAogfQogCi11
bnNpZ25lZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJvd0luZGV4Rm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyVGFibGVSb3cqIHJvdykgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Z3JpZC5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9ncmlkW2ldLnJvd1JlbmRlcmVyID09
IHJvdykKLSAgICAgICAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlbW92
ZUNhY2hlZENvbGxhcHNlZEJvcmRlcnMoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKQogewog
ICAgIGlmICghdGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNzQ5YTU4MmZjNTI3YTQ0ZjcwOGI2
YTgzMDM3NDQ3NjdmNjAyYTE0Ny4uZGNkYzEzNDkwMzIxYjY2MGE3MmYzYjRmMWJhNjgyYzdiZTQx
ZTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
aApAQCAtMTUyLDggKzE1Miw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcm93TG9naWNhbEhlaWdo
dENoYW5nZWQodW5zaWduZWQgcm93SW5kZXgpOwogCi0gICAgdW5zaWduZWQgcm93SW5kZXhGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJUYWJsZVJvdyopIGNvbnN0OwotCiAgICAgdm9pZCByZW1vdmVD
YWNoZWRDb2xsYXBzZWRCb3JkZXJzKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopOwogICAgIHZvaWQg
c2V0Q2FjaGVkQ29sbGFwc2VkQm9yZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCosIENvbGxhcHNl
ZEJvcmRlclNpZGUsIENvbGxhcHNlZEJvcmRlclZhbHVlKTsKICAgICBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSYgY2FjaGVkQ29sbGFwc2VkQm9yZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCosIENvbGxh
cHNlZEJvcmRlclNpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IDU1ZDY4ZWQ1YjM5MGE0ZGQ5ZDAyYWRlMzNhNmI3MThhZTY4ODgwOTEu
LjNjYTY0NjQxMDMwY2UyYTFiOTRlNGQxNDY2ODM3MzNjOTY4MmJkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTM3MCw3ICszNzAsNyBA
QCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAKICAgICBpZiAoby5pc1RhYmxlQ2VsbCgpKSB7CiAg
ICAgICAgIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgYyA9ICp0b1JlbmRlclRhYmxlQ2VsbCgmbyk7
Ci0gICAgICAgIHRzIDw8ICIgW3I9IiA8PCBjLnJvdygpIDw8ICIgYz0iIDw8IGMuY29sKCkgPDwg
IiBycz0iIDw8IGMucm93U3BhbigpIDw8ICIgY3M9IiA8PCBjLmNvbFNwYW4oKSA8PCAiXSI7Cisg
ICAgICAgIHRzIDw8ICIgW3I9IiA8PCBjLnJvd0luZGV4KCkgPDwgIiBjPSIgPDwgYy5jb2woKSA8
PCAiIHJzPSIgPDwgYy5yb3dTcGFuKCkgPDwgIiBjcz0iIDw8IGMuY29sU3BhbigpIDw8ICJdIjsK
ICAgICB9CiAKICNpZiBFTkFCTEUoREVUQUlMUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwCmluZGV4IDA0OWI1MzUzNDJlZWJk
MzkwMWM4MTFlZDNiODVhOGQyMWRhMTQ5OTMuLjI4MTEzZGQ0OWVhMjcyZjRmZTk4NWM3N2Y4MDVj
NWI2NzZhMmUxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUmVu
ZGVyVGFibGVDZWxsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9S
ZW5kZXJUYWJsZUNlbGxUZXN0LmNwcApAQCAtOTQsOCArOTQsOCBAQCBURVNUX0YoUmVuZGVyVGFi
bGVDZWxsRGVhdGhUZXN0LCBDYW5TZXRDb2x1bW4pCiBURVNUX0YoUmVuZGVyVGFibGVDZWxsRGVh
dGhUZXN0LCBDYW5TZXRSb3cpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHJvd0luZGV4
ID0gMTA7Ci0gICAgbV9jZWxsLT5zZXRSb3cocm93SW5kZXgpOwotICAgIEVYUEVDVF9FUShyb3dJ
bmRleCwgbV9jZWxsLT5yb3coKSk7CisgICAgbV9jZWxsLT5yb3coKS0+c2V0Um93SW5kZXgocm93
SW5kZXgpOworICAgIEVYUEVDVF9FUShyb3dJbmRleCwgbV9jZWxsLT5yb3dJbmRleCgpKTsKIH0K
IAogVEVTVF9GKFJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCwgQ2FuU2V0Q29sdW1uVG9NYXhDb2x1
bW5JbmRleCkKQEAgLTEwNiw4ICsxMDYsOCBAQCBURVNUX0YoUmVuZGVyVGFibGVDZWxsRGVhdGhU
ZXN0LCBDYW5TZXRDb2x1bW5Ub01heENvbHVtbkluZGV4KQogCiBURVNUX0YoUmVuZGVyVGFibGVD
ZWxsRGVhdGhUZXN0LCBDYW5TZXRSb3dUb01heFJvd0luZGV4KQogewotICAgIG1fY2VsbC0+c2V0
Um93KG1heFJvd0luZGV4KTsKLSAgICBFWFBFQ1RfRVEobWF4Um93SW5kZXgsIG1fY2VsbC0+cm93
KCkpOworICAgIG1fY2VsbC0+cm93KCktPnNldFJvd0luZGV4KG1heFJvd0luZGV4KTsKKyAgICBF
WFBFQ1RfRVEobWF4Um93SW5kZXgsIG1fY2VsbC0+cm93SW5kZXgoKSk7CiB9CiAKIC8vIEZJWE1F
OiBSZS1lbmFibGUgdGhlc2UgdGVzdHMgb25jZSBBU1NFUlRfREVBVEggaXMgc3VwcG9ydGVkIGZv
ciBBbmRyb2lkLgpAQCAtMTIxLDcgKzEyMSw3IEBAIFRFU1RfRihSZW5kZXJUYWJsZUNlbGxEZWF0
aFRlc3QsIENyYXNoSWZDb2x1bW5PdmVyZmxvd09uU2V0dGluZykKIAogVEVTVF9GKFJlbmRlclRh
YmxlQ2VsbERlYXRoVGVzdCwgQ3Jhc2hJZlJvd092ZXJmbG93T25TZXR0aW5nKQogewotICAgIEFT
U0VSVF9ERUFUSChtX2NlbGwtPnNldFJvdyhtYXhSb3dJbmRleCArIDEpLCAiIik7CisgICAgQVNT
RVJUX0RFQVRIKG1fY2VsbC0+cm93KCktPnNldFJvd0luZGV4KG1heFJvd0luZGV4ICsgMSksICIi
KTsKIH0KIAogVEVTVF9GKFJlbmRlclRhYmxlQ2VsbERlYXRoVGVzdCwgQ3Jhc2hJZlNldHRpbmdV
bnNldENvbHVtbkluZGV4KQpAQCAtMTMxLDcgKzEzMSw3IEBAIFRFU1RfRihSZW5kZXJUYWJsZUNl
bGxEZWF0aFRlc3QsIENyYXNoSWZTZXR0aW5nVW5zZXRDb2x1bW5JbmRleCkKIAogVEVTVF9GKFJl
bmRlclRhYmxlQ2VsbERlYXRoVGVzdCwgQ3Jhc2hJZlNldHRpbmdVbnNldFJvd0luZGV4KQogewot
ICAgIEFTU0VSVF9ERUFUSChtX2NlbGwtPnNldFJvdyh1bnNldFJvd0luZGV4KSwgIiIpOworICAg
IEFTU0VSVF9ERUFUSChtX2NlbGwtPnJvdygpLT5zZXRSb3dJbmRleCh1bnNldFJvd0luZGV4KSwg
IiIpOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139559</attachid>
            <date>2012-04-30 18:07:13 -0700</date>
            <delta_ts>2012-04-30 20:12:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-85229-20120430180712.patch</filename>
            <type>text/plain</type>
            <size>22936</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4MmNlMjdiODgyYjIw
ZWYzYTE4NWViMDYxNDgzMTAzN2M4YzNjZi4uM2VmNDEzNDBkZjYzMTBmNWZkY2VmMDI4ODNkOTFl
YTBmN2QzNGVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEyLTA0LTMwICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgUmVu
ZGVyVGFibGVDZWxsJ3Mgcm93IGluZGV4IHRvIFJlbmRlclRhYmxlUm93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTIyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgQ292ZXJlZCBieSB0aGUgZXhpc3RpbmcgdGFi
bGUgdGVzdHMuCisKKyAgICAgICAgUm93IGluZGV4IGlzIGEgUmVuZGVyVGFibGVSb3cgY29uY2Vw
dCBhbmQgYXMgc3VjaCB0aGlzIGNoYW5nZSBtb3ZlcworICAgICAgICB0aGUgcmVsZXZhbnQgbG9n
aWMgaW50byB0aGUgY2xhc3MuCisKKyAgICAgICAgV2hpbGUgdG91Y2hpbmcgdGhlIGNvZGUsIHJl
bmFtZWQgcm93KCkgLT4gcm93SW5kZXgoKSBhcyBub3cgUmVuZGVyVGFibGVDZWxsCisgICAgICAg
IGNhbiByZXR1cm4gaXRzIHBhcmVudCBSZW5kZXJUYWJsZVJvdyBhbmQgd2Ugd2VyZSByZXR1cm5p
bmcgYW4gaW5kZXgsIG5vdCB0aGUgcm93CisgICAgICAgIGl0c2VsZi4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6dGl0bGVVSUVsZW1lbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Y2Vs
bEFib3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpjZWxsQmVsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNlbGxCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGU6OmNlbGxBZnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVS
ZW5kZXJPYmplY3QpOgorICAgICAgICBVcGRhdGVkIGFmdGVyIHRoZSByZW5hbWluZyBSZW5kZXJU
YWJsZUNlbGw6OnJvdygpIC0+IHJvd0luZGV4KCkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6UmVu
ZGVyVGFibGVDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0
ZUNvbGxhcHNlZEJlZm9yZUJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNl
bGw6OmNvbXB1dGVDb2xsYXBzZWRBZnRlckJvcmRlcik6CisgICAgICAgIFVwZGF0ZWQgYWZ0ZXIg
bV9yb3dJbmRleCByZW1vdmFsIGFuZCByb3coKSAtPiByb3dJbmRleCgpIHJlbmFtaW5nLgorCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAg
ICAgU3dpdGNoZWQgdGhlIHJvd1dhc1NldCBjaGVjayB0byBhbiBBU1NFUlQuIFRoZSBuZXcgbG9n
aWMgZ3VhcmFudGVlcyB0aGF0CisgICAgICAgIHJvdyBpbmRleCB3YXMgc2V0IHN0cmFpZ2h0IHdo
ZW4gd2UgaW5zZXJ0IHRoZSByb3cuIFRoZSBwcmV2aW91cyBsb2dpYyB3YXMKKyAgICAgICAgb3Bl
bmVkIHRvIHNvbWUgcmFjZSBjb25kaXRpb25zIGFzIHdlIGNvdWxkIHdhaXQgZm9yIGEgcmVjYWxj
Q2VsbHMgY2FsbCBiZWZvcmUKKyAgICAgICAgc2V0dGluZyB0aGUgaW5kZXggb24gdGhlIHJvd3Mg
d2hpY2ggbWFkZSB0aGlzIGNoZWNrIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cm93
KToKKyAgICAgICAgQWRkZWQgdGhpcyBSZW5kZXJUYWJsZVJvdyBnZXR0ZXIuCisKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cm93SW5kZXgpOgorICAgICAgICBSZW5hbWVkIGZy
b20gcm93KCkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIFVwZGF0
ZWQgYWZ0ZXIgYWRkaW5nIG1fcm93SW5kZXggLyByb3dJbmRleCgpLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJv
dzo6c2V0Um93SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OnJvd0lu
ZGV4KToKKyAgICAgICAgQWRkZWQgdGhvc2UgZ2V0dGVyIC8gc2V0dGVyLiBBbHNvIGtlcHQgbV9y
b3dJbmRleCdzIHNtYWxsZXIgc2l6ZQorICAgICAgICBmb3IgZnV0dXJlIG9wdGltaXphdGlvbiBh
bmQgZm9yIHN5bW1ldHJ5IHdpdGggdGhlIGNvbHVtbiBpbmRleCBvbgorICAgICAgICBSZW5kZXJU
YWJsZUNlbGwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6YWRkQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNDZWxscyk6CisgICAgICAgIE1h
ZGUgc3VyZSB0aGF0IHdoZW5ldmVyIHdlIGluc2VydCBvciB1cGRhdGUgb3VyIHJvdyBpbmRleAor
ICAgICAgICB3ZSBkbyBjYWxsIHNldFJvd0luZGV4KCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlU2VjdGlvbjo6YWRkQ2VsbCk6CisgICAgICAgIFRoaXMgbG9naWMgbm93IGRvZXNu
J3QgbmVlZCB0byBxdWVyeSBpbnNlcnRpb25Sb3cgYXMgdGhlIGNlbGwncworICAgICAgICBzaG91
bGQgaGF2ZSB0aGUgaW5kZXggb2YgdGhlIHJvdyBpbiB3aGljaCBpdCBpcyBpbnNlcnRlZC4KKwor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNlbGxQb3NpdGlvbnNXaXRoT3ZlcmZsb3dpbmdDZWxs
cyk6CisgICAgICAgIE1vcmUgdXBkYXRlcyBhZnRlciByb3coKSAtPiByb3dJbmRleCgpIHJlbmFt
aW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAg
ICBSZW1vdmVkIHJvd0luZGV4Rm9yUmVuZGVyZXIgbm93IHRoYXQgdGhlIHJvdyBjYWNoZXMgdGhp
cyBpbmZvcm1hdGluLgorCiAyMDEyLTA0LTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5j
b20+CiAKICAgICAgICAgSGFyZGVuIGFyaXRobWV0aWMgaW4gSW1hZ2VCdWZmZXJEYXRhQ0cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzhiMWY3ZGJmMjljN2I1YjBkZTFmMWYxZmUzNjRl
NzkwNDY1YjJjZS4uZDc0NTJlY2MwNmJjN2ZhYTVlNTgzMWU3OWViMjczZmFmNzZiZGM4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNC0zMCAgSnVs
aWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFJl
bmRlclRhYmxlQ2VsbCdzIHJvdyBpbmRleCB0byBSZW5kZXJUYWJsZVJvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyMjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgICogdGVzdHMvUmVuZGVyVGFibGVDZWxsVGVz
dC5jcHA6CisgICAgICAgIFVwZGF0ZWQgYWZ0ZXIgdGhlIHJlZmFjdG9yaW5nLgorCiAyMDEyLTA0
LTMwICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIERpc2FibGUgYmF0dGVyeS1zdGF0dXMgQVBJIHN1cHBvcnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAK
aW5kZXggNTZlZjQ3YmNkNGE3ZmQzNzFjNTVmZjI0MDcyZjFmNTA5OWViZmJkMS4uODczODJlYmVl
Mzk1OWEwNjRkYzlmYjMyZDAzMzMwOGQ5ZWNkZGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtNTAxLDcgKzUwMSw3
IEBAIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgIGNlbGwgPSB0
YWJsZVNlY3Rpb24tPnByaW1hcnlDZWxsQXQodGVzdFJvdywgY29sdW1uKTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gY2VsbCBvdmVybGFwcGVkLiB1c2UgdGhpcyBvbmUKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGNlbGwtPnJvd1NwYW4oKSA+PSAxKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGNlbGwgJiYgKChjZWxsLT5yb3coKSArIChjZWxsLT5yb3dTcGFuKCkgLSAxKSkgPj0gc2Vj
dGlvblNwZWNpZmljUm93KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGwgJiYgKChjZWxs
LT5yb3dJbmRleCgpICsgKGNlbGwtPnJvd1NwYW4oKSAtIDEpKSA+PSBzZWN0aW9uU3BlY2lmaWNS
b3cpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGNlbGwgPSAwOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IGI1Zjc0NDVh
MjEzNTNhMTIxMzcyYjlkNjVlMjNhMmM3MGRjMjA2NzEuLjdlYzg3YjJkODBlMzQzZmQ3ZWI0MmIz
M2UxNDgyMTJiMzBlNDMxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZShwYWlyPGludCwgaW50PiYg
cm93UmFuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJUYWJsZUNlbGwqIHJl
bmRlckNlbGwgPSB0b1JlbmRlclRhYmxlQ2VsbChtX3JlbmRlcmVyKTsKLSAgICByb3dSYW5nZS5m
aXJzdCA9IHJlbmRlckNlbGwtPnJvdygpOworICAgIHJvd1JhbmdlLmZpcnN0ID0gcmVuZGVyQ2Vs
bC0+cm93SW5kZXgoKTsKICAgICByb3dSYW5nZS5zZWNvbmQgPSByZW5kZXJDZWxsLT5yb3dTcGFu
KCk7CiAgICAgCiAgICAgLy8gc2luY2Ugb3VyIHRhYmxlIG1pZ2h0IGhhdmUgbXVsdGlwbGUgc2Vj
dGlvbnMsIHdlIGhhdmUgdG8gb2Zmc2V0IG91ciByb3cgYXBwcm9wcmlhdGVseQpAQCAtMTYwLDcg
KzE2MCw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRp
dGxlVUlFbGVtZW50KCkgY29uc3QKICAgICBpZiAoIWNvbCkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBpbnQgcm93ID0gcmVuZGVyQ2VsbC0+cm93KCk7CisgICAgaW50IHJvdyA9IHJlbmRlckNl
bGwtPnJvd0luZGV4KCk7CiAKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSByZW5k
ZXJDZWxsLT5zZWN0aW9uKCk7CiAgICAgaWYgKCFzZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggOTg2NDc2ZWQ5ZmY5NmMwOGVjYWRlZGM3MDRhMjc0
YTBjOTYzNmZmZi4uZDhhYWEwMzYwZTI2MzAyZDc4MTA5ZTJmMTQ2YmJhZmIwNGRjZmU4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xMTM0LDcgKzExMzQs
NyBAQCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlOjpjZWxsQWJvdmUoY29uc3QgUmVuZGVy
VGFibGVDZWxsKiBjZWxsKSBjb25zdAogICAgIHJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKIAog
ICAgIC8vIEZpbmQgdGhlIHNlY3Rpb24gYW5kIHJvdyB0byBsb29rIGluCi0gICAgdW5zaWduZWQg
ciA9IGNlbGwtPnJvdygpOworICAgIHVuc2lnbmVkIHIgPSBjZWxsLT5yb3dJbmRleCgpOwogICAg
IFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgckFib3ZlID0g
MDsKICAgICBpZiAociA+IDApIHsKQEAgLTExNjMsNyArMTE2Myw3IEBAIFJlbmRlclRhYmxlQ2Vs
bCogUmVuZGVyVGFibGU6OmNlbGxCZWxvdyhjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNv
bnN0CiAgICAgcmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwogCiAgICAgLy8gRmluZCB0aGUgc2Vj
dGlvbiBhbmQgcm93IHRvIGxvb2sgaW4KLSAgICB1bnNpZ25lZCByID0gY2VsbC0+cm93KCkgKyBj
ZWxsLT5yb3dTcGFuKCkgLSAxOworICAgIHVuc2lnbmVkIHIgPSBjZWxsLT5yb3dJbmRleCgpICsg
Y2VsbC0+cm93U3BhbigpIC0gMTsKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24gPSAw
OwogICAgIHVuc2lnbmVkIHJCZWxvdyA9IDA7CiAgICAgaWYgKHIgPCBjZWxsLT5zZWN0aW9uKCkt
Pm51bVJvd3MoKSAtIDEpIHsKQEAgLTExOTUsNyArMTE5NSw3IEBAIFJlbmRlclRhYmxlQ2VsbCog
UmVuZGVyVGFibGU6OmNlbGxCZWZvcmUoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25z
dAogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBJZiB3ZSBoaXQgYSBjb2xzcGFuIGJh
Y2sgdXAgdG8gYSByZWFsIGNlbGwuCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0
JiBwcmV2Q2VsbCA9IHNlY3Rpb24tPmNlbGxBdChjZWxsLT5yb3coKSwgZWZmQ29sIC0gMSk7Cisg
ICAgUmVuZGVyVGFibGVTZWN0aW9uOjpDZWxsU3RydWN0JiBwcmV2Q2VsbCA9IHNlY3Rpb24tPmNl
bGxBdChjZWxsLT5yb3dJbmRleCgpLCBlZmZDb2wgLSAxKTsKICAgICByZXR1cm4gcHJldkNlbGwu
cHJpbWFyeUNlbGwoKTsKIH0KIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgUmVuZGVyVGFibGVDZWxs
KiBSZW5kZXJUYWJsZTo6Y2VsbEFmdGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29u
c3QKICAgICB1bnNpZ25lZCBlZmZDb2wgPSBjb2xUb0VmZkNvbChjZWxsLT5jb2woKSArIGNlbGwt
PmNvbFNwYW4oKSk7CiAgICAgaWYgKGVmZkNvbCA+PSBudW1FZmZDb2xzKCkpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIHJldHVybiBjZWxsLT5zZWN0aW9uKCktPnByaW1hcnlDZWxsQXQoY2VsbC0+
cm93KCksIGVmZkNvbCk7CisgICAgcmV0dXJuIGNlbGwtPnNlY3Rpb24oKS0+cHJpbWFyeUNlbGxB
dChjZWxsLT5yb3dJbmRleCgpLCBlZmZDb2wpOwogfQogCiBSZW5kZXJCbG9jayogUmVuZGVyVGFi
bGU6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggNDcxMjFiZGYxN2QyNmZlNDk4Y2U2NzdiYmE1ZTBhNmQ4
YTBjY2ZkYS4uOGQ1ZTlhZWY3Y2Y2N2U1MWYwY2YxMzFkMjkwM2QzNTI5NTJiZTlmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQzLDcgKzQz
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyVGFibGVDZWxsOjpSZW5k
ZXJUYWJsZUNlbGwoTm9kZSogbm9kZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCi0gICAgLCBt
X3Jvdyh1bnNldFJvd0luZGV4KQogICAgICwgbV9jZWxsV2lkdGhDaGFuZ2VkKGZhbHNlKQogICAg
ICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1faGFzQXNzb2NpYXRlZFRhYmxl
Q2VsbEVsZW1lbnQobm9kZSAmJiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykgfHwgbm9kZS0+aGFz
VGFnTmFtZSh0aFRhZykpKQpAQCAtMzI3LDEyICszMjYsMTMgQEAgTGF5b3V0VW5pdCBSZW5kZXJU
YWJsZUNlbGw6OmNlbGxCYXNlbGluZVBvc2l0aW9uKCkgY29uc3QKIHZvaWQgUmVuZGVyVGFibGVD
ZWxsOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKQogewogICAgIEFTU0VSVChzdHlsZSgpLT5kaXNwbGF5KCkgPT0gVEFCTEVf
Q0VMTCk7CisgICAgQVNTRVJUKCFyb3coKSB8fCByb3coKS0+cm93SW5kZXhXYXNTZXQoKSk7CiAK
ICAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwgb2xkU3R5bGUpOwogICAgIHNl
dEhhc0JveERlY29yYXRpb25zKHRydWUpOwogCi0gICAgaWYgKHBhcmVudCgpICYmIHNlY3Rpb24o
KSAmJiBvbGRTdHlsZSAmJiBzdHlsZSgpLT5oZWlnaHQoKSAhPSBvbGRTdHlsZS0+aGVpZ2h0KCkg
JiYgcm93V2FzU2V0KCkpCi0gICAgICAgIHNlY3Rpb24oKS0+cm93TG9naWNhbEhlaWdodENoYW5n
ZWQocm93KCkpOworICAgIGlmIChwYXJlbnQoKSAmJiBzZWN0aW9uKCkgJiYgb2xkU3R5bGUgJiYg
c3R5bGUoKS0+aGVpZ2h0KCkgIT0gb2xkU3R5bGUtPmhlaWdodCgpKQorICAgICAgICBzZWN0aW9u
KCktPnJvd0xvZ2ljYWxIZWlnaHRDaGFuZ2VkKHJvd0luZGV4KCkpOwogCiAgICAgLy8gSWYgYm9y
ZGVyIHdhcyBjaGFuZ2VkLCBub3RpZnkgdGFibGUuCiAgICAgaWYgKHBhcmVudCgpKSB7CkBAIC01
OTcsNyArNTk3LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21w
dXRlQ29sbGFwc2VkQmVmb3JlQm9yZGVyKEluY2x1ZGVCb3JkZXIKICAgICAKICAgICAvLyBOb3cg
Y2hlY2sgcm93IGdyb3Vwcy4KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0g
c2VjdGlvbigpOwotICAgIGlmICghcm93KCkpIHsKKyAgICBpZiAoIXJvd0luZGV4KCkpIHsKICAg
ICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBiZWZvcmUgYm9yZGVyLgogICAgICAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlv
bi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGluY2x1ZGVDb2xvciA/IGN1cnJTZWN0aW9uLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCkBAIC02NzUs
NyArNjc1LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRl
Q29sbGFwc2VkQWZ0ZXJCb3JkZXIoSW5jbHVkZUJvcmRlckMKICAgICAKICAgICAvLyBOb3cgY2hl
Y2sgcm93IGdyb3Vwcy4KICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2Vj
dGlvbigpOwotICAgIGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJyU2VjdGlvbi0+bnVtUm93
cygpKSB7CisgICAgaWYgKHJvd0luZGV4KCkgKyByb3dTcGFuKCkgPj0gY3VyclNlY3Rpb24tPm51
bVJvd3MoKSkgewogICAgICAgICAvLyAoNSkgT3VyIHJvdyBncm91cCdzIGFmdGVyIGJvcmRlci4K
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGluY2x1ZGVDb2xvciA/IGN1
cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXJDb2xvclByb3Bl
cnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCAwNmEy
Nzc0NmFlYWE3OTNjYzIzMGE2ZTc1ZDM1N2U4YTExY2NiMmE5Li5jYTBjMWNjMGY0MGMzZGY4ODkx
Njk5MjczYTBmZGU5ZjU3NzYyZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVmIFJlbmRlclRhYmxlQ2VsbF9o
CiAjZGVmaW5lIFJlbmRlclRhYmxlQ2VsbF9oCiAKKyNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5o
IgogI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zMiw5ICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCB1bnNldENvbHVtbkluZGV4ID0gMHg3RkZGRkZGRjsKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBtYXhDb2x1bW5JbmRleCA9IDB4N0ZGRkZGRkU7IC8vIDIsMTQ3LDQ4Myw2NDYKIAotc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHVuc2V0Um93SW5kZXggPSAweDdGRkZGRkZGOwotc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heFJvd0luZGV4ID0gMHg3RkZGRkZGRTsgLy8gMiwxNDcsNDgzLDY0NgotCiBl
bnVtIEluY2x1ZGVCb3JkZXJDb2xvck9yTm90IHsgRG9Ob3RJbmNsdWRlQm9yZGVyQ29sb3IsIElu
Y2x1ZGVCb3JkZXJDb2xvciB9OwogCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwgOiBwdWJsaWMgUmVu
ZGVyQmxvY2sgewpAQCAtNjUsMjQgKzYzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
Y29sdW1uOwogICAgIH0KIAotICAgIHZvaWQgc2V0Um93KHVuc2lnbmVkIHJvdykKLSAgICB7Ci0g
ICAgICAgIGlmIChVTkxJS0VMWShyb3cgPiBtYXhSb3dJbmRleCkpCi0gICAgICAgICAgICBDUkFT
SCgpOwotCi0gICAgICAgIG1fcm93ID0gcm93OwotICAgIH0KKyAgICBSZW5kZXJUYWJsZVJvdyog
cm93KCkgY29uc3QgeyByZXR1cm4gdG9SZW5kZXJUYWJsZVJvdyhwYXJlbnQoKSk7IH0KKyAgICBS
ZW5kZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24oKSBjb25zdCB7IHJldHVybiB0b1JlbmRlclRhYmxl
U2VjdGlvbihwYXJlbnQoKS0+cGFyZW50KCkpOyB9CisgICAgUmVuZGVyVGFibGUqIHRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gdG9SZW5kZXJUYWJsZShwYXJlbnQoKS0+cGFyZW50KCktPnBhcmVudCgp
KTsgfQogCi0gICAgYm9vbCByb3dXYXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3JvdyAhPSB1bnNl
dFJvd0luZGV4OyB9Ci0gICAgdW5zaWduZWQgcm93KCkgY29uc3QKKyAgICB1bnNpZ25lZCByb3dJ
bmRleCgpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQocm93V2FzU2V0KCkpOwotICAgICAg
ICByZXR1cm4gbV9yb3c7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNh
bGxlZCBvbiBhIGRldGFjaGVkIGNlbGwuCisgICAgICAgIEFTU0VSVChyb3coKSk7CisgICAgICAg
IHJldHVybiByb3coKS0+cm93SW5kZXgoKTsKICAgICB9CiAKLSAgICBSZW5kZXJUYWJsZVNlY3Rp
b24qIHNlY3Rpb24oKSBjb25zdCB7IHJldHVybiB0b1JlbmRlclRhYmxlU2VjdGlvbihwYXJlbnQo
KS0+cGFyZW50KCkpOyB9Ci0gICAgUmVuZGVyVGFibGUqIHRhYmxlKCkgY29uc3QgeyByZXR1cm4g
dG9SZW5kZXJUYWJsZShwYXJlbnQoKS0+cGFyZW50KCktPnBhcmVudCgpKTsgfQotCiAgICAgTGVu
Z3RoIHN0eWxlT3JDb2xMb2dpY2FsV2lkdGgoKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodEZvclJvd1NpemluZygpIGNvbnN0OwpAQCAtMTkwLDcgKzE4MSw2IEBAIHByaXZh
dGU6CiAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29tcHV0ZUNvbGxhcHNlZEJlZm9yZUJvcmRl
cihJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCA9IEluY2x1ZGVCb3JkZXJDb2xvcikgY29uc3Q7CiAg
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29tcHV0ZUNvbGxhcHNlZEFmdGVyQm9yZGVyKEluY2x1
ZGVCb3JkZXJDb2xvck9yTm90ID0gSW5jbHVkZUJvcmRlckNvbG9yKSBjb25zdDsKIAotICAgIHVu
c2lnbmVkIG1fcm93IDogMzE7CiAgICAgYm9vbCBtX2NlbGxXaWR0aENoYW5nZWQgOiAxOwogICAg
IHVuc2lnbmVkIG1fY29sdW1uIDogMzE7CiAgICAgYm9vbCBtX2hhc0Fzc29jaWF0ZWRUYWJsZUNl
bGxFbGVtZW50IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
Y3BwCmluZGV4IDlhYzhlY2IwZmE1OTAzZTg5MDE0YWFjZGE0ZTYyMzgxMTU2MTRlMDQuLmY1YTNk
NjUzM2U5ZTI0NTI0NGI1YjJmNDIyZjFmNmFlMWZkMjY5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMzgsNiArMzgsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coTm9kZSog
bm9kZSkKICAgICA6IFJlbmRlckJveChub2RlKQorICAgICwgbV9yb3dJbmRleCh1bnNldFJvd0lu
ZGV4KQogewogICAgIC8vIGluaXQgUmVuZGVyT2JqZWN0IGF0dHJpYnV0ZXMKICAgICBzZXRJbmxp
bmUoZmFsc2UpOyAgIC8vIG91ciBvYmplY3QgaXMgbm90IElubGluZQpAQCAtNzIsNyArNzMsNyBA
QCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlm
ZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAgICAgICB1cGRhdGVCZWZvcmVBbmRBZnRlckNv
bnRlbnQoKTsKIAogICAgIGlmIChzZWN0aW9uKCkgJiYgb2xkU3R5bGUgJiYgc3R5bGUoKS0+bG9n
aWNhbEhlaWdodCgpICE9IG9sZFN0eWxlLT5sb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHNlY3Rp
b24oKS0+cm93TG9naWNhbEhlaWdodENoYW5nZWQoc2VjdGlvbigpLT5yb3dJbmRleEZvclJlbmRl
cmVyKHRoaXMpKTsKKyAgICAgICAgc2VjdGlvbigpLT5yb3dMb2dpY2FsSGVpZ2h0Q2hhbmdlZChy
b3dJbmRleCgpKTsKIAogICAgIC8vIElmIGJvcmRlciB3YXMgY2hhbmdlZCwgbm90aWZ5IHRhYmxl
LgogICAgIGlmIChwYXJlbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVSb3cuaAppbmRleCA5Mjc1NTFiNTY3ZDYxY2YzZGM1NGE2YzRkNzBlYzVlZDcxNjIwYzNhLi4y
YzVlMzQ4MWU5NmRhMTcyNWRkNzQ0YjA0MWQ2ZjI0MjA3NWQ3MTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtMjksNiArMjksOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnNldFJvd0luZGV4ID0gMHg3
RkZGRkZGRjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSb3dJbmRleCA9IDB4N0ZGRkZGRkU7
IC8vIDIsMTQ3LDQ4Myw2NDYKKwogY2xhc3MgUmVuZGVyVGFibGVSb3cgOiBwdWJsaWMgUmVuZGVy
Qm94IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJUYWJsZVJvdyhOb2RlKik7CkBAIC00
OCw2ICs1MSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRo
UGFyZW50UmVuZGVyZXIocGFyZW50KTsKICAgICB9CiAKKyAgICB2b2lkIHNldFJvd0luZGV4KHVu
c2lnbmVkIHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJvd0luZGV4ID4g
bWF4Um93SW5kZXgpKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICBtX3Jvd0luZGV4
ID0gcm93SW5kZXg7CisgICAgfQorCisgICAgYm9vbCByb3dJbmRleFdhc1NldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm93SW5kZXggIT0gdW5zZXRSb3dJbmRleDsgfQorICAgIHVuc2lnbmVkIHJvd0lu
ZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChyb3dJbmRleFdhc1NldCgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fcm93SW5kZXg7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJl
bigpOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxD
aGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KQEAgLTczLDYgKzkxLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogCiAgICAgUmVuZGVyT2JqZWN0Q2hpbGRM
aXN0IG1fY2hpbGRyZW47CisgICAgdW5zaWduZWQgbV9yb3dJbmRleCA6IDMxOwogfTsKIAogaW5s
aW5lIFJlbmRlclRhYmxlUm93KiB0b1JlbmRlclRhYmxlUm93KFJlbmRlck9iamVjdCogb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApp
bmRleCA4ZDg3YjE1N2I2OTE5ZTliOTIzYmFhOWQ5NzVkOTNmYjNmYTk4ZmI0Li4yOTBhYTA0YmMx
ZDk2NmNjNzUzNTcyY2Q4OTc5Yjg0YTkzNzMwY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTc2LDcgKzE3Niw5IEBAIHZvaWQg
UmVuZGVyVGFibGVTZWN0aW9uOjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkCiAKICAgICBlbnN1cmVSb3dzKG1fY1Jvdyk7CiAKLSAgICBtX2dy
aWRbaW5zZXJ0aW9uUm93XS5yb3dSZW5kZXJlciA9IHRvUmVuZGVyVGFibGVSb3coY2hpbGQpOwor
ICAgIFJlbmRlclRhYmxlUm93KiByb3cgPSB0b1JlbmRlclRhYmxlUm93KGNoaWxkKTsKKyAgICBt
X2dyaWRbaW5zZXJ0aW9uUm93XS5yb3dSZW5kZXJlciA9IHJvdzsKKyAgICByb3ctPnNldFJvd0lu
ZGV4KGluc2VydGlvblJvdyk7CiAKICAgICBpZiAoIWJlZm9yZUNoaWxkKQogICAgICAgICBzZXRS
b3dMb2dpY2FsSGVpZ2h0VG9Sb3dTdHlsZUxvZ2ljYWxIZWlnaHRJZk5vdFJlbGF0aXZlKG1fZ3Jp
ZFtpbnNlcnRpb25Sb3ddKTsKQEAgLTIyMCw5ICsyMjIsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2Vj
dGlvbjo6YWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwqIGNlbGwsIFJlbmRlclRhYmxlUm93KiByb3cp
CiAgICAgdW5zaWduZWQgY1NwYW4gPSBjZWxsLT5jb2xTcGFuKCk7CiAgICAgVmVjdG9yPFJlbmRl
clRhYmxlOjpDb2x1bW5TdHJ1Y3Q+JiBjb2x1bW5zID0gdGFibGUoKS0+Y29sdW1ucygpOwogICAg
IHVuc2lnbmVkIG5Db2xzID0gY29sdW1ucy5zaXplKCk7Ci0gICAgLy8gYWRkQ2VsbCBzaG91bGQg
YmUgY2FsbGVkIG9ubHkgYWZ0ZXIgbV9jUm93IGhhcyBiZWVuIGluY3JlbWVudGVkLgotICAgIEFT
U0VSVChtX2NSb3cpOwotICAgIHVuc2lnbmVkIGluc2VydGlvblJvdyA9IG1fY1JvdyAtIDE7Cisg
ICAgdW5zaWduZWQgaW5zZXJ0aW9uUm93ID0gcm93LT5yb3dJbmRleCgpOwogCiAgICAgLy8gIyMj
IG1vemlsbGEgc3RpbGwgc2VlbXMgdG8gZG8gdGhlIG9sZCBIVE1MIHdheSwgZXZlbiBmb3Igc3Ry
aWN0IERURAogICAgIC8vIChzZWUgdGhlIGFubm90YXRpb24gb24gdGFibGUgY2VsbCBsYXlvdXRp
bmcgaW4gdGhlIENTUyBzcGVjcyBhbmQgdGhlIHRlc3RjYXNlIGJlbG93OgpAQCAtMjY2LDcgKzI2
Niw2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjphZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCog
Y2VsbCwgUmVuZGVyVGFibGVSb3cqIHJvdykKICAgICAgICAgY1NwYW4gLT0gY3VycmVudFNwYW47
CiAgICAgICAgIGluQ29sU3BhbiA9IHRydWU7CiAgICAgfQotICAgIGNlbGwtPnNldFJvdyhpbnNl
cnRpb25Sb3cpOwogICAgIGNlbGwtPnNldENvbCh0YWJsZSgpLT5lZmZDb2xUb0NvbChjb2wpKTsK
IH0KIApAQCAtMzQ4LDExICszNDcsMTEgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jv
d0xvZ2ljYWxIZWlnaHQoKQogCiAgICAgICAgICAgICAvLyBGSVhNRTogV2UgYXJlIGFsd2F5cyBh
ZGRpbmcgdGhlIGhlaWdodCBvZiBhIHJvd3NwYW4gdG8gdGhlIGxhc3Qgcm93cyB3aGljaCBkb2Vz
bid0IG1hdGNoCiAgICAgICAgICAgICAvLyBvdGhlciBicm93c2Vycy4gU2VlIHdlYmtpdC5vcmcv
Yi81MjE4NSBmb3IgZXhhbXBsZS4KLSAgICAgICAgICAgIGlmICgoY2VsbC0+cm93KCkgKyBjZWxs
LT5yb3dTcGFuKCkgLSAxKSAhPSByKQorICAgICAgICAgICAgaWYgKChjZWxsLT5yb3dJbmRleCgp
ICsgY2VsbC0+cm93U3BhbigpIC0gMSkgIT0gcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgLy8gRm9yIHJvdyBzcGFubmluZyBjZWxscywgfHJ8IGlzIHRoZSBsYXN0
IHJvdyBpbiB0aGUgc3Bhbi4KLSAgICAgICAgICAgIHVuc2lnbmVkIGNlbGxTdGFydFJvdyA9IGNl
bGwtPnJvdygpOworICAgICAgICAgICAgdW5zaWduZWQgY2VsbFN0YXJ0Um93ID0gY2VsbC0+cm93
SW5kZXgoKTsKIAogICAgICAgICAgICAgaWYgKGNlbGwtPmhhc092ZXJyaWRlSGVpZ2h0KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlUHVzaGVyLmRpZFB1c2goKSkgewpAQCAtNTU0LDcg
KzU1Myw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKCkKICAgICAgICAg
ICAgIGlmICghY2VsbCB8fCBjcy5pbkNvbFNwYW4pCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgIHJpbmR4ID0gY2VsbC0+cm93KCk7CisgICAgICAgICAgICByaW5keCA9
IGNlbGwtPnJvd0luZGV4KCk7CiAgICAgICAgICAgICBySGVpZ2h0ID0gbV9yb3dQb3NbcmluZHgg
KyBjZWxsLT5yb3dTcGFuKCldIC0gbV9yb3dQb3NbcmluZHhdIC0gdnNwYWNpbmc7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIEZvcmNlIHBlcmNlbnQgaGVpZ2h0IGNoaWxkcmVuIHRvIGxh
eSB0aGVtc2VsdmVzIG91dCBhZ2Fpbi4KQEAgLTk4OSwxNSArOTg4LDE1IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2ZmCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQ2VsbFBvc2l0aW9ucyhS
ZW5kZXJUYWJsZUNlbGwqIGVsZW0xLCBSZW5kZXJUYWJsZUNlbGwqIGVsZW0yKQogewotICAgIHJl
dHVybiBlbGVtMS0+cm93KCkgPCBlbGVtMi0+cm93KCk7CisgICAgcmV0dXJuIGVsZW0xLT5yb3dJ
bmRleCgpIDwgZWxlbTItPnJvd0luZGV4KCk7CiB9CiAKIC8vIFRoaXMgY29tcGFyaXNvbiBpcyB1
c2VkIG9ubHkgd2hlbiB3ZSBoYXZlIG92ZXJmbG93aW5nIGNlbGxzIGFzIHdlIGhhdmUgYW4gdW5z
b3J0ZWQgYXJyYXkgdG8gc29ydC4gV2UgdGh1cyBuZWVkCiAvLyB0byBzb3J0IGJvdGggb24gcm93
cyBhbmQgY29sdW1ucyB0byBwcm9wZXJseSByZXBhaW50Lgogc3RhdGljIGlubGluZSBib29sIGNv
bXBhcmVDZWxsUG9zaXRpb25zV2l0aE92ZXJmbG93aW5nQ2VsbHMoUmVuZGVyVGFibGVDZWxsKiBl
bGVtMSwgUmVuZGVyVGFibGVDZWxsKiBlbGVtMikKIHsKLSAgICBpZiAoZWxlbTEtPnJvdygpICE9
IGVsZW0yLT5yb3coKSkKLSAgICAgICAgcmV0dXJuIGVsZW0xLT5yb3coKSA8IGVsZW0yLT5yb3co
KTsKKyAgICBpZiAoZWxlbTEtPnJvd0luZGV4KCkgIT0gZWxlbTItPnJvd0luZGV4KCkpCisgICAg
ICAgIHJldHVybiBlbGVtMS0+cm93SW5kZXgoKSA8IGVsZW0yLT5yb3dJbmRleCgpOwogCiAgICAg
cmV0dXJuIGVsZW0xLT5jb2woKSA8IGVsZW0yLT5jb2woKTsKIH0KQEAgLTEyMjMsNiArMTIyMiw3
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNDZWxscygpCiAKICAgICAgICAgICAg
IFJlbmRlclRhYmxlUm93KiB0YWJsZVJvdyA9IHRvUmVuZGVyVGFibGVSb3cocm93KTsKICAgICAg
ICAgICAgIG1fZ3JpZFtpbnNlcnRpb25Sb3ddLnJvd1JlbmRlcmVyID0gdGFibGVSb3c7CisgICAg
ICAgICAgICB0YWJsZVJvdy0+c2V0Um93SW5kZXgoaW5zZXJ0aW9uUm93KTsKICAgICAgICAgICAg
IHNldFJvd0xvZ2ljYWxIZWlnaHRUb1Jvd1N0eWxlTG9naWNhbEhlaWdodElmTm90UmVsYXRpdmUo
bV9ncmlkW2luc2VydGlvblJvd10pOwogCiAgICAgICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Y2VsbCA9IHJvdy0+Zmlyc3RDaGlsZCgpOyBjZWxsOyBjZWxsID0gY2VsbC0+bmV4dFNpYmxpbmco
KSkgewpAQCAtMTM4OSwxNiArMTM4OSw2IEBAIGJvb2wgUmVuZGVyVGFibGVTZWN0aW9uOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAKIH0K
IAotdW5zaWduZWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyb3dJbmRleEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlclRhYmxlUm93KiByb3cpIGNvbnN0Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2dyaWQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZ3JpZFtpXS5yb3dSZW5kZXJl
ciA9PSByb3cpCi0gICAgICAgICAgICByZXR1cm4gaTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpy
ZW1vdmVDYWNoZWRDb2xsYXBzZWRCb3JkZXJzKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkK
IHsKICAgICBpZiAoIXRhYmxlKCktPmNvbGxhcHNlQm9yZGVycygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDc0OWE1ODJmYzUyN2E0NGY3
MDhiNmE4MzAzNzQ0NzY3ZjYwMmExNDcuLmRjZGMxMzQ5MDMyMWI2NjBhNzJmM2I0ZjFiYTY4MmM3
YmU0MWUxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmgKQEAgLTE1Miw4ICsxNTIsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJvd0xvZ2ljYWxI
ZWlnaHRDaGFuZ2VkKHVuc2lnbmVkIHJvd0luZGV4KTsKIAotICAgIHVuc2lnbmVkIHJvd0luZGV4
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyVGFibGVSb3cqKSBjb25zdDsKLQogICAgIHZvaWQgcmVt
b3ZlQ2FjaGVkQ29sbGFwc2VkQm9yZGVycyhjb25zdCBSZW5kZXJUYWJsZUNlbGwqKTsKICAgICB2
b2lkIHNldENhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqLCBDb2xs
YXBzZWRCb3JkZXJTaWRlLCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSk7CiAgICAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUmIGNhY2hlZENvbGxhcHNlZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqLCBD
b2xsYXBzZWRCb3JkZXJTaWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
cmVlQXNUZXh0LmNwcAppbmRleCA1NWQ2OGVkNWIzOTBhNGRkOWQwMmFkZTMzYTZiNzE4YWU2ODg4
MDkxLi4zY2E2NDY0MTAzMGNlMmExYjk0ZTRkMTQ2NjgzNzMzYzk2ODJiZDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0zNzAsNyArMzcw
LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogCiAgICAgaWYgKG8uaXNUYWJsZUNlbGwoKSkg
ewogICAgICAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGMgPSAqdG9SZW5kZXJUYWJsZUNlbGwo
Jm8pOwotICAgICAgICB0cyA8PCAiIFtyPSIgPDwgYy5yb3coKSA8PCAiIGM9IiA8PCBjLmNvbCgp
IDw8ICIgcnM9IiA8PCBjLnJvd1NwYW4oKSA8PCAiIGNzPSIgPDwgYy5jb2xTcGFuKCkgPDwgIl0i
OworICAgICAgICB0cyA8PCAiIFtyPSIgPDwgYy5yb3dJbmRleCgpIDw8ICIgYz0iIDw8IGMuY29s
KCkgPDwgIiBycz0iIDw8IGMucm93U3BhbigpIDw8ICIgY3M9IiA8PCBjLmNvbFNwYW4oKSA8PCAi
XSI7CiAgICAgfQogCiAjaWYgRU5BQkxFKERFVEFJTFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcAppbmRleCAwNDliNTM1MzQy
ZWViZDM5MDFjODExZWQzYjg1YThkMjFkYTE0OTkzLi4yODExM2RkNDllYTI3MmY0ZmU5ODVjNzdm
ODA1YzViNjc2YTJlMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1JlbmRlclRhYmxlQ2VsbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAKQEAgLTk0LDggKzk0LDggQEAgVEVTVF9GKFJlbmRl
clRhYmxlQ2VsbERlYXRoVGVzdCwgQ2FuU2V0Q29sdW1uKQogVEVTVF9GKFJlbmRlclRhYmxlQ2Vs
bERlYXRoVGVzdCwgQ2FuU2V0Um93KQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCByb3dJ
bmRleCA9IDEwOwotICAgIG1fY2VsbC0+c2V0Um93KHJvd0luZGV4KTsKLSAgICBFWFBFQ1RfRVEo
cm93SW5kZXgsIG1fY2VsbC0+cm93KCkpOworICAgIG1fY2VsbC0+cm93KCktPnNldFJvd0luZGV4
KHJvd0luZGV4KTsKKyAgICBFWFBFQ1RfRVEocm93SW5kZXgsIG1fY2VsbC0+cm93SW5kZXgoKSk7
CiB9CiAKIFRFU1RfRihSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QsIENhblNldENvbHVtblRvTWF4
Q29sdW1uSW5kZXgpCkBAIC0xMDYsOCArMTA2LDggQEAgVEVTVF9GKFJlbmRlclRhYmxlQ2VsbERl
YXRoVGVzdCwgQ2FuU2V0Q29sdW1uVG9NYXhDb2x1bW5JbmRleCkKIAogVEVTVF9GKFJlbmRlclRh
YmxlQ2VsbERlYXRoVGVzdCwgQ2FuU2V0Um93VG9NYXhSb3dJbmRleCkKIHsKLSAgICBtX2NlbGwt
PnNldFJvdyhtYXhSb3dJbmRleCk7Ci0gICAgRVhQRUNUX0VRKG1heFJvd0luZGV4LCBtX2NlbGwt
PnJvdygpKTsKKyAgICBtX2NlbGwtPnJvdygpLT5zZXRSb3dJbmRleChtYXhSb3dJbmRleCk7Cisg
ICAgRVhQRUNUX0VRKG1heFJvd0luZGV4LCBtX2NlbGwtPnJvd0luZGV4KCkpOwogfQogCiAvLyBG
SVhNRTogUmUtZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgQVNTRVJUX0RFQVRIIGlzIHN1cHBvcnRl
ZCBmb3IgQW5kcm9pZC4KQEAgLTEyMSw3ICsxMjEsNyBAQCBURVNUX0YoUmVuZGVyVGFibGVDZWxs
RGVhdGhUZXN0LCBDcmFzaElmQ29sdW1uT3ZlcmZsb3dPblNldHRpbmcpCiAKIFRFU1RfRihSZW5k
ZXJUYWJsZUNlbGxEZWF0aFRlc3QsIENyYXNoSWZSb3dPdmVyZmxvd09uU2V0dGluZykKIHsKLSAg
ICBBU1NFUlRfREVBVEgobV9jZWxsLT5zZXRSb3cobWF4Um93SW5kZXggKyAxKSwgIiIpOworICAg
IEFTU0VSVF9ERUFUSChtX2NlbGwtPnJvdygpLT5zZXRSb3dJbmRleChtYXhSb3dJbmRleCArIDEp
LCAiIik7CiB9CiAKIFRFU1RfRihSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QsIENyYXNoSWZTZXR0
aW5nVW5zZXRDb2x1bW5JbmRleCkKQEAgLTEzMSw3ICsxMzEsNyBAQCBURVNUX0YoUmVuZGVyVGFi
bGVDZWxsRGVhdGhUZXN0LCBDcmFzaElmU2V0dGluZ1Vuc2V0Q29sdW1uSW5kZXgpCiAKIFRFU1Rf
RihSZW5kZXJUYWJsZUNlbGxEZWF0aFRlc3QsIENyYXNoSWZTZXR0aW5nVW5zZXRSb3dJbmRleCkK
IHsKLSAgICBBU1NFUlRfREVBVEgobV9jZWxsLT5zZXRSb3codW5zZXRSb3dJbmRleCksICIiKTsK
KyAgICBBU1NFUlRfREVBVEgobV9jZWxsLT5yb3coKS0+c2V0Um93SW5kZXgodW5zZXRSb3dJbmRl
eCksICIiKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>