<?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>88961</bug_id>
          
          <creation_ts>2012-06-12 22:50:36 -0700</creation_ts>
          <short_desc>[GTK][EFL] http/tests/misc/redirect-to-about-blank.html is failing</short_desc>
          <delta_ts>2013-01-11 07:22:24 -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 EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>104528</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Dan Winship">danw</assigned_to>
          <cc>danw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>sw0524.lee</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>647709</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-12 22:50:36 -0700</bug_when>
    <thetext>http/tests/misc/redirect-to-about-blank.html is failing after r120145 (Bug 88760).

It is likely caused by the libsoup update to v2.39.2 and not by the httpOnly cookie fix itself. I&apos;ll investigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647715</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-12 23:00:29 -0700</bug_when>
    <thetext>Skipping test for GTK and EFL port in Bug 88962. Will unskip them later with a proper fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647752</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-13 00:13:39 -0700</bug_when>
    <thetext>For some reason, our restartedCallback does not get called even though our gotHeadersCallback gets called with a 302 code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647818</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-06-13 01:58:33 -0700</bug_when>
    <thetext>I went on and bisected libsoup changes, narrowing down the offending commit to this:
http://git.gnome.org/browse/libsoup/commit/?id=9effb5ca942412ecde9242c745f2df6da80853a3

Brave new world it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647866</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-13 03:36:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I went on and bisected libsoup changes, narrowing down the offending commit to this:
&gt; http://git.gnome.org/browse/libsoup/commit/?id=9effb5ca942412ecde9242c745f2df6da80853a3
&gt; 
&gt; Brave new world it is.

Thanks for bisecting Zan :)
I hope Dan can help on figuring out what goes wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647885</commentid>
    <comment_count>5</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-06-13 04:03:46 -0700</bug_when>
    <thetext>Oops. I thought I had filed a bug about this.

It&apos;s not actually a regression; ResourceHandleSoup has never been able to redirect from http: to about:, it&apos;s just that with old libsoup it failed in a way that made the test case believe it had succeeded, and with new libsoup it fails in a slightly different way that causes the test case to fail. (If you load misc/redirect-to-about-blank.html under GtkLauncher with old libsoup, you&apos;ll see that the test actually ends up with an error page in the iframe, not about:blank. And then it claims to have succeeded...)


The specific behavior change is that with old libsoup, when it got a redirect to a non-http URI, it would change the status of the SoupMessage to SOUP_STATUS_MALFORMED, which would then cause ResourceHandleSoup to generate an error page (which apparently has a URL of &quot;about:blank&quot;, causing the test to succeed). With new libsoup, when it gets a redirect it can&apos;t follow, it just returns the response as-is, with the existing 302 (or whatever) status code (meaning the test ends up with redirect-to-about-blank.php in the iframe). The reason for the change is that leaving the 302 status code there allows for the possibility of webkit deciding to redirect the response itself (which is probably also necessary for fixing various other redirect-related test failures).

(See also https://bugzilla.gnome.org/show_bug.cgi?id=656684#c36)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647973</commentid>
    <comment_count>6</comment_count>
      <attachid>147308</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-13 06:46:05 -0700</bug_when>
    <thetext>Created attachment 147308
Patch

I have unsure this is the correct way to fix it but at least it works and it does not seem to cause any regressions.
For now, the patch only fixes EFL port and does not unskip the associated test (because the patch to skip it has not landed yet).

Could someone please tell me if this is correct? and provide some guidance if it isn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647981</commentid>
    <comment_count>7</comment_count>
      <attachid>147309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-13 07:00:15 -0700</bug_when>
    <thetext>Created attachment 147309
Patch

Rebase on master and unskip associated test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648007</commentid>
    <comment_count>8</comment_count>
      <attachid>147309</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-13 07:50:47 -0700</bug_when>
    <thetext>Comment on attachment 147309
Patch

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

&gt; Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:276
&gt; +    if (coreResponse.httpStatusCode() / 100 == 3) {

I think it&apos;s clearer here to just do &lt; 400 &amp;&amp; &gt; 200.

&gt; Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:281
&gt; +        String redirectUrl = coreResponse.httpHeaderField(&quot;Location&quot;);
&gt; +        if (!redirectUrl.isEmpty())
&gt; +            ewk_frame_uri_set(m_frame, redirectUrl.utf8().data());
&gt; +        return;
&gt; +    }

Would it be possible to put this work-around into the platform layer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648044</commentid>
    <comment_count>9</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-06-13 08:18:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:276
&gt; &gt; +    if (coreResponse.httpStatusCode() / 100 == 3) {
&gt; 
&gt; I think it&apos;s clearer here to just do &lt; 400 &amp;&amp; &gt; 200.

if (SOUP_STATUS_IS_REDIRECTION(coreResponse.httpStatusCode())

&gt; Would it be possible to put this work-around into the platform layer?

Yes, it should happen in ResourceHandleSoup.

But you can&apos;t just always redirect every 3xx response; there&apos;s some reason why libsoup didn&apos;t apply the redirect itself, so webkit needs to make its own policy decision before applying the redirect itself. In this particular case (redirect-to-about-blank), it&apos;s that libsoup won&apos;t do a redirect to a non-http: URI, so you should check Location, and if it&apos;s non-http:, do the redirect yourself, but not otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648860</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-13 23:57:21 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; Source/WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:276
&gt; &gt; &gt; +    if (coreResponse.httpStatusCode() / 100 == 3) {
&gt; &gt; 
&gt; &gt; I think it&apos;s clearer here to just do &lt; 400 &amp;&amp; &gt; 200.
&gt; 
&gt; if (SOUP_STATUS_IS_REDIRECTION(coreResponse.httpStatusCode())
&gt; 
&gt; &gt; Would it be possible to put this work-around into the platform layer?
&gt; 
&gt; Yes, it should happen in ResourceHandleSoup.
&gt; 
&gt; But you can&apos;t just always redirect every 3xx response; there&apos;s some reason why libsoup didn&apos;t apply the redirect itself, so webkit needs to make its own policy decision before applying the redirect itself. In this particular case (redirect-to-about-blank), it&apos;s that libsoup won&apos;t do a redirect to a non-http: URI, so you should check Location, and if it&apos;s non-http:, do the redirect yourself, but not otherwise.

I&apos;m not sure how to achieve this in ResourceHandleSoup. I know where and how to detect the redirect to non-http case. However, I don&apos;t know what I should do when I detect this. I&apos;m not familiar with this part of the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754367</commentid>
    <comment_count>11</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-10-30 07:55:27 -0700</bug_when>
    <thetext>Taking a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800987</commentid>
    <comment_count>12</comment_count>
      <attachid>181443</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-01-05 13:42:36 -0800</bug_when>
    <thetext>Created attachment 181443
patch - handle redirection inside WebKit

This also fixes bug 61122. It also *almost* fixes bug 35300, but not quite; we&apos;re doing the right requests now, but DRT doesn&apos;t print out exactly what the test wants. (Actually, it might pass on EFL. Not sure.)

[So should I dup 61122 to this one?]

I tried to not touch anything related to HTTP authentication, other than what was needed to split redirection and authentication into separate codepaths. There are probably simplifications possible from here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800993</commentid>
    <comment_count>13</comment_count>
      <attachid>181443</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-05 14:44:33 -0800</bug_when>
    <thetext>Comment on attachment 181443
patch - handle redirection inside WebKit

Attachment 181443 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15741201

New failing tests:
fast/frames/removal-before-attach-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801255</commentid>
    <comment_count>14</comment_count>
      <attachid>181443</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-01-07 06:32:09 -0800</bug_when>
    <thetext>Comment on attachment 181443
patch - handle redirection inside WebKit

Bad reviewbot. This patch only modifies ResourceHandleSoup, and so could not be the cause of a chromium test failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801954</commentid>
    <comment_count>15</comment_count>
      <attachid>181443</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-07 20:06:09 -0800</bug_when>
    <thetext>Comment on attachment 181443
patch - handle redirection inside WebKit

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

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:394
&gt; +#define MAX_REDIRECTS 20

According to WebKit coding style, WebKit prefers const to #define.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803259</commentid>
    <comment_count>16</comment_count>
      <attachid>181443</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-09 05:48:37 -0800</bug_when>
    <thetext>Comment on attachment 181443
patch - handle redirection inside WebKit

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

LGTM other than Gyuyoung Kim&apos;s nit and mine. I think it makes sense to close 61122 as a dup as well as 105015, since it&apos;s obsolete now like you said.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:401
&gt; +    // Some 3xx status codes aren&apos;t actually redirects

Missing period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803383</commentid>
    <comment_count>17</comment_count>
      <attachid>181443</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-09 09:17:26 -0800</bug_when>
    <thetext>Comment on attachment 181443
patch - handle redirection inside WebKit

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

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:453
&gt; +    if (message-&gt;method != SOUP_METHOD_GET) {
&gt; +        bool forceGET = false;
&gt; +        if (newURL.protocolIsInHTTPFamily()) {
&gt; +            switch (message-&gt;status_code) {
&gt; +            case SOUP_STATUS_SEE_OTHER:
&gt; +                forceGET = true;
&gt; +                break;
&gt; +            case SOUP_STATUS_FOUND:
&gt; +            case SOUP_STATUS_MOVED_PERMANENTLY:
&gt; +                if (message-&gt;method == SOUP_METHOD_POST)
&gt; +                    forceGET = true;
&gt; +                break;
&gt; +            }
&gt; +        } else
&gt; +            forceGET = true;
&gt; +
&gt; +        if (crossOrigin &amp;&amp; message-&gt;method == SOUP_METHOD_DELETE)
&gt; +            forceGET = true;
&gt; +
&gt; +        if (forceGET) {
&gt; +            request.setHTTPMethod(&quot;GET&quot;);
&gt; +            request.setHTTPBody(0);
&gt; +            request.clearHTTPContentType();
&gt; +        }
&gt; +    }

I think it makes sense to put this into a helper function for the benefit of readability. Something like shouldForceGetDuringRedirect. That way you can use early returns and it will be a lot easier to follow the logic.

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:474
&gt; +    cleanupSoupRequestOperation(handle);
&gt; +    if (createSoupRequestAndMessageForHandle(handle, request, true)) {

Maybe cleanupSoupRequestOperation should be part of createSoupRequestAndMessageForHandle now?

&gt; Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:478
&gt; +        d-&gt;client()-&gt;cannotShowURL(handle);

It&apos;d probably be slightly more &quot;WebKit-y&quot; to do an early return with the error case here. Not a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803573</commentid>
    <comment_count>18</comment_count>
      <attachid>181967</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-01-09 12:17:17 -0800</bug_when>
    <thetext>Created attachment 181967
updated for comments

&gt; I think it makes sense to put this into a helper function for the benefit of readability.

not totally sure that this was an improvement, given the completely random assortment of parameters we have to pass to it...

&gt; Maybe cleanupSoupRequestOperation should be part of createSoupRequestAndMessageForHandle now?

Well, the other place that calls createSoupRequestAndMessageForHandle() doesn&apos;t need it...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803685</commentid>
    <comment_count>19</comment_count>
      <attachid>181967</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 14:05:11 -0800</bug_when>
    <thetext>Comment on attachment 181967
updated for comments

Clearing flags on attachment: 181967

Committed r139239: &lt;http://trac.webkit.org/changeset/139239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803688</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 14:05:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805257</commentid>
    <comment_count>21</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2013-01-11 07:22:24 -0800</bug_when>
    <thetext>*** Bug 61122 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147308</attachid>
            <date>2012-06-13 06:46:05 -0700</date>
            <delta_ts>2012-06-13 07:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>88961_redirect_about.patch</filename>
            <type>text/plain</type>
            <size>1834</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA5NGE1MDRjLi41ZWEwOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDYtMTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhl
LmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbR1RLXVtFRkxdIGh0dHAvdGVzdHMvbWlzYy9y
ZWRpcmVjdC10by1hYm91dC1ibGFuay5odG1sIGlzIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTYxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gdGhlIHJlZGlyZWN0IG1hbnVhbGx5IGlu
IGNhc2UgbGlic291cCBmYWlscyB0byBkbyBpdC4gVGhpcyBoYXBwZW5zCisgICAgICAgIGZvciBy
ZWRpcmVjdGlvbnMgdG8gYWJvdXQ6IGZvciBleGFtcGxlLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKToKKwogMjAxMi0wNi0x
MiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtFRkxdIEVuYWJsZSBTSEFET1dfRE9NIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA1
MDcyZGUyLi40MjI0ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0yNzEsNiArMjcxLDE1IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiBjb3JlUmVzcG9uc2UpCiB7CisgICAgLy8gSWYgbGlic291cCBmYWlsZWQgdG8g
ZG8gdGhlIHJlZGlyZWN0aW9uIChlLmcuIGh0dHAgLT4gYWJvdXQ6IGNhc2UpLAorICAgIC8vIGRv
IHRoZSByZWRpcmVjdGlvbiBtYW51YWxseS4KKyAgICBpZiAoY29yZVJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgLyAxMDAgPT0gMykgeworICAgICAgICBTdHJpbmcgcmVkaXJlY3RVcmwgPSBjb3Jl
UmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJMb2NhdGlvbiIpOworICAgICAgICBpZiAoIXJlZGly
ZWN0VXJsLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGV3a19mcmFtZV91cmlfc2V0KG1fZnJhbWUs
IHJlZGlyZWN0VXJsLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgLy8gVXBkYXRlIG91ciBrbm93bGVkZ2Ugb2YgcmVxdWVzdCBzb3VwIGZsYWdzIC0gc29tZSBh
cmUgb25seSBzZXQKICAgICAvLyBhZnRlciB0aGUgcmVxdWVzdCBpcyBkb25lLgogICAgIGxvYWRl
ci0+cmVxdWVzdCgpLnNldFNvdXBNZXNzYWdlRmxhZ3MoY29yZVJlc3BvbnNlLnNvdXBNZXNzYWdl
RmxhZ3MoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147309</attachid>
            <date>2012-06-13 07:00:15 -0700</date>
            <delta_ts>2013-01-05 13:42:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>88961_redirect_about.patch</filename>
            <type>text/plain</type>
            <size>3335</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMmIzZjgwLi4yYTBhNTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDYt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAg
ICAgICBbR1RLXVtFRkxdIGh0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1hYm91dC1ibGFuay5o
dG1sIGlzIGZhaWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4OTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVW5za2lwIGh0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1hYm91dC1ibGFuay5odG1s
IG5vdyB0aGF0IHdlCisgICAgICAgIHByb3Blcmx5IHJlZGlyZWN0IGZyb20gaHR0cCB0byBhYm91
dDpibGFuay4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorCisy
MDEyLTA2LTEzICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKICAgICAgICAgW0dUS11bRUZMXSBTa2lwIGh0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1h
Ym91dC1ibGFuay5odG1sCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODk2MgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDIxYWE5Y2UuLjAwZTU4N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0
RXhwZWN0YXRpb25zCkBAIC02ODUsOSArNjg1LDYgQEAgQlVHV0s4NjYzMyA6IGVkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCA9IFRFWFQKIC8vIEZhaWxpbmcg
YWZ0ZXIgcjExOTI2OCBvbiBHVEsgYW5kIEVGTAogQlVHV0s4ODEzOCA6IGh0dHAvdGVzdHMvbWVk
aWEvdmlkZW8tYnVmZmVyZWQuaHRtbCA9IFRFWFQKIAotLy8gRmFpbGluZyBhZnRlciByMTIwMTQ1
IG9uIGJvdGggR1RLIGFuZCBFRkwKLUJVR1dLODg5NjEgOiBodHRwL3Rlc3RzL21pc2MvcmVkaXJl
Y3QtdG8tYWJvdXQtYmxhbmsuaHRtbCA9IFRFWFQKLQogLy8gRUZMJ3MgTGF5b3V0VGVzdENvbnRy
b2xsZXIgZG9lcyBub3QgaW1wbGVtZW50IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkCiBCVUdXSzg2NjM3IDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWwg
PSBURVhUCiBCVUdXSzg2NjM3IDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLW11
dGF0aW9uLmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggOTRhNTA0Yy4uNWVhMDk0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2LTEzICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0dUS11bRUZM
XSBodHRwL3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tYWJvdXQtYmxhbmsuaHRtbCBpcyBmYWlsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODk2MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERvIHRoZSBy
ZWRpcmVjdCBtYW51YWxseSBpbiBjYXNlIGxpYnNvdXAgZmFpbHMgdG8gZG8gaXQuIFRoaXMgaGFw
cGVucworICAgICAgICBmb3IgcmVkaXJlY3Rpb25zIHRvIGFib3V0OiBmb3IgZXhhbXBsZS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNw
b25zZSk6CisKIDIwMTItMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgU0hBRE9XX0RPTSBmbGFnCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKaW5kZXggNTA3MmRlMi4uNDIyNGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcApA
QCAtMjcxLDYgKzI3MSwxNSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkUmVj
ZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgY29yZVJlc3BvbnNlKQogeworICAgIC8vIElm
IGxpYnNvdXAgZmFpbGVkIHRvIGRvIHRoZSByZWRpcmVjdGlvbiAoZS5nLiBodHRwIC0+IGFib3V0
OiBjYXNlKSwKKyAgICAvLyBkbyB0aGUgcmVkaXJlY3Rpb24gbWFudWFsbHkuCisgICAgaWYgKGNv
cmVSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwID09IDMpIHsKKyAgICAgICAgU3RyaW5n
IHJlZGlyZWN0VXJsID0gY29yZVJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiTG9jYXRpb24iKTsK
KyAgICAgICAgaWYgKCFyZWRpcmVjdFVybC5pc0VtcHR5KCkpCisgICAgICAgICAgICBld2tfZnJh
bWVfdXJpX3NldChtX2ZyYW1lLCByZWRpcmVjdFVybC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIC8vIFVwZGF0ZSBvdXIga25vd2xlZGdlIG9mIHJlcXVlc3Qg
c291cCBmbGFncyAtIHNvbWUgYXJlIG9ubHkgc2V0CiAgICAgLy8gYWZ0ZXIgdGhlIHJlcXVlc3Qg
aXMgZG9uZS4KICAgICBsb2FkZXItPnJlcXVlc3QoKS5zZXRTb3VwTWVzc2FnZUZsYWdzKGNvcmVS
ZXNwb25zZS5zb3VwTWVzc2FnZUZsYWdzKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181443</attachid>
            <date>2013-01-05 13:42:36 -0800</date>
            <delta_ts>2013-01-09 12:17:17 -0800</delta_ts>
            <desc>patch - handle redirection inside WebKit</desc>
            <filename>0001-redirect.patch</filename>
            <type>text/plain</type>
            <size>20403</size>
            <attacher name="Dan Winship">danw</attacher>
            
              <data encoding="base64">RnJvbSBhNzFlYWYwMzZjMGU0OTIyMjU2YmEzYWFlZmIzN2FkYzg2YWE5Mjk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW4gV2luc2hpcCA8ZGFud0Bnbm9tZS5vcmc+CkRhdGU6IFNh
dCwgNSBKYW4gMjAxMyAxNjozMjozMiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIHJlZGlyZWN0Cgot
LS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDEzICsrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyAgICAgICAg
ICB8ICAgNyAtCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyAgICAg
ICAgICB8ICAgNCAtCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzOCArKysrKwogLi4uL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oICAgICAgfCAgIDIgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaCAgfCAgIDEgKwogLi4uL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAgICAgfCAgMTMgKy0KIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcCAgIHwgMTU2ICsrKysrKysrKysrKysrKystLS0tLQogOCBm
aWxlcyBjaGFuZ2VkLCAxODQgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGY0NzU0ZjQuLjEyOTcyYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMS0wNSAgRGFu
IFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KKworICAgICAgICBbU291cF0gSGFuZGxlIHJlZGly
ZWN0aW9uIGluc2lkZSBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxMTIyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVuc2tpcCBzb21lIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6
CisKIDIwMTItMTItMDkgIERhbiBXaW5zaGlwICA8ZGFud0Bnbm9tZS5vcmc+CiAKICAgICAgICAg
VXBkYXRlcyBmb3IgQXBhY2hlIDIuNApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAyNjZjZDMyLi4yZDQyZjA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTYsMTAgKzk2LDYgQEAgaHR0cC90ZXN0cy9tZWRpYS92
aWRlby1wbGF5LXN0YWxsLXNlZWsuaHRtbAogaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0
YWxsLmh0bWwKIGh0dHAvdGVzdHMvc2VjdXJpdHkvZmVlZC11cmxzLWZyb20tcmVtb3RlLmh0bWwK
IAotIyBUZXN0IHRpbWVzIG91dCAodmlhIEdUSyspCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02MTEyMgotaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3QtMzA3LXJl
c3BvbnNlLmh0bWwKLQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVGVzdHMg
d2hpY2ggbmVlZCBpbnZlc3RpZ2F0aW9uCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtMTM4Niw5ICsxMzgyLDYgQEAgd2Via2l0Lm9yZy9iLzkxMzQxIGZhc3QvdGV4dC9kZXNj
ZW50LWNsaXAtaW4tc2NhbGVkLXBhZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUKICMgRmFpbGlu
ZyBhZnRlciByMTE5MjY4IG9uIEdUSyBhbmQgRUZMCiB3ZWJraXQub3JnL2IvODgxMzggaHR0cC90
ZXN0cy9tZWRpYS92aWRlby1idWZmZXJlZC5odG1sIFsgRmFpbHVyZSBdCiAKLSMgRmFpbGluZyBh
ZnRlciByMTIwMTQ1IG9uIGJvdGggR1RLIGFuZCBFRkwKLXdlYmtpdC5vcmcvYi84ODk2MSBodHRw
L3Rlc3RzL21pc2MvcmVkaXJlY3QtdG8tYWJvdXQtYmxhbmsuaHRtbCBbIEZhaWx1cmUgXQotCiAj
IEVGTCBwb3J0IGRvZXMgbm90IHN1cHBvcnQgaHlwaGVuYXRpb24KIHdlYmtpdC5vcmcvYi84OTgz
MCBmYXN0L3RleHQvaHlwaGVuLW1pbi1wcmVmZXJyZWQtd2lkdGguaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzg5ODMwIGZhc3QvdGV4dC9oeXBoZW5hdGUtbG9jYWxlLmh0
bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNTBiNmFmNi4uMzgwMDMzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTkyMiw3ICs5MjIsNiBAQCBCdWcoR1RLKSBmYXN0L2xvYWRlci9hcGktdGVz
dC1nby10by1jdXJyZW50LWJhY2stZm9yd2FyZC1pdGVtLmh0bWwgWyBGYWlsdXJlIF0KIAogIyBO
ZWVkcyB0byBtYWtlIHN1cmUgdGhlIHJlZGlyZWN0LWNoYWluIHNjZW5hcmlvIGluIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTQxMCB3b3Jrcwogd2Via2l0Lm9yZy9i
LzM1MzAwIGh0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAzLWFmdGVyLXBvc3QuaHRtbCBb
IEZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzM1MzAwIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9wb3N0
LTMwNy1yZXNwb25zZS5odG1sIFsgU2tpcCBdCiAKICMgUGFnZWQgY29udGludW91c01vdXNlU2Ny
b2xsQnkoKSBldmVudHMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gR1RLLgogQnVnKEdUSykgZmFzdC9l
dmVudHMvcGxhdGZvcm0td2hlZWxldmVudC1wYWdpbmcteC1pbi1ub24tc2Nyb2xsaW5nLWRpdi5o
dG1sIFsgRmFpbHVyZSBdCkBAIC0xMjUwLDkgKzEyNDksNiBAQCB3ZWJraXQub3JnL2IvODY0NDUg
ZmFzdC9tdWx0aWNvbC9zcGxpdC1pbi10b3AtbWFyZ2luLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KICMgVGhpcyB0ZXN0IGlzIGFmZmVjdGluZyBvdGhlciB0ZXN0cyBhbmQgc2VlbXMgdG8gYmUg
YmVoYXZpbmcgaW5jb3JyZWN0bHkgaXRzZWxmCiB3ZWJraXQub3JnL2IvODY3NzEgZmFzdC9kb20v
Z2MtMTAuaHRtbCBbIFNraXAgXQogCi0jIEZhaWxpbmcgYWZ0ZXIgcjEyMDE0NSBvbiBib3RoIEdU
SyBhbmQgRUZMCi13ZWJraXQub3JnL2IvODg5NjEgaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRv
LWFib3V0LWJsYW5rLmh0bWwgWyBGYWlsdXJlIF0KLQogd2Via2l0Lm9yZy9iLzg2OTcxIHN2Zy9o
aXR0ZXN0L3N2Zy1zaGFwZXMtbm9uLXNjYWxlLXN0cm9rZS5odG1sIFsgRmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi84NzA4OCBmYXN0L2pzL25hbWVzLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAxNjFhY2E3Li5lOTE4NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMt
MDEtMDUgIERhbiBXaW5zaGlwICA8ZGFud0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW1NvdXBdIEhh
bmRsZSByZWRpcmVjdGlvbiBpbnNpZGUgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTEyMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSYXRoZXIgdGhhbiB1c2luZyBsaWJzb3VwJ3MgYnVpbHQtaW4g
cmVkaXJlY3Rpb24gaGFuZGxpbmcgKHdoaWNoCisgICAgICAgIGRvZXNuJ3QgZG8gZXZlcnl0aGlu
ZyBleGFjdGx5IHRoZSB3YXkgV2ViS2l0IHdhbnRzLCBhbmQgY2FuJ3QKKyAgICAgICAgaGFuZGxl
IHJlZGlyZWN0cyB0byBub24taHR0cCBVUklzIGFueXdheSksIHByb2Nlc3MgcmVkaXJlY3Rpb25z
CisgICAgICAgIG91cnNlbHZlcy4KKworICAgICAgICBObyBuZXcgdGVzdHM7IHVuc2tpcHMgYSBm
ZXcgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAoUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaDoK
KyAgICAgICAgKFJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6Omh0dHBFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OmdvdEhlYWRlcnNDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpyZXN0YXJ0
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpkb1JlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlZGlyZWN0Q2xvc2VD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpyZWRpcmVjdFNraXBDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2VuZFJlcXVlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3Vw
TWVzc2FnZUZvckhhbmRsZUFuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291
cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpzdGFydCk6CisKIDIwMTMtMDEtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW1RleG1hcF0gVGV4dHVyZU1hcHBlckdMIHNob3VsZCByZXNldCBB
UlJBWV9CVUZGRVIgYWZ0ZXIgcGFpbnRpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDE3ZTBlYTgu
LmI4NDk1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2J1ZmZlcigwKQogICAgICAgICAgICAgLCBtX2Jv
ZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCisgICAgICAgICAgICAs
IG1fcmVkaXJlY3RDb3VudCgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAg
ICAsIG1fam9iKDApCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29y
a2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCk7CisgICAgICAgIGludCBtX3JlZGlyZWN0Q291bnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCiAgICAgICAgIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCBjMzA5ZGJiLi40Mjc4M2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBSZXNv
dXJjZUVycm9yIGh0dHBFcnJvcihTb3VwTWVzc2FnZSosIEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7
CisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBp
bnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2UpOwogICAgIHN0YXRpYyBS
ZXNvdXJjZUVycm9yIGdlbmVyaWNJT0Vycm9yKEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAg
c3RhdGljIFJlc291cmNlRXJyb3IgdGxzRXJyb3IoU291cFJlcXVlc3QqLCB1bnNpZ25lZCB0bHNF
cnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIHRpbWVv
dXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKaW5k
ZXggNmY2NWIxOS4uMzFjYzVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00OCwxMiArNDgs
MTkgQEAgc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQogICAg
IHJldHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKIH0KIAor
UmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCog
cmVxdWVzdCwgaW50IHN0YXR1c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQorewor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJP
UiksIHN0YXR1c0NvZGUsCisgICAgICAgIGZhaWxpbmdVUkkocmVxdWVzdCksIHJlYXNvblBocmFz
ZSk7Cit9CisKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVycm9yLCBTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAg
ICBpZiAoIW1lc3NhZ2UgfHwgIVNPVVBfU1RBVFVTX0lTX1RSQU5TUE9SVF9FUlJPUihtZXNzYWdl
LT5zdGF0dXNfY29kZSkpCisgICAgaWYgKG1lc3NhZ2UgJiYgU09VUF9TVEFUVVNfSVNfVFJBTlNQ
T1JUX0VSUk9SKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zcG9y
dEVycm9yKHJlcXVlc3QsIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAorICAgICAgICAgICAgU3RyaW5n
Ojpmcm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CisgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZ2VuZXJpY0lPRXJyb3IoZXJyb3IsIHJlcXVlc3QpOwotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUiksIG1lc3NhZ2UtPnN0YXR1
c19jb2RlLAotICAgICAgICBmYWlsaW5nVVJJKHJlcXVlc3QpLCBTdHJpbmc6OmZyb21VVEY4KG1l
c3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
OjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCA2YTc1ZGUyLi44YzFkYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtMjIyLDcgKzIyMiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fY2VydGlm
aWNhdGVzOwogfTsKIAotc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJl
c291cmNlSGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcpOworc3RhdGljIGJvb2wgY3JlYXRlU291
cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBpc0hUVFBGYW1pbHlSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSosIGJvb2wgaXNEZXN0cm95aW5n
ID0gZmFsc2UpOwogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0Fz
eW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3Qq
LCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CiBzdGF0aWMgdm9pZCBjbG9zZUNhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CkBAIC0zMzAsOCArMzMxLDcgQEAgc3Rh
dGljIHZvaWQgZ290SGVhZGVyc0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRl
ciBkYXRhKQogI2VuZGlmCiAKICAgICAvLyBUaGUgb3JpZ2luYWwgcmVzcG9uc2Ugd2lsbCBiZSBu
ZWVkZWQgbGF0ZXIgdG8gZmVlZCB0byB3aWxsU2VuZFJlcXVlc3QgaW4KLSAgICAvLyByZXN0YXJ0
ZWRDYWxsYmFjaygpIGluIGNhc2Ugd2UgYXJlIHJlZGlyZWN0ZWQuIEZvciB0aGlzIHJlYXNvbiwg
c28gd2Ugc3RvcmUgaXQKLSAgICAvLyBoZXJlLgorICAgIC8vIGRvUmVkaXJlY3QoKSBpbiBjYXNl
IHdlIGFyZSByZWRpcmVjdGVkLiBGb3IgdGhpcyByZWFzb24sIHdlIHN0b3JlIGl0IGhlcmUuCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICByZXNwb25zZS51cGRhdGVGcm9tU291
cE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgZC0+bV9yZXNwb25zZSA9IHJlc3BvbnNlOwpAQCAtMzc0
LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiB9CiAKIC8vIENhbGxlZCBlYWNo
IHRpbWUgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gYmUgc2VudCBhZ2FpbiBleGNlcHQgdGhlIGZp
cnN0IHRpbWUuCi0vLyBJdCdzIHVzZWQgbW9zdGx5IHRvIGxldCB3ZWJraXQga25vdyBhYm91dCBy
ZWRpcmVjdHMuCisvLyBUaGlzIGhhcHBlbnMgd2hlbiBsaWJzb3VwIGhhbmRsZXMgSFRUUCBhdXRo
ZW50aWNhdGlvbi4KIHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBncG9pbnRlciBkYXRhKQogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwpAQCAtMzg0LDYwICszODQsMTM2IEBA
IHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBncG9p
bnRlciBkYXRhKQogICAgIGlmIChkLT5tX2NhbmNlbGxlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSA9IGQtPm1fcmVzcG9uc2U7CiAj
aWYgRU5BQkxFKFdFQl9USU1JTkcpCisgICAgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgcmVkaXJlY3RSZXNwb25zZS5zZXRSZXNvdXJjZUxv
YWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgcmVkaXJlY3RSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFRpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKICNlbmRpZgorfQorCisjZGVmaW5lIE1BWF9SRURJUkVDVFMgMjAKKwor
c3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAg
IFNvdXBNZXNzYWdlKiBtZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQoKTsKKworICAgIC8v
IFNvbWUgM3h4IHN0YXR1cyBjb2RlcyBhcmVuJ3QgYWN0dWFsbHkgcmVkaXJlY3RzCisgICAgaWYg
KG1lc3NhZ2UtPnN0YXR1c19jb2RlID09IDMwMCB8fCBtZXNzYWdlLT5zdGF0dXNfY29kZSA9PSAz
MDQgfHwgbWVzc2FnZS0+c3RhdHVzX2NvZGUgPT0gMzA1IHx8IG1lc3NhZ2UtPnN0YXR1c19jb2Rl
ID09IDMwNikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFzb3VwX21lc3NhZ2Vf
aGVhZGVyc19nZXRfb25lKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAotICAgIC8vIFdl
YkNvcmUgb25seSBleHBlY3RzIHVzIHRvIGNhbGwgd2lsbFNlbmRSZXF1ZXN0IHdoZW4gd2UgYXJl
IHJlZGlyZWN0aW5nLiBzb3VwCi0gICAgLy8gZmlyZXMgdGhpcyBzaWduYWwgYWxzbyB3aGVuIGl0
J3MgaGFuZGxpbmcgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlcywgc28gaW4gdGhhdAotICAgIC8v
IGNhc2Ugd2Ugc2hvdWxkIG5vdCB3aWxsU2VuZFJlcXVlc3QuCi0gICAgaWYgKGlzQXV0aGVudGlj
YXRpb25GYWlsdXJlU3RhdHVzQ29kZShyZWRpcmVjdFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkp
KQorc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisKKyAg
ICBpZiAoZC0+bV9yZWRpcmVjdENvdW50KysgPiBNQVhfUkVESVJFQ1RTKSB7CisgICAgICAgIGQt
PmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZSwgUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3Io
ZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSwgU09VUF9TVEFUVVNfVE9PX01BTllfUkVESVJFQ1RTLCAi
VG9vIG1hbnkgcmVkaXJlY3RzIikpOworICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRp
b24oaGFuZGxlKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0ID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKTsKLSAgICByZXF1ZXN0LnNldFVSTChL
VVJMKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIHNvdXBVUklUb0tVUkwoc291cF9tZXNz
YWdlX2dldF91cmkobWVzc2FnZSkpKSk7Ci0gICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKG1lc3Nh
Z2UtPm1ldGhvZCk7CisgICAgU291cE1lc3NhZ2UqIG1lc3NhZ2UgPSBkLT5tX3NvdXBNZXNzYWdl
LmdldCgpOworICAgIGNvbnN0IGNoYXIqIGxvY2F0aW9uID0gc291cF9tZXNzYWdlX2hlYWRlcnNf
Z2V0X29uZShtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiTG9jYXRpb24iKTsKKyAgICBLVVJM
IG5ld1VSTCA9IEtVUkwoc291cFVSSVRvS1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdl
KSksIGxvY2F0aW9uKTsKKyAgICBib29sIGNyb3NzT3JpZ2luID0gIXByb3RvY29sSG9zdEFuZFBv
cnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCBuZXdVUkwpOworICAgIHJlcXVlc3Quc2V0VVJMKG5l
d1VSTCk7CisKKyAgICAvLyBTb21lIHJlZGlyZWN0cyByZXF1aXJlIGNoYW5naW5nIHRoZSByZXF1
ZXN0IG1ldGhvZAorICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7
CisgICAgICAgIGJvb2wgZm9yY2VHRVQgPSBmYWxzZTsKKyAgICAgICAgaWYgKG5ld1VSTC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWVzc2FnZS0+c3Rh
dHVzX2NvZGUpIHsKKyAgICAgICAgICAgIGNhc2UgU09VUF9TVEFUVVNfU0VFX09USEVSOgorICAg
ICAgICAgICAgICAgIGZvcmNlR0VUID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgU09VUF9TVEFUVVNfRk9VTkQ6CisgICAgICAgICAgICBjYXNlIFNPVVBf
U1RBVFVTX01PVkVEX1BFUk1BTkVOVExZOgorICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLT5t
ZXRob2QgPT0gU09VUF9NRVRIT0RfUE9TVCkKKyAgICAgICAgICAgICAgICAgICAgZm9yY2VHRVQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIGZvcmNlR0VUID0gdHJ1ZTsKKworICAgICAgICBpZiAoY3Jvc3NP
cmlnaW4gJiYgbWVzc2FnZS0+bWV0aG9kID09IFNPVVBfTUVUSE9EX0RFTEVURSkKKyAgICAgICAg
ICAgIGZvcmNlR0VUID0gdHJ1ZTsKKworICAgICAgICBpZiAoZm9yY2VHRVQpIHsKKyAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KDApOworICAgICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgp
OworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gU2hvdWxkIG5vdCBzZXQgUmVmZXJlciBhZnRl
ciBhIHJlZGlyZWN0IGZyb20gYSBzZWN1cmUgcmVzb3VyY2UgdG8gbm9uLXNlY3VyZSBvbmUuCi0g
ICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhy
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSkgeworICAgIGlmICghbmV3VVJMLnByb3Rv
Y29sSXMoImh0dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0
cHMiKSkKICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwotICAgICAgICBzb3Vw
X21lc3NhZ2VfaGVhZGVyc19yZW1vdmUobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiUmVmZXJl
ciIpOwotICAgIH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAg
ZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKLSAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygpOworICAg
IGQtPm1fdXNlciA9IG5ld1VSTC51c2VyKCk7CisgICAgZC0+bV9wYXNzID0gbmV3VVJMLnBhc3Mo
KTsKICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKLSAgICBpZiAoIXByb3RvY29s
SG9zdEFuZFBvcnRBcmVFcXVhbChyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLnVybCgp
KSkgeworICAgIGlmIChjcm9zc09yaWdpbikgewogICAgICAgICAvLyBJZiB0aGUgbmV0d29yayBs
YXllciBjYXJyaWVzIG92ZXIgYXV0aGVudGljYXRpb24gaGVhZGVycyBmcm9tIHRoZSBvcmlnaW5h
bCByZXF1ZXN0CiAgICAgICAgIC8vIGluIGEgY3Jvc3Mtb3JpZ2luIHJlZGlyZWN0LCB3ZSB3YW50
IHRvIGNsZWFyIHRob3NlIGhlYWRlcnMgaGVyZS4gCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQ
QXV0aG9yaXphdGlvbigpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZW1vdmUobWVz
c2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQXV0aG9yaXphdGlvbiIpOwogCiAgICAgICAgIC8vIFRP
RE86IFdlIGFyZSBsb3NpbmcgYW55IHVzZXJuYW1lIGFuZCBwYXNzd29yZCBzcGVjaWZpZWQgaW4g
dGhlIHJlZGlyZWN0IFVSTCwgYXMgdGhpcyBpcyB0aGUgCiAgICAgICAgIC8vIHNhbWUgYmVoYXZp
b3IgYXMgdGhlIENGTmV0IHBvcnQuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBpZiB0aGlzIGlzIHJl
YWxseSB3aGF0IHdlIHdhbnQuCiAgICAgfSBlbHNlCiAgICAgICAgIGFwcGx5QXV0aGVudGljYXRp
b25Ub1JlcXVlc3QoaGFuZGxlLCByZXF1ZXN0LCB0cnVlKTsKIAotICAgIC8vIFBlci1yZXF1ZXN0
IGF1dGhlbnRpY2F0aW9uIGlzIGhhbmRsZWQgdmlhIHRoZSBVUkktZW1iZWRkZWQgdXNlcm5hbWUv
cGFzc3dvcmQuCi0gICAgR093blB0cjxTb3VwVVJJPiBuZXdTb3VwVVJJKHJlcXVlc3Quc291cFVS
SSgpKTsKLSAgICBzb3VwX21lc3NhZ2Vfc2V0X3VyaShtZXNzYWdlLCBuZXdTb3VwVVJJLmdldCgp
KTsKKyAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlKTsKKyAgICBpZiAoY3Jl
YXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKGhhbmRsZSwgcmVxdWVzdCwgdHJ1ZSkp
IHsKKyAgICAgICAgZC0+Y2xpZW50KCktPndpbGxTZW5kUmVxdWVzdChoYW5kbGUsIHJlcXVlc3Qs
IGQtPm1fcmVzcG9uc2UpOworICAgICAgICBoYW5kbGUtPnNlbmRQZW5kaW5nUmVxdWVzdCgpOwor
ICAgIH0gZWxzZQorICAgICAgICBkLT5jbGllbnQoKS0+Y2Fubm90U2hvd1VSTChoYW5kbGUpOwor
fQogCi0gICAgaWYgKGQtPmNsaWVudCgpKQotICAgICAgICBkLT5jbGllbnQoKS0+d2lsbFNlbmRS
ZXF1ZXN0KGhhbmRsZSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CitzdGF0aWMgdm9pZCBy
ZWRpcmVjdENsb3NlQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzLCBncG9pbnRl
ciBkYXRhKQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nh
c3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBk
ID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCi0gICAgaWYgKGQtPm1fY2FuY2VsbGVkKQorICAg
IGdfaW5wdXRfc3RyZWFtX2Nsb3NlX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCByZXMs
IDApOworICAgIGRvUmVkaXJlY3QoaGFuZGxlLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgcmVk
aXJlY3RTa2lwQ2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogYXN5bmNSZXN1bHQsIGdw
b2ludGVyIGRhdGEpCit7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBzdGF0
aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworCisgICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVu
dCogY2xpZW50ID0gaGFuZGxlLT5jbGllbnQoKTsKKworICAgIGlmIChkLT5tX2NhbmNlbGxlZCB8
fCAhY2xpZW50KSB7CisgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUu
Z2V0KCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgLy8gVXBkYXRlIHRoZSBmaXJz
dCBwYXJ0eSBpbiBjYXNlIHRoZSBiYXNlIFVSTCBjaGFuZ2VkIHdpdGggdGhlIHJlZGlyZWN0Ci0g
ICAgU3RyaW5nIGZpcnN0UGFydHlTdHJpbmcgPSByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCkuc3RyaW5nKCk7Ci0gICAgaWYgKCFmaXJzdFBhcnR5U3RyaW5nLmlzRW1wdHkoKSkgewotICAg
ICAgICBHT3duUHRyPFNvdXBVUkk+IGZpcnN0UGFydHkoc291cF91cmlfbmV3KGZpcnN0UGFydHlT
dHJpbmcudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X2ZpcnN0X3Bh
cnR5KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksIGZpcnN0UGFydHkuZ2V0KCkpOworICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKKyAgICBnc3NpemUgYnl0ZXNTa2lwcGVkID0gZ19pbnB1dF9zdHJl
YW1fc2tpcF9maW5pc2goZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgYXN5bmNSZXN1bHQsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAgIGNsaWVudC0+ZGlkRmFpbCho
YW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6OmdlbmVyaWNJT0Vycm9yKGVycm9yLmdldCgpLCBk
LT5tX3NvdXBSZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJh
dGlvbihoYW5kbGUuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGJ5
dGVzU2tpcHBlZCA+IDApIHsKKyAgICAgICAgZ19pbnB1dF9zdHJlYW1fc2tpcF9hc3luYyhkLT5t
X2lucHV0U3RyZWFtLmdldCgpLCBHX01BWFNTSVpFLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAg
ICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWRpcmVjdFNraXBDYWxsYmFjaywgaGFu
ZGxlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGdfaW5wdXRfc3RyZWFt
X2Nsb3NlX2FzeW5jKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIEdfUFJJT1JJVFlfREVGQVVMVCwg
MCwgcmVkaXJlY3RDbG9zZUNhbGxiYWNrLCBoYW5kbGUuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9p
ZCB3cm90ZUJvZHlEYXRhQ2FsbGJhY2soU291cE1lc3NhZ2UqLCBTb3VwQnVmZmVyKiBidWZmZXIs
IGdwb2ludGVyIGRhdGEpCkBAIC00NTksNyArNTM1LDcgQEAgc3RhdGljIHZvaWQgd3JvdGVCb2R5
RGF0YUNhbGxiYWNrKFNvdXBNZXNzYWdlKiwgU291cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBk
YXQKICAgICBjbGllbnQtPmRpZFNlbmREYXRhKGhhbmRsZS5nZXQoKSwgaW50ZXJuYWwtPm1fYm9k
eURhdGFTZW50LCBpbnRlcm5hbC0+bV9ib2R5U2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVz
dHJveWluZyA9IGZhbHNlKQorc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9u
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGJvb2wgaXNEZXN0cm95aW5nKQogewogICAgIFJlc291
cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CiAKQEAgLTU3OSw5
ICs2NTUsMTQgQEAgc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBkLT5tX2J1ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJF
QURfQlVGRkVSX1NJWkUpKTsKLQogICAgIGlmIChzb3VwTWVzc2FnZSkgeworICAgICAgICBpZiAo
U09VUF9TVEFUVVNfSVNfUkVESVJFQ1RJT04oc291cE1lc3NhZ2UtPnN0YXR1c19jb2RlKSAmJiBz
aG91bGRSZWRpcmVjdChoYW5kbGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBkLT5tX2lucHV0U3Ry
ZWFtID0gaW5wdXRTdHJlYW07CisgICAgICAgICAgICBnX2lucHV0X3N0cmVhbV9za2lwX2FzeW5j
KGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIEdfTUFYU1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwK
KyAgICAgICAgICAgICAgICBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWRpcmVjdFNraXBDYWxs
YmFjaywgaGFuZGxlLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChoYW5kbGUtPnNob3VsZENvbnRlbnRTbmlmZigpICYmIHNvdXBNZXNzYWdlLT5z
dGF0dXNfY29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9ESUZJRUQpIHsKICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHNuaWZmZWRUeXBlID0gc291cF9yZXF1ZXN0X2dldF9jb250ZW50X3R5cGUoZC0+
bV9zb3VwUmVxdWVzdC5nZXQoKSk7CiAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFNuaWZm
ZWRDb250ZW50VHlwZShzbmlmZmVkVHlwZSk7CkBAIC02MDgsNiArNjg5LDggQEAgc3RhdGljIHZv
aWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdw
b2ludGVyIGRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBkLT5tX2J1ZmZlciA9
IHN0YXRpY19jYXN0PGNoYXIqPihnX3NsaWNlX2FsbG9jKFJFQURfQlVGRkVSX1NJWkUpKTsKKwog
ICAgIGlmIChzb3VwTWVzc2FnZSAmJiBkLT5tX3Jlc3BvbnNlLmlzTXVsdGlwYXJ0KCkpIHsKICAg
ICAgICAgZC0+bV9tdWx0aXBhcnRJbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihzb3VwX211bHRpcGFy
dF9pbnB1dF9zdHJlYW1fbmV3KHNvdXBNZXNzYWdlLCBpbnB1dFN0cmVhbS5nZXQoKSkpOwogICAg
ICAgICBzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV4dF9wYXJ0X2FzeW5jKGQtPm1fbXVs
dGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCksIEdfUFJJT1JJVFlfREVGQVVMVCwKQEAgLTg3NSw2ICs5
NTgsOCBAQCBzdGF0aWMgYm9vbCBjcmVhdGVTb3VwTWVzc2FnZUZvckhhbmRsZUFuZFJlcXVlc3Qo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUgogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+
bV9zb3VwTWVzc2FnZS5nZXQoKSwgInJlc3RhcnRlZCIsIEdfQ0FMTEJBQ0socmVzdGFydGVkQ2Fs
bGJhY2spLCBoYW5kbGUpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+bV9zb3VwTWVzc2FnZS5n
ZXQoKSwgIndyb3RlLWJvZHktZGF0YSIsIEdfQ0FMTEJBQ0sod3JvdGVCb2R5RGF0YUNhbGxiYWNr
KSwgaGFuZGxlKTsKIAorICAgIHNvdXBfbWVzc2FnZV9zZXRfZmxhZ3MoZC0+bV9zb3VwTWVzc2Fn
ZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oc291cF9tZXNzYWdlX2dldF9m
bGFncyhkLT5tX3NvdXBNZXNzYWdlLmdldCgpKSB8IFNPVVBfTUVTU0FHRV9OT19SRURJUkVDVCkp
OworCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCiAgICAgZC0+bV9yZXNwb25zZS5zZXRSZXNvdXJj
ZUxvYWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgZ19zaWduYWxf
Y29ubmVjdChkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJB
Q0sobmV0d29ya0V2ZW50Q2FsbGJhY2spLCBoYW5kbGUpOwpAQCAtODg0LDEzICs5NjksMTIgQEAg
c3RhdGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGJvb2wgaXNIVFRQRmFtaWx5UmVxdWVzdCkKK3N0YXRpYyBib29sIGNyZWF0ZVNvdXBS
ZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNIVFRQRmFtaWx5UmVxdWVzdCkKIHsKICAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogICAg
IFNvdXBSZXF1ZXN0ZXIqIHJlcXVlc3RlciA9IFNPVVBfUkVRVUVTVEVSKHNvdXBfc2Vzc2lvbl9n
ZXRfZmVhdHVyZShkLT5zb3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfUkVRVUVTVEVSKSk7CiAKICAg
ICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0g
aGFuZGxlLT5maXJzdFJlcXVlc3QoKTsKIAogICAgIEdPd25QdHI8U291cFVSST4gc291cFVSSShy
ZXF1ZXN0LnNvdXBVUkkoKSk7CiAgICAgZC0+bV9zb3VwUmVxdWVzdCA9IGFkb3B0R1JlZihzb3Vw
X3JlcXVlc3Rlcl9yZXF1ZXN0X3VyaShyZXF1ZXN0ZXIsIHNvdXBVUkkuZ2V0KCksICZlcnJvci5v
dXRQdHIoKSkpOwpAQCAtOTMzLDcgKzEwMTcsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFy
dChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKIAogICAgIGFwcGx5QXV0aGVudGljYXRpb25U
b1JlcXVlc3QodGhpcywgZmlyc3RSZXF1ZXN0KCksIGZhbHNlKTsKIAotICAgIGlmICghY3JlYXRl
U291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKHRoaXMsIGlzSFRUUEZhbWlseVJlcXVlc3Qp
KSB7CisgICAgaWYgKCFjcmVhdGVTb3VwUmVxdWVzdEFuZE1lc3NhZ2VGb3JIYW5kbGUodGhpcywg
cmVxdWVzdCwgaXNIVFRQRmFtaWx5UmVxdWVzdCkpIHsKICAgICAgICAgdGhpcy0+c2NoZWR1bGVG
YWlsdXJlKEludmFsaWRVUkxGYWlsdXJlKTsgLy8gRXJyb3IgbXVzdCBub3QgYmUgcmVwb3J0ZWQg
aW1tZWRpYXRlbHkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotLSAKMS44LjAuMQoK
</data>
<flag name="review"
          id="199072"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="199073"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181967</attachid>
            <date>2013-01-09 12:17:17 -0800</date>
            <delta_ts>2013-01-09 14:05:10 -0800</delta_ts>
            <desc>updated for comments</desc>
            <filename>0001-redirect.patch</filename>
            <type>text/plain</type>
            <size>20561</size>
            <attacher name="Dan Winship">danw</attacher>
            
              <data encoding="base64">RnJvbSA4ODg4Yzg2N2Q5OWY2OTAxZmZlZTg3YmJlZWZlYzg4NWI5ZTBlNjllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW4gV2luc2hpcCA8ZGFud0Bnbm9tZS5vcmc+CkRhdGU6IFNh
dCwgNSBKYW4gMjAxMyAxNjozMjozMiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIHJlZGlyZWN0Cgot
LS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IDEzICsrCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucyAgICAgICAg
ICB8ICAgNyAtCiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyAgICAg
ICAgICB8ICAgNCAtCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAzOCArKysrKwogLi4uL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oICAgICAgfCAgIDIgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlRXJyb3IuaCAgfCAgIDEgKwogLi4uL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAgICAgfCAgMTMgKy0KIC4uLi9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VIYW5kbGVTb3VwLmNwcCAgIHwgMTYwICsrKysrKysrKysrKysrKystLS0tLQogOCBm
aWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDA2ODk4OTEuLmQ0YmEwNjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDEtMDUgIERh
biBXaW5zaGlwICA8ZGFud0Bnbm9tZS5vcmc+CisKKyAgICAgICAgW1NvdXBdIEhhbmRsZSByZWRp
cmVjdGlvbiBpbnNpZGUgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02MTEyMgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODg5NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVbnNraXAgc29tZSB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDEzLTAxLTA5ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZA
aW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODAyNzQ1ZS4uZjI2YzY0OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk2LDEwICs5
Niw2IEBAIGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC1zZWVrLmh0bWwKIGh0dHAv
dGVzdHMvbWVkaWEvdmlkZW8tcGxheS1zdGFsbC5odG1sCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Zl
ZWQtdXJscy1mcm9tLXJlbW90ZS5odG1sCiAKLSMgVGVzdCB0aW1lcyBvdXQgKHZpYSBHVEsrKQot
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjExMjIKLWh0dHAvdGVz
dHMvbmF2aWdhdGlvbi9wb3N0LTMwNy1yZXNwb25zZS5odG1sCi0KICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoaWNoIG5lZWQgaW52ZXN0aWdhdGlvbgogIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzNzIsOSArMTM2OCw2IEBAIHdlYmtpdC5v
cmcvYi85MTM0MSBmYXN0L3RleHQvZGVzY2VudC1jbGlwLWluLXNjYWxlZC1wYWdlLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlCiAjIEZhaWxpbmcgYWZ0ZXIgcjExOTI2OCBvbiBHVEsgYW5kIEVGTAog
d2Via2l0Lm9yZy9iLzg4MTM4IGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tYnVmZmVyZWQuaHRtbCBb
IEZhaWx1cmUgXQogCi0jIEZhaWxpbmcgYWZ0ZXIgcjEyMDE0NSBvbiBib3RoIEdUSyBhbmQgRUZM
Ci13ZWJraXQub3JnL2IvODg5NjEgaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWFib3V0LWJs
YW5rLmh0bWwgWyBGYWlsdXJlIF0KLQogIyBFRkwgcG9ydCBkb2VzIG5vdCBzdXBwb3J0IGh5cGhl
bmF0aW9uCiB3ZWJraXQub3JnL2IvODk4MzAgZmFzdC90ZXh0L2h5cGhlbi1taW4tcHJlZmVycmVk
LXdpZHRoLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi84OTgzMCBmYXN0
L3RleHQvaHlwaGVuYXRlLWxvY2FsZS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDAyYjQ4ZGQuLjQwMDc1MTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC05MDYsNyArOTA2LDYgQEAgQnVn
KEdUSykgZmFzdC9sb2FkZXIvYXBpLXRlc3QtZ28tdG8tY3VycmVudC1iYWNrLWZvcndhcmQtaXRl
bS5odG1sIFsgRmFpbHVyZSBdCiAKICMgTmVlZHMgdG8gbWFrZSBzdXJlIHRoZSByZWRpcmVjdC1j
aGFpbiBzY2VuYXJpbyBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzE0MTAgd29ya3MKIHdlYmtpdC5vcmcvYi8zNTMwMCBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFm
dGVyLTMwMy1hZnRlci1wb3N0Lmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8zNTMwMCBo
dHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdC0zMDctcmVzcG9uc2UuaHRtbCBbIFNraXAgXQogCiAj
IFBhZ2VkIGNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5KCkgZXZlbnRzIGFyZSBub3Qgc3VwcG9ydGVk
IGluIEdUSy4KIEJ1ZyhHVEspIGZhc3QvZXZlbnRzL3BsYXRmb3JtLXdoZWVsZXZlbnQtcGFnaW5n
LXgtaW4tbm9uLXNjcm9sbGluZy1kaXYuaHRtbCBbIEZhaWx1cmUgXQpAQCAtMTIzMCw5ICsxMjI5
LDYgQEAgd2Via2l0Lm9yZy9iLzg2NDQ1IGZhc3QvbXVsdGljb2wvc3BsaXQtaW4tdG9wLW1hcmdp
bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAjIFRoaXMgdGVzdCBpcyBhZmZlY3Rpbmcgb3Ro
ZXIgdGVzdHMgYW5kIHNlZW1zIHRvIGJlIGJlaGF2aW5nIGluY29ycmVjdGx5IGl0c2VsZgogd2Vi
a2l0Lm9yZy9iLzg2NzcxIGZhc3QvZG9tL2djLTEwLmh0bWwgWyBTa2lwIF0KIAotIyBGYWlsaW5n
IGFmdGVyIHIxMjAxNDUgb24gYm90aCBHVEsgYW5kIEVGTAotd2Via2l0Lm9yZy9iLzg4OTYxIGh0
dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC10by1hYm91dC1ibGFuay5odG1sIFsgRmFpbHVyZSBdCi0K
IHdlYmtpdC5vcmcvYi84Njk3MSBzdmcvaGl0dGVzdC9zdmctc2hhcGVzLW5vbi1zY2FsZS1zdHJv
a2UuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvODcwODggZmFzdC9qcy9uYW1lcy5o
dG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4MjNiZC4uOTU1ZGI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAxLTA1ICBEYW4gV2luc2hpcCAgPGRhbndAZ25vbWUu
b3JnPgorCisgICAgICAgIFtTb3VwXSBIYW5kbGUgcmVkaXJlY3Rpb24gaW5zaWRlIFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjExMjIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4OTYxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmF0aGVyIHRoYW4g
dXNpbmcgbGlic291cCdzIGJ1aWx0LWluIHJlZGlyZWN0aW9uIGhhbmRsaW5nICh3aGljaAorICAg
ICAgICBkb2Vzbid0IGRvIGV2ZXJ5dGhpbmcgZXhhY3RseSB0aGUgd2F5IFdlYktpdCB3YW50cywg
YW5kIGNhbid0CisgICAgICAgIGhhbmRsZSByZWRpcmVjdHMgdG8gbm9uLWh0dHAgVVJJcyBhbnl3
YXkpLCBwcm9jZXNzIHJlZGlyZWN0aW9ucworICAgICAgICBvdXJzZWx2ZXMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzOyB1bnNraXBzIGEgZmV3IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAg
ICAgICAgKFJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChSZXNvdXJjZUVycm9yKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpnb3RIZWFkZXJzQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6cmVzdGFydGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6ZG9SZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpyZWRpcmVjdENsb3NlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVk
aXJlY3RTa2lwQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbmRSZXF1ZXN0Q2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNvdXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c3RhcnQpOgorCiAyMDEzLTAxLTA5ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDE3ZTBlYTgu
LmI4NDk1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMTUsNiArMTE1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2J1ZmZlcigwKQogICAgICAgICAgICAgLCBtX2Jv
ZHlTaXplKDApCiAgICAgICAgICAgICAsIG1fYm9keURhdGFTZW50KDApCisgICAgICAgICAgICAs
IG1fcmVkaXJlY3RDb3VudCgwKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAg
ICAsIG1fam9iKDApCkBAIC0yMDMsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB1bnNpZ25lZCBsb25nIG1fYm9keURhdGFTZW50OwogICAgICAgICBSZWZQdHI8TmV0d29y
a2luZ0NvbnRleHQ+IG1fY29udGV4dDsKICAgICAgICAgU291cFNlc3Npb24qIHNvdXBTZXNzaW9u
KCk7CisgICAgICAgIGludCBtX3JlZGlyZWN0Q291bnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCiAgICAgICAgIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCBjMzA5ZGJiLi40Mjc4M2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yLmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBSZXNv
dXJjZUVycm9yIGh0dHBFcnJvcihTb3VwTWVzc2FnZSosIEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7
CisgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJhbnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBp
bnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2UpOwogICAgIHN0YXRpYyBS
ZXNvdXJjZUVycm9yIGdlbmVyaWNJT0Vycm9yKEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAg
c3RhdGljIFJlc291cmNlRXJyb3IgdGxzRXJyb3IoU291cFJlcXVlc3QqLCB1bnNpZ25lZCB0bHNF
cnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSopOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIHRpbWVv
dXRFcnJvcihjb25zdCBTdHJpbmcmIGZhaWxpbmdVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKaW5k
ZXggNmY2NWIxOS4uMzFjYzVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00OCwxMiArNDgs
MTkgQEAgc3RhdGljIFN0cmluZyBmYWlsaW5nVVJJKFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQogICAg
IHJldHVybiBmYWlsaW5nVVJJKHNvdXBfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKIH0KIAor
UmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihTb3VwUmVxdWVzdCog
cmVxdWVzdCwgaW50IHN0YXR1c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQorewor
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJP
UiksIHN0YXR1c0NvZGUsCisgICAgICAgIGZhaWxpbmdVUkkocmVxdWVzdCksIHJlYXNvblBocmFz
ZSk7Cit9CisKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVycm9yLCBTb3VwUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAg
ICBpZiAoIW1lc3NhZ2UgfHwgIVNPVVBfU1RBVFVTX0lTX1RSQU5TUE9SVF9FUlJPUihtZXNzYWdl
LT5zdGF0dXNfY29kZSkpCisgICAgaWYgKG1lc3NhZ2UgJiYgU09VUF9TVEFUVVNfSVNfVFJBTlNQ
T1JUX0VSUk9SKG1lc3NhZ2UtPnN0YXR1c19jb2RlKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zcG9y
dEVycm9yKHJlcXVlc3QsIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAorICAgICAgICAgICAgU3RyaW5n
Ojpmcm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CisgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZ2VuZXJpY0lPRXJyb3IoZXJyb3IsIHJlcXVlc3QpOwotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUiksIG1lc3NhZ2UtPnN0YXR1
c19jb2RlLAotICAgICAgICBmYWlsaW5nVVJJKHJlcXVlc3QpLCBTdHJpbmc6OmZyb21VVEY4KG1l
c3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
OjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcAppbmRleCA1ZjBhYTEyLi5jN2FjMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApA
QCAtMjIyLDcgKzIyMiw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fY2VydGlm
aWNhdGVzOwogfTsKIAotc3RhdGljIHZvaWQgY2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKFJl
c291cmNlSGFuZGxlKiwgYm9vbCBpc0Rlc3Ryb3lpbmcpOworc3RhdGljIGJvb2wgY3JlYXRlU291
cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBpc0hUVFBGYW1pbHlSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhhbmRsZSosIGJvb2wgaXNEZXN0cm95aW5n
ID0gZmFsc2UpOwogc3RhdGljIHZvaWQgc2VuZFJlcXVlc3RDYWxsYmFjayhHT2JqZWN0KiwgR0Fz
eW5jUmVzdWx0KiwgZ3BvaW50ZXIpOwogc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3Qq
LCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CiBzdGF0aWMgdm9pZCBjbG9zZUNhbGxiYWNrKEdP
YmplY3QqLCBHQXN5bmNSZXN1bHQqLCBncG9pbnRlcik7CkBAIC0zMzAsOCArMzMxLDcgQEAgc3Rh
dGljIHZvaWQgZ290SGVhZGVyc0NhbGxiYWNrKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRl
ciBkYXRhKQogI2VuZGlmCiAKICAgICAvLyBUaGUgb3JpZ2luYWwgcmVzcG9uc2Ugd2lsbCBiZSBu
ZWVkZWQgbGF0ZXIgdG8gZmVlZCB0byB3aWxsU2VuZFJlcXVlc3QgaW4KLSAgICAvLyByZXN0YXJ0
ZWRDYWxsYmFjaygpIGluIGNhc2Ugd2UgYXJlIHJlZGlyZWN0ZWQuIEZvciB0aGlzIHJlYXNvbiwg
c28gd2Ugc3RvcmUgaXQKLSAgICAvLyBoZXJlLgorICAgIC8vIGRvUmVkaXJlY3QoKSBpbiBjYXNl
IHdlIGFyZSByZWRpcmVjdGVkLiBGb3IgdGhpcyByZWFzb24sIHdlIHN0b3JlIGl0IGhlcmUuCiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICByZXNwb25zZS51cGRhdGVGcm9tU291
cE1lc3NhZ2UobWVzc2FnZSk7CiAgICAgZC0+bV9yZXNwb25zZSA9IHJlc3BvbnNlOwpAQCAtMzc0
LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiB9CiAKIC8vIENhbGxlZCBlYWNo
IHRpbWUgdGhlIG1lc3NhZ2UgaXMgZ29pbmcgdG8gYmUgc2VudCBhZ2FpbiBleGNlcHQgdGhlIGZp
cnN0IHRpbWUuCi0vLyBJdCdzIHVzZWQgbW9zdGx5IHRvIGxldCB3ZWJraXQga25vdyBhYm91dCBy
ZWRpcmVjdHMuCisvLyBUaGlzIGhhcHBlbnMgd2hlbiBsaWJzb3VwIGhhbmRsZXMgSFRUUCBhdXRo
ZW50aWNhdGlvbi4KIHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBncG9pbnRlciBkYXRhKQogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOwpAQCAtMzg0LDY0ICszODQsMTQ0IEBA
IHN0YXRpYyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBncG9p
bnRlciBkYXRhKQogICAgIGlmIChkLT5tX2NhbmNlbGxlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSA9IGQtPm1fcmVzcG9uc2U7CiAj
aWYgRU5BQkxFKFdFQl9USU1JTkcpCisgICAgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSA9IGQtPm1fcmVzcG9uc2U7CiAgICAgcmVkaXJlY3RSZXNwb25zZS5zZXRSZXNvdXJjZUxv
YWRUaW1pbmcoUmVzb3VyY2VMb2FkVGltaW5nOjpjcmVhdGUoKSk7CiAgICAgcmVkaXJlY3RSZXNw
b25zZS5yZXNvdXJjZUxvYWRUaW1pbmcoKS0+cmVxdWVzdFRpbWUgPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKICNlbmRpZgorfQorCitzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdChS
ZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQg
PSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgU291cE1lc3NhZ2UqIG1lc3NhZ2UgPSBkLT5t
X3NvdXBNZXNzYWdlLmdldCgpOworCisgICAgLy8gU29tZSAzeHggc3RhdHVzIGNvZGVzIGFyZW4n
dCBhY3R1YWxseSByZWRpcmVjdHMuCisgICAgaWYgKG1lc3NhZ2UtPnN0YXR1c19jb2RlID09IDMw
MCB8fCBtZXNzYWdlLT5zdGF0dXNfY29kZSA9PSAzMDQgfHwgbWVzc2FnZS0+c3RhdHVzX2NvZGUg
PT0gMzA1IHx8IG1lc3NhZ2UtPnN0YXR1c19jb2RlID09IDMwNikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKG1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyBXZWJDb3JlIG9ubHkgZXhwZWN0cyB1cyB0byBjYWxsIHdpbGxTZW5kUmVxdWVzdCB3aGVu
IHdlIGFyZSByZWRpcmVjdGluZy4gc291cAotICAgIC8vIGZpcmVzIHRoaXMgc2lnbmFsIGFsc28g
d2hlbiBpdCdzIGhhbmRsaW5nIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMsIHNvIGluIHRoYXQK
LSAgICAvLyBjYXNlIHdlIHNob3VsZCBub3Qgd2lsbFNlbmRSZXF1ZXN0LgotICAgIGlmIChpc0F1
dGhlbnRpY2F0aW9uRmFpbHVyZVN0YXR1c0NvZGUocmVkaXJlY3RSZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpKSkKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJl
Y3RBc0dFVChTb3VwTWVzc2FnZSogbWVzc2FnZSwgS1VSTCYgbmV3VVJMLCBib29sIGNyb3NzT3Jp
Z2luKQoreworICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfR0VUKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW5ld1VSTC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3dpdGNoIChtZXNzYWdlLT5zdGF0
dXNfY29kZSkgeworICAgIGNhc2UgU09VUF9TVEFUVVNfU0VFX09USEVSOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBjYXNlIFNPVVBfU1RBVFVTX0ZPVU5EOgorICAgIGNhc2UgU09VUF9TVEFU
VVNfTU9WRURfUEVSTUFORU5UTFk6CisgICAgICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09V
UF9NRVRIT0RfUE9TVCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBpZiAoY3Jvc3NPcmlnaW4gJiYgbWVzc2FnZS0+bWV0aG9kID09IFNPVVBf
TUVUSE9EX0RFTEVURSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3N0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sK
KyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwor
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4UmVkaXJlY3RzID0gMjA7CisKKyAgICBpZiAoZC0+bV9y
ZWRpcmVjdENvdW50KysgPiBtYXhSZWRpcmVjdHMpIHsKKyAgICAgICAgZC0+Y2xpZW50KCktPmRp
ZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihkLT5tX3NvdXBSZXF1
ZXN0LmdldCgpLCBTT1VQX1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRp
cmVjdHMiKSk7CisgICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBo
YW5kbGUtPmZpcnN0UmVxdWVzdCgpOwotICAgIHJlcXVlc3Quc2V0VVJMKEtVUkwoaGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKSwgc291cFVSSVRvS1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaSht
ZXNzYWdlKSkpKTsKLSAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QobWVzc2FnZS0+bWV0aG9kKTsK
KyAgICBTb3VwTWVzc2FnZSogbWVzc2FnZSA9IGQtPm1fc291cE1lc3NhZ2UuZ2V0KCk7CisgICAg
Y29uc3QgY2hhciogbG9jYXRpb24gPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKG1lc3Nh
Z2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIpOworICAgIEtVUkwgbmV3VVJMID0gS1VS
TChzb3VwVVJJVG9LVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgbG9jYXRpb24p
OworICAgIGJvb2wgY3Jvc3NPcmlnaW4gPSAhcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHJl
cXVlc3QudXJsKCksIG5ld1VSTCk7CisgICAgcmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKKworICAg
IGlmIChzaG91bGRSZWRpcmVjdEFzR0VUKG1lc3NhZ2UsIG5ld1VSTCwgY3Jvc3NPcmlnaW4pKSB7
CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEJvZHkoMCk7CisgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsK
KyAgICB9CiAKICAgICAvLyBTaG91bGQgbm90IHNldCBSZWZlcmVyIGFmdGVyIGEgcmVkaXJlY3Qg
ZnJvbSBhIHNlY3VyZSByZXNvdXJjZSB0byBub24tc2VjdXJlIG9uZS4KLSAgICBpZiAoIXJlcXVl
c3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCksICJodHRwcyIpKSB7CisgICAgaWYgKCFuZXdVUkwucHJvdG9jb2xJcygiaHR0cHMi
KSAmJiBwcm90b2NvbElzKHJlcXVlc3QuaHR0cFJlZmVycmVyKCksICJodHRwcyIpKQogICAgICAg
ICByZXF1ZXN0LmNsZWFySFRUUFJlZmVycmVyKCk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFk
ZXJzX3JlbW92ZShtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJSZWZlcmVyIik7Ci0gICAgfQog
Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKLSAgICBkLT5tX3VzZXIgPSB1
cmwudXNlcigpOwotICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CisgICAgZC0+bV91c2VyID0g
bmV3VVJMLnVzZXIoKTsKKyAgICBkLT5tX3Bhc3MgPSBuZXdVUkwucGFzcygpOwogICAgIHJlcXVl
c3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKIAotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKHJlcXVlc3QudXJsKCksIHJlZGlyZWN0UmVzcG9uc2UudXJsKCkpKSB7CisgICAgaWYg
KGNyb3NzT3JpZ2luKSB7CiAgICAgICAgIC8vIElmIHRoZSBuZXR3b3JrIGxheWVyIGNhcnJpZXMg
b3ZlciBhdXRoZW50aWNhdGlvbiBoZWFkZXJzIGZyb20gdGhlIG9yaWdpbmFsIHJlcXVlc3QKICAg
ICAgICAgLy8gaW4gYSBjcm9zcy1vcmlnaW4gcmVkaXJlY3QsIHdlIHdhbnQgdG8gY2xlYXIgdGhv
c2UgaGVhZGVycyBoZXJlLiAKICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0aW9u
KCk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlbW92ZShtZXNzYWdlLT5yZXF1ZXN0
X2hlYWRlcnMsICJBdXRob3JpemF0aW9uIik7CiAKICAgICAgICAgLy8gVE9ETzogV2UgYXJlIGxv
c2luZyBhbnkgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHNwZWNpZmllZCBpbiB0aGUgcmVkaXJlY3Qg
VVJMLCBhcyB0aGlzIGlzIHRoZSAKICAgICAgICAgLy8gc2FtZSBiZWhhdmlvciBhcyB0aGUgQ0ZO
ZXQgcG9ydC4gV2Ugc2hvdWxkIGludmVzdGlnYXRlIGlmIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ug
d2FudC4KICAgICB9IGVsc2UKICAgICAgICAgYXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdCho
YW5kbGUsIHJlcXVlc3QsIHRydWUpOwogCi0gICAgLy8gUGVyLXJlcXVlc3QgYXV0aGVudGljYXRp
b24gaXMgaGFuZGxlZCB2aWEgdGhlIFVSSS1lbWJlZGRlZCB1c2VybmFtZS9wYXNzd29yZC4KLSAg
ICBHT3duUHRyPFNvdXBVUkk+IG5ld1NvdXBVUkkocmVxdWVzdC5zb3VwVVJJKCkpOwotICAgIHNv
dXBfbWVzc2FnZV9zZXRfdXJpKG1lc3NhZ2UsIG5ld1NvdXBVUkkuZ2V0KCkpOworICAgIGNsZWFu
dXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUpOworICAgIGlmICghY3JlYXRlU291cFJlcXVl
c3RBbmRNZXNzYWdlRm9ySGFuZGxlKGhhbmRsZSwgcmVxdWVzdCwgdHJ1ZSkpIHsKKyAgICAgICAg
ZC0+Y2xpZW50KCktPmNhbm5vdFNob3dVUkwoaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAogICAgIC8vIElmIHdlIHNlbnQgY3JlZGVudGlhbHMgd2l0aCB0aGlzIHJlcXVlc3QncyBV
UkwsIHdlIGRvbid0IHdhbnQgdGhlIHJlc3BvbnNlIHRvIGNhcnJ5IHRoZW0gdG8KICAgICAvLyB0
aGUgV2ViS2l0IGxheWVyLiBUaGV5IHdlcmUgb25seSBwbGFjZWQgaW4gdGhlIFVSTCBmb3IgdGhl
IGJlbmVmaXQgb2YgbGlic291cC4KICAgICByZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CiAK
LSAgICBpZiAoZC0+Y2xpZW50KCkpCi0gICAgICAgIGQtPmNsaWVudCgpLT53aWxsU2VuZFJlcXVl
c3QoaGFuZGxlLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICBkLT5jbGllbnQoKS0+
d2lsbFNlbmRSZXF1ZXN0KGhhbmRsZSwgcmVxdWVzdCwgZC0+bV9yZXNwb25zZSk7CisgICAgaGFu
ZGxlLT5zZW5kUGVuZGluZ1JlcXVlc3QoKTsKK30KIAotICAgIGlmIChkLT5tX2NhbmNlbGxlZCkK
K3N0YXRpYyB2b2lkIHJlZGlyZWN0Q2xvc2VDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0
KiByZXMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5k
bGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisKKyAgICBnX2lucHV0X3N0
cmVhbV9jbG9zZV9maW5pc2goZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwgcmVzLCAwKTsKKyAgICBk
b1JlZGlyZWN0KGhhbmRsZS5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlZGlyZWN0U2tpcENh
bGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRh
KQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVz
b3VyY2VIYW5kbGUqPihkYXRhKTsKKworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9
IGhhbmRsZS0+Y2xpZW50KCk7CisKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQgfHwgIWNsaWVudCkg
eworICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxlLmdldCgpKTsKICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0aGUgZmlyc3QgcGFydHkgaW4g
Y2FzZSB0aGUgYmFzZSBVUkwgY2hhbmdlZCB3aXRoIHRoZSByZWRpcmVjdAotICAgIFN0cmluZyBm
aXJzdFBhcnR5U3RyaW5nID0gcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLnN0cmluZygp
OwotICAgIGlmICghZmlyc3RQYXJ0eVN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgR093blB0
cjxTb3VwVVJJPiBmaXJzdFBhcnR5KHNvdXBfdXJpX25ldyhmaXJzdFBhcnR5U3RyaW5nLnV0Zjgo
KS5kYXRhKCkpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9maXJzdF9wYXJ0eShkLT5tX3Nv
dXBNZXNzYWdlLmdldCgpLCBmaXJzdFBhcnR5LmdldCgpKTsKKyAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgZ3NzaXplIGJ5dGVzU2tpcHBlZCA9IGdfaW5wdXRfc3RyZWFtX3NraXBfZmlu
aXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
OworICAgIGlmIChlcnJvcikgeworICAgICAgICBjbGllbnQtPmRpZEZhaWwoaGFuZGxlLmdldCgp
LCBSZXNvdXJjZUVycm9yOjpnZW5lcmljSU9FcnJvcihlcnJvci5nZXQoKSwgZC0+bV9zb3VwUmVx
dWVzdC5nZXQoKSkpOworICAgICAgICBjbGVhbnVwU291cFJlcXVlc3RPcGVyYXRpb24oaGFuZGxl
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChieXRlc1NraXBwZWQg
PiAwKSB7CisgICAgICAgIGdfaW5wdXRfc3RyZWFtX3NraXBfYXN5bmMoZC0+bV9pbnB1dFN0cmVh
bS5nZXQoKSwgR19NQVhTU0laRSwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgICAgZC0+
bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVkaXJlY3RTa2lwQ2FsbGJhY2ssIGhhbmRsZS5nZXQoKSk7
CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBnX2lucHV0X3N0cmVhbV9jbG9zZV9hc3lu
YyhkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQsIDAsIHJlZGlyZWN0
Q2xvc2VDYWxsYmFjaywgaGFuZGxlLmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgd3JvdGVCb2R5
RGF0YUNhbGxiYWNrKFNvdXBNZXNzYWdlKiwgU291cEJ1ZmZlciogYnVmZmVyLCBncG9pbnRlciBk
YXRhKQpAQCAtNDYzLDcgKzU0Myw3IEBAIHN0YXRpYyB2b2lkIHdyb3RlQm9keURhdGFDYWxsYmFj
ayhTb3VwTWVzc2FnZSosIFNvdXBCdWZmZXIqIGJ1ZmZlciwgZ3BvaW50ZXIgZGF0CiAgICAgY2xp
ZW50LT5kaWRTZW5kRGF0YShoYW5kbGUuZ2V0KCksIGludGVybmFsLT5tX2JvZHlEYXRhU2VudCwg
aW50ZXJuYWwtPm1fYm9keVNpemUpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhbnVwU291cFJlcXVl
c3RPcGVyYXRpb24oUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgYm9vbCBpc0Rlc3Ryb3lpbmcgPSBm
YWxzZSkKK3N0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluZykKIHsKICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOwogCkBAIC01ODMsOSArNjYzLDE0IEBA
IHN0YXRpYyB2b2lkIHNlbmRSZXF1ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBncG9pbnRlciBkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZC0+
bV9idWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZ19zbGljZV9hbGxvYyhSRUFEX0JVRkZFUl9T
SVpFKSk7Ci0KICAgICBpZiAoc291cE1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKFNPVVBfU1RBVFVT
X0lTX1JFRElSRUNUSU9OKHNvdXBNZXNzYWdlLT5zdGF0dXNfY29kZSkgJiYgc2hvdWxkUmVkaXJl
Y3QoaGFuZGxlLmdldCgpKSkgeworICAgICAgICAgICAgZC0+bV9pbnB1dFN0cmVhbSA9IGlucHV0
U3RyZWFtOworICAgICAgICAgICAgZ19pbnB1dF9zdHJlYW1fc2tpcF9hc3luYyhkLT5tX2lucHV0
U3RyZWFtLmdldCgpLCBHX01BWFNTSVpFLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAg
ICAgICAgZC0+bV9jYW5jZWxsYWJsZS5nZXQoKSwgcmVkaXJlY3RTa2lwQ2FsbGJhY2ssIGhhbmRs
ZS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAo
aGFuZGxlLT5zaG91bGRDb250ZW50U25pZmYoKSAmJiBzb3VwTWVzc2FnZS0+c3RhdHVzX2NvZGUg
IT0gU09VUF9TVEFUVVNfTk9UX01PRElGSUVEKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBz
bmlmZmVkVHlwZSA9IHNvdXBfcmVxdWVzdF9nZXRfY29udGVudF90eXBlKGQtPm1fc291cFJlcXVl
c3QuZ2V0KCkpOwogICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRTbmlmZmVkQ29udGVudFR5
cGUoc25pZmZlZFR5cGUpOwpAQCAtNjEyLDYgKzY5Nyw4IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1
ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRh
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgZC0+bV9idWZmZXIgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oZ19zbGljZV9hbGxvYyhSRUFEX0JVRkZFUl9TSVpFKSk7CisKICAgICBpZiAoc291
cE1lc3NhZ2UgJiYgZC0+bV9yZXNwb25zZS5pc011bHRpcGFydCgpKSB7CiAgICAgICAgIGQtPm1f
bXVsdGlwYXJ0SW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoc291cF9tdWx0aXBhcnRfaW5wdXRfc3Ry
ZWFtX25ldyhzb3VwTWVzc2FnZSwgaW5wdXRTdHJlYW0uZ2V0KCkpKTsKICAgICAgICAgc291cF9t
dWx0aXBhcnRfaW5wdXRfc3RyZWFtX25leHRfcGFydF9hc3luYyhkLT5tX211bHRpcGFydElucHV0
U3RyZWFtLmdldCgpLCBHX1BSSU9SSVRZX0RFRkFVTFQsCkBAIC04NzksNiArOTY2LDggQEAgc3Rh
dGljIGJvb2wgY3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFIKICAgICBnX3NpZ25hbF9jb25uZWN0KGQtPm1fc291cE1lc3Nh
Z2UuZ2V0KCksICJyZXN0YXJ0ZWQiLCBHX0NBTExCQUNLKHJlc3RhcnRlZENhbGxiYWNrKSwgaGFu
ZGxlKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksICJ3cm90
ZS1ib2R5LWRhdGEiLCBHX0NBTExCQUNLKHdyb3RlQm9keURhdGFDYWxsYmFjayksIGhhbmRsZSk7
CiAKKyAgICBzb3VwX21lc3NhZ2Vfc2V0X2ZsYWdzKGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksIHN0
YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNvdXBfbWVzc2FnZV9nZXRfZmxhZ3MoZC0+bV9z
b3VwTWVzc2FnZS5nZXQoKSkgfCBTT1VQX01FU1NBR0VfTk9fUkVESVJFQ1QpKTsKKwogI2lmIEVO
QUJMRShXRUJfVElNSU5HKQogICAgIGQtPm1fcmVzcG9uc2Uuc2V0UmVzb3VyY2VMb2FkVGltaW5n
KFJlc291cmNlTG9hZFRpbWluZzo6Y3JlYXRlKCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZC0+
bV9zb3VwTWVzc2FnZS5nZXQoKSwgIm5ldHdvcmstZXZlbnQiLCBHX0NBTExCQUNLKG5ldHdvcmtF
dmVudENhbGxiYWNrKSwgaGFuZGxlKTsKQEAgLTg4OCwxMyArOTc3LDEyIEBAIHN0YXRpYyBib29s
IGNyZWF0ZVNvdXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGNyZWF0ZVNv
dXBSZXF1ZXN0QW5kTWVzc2FnZUZvckhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBib29s
IGlzSFRUUEZhbWlseVJlcXVlc3QpCitzdGF0aWMgYm9vbCBjcmVhdGVTb3VwUmVxdWVzdEFuZE1l
c3NhZ2VGb3JIYW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sIGlzSFRUUEZhbWlseVJlcXVlc3QpCiB7CiAgICAgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKICAgICBTb3VwUmVxdWVz
dGVyKiByZXF1ZXN0ZXIgPSBTT1VQX1JFUVVFU1RFUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUo
ZC0+c291cFNlc3Npb24oKSwgU09VUF9UWVBFX1JFUVVFU1RFUikpOwogCiAgICAgR093blB0cjxH
RXJyb3I+IGVycm9yOwotICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCk7CiAKICAgICBHT3duUHRyPFNvdXBVUkk+IHNvdXBVUkkocmVxdWVzdC5zb3Vw
VVJJKCkpOwogICAgIGQtPm1fc291cFJlcXVlc3QgPSBhZG9wdEdSZWYoc291cF9yZXF1ZXN0ZXJf
cmVxdWVzdF91cmkocmVxdWVzdGVyLCBzb3VwVVJJLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpKTsK
QEAgLTkzNyw3ICsxMDI1LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCiAKICAgICBhcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KHRo
aXMsIGZpcnN0UmVxdWVzdCgpLCBmYWxzZSk7CiAKLSAgICBpZiAoIWNyZWF0ZVNvdXBSZXF1ZXN0
QW5kTWVzc2FnZUZvckhhbmRsZSh0aGlzLCBpc0hUVFBGYW1pbHlSZXF1ZXN0KSkgeworICAgIGlm
ICghY3JlYXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKHRoaXMsIHJlcXVlc3QsIGlz
SFRUUEZhbWlseVJlcXVlc3QpKSB7CiAgICAgICAgIHRoaXMtPnNjaGVkdWxlRmFpbHVyZShJbnZh
bGlkVVJMRmFpbHVyZSk7IC8vIEVycm9yIG11c3Qgbm90IGJlIHJlcG9ydGVkIGltbWVkaWF0ZWx5
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLS0gCjEuOC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>