<?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>67254</bug_id>
          
          <creation_ts>2011-08-30 20:14:09 -0700</creation_ts>
          <short_desc>[Qt][DRT] Normalize file:///tmp/LayoutTests in LayoutTestController::pathToLocalResource()</short_desc>
          <delta_ts>2011-09-13 07:23:19 -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>Tools / Tests</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>LayoutTestFailure, Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67784</dependson>
          <blocked>67239</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jarred Nicholls">jarred</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>ade</cc>
    
    <cc>benjamin</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>459400</commentid>
    <comment_count>0</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-08-30 20:14:09 -0700</bug_when>
    <thetext>Qt DRT should translate file:///tmp/LayoutTests paths into a local URL that&apos;s derived from the path of the DRT application exec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459969</commentid>
    <comment_count>1</comment_count>
      <attachid>105837</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-08-31 15:03:33 -0700</bug_when>
    <thetext>Created attachment 105837
Proposed DRT Patch

The following tests are now passing in Qt&apos;s DumpRenderTree:

fast/dom/frame-loading-via-document-write.html
fast/loader/local-CSS-from-local.html
fast/loader/local-JavaScript-from-local.html
fast/loader/local-image-from-local.html

Some others in http/tests/misc and http/tests/security are also now passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459978</commentid>
    <comment_count>2</comment_count>
      <attachid>105837</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-31 15:17:40 -0700</bug_when>
    <thetext>Comment on attachment 105837
Proposed DRT Patch

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

Suggestion:
Create a temp variable for &quot;file:///tmp/LayoutTests/&quot;, and use it afterwards. Pseudo-ish code:
const Qstring localTmpUrl(QLatin1String(&quot;file:///tmp/LayoutTests/&quot;));
if (url.startsWith(localTmpUrl) {
    QFileInfo layoutTestsRoot(QCoreApplication::applicationDirPath() + &quot;/../../../LayoutTests/&quot;);
    if (layoutTestsRoot.exists())
        return url.right(localTmpUrl.length()) + layoutTestsRoot.absolutePath();
}

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:248
&gt; +        QString u(url);

not a fan of &quot;u&quot; for the variable name.

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:252
&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=67254

I would not add the bug number in this comment, it implies this bug report is about fixing the test on Windows due to the symlink issue.

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:708
&gt; +    QByteArray urlData = pathToLocalResource(url).toAscii();

.toAscii() is evil, you should use toUtf8() or toLatin1()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460097</commentid>
    <comment_count>3</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-08-31 17:10:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 105837 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105837&amp;action=review
&gt; 
&gt; Suggestion:
&gt; Create a temp variable for &quot;file:///tmp/LayoutTests/&quot;, and use it afterwards. Pseudo-ish code:
&gt; const Qstring localTmpUrl(QLatin1String(&quot;file:///tmp/LayoutTests/&quot;));
&gt; if (url.startsWith(localTmpUrl) {
&gt;     QFileInfo layoutTestsRoot(QCoreApplication::applicationDirPath() + &quot;/../../../LayoutTests/&quot;);
&gt;     if (layoutTestsRoot.exists())
&gt;         return url.right(localTmpUrl.length()) + layoutTestsRoot.absolutePath();
&gt; }

I&apos;ll do this and fix any tests that have four slashes e.g. file:////tmp/LayoutTests (that&apos;s the reason for indexOf)

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:248
&gt; &gt; +        QString u(url);
&gt; 
&gt; not a fan of &quot;u&quot; for the variable name.

Me neither, but I&apos;ll avoid a non-const string.

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:252
&gt; &gt; +        // https://bugs.webkit.org/show_bug.cgi?id=67254
&gt; 
&gt; I would not add the bug number in this comment, it implies this bug report is about fixing the test on Windows due to the symlink issue.

Good call

&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:708
&gt; &gt; +    QByteArray urlData = pathToLocalResource(url).toAscii();
&gt; 
&gt; .toAscii() is evil, you should use toUtf8() or toLatin1()

Agreed, wanted to keep consistent with what&apos;s there but definitely agree.  Shouldn&apos;t bother data: encoded URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460221</commentid>
    <comment_count>4</comment_count>
      <attachid>105896</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-08-31 22:30:55 -0700</bug_when>
    <thetext>Created attachment 105896
Proposed DRT Patch

Reviewer&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460362</commentid>
    <comment_count>5</comment_count>
      <attachid>105896</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-09-01 03:36:58 -0700</bug_when>
    <thetext>Comment on attachment 105896
Proposed DRT Patch

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

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:246
&gt;      // Function introduced in r28690.
&gt; -    return QDir::toNativeSeparators(url);
&gt; +

You can remove the comment and the empty line, the are not adding any value.

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:254
&gt; +        QFileInfo layoutTestsRoot(QCoreApplication::applicationDirPath() + &quot;/../../../LayoutTests/&quot;);

Should probably be + QLatin1String(&quot;/../../../LayoutTests/&quot;);

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:256
&gt; +            return url.left(7) + layoutTestsRoot.absolutePath() + url.mid(localTmpUrl.length());

url.left(7) -&gt; magic numbers are not nice.
You can just use QLatin1String(&quot;file://&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460363</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-09-01 03:39:09 -0700</bug_when>
    <thetext>The code looks good otherwise but I have no verified if the patch is the right solution :)

The win port implementation is quite different, and not specific to /tmp: http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp#L674</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460373</commentid>
    <comment_count>7</comment_count>
      <attachid>105939</attachid>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-01 04:21:40 -0700</bug_when>
    <thetext>Created attachment 105939
Proposed DRT Patch

QLatin1Strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460376</commentid>
    <comment_count>8</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-01 04:34:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The code looks good otherwise but I have no verified if the patch is the right solution :)
&gt; 
&gt; The win port implementation is quite different, and not specific to /tmp: http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp#L674

I&apos;ve read the win port&apos;s implementation, and obviously it&apos;s based on a Cygwin environment.  That&apos;s not good enough.  And that would still mean the NRWT would have to create a symlink into that environment, which it doesn&apos;t right now.

Dirk Pranke from Google and I are on the same page, that DRT/WTR should be smart and take care of remapping these URLs to a local URL that&apos;s derived by the running process&apos; location.  NRWT shouldn&apos;t have to know to create a symlink or be tied to a *nix environment in order to function properly.

Thus, this is what Chromium does.  See some of the relevant code parts here: http://pastie.org/pastes/2464106  The LayoutTests folder is derived by the running exec&apos;s location.

Changing the tests is also not good, because it will lower the integrity of the test; and have to be absolute URLs for the security tests where we&apos;re attempting to load local resources from a remote domain.

Let me know if you have a better idea :)  A better generic solution would be a configurable hash of remappable URL paths that DRT/WTR can work with, instead of this static solution - but this is a good stop gap I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461159</commentid>
    <comment_count>9</comment_count>
      <attachid>105939</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-09-02 04:47:43 -0700</bug_when>
    <thetext>Comment on attachment 105939
Proposed DRT Patch

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

I&apos;ve CC&apos;d Ossy who cares about this.

The change looks good to me except that you change the fallback behavior compared to the original approach.

&gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:257
&gt; +    return url;

I think this should be &quot;return QDir::toNativeSeparators(url);&quot; so that the fallback case matches the previous behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461164</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-02 04:53:54 -0700</bug_when>
    <thetext>I&apos;ll check it and verify today evening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461199</commentid>
    <comment_count>11</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-02 06:42:13 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 105939 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105939&amp;action=review
&gt; 
&gt; I&apos;ve CC&apos;d Ossy who cares about this.
&gt; 
&gt; The change looks good to me except that you change the fallback behavior compared to the original approach.
&gt; 
&gt; &gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:257
&gt; &gt; +    return url;
&gt; 
&gt; I think this should be &quot;return QDir::toNativeSeparators(url);&quot; so that the fallback case matches the previous behavior.

This change was in intentional.  What&apos;s provided to pathToLocalResource is always a URL for remapping if needed.  Turning all forward slashes into back slashes is unnecessary.  The function ought to be named &quot;urlToLocalResource&quot; or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461203</commentid>
    <comment_count>12</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-09-02 06:54:03 -0700</bug_when>
    <thetext>Ok, in this case the call is superfluous indeed. I think the change can go. But let&apos;s wait for Ossy&apos;s verification first.

(In reply to comment #11)
&gt; &gt; &gt; Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:257
&gt; &gt; &gt; +    return url;
&gt; &gt; 
&gt; &gt; I think this should be &quot;return QDir::toNativeSeparators(url);&quot; so that the fallback case matches the previous behavior.
&gt; 
&gt; This change was in intentional.  What&apos;s provided to pathToLocalResource is always a URL for remapping if needed.  Turning all forward slashes into back slashes is unnecessary.  The function ought to be named &quot;urlToLocalResource&quot; or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461699</commentid>
    <comment_count>13</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-02 19:18:36 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Ok, in this case the call is superfluous indeed. I think the change can go. But let&apos;s wait for Ossy&apos;s verification first.

K, sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463339</commentid>
    <comment_count>14</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-07 07:36:56 -0700</bug_when>
    <thetext>Ossy did you get a few moments to verify? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463344</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-07 07:44:53 -0700</bug_when>
    <thetext>Oooops, I forgot it. I&apos;ll check it immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463345</commentid>
    <comment_count>16</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-07 07:46:01 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Oooops, I forgot it. I&apos;ll check it immediately.

No worries!  Just checking in :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463401</commentid>
    <comment_count>17</comment_count>
      <attachid>105939</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-07 09:59:55 -0700</bug_when>
    <thetext>Comment on attachment 105939
Proposed DRT Patch

LGTM, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463403</commentid>
    <comment_count>18</comment_count>
      <attachid>105939</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-07 10:03:24 -0700</bug_when>
    <thetext>Comment on attachment 105939
Proposed DRT Patch

Clearing flags on attachment: 105939

Committed r94676: &lt;http://trac.webkit.org/changeset/94676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463404</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-07 10:03:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464084</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-08 09:08:17 -0700</bug_when>
    <thetext>Reopen, because fast/dom/frame-loading-via-document-write.html still fails. Could you check it, please? (Unfortunately I didn&apos;t realized it before, because I had /tmp/LayoutTests symlink)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464095</commentid>
    <comment_count>21</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-08 09:28:39 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Reopen, because fast/dom/frame-loading-via-document-write.html still fails. Could you check it, please? (Unfortunately I didn&apos;t realized it before, because I had /tmp/LayoutTests symlink)

Indeed, see bug #67784.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465367</commentid>
    <comment_count>22</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-10 18:20:09 -0700</bug_when>
    <thetext>Ossy, is this good to close this again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466176</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-09-13 00:52:01 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Ossy, is this good to close this again?

Yes, I checked it and it works. What do you think if we disable creating /tmp/LayoutTests symlink in ORWT for Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466254</commentid>
    <comment_count>24</comment_count>
    <who name="Ademar (unprivileged account)">ade</who>
    <bug_when>2011-09-13 06:11:35 -0700</bug_when>
    <thetext>Revision r94676 cherry-picked into qtwebkit-2.2 with commit 4f9120c &lt;http://gitorious.org/webkit/qtwebkit/commit/4f9120c&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466283</commentid>
    <comment_count>25</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-13 07:23:19 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Ossy, is this good to close this again?
&gt; 
&gt; Yes, I checked it and it works. What do you think if we disable creating /tmp/LayoutTests symlink in ORWT for Qt port.

Eventually yes; in fact all ports will be able to do it together.  But I don&apos;t think we should do that until WebKitTestRunner also has a similar enhancement in its own pathToLocalResource.  IIRC ORWT will use WKTR for testing WK2 (how many acronyms can you fit into a sentence?).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105837</attachid>
            <date>2011-08-31 15:03:33 -0700</date>
            <delta_ts>2011-08-31 22:30:55 -0700</delta_ts>
            <desc>Proposed DRT Patch</desc>
            <filename>67254.patch</filename>
            <type>text/plain</type>
            <size>3055</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MDAx
MThmLi4xMWY5NjU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMzEgIEphcnJlZCBOaWNob2xscyAgPGph
cnJlZEBzZW5jaGEuY29tPgorCisgICAgICAgIFtRdF1bRFJUXSBOb3JtYWxpemUgZmlsZTovLy90
bXAvTGF5b3V0VGVzdHMgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3Vy
Y2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njcy
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2xhdGUgZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvKiB1cmxzIGludG8gdGhlIHJlcG9zaXRvcnkg
TGF5b3V0VGVzdHMgZGlyZWN0b3J5LCB3aGljaCBpcworICAgICAgICBkZXJpdmVkIGZyb20gdGhl
IHJ1bm5pbmcgbG9jYXRpb24gb2YgRHVtcFJlbmRlclRyZWUgYmluYXJ5LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6IHBhc3MgdGhlIHVy
bCB0aHJvdWdoIHBhdGhUb0xvY2FsUmVzb3VyY2UKKwogMjAxMS0wOC0zMSAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHF1ZXVlcy53ZWJraXQub3JnL2FjdGl2
ZS1ib3RzIHBhZ2UgdG8gbWFrZSBpdCBlYXN5IHRvIHNlZSB3aGljaCBib3RzIGFyZSBkb3duCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CmluZGV4IGY0NjE1YWIuLjQ1NzRkZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtRdWV1ZUl0ZW1RdC5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURpcj4KICNpbmNsdWRlIDxRTG9jYWxlPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgpA
QCAtMjQyLDcgKzI0MywyNCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tG
b3J3YXJkTGlzdCgpCiBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJl
c291cmNlKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKICAgICAvLyBGdW5jdGlvbiBpbnRyb2R1Y2Vk
IGluIHIyODY5MC4KLSAgICByZXR1cm4gUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKHVybCk7CisK
KyAgICBpZiAodXJsLnN0YXJ0c1dpdGgoImZpbGU6IikpIHsKKyAgICAgICAgUVN0cmluZyB1KHVy
bCk7CisKKyAgICAgICAgLy8gVHJhbnNsYXRlIGEgcmVxdWVzdCBmb3IgL3RtcC9MYXlvdXRUZXN0
cyB0byB0aGUgcmVwb3NpdG9yeSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuCisgICAgICAgIC8vIERv
IG5vdCByZWx5IG9uIGEgc3ltbGluayB0byBiZSBjcmVhdGVkIHZpYSB0aGUgdGVzdCBydW5uZXIs
IHdoaWNoIHdpbGwgbm90IHdvcmsgb24gV2luZG93cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MjU0CisgICAgICAgIGludCBpbmRleCA9IHUu
aW5kZXhPZigiL3RtcC9MYXlvdXRUZXN0cyIpOworICAgICAgICBpZiAoaW5kZXggPj0gMCkgewor
ICAgICAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUgbGl2ZXMgaW4gV2ViS2l0L1dlYktpdEJ1aWxk
LzxidWlsZF9tb2RlPi9iaW4uCisgICAgICAgICAgICAvLyBUcmFuc2xhdGUgZnJvbSBXZWJLaXQv
V2ViS2l0QnVpbGQvUmVsZWFzZS9iaW4gPT4gV2ViS2l0L0xheW91dFRlc3RzLgorICAgICAgICAg
ICAgUUZpbGVJbmZvIGxheW91dFRlc3RzUm9vdChRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlv
bkRpclBhdGgoKSArICIvLi4vLi4vLi4vTGF5b3V0VGVzdHMvIik7CisgICAgICAgICAgICBpZiAo
bGF5b3V0VGVzdHNSb290LmV4aXN0cygpKQorICAgICAgICAgICAgICAgIHJldHVybiB1LnJlcGxh
Y2UoaW5kZXgsIDE2LCBsYXlvdXRUZXN0c1Jvb3QuYWJzb2x1dGVQYXRoKCkpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHVybDsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgZGV2aWNlRFBJLCBpbnQgZGV2aWNl
V2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJs
ZUhlaWdodCkKQEAgLTY4Nyw3ICs3MDUsOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpv
dmVycmlkZVByZWZlcmVuY2UoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVZhcmlhbgogCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IFFTdHJpbmcmIHVybCkKIHsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBRVXJsOjpm
cm9tRW5jb2RlZCh1cmwudG9Bc2NpaSgpLCBRVXJsOjpTdHJpY3RNb2RlKTsKKyAgICBRQnl0ZUFy
cmF5IHVybERhdGEgPSBwYXRoVG9Mb2NhbFJlc291cmNlKHVybCkudG9Bc2NpaSgpOworICAgIG1f
dXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFFVcmw6OmZyb21FbmNvZGVkKHVybERhdGEsIFFVcmw6
OlN0cmljdE1vZGUpOwogCiAgICAgaWYgKG1fdXNlclN0eWxlU2hlZXRFbmFibGVkKQogICAgICAg
ICBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQodHJ1ZSk7Cg==
</data>
<flag name="review"
          id="102101"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105896</attachid>
            <date>2011-08-31 22:30:55 -0700</date>
            <delta_ts>2011-09-01 04:21:40 -0700</delta_ts>
            <desc>Proposed DRT Patch</desc>
            <filename>67254.patch</filename>
            <type>text/plain</type>
            <size>2951</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MDAx
MThmLi4xMWY5NjU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMzEgIEphcnJlZCBOaWNob2xscyAgPGph
cnJlZEBzZW5jaGEuY29tPgorCisgICAgICAgIFtRdF1bRFJUXSBOb3JtYWxpemUgZmlsZTovLy90
bXAvTGF5b3V0VGVzdHMgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3Vy
Y2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njcy
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2xhdGUgZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvKiB1cmxzIGludG8gdGhlIHJlcG9zaXRvcnkg
TGF5b3V0VGVzdHMgZGlyZWN0b3J5LCB3aGljaCBpcworICAgICAgICBkZXJpdmVkIGZyb20gdGhl
IHJ1bm5pbmcgbG9jYXRpb24gb2YgRHVtcFJlbmRlclRyZWUgYmluYXJ5LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6IHBhc3MgdGhlIHVy
bCB0aHJvdWdoIHBhdGhUb0xvY2FsUmVzb3VyY2UKKwogMjAxMS0wOC0zMSAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHF1ZXVlcy53ZWJraXQub3JnL2FjdGl2
ZS1ib3RzIHBhZ2UgdG8gbWFrZSBpdCBlYXN5IHRvIHNlZSB3aGljaCBib3RzIGFyZSBkb3duCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CmluZGV4IGY0NjE1YWIuLjViNjBmNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtRdWV1ZUl0ZW1RdC5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURpcj4KICNpbmNsdWRlIDxRTG9jYWxlPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgpA
QCAtMjQyLDcgKzI0MywyMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tG
b3J3YXJkTGlzdCgpCiBRU3RyaW5nIExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJl
c291cmNlKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKICAgICAvLyBGdW5jdGlvbiBpbnRyb2R1Y2Vk
IGluIHIyODY5MC4KLSAgICByZXR1cm4gUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKHVybCk7CisK
KyAgICBRU3RyaW5nIGxvY2FsVG1wVXJsKFFMYXRpbjFTdHJpbmcoImZpbGU6Ly8vdG1wL0xheW91
dFRlc3RzIikpOworCisgICAgLy8gVHJhbnNsYXRlIGEgcmVxdWVzdCBmb3IgL3RtcC9MYXlvdXRU
ZXN0cyB0byB0aGUgcmVwb3NpdG9yeSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuCisgICAgLy8gRG8g
bm90IHJlbHkgb24gYSBzeW1saW5rIHRvIGJlIGNyZWF0ZWQgdmlhIHRoZSB0ZXN0IHJ1bm5lciwg
d2hpY2ggd2lsbCBub3Qgd29yayBvbiBXaW5kb3dzLgorICAgIGlmICh1cmwuc3RhcnRzV2l0aChs
b2NhbFRtcFVybCkpIHsKKyAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUgbGl2ZXMgaW4gV2ViS2l0
L1dlYktpdEJ1aWxkLzxidWlsZF9tb2RlPi9iaW4uCisgICAgICAgIC8vIFRyYW5zbGF0ZSBmcm9t
IFdlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL2JpbiA9PiBXZWJLaXQvTGF5b3V0VGVzdHMuCisg
ICAgICAgIFFGaWxlSW5mbyBsYXlvdXRUZXN0c1Jvb3QoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGlj
YXRpb25EaXJQYXRoKCkgKyAiLy4uLy4uLy4uL0xheW91dFRlc3RzLyIpOworICAgICAgICBpZiAo
bGF5b3V0VGVzdHNSb290LmV4aXN0cygpKQorICAgICAgICAgICAgcmV0dXJuIHVybC5sZWZ0KDcp
ICsgbGF5b3V0VGVzdHNSb290LmFic29sdXRlUGF0aCgpICsgdXJsLm1pZChsb2NhbFRtcFVybC5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHVybDsKIH0KIAogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydChpbnQgZGV2aWNlRFBJLCBp
bnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50
IGF2YWlsYWJsZUhlaWdodCkKQEAgLTY4Nyw3ICs3MDEsOCBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgUVN0cmluZyYgbmFtZSwgY29uc3QgUVZh
cmlhbgogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24g
PSBRVXJsOjpmcm9tRW5jb2RlZCh1cmwudG9Bc2NpaSgpLCBRVXJsOjpTdHJpY3RNb2RlKTsKKyAg
ICBRQnl0ZUFycmF5IHVybERhdGEgPSBwYXRoVG9Mb2NhbFJlc291cmNlKHVybCkudG9MYXRpbjEo
KTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBRVXJsOjpmcm9tRW5jb2RlZCh1cmxE
YXRhLCBRVXJsOjpTdHJpY3RNb2RlKTsKIAogICAgIGlmIChtX3VzZXJTdHlsZVNoZWV0RW5hYmxl
ZCkKICAgICAgICAgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKHRydWUpOwo=
</data>
<flag name="review"
          id="102184"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105939</attachid>
            <date>2011-09-01 04:21:40 -0700</date>
            <delta_ts>2011-09-07 10:03:24 -0700</delta_ts>
            <desc>Proposed DRT Patch</desc>
            <filename>67254.patch</filename>
            <type>text/plain</type>
            <size>2979</size>
            <attacher name="Jarred Nicholls">jarred</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MDAx
MThmLi4xMWY5NjU4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDgtMzEgIEphcnJlZCBOaWNob2xscyAgPGph
cnJlZEBzZW5jaGEuY29tPgorCisgICAgICAgIFtRdF1bRFJUXSBOb3JtYWxpemUgZmlsZTovLy90
bXAvTGF5b3V0VGVzdHMgaW4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3Vy
Y2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njcy
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFu
c2xhdGUgZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvKiB1cmxzIGludG8gdGhlIHJlcG9zaXRvcnkg
TGF5b3V0VGVzdHMgZGlyZWN0b3J5LCB3aGljaCBpcworICAgICAgICBkZXJpdmVkIGZyb20gdGhl
IHJ1bm5pbmcgbG9jYXRpb24gb2YgRHVtcFJlbmRlclRyZWUgYmluYXJ5LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6IHBhc3MgdGhlIHVy
bCB0aHJvdWdoIHBhdGhUb0xvY2FsUmVzb3VyY2UKKwogMjAxMS0wOC0zMSAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHF1ZXVlcy53ZWJraXQub3JnL2FjdGl2
ZS1ib3RzIHBhZ2UgdG8gbWFrZSBpdCBlYXN5IHRvIHNlZSB3aGljaCBib3RzIGFyZSBkb3duCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3Bw
CmluZGV4IGY0NjE1YWIuLmFmMzlhNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRHVtcFJlbmRlclRyZWVRdC5oIgogI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgogI2luY2x1ZGUg
IldvcmtRdWV1ZUl0ZW1RdC5oIgorI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UURpcj4KICNpbmNsdWRlIDxRTG9jYWxlPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5ncy5oPgpA
QCAtMjQxLDggKzI0MiwxOSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpjbGVhckJhY2tG
b3J3YXJkTGlzdCgpCiAKIFFTdHJpbmcgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2Fs
UmVzb3VyY2UoY29uc3QgUVN0cmluZyYgdXJsKQogewotICAgIC8vIEZ1bmN0aW9uIGludHJvZHVj
ZWQgaW4gcjI4NjkwLgotICAgIHJldHVybiBRRGlyOjp0b05hdGl2ZVNlcGFyYXRvcnModXJsKTsK
KyAgICBRU3RyaW5nIGxvY2FsVG1wVXJsKFFMYXRpbjFTdHJpbmcoImZpbGU6Ly8vdG1wL0xheW91
dFRlc3RzIikpOworCisgICAgLy8gVHJhbnNsYXRlIGEgcmVxdWVzdCBmb3IgL3RtcC9MYXlvdXRU
ZXN0cyB0byB0aGUgcmVwb3NpdG9yeSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkuCisgICAgLy8gRG8g
bm90IHJlbHkgb24gYSBzeW1saW5rIHRvIGJlIGNyZWF0ZWQgdmlhIHRoZSB0ZXN0IHJ1bm5lciwg
d2hpY2ggd2lsbCBub3Qgd29yayBvbiBXaW5kb3dzLgorICAgIGlmICh1cmwuc3RhcnRzV2l0aChs
b2NhbFRtcFVybCkpIHsKKyAgICAgICAgLy8gRHVtcFJlbmRlclRyZWUgbGl2ZXMgaW4gV2ViS2l0
L1dlYktpdEJ1aWxkLzxidWlsZF9tb2RlPi9iaW4uCisgICAgICAgIC8vIFRyYW5zbGF0ZSBmcm9t
IFdlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL2JpbiA9PiBXZWJLaXQvTGF5b3V0VGVzdHMuCisg
ICAgICAgIFFGaWxlSW5mbyBsYXlvdXRUZXN0c1Jvb3QoUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGlj
YXRpb25EaXJQYXRoKCkgKyBRTGF0aW4xU3RyaW5nKCIvLi4vLi4vLi4vTGF5b3V0VGVzdHMvIikp
OworICAgICAgICBpZiAobGF5b3V0VGVzdHNSb290LmV4aXN0cygpKQorICAgICAgICAgICAgcmV0
dXJuIFFMYXRpbjFTdHJpbmcoImZpbGU6Ly8iKSArIGxheW91dFRlc3RzUm9vdC5hYnNvbHV0ZVBh
dGgoKSArIHVybC5taWQobG9jYWxUbXBVcmwubGVuZ3RoKCkpOworICAgIH0KKworICAgIHJldHVy
biB1cmw7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBDb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQoaW50IGRldmljZURQSSwgaW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVp
Z2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWlnaHQpCkBAIC02ODcsNyAr
Njk5LDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNv
bnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJpYW4KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBRU3RyaW5nJiB1cmwpCiB7Ci0g
ICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gUVVybDo6ZnJvbUVuY29kZWQodXJsLnRvQXNj
aWkoKSwgUVVybDo6U3RyaWN0TW9kZSk7CisgICAgUUJ5dGVBcnJheSB1cmxEYXRhID0gcGF0aFRv
TG9jYWxSZXNvdXJjZSh1cmwpLnRvTGF0aW4xKCk7CisgICAgbV91c2VyU3R5bGVTaGVldExvY2F0
aW9uID0gUVVybDo6ZnJvbUVuY29kZWQodXJsRGF0YSwgUVVybDo6U3RyaWN0TW9kZSk7CiAKICAg
ICBpZiAobV91c2VyU3R5bGVTaGVldEVuYWJsZWQpCiAgICAgICAgIHNldFVzZXJTdHlsZVNoZWV0
RW5hYmxlZCh0cnVlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>