<?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>200967</bug_id>
          
          <creation_ts>2019-08-20 23:29:04 -0700</creation_ts>
          <short_desc>[GTK] Make PSON optional</short_desc>
          <delta_ts>2019-10-03 01:25:53 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>201642</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>enometh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1563397</commentid>
    <comment_count>0</comment_count>
      <attachid>376848</attachid>
    <who name="">enometh</who>
    <bug_when>2019-08-20 23:29:04 -0700</bug_when>
    <thetext>Created attachment 376848
log indicating the failure path

for the UI process to talk to the correct webprocess I rely on the
page-created signal in the webprocess. On this signal I can inform
the UI process that this webprocess is handling this particular pageid.

However the page-created signal fails to trigger when navigation is to
(or maybe from) a page which is served by the pagecache.

To test this I have a dummy extension which prints an INITIALIZED message
on webkit_web_extension_initialize and a g_messgage on the
page-created-callback. I turn on

WEBKIT_DEBUG=Process,ProcessSwapping,ProcessSuspension


The attachment shows a selection of the messages I from 

1. loading /tmp/1.html which has a single link to trac.webkit.org,
2. and then navigating to the link
3. and then navigating back

step 3 is loads the page from cache.
the new process is created 11867 - BUT ProcessSwap tells process 11830
to handle back navigation to (/tmp/1.html)
but a page-created callback is not signalled for this step.
my UI process thinks that pageID=6 is handled by process 11854 (from step 2)
and directs it to access its document. This fails as there is no document.
and that process crashes.

I hope this description is sufficiently clear, I&apos;d be glad to 
supply more details as directed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565323</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-08-27 04:48:38 -0700</bug_when>
    <thetext>Maybe you are confused by pre-warmed process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565345</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-27 08:24:24 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #1)
&gt; Maybe you are confused by pre-warmed process?

I am not sure this has anything to do with pre-warmed processes. Based on the description, the issue seems to be related to PageCache and how it is implemented with Process-Swap-On-Navigation. When navigating back here, we swap back to the original process and leverage the PageCache entry in that process (this was important to keep PageCache functionality when we implemented process-swapping). The issue in question here seems specific to GTK here so I am not sure I will be able to help much. I am not familiar with webkit_web_extension_initialize / g_message. It seems like the developer wants to know we swapped back to another process and is currently not getting notified when the process is a &quot;suspended&quot; process (i.e. process kept around simply for PageCache purposes). I am happy to answer process-swap related questions if it helps GTK-port developers fix this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565688</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-08-28 05:24:18 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; (In reply to Carlos Garcia Campos from comment #1)
&gt; &gt; Maybe you are confused by pre-warmed process?
&gt; 
&gt; I am not sure this has anything to do with pre-warmed processes. Based on
&gt; the description, the issue seems to be related to PageCache and how it is
&gt; implemented with Process-Swap-On-Navigation. When navigating back here, we
&gt; swap back to the original process and leverage the PageCache entry in that
&gt; process (this was important to keep PageCache functionality when we
&gt; implemented process-swapping). The issue in question here seems specific to
&gt; GTK here so I am not sure I will be able to help much. I am not familiar
&gt; with webkit_web_extension_initialize / g_message. It seems like the
&gt; developer wants to know we swapped back to another process and is currently
&gt; not getting notified when the process is a &quot;suspended&quot; process (i.e. process
&gt; kept around simply for PageCache purposes). I am happy to answer
&gt; process-swap related questions if it helps GTK-port developers fix this
&gt; issue.

Thanks for your help Chris. I don&apos;t think this is specific to GTK, webkit_web_extension_initialize is equivalent to WKBundleInitialize and page-created signal is equivalent to InjectedBundle::Client::didCreatePage()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565714</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-28 08:23:18 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; (In reply to Chris Dumez from comment #2)
&gt; &gt; (In reply to Carlos Garcia Campos from comment #1)
&gt; &gt; &gt; Maybe you are confused by pre-warmed process?
&gt; &gt; 
&gt; &gt; I am not sure this has anything to do with pre-warmed processes. Based on
&gt; &gt; the description, the issue seems to be related to PageCache and how it is
&gt; &gt; implemented with Process-Swap-On-Navigation. When navigating back here, we
&gt; &gt; swap back to the original process and leverage the PageCache entry in that
&gt; &gt; process (this was important to keep PageCache functionality when we
&gt; &gt; implemented process-swapping). The issue in question here seems specific to
&gt; &gt; GTK here so I am not sure I will be able to help much. I am not familiar
&gt; &gt; with webkit_web_extension_initialize / g_message. It seems like the
&gt; &gt; developer wants to know we swapped back to another process and is currently
&gt; &gt; not getting notified when the process is a &quot;suspended&quot; process (i.e. process
&gt; &gt; kept around simply for PageCache purposes). I am happy to answer
&gt; &gt; process-swap related questions if it helps GTK-port developers fix this
&gt; &gt; issue.
&gt; 
&gt; Thanks for your help Chris. I don&apos;t think this is specific to GTK,
&gt; webkit_web_extension_initialize is equivalent to WKBundleInitialize and
&gt; page-created signal is equivalent to InjectedBundle::Client::didCreatePage()

Well, our injected bundle API is not public :)
Injected bundles unfortunately often do not play nice with process swapping. Some work may be needed on injected bundle side to help figure out that we&apos;re back to using this process (maybe via load notifications?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566098</commentid>
    <comment_count>5</comment_count>
    <who name="">enometh</who>
    <bug_when>2019-08-28 22:59:02 -0700</bug_when>
    <thetext>Without understanding any of the complexity of process swapping or suspension
I tried commenting out 2 lines in UIProxy/WebPageProxy.cpp
WebPageProxy::suspendCurrentPageIfPossible

-    if (fromItem &amp;&amp; m_preferences-&gt;usesPageCache())
-        fromItem-&gt;setSuspendedPage(suspendedPage.get());

and this seems to avoid the problem I was reporting.

It would be nice to have a description of ProcessSwapping and suspension on
say blog.webkit.org with some design notes.

[On another note I notice a commit introduced WebKit/UIProcess/WebProcessProxy.h:    void didCreateWebPageInProcess(WebCore::PageIdentifier); - 
which does not seem to be defined or used anywhere.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566271</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 09:34:44 -0700</bug_when>
    <thetext>(In reply to enometh from comment #5)
&gt; Without understanding any of the complexity of process swapping or suspension
&gt; I tried commenting out 2 lines in UIProxy/WebPageProxy.cpp
&gt; WebPageProxy::suspendCurrentPageIfPossible
&gt; 
&gt; -    if (fromItem &amp;&amp; m_preferences-&gt;usesPageCache())
&gt; -        fromItem-&gt;setSuspendedPage(suspendedPage.get());
&gt; 
&gt; and this seems to avoid the problem I was reporting.

If GTK port has an API to disable PageCache, it would also work around your issue too and would not require a code change.

&gt; 
&gt; It would be nice to have a description of ProcessSwapping and suspension on
&gt; say blog.webkit.org with some design notes.
&gt; 
&gt; [On another note I notice a commit introduced
&gt; WebKit/UIProcess/WebProcessProxy.h:    void
&gt; didCreateWebPageInProcess(WebCore::PageIdentifier); - 
&gt; which does not seem to be defined or used anywhere.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567154</commentid>
    <comment_count>7</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-09-02 02:01:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to enometh from comment #5)
&gt; &gt; Without understanding any of the complexity of process swapping or suspension
&gt; &gt; I tried commenting out 2 lines in UIProxy/WebPageProxy.cpp
&gt; &gt; WebPageProxy::suspendCurrentPageIfPossible
&gt; &gt; 
&gt; &gt; -    if (fromItem &amp;&amp; m_preferences-&gt;usesPageCache())
&gt; &gt; -        fromItem-&gt;setSuspendedPage(suspendedPage.get());
&gt; &gt; 
&gt; &gt; and this seems to avoid the problem I was reporting.
&gt; 
&gt; If GTK port has an API to disable PageCache, it would also work around your
&gt; issue too and would not require a code change.

IIUC this would be achieved using webkit_web_context_set_model(),
passing WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567449</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-09-03 11:31:02 -0700</bug_when>
    <thetext>Page cache is too important for back/forward performance to give up, though.

I&apos;d try emitting fake page-created events when the page is unsuspended. It&apos;d be weird for page-created to occur multiple times for the same page, but I guess unlikely to break anything that&apos;s not already broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567689</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-04 01:51:16 -0700</bug_when>
    <thetext>Instead of disabling page cache we could disable the page suspension in 2.26 to ensure applications can still working without changes. If I understood the code correctly, suspended pages are used only for history navigation. Pages are suspended for 10 seconds, so that if you navigate back to a page that is still suspended the same process and page is used. I think we can live without that optimization for 2.26. I don&apos;t see how to provide backwards compatibility here otherwise, because emitting page-created when a page is unsuspended wouldn&apos;t work either, because apps assume it&apos;s not emitted twice for the same WebKitWebPage. In the case of ephy we would want to emit the PageCreated DBus signal, but not the rest of the things we do in the page created callback. 

In the case of trunk, I think we should add a new signal, and update applications to handle it. I&apos;m still not sure how we could expose it in the api, though.

 - We could add page-attached that would also be emitted after page-created. Then we could split current page-created, and use page-attached to notify the UI process that the injected bundle connection should be used for that page. Apps would use this instead of page created to set the current injected bundle proxy.

 - Or we could expose is-suspended as a property than can be monitored. Apps would need to keep a list of injected bundle proxies for the same web view. When the page is unsuspended, the UI process is notified and the web view sets the unsuspended injected bundle proxy as the current one.

Again, for trunk I don&apos;t see any solution that doesn&apos;t require to update the applications. We should probably encourage apps not to use custom IPC for the communication from UI process to injected bundle and use webkit_web_view_run_javascript() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567696</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-04 02:33:10 -0700</bug_when>
    <thetext>hmm, it&apos;s not only suspended pages, there&apos;s also the process cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567697</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-04 02:42:42 -0700</bug_when>
    <thetext>Disabling the process cache might have a bigger impact in performance when navigating to history items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567718</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-04 05:35:32 -0700</bug_when>
    <thetext>The other alternative would be to disable PSON entirely in 2.26.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567737</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-09-04 06:34:34 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; The other alternative would be to disable PSON entirely in 2.26.

I&apos;d do it, but only if we also revert enough of Chris&apos;s work on the 2.26 branch to bring back single-process model for 2.26. Then we can have a smooth upgrade to 2.26 so this is no longer an emergency, and continue to discuss how to handle this situation for 2.28.

We should still try to sort this out now, but it&apos;ll be a lot easier to solve this at the very beginning of the next release cycle rather than the end of the current one.

We might need to seriously consider an API version bump, though hopefully it can be avoided.

(In reply to Carlos Garcia Campos from comment #10)
&gt; hmm, it&apos;s not only suspended pages, there&apos;s also the process cache.

What&apos;s the impact of process cache on API users?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567738</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-09-04 06:51:41 -0700</bug_when>
    <thetext>(In reply to enometh from comment #0)
&gt; for the UI process to talk to the correct webprocess I rely on the
&gt; page-created signal in the webprocess. On this signal I can inform
&gt; the UI process that this webprocess is handling this particular pageid.

I&apos;d be helpful to know app is broken, so we know what to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568066</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-05 01:48:37 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; (In reply to enometh from comment #0)
&gt; &gt; for the UI process to talk to the correct webprocess I rely on the
&gt; &gt; page-created signal in the webprocess. On this signal I can inform
&gt; &gt; the UI process that this webprocess is handling this particular pageid.
&gt; 
&gt; I&apos;d be helpful to know app is broken, so we know what to test.

Epiphany is also affected by this, and it&apos;s not easy to fix/workaround (disabling page cache, which is not an option for epiphany). That&apos;s why I think maybe it&apos;s easier to disable PSON in 2.26.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568073</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-09-05 02:16:50 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; (In reply to Carlos Garcia Campos from comment #12)
&gt; &gt; The other alternative would be to disable PSON entirely in 2.26.
&gt; 
&gt; I&apos;d do it, but only if we also revert enough of Chris&apos;s work on the 2.26
&gt; branch to bring back single-process model for 2.26. Then we can have a
&gt; smooth upgrade to 2.26 so this is no longer an emergency, and continue to
&gt; discuss how to handle this situation for 2.28.

Unfortunately that&apos;s not that easy and we already have a workaround. I expect more apps to be broken because of this bug than apps depending on the single process model. I know it would be ideal if apps didn&apos;t have to do anything, but we have a very simple workaround for the single process model case. This bug is more complicated and the only way I see right now to not break apps is disabling PSON.

&gt; We should still try to sort this out now, but it&apos;ll be a lot easier to solve
&gt; this at the very beginning of the next release cycle rather than the end of
&gt; the current one.

It&apos;s a pity that very few people try early unstable releases, and I didn&apos;t notice any issue because I don&apos;t use the remember password feature of ephy.

&gt; We might need to seriously consider an API version bump, though hopefully it
&gt; can be avoided.
&gt; 
&gt; (In reply to Carlos Garcia Campos from comment #10)
&gt; &gt; hmm, it&apos;s not only suspended pages, there&apos;s also the process cache.
&gt; 
&gt; What&apos;s the impact of process cache on API users?

I guess it will be slower to load pages when switching processes due to history navigation (which is always expected to be fast).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575479</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 03:21:14 -0700</bug_when>
    <thetext>I&apos;ve realized that we don&apos;t really need new API for the cases when page created is not emitted, but we need to handle it in the applications. Since it&apos;s not really possible to enable PSON without breaking backwards compatibility, I&apos;ve decided to make it optional, so that only apps that are ready can enable it. For this particular case, the application needs to keep a map of web process connections to web views, using the page created signal the same way, but leaving connections in the map until they are closed. This way, when a previous process is reused we already have the connection in the map. Once patch in bug #201642 lands, we can monitor the page id changes to create the proxy for the current web process. You can see how I implemented this approach in the unit tests. I&apos;m going to use this bug to add the new API to enable PSON. Note that this property will be removed once we bump the API version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575482</commentid>
    <comment_count>18</comment_count>
      <attachid>379885</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-01 03:34:54 -0700</bug_when>
    <thetext>Created attachment 379885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575498</commentid>
    <comment_count>19</comment_count>
      <attachid>379885</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2019-10-01 05:04:42 -0700</bug_when>
    <thetext>Comment on attachment 379885
Patch

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

Patch r=me informally, with a small nit about documentation.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:457
&gt; +     * Whether swap Web processes on cross-site navigations is enabled.

I think this deserves a short paragraph explaining intuitively what
the setting entails, and why it is a good thing. How about something
like this:

  When enabled, pages from each security origin will be handled by
  their own separate renderer processes, which are started (and
  terminated) on demand as the user navigates across different
  domains. This is an important security measure which helps prevent
  websites stealing data from other visited pages.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:468
&gt; +            FALSE,

While it would be much better from a security POV to set this is to TRUE,
and let applications opt-out when needed, we&apos;ll have to live with PSON
disabled by default to please the Backwards Compatibility Demigods ¯\_(ツ)_/¯</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576330</commentid>
    <comment_count>20</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-03 01:25:53 -0700</bug_when>
    <thetext>Committed r250646: &lt;https://trac.webkit.org/changeset/250646&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>376848</attachid>
            <date>2019-08-20 23:29:04 -0700</date>
            <delta_ts>2019-08-20 23:29:04 -0700</delta_ts>
            <desc>log indicating the failure path</desc>
            <filename>file_200967.txt</filename>
            <type>text/plain</type>
            <size>3999</size>
            <attacher>enometh</attacher>
            
              <data encoding="base64">MS4NCg0KKiogTWVzc2FnZTogMTE6Mzg6MDUuMzM3OiBbMTE4MzAgMTE4MzBdICoqKipJTklUSUFM
SVpFRCBFWFQgMHg2NmU0MjANCioqIE1lc3NhZ2U6IDExOjM4OjA1LjkzNzogWzExODMwIDExODMw
XSAweDY2ZTQyMDogUGFnZSA2IGNyZWF0ZWQgZm9yIChudWxsKQ0KKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICdmaWxlOi8vL3RtcC8xLmh0
bWwnDQoqIE1lc3NhZ2U6IDExOjM4OjA1Ljk1NzogWzExODMwIDExODMwXSBkb2MgPSAweDdmNWY3
NDAxMjAyMD09PT09PT09PXZpZXc9MHg3ZjVmNzQwMTFkMzANCioqIE1lc3NhZ2U6IDExOjM4OjA1
Ljk1NzogWzExODMwIDExODMwXSBwYWdlID0gNiBmb3IgZmlsZTovLy90bXAvMS5odG1sDQoNCg0K
Mi4NCihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlLCB1cmwgJ2ZpbGU6Ly8v
dG1wLzEuaHRtbCcNCihQcm9jZXNzU3dhcHBpbmcpIFN3aXRjaGluZyBmcm9tIHByb2Nlc3MgMTE4
MzAgdG8gbmV3IHByb2Nlc3MgKDExODU0KSBmb3IgbmF2aWdhdGlvbiAyICdNb3N0IHJlY2VudCBV
Ukw6IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyBCYWNrL2ZvcndhcmQgbGlzdCBpdGVtIFVSTDog
JycgKDB4MCknDQpFUlJPUjogMHg3Zjk5OTVjOTkwMDAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6
UHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9IDYgbmF2aWdhdGlvbklEID0gMiBzdXNwZW5k
ZWRQYWdlOiAobmlsKQ0KLi4vU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwKDY2KSA6IFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFs
UGFnZVByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV1RGOjpSZWY8V2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eT4s
IHVpbnQ2NF90LCBib29sLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6
OlByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpDQoNCioqIE1lc3NhZ2U6IDExOjM4OjEwLjQz
MzogWzExODU0IDExODU0XSAqKioqSU5JVElBTElaRUQgRVhUIDB4NjZlNDIwDQoNClVuaGFuZGxl
ZCBtZXNzYWdlIFdlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlV2luZG93IGZyb20gcHJvdmlzaW9uYWwg
cHJvY2Vzcw0KVW5oYW5kbGVkIG1lc3NhZ2UgV2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VNYWluRG9j
dW1lbnQgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzDQpVbmhhbmRsZWQgbWVzc2FnZSBXZWJQYWdl
UHJveHk6OkJpbmRBY2Nlc3NpYmlsaXR5VHJlZSBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MNClVu
aGFuZGxlZCBtZXNzYWdlIFdlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlQ29udGVudFNpemUgZnJvbSBw
cm92aXNpb25hbCBwcm9jZXNzDQpVbmhhbmRsZWQgbWVzc2FnZSBXZWJQYWdlUHJveHk6OlNldENh
blNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nl
c3MNClVuaGFuZGxlZCBtZXNzYWdlIFdlYlBhZ2VQcm94eTo6U2V0UmVuZGVyVHJlZVNpemUgZnJv
bSBwcm92aXNpb25hbCBwcm9jZXNzDQpVbmhhbmRsZWQgbWVzc2FnZSBXZWJQYWdlUHJveHk6OkZv
Y3VzZWRGcmFtZUNoYW5nZWQgZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzDQoNCioqIE1lc3NhZ2U6
IDExOjM4OjEwLjcxMDogWzExODU0IDExODU0XSAweDY2ZTQyMDogUGFnZSA2IGNyZWF0ZWQgZm9y
IChudWxsKQ0KDQooV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8nIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhl
IE5ldHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkgNA0KKFdlYlByb2Nlc3MpIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8n
LiBTdGF0dXMgMjAwLg0KKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyY2UgZm9yICdodHRwczovL3RyYWMud2Via2l0Lm9yZy8nDQoNClVuaGFuZGxlZCBtZXNz
YWdlIFdlYlBhZ2VQcm94eTo6Q2xlYXJBbGxFZGl0Q29tbWFuZHMgZnJvbSBwcm92aXNpb25hbCBw
cm9jZXNzDQpVbmhhbmRsZWQgbWVzc2FnZSBXZWJQYWdlUHJveHk6OkRpZENoYW5nZU1haW5Eb2N1
bWVudCBmcm9tIHByb3Zpc2lvbmFsIHByb2Nlc3MNClVuaGFuZGxlZCBtZXNzYWdlIFdlYlBhZ2VQ
cm94eTo6RGlkQ2hhbmdlTWFpbkRvY3VtZW50IGZyb20gcHJvdmlzaW9uYWwgcHJvY2Vzcw0KV2Vi
UGFnZVByb3h5IDYgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAoMHg3Rjk5OTVDODUwMDAgcGFnZSBJ
RCA2LCBtX3N1c3BlbnNpb25TdGF0ZSAwKSBmb3IgcHJvY2VzcyBwaWQgMTE4MzAsIGJhY2svZm9y
d2FyZCBpdGVtIDctNWx1DQpTdXNwZW5kZWRQYWdlUHJveHkgKDB4N0Y5OTk1Qzg1MDAwIHBhZ2Ug
SUQgNiwgbV9zdXNwZW5zaW9uU3RhdGUgMCkgZnJvbSBwcm9jZXNzIDExODMwIGZpbmlzaGVkIHRy
YW5zaXRpb24gdG8gc3VzcGVuZGVkDQoNCiogTWVzc2FnZTogMTE6Mzg6MTEuNDY4OiBbMTE4NTQg
MTE4NTRdIGRvYyA9IDB4N2Y2MTI4MDEwYzQwPT09PT09PT09dmlldz0weDdmNjEyODAxMjBhMA0K
KiogTWVzc2FnZTogMTE6Mzg6MTEuNDY4OiBbMTE4NTQgMTE4NTRdIHBhZ2UgPSA2IGZvciBodHRw
czovL3RyYWMud2Via2l0Lm9yZy8NCg0KMy4NCg0KKiogTWVzc2FnZTogMTE6Mzg6MTMuOTkyOiBb
MTE4NjcgMTE4NjddICoqKipJTklUSUFMSVpFRCBFWFQgMHg2NmU0MjANCg0KKFByb2Nlc3NTd2Fw
cGluZykgU3dpdGNoaW5nIGZyb20gcHJvY2VzcyAxMTg1NCB0byBuZXcgcHJvY2VzcyAoMTE4MzAp
IGZvciBuYXZpZ2F0aW9uIDMgJ01vc3QgcmVjZW50IFVSTDogZmlsZTovLy90bXAvMS5odG1sIEJh
Y2svZm9yd2FyZCBsaXN0IGl0ZW0gVVJMOiAnZmlsZTovLy90bXAvMS5odG1sJyAoMHg3Rjk5OTVD
QTcxMjApJw0KRVJST1I6IDB4N2Y5OTk1Yzk5MTUwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSA2IG5hdmlnYXRpb25JRCA9IDMgc3VzcGVuZGVk
UGFnZTogMHg3Zjk5OTVjODUwMDANCi4uL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcCg2NikgOiBXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92
aXNpb25hbFBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdURjo6UmVmPFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpTdXNwZW5kZWRQYWdl
UHJveHk+LCB1aW50NjRfdCwgYm9vbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViS2l0OjpQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KQ0KVW5oYW5kbGVkIG1lc3NhZ2Ug
V2ViUGFnZVByb3h5OjpDbGVhckFsbEVkaXRDb21tYW5kcyBmcm9tIHByb3Zpc2lvbmFsIHByb2Nl
c3MNClVuaGFuZGxlZCBtZXNzYWdlIFdlYlBhZ2VQcm94eTo6Q2xlYXJBbGxFZGl0Q29tbWFuZHMg
ZnJvbSBwcm92aXNpb25hbCBwcm9jZXNzDQpXZWJQYWdlUHJveHkgNiBjcmVhdGVkIHN1c3BlbmRl
ZCBwYWdlICgweDdGOTk5NUM4NTA5MCBwYWdlIElEIDYsIG1fc3VzcGVuc2lvblN0YXRlIDApIGZv
ciBwcm9jZXNzIHBpZCAxMTg1NCwgYmFjay9mb3J3YXJkIGl0ZW0gMTEtNWx1DQoNClN1c3BlbmRl
ZFBhZ2VQcm94eSAoMHg3Rjk5OTVDODUwOTAgcGFnZSBJRCA2LCBtX3N1c3BlbnNpb25TdGF0ZSAw
KSBmcm9tIHByb2Nlc3MgMTE4NTQgZmluaXNoZWQgdHJhbnNpdGlvbiB0byBzdXNwZW5kZWQNCg0K
NC4NCihQcm9jZXNzU3dhcHBpbmcpIFJlbW92aW5nIHByb2Nlc3Mgd2l0aCBwaWQgMTE4MzAgZnJv
bSB0aGUgb3JpZ2luIGNhY2hlIHNldA0KQVNTRVJUSU9OIEZBSUxFRDogIW1fbG9jYWxTdG9yYWdl
TmFtZXNwYWNl
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379885</attachid>
            <date>2019-10-01 03:34:54 -0700</date>
            <delta_ts>2019-10-01 06:21:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk-pson-optional.diff</filename>
            <type>text/plain</type>
            <size>10267</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMmVhMDAxMTI0ODEuLmQ4ZmFjNGE4Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0aW9uYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGVu
YWJsZSBQU09OIGJ5IGRlZmF1bHQgYW5kIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGFw
cGxpY2F0aW9ucyBtaWdodCBuZWVkIHRvIHVzZSBuZXcKKyAgICAgICAgQVBJIHRvIG1vbml0b3Ig
dGhlIHBhZ2UgSUQgY2hhbmdlcyBpbiB0aGUgV2ViIHZpZXcuIFNvLCB0aGlzIHBhdGNoIGFkZHMg
YSBjb25zdHJ1Y3Qgb25seSBwcm9wZXJ0eSB0bworICAgICAgICBXZWJLaXRXZWJDb250ZXh0IHRv
IGVuYWJsZSBQU09OLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNv
bnRleHQuY3BwOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEdldFByb3BlcnR5KToKKyAgICAg
ICAgKHdlYmtpdFdlYkNvbnRleHRTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X2NsYXNzX2luaXQp
OgorCiAyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVtXUEVdIEFkZCBXZWJLaXRXZWJWaWV3OnBhZ2UtaWQgcHJvcGVy
dHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggNGI3OWNhYTE2YTMuLjc4NDliNGFkM2M0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMTEzLDcgKzExMywxMCBAQCBlbnVtIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgUFJPUF9M
T0NBTF9TVE9SQUdFX0RJUkVDVE9SWSwKICNlbmRpZgotICAgIFBST1BfV0VCU0lURV9EQVRBX01B
TkFHRVIKKyAgICBQUk9QX1dFQlNJVEVfREFUQV9NQU5BR0VSLAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICBQUk9QX1BTT05fRU5BQkxFRAorI2VuZGlmCiB9OwogCiBlbnVtIHsKQEAgLTE2Niw2ICsx
NjksOSBAQCBjbGFzcyBXZWJLaXRBdXRvbWF0aW9uQ2xpZW50Owogc3RydWN0IF9XZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBwcm9jZXNzUG9vbDsK
ICAgICBib29sIGNsaWVudHNEZXRhY2hlZDsKKyNpZiBQTEFURk9STShHVEspCisgICAgYm9vbCBw
c29uRW5hYmxlZDsKKyNlbmRpZgogCiAgICAgR1JlZlB0cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+
IGZhdmljb25EYXRhYmFzZTsKICAgICBHUmVmUHRyPFdlYktpdFNlY3VyaXR5TWFuYWdlcj4gc2Vj
dXJpdHlNYW5hZ2VyOwpAQCAtMjg4LDYgKzI5NCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSog
dgogICAgIGNhc2UgUFJPUF9XRUJTSVRFX0RBVEFfTUFOQUdFUjoKICAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyKGNvbnRleHQpKTsKICAgICAgICAgYnJlYWs7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGNh
c2UgUFJPUF9QU09OX0VOQUJMRUQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IGNvbnRleHQtPnByaXYtPnBzb25FbmFibGVkKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSUQsIHBhcmFtU3BlYyk7CiAgICAgfQpAQCAtMzA4LDYgKzMxOSwxMSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0U2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wSUQsIGNvbnN0IEdWYQogICAgICAgICBjb250ZXh0LT5wcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIgPSBtYW5hZ2VyID8gV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpIDog
bnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBj
YXNlIFBST1BfUFNPTl9FTkFCTEVEOgorICAgICAgICBjb250ZXh0LT5wcml2LT5wc29uRW5hYmxl
ZCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyNlbmRpZgog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BJRCwgcGFyYW1TcGVjKTsKICAgICB9CkBAIC0zMTksMTEgKzMzNSwxNSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQog
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGlu
amVjdGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSwgbnVsbHB0
cikpOwogCisgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09O
VEVYVChvYmplY3QpOworICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29u
dGV4dC0+cHJpdjsKKwogICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247CiAgICAgY29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQo
KSkpOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBjb25maWd1cmF0aW9uLnNldFByb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbihwcml2LT5wc29uRW5hYmxlZCk7CisjZW5kaWYKIAotICAgIFdlYktpdFdl
YkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKLSAgICBX
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYg
KCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJsb2NhbC1z
dG9yYWdlLWRpcmVjdG9yeSIsIHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCksIG51
bGxwdHIpKTsKIApAQCAtNDMwLDYgKzQ1MCwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfY2xhc3NfaW5pdChXZWJLaXRXZWJDb250ZXh0Q2xhc3MqIHdlYkNvbnRleHRDbGFzcwog
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFS
QU1fQ09OU1RSVUNUX09OTFkpKSk7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgLyoqCisgICAg
ICogV2ViS2l0V2ViQ29udGV4dDpwcm9jZXNzLXN3YXAtb24tY3Jvc3Mtc2l0ZS1uYXZpZ2F0aW9u
LWVuYWJsZWQ6CisgICAgICoKKyAgICAgKiBXaGV0aGVyIHN3YXAgV2ViIHByb2Nlc3NlcyBvbiBj
cm9zcy1zaXRlIG5hdmlnYXRpb25zIGlzIGVuYWJsZWQuCisgICAgICoKKyAgICAgKiBTaW5jZTog
Mi4yOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAg
ICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9QU09OX0VOQUJMRUQsCisgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1z
aXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsCisgICAgICAgICAgICBfKCJTd2FwIFByb2Nlc3NlcyBv
biBDcm9zcy1TaXRlIE5hdmlnYXRpb24iKSwKKyAgICAgICAgICAgIF8oIldoZXRoZXIgc3dhcCBX
ZWIgcHJvY2Vzc2VzIG9uIGNyb3NzLXNpdGUgbmF2aWdhdGlvbnMgaXMgZW5hYmxlZCIpLAorICAg
ICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisjZW5kaWYK
KwogICAgIC8qKgogICAgICAqIFdlYktpdFdlYkNvbnRleHQ6OmRvd25sb2FkLXN0YXJ0ZWQ6CiAg
ICAgICogQGNvbnRleHQ6IHRoZSAjV2ViS2l0V2ViQ29udGV4dApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTYzMThiNDViLi5hZWU3N2EyMGQ1
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDE5LTEwLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBNYWtlIFBTT04gb3B0aW9uYWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDk2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBQU09OIGluIE1p
bmlCcm93c2VyIGFuZCB1bml0IHRlc3RzLiBBbHNvIGFkZCBtb3JlIHRlc3RzIHRvIHBhZ2UtaWQg
dG8gY2hlY2sgdGhhdCB3ZSBjYW4gc3RpbGwgdGFsayB0byB0aGUKKyAgICAgICAgcmlnaHQgd2Vi
IHByb2Nlc3MgYWZ0ZXIgY3Jvc3Mtc2l0ZSBoaXN0b3J5IG5hdmlnYXRpb24uCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9ndGsvbWFpbi5jOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAg
ICAgKHRlc3RXZWJFeHRlbnNpb25QYWdlSUQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmg6CisgICAgICAgIChUZXN0OjpUZXN0KToKKwogMjAxOS0x
MC0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS11bV1BFXSBBZGQgV2ViS2l0V2ViVmlldzpwYWdlLWlkIHByb3BlcnR5CmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L21haW4uYwppbmRleCA5ODE1YWU4MmQ0NC4uNGUxNDc4YWEzYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4u
YwpAQCAtNTMyLDcgKzUzMiw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFdlYktpdFdlYkNvbnRleHQgKndlYkNvbnRl
eHQgPSAocHJpdmF0ZU1vZGUgfHwgYXV0b21hdGlvbk1vZGUpID8gd2Via2l0X3dlYl9jb250ZXh0
X25ld19lcGhlbWVyYWwoKSA6IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpOworICAg
IFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciAqbWFuYWdlciA9IChwcml2YXRlTW9kZSB8fCBhdXRv
bWF0aW9uTW9kZSkgPyB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgp
IDogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ldyhOVUxMKTsKKyAgICBXZWJLaXRXZWJD
b250ZXh0ICp3ZWJDb250ZXh0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9DT05URVhU
LCAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCBtYW5hZ2VyLCAicHJvY2Vzcy1zd2FwLW9uLWNyb3Nz
LXNpdGUtbmF2aWdhdGlvbi1lbmFibGVkIiwgVFJVRSwgTlVMTCk7CisgICAgZ19vYmplY3RfdW5y
ZWYobWFuYWdlcik7CiAKICAgICBpZiAoY29va2llc1BvbGljeSkgewogICAgICAgICBXZWJLaXRD
b29raWVNYW5hZ2VyICpjb29raWVNYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29r
aWVfbWFuYWdlcih3ZWJDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IGFjMmY5OTEy
NjIzLi4yNGUxMzY3Y2E3YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC00ODgsNiArNDg4LDUz
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfZmFsc2UocGFnZUlEQ2hhbmdlZEVtaXR0ZWQp
OwogICAgIGdfYXNzZXJ0X2NtcHVpbnQocGFnZUlELCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF9w
YWdlX2lkKHRlc3QtPm1fd2ViVmlldykpOwogICAgIGNoZWNrVGl0bGUodGVzdCwgcHJveHkuZ2V0
KCksICJUaXRsZTQiKTsKKworICAgIC8vIFJlZ2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8g
dGVzdCBoaXN0b3J5IG5hdmlnYXRpb24uCisgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVy
X3VyaV9zY2hlbWUodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCAiZm9vIiwKKyAgICAgICAgW10o
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIpIHsKKyAgICAgICAgICAg
IFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJpX25ldyh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkpOworICAgICAgICAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0
U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXcoKSk7CisgICAgICAg
ICAgICBjaGFyKiBodG1sID0gZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48aGVhZD48dGl0bGU+JXM8
L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIsICFzdHJjbXAodXJpLT5ob3N0LCAi
aG9zdDUiKSA/ICJUaXRsZTUiIDogIlRpdGxlNiIpOworICAgICAgICAgICAgc291cF91cmlfZnJl
ZSh1cmkpOworICAgICAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVN
T1JZX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbS5nZXQoKSksIGh0bWwsIHN0cmxlbihodG1sKSwg
Z19mcmVlKTsKKyAgICAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKHJl
cXVlc3QsIGlucHV0U3RyZWFtLmdldCgpLCBzdHJsZW4oaHRtbCksICJ0ZXh0L2h0bWwiKTsKKyAg
ICAgICAgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICB0ZXN0LT5sb2FkVVJJKCJmb286Ly9o
b3N0NS8iKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHBhZ2VJRENoYW5nZWRFbWl0dGVkKTsKKyAgICBwYWdlSURDaGFuZ2VkRW1pdHRlZCA9
IGZhbHNlOworICAgIGdfYXNzZXJ0X2NtcHVpbnQocGFnZUlELCA8LCB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3BhZ2VfaWQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgcGFnZUlEID0gd2Via2l0X3dlYl92
aWV3X2dldF9wYWdlX2lkKHRlc3QtPm1fd2ViVmlldyk7CisgICAgcHJveHkgPSB0ZXN0LT5leHRl
bnNpb25Qcm94eSgpOworICAgIGNoZWNrVGl0bGUodGVzdCwgcHJveHkuZ2V0KCksICJUaXRsZTUi
KTsKKworICAgIHRlc3QtPmxvYWRVUkkoImZvbzovL2hvc3Q2LyIpOworICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0X3RydWUocGFnZUlEQ2hhbmdlZEVtaXR0
ZWQpOworICAgIHBhZ2VJRENoYW5nZWRFbWl0dGVkID0gZmFsc2U7CisgICAgZ19hc3NlcnRfY21w
dWludChwYWdlSUQsIDwsIHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZp
ZXcpKTsKKyAgICBwYWdlSUQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQodGVzdC0+bV93
ZWJWaWV3KTsKKyAgICBwcm94eSA9IHRlc3QtPmV4dGVuc2lvblByb3h5KCk7CisgICAgY2hlY2tU
aXRsZSh0ZXN0LCBwcm94eS5nZXQoKSwgIlRpdGxlNiIpOworCisgICAgdGVzdC0+Z29CYWNrKCk7
CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnRfdHJ1ZShw
YWdlSURDaGFuZ2VkRW1pdHRlZCk7CisgICAgcGFnZUlEQ2hhbmdlZEVtaXR0ZWQgPSBmYWxzZTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHBhZ2VJRCwgPiwgd2Via2l0X3dlYl92aWV3X2dldF9wYWdl
X2lkKHRlc3QtPm1fd2ViVmlldykpOworICAgIHBhZ2VJRCA9IHdlYmtpdF93ZWJfdmlld19nZXRf
cGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpOworICAgIHByb3h5ID0gdGVzdC0+ZXh0ZW5zaW9uUHJv
eHkoKTsKKyAgICBjaGVja1RpdGxlKHRlc3QsIHByb3h5LmdldCgpLCAiVGl0bGU1Iik7CisKKyAg
ICB0ZXN0LT5nb0ZvcndhcmQoKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KyAgICBnX2Fzc2VydF90cnVlKHBhZ2VJRENoYW5nZWRFbWl0dGVkKTsKKyAgICBwYWdlSURDaGFu
Z2VkRW1pdHRlZCA9IGZhbHNlOworICAgIGdfYXNzZXJ0X2NtcHVpbnQocGFnZUlELCA8LCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgcGFnZUlEID0g
d2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHRlc3QtPm1fd2ViVmlldyk7CisgICAgcHJveHkg
PSB0ZXN0LT5leHRlbnNpb25Qcm94eSgpOworICAgIGNoZWNrVGl0bGUodGVzdCwgcHJveHkuZ2V0
KCksICJUaXRsZTYiKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKaW5kZXggNTkyYTBjMjQ3NjYuLjMzOGYy
NWZkNTM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RN
YWluLmgKQEAgLTEyOSw3ICsxMjksMTIgQEAgcHVibGljOgogICAgICAgICAgICAgImRpc2stY2Fj
aGUtZGlyZWN0b3J5IiwgZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpLCAib2ZmbGluZS1hcHBsaWNh
dGlvbi1jYWNoZS1kaXJlY3RvcnkiLCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgpLAog
ICAgICAgICAgICAgIndlYnNxbC1kaXJlY3RvcnkiLCB3ZWJTUUxEaXJlY3RvcnkuZ2V0KCksICJo
c3RzLWNhY2hlLWRpcmVjdG9yeSIsIGhzdHNEaXJlY3RvcnkuZ2V0KCksIG51bGxwdHIpKTsKIAot
ICAgICAgICBtX3dlYkNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X25ld193
aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpOworICAg
ICAgICBtX3dlYkNvbnRleHQgPSBhZG9wdEdSZWYoV0VCS0lUX1dFQl9DT05URVhUKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9XRUJfQ09OVEVYVCwKKyAgICAgICAgICAgICJ3ZWJzaXRlLWRhdGEt
bWFuYWdlciIsIHdlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSwKKyNpZiBQTEFURk9STShHVEspCisg
ICAgICAgICAgICAicHJvY2Vzcy1zd2FwLW9uLWNyb3NzLXNpdGUtbmF2aWdhdGlvbi1lbmFibGVk
IiwgVFJVRSwKKyNlbmRpZgorICAgICAgICAgICAgbnVsbHB0cikpKTsKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChtX3dlYkNvbnRleHQuZ2V0KCksICJpbml0aWFsaXplLXdlYi1leHRlbnNpb25z
IiwgR19DQUxMQkFDSyhpbml0aWFsaXplV2ViRXh0ZW5zaW9uc0NhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgfQogCg==
</data>
<flag name="review"
          id="395607"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>