<?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>15356</bug_id>
          
          <creation_ts>2007-10-03 03:00:16 -0700</creation_ts>
          <short_desc>getResponseHeader and getAllResponseHeaders do not throw exceptions</short_desc>
          <delta_ts>2009-09-14 09:55:34 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>carol</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57711</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-03 03:00:16 -0700</bug_when>
    <thetext>According to the spec, getReponseHeader and getAllResponseHeaders should send an INVALID_STATE_ERR exception if state is RECEIVING or DONE.
getResponseHeader should also send a SYNTAX_ERR exception if the header argument does not match the field-name production.

Following patch corrects those behaviors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57714</commentid>
    <comment_count>1</comment_count>
      <attachid>16516</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-03 05:00:20 -0700</bug_when>
    <thetext>Created attachment 16516
First patch

The patch corrects the behavior of the two methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57756</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-03 12:44:59 -0700</bug_when>
    <thetext>+    if (!isValidHeaderValue(name)) {

It seems that a new isValidHeaderName() function is needed here - header name and value productions are different. Eric has made some comments on IRC, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57763</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-03 17:04:47 -0700</bug_when>
    <thetext>&gt;+    if (!isValidHeaderValue(name)) {

&gt; It seems that a new isValidHeaderName() function is needed here - header name
&gt; and value productions are different. Eric has made some comments on IRC, too.

I have mistaken the function to call. I should have called isValidToken as it is the case in setResponseHeader (according to the RFC 2616 header-name is a token).
Thanks for pointing the error.

Concerning the tests suggested by Eric, I have tested  with the latest Firefox and it seems that it does not support all the exception added by the patch.
I will test on IE7 tomorrow once I can put my hand on it and update the results here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57790</commentid>
    <comment_count>4</comment_count>
      <attachid>16516</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-04 09:17:45 -0700</bug_when>
    <thetext>Comment on attachment 16516
First patch

Throwing exceptions in these cases can easily cause a compatibility regression with web pages or widgets that are doing it wrong and &quot;getting away with it&quot;.

But I think these calls are rarely enough used that it&apos;s not going to be a problem.

r=me for the feature branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57793</commentid>
    <comment_count>5</comment_count>
      <attachid>16516</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-04 09:22:05 -0700</bug_when>
    <thetext>Comment on attachment 16516
First patch

Actually marking r- because of the isValidHeaderValue issue (I should have done that right away).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57794</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-04 09:25:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Actually marking r- because of the isValidHeaderValue issue (I should have done
&gt; that right away).

Good catch. Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58162</commentid>
    <comment_count>7</comment_count>
      <attachid>16596</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-09 09:31:57 -0700</bug_when>
    <thetext>Created attachment 16596
Updated patch

Concerning Darin&apos;s comment about regression, I did some testing (as I told you I would) and updated the patch and the tests according to the results.

For INVALID_STATE_ERR :

IE7 : raise an exception when readyState &lt; 4
FF 3 : has a buggy behaviour that depends on the version I have used but i does raise an exception at some point before readyState 3.
Opera : raise an exception when readyState &lt; 3

Here raising an exception when readyState &lt; 3 seems the right behaviour and I have not changed that part.

For SYNTAX_ERROR :

IE 7 &amp; Opera : returns an empty string
Firefox : returns null

I sided with Opera and IE and returned an empty string if the requested header is not valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58585</commentid>
    <comment_count>8</comment_count>
      <attachid>16596</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-15 09:19:39 -0700</bug_when>
    <thetext>Comment on attachment 16596
Updated patch

+        // Should raise a SYNTAX_ERR exception
+        // but Opera and IE returns an empty string, so we just return an empty string

We should get this fixed in the XMLHttpRequest specification if browsers really can&apos;t follow it and be compatible.

Is there really a need to add the isValidToken check? What&apos;s the behavior if we leave it out? Do any of the tests you wrote fail if you leave out the isValidToken check?

+            //used to call getResponseHeader but could raise unnecessary exception

I don&apos;t think that&apos;s a helpful comment. Please just leave it out.

+    String getAllResponseHeaders(ExceptionCode&amp; ec) const;
+    String getResponseHeader(const String&amp; name, ExceptionCode&amp; ec) const;

The argument doesn&apos;t need a name in the header (see the setRequestHeader above for an example of how we write these).

review- mainly because of the isValidToken question</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58604</commentid>
    <comment_count>9</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-15 15:01:32 -0700</bug_when>
    <thetext>&gt; Is there really a need to add the isValidToken check? What&apos;s the behavior if we
&gt; leave it out? Do any of the tests you wrote fail if you leave out the
&gt; isValidToken check?

Without isValidToken we return null as does Firefox. A side effect is to make the test case fail but it was designed to fail if something else that an empty string is returned so it is not relevant.

So basically we have the choice to side with Firefox (return null) or Opera/IE (return an empty string).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58643</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-10-16 04:47:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; +        // Should raise a SYNTAX_ERR exception
&gt; +        // but Opera and IE returns an empty string, so we just return an
&gt; empty string
&gt; 
&gt; We should get this fixed in the XMLHttpRequest specification if browsers really
&gt; can&apos;t follow it and be compatible.

Cc&apos;ing Anne.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58644</commentid>
    <comment_count>11</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2007-10-16 06:55:22 -0700</bug_when>
    <thetext>Ok, so instead of throwing a SYNTAX_ERR for incorrect header names the empty string would be returned. I guess this is ok, although that is also returned for valid header names that are empty.

If you could e-mail the public-webapi list that you&apos;d like getResponseHeader() header changed in that way that would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58683</commentid>
    <comment_count>12</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-16 14:58:55 -0700</bug_when>
    <thetext>&gt; If you could e-mail the public-webapi list that you&apos;d like getResponseHeader()
&gt; header changed in that way that would be great.

Just send an email requesting the modification.

Updated patch will follow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58685</commentid>
    <comment_count>13</comment_count>
      <attachid>16688</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2007-10-16 15:20:28 -0700</bug_when>
    <thetext>Created attachment 16688
Patch updated with Darin&apos;s comments and current discussion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58859</commentid>
    <comment_count>14</comment_count>
      <attachid>16688</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-19 10:51:43 -0700</bug_when>
    <thetext>Comment on attachment 16688
Patch updated with Darin&apos;s comments and current discussion

r=me (hope Alexey doesn&apos;t notice something I missed this time!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59330</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-24 06:00:51 -0700</bug_when>
    <thetext>Landed in r26986.  Be wary of tabs, your new test cases contained a few.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59331</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-10-24 06:39:23 -0700</bug_when>
    <thetext>I also had to land new test results in r26989 as the results included in the patch didn&apos;t match what the test was expected to generate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147069</commentid>
    <comment_count>17</comment_count>
    <who name="Carol Szabo">carol</who>
    <bug_when>2009-09-14 09:30:53 -0700</bug_when>
    <thetext>I opened a new bug (29140) related to this issue. The issue is a little different than the one in the title of this bug, but it touches on issues discussed in the comments here. https://bugs.webkit.org/show_bug.cgi?id=29140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147079</commentid>
    <comment_count>18</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2009-09-14 09:55:34 -0700</bug_when>
    <thetext>By the way, the spec says to return null in case the production does not match so you might want to change the code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16516</attachid>
            <date>2007-10-03 05:00:20 -0700</date>
            <delta_ts>2007-10-04 09:22:05 -0700</delta_ts>
            <desc>First patch</desc>
            <filename>bug15356.patch</filename>
            <type>text/plain</type>
            <size>10613</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24g
MjU5NjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTksMTUgKzIxOSwxOSBAQAogICAgICAgICAgICAgcmVxdWVzdC0+bV9p
bXBsLT5hYm9ydCgpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICAg
ICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpHZXRBbGxSZXNwb25zZUhlYWRlcnM6Ci0gICAgICAg
ICAgICByZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZChyZXF1ZXN0LT5tX2ltcGwtPmdldEFsbFJl
c3BvbnNlSGVhZGVycygpKTsKLQotICAgICAgICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkdldFJl
c3BvbnNlSGVhZGVyOgorICAgICAgICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkdldEFsbFJlc3Bv
bnNlSGVhZGVyczogeworICAgICAgICAgICAgSlNWYWx1ZSogaGVhZGVycyA9IGpzU3RyaW5nT3JV
bmRlZmluZWQocmVxdWVzdC0+bV9pbXBsLT5nZXRBbGxSZXNwb25zZUhlYWRlcnMoZWMpKTsKKyAg
ICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgICAgICByZXR1cm4g
aGVhZGVyczsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6OkdldFJl
c3BvbnNlSGVhZGVyOiB7CiAgICAgICAgICAgICBpZiAoYXJncy5zaXplKCkgPCAxKQogICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiKTsKIAotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKHJlcXVl
c3QtPm1faW1wbC0+Z2V0UmVzcG9uc2VIZWFkZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKTsK
LQorICAgICAgICAgICAgSlNWYWx1ZSogaGVhZGVyID0ganNTdHJpbmdPck51bGwocmVxdWVzdC0+
bV9pbXBsLT5nZXRSZXNwb25zZUhlYWRlcihhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgZWMpKTsK
KyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgICAgICByZXR1
cm4gaGVhZGVyOworICAgICAgICB9CiAgICAgICAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6T3Bl
bjogewogICAgICAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMikKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91Z2ggYXJndW1lbnRz
Iik7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjU5NzApCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI2IEBACisyMDA3LTEwLTAzICBKdWxpZW4gIDxqdWxpZW4uY2hhZmZyYWl4
QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXRjaCBmb3IgYnVnIDogaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNTYKKworICAgICAgICAtIGdldEFsbFJlc3BvbnNlSGVhZGVycyBhbmQgZ2V0UmVzcG9u
c2VIZWFkZXIgdGhyb3dzIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhcyBzcGVjaWZpZWQg
aW4gdGhlIHNwZWNpZmljYXRpb24KKworICAgICAgICAtIEFkZCB0aGUgY2hlY2sgdG8gZmllbGQt
bmFtZSBwcm9kdWN0aW9uIHByb2R1Y3Rpb24gaW4gZ2V0UmVzcG9uc2VIZWFkZXIgKGNhbGwgdG8g
aXNWYWxpZEhlYWRlclZhbHVlKQorCisgICAgICAgIC0gVXBkYXRlZCBYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2VNSU1FVHlwZSgpIHRvIGtlZXAgaXRzIGJlaGF2aW9yIChubyBtb3JlIGNhbGwgdG8g
Z2V0UmVzcG9uc2VIZWFkZXIpCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RI
ZWFkZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXIuaHRtbAor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChL
SlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24pOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2VNSU1FVHlwZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0Lmg6CisKIDIwMDctMTAtMDMgIExhcnMgS25vbGwgIDxsYXJzQHRyb2xsdGVjaC5jb20+CiAK
ICAgICAgICAgU2lnbmVkIG9mZiBieSBvbGxpZWouCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAyNTk2NSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQwLDggKzU0MCwxMyBAQAogICAgIHJldHVybiBtX3JlcXVlc3RIZWFk
ZXJzLmdldChuYW1lKTsKIH0KIAotU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKSBjb25zdAorU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhl
YWRlcnMoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisgICAgaWYgKG1fc3RhdGUgPCBSZWNl
aXZpbmcpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
ICIiOworICAgIH0KKwogICAgIFZlY3RvcjxVQ2hhcj4gc3RyaW5nQnVpbGRlcjsKICAgICBTdHJp
bmcgc2VwYXJhdG9yKCI6ICIpOwogCkBAIC01NTYsOCArNTYxLDE4IEBACiAgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQoc3RyaW5nQnVpbGRlcik7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6
Z2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorU3RyaW5nIFhNTEh0
dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAogeworICAgIGlmIChtX3N0YXRlIDwgUmVjZWl2aW5nKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisK
KyAgICBpZiAoIWlzVmFsaWRIZWFkZXJWYWx1ZShuYW1lKSkgeworICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKICAgICByZXR1cm4gbV9yZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQobmFtZSk7CiB9CiAKQEAgLTU2Niw3ICs1ODEsOCBAQAogICAgIFN0
cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZU92
ZXJyaWRlKTsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3Jl
c3BvbnNlLmlzSFRUUCgpKQotICAgICAgICAgICAgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVG
cm9tTWVkaWFUeXBlKGdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAgICAg
ICAgICAvL3VzZWQgdG8gY2FsbCBnZXRSZXNwb25zZUhlYWRlciBidXQgY291bGQgcmFpc2UgdW5u
ZWNlc3NhcnkgZXhjZXB0aW9uCisgICAgICAgICAgICBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVU
eXBlKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCShyZXZpc2lvbiAyNTk2NSkKKysr
IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgw
LDggQEAKICAgICB2b2lkIGFib3J0KCk7CiAgICAgdm9pZCBzZXRSZXF1ZXN0SGVhZGVyKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgb3ZlcnJpZGVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsKLSAgICBTdHJp
bmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdldFJlc3BvbnNl
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgU3RyaW5nIGdldEFsbFJlc3Bv
bnNlSGVhZGVycyhFeGNlcHRpb25Db2RlJiBlYykgY29uc3Q7CisgICAgU3RyaW5nIGdldFJlc3Bv
bnNlSGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Owog
ICAgIGNvbnN0IEtKUzo6VVN0cmluZyYgZ2V0UmVzcG9uc2VUZXh0KCkgY29uc3Q7CiAgICAgRG9j
dW1lbnQqIGdldFJlc3BvbnNlWE1MKCkgY29uc3Q7CiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9u
LWdldEFsbFJlcXVlc3RIZWFkZXJzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0
ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1ZXN0SGVhZGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0
LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1ZXN0SGVhZGVycy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorVGVzdCBwYWdlIGZvciB0aGUgYnVnIDE1MzU2
IDogZ2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhy
b3cgZXhjZXB0aW9ucworCitQQVNTRUQgMQorUEFTU0VEIDIKK1BBU1NFRCAzCitQQVNTRUQgNAor
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1ZXN0SGVhZGVycy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1ZXN0SGVhZGVycy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACis8aHRtbD4KKzxoZWFkPgorCTx0aXRsZT5D
aGVjayBleGNlcHRpb24gdGhyb3duIGJ5IGdldEFsbFJlc3BvbnNlSGVhZGVycyA8L3RpdGxlPgor
PC9oZWFkPgorPGJvZHk+CisKKzxwPlRlc3QgcGFnZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcgMTUzNTY8L2E+IDogZ2V0
UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhyb3cgZXhj
ZXB0aW9uczwvcD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGxvZyAobXNnKSB7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIg
eGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Cit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHJTdGF0ZSA9IHRoaXMucmVhZHlTdGF0ZTsKKyAgICAvLyBXZSBl
eHBlY3QgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlID0gMSBv
ciAyCisgICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA9IDMgb3IgNAorICAg
IHRyeSB7CisgICAgICAgIHRoaXMuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7CisgICAgICAgIGlm
IChyU3RhdGUgPT0gMSB8fCByU3RhdGUgPT0gMikgeworICAgICAgICAgICAgbG9nKCJGQUlMRUQg
IiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIlBBU1NFRCAi
ICsgclN0YXRlKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdmFyIHJl
Z0V4cCA9IG5ldyBSZWdFeHAoIklOVkFMSURfU1RBVEVfRVJSIik7CisgICAgICAgIGlmIChlLm1l
c3NhZ2UubWF0Y2gocmVnRXhwKSAmJiAoclN0YXRlID09IDEgfHwgclN0YXRlID09IDIpKSB7Cisg
ICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGxvZygiRkFJTEVEIChCQUQgRVhDRVBUSU9OKSAiICsgclN0YXRlKTsKKyAgICAg
ICAgfQorICAgIH0KK30KK3hoci5vcGVuKCJHRVQiLCJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1
ZSk7Cit4aHIuc2VuZChudWxsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1JbnZh
bGlkU3RhdGVFeGNlcHRpb24tZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0
dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUZXN0IHBhZ2UgZm9yIHRoZSBidWcg
MTUzNTYgOiBnZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5v
dCB0aHJvdyBleGNlcHRpb25zCisKK1BBU1NFRCAxCitQQVNTRUQgMgorUEFTU0VEIDMKK1BBU1NF
RCA0CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVyLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHBy
ZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorPGhlYWQ+CisJPHRpdGxlPkNoZWNrIGV4
Y2VwdGlvbiB0aHJvd24gYnkgZ2V0UmVwb25zZUhlYWRlciA8L3RpdGxlPgorPC9oZWFkPgorPGJv
ZHk+CisKKzxwPlRlc3QgcGFnZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Ij5idWcgMTUzNTY8L2E+IDogZ2V0UmVzcG9uc2VIZWFk
ZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhyb3cgZXhjZXB0aW9uczwvcD4K
KworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisKK2Z1bmN0aW9uIGxvZyAobXNnKSB7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOworfQorCit2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Cit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHJTdGF0ZSA9IHRoaXMucmVhZHlTdGF0ZTsKKyAgICAvLyBXZSBleHBlY3QgYW4gSU5W
QUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlID0gMSBvciAyCisgICAgLy8g
YW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA9IDMgb3IgNAorICAgIHRyeSB7CisgICAg
ICAgIHRoaXMuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpOworICAgICAgICBpZiAo
clN0YXRlID09IDEgfHwgclN0YXRlID09IDIpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTEVEICIg
KyByU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiAr
IHJTdGF0ZSk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHZhciByZWdF
eHAgPSBuZXcgUmVnRXhwKCJJTlZBTElEX1NUQVRFX0VSUiIpOworICAgICAgICBpZiAoZS5tZXNz
YWdlLm1hdGNoKHJlZ0V4cCkgJiYgKHJTdGF0ZSA9PSAxIHx8IHJTdGF0ZSA9PSAyKSkgeworICAg
ICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBsb2coIkZBSUxFRCAoQkFEIEVYQ0VQVElPTikgIiArIHJTdGF0ZSk7CisgICAgICAg
IH0KKyAgICB9Cit9Cit4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUp
OworeGhyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI1OTcwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMDctMTAtMDMgIEp1bGllbiAgPGp1bGllbi5jaGFmZnJhaXhA
Z21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3QgYW5kIHJlc3VsdHMgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzU2IDogZ2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVy
cyBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucworCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0QWxsUmVxdWVz
dEhlYWRlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1
ZXN0SGVhZGVycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC94bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0UmVxdWVzdEhlYWRlci5o
dG1sOiBBZGRlZC4KKwogMjAwNy0xMC0wMyAgTGFycyBLbm9sbCAgPGxhcnNAdHJvbGx0ZWNoLmNv
bT4KIAogICAgICAgICBNb3ZlIGFsbCB0ZXN0IHJlc3VsdHMgdGhhdCBhcmUgcGxhdGZvcm0gZGVw
ZW5kZW50IGJ1dAo=
</data>
<flag name="review"
          id="6966"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16596</attachid>
            <date>2007-10-09 09:31:57 -0700</date>
            <delta_ts>2007-10-15 09:19:39 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>bug15356.patch</filename>
            <type>text/plain</type>
            <size>14237</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjE1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDctMTAtMDkgIEp1bGllbiAgPGp1bGllbi5jaGFmZnJhaXhAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhdGNoIGZvciBidWcgOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM1NgorCisgICAgICAgIC0gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGFuZCBnZXRSZXNwb25zZUhl
YWRlciB0aHJvd3MgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFzIHNwZWNpZmllZCBpbiB0
aGUgc3BlY2lmaWNhdGlvbgorCisgICAgICAgIC0gQWRkIHRoZSBjaGVjayB0byBmaWVsZC1uYW1l
IHByb2R1Y3Rpb24gaW4gZ2V0UmVzcG9uc2VIZWFkZXIgKGNhbGwgdG8gaXNWYWxpZFRva2VuKSBh
bmQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGhlYWRlciBpcyBub3QgdmFsaWQgKE9w
ZXJhIGFuZCBJRSBiZWhhdmlvdXIpCisKKyAgICAgICAgLSBVcGRhdGVkIFhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZU1JTUVUeXBlKCkgdG8ga2VlcCBpdHMgYmVoYXZpb3VyIChubyBtb3JlIGNhbGwg
dG8gZ2V0UmVzcG9uc2VIZWFkZXIpCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVl
c3RIZWFkZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXIuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChLSlM6OkpTWE1MSHR0cFJlcXVl
c3RQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0QWxs
UmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRS
ZXNwb25zZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VNSU1FVHlwZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKIDIwMDctMTAt
MDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
dGV2ZSBGYWxrZW5idXJnLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVl
c3QuY3BwCShyZXZpc2lvbiAyNjE1NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwxNSArMjE5LDE5IEBAIEpTVmFsdWUq
IEpTWE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGkKICAgICAgICAgICAgIHJlcXVlc3QtPm1f
aW1wbC0+YWJvcnQoKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAg
ICAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0QWxsUmVzcG9uc2VIZWFkZXJzOgotICAgICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nT3JVbmRlZmluZWQocmVxdWVzdC0+bV9pbXBsLT5nZXRBbGxS
ZXNwb25zZUhlYWRlcnMoKSk7Ci0KLSAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpHZXRS
ZXNwb25zZUhlYWRlcjoKKyAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpHZXRBbGxSZXNw
b25zZUhlYWRlcnM6IHsKKyAgICAgICAgICAgIEpTVmFsdWUqIGhlYWRlcnMgPSBqc1N0cmluZ09y
VW5kZWZpbmVkKHJlcXVlc3QtPm1faW1wbC0+Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKGVjKSk7Cisg
ICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICAgICAgcmV0dXJu
IGhlYWRlcnM7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpHZXRS
ZXNwb25zZUhlYWRlcjogewogICAgICAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpIDwgMSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIik7CiAKLSAgICAgICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChyZXF1
ZXN0LT5tX2ltcGwtPmdldFJlc3BvbnNlSGVhZGVyKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSk7
Ci0KKyAgICAgICAgICAgIEpTVmFsdWUqIGhlYWRlciA9IGpzU3RyaW5nT3JOdWxsKHJlcXVlc3Qt
Pm1faW1wbC0+Z2V0UmVzcG9uc2VIZWFkZXIoYXJnc1swXS0+dG9TdHJpbmcoZXhlYyksIGVjKSk7
CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICAgICAgcmV0
dXJuIGhlYWRlcjsKKyAgICAgICAgfQogICAgICAgICBjYXNlIEpTWE1MSHR0cFJlcXVlc3Q6Ok9w
ZW46IHsKICAgICAgICAgICAgIGlmIChhcmdzLnNpemUoKSA8IDIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpOwpJbmRleDogV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMjYxNTYpCisrKyBXZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw4ICs1NDAs
MTMgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXF1ZXN0SGVhZGVyKAogICAgIHJldHVy
biBtX3JlcXVlc3RIZWFkZXJzLmdldChuYW1lKTsKIH0KIAotU3RyaW5nIFhNTEh0dHBSZXF1ZXN0
OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBjb25zdAorU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRBbGxSZXNwb25zZUhlYWRlcnMoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CisgICAgaWYg
KG1fc3RhdGUgPCBSZWNlaXZpbmcpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKwogICAgIFZlY3RvcjxVQ2hhcj4gc3RyaW5nQnVp
bGRlcjsKICAgICBTdHJpbmcgc2VwYXJhdG9yKCI6ICIpOwogCkBAIC01NTYsOCArNTYxLDE5IEBA
IFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWEKICAgICByZXR1cm4gU3Ry
aW5nOjphZG9wdChzdHJpbmdCdWlsZGVyKTsKIH0KIAotU3RyaW5nIFhNTEh0dHBSZXF1ZXN0Ojpn
ZXRSZXNwb25zZUhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CitTdHJpbmcgWE1MSHR0
cFJlcXVlc3Q6OmdldFJlc3BvbnNlSGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiB7CisgICAgaWYgKG1fc3RhdGUgPCBSZWNlaXZpbmcpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKwor
ICAgIGlmICghaXNWYWxpZFRva2VuKG5hbWUpKSB7CisgICAgICAgIC8vIFNob3VsZCByYWlzZSBh
IFNZTlRBWF9FUlIgZXhjZXB0aW9uCisgICAgICAgIC8vIGJ1dCBPcGVyYSBhbmQgSUUgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcsIHNvIHdlIGp1c3QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZworICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorCiAgICAgcmV0dXJuIG1fcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKG5hbWUpOwogfQogCkBAIC01NjYsNyArNTgyLDggQEAgU3RyaW5nIFhNTEh0dHBSZXF1
ZXN0OjpyZXNwb25zZU1JTUVUeXBlKAogICAgIFN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZU92ZXJyaWRlKTsKICAgICBpZiAobWltZVR5cGUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLmlzSFRUUCgpKQotICAgICAgICAg
ICAgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGdldFJlc3BvbnNlSGVh
ZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAgICAgICAgICAvL3VzZWQgdG8gY2FsbCBnZXRSZXNw
b25zZUhlYWRlciBidXQgY291bGQgcmFpc2UgdW5uZWNlc3NhcnkgZXhjZXB0aW9uCisgICAgICAg
ICAgICBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgfQpJbmRleDogV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCShyZXZpc2lvbiAyNjE1NikKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWJv
cnQoKTsKICAgICB2b2lkIHNldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBvdmVycmlkZU1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpOwotICAgIFN0cmluZyBnZXRBbGxSZXNwb25zZUhl
YWRlcnMoKSBjb25zdDsKLSAgICBTdHJpbmcgZ2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgU3RyaW5n
JiBuYW1lKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3Q7CiAgICAgY29uc3QgS0pTOjpVU3Ry
aW5nJiBnZXRSZXNwb25zZVRleHQoKSBjb25zdDsKICAgICBEb2N1bWVudCogZ2V0UmVzcG9uc2VY
TUwoKSBjb25zdDsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYxNTYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwNy0xMC0wOSAgSnVs
aWVuICA8anVsaWVuLmNoYWZmcmFpeEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBhbmQgcmVzdWx0cyBmb3IgaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYgOiBnZXRSZXNwb25zZUhlYWRlciBh
bmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0
ZUV4Y2VwdGlvbi1nZXRBbGxSZXF1ZXN0SGVhZGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0
YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhj
ZXB0aW9uLWdldFJlcXVlc3RIZWFkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2Vw
dGlvbi1nZXRSZXF1ZXN0SGVhZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVh
ZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbDog
QWRkZWQuCisKIDIwMDctMTAtMDggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRp
b24tZ2V0QWxsUmVxdWVzdEhlYWRlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0
YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitUZXN0IHBhZ2UgZm9yIHRoZSBidWcgMTUz
NTYgOiBnZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0
aHJvdyBleGNlcHRpb25zCisKK1BBU1NFRCAxCitQQVNTRUQgMgorUEFTU0VEIDMKK1BBU1NFRCA0
CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRw
cmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0QWxsUmVxdWVzdEhlYWRlcnMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+CisJPHRpdGxl
PkNoZWNrIGV4Y2VwdGlvbiB0aHJvd24gYnkgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDwvdGl0bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+VGVzdCBwYWdlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYiPmJ1ZyAxNTM1NjwvYT4gOiBn
ZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBl
eGNlcHRpb25zPC9wPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9nIChtc2cpIHsKKyAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3Zh
ciB4aHI7CisKK2lmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKKyAgICB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3QoKTsKK30gZWxzZSB7CisgICAgdHJ5IHsKKyAgICAgICAgeGhyID0gbmV3IEFj
dGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAg
ICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7CisgICAgfQor
fQorCit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJTdGF0
ZSA9IHRoaXMucmVhZHlTdGF0ZTsKKyAgICAvLyBXZSBleHBlY3QgYW4gSU5WQUxJRF9TVEFURV9F
UlIgZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlID0gMSBvciAyCisgICAgLy8gYW5kIG5vIGV4Y2Vw
dGlvbiBmb3IgcmVhZHlTdGF0ZSA9IDMgb3IgNAorICAgIHRyeSB7CisgICAgICAgIHZhciBoZWFk
ZXIgPSB0aGlzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOworICAgICAgICBpZiAoclN0YXRlID09
IDEgfHwgclN0YXRlID09IDIpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTEVEICggaGVhZGVyIDoi
ICsgaGVhZGVyICsgIikiICsgclN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGxvZygiUEFTU0VEICIgKyByU3RhdGUpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBpZiAoclN0YXRlID09IDEgfHwgclN0YXRlID09IDIpIHsKKyAgICAgICAgICAgIGxv
ZygiUEFTU0VEICgiICsgZS5tZXNzYWdlICsiICkgIiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBsb2coIkZBSUxFRCAoRVhDRVBUSU9OIFRIUk9XTiAiICsgZS5tZXNz
YWdlICsgIiApICIgKyByU3RhdGUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBUZXN0IGZv
ciByZWFkeVN0YXRlID0gMAordHJ5IHsKKyAgICB2YXIgaGVhZGVyID0geGhyLmdldEFsbFJlc3Bv
bnNlSGVhZGVycygpOworICAgIGxvZygiRkFJTEVEICggaGVhZGVyIDoiICsgaGVhZGVyICsgIiki
ICsgeGhyLnJlYWR5U3RhdGUpOworfSBjYXRjaCAoZSkgeworICAgIGxvZygiUEFTU0VEICgiICsg
ZS5tZXNzYWdlICsiICkgIiArIHhoci5yZWFkeVN0YXRlKTsKK30KKworeGhyLm9wZW4oIkdFVCIs
InJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVlKTsKK3hoci5zZW5kKG51bGwpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVh
ZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1
ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9u
LWdldFJlcXVlc3RIZWFkZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcg
QEAKK1Rlc3QgcGFnZSBmb3IgdGhlIGJ1ZyAxNTM1NiA6IGdldFJlc3BvbnNlSGVhZGVyIGFuZCBn
ZXRBbGxSZXNwb25zZUhlYWRlcnMgZG8gbm90IHRocm93IGV4Y2VwdGlvbnMKKworUEFTU0VEIDEK
K1BBU1NFRCAyCitQQVNTRUQgMworUEFTU0VEIDQKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24t
Z2V0UmVxdWVzdEhlYWRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdl
dFJlcXVlc3RIZWFkZXIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdl
dFJlcXVlc3RIZWFkZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+
Cis8aGVhZD4KKwk8dGl0bGU+Q2hlY2sgZXhjZXB0aW9uIHRocm93biBieSBnZXRSZXBvbnNlSGVh
ZGVyIDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+VGVzdCBwYWdlIGZvciB0aGUgPGEg
aHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYiPmJ1ZyAx
NTM1NjwvYT4gOiBnZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRv
IG5vdCB0aHJvdyBleGNlcHRpb25zPC9wPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbG9nIChtc2cpIHsKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KSk7Cit9CisKK3ZhciB4aHI7CisKK2lmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKKyAgICB4
aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKK30gZWxzZSB7CisgICAgdHJ5IHsKKyAgICAgICAg
eGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7CisgICAgfSBjYXRjaCAo
ZXgpIHsKKyAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQ
Iik7CisgICAgfQorfQorCit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHJTdGF0ZSA9IHRoaXMucmVhZHlTdGF0ZTsKKyAgICAvLyBXZSBleHBlY3QgYW4gSU5W
QUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGZvciByZWFkeVN0YXRlID0gMSBvciAyCisgICAgLy8g
YW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA9IDMgb3IgNAorICAgIHRyeSB7CisgICAg
ICAgIHZhciBoZWFkZXIgPSB0aGlzLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKTsK
KyAgICAgICAgaWYgKHJTdGF0ZSA9PSAxIHx8IHJTdGF0ZSA9PSAyKSB7CisgICAgICAgICAgICBs
b2coIkZBSUxFRCAoIGhlYWRlciA6IiArIGhlYWRlciArICIpIiArIHJTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIlBBU1NFRCAiICsgclN0YXRlKTsKKyAgICAgICAg
fQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKHJTdGF0ZSA9PSAxIHx8IHJTdGF0ZSA9
PSAyKSB7CisgICAgICAgICAgICBsb2coIlBBU1NFRCAoIiArIGUubWVzc2FnZSArIiApICIgKyBy
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJGQUlMRUQgKEVYQ0VQ
VElPTiBUSFJPV04gIiArIGUubWVzc2FnZSArICIgKSAiICsgclN0YXRlKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworLy8gVGVzdCBmb3IgcmVhZHlTdGF0ZSA9IDAKK3RyeSB7CisgICAgdmFyIGhl
YWRlciA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIik7CisgICAgbG9nKCJG
QUlMRUQgKCBoZWFkZXIgOiIgKyBoZWFkZXIgKyAiKSIgKyB4aHIucmVhZHlTdGF0ZSk7Cit9IGNh
dGNoIChlKSB7CisgICAgbG9nKCJQQVNTRUQgKCIgKyBlLm1lc3NhZ2UgKyIgKSAiICsgeGhyLnJl
YWR5U3RhdGUpOworfQorCit4aHIub3BlbigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRy
dWUpOworeGhyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW52
YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFs
aWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFs
aWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNSBAQAorVGVzdCBwYWdlIGZvciB0aGUgYnVnIDE1MzU2IDogZ2V0UmVzcG9uc2VIZWFk
ZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVhZGVycyBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucworCitQ
QVNTRUQgMworUEFTU0VEIDQKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3ht
bGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRlci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKwk8dGl0bGU+Q2hlY2sgYmVoYXZpb3VyIHdo
ZW4gcmVxdWVzdGlvbmcgYW4gaW52YWxpZCBoZWFkZXIgaW4gIGdldFJlcG9uc2VIZWFkZXIgPC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD5UZXN0IHBhZ2UgZm9yIHRoZSA8YSBocmVmPSJo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NiI+YnVnIDE1MzU2PC9h
PiA6IGdldFJlc3BvbnNlSGVhZGVyIGFuZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgZG8gbm90IHRo
cm93IGV4Y2VwdGlvbnM8L3A+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBsb2cgKG1zZykgeworICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30K
KwordmFyIHhocjsKKworaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkgeworICAgIHhociA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOworfSBlbHNlIHsKKyAgICB0cnkgeworICAgICAgICB4aHIgPSBu
ZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwyLlhNTEhUVFAiKTsKKyAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKKyAg
ICB9Cit9CisKK3hoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIg
clN0YXRlID0gdGhpcy5yZWFkeVN0YXRlOworICAgIGlmIChyU3RhdGUgPiAyKSB7CisgICAgICAg
IC8vIFdlIGV4cGVjdCBhbiBlbXB0eSBzdHJpbmcgb3IgbnVsbAorICAgICAgICB2YXIgaGVhZGVy
ID0gdGhpcy5nZXRSZXNwb25zZUhlYWRlcigiKDw+QCkiKTsKKyAgICAgICAgaWYgKGhlYWRlciA9
PSAiIikgeworICAgICAgICAgICAgbG9nKCJQQVNTRUQgIiArIHJTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBsb2coIkZBSUxFRCAiICsgclN0YXRlKTsKKyAgICAgICAgfQor
ICAgIH0KK30KK3hoci5vcGVuKCJHRVQiLCJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7Cit4
aHIuc2VuZChudWxsKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="7005"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16688</attachid>
            <date>2007-10-16 15:20:28 -0700</date>
            <delta_ts>2007-10-19 10:51:43 -0700</delta_ts>
            <desc>Patch updated with Darin&apos;s comments and current discussion</desc>
            <filename>bug15356-updated.patch</filename>
            <type>text/plain</type>
            <size>13985</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjY3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDctMTAtMTYgIEp1bGllbiAgPGp1bGllbi5jaGFmZnJhaXhAZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhdGNoIGZvciBidWcgOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM1NgorCisgICAgICAgIC0gZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGFuZCBnZXRSZXNwb25zZUhl
YWRlciB0aHJvd3MgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFzIHNwZWNpZmllZCBpbiB0
aGUgc3BlY2lmaWNhdGlvbgorCisgICAgICAgIC0gQWRkIHRoZSBjaGVjayB0byBmaWVsZC1uYW1l
IHByb2R1Y3Rpb24gaW4gZ2V0UmVzcG9uc2VIZWFkZXIgKGNhbGwgdG8gaXNWYWxpZFRva2VuKSBh
bmQgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGhlYWRlciBpcyBub3QgdmFsaWQgKE9w
ZXJhIGFuZCBJRSBiZWhhdmlvdXIpCisKKyAgICAgICAgLSBVcGRhdGVkIFhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZU1JTUVUeXBlKCkgdG8ga2VlcCBpdHMgYmVoYXZpb3VyCisKKyAgICAgICAgVGVz
dHM6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRl
RXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9u
LWdldFJlcXVlc3RIZWFkZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRt
bAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChLSlM6OkpTWE1MSHR0cFJlcXVlc3RQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24p
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VNSU1FVHlwZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0Lmg6CisKIDIwMDctMTAtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBhbmQgR2VvZmYgKGFuZCBsb29rZWQgb3ZlciBi
eSBFcmljKS4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAko
cmV2aXNpb24gMjY2NzkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksMTUgKzIxOSwxOSBAQCBKU1ZhbHVlKiBKU1hNTEh0
dHBSZXF1ZXN0UHJvdG90eXBlRnVuY3RpCiAgICAgICAgICAgICByZXF1ZXN0LT5tX2ltcGwtPmFi
b3J0KCk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICBjYXNl
IEpTWE1MSHR0cFJlcXVlc3Q6OkdldEFsbFJlc3BvbnNlSGVhZGVyczoKLSAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKHJlcXVlc3QtPm1faW1wbC0+Z2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkpOwotCi0gICAgICAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0UmVzcG9uc2VI
ZWFkZXI6CisgICAgICAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0QWxsUmVzcG9uc2VIZWFk
ZXJzOiB7CisgICAgICAgICAgICBKU1ZhbHVlKiBoZWFkZXJzID0ganNTdHJpbmdPclVuZGVmaW5l
ZChyZXF1ZXN0LT5tX2ltcGwtPmdldEFsbFJlc3BvbnNlSGVhZGVycyhlYykpOworICAgICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgICAgIHJldHVybiBoZWFkZXJz
OworICAgICAgICB9CisgICAgICAgIGNhc2UgSlNYTUxIdHRwUmVxdWVzdDo6R2V0UmVzcG9uc2VI
ZWFkZXI6IHsKICAgICAgICAgICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpOwogCi0gICAgICAgICAgICByZXR1cm4ganNTdHJpbmdPck51bGwocmVxdWVzdC0+bV9p
bXBsLT5nZXRSZXNwb25zZUhlYWRlcihhcmdzWzBdLT50b1N0cmluZyhleGVjKSkpOwotCisgICAg
ICAgICAgICBKU1ZhbHVlKiBoZWFkZXIgPSBqc1N0cmluZ09yTnVsbChyZXF1ZXN0LT5tX2ltcGwt
PmdldFJlc3BvbnNlSGVhZGVyKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBlYykpOworICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgICAgIHJldHVybiBoZWFk
ZXI7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBKU1hNTEh0dHBSZXF1ZXN0OjpPcGVuOiB7CiAg
ICAgICAgICAgICBpZiAoYXJncy5zaXplKCkgPCAyKQogICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKSW5k
ZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDI2Njc5KQorKysgV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsOCArNTQyLDEzIEBAIFN0
cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVxdWVzdEhlYWRlcigKICAgICByZXR1cm4gbV9yZXF1
ZXN0SGVhZGVycy5nZXQobmFtZSk7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgY29uc3QKK1N0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVz
cG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogeworICAgIGlmIChtX3N0YXRl
IDwgUmVjZWl2aW5nKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAg
IHJldHVybiAiIjsKKyAgICB9CisKICAgICBWZWN0b3I8VUNoYXI+IHN0cmluZ0J1aWxkZXI7CiAg
ICAgU3RyaW5nIHNlcGFyYXRvcigiOiAiKTsKIApAQCAtNTU5LDggKzU2NCwxNiBAQCBTdHJpbmcg
WE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhCiAgICAgcmV0dXJuIFN0cmluZzo6YWRv
cHQoc3RyaW5nQnVpbGRlcik7CiB9CiAKLVN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9u
c2VIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAorU3RyaW5nIFhNTEh0dHBSZXF1ZXN0
OjpnZXRSZXNwb25zZUhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdAogeworICAgIGlmIChtX3N0YXRlIDwgUmVjZWl2aW5nKSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKKyAgICBpZiAo
IWlzVmFsaWRUb2tlbihuYW1lKSkKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAgcmV0dXJuIG1f
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKG5hbWUpOwogfQogCkBAIC01NjksNyArNTgyLDcgQEAg
U3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBlKAogICAgIFN0cmluZyBtaW1l
VHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZU92ZXJyaWRlKTsK
ICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLmlz
SFRUUCgpKQotICAgICAgICAgICAgbWltZVR5cGUgPSBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CisgICAgICAgICAgICBtaW1l
VHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVy
RmllbGQoIkNvbnRlbnQtVHlwZSIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbWltZVR5
cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CShyZXZpc2lvbiAyNjY3OSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTgwLDggKzgwLDggQEAgcHVibGljOgogICAgIHZvaWQgYWJvcnQoKTsKICAg
ICB2b2lkIHNldFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBvdmVycmlkZU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgb3ZlcnJpZGUpOwotICAgIFN0cmluZyBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBj
b25zdDsKLSAgICBTdHJpbmcgZ2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdDsKKyAgICBTdHJpbmcgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKKyAgICBTdHJpbmcgZ2V0UmVzcG9uc2VIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgY29uc3QgS0pTOjpVU3RyaW5nJiBnZXRSZXNwb25z
ZVRleHQoKSBjb25zdDsKICAgICBEb2N1bWVudCogZ2V0UmVzcG9uc2VYTUwoKSBjb25zdDsKIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjY2NzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAwNy0xMC0xNiAgSnVsaWVuICA8anVsaWVuLmNo
YWZmcmFpeEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdCBhbmQgcmVzdWx0cyBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUzNTYgOiBnZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRB
bGxSZXF1ZXN0SGVhZGVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdl
dEFsbFJlcXVlc3RIZWFkZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVl
c3RIZWFkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0
SGVhZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtaW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC1pbnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbDogQWRkZWQuCisKIDIwMDct
MTAtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFkZWxlLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94
bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0QWxsUmVxdWVzdEhlYWRlcnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldEFsbFJlcXVl
c3RIZWFkZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9u
LWdldEFsbFJlcXVlc3RIZWFkZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3IEBACitUZXN0IHBhZ2UgZm9yIHRoZSBidWcgMTUzNTYgOiBnZXRSZXNwb25zZUhlYWRlciBh
bmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zCisKK1BBU1NF
RCAxCitQQVNTRUQgMgorUEFTU0VEIDMKK1BBU1NFRCA0CisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0
aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNl
cHRpb24tZ2V0QWxsUmVxdWVzdEhlYWRlcnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtSW52YWxpZFN0YXRl
RXhjZXB0aW9uLWdldEFsbFJlcXVlc3RIZWFkZXJzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjMgQEAKKzxodG1sPgorPGhlYWQ+CisJPHRpdGxlPkNoZWNrIGV4Y2VwdGlvbiB0aHJvd24g
YnkgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIDwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+
VGVzdCBwYWdlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUzNTYiPmJ1ZyAxNTM1NjwvYT4gOiBnZXRSZXNwb25zZUhlYWRlciBhbmQgZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zPC9wPgorCis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rp
b24gbG9nIChtc2cpIHsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1zZykpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciB4aHI7CisKK2lmICh3aW5kb3cuWE1M
SHR0cFJlcXVlc3QpIHsKKyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKK30gZWxzZSB7
CisgICAgdHJ5IHsKKyAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxI
VFRQIik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmpl
Y3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7CisgICAgfQorfQorCit4aHIub25yZWFkeXN0YXRlY2hh
bmdlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJTdGF0ZSA9IHRoaXMucmVhZHlTdGF0ZTsKKyAg
ICAvLyBXZSBleHBlY3QgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGZvciByZWFkeVN0
YXRlID0gMSBvciAyCisgICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVhZHlTdGF0ZSA9IDMg
b3IgNAorICAgIHRyeSB7CisgICAgICAgIHZhciBoZWFkZXIgPSB0aGlzLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpOworICAgICAgICBpZiAoclN0YXRlID09IDEgfHwgclN0YXRlID09IDIpIHsKKyAg
ICAgICAgICAgIGxvZygiRkFJTEVEICggaGVhZGVyIDoiICsgaGVhZGVyICsgIikiICsgclN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZygiUEFTU0VEICIgKyByU3RhdGUp
OworICAgICAgICB9CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoclN0YXRlID09IDEg
fHwgclN0YXRlID09IDIpIHsKKyAgICAgICAgICAgIGxvZygiUEFTU0VEICgiICsgZS5tZXNzYWdl
ICsiICkgIiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2coIkZB
SUxFRCAoRVhDRVBUSU9OIFRIUk9XTiAiICsgZS5tZXNzYWdlICsgIiApICIgKyByU3RhdGUpOwor
ICAgICAgICB9CisgICAgfQorfQorCisvLyBUZXN0IGZvciByZWFkeVN0YXRlID0gMAordHJ5IHsK
KyAgICB2YXIgaGVhZGVyID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpOworICAgIGxvZygi
RkFJTEVEICggaGVhZGVyIDoiICsgaGVhZGVyICsgIikiICsgeGhyLnJlYWR5U3RhdGUpOworfSBj
YXRjaCAoZSkgeworICAgIGxvZygiUEFTU0VEICgiICsgZS5tZXNzYWdlICsiICkgIiArIHhoci5y
ZWFkeVN0YXRlKTsKK30KKworeGhyLm9wZW4oIkdFVCIsInJlc291cmNlcy8xMjUxLmh0bWwiLCB0
cnVlKTsKK3hoci5zZW5kKG51bGwpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LUlu
dmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1
ZXN0LUludmFsaWRTdGF0ZUV4Y2VwdGlvbi1nZXRSZXF1ZXN0SGVhZGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1s
aHR0cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1Rlc3QgcGFnZSBmb3IgdGhlIGJ1
ZyAxNTM1NiA6IGdldFJlc3BvbnNlSGVhZGVyIGFuZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgZG8g
bm90IHRocm93IGV4Y2VwdGlvbnMKKworUEFTU0VEIDEKK1BBU1NFRCAyCitQQVNTRUQgMworUEFT
U0VEIDQKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxo
dHRwcmVxdWVzdC1JbnZhbGlkU3RhdGVFeGNlcHRpb24tZ2V0UmVxdWVzdEhlYWRlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXIuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtSW52YWxpZFN0YXRlRXhjZXB0aW9uLWdldFJlcXVlc3RIZWFkZXIuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2MyBAQAorPGh0bWw+Cis8aGVhZD4KKwk8dGl0bGU+Q2hlY2sg
ZXhjZXB0aW9uIHRocm93biBieSBnZXRSZXBvbnNlSGVhZGVyIDwvdGl0bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKworPHA+VGVzdCBwYWdlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTYiPmJ1ZyAxNTM1NjwvYT4gOiBnZXRSZXNwb25zZUhl
YWRlciBhbmQgZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIGRvIG5vdCB0aHJvdyBleGNlcHRpb25zPC9w
PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKworZnVuY3Rpb24gbG9nIChtc2cpIHsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisKK3ZhciB4aHI7CisKK2lm
ICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpIHsKKyAgICB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Qo
KTsKK30gZWxzZSB7CisgICAgdHJ5IHsKKyAgICAgICAgeGhyID0gbmV3IEFjdGl2ZVhPYmplY3Qo
Ik1zeG1sMi5YTUxIVFRQIik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgeGhyID0gbmV3
IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik7CisgICAgfQorfQorCit4aHIub25y
ZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHJTdGF0ZSA9IHRoaXMucmVh
ZHlTdGF0ZTsKKyAgICAvLyBXZSBleHBlY3QgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9u
IGZvciByZWFkeVN0YXRlID0gMSBvciAyCisgICAgLy8gYW5kIG5vIGV4Y2VwdGlvbiBmb3IgcmVh
ZHlTdGF0ZSA9IDMgb3IgNAorICAgIHRyeSB7CisgICAgICAgIHZhciBoZWFkZXIgPSB0aGlzLmdl
dFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKTsKKyAgICAgICAgaWYgKHJTdGF0ZSA9PSAx
IHx8IHJTdGF0ZSA9PSAyKSB7CisgICAgICAgICAgICBsb2coIkZBSUxFRCAoIGhlYWRlciA6IiAr
IGhlYWRlciArICIpIiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
b2coIlBBU1NFRCAiICsgclN0YXRlKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgaWYgKHJTdGF0ZSA9PSAxIHx8IHJTdGF0ZSA9PSAyKSB7CisgICAgICAgICAgICBsb2co
IlBBU1NFRCAoIiArIGUubWVzc2FnZSArIiApICIgKyByU3RhdGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbG9nKCJGQUlMRUQgKEVYQ0VQVElPTiBUSFJPV04gIiArIGUubWVzc2Fn
ZSArICIgKSAiICsgclN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVGVzdCBmb3Ig
cmVhZHlTdGF0ZSA9IDAKK3RyeSB7CisgICAgdmFyIGhlYWRlciA9IHhoci5nZXRSZXNwb25zZUhl
YWRlcigiQ29udGVudC1UeXBlIik7CisgICAgbG9nKCJGQUlMRUQgKCBoZWFkZXIgOiIgKyBoZWFk
ZXIgKyAiKSIgKyB4aHIucmVhZHlTdGF0ZSk7Cit9IGNhdGNoIChlKSB7CisgICAgbG9nKCJQQVNT
RUQgKCIgKyBlLm1lc3NhZ2UgKyIgKSAiICsgeGhyLnJlYWR5U3RhdGUpOworfQorCit4aHIub3Bl
bigiR0VUIiwicmVzb3VyY2VzLzEyNTEuaHRtbCIsIHRydWUpOworeGhyLnNlbmQobnVsbCk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtaW52YWxpZEhlYWRlci1nZXRSZXF1ZXN0SGVh
ZGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFkZXItZ2V0UmVxdWVzdEhlYWRl
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGVzdCBwYWdlIGZv
ciB0aGUgYnVnIDE1MzU2IDogZ2V0UmVzcG9uc2VIZWFkZXIgYW5kIGdldEFsbFJlc3BvbnNlSGVh
ZGVycyBkbyBub3QgdGhyb3cgZXhjZXB0aW9ucworCitQQVNTRUQgMworUEFTU0VEIDQKKwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1p
bnZhbGlkSGVhZGVyLWdldFJlcXVlc3RIZWFkZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LWludmFsaWRIZWFk
ZXItZ2V0UmVxdWVzdEhlYWRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC1pbnZhbGlkSGVhZGVyLWdldFJl
cXVlc3RIZWFkZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8
aGVhZD4KKwk8dGl0bGU+Q2hlY2sgYmVoYXZpb3VyIHdoZW4gcmVxdWVzdGlvbmcgYW4gaW52YWxp
ZCBoZWFkZXIgaW4gIGdldFJlcG9uc2VIZWFkZXIgPC90aXRsZT4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8cD5UZXN0IHBhZ2UgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTM1NiI+YnVnIDE1MzU2PC9hPiA6IGdldFJlc3BvbnNlSGVhZGVyIGFu
ZCBnZXRBbGxSZXNwb25zZUhlYWRlcnMgZG8gbm90IHRocm93IGV4Y2VwdGlvbnM8L3A+CisKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitm
dW5jdGlvbiBsb2cgKG1zZykgeworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKwordmFyIHhocjsKKworaWYgKHdpbmRv
dy5YTUxIdHRwUmVxdWVzdCkgeworICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworfSBl
bHNlIHsKKyAgICB0cnkgeworICAgICAgICB4aHIgPSBuZXcgQWN0aXZlWE9iamVjdCgiTXN4bWwy
LlhNTEhUVFAiKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICB4aHIgPSBuZXcgQWN0aXZl
WE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKTsKKyAgICB9Cit9CisKK3hoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgclN0YXRlID0gdGhpcy5yZWFkeVN0YXRl
OworICAgIGlmIChyU3RhdGUgPiAyKSB7CisgICAgICAgIC8vIFdlIGV4cGVjdCBhbiBlbXB0eSBz
dHJpbmcgb3IgbnVsbAorICAgICAgICB2YXIgaGVhZGVyID0gdGhpcy5nZXRSZXNwb25zZUhlYWRl
cigiKDw+QCkiKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSAiIikgeworICAgICAgICAgICAgbG9n
KCJQQVNTRUQgIiArIHJTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2co
IkZBSUxFRCAiICsgclN0YXRlKTsKKyAgICAgICAgfQorICAgIH0KK30KK3hoci5vcGVuKCJHRVQi
LCJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7Cit4aHIuc2VuZChudWxsKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="7053"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>