<?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>208541</bug_id>
          
          <creation_ts>2020-03-03 15:43:35 -0800</creation_ts>
          <short_desc>Running a single layout test makes 28 WebProcessPools (and launches 6 Network processes)</short_desc>
          <delta_ts>2020-03-05 15:55:38 -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>WebKit Misc.</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179123</see_also>
          <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>
          <dependson>208546</dependson>
    
    <dependson>208610</dependson>
    
    <dependson>208619</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>jbedard</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1625284</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-03 15:43:35 -0800</bug_when>
    <thetext>run-webkit-tests --debug fast/scrolling/programmatic-scroll-to-zero-zero.html

with:

diff --git a/Source/WebKit/NetworkProcess/NetworkProcess.cpp b/Source/WebKit/NetworkProcess/NetworkProcess.cpp
index 432950d9269fc17023273dcf1c8bb3a18fbc4551..a32c8d14061b3c8e0f72ca0481b03e01361ac5c0 100644
--- a/Source/WebKit/NetworkProcess/NetworkProcess.cpp
+++ b/Source/WebKit/NetworkProcess/NetworkProcess.cpp
@@ -157,6 +157,7 @@ NetworkProcess::NetworkProcess(AuxiliaryProcessInitializationParameters&amp;&amp; parame
 #endif
     , m_messagePortChannelRegistry(createMessagePortChannelRegistry(*this))
 {
+    WTFLogAlways(&quot;NetworkProcess %p NetworkProcess&quot;, this);
     NetworkProcessPlatformStrategies::initialize();
 
     addSupplement&lt;AuthenticationManager&gt;();
@@ -186,6 +187,8 @@ NetworkProcess::NetworkProcess(AuxiliaryProcessInitializationParameters&amp;&amp; parame
 
 NetworkProcess::~NetworkProcess()
 {
+    WTFLogAlways(&quot;NetworkProcess %p ~NetworkProcess&quot;, this);
+
     for (auto&amp; callbacks : m_cacheStorageParametersCallbacks.values()) {
         for (auto&amp; callback : callbacks)
             callback(String { });
diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp
index eabc897bb3e6435b0e6868b5d36e52f5adaaef54..f74ad13b93f4355f4da35437ce923b9cf4d19d35 100644
--- a/Source/WebKit/UIProcess/WebProcessPool.cpp
+++ b/Source/WebKit/UIProcess/WebProcessPool.cpp
@@ -250,6 +250,7 @@ WebProcessPool::WebProcessPool(API::ProcessPoolConfiguration&amp; configuration)
     , m_backForwardCache(makeUniqueRef&lt;WebBackForwardCache&gt;(*this))
     , m_webProcessCache(makeUniqueRef&lt;WebProcessCache&gt;(*this))
 {
+    WTFLogAlways(&quot;WebProcessPool %p WebProcessPool&quot;, this);
     static std::once_flag onceFlag;
     std::call_once(onceFlag, [] {
         WTF::setProcessPrivileges(allPrivileges());
@@ -304,6 +305,8 @@ WebProcessPool::WebProcessPool(API::ProcessPoolConfiguration&amp; configuration)
 
 WebProcessPool::~WebProcessPool()
 {
+    WTFLogAlways(&quot;WebProcessPool %p ~WebProcessPool&quot;, this);
+
     m_webProcessCache-&gt;clear();
 
     bool removed = processPools().removeFirst(this);

results in:

WebProcessPool 0x132808208 WebProcessPool
WebProcessPool 0x14a00a008 WebProcessPool
NetworkProcess 0x11691eba0 NetworkProcess
WebProcessPool 0x14a00a008 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x11302fba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x114d20ba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x119365ba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13300e208 WebProcessPool
WebProcessPool 0x13300e208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x132808208 WebProcessPool
WebProcessPool 0x14a00a008 WebProcessPool
NetworkProcess 0x11691eba0 NetworkProcess
WebProcessPool 0x14a00a008 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x11302fba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x114d20ba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13286ee08 WebProcessPool
Program ended with exit code: 0NetworkProcess 0x119365ba0 NetworkProcess
WebProcessPool 0x13286ee08 ~WebProcessPool
WebProcessPool 0x13300e208 WebProcessPool
WebProcessPool 0x13300e208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
WebProcessPool 0x134008208 WebProcessPool
WebProcessPool 0x134008208 ~WebProcessPool
Program ended with exit code: 0NetworkProcess 0x11348fba0 NetworkProcess
Element 0x118d7b940 setScrollTop 20 (currently 0)
Element 0x118d7b940 setScrollTop 0 (currently 20)
Element 0x118d7b940 setScrollTop 0 (currently 100)
Content-Type: text/plain
layer at (0,0) size 785x2016
  RenderView at (0,0) size 785x600
layer at (0,0) size 785x2016
  RenderBlock {HTML} at (0,0) size 785x2016
    RenderBody {BODY} at (8,8) size 769x2000
      RenderBlock {DIV} at (0,0) size 100x100 [bgcolor=#008000]
#EOF
#EOF
#EOF
LEAK: 1 WebProcessPool
LEAK: 1 WebPageProxy
Program ended with exit code: 0Program ended with exit code: 1Program ended with exit code: 0Program ended with exit code: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625290</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-03 15:51:37 -0800</bug_when>
    <thetext>Some of the call sites:

(lldb) bt
* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = breakpoint 30.1
    frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000132808208, configuration=0x000000012f808188) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000132808208, configuration=0x000000012f808188) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x000000012f808188) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
  * frame #4: 0x00000001080dabe8 WebKit`WebKit::WebsiteDataStore::removeData(this=0x000000012ef3e3a8, dataTypes={ size = 1 }, modifiedSince=(m_value = -Inf), completionHandler=0x00007ffeefbfed50)&gt;&amp;&amp;) at WebsiteDataStore.cpp:707:34
    frame #5: 0x0000000107ee3a8f WebKit`::WKWebsiteDataStoreRemoveAllIndexedDatabases(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb8, callback=(WebKitTestRunner`WTR::StorageVoidCallback(void*) at TestController.cpp:3208)) at WKWebsiteDataStoreRef.cpp:627:35
    frame #6: 0x0000000100036d7f WebKitTestRunner`WTR::TestController::clearIndexedDatabases(this=0x00007ffeefbff3b8) at TestController.cpp:3217:5
    frame #7: 0x00000001000363ec WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1017:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...

    frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000012f046808, configuration=0x000000012ef4d898) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000012f046808, configuration=0x000000012ef4d898) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x000000012ef4d898) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
    frame #4: 0x00000001080e8c71 WebKit`WebKit::WebsiteDataStore::resetQuota(this=0x000000012ef3e3a8, completionHandler=0x00007ffeefbfed68)&gt;&amp;&amp;) at WebsiteDataStore.cpp:2235:30
    frame #5: 0x0000000107ee3f4b WebKit`::WKWebsiteDataStoreResetQuota(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb8, callback=(WebKitTestRunner`WTR::StorageVoidCallback(void*) at TestController.cpp:3208)) at WKWebsiteDataStoreRef.cpp:712:35
  * frame #6: 0x0000000100036f8f WebKitTestRunner`WTR::TestController::resetQuota(this=0x00007ffeefbff3b8) at TestController.cpp:3242:5
    frame #7: 0x000000010003641c WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1023:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...

  * frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000014880fe08, configuration=0x0000000132726158) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000014880fe08, configuration=0x0000000132726158) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x0000000132726158) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
    frame #4: 0x00000001080dc0a1 WebKit`WebKit::WebsiteDataStore::clearResourceLoadStatisticsInWebProcesses(this=0x000000012ef3e3a8, callback=0x00007ffeefbfed38)&gt;&amp;&amp;) at WebsiteDataStore.cpp:2100:34
    frame #5: 0x0000000107ee30dc WebKit`::WKWebsiteDataStoreStatisticsResetToConsistentState(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb0, completionHandler=(WebKitTestRunner`WTR::resourceStatisticsVoidResultCallback(void*) at TestController.cpp:3344)) at WKWebsiteDataStoreRef.cpp:589:11
    frame #6: 0x00000001000377ef WebKitTestRunner`WTR::TestController::statisticsResetToConsistentState(this=0x00007ffeefbff3b8) at TestController.cpp:3698:5
    frame #7: 0x000000010003687b WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1118:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...

  * frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000136819008, configuration=0x0000000132321a38) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000136819008, configuration=0x0000000132321a38) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x0000000132321a38) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
    frame #4: 0x00000001080e6cb1 WebKit`WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources(this=0x000000012ef3e3a8, completionHandler=0x00007ffeefbfed20)&gt;&amp;&amp;) at WebsiteDataStore.cpp:1872:30
    frame #5: 0x0000000107ee3123 WebKit`::WKWebsiteDataStoreStatisticsResetToConsistentState(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb0, completionHandler=(WebKitTestRunner`WTR::resourceStatisticsVoidResultCallback(void*) at TestController.cpp:3344)) at WKWebsiteDataStoreRef.cpp:590:11
    frame #6: 0x00000001000377ef WebKitTestRunner`WTR::TestController::statisticsResetToConsistentState(this=0x00007ffeefbff3b8) at TestController.cpp:3698:5
    frame #7: 0x000000010003687b WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1118:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...

  * frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000134036608, configuration=0x0000000132676d98) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x0000000134036608, configuration=0x0000000132676d98) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x0000000132676d98) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
    frame #4: 0x00000001080e53b1 WebKit`WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting(this=0x000000012ef3e3a8, completionHandler=0x00007ffeefbfed08)&gt;&amp;&amp;) at WebsiteDataStore.cpp:1752:30
    frame #5: 0x0000000107ee3176 WebKit`::WKWebsiteDataStoreStatisticsResetToConsistentState(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb0, completionHandler=(WebKitTestRunner`WTR::resourceStatisticsVoidResultCallback(void*) at TestController.cpp:3344)) at WKWebsiteDataStoreRef.cpp:591:11
    frame #6: 0x00000001000377ef WebKitTestRunner`WTR::TestController::statisticsResetToConsistentState(this=0x00007ffeefbff3b8) at TestController.cpp:3698:5
    frame #7: 0x000000010003687b WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1118:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...


    frame #0: 0x0000000107cc1835 WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000013700ee08, configuration=0x000000013241a358) at WebProcessPool.cpp:255:5
    frame #1: 0x0000000107cc04ed WebKit`WebKit::WebProcessPool::WebProcessPool(this=0x000000013700ee08, configuration=0x000000013241a358) at WebProcessPool.cpp:252:1
    frame #2: 0x0000000107cc0456 WebKit`WebKit::WebProcessPool::create(configuration=0x000000013241a358) at WebProcessPool.cpp:179:26
    frame #3: 0x00000001080d8714 WebKit`WebKit::WebsiteDataStore::processPools(this=0x000000012ef3e3a8, count=18446744073709551615, ensureAPoolExists=true) const at WebsiteDataStore.cpp:1910:28
  * frame #4: 0x00000001080e62a9 WebKit`WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting(this=0x000000012ef3e3a8, enabled=false, onlyOnSitesWithoutUserInteraction=false, completionHandler=0x00007ffeefbfecd8)&gt;&amp;&amp;) at WebsiteDataStore.cpp:1828:30
    frame #5: 0x0000000107ee3233 WebKit`::WKWebsiteDataStoreStatisticsResetToConsistentState(dataStoreRef=0x000000012ef3e3a0, context=0x00007ffeefbfedb0, completionHandler=(WebKitTestRunner`WTR::resourceStatisticsVoidResultCallback(void*) at TestController.cpp:3344)) at WKWebsiteDataStoreRef.cpp:593:11
    frame #6: 0x00000001000377ef WebKitTestRunner`WTR::TestController::statisticsResetToConsistentState(this=0x00007ffeefbff3b8) at TestController.cpp:3698:5
    frame #7: 0x000000010003687b WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1118:5
    frame #8: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x00000001484ec000) at TestController.cpp:819:10
...


Basically all these:

    store.clearResourceLoadStatisticsInWebProcesses([callbackAggregator = callbackAggregator.copyRef()] { });
    store.resetCacheMaxAgeCapForPrevalentResources([callbackAggregator = callbackAggregator.copyRef()] { });
    store.resetCrossSiteLoadsWithLinkDecorationForTesting([callbackAggregator = callbackAggregator.copyRef()] { });
    store.setResourceLoadStatisticsShouldDowngradeReferrerForTesting(true, [callbackAggregator = callbackAggregator.copyRef()] { });
    store.setResourceLoadStatisticsShouldBlockThirdPartyCookiesForTesting(false, false, [callbackAggregator = callbackAggregator.copyRef()] { });
    store.setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting(false, [callbackAggregator = callbackAggregator.copyRef()] { });
    store.resetParametersToDefaultValues([callbackAggregator = callbackAggregator.copyRef()] { });
    store.scheduleClearInMemoryAndPersistent(WebKit::ShouldGrandfatherStatistics::No, [callbackAggregator = callbackAggregator.copyRef()] { });
    store.setUseITPDatabase(false, [callbackAggregator = callbackAggregator.copyRef()] { });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625294</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-03 15:54:26 -0800</bug_when>
    <thetext>Network processes are being launched via:

(lldb) bt
* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = breakpoint 30.1
  * frame #0: 0x0000000107f46ee5 WebKit`WebKit::NetworkProcessProxy::NetworkProcessProxy(this=0x0000000136ed4280, processPool=0x000000013480bc08) at NetworkProcessProxy.cpp:93:5
    frame #1: 0x0000000107f4712d WebKit`WebKit::NetworkProcessProxy::NetworkProcessProxy(this=0x0000000136ed4280, processPool=0x000000013480bc08) at NetworkProcessProxy.cpp:92:1
    frame #2: 0x0000000107d0863d WebKit`std::__1::__unique_if&lt;WebKit::NetworkProcessProxy&gt;::__unique_single std::__1::make_unique&lt;WebKit::NetworkProcessProxy, WebKit::WebProcessPool&amp;&gt;(__args=0x000000013480bc08) at memory:3131:32
    frame #3: 0x0000000107cc5f5f WebKit`decltype(args=0x000000013480bc08) WTF::makeUnique&lt;WebKit::NetworkProcessProxy, WebKit::WebProcessPool&amp;&gt;(WebKit::WebProcessPool&amp;) at StdLibExtras.h:483:12
    frame #4: 0x0000000107cc4c87 WebKit`WebKit::WebProcessPool::ensureNetworkProcess(this=0x000000013480bc08, withWebsiteDataStore=0x0000000137c07708) at WebProcessPool.cpp:494:27
    frame #5: 0x00000001080dace2 WebKit`WebKit::WebsiteDataStore::removeData(this=0x0000000137c07708, dataTypes={ size = 1 }, modifiedSince=(m_value = -Inf), completionHandler=0x00007ffeefbfed50)&gt;&amp;&amp;) at WebsiteDataStore.cpp:715:30
    frame #6: 0x0000000107ee3a8f WebKit`::WKWebsiteDataStoreRemoveAllIndexedDatabases(dataStoreRef=0x0000000137c07700, context=0x00007ffeefbfedb8, callback=(WebKitTestRunner`WTR::StorageVoidCallback(void*) at TestController.cpp:3208)) at WKWebsiteDataStoreRef.cpp:627:35
    frame #7: 0x0000000100036d7f WebKitTestRunner`WTR::TestController::clearIndexedDatabases(this=0x00007ffeefbff3b8) at TestController.cpp:3217:5
    frame #8: 0x00000001000363ec WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1017:5
    frame #9: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x0000000136eec000) at
...


and 

  * frame #0: 0x0000000107f46ee5 WebKit`WebKit::NetworkProcessProxy::NetworkProcessProxy(this=0x0000000136ece780, processPool=0x000000013480bc08) at NetworkProcessProxy.cpp:93:5
    frame #1: 0x0000000107f4712d WebKit`WebKit::NetworkProcessProxy::NetworkProcessProxy(this=0x0000000136ece780, processPool=0x000000013480bc08) at NetworkProcessProxy.cpp:92:1
    frame #2: 0x0000000107d0863d WebKit`std::__1::__unique_if&lt;WebKit::NetworkProcessProxy&gt;::__unique_single std::__1::make_unique&lt;WebKit::NetworkProcessProxy, WebKit::WebProcessPool&amp;&gt;(__args=0x000000013480bc08) at memory:3131:32
    frame #3: 0x0000000107cc5f5f WebKit`decltype(args=0x000000013480bc08) WTF::makeUnique&lt;WebKit::NetworkProcessProxy, WebKit::WebProcessPool&amp;&gt;(WebKit::WebProcessPool&amp;) at StdLibExtras.h:483:12
    frame #4: 0x0000000107cc4c87 WebKit`WebKit::WebProcessPool::ensureNetworkProcess(this=0x000000013480bc08, withWebsiteDataStore=0x0000000137c07708) at WebProcessPool.cpp:494:27
    frame #5: 0x00000001080dace2 WebKit`WebKit::WebsiteDataStore::removeData(this=0x0000000137c07708, dataTypes={ size = 1 }, modifiedSince=(m_value = -Inf), completionHandler=0x00007ffeefbfed40)&gt;&amp;&amp;) at WebsiteDataStore.cpp:715:30
    frame #6: 0x0000000107ee3b4f WebKit`::WKWebsiteDataStoreRemoveLocalStorage(dataStoreRef=0x0000000137c07700, context=0x00007ffeefbfedb8, callback=(WebKitTestRunner`WTR::StorageVoidCallback(void*) at TestController.cpp:3208)) at WKWebsiteDataStoreRef.cpp:636:35
    frame #7: 0x0000000100036def WebKitTestRunner`WTR::TestController::clearLocalStorage(this=0x00007ffeefbff3b8) at TestController.cpp:3224:5
    frame #8: 0x00000001000363f8 WebKitTestRunner`WTR::TestController::resetStateToConsistentValues(this=0x00007ffeefbff3b8, options=0x00007ffeefbfef90, resetStage=BeforeTest) at TestController.cpp:1018:5
    frame #9: 0x0000000100035e64 WebKitTestRunner`WTR::TestController::ensureViewSupportsOptionsForTest(this=0x00007ffeefbff3b8, test=0x0000000136eec000) at TestController.cpp:819:10
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625311</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-03 16:25:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/60018602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625510</commentid>
    <comment_count>4</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-03-04 07:46:21 -0800</bug_when>
    <thetext>Do we have a regression point for this? I know we&apos;ve had issues with this sort of thing in the past, but we fixed them. Given how bad this is, it strikes me a relatively recent regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626076</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 08:17:49 -0800</bug_when>
    <thetext>I have landed 3 patches (dependency bugs) that should help a lot. Let&apos;s gather fresh numbers to see where we stand now and determine if more work is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626088</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 08:46:08 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; I have landed 3 patches (dependency bugs) that should help a lot. Let&apos;s
&gt; gather fresh numbers to see where we stand now and determine if more work is
&gt; needed.

Latest numbers: 5 process pools created and 5 network process proxies. It is better but not ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626097</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 08:52:36 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Chris Dumez from comment #5)
&gt; &gt; I have landed 3 patches (dependency bugs) that should help a lot. Let&apos;s
&gt; &gt; gather fresh numbers to see where we stand now and determine if more work is
&gt; &gt; needed.
&gt; 
&gt; Latest numbers: 5 process pools created and 5 network process proxies. It is
&gt; better but not ideal.

Remaining construction sites:
1   0x11176380b WebKit::NetworkProcessProxy::NetworkProcessProxy(WebKit::WebProcessPool&amp;)
2   0x1116cac89 WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*)
3   0x1117ba6b1 WebKit::WebsiteDataStore::removeData(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::WallTime, WTF::Function&lt;void ()&gt;&amp;&amp;)
4   0x111752a01 WKWebsiteDataStoreRemoveAllIndexedDatabases
5   0x10f448d76 WTR::TestController::clearIndexedDatabases()
6   0x10f448964 WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&amp;, WTR::TestController::ResetStage)
7   0x10f448683 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&amp;)
8   0x10f44c374 WTR::TestController::configureViewForTest(WTR::TestInvocation const&amp;)
9   0x10f45d543 WTR::TestInvocation::invoke()
10  0x10f44cce7 WTR::TestController::runTest(char const*)
11  0x10f44d0bc WTR::TestController::runTestingServerLoop()
12  0x10f4454a9 WTR::TestController::TestController(int, char const**)
13  0x10f432d7d main
14  0x7fff71c9ec61 start

1   0x11176380b WebKit::NetworkProcessProxy::NetworkProcessProxy(WebKit::WebProcessPool&amp;)
2   0x1116cac89 WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*)
3   0x1117ba6b1 WebKit::WebsiteDataStore::removeData(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::WallTime, WTF::Function&lt;void ()&gt;&amp;&amp;)
4   0x111752a72 WKWebsiteDataStoreRemoveLocalStorage
5   0x10f448dcd WTR::TestController::clearLocalStorage()
6   0x10f44896c WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&amp;, WTR::TestController::ResetStage)
7   0x10f448683 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&amp;)
8   0x10f44c374 WTR::TestController::configureViewForTest(WTR::TestInvocation const&amp;)
9   0x10f45d543 WTR::TestInvocation::invoke()
10  0x10f44cce7 WTR::TestController::runTest(char const*)
11  0x10f44d0bc WTR::TestController::runTestingServerLoop()
12  0x10f4454a9 WTR::TestController::TestController(int, char const**)
13  0x10f432d7d main
14  0x7fff71c9ec61 start

1   0x11176380b WebKit::NetworkProcessProxy::NetworkProcessProxy(WebKit::WebProcessPool&amp;)
2   0x1116cac89 WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*)
3   0x1117ba6b1 WebKit::WebsiteDataStore::removeData(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::WallTime, WTF::Function&lt;void ()&gt;&amp;&amp;)
4   0x111752ae3 WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations
5   0x10f448e54 WTR::TestController::clearServiceWorkerRegistrations()
6   0x10f448974 WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&amp;, WTR::TestController::ResetStage)
7   0x10f448683 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&amp;)
8   0x10f44c374 WTR::TestController::configureViewForTest(WTR::TestInvocation const&amp;)
9   0x10f45d543 WTR::TestInvocation::invoke()
10  0x10f44cce7 WTR::TestController::runTest(char const*)
11  0x10f44d0bc WTR::TestController::runTestingServerLoop()
12  0x10f4454a9 WTR::TestController::TestController(int, char const**)
13  0x10f432d7d main
14  0x7fff71c9ec61 start

1   0x11176380b WebKit::NetworkProcessProxy::NetworkProcessProxy(WebKit::WebProcessPool&amp;)
2   0x1116cac89 WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*)
3   0x1117ba6b1 WebKit::WebsiteDataStore::removeData(WTF::OptionSet&lt;WebKit::WebsiteDataType&gt;, WTF::WallTime, WTF::Function&lt;void ()&gt;&amp;&amp;)
4   0x111752752 WKWebsiteDataStoreRemoveAllFetchCaches
5   0x10f448ea2 WTR::TestController::clearDOMCaches()
6   0x10f44897c WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&amp;, WTR::TestController::ResetStage)
7   0x10f448683 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&amp;)
8   0x10f44c374 WTR::TestController::configureViewForTest(WTR::TestInvocation const&amp;)
9   0x10f45d543 WTR::TestInvocation::invoke()
10  0x10f44cce7 WTR::TestController::runTest(char const*)
11  0x10f44d0bc WTR::TestController::runTestingServerLoop()
12  0x10f4454a9 WTR::TestController::TestController(int, char const**)
13  0x10f432d7d main
14  0x7fff71c9ec61 start

1   0x11176380b WebKit::NetworkProcessProxy::NetworkProcessProxy(WebKit::WebProcessPool&amp;)
2   0x1116cac89 WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*)
3   0x1116cc6a6 WebKit::WebProcessPool::initializeNewWebProcess(WebKit::WebProcessProxy&amp;, WebKit::WebsiteDataStore*, WebKit::WebProcessProxy::IsPrewarmed)
4   0x1116cd38e WebKit::WebProcessPool::createNewWebProcess(WebKit::WebsiteDataStore*, WebKit::WebProcessProxy::IsPrewarmed)
5   0x11169b3b7 WebKit::WebProcessPool::processForRegistrableDomain(WebKit::WebsiteDataStore&amp;, WebKit::WebPageProxy*, WebCore::RegistrableDomain const&amp;)
6   0x11169ae3d WebKit::WebPageProxy::launchProcess(WebCore::RegistrableDomain const&amp;, WebKit::WebPageProxy::ProcessLaunchReason)
7   0x11169ef07 WebKit::WebPageProxy::loadRequest(WebCore::ResourceRequest&amp;&amp;, WebCore::ShouldOpenExternalURLsPolicy, API::Object*)
8   0x11171e196 WKPageLoadURL
9   0x10f448c87 WTR::TestController::resetStateToConsistentValues(WTR::TestOptions const&amp;, WTR::TestController::ResetStage)
10  0x10f448683 WTR::TestController::ensureViewSupportsOptionsForTest(WTR::TestInvocation const&amp;)
11  0x10f44c374 WTR::TestController::configureViewForTest(WTR::TestInvocation const&amp;)
12  0x10f45d543 WTR::TestInvocation::invoke()
13  0x10f44cce7 WTR::TestController::runTest(char const*)
14  0x10f44d0bc WTR::TestController::runTestingServerLoop()
15  0x10f4454a9 WTR::TestController::TestController(int, char const**)
16  0x10f432d7d main

----

They all seem legit. They need a running network process in order to go remove things on disk (and the last one is for actually running the test). We could optimize this by either:
1. Have the WebProcessPool keep around its temporary process pool for a while (e.g. one event loop iteration) so that it would get reused.
or
2. Reset the WebsiteDataStore state *after* we&apos;ve constructed the WKWebView

2) Would likely be ideal in terms of how many pools / network processes would get created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626133</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 09:38:11 -0800</bug_when>
    <thetext>Ok, I think this is a regression from delayed process launch. By the time we call all those methods on the WebsiteDataStore, we actually have already created a WebPageProxy / WebProcessPool but it is not associated with the WebsiteDataStore yet. I am looking into fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626182</commentid>
    <comment_count>9</comment_count>
      <attachid>392596</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 10:38:11 -0800</bug_when>
    <thetext>Created attachment 392596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626186</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 10:40:31 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Created attachment 392596 [details]
&gt; Patch

With this patch, 1 process pool / 1 network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626264</commentid>
    <comment_count>11</comment_count>
      <attachid>392596</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-03-05 13:19:47 -0800</bug_when>
    <thetext>Comment on attachment 392596
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1162
&gt; +        m_dummyProcessProxies.remove(process-&gt;sessionID());

We are doing a double search here.

&gt; Source/WebKit/UIProcess/WebProcessPool.h:628
&gt; +    HashMap&lt;PAL::SessionID, WebProcessProxy*&gt; m_dummyProcessProxies; // Lightweight WebProcessProxy objects without backing process.

Could use WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626278</commentid>
    <comment_count>12</comment_count>
      <attachid>392620</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 13:50:12 -0800</bug_when>
    <thetext>Created attachment 392620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626353</commentid>
    <comment_count>13</comment_count>
      <attachid>392620</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 15:55:36 -0800</bug_when>
    <thetext>Comment on attachment 392620
Patch

Clearing flags on attachment: 392620

Committed r257953: &lt;https://trac.webkit.org/changeset/257953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626354</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-05 15:55:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392596</attachid>
            <date>2020-03-05 10:38:11 -0800</date>
            <delta_ts>2020-03-05 13:50:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208541-20200305103811.patch</filename>
            <type>text/plain</type>
            <size>10162</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU5ZDM5OWFiNmUwZmNjNGZl
NzU3Zjk4ZjEyMTk5MWI5YjFkMzA0MWIuLjRiMWEwYTNjY2UwMzgxYThjOGZjMjYwOGIxZTMwZjZk
NGRlNjEwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSdW5uaW5nIGEgc2luZ2xlIGxheW91
dCB0ZXN0IG1ha2VzIDI4IFdlYlByb2Nlc3NQb29scyAoYW5kIGxhdW5jaGVzIDYgTmV0d29yayBw
cm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg1NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDE4NjAyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgd2Fz
IGNvbnRydWN0aW5nIGEgcGFnZSAvIHByb2Nlc3MgcG9vbCBhbmQgdGhlbiBjYWxsaW5nIGludG8g
dmFyaW91cworICAgICAgICBXZWJzaXRlRGF0YVN0b3JlIEFQSXMgdG8gcmVzZXQgLyBjbGVhciBz
dGF0ZS4gQmVjYXVzZSBub3RoaW5nIGhhZCBiZWVuIGxvYWRlZCBpbiB0aGUKKyAgICAgICAgdmll
dyB5ZXQsIHRoZSBwYWdlIHdvdWxkIHN0aWxsIGJlIHVzaW5nIGEgZHVtbXkgcHJvY2VzcyBwcm94
eSAoZHVlIHRvIGRlbGF5ZWQgcHJvY2VzcworICAgICAgICBsYXVuY2ggb3B0aW1pemF0aW9uKSBh
dCB0aGUgdGltZSB0aGUgV2Vic2l0ZURhdGFTdG9yZSBBUElzIGFyZSBjYWxsZWQuIEJlY2F1c2Ug
dGhlCisgICAgICAgIGR1bW15IHByb2Nlc3MgcHJveHkgd291bGQgbm90IHJlZ2lzdGVyIGl0c2Vs
ZiB3aXRoIHRoZSBXZWJzaXRlRGF0YVN0b3JlICh1bmxpa2Ugb3RoZXIKKyAgICAgICAgcHJvY2Vz
c2VzKSwgdGhlIFdlYnNpdGVEYXRhU3RvcmUgdGhvdWdodCBpdCBoYWQgbm8gYXNzb2NpYXRlZCBw
cm9jZXNzIHBvb2wgYW5kIHdvdWxkCisgICAgICAgIHRodXMgY29uc3RydWN0IGEgdGVtcG9yYXJ5
IG9uZSBldmVyeSB0aW1lIGl0IG5lZWRlZCBvbmUuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUg
aXNzdWUsIHdlIG5vdyBjb25zdHJ1Y3Qgb25lIGR1bW15IHByb2Nlc3MgcHJveHkgcGVyIHNlc3Np
b24gKGluc3RlYWQgb2YKKyAgICAgICAgb25lIGZvciBhbGwgc2Vzc2lvbnMpLiBBcyBhIHJlc3Vs
dCwgdGhlIGR1bW15IHByb2Nlc3MgcHJveHkgY2FuIG5vdyBiZWhhdmUgYXMgYSBub3JtYWwKKyAg
ICAgICAgV2ViUHJvY2Vzc1Byb3h5IGFuZCBoYXZlIGFuIGFzc29jaWF0ZWQgZGF0YSBzdG9yZSBh
bmQgcmVnaXN0ZXIgLyB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tCisgICAgICAgIGl0LCBkZXBlbmRp
bmcgb24gd2hldGhlciBvciBub3QgaXQgaGFzIHBhZ2VzLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0
cmF0aW9uV2l0aERhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
bWF5YmVTaHV0RG93bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
CiAyMDIwLTAzLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFeHBvcnQgTm93UGxheWluZyBjb21tYW5kcyB0byBHUFVQcm9jZXNzIHdoZW4gbWVkaWEgcGxh
eWluZyBpbiBHUFVQcm9jZXNzIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGU0MGE2ZDVhYjQ0Nzg2NTI1MmE5M2E4NWVmYTg3MmM5MTE4NDMz
NGEuLjg0NmNlZTExMjMxNjg0M2VlMzVhNTMxYWY3MGZkZmI3ZDNmZmRhYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzk3NCw3ICszOTc0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaElu
ZGljZXMsIGNvbnN0IFN0cmluZyYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQ
cm9jZXNzSWZOZWNlc3NhcnkoKQogewotICAgIGlmICgmcHJvY2VzcygpID09IHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KCkpCisgICAgaWYgKHByb2Nlc3MoKS5pc0R1
bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoeyB9LCBQcm9jZXNzTGF1
bmNoUmVhc29uOjpJbml0aWFsUHJvY2Vzcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA4MDE0ZjJlNWRhZWVkMzFjMmE0MTk5ZTBjOWFkZmVm
ODVhZWJmYTA1Li5jYmM5YTgyZDU4NDg5YzljOTBiNTYxZDI2Y2JiOWU3YTcxNDczNWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC03NjYsNyArNzY2
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAgICAgaWYgKCFtX3VzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpIHsKLSAgICAgICAgICAgIGlmIChwcm9jZXNzID09IG1fcHJld2FybWVkUHJvY2Vz
cyB8fCBwcm9jZXNzID09IG1fZHVtbXlQcm9jZXNzUHJveHkpCisgICAgICAgICAgICBpZiAocHJv
Y2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3MgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94
eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCZwcm9jZXNz
LT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTExNTgsOCArMTE1OCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRp
c2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICAgICAgbV9wcmV3
YXJtZWRQcm9jZXNzID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAobV9kdW1teVByb2Nlc3NQ
cm94eSA9PSBwcm9jZXNzKQotICAgICAgICBtX2R1bW15UHJvY2Vzc1Byb3h5ID0gbnVsbHB0cjsK
KyAgICBpZiAocHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQorICAgICAgICBtX2R1bW15
UHJvY2Vzc1Byb3hpZXMucmVtb3ZlKHByb2Nlc3MtPnNlc3Npb25JRCgpKTsKIAogICAgIC8vIEZJ
WE1FIChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9m
IHRoZSBpbnZhbGlkYXRpb24gY2FsbHMgb2YgdGhlIG90aGVyIHN1cHBsZW1lbnRzIGFyZSBzdGls
bCBuZWNlc3NhcnkgaW4gbXVsdGktcHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBh
ZmZlY3QgZGF0YSBzdHJ1Y3R1cmVzIHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlz
Y29ubmVjdGVkLgogICAgIC8vIENsZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBm
YWlsdXJlcywgc28gaXQncyBsZXNzIHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCkBAIC0x
MjE0LDcgKzEyMTQsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYgdwogI2VuZGlmCiAKICAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBpZiAocHJvY2VzcyA9
PSBtX3ByZXdhcm1lZFByb2Nlc3MgfHwgcHJvY2VzcyA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5KQor
ICAgICAgICBpZiAocHJvY2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3MgfHwgcHJvY2Vzcy0+aXNE
dW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtl
cnMoKSkKQEAgLTEyNTMsMTYgKzEyNTMsMTYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAg
ICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2
aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+
cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVubmluZ1Byb2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8g
bm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJzaXRlRGF0YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHBy
b2Nlc3MuCi0gICAgICAgIEFTU0VSVChwcm9jZXNzLmdldCgpID09IG1fZHVtbXlQcm9jZXNzUHJv
eHkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJUKHByb2Nlc3MtPmlzRHVtbXlQcm9j
ZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZw
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgICAgICBBU1NFUlQoJnBhZ2VDb25maWd1
cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcGFnZUNvbmZpZ3Vy
YXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgfSBlbHNlIGlmICghbV9pc0RlbGF5ZWRX
ZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQpIHsKICAgICAgICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNl
LCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRpbCBzb21ldGhpbmcgaXMgYWN0dWFsbHkgbG9h
ZGVkIGluIHRoZSBwYWdlLgotICAgICAgICBpZiAoIW1fZHVtbXlQcm9jZXNzUHJveHkpIHsKLSAg
ICAgICAgICAgIGF1dG8gZHVtbXlQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZSgqdGhpcywgbnVsbHB0ciwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYlBy
b2Nlc3NQcm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOwotICAgICAgICAgICAgbV9kdW1t
eVByb2Nlc3NQcm94eSA9IGR1bW15UHJvY2Vzc1Byb3h5LnB0cigpOwotICAgICAgICAgICAgbV9w
cm9jZXNzZXMuYXBwZW5kKFdURk1vdmUoZHVtbXlQcm9jZXNzUHJveHkpKTsKKyAgICAgICAgcHJv
Y2VzcyA9IG1fZHVtbXlQcm9jZXNzUHJveGllcy5nZXQocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoIXByb2Nlc3MpIHsKKyAg
ICAgICAgICAgIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgcGFnZUNv
bmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdh
cm1lZDo6Tm8sIFdlYlByb2Nlc3NQcm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOworICAg
ICAgICAgICAgbV9kdW1teVByb2Nlc3NQcm94aWVzLmFkZChwYWdlQ29uZmlndXJhdGlvbi0+d2Vi
c2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9uSUQoKSwgcHJvY2Vzcy5nZXQoKSk7CisgICAgICAgICAg
ICBtX3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcy5jb3B5UmVmKCkpOwogICAgICAgICB9Ci0gICAg
ICAgIHByb2Nlc3MgPSBtX2R1bW15UHJvY2Vzc1Byb3h5OwogICAgIH0gZWxzZQogICAgICAgICBw
cm9jZXNzID0gJnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbigqcGFnZUNvbmZpZ3VyYXRpb24t
PndlYnNpdGVEYXRhU3RvcmUoKSwgbnVsbHB0ciwgeyB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMDM3Y2IxNjgwM2FlMzkxMmViM2E2MjEzMGRhMTk5
NDMzNzgyZTZiMS4uOWZiNjkzNTFiNjU2OTgxM2ZiMDAxZGE1MGVkYzc3NjIzM2E5ZDk0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xODYsNyArMTg2LDcg
QEAgcHVibGljOgogCiAgICAgLy8gV2ViUHJvY2Vzc1Byb3h5IG9iamVjdCB3aGljaCBkb2VzIG5v
dCBoYXZlIGEgcnVubmluZyBwcm9jZXNzIHdoaWNoIGlzIHVzZWQgZm9yIGNvbnZlbmllbmNlLCB0
byBhdm9pZAogICAgIC8vIG51bGwgY2hlY2tzIGluIFdlYlBhZ2VQcm94eS4KLSAgICBXZWJQcm9j
ZXNzUHJveHkqIGR1bW15UHJvY2Vzc1Byb3h5KCkgY29uc3QgeyByZXR1cm4gbV9kdW1teVByb2Nl
c3NQcm94eTsgfQorICAgIFdlYlByb2Nlc3NQcm94eSogZHVtbXlQcm9jZXNzUHJveHkoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7IHJldHVybiBtX2R1bW15UHJvY2Vzc1Byb3hpZXMu
Z2V0KHNlc3Npb25JRCk7IH0KIAogICAgIC8vIFdlYlByb2Nlc3Mgb3IgTmV0d29ya1Byb2Nlc3Mg
YXMgYXBwcm9wb3JpYXRlIGZvciBjdXJyZW50IHByb2Nlc3MgbW9kZWwuIFRoZSBjb25uZWN0aW9u
IG11c3QgYmUgbm9uLW51bGwuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBuZXR3b3JraW5nUHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKQEAgLTYyNCw3ICs2MjQsOCBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+PiBtX3Byb2Nlc3NlczsKICAgICBXZWJQcm9jZXNzUHJv
eHkqIG1fcHJld2FybWVkUHJvY2VzcyB7IG51bGxwdHIgfTsKLSAgICBXZWJQcm9jZXNzUHJveHkq
IG1fZHVtbXlQcm9jZXNzUHJveHkgeyBudWxscHRyIH07IC8vIEEgbGlnaHR3ZWlnaHQgV2ViUHJv
Y2Vzc1Byb3h5IHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgorCisgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgV2ViUHJvY2Vzc1Byb3h5Kj4gbV9kdW1teVByb2Nlc3NQcm94aWVzOyAvLyBMaWdo
dHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2JqZWN0cyB3aXRob3V0IGJhY2tpbmcgcHJvY2Vzcy4K
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBXZWFrSGFzaFNldDxXZWJQcm9jZXNz
UHJveHk+IG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDAzMmYwYjkwMGFkOWY0NDIyOGYyMGU3Njg2MjBj
MjFiNjNjMjY4OTAuLjVhODJjZWRhYjY3ZmFjYjhmNzdmMjY2MzNhZTkzMjk4Mjc5Y2FmMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjUzLDEy
ICsyNTMsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKHByb2Nlc3NQb29sKCkud2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMoKnRoaXMsIGRhdGFTdG9yZSkpLCAwKTsKIH0KIAorYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdAoreworICAgIHJldHVybiBt
X3dlYnNpdGVEYXRhU3RvcmUgJiYgcHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShtX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSA9PSB0aGlzOworfQorCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpCiB7CiAgICAgaWYgKCFt
X3dlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBib29sIHNob3Vs
ZEJlUmVnaXN0ZXJlZCA9IHByb2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkoKSAhPSB0aGlz
ICYmIChwYWdlQ291bnQoKSB8fCBwcm92aXNpb25hbFBhZ2VDb3VudCgpKTsKKyAgICBib29sIHNo
b3VsZEJlUmVnaXN0ZXJlZCA9IHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCk7
CiAgICAgaWYgKHNob3VsZEJlUmVnaXN0ZXJlZCkKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
LT5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOwogICAgIGVsc2UKQEAgLTEwMjEsNyArMTAyNiw3IEBA
IGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjYW5CZUFkZGVkVG9XZWJQcm9jZXNzQ2FjaGUoKSBjb25z
dAogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bigpCiB7Ci0gICAgaWYgKHBy
b2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkoKSA9PSB0aGlzICYmIG1fcGFnZU1hcC5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAoaXNEdW1teVByb2Nlc3NQcm94eSgpICYmIG1fcGFnZU1hcC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgQVNTRVJUKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQpOwog
ICAgICAgICBtX3Byb2Nlc3NQb29sLT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBl
NGI3MDA0YjQ1YWNiZmJhYmU0ZTE1MzcyNDQ3NDllMWNhMjhhMjFiLi5mYzJkOTI3YTQzM2ZlMmVl
OTJiNmZjOGMwMWZjMGQ1Y2M5Mzc3YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtMTY5LDYgKzE2OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUnVu
bmluZ1NlcnZpY2VXb3JrZXJzKCkgY29uc3QgeyByZXR1cm4gISFtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbjsgfQogICAgIGJvb2wgaXNTdGFuZGFsb25lU2VydmljZVdvcmtlclByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpICYmICFwYWdlQ291bnQoKTsg
fQogCisgICAgYm9vbCBpc0R1bW15UHJvY2Vzc1Byb3h5KCkgY29uc3Q7CisKICAgICB2b2lkIGRp
ZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAg
dm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392620</attachid>
            <date>2020-03-05 13:50:12 -0800</date>
            <delta_ts>2020-03-05 15:55:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208541-20200305135011.patch</filename>
            <type>text/plain</type>
            <size>10700</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUzODliYjQ0NWJhZGE1NDk2
ZDZhYTAxMmFlMzU0MDM4NTVmOGMxNjguLjkwNTM3MmE3M2MxOTM3MDVhYTBkZmUwZjQ2Y2M4Yzk0
ODJhODQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDMtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSdW5uaW5nIGEgc2luZ2xlIGxheW91
dCB0ZXN0IG1ha2VzIDI4IFdlYlByb2Nlc3NQb29scyAoYW5kIGxhdW5jaGVzIDYgTmV0d29yayBw
cm9jZXNzZXMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDg1NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMDE4NjAyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciB3YXMg
Y29udHJ1Y3RpbmcgYSBwYWdlIC8gcHJvY2VzcyBwb29sIGFuZCB0aGVuIGNhbGxpbmcgaW50byB2
YXJpb3VzCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUgQVBJcyB0byByZXNldCAvIGNsZWFyIHN0
YXRlLiBCZWNhdXNlIG5vdGhpbmcgaGFkIGJlZW4gbG9hZGVkIGluIHRoZQorICAgICAgICB2aWV3
IHlldCwgdGhlIHBhZ2Ugd291bGQgc3RpbGwgYmUgdXNpbmcgYSBkdW1teSBwcm9jZXNzIHByb3h5
IChkdWUgdG8gZGVsYXllZCBwcm9jZXNzCisgICAgICAgIGxhdW5jaCBvcHRpbWl6YXRpb24pIGF0
IHRoZSB0aW1lIHRoZSBXZWJzaXRlRGF0YVN0b3JlIEFQSXMgYXJlIGNhbGxlZC4gQmVjYXVzZSB0
aGUKKyAgICAgICAgZHVtbXkgcHJvY2VzcyBwcm94eSB3b3VsZCBub3QgcmVnaXN0ZXIgaXRzZWxm
IHdpdGggdGhlIFdlYnNpdGVEYXRhU3RvcmUgKHVubGlrZSBvdGhlcgorICAgICAgICBwcm9jZXNz
ZXMpLCB0aGUgV2Vic2l0ZURhdGFTdG9yZSB0aG91Z2h0IGl0IGhhZCBubyBhc3NvY2lhdGVkIHBy
b2Nlc3MgcG9vbCBhbmQgd291bGQKKyAgICAgICAgdGh1cyBjb25zdHJ1Y3QgYSB0ZW1wb3Jhcnkg
b25lIGV2ZXJ5IHRpbWUgaXQgbmVlZGVkIG9uZS4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBp
c3N1ZSwgd2Ugbm93IGNvbnN0cnVjdCBvbmUgZHVtbXkgcHJvY2VzcyBwcm94eSBwZXIgc2Vzc2lv
biAoaW5zdGVhZCBvZgorICAgICAgICBvbmUgZm9yIGFsbCBzZXNzaW9ucykuIEFzIGEgcmVzdWx0
LCB0aGUgZHVtbXkgcHJvY2VzcyBwcm94eSBjYW4gbm93IGJlaGF2ZSBhcyBhIG5vcm1hbAorICAg
ICAgICBXZWJQcm9jZXNzUHJveHkgYW5kIGhhdmUgYW4gYXNzb2NpYXRlZCBkYXRhIHN0b3JlIGFu
ZCByZWdpc3RlciAvIHVucmVnaXN0ZXIgaXRzZWxmIGZyb20KKyAgICAgICAgaXQsIGRlcGVuZGlu
ZyBvbiB3aGV0aGVyIG9yIG5vdCBpdCBoYXMgcGFnZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsYXVuY2hJ
bml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15UHJvY2Vzc1Byb3h5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZWdpc3Ry
YXRpb25XaXRoRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpt
YXliZVNodXREb3duKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisK
IDIwMjAtMDMtMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCB1bmlmaWVkIGJ1aWxkIGZpeDsgZm9yd2FyZC1kZWNsYXJlIGFuZCBpbmNsdWRl
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mgd2hlcmUgaXQncyB1c2VkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZTQwYTZkNWFiNDQ3ODY1MjUyYTkzYTg1
ZWZhODcyYzkxMTg0MzM0YS4uODQ2Y2VlMTEyMzE2ODQzZWUzNWE1MzFhZjcwZmRmYjdkM2ZmZGFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zOTc0LDcg
KzM5NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVpbnQz
Ml90PiYmIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiB7Ci0gICAgaWYgKCZwcm9jZXNzKCkg
PT0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkoKSkKKyAgICBpZiAo
cHJvY2VzcygpLmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vzcyh7
IH0sIFByb2Nlc3NMYXVuY2hSZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDgwMTRmMmU1ZGFlZWQzMWMy
YTQxOTllMGM5YWRmZWY4NWFlYmZhMDUuLmNlZWYwNDgzYmMwMjAxYTAwOTUwNDUwNDI0MTQ0Yjlh
OTA2YWZlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTc2Niw3ICs3NjYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIFdlYlByb2Nl
c3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKICAgICBpZiAo
IW1fdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbV9w
cmV3YXJtZWRQcm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkKKyAgICAg
ICAgICAgIGlmIChwcm9jZXNzID09IG1fcHJld2FybWVkUHJvY2VzcyB8fCBwcm9jZXNzLT5pc0R1
bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTE1NiwxMSArMTE1NiwxMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAgICAgaWYgKG1fcHJld2FybWVkUHJvY2VzcyA9PSBwcm9jZXNzKSB7CiAgICAgICAgIEFTU0VS
VChtX3ByZXdhcm1lZFByb2Nlc3MtPmlzUHJld2FybWVkKCkpOwogICAgICAgICBtX3ByZXdhcm1l
ZFByb2Nlc3MgPSBudWxscHRyOworICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gZHVtbXlQcm9j
ZXNzSXRlcmF0b3IgPSBtX2R1bW15UHJvY2Vzc1Byb3hpZXMuZmluZChwcm9jZXNzLT5zZXNzaW9u
SUQoKSk7CisgICAgICAgIGlmIChkdW1teVByb2Nlc3NJdGVyYXRvciAhPSBtX2R1bW15UHJvY2Vz
c1Byb3hpZXMuZW5kKCkgJiYgZHVtbXlQcm9jZXNzSXRlcmF0b3ItPnZhbHVlID09IHByb2Nlc3Mp
CisgICAgICAgICAgICBtX2R1bW15UHJvY2Vzc1Byb3hpZXMucmVtb3ZlKGR1bW15UHJvY2Vzc0l0
ZXJhdG9yKTsKICAgICB9CiAKLSAgICBpZiAobV9kdW1teVByb2Nlc3NQcm94eSA9PSBwcm9jZXNz
KQotICAgICAgICBtX2R1bW15UHJvY2Vzc1Byb3h5ID0gbnVsbHB0cjsKLQogICAgIC8vIEZJWE1F
IChNdWx0aS1XZWJQcm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBTb21lIG9mIHRo
ZSBpbnZhbGlkYXRpb24gY2FsbHMgb2YgdGhlIG90aGVyIHN1cHBsZW1lbnRzIGFyZSBzdGlsbCBu
ZWNlc3NhcnkgaW4gbXVsdGktcHJvY2VzcyBtb2RlLCBidXQgdGhleSBzaG91bGQgb25seSBhZmZl
Y3QgZGF0YSBzdHJ1Y3R1cmVzIHBlcnRhaW5pbmcgdG8gdGhlIHByb2Nlc3MgYmVpbmcgZGlzY29u
bmVjdGVkLgogICAgIC8vIENsZWFyaW5nIGV2ZXJ5dGhpbmcgY2F1c2VzIGFzc2VydGlvbiBmYWls
dXJlcywgc28gaXQncyBsZXNzIHRyb3VibGUgdG8gc2tpcCB0aGF0IGZvciBub3cuCiAgICAgUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvdGVjdChwcm9jZXNzKTsKQEAgLTEyMTQsNyArMTIxNSw3
IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byYgcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKSB7Ci0gICAgICAgIGlmIChwcm9jZXNzID09IG1fcHJld2FybWVk
UHJvY2VzcyB8fCBwcm9jZXNzID09IG1fZHVtbXlQcm9jZXNzUHJveHkpCisgICAgICAgIGlmIChw
cm9jZXNzID09IG1fcHJld2FybWVkUHJvY2VzcyB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1By
b3h5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQpAQCAtMTI1
MywxNiArMTI1NCwxNiBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBTaGFy
aW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3Bl
bigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgp
LT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBz
ZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAgICAg
ICAgQVNTRVJUKHByb2Nlc3MuZ2V0KCkgPT0gbV9kdW1teVByb2Nlc3NQcm94eSB8fCBwYWdlQ29u
ZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkpOworICAgICAgICBBU1NFUlQocHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8
IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNp
dGVEYXRhU3RvcmUoKSk7CiAgICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0
ZWRQYWdlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKICAgICB9IGVsc2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVu
Y2hEaXNhYmxlZCkgewogICAgICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHBy
b2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBh
Z2UuCi0gICAgICAgIGlmICghbV9kdW1teVByb2Nlc3NQcm94eSkgewotICAgICAgICAgICAgYXV0
byBkdW1teVByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKCp0aGlzLCBudWxs
cHRyLCBXZWJQcm9jZXNzUHJveHk6OklzUHJld2FybWVkOjpObywgV2ViUHJvY2Vzc1Byb3h5OjpT
aG91bGRMYXVuY2hQcm9jZXNzOjpObyk7Ci0gICAgICAgICAgICBtX2R1bW15UHJvY2Vzc1Byb3h5
ID0gZHVtbXlQcm9jZXNzUHJveHkucHRyKCk7Ci0gICAgICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBl
bmQoV1RGTW92ZShkdW1teVByb2Nlc3NQcm94eSkpOworICAgICAgICBwcm9jZXNzID0gZHVtbXlQ
cm9jZXNzUHJveHkocGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS0+c2Vzc2lv
bklEKCkpOworICAgICAgICBpZiAoIXByb2Nlc3MpIHsKKyAgICAgICAgICAgIHByb2Nlc3MgPSBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSgqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVE
YXRhU3RvcmUoKSwgV2ViUHJvY2Vzc1Byb3h5OjpJc1ByZXdhcm1lZDo6Tm8sIFdlYlByb2Nlc3NQ
cm94eTo6U2hvdWxkTGF1bmNoUHJvY2Vzczo6Tm8pOworICAgICAgICAgICAgbV9kdW1teVByb2Nl
c3NQcm94aWVzLmFkZChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNz
aW9uSUQoKSwgbWFrZVdlYWtQdHIoKnByb2Nlc3MpKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzc2Vz
LmFwcGVuZChwcm9jZXNzLmNvcHlSZWYoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcHJvY2VzcyA9
IG1fZHVtbXlQcm9jZXNzUHJveHk7CiAgICAgfSBlbHNlCiAgICAgICAgIHByb2Nlc3MgPSAmcHJv
Y2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKCpwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFT
dG9yZSgpLCBudWxscHRyLCB7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCAwMzdjYjE2ODAzYWUzOTEyZWIzYTYyMTMwZGExOTk0MzM3ODJlNmIxLi41
MTU1YmE4YjRhMDM2MjdkZGY1ZDU2ZDMyMzczMWVlYjdjYzA5MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZXIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTE4
Niw3ICsxODcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXZWJQcm9jZXNzUHJveHkgb2JqZWN0IHdo
aWNoIGRvZXMgbm90IGhhdmUgYSBydW5uaW5nIHByb2Nlc3Mgd2hpY2ggaXMgdXNlZCBmb3IgY29u
dmVuaWVuY2UsIHRvIGF2b2lkCiAgICAgLy8gbnVsbCBjaGVja3MgaW4gV2ViUGFnZVByb3h5Lgot
ICAgIFdlYlByb2Nlc3NQcm94eSogZHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdCB7IHJldHVybiBt
X2R1bW15UHJvY2Vzc1Byb3h5OyB9CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBkdW1teVByb2Nlc3NQ
cm94eShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1fZHVtbXlQcm9j
ZXNzUHJveGllcy5nZXQoc2Vzc2lvbklEKS5nZXQoKTsgfQogCiAgICAgLy8gV2ViUHJvY2VzcyBv
ciBOZXR3b3JrUHJvY2VzcyBhcyBhcHByb3BvcmlhdGUgZm9yIGN1cnJlbnQgcHJvY2VzcyBtb2Rl
bC4gVGhlIGNvbm5lY3Rpb24gbXVzdCBiZSBub24tbnVsbC4KICAgICBJUEM6OkNvbm5lY3Rpb24q
IG5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpOwpAQCAtNjI0LDcgKzYyNSw4IEBAIHByaXZh
dGU6CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fcHJvY2Vzc2VzOwog
ICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcmV3YXJtZWRQcm9jZXNzIHsgbnVsbHB0ciB9OwotICAg
IFdlYlByb2Nlc3NQcm94eSogbV9kdW1teVByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsgLy8gQSBs
aWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCisKKyAg
ICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVt
bXlQcm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMg
d2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkOTI0
MWExNTE3ODQwNDI0NmFkOWIzMmEyMzkxMDBkNjRkZTNjOTAxLi5hZjM0NzQyZTM0MWU4ZDU4M2Y3
OWEwYWQ5NzNlYjRhNjYxZjIxMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTI2MiwxMiArMjYyLDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhw
cm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKCp0aGlzLCBkYXRhU3Rv
cmUpKSwgMCk7CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15UHJvY2Vzc1Byb3h5
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlICYmIHByb2Nlc3NQb29s
KCkuZHVtbXlQcm9jZXNzUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkgPT0g
dGhpczsKK30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhE
YXRhU3RvcmUoKQogewogICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgYm9vbCBzaG91bGRCZVJlZ2lzdGVyZWQgPSBwcm9jZXNzUG9vbCgpLmR1
bW15UHJvY2Vzc1Byb3h5KCkgIT0gdGhpcyAmJiAocGFnZUNvdW50KCkgfHwgcHJvdmlzaW9uYWxQ
YWdlQ291bnQoKSk7CisgICAgYm9vbCBzaG91bGRCZVJlZ2lzdGVyZWQgPSBwYWdlQ291bnQoKSB8
fCBwcm92aXNpb25hbFBhZ2VDb3VudCgpOwogICAgIGlmIChzaG91bGRCZVJlZ2lzdGVyZWQpCiAg
ICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKICAgICBl
bHNlCkBAIC0xMDMwLDcgKzEwMzUsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6Y2FuQmVBZGRl
ZFRvV2ViUHJvY2Vzc0NhY2hlKCkgY29uc3QKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1heWJl
U2h1dERvd24oKQogewotICAgIGlmIChwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KCkg
PT0gdGhpcyAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CisgICAgaWYgKGlzRHVtbXlQcm9jZXNz
UHJveHkoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIEFTU0VSVChzdGF0ZSgp
ID09IFN0YXRlOjpUZXJtaW5hdGVkKTsKICAgICAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVj
dFByb2Nlc3ModGhpcyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzcxNTA2ZjVhYWVkOWViMDVlZmRiYTJmMWZjN2U3YWJj
ZGE0ZTIxYS4uYTBjNzMwMzZkNTdjZmM3NWYyZTY2YmFlZTJhMzFkMzZmYTM3N2I2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE3MCw2ICsxNzAsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247IH0KICAgICBib29sIGlzU3RhbmRhbG9u
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSAmJiAhcGFnZUNvdW50KCk7IH0KIAorICAgIGJvb2wgaXNEdW1teVByb2Nlc3NQcm94
eSgpIGNvbnN0OworCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJQYWdlSW5Qcm9jZXNzKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlz
aXRlZExpbmtTdG9yZSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>