<?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>53705</bug_id>
          
          <creation_ts>2011-02-03 12:28:36 -0800</creation_ts>
          <short_desc>Viewport parsing no longer accepts &quot;1.0;&quot; value as valid.</short_desc>
          <delta_ts>2011-03-25 23:22:41 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>53707</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dacarson</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>joone.hur</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>klobag</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>mtutunik</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344918</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 12:28:36 -0800</bug_when>
    <thetext>The new ViewportArguments implementation looks nice and clean, but it has a few changes
which would cause compatibility problems.

The new implementation landed in r67376:
http://trac.webkit.org/changeset/67376

It follows the &quot;css-viewport&quot; spec:
http://people.opera.com/rune/TR/css-viewport/#parsing-algorithm

I think it incorrectly follows the parsing algorithm for numeric values:

&gt;     If a prefix of property-value can be converted to a number using strtod,
&gt;     the value will be that number. The remainder of the string is ignored.

In the case where the value is &quot;1.0;&quot; String::toFloat will return 1.0, but will indicate
an error. The old code would have used &quot;1.0&quot;, but the new code ignores the fact
that a valid prefix was given, reports an error, and returns 0.0.

This affects sites like Wikipedia, which incorrectly use &quot;;&quot; as separators in their
viewport meta tag (they should use commas). Example of the current Wikipedia
meta tag is:

&gt; &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344942</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-03 12:53:56 -0800</bug_when>
    <thetext>I had a patch for this which was rejected. If you search bugzilla you can probably find it, it is similar to what is in Android.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344947</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 13:00:36 -0800</bug_when>
    <thetext>Thanks for following up Kenneth.

Correct me if I am wrong, but I believe Android&apos;s solution was to allow &apos;;&apos; as a
separator. That is not what this is asking.

This is asking that we allow a value such as &quot;1.0x&quot; to return &quot;1.0&quot; and not &quot;0.0&quot;. This
looks to be what the old algorithm did, ignoring any String::toFloat error condition,
and just using the parsed float returned from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344950</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 13:06:54 -0800</bug_when>
    <thetext>My suggestion would be to change:

    bool ok;
    float value = valueString.toFloat(&amp;ok);
    if (!ok) {
        reportViewportWarning(document, UnrecognizedViewportArgumentError, keyString);
        return float(0.0);
    }


To something like:

    bool ok;
    float value = valueString.toFloat(&amp;ok);
    if (!ok) {

        // Completely non-numeric. Warn and return.
        if (!isNumeric(valueString[0]) || (valueString[0] == &apos;-&apos; &amp;&amp; !isNumeric(valueString[1])) {
            reportViewportWarning =&gt; unrecognized value
            return float(0.0);
        }

        // Warn about a semi-numeric value.
        reportViewportWarning =&gt; truncated value
    }

Would you agree with those changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344977</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 13:52:21 -0800</bug_when>
    <thetext>isNumeric would probably be isASCIIDigit from wtf/ASCIICType.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345047</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-03 15:14:29 -0800</bug_when>
    <thetext>I think that we might need to handle ; separately as many pages are using that as separators, and Android has a patch making it work as a separator. Even facebook uses this.

With your change, how will the following be handled?

&quot;width=320;height=480&quot; 

I guess it would ignore the height.

Apart from my above comments, I agree with your changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345069</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 15:39:54 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think that we might need to handle ; separately as many pages are using that
&gt; as separators, and Android has a patch making it work as a separator. Even
&gt; facebook uses this.

I think you are referring to:
&lt;http://webkit.org/b/47607&gt; meta tag parser needs to support ; as separator due to Android having made that popular

In that bug, the verdict was that Android had removed the semicolon as a separator,
despite sites like Facebook using it:
https://bugs.webkit.org/show_bug.cgi?id=47607#c6

A google search does show that Fennec made the following claim:
https://developer.mozilla.org/en/Mobile/Viewport_meta_tag#Background

&gt;&gt;    Mobile Safari introduced the &quot;viewport meta tag&quot; to let web developers control
&gt;&gt;    the viewport&apos;s size and scale. Many other mobile browsers now support this tag,
&gt;&gt;    although it is not part of any web standard. Apple&apos;s documentation does a good
&gt;&gt;    job explaining how web developers can use this tag, but we had to do some
&gt;&gt;    detective work to figure out exactly how to implement it in Fennec. For example,
&gt;&gt;    Safari&apos;s documentation says the content is a &quot;comma-delimited list,&quot; but existing
&gt;&gt;    browsers and web pages use any mix of commas, semicolons, and spaces as
&gt;&gt;    separators.

If Fennec does support semicolons, then maybe others should follow suit.

All the other descriptions I&apos;ve found specify comma-separated:
http://docs.blackberry.com/en/developers/deliverables/6176/HTML_ref_meta_564143_11.jsp
http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html



&gt; With your change, how will the following be handled?
&gt; 
&gt; &quot;width=320;height=480&quot; 
&gt; 
&gt; I guess it would ignore the height.

Correct.


&gt; Apart from my above comments, I agree with your changes.

Excellent! I&apos;m including Grace to see if she can verify that Android did in fact
remove the semicolon as a separator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345070</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 15:40:40 -0800</bug_when>
    <thetext>Anyone know a Fennec developer that could comment on this bug? Or where
to open a bug on them to get some clarification on their approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345076</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-03 15:47:46 -0800</bug_when>
    <thetext>@Christian, do you know anyone from Mozilla that we can contact about the above?

I personally do not see any issue in supporting &quot;;&quot; as separator and we are currently supporting it in our internal branches as many pages were broken without this support. Unless there are good reasons against supporting it, this will probably end up in actual products. So any pros/cons/comments are very welcome :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345087</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 16:00:04 -0800</bug_when>
    <thetext>Adding Alexey since he had some questions on the previous bug that was closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345131</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-03 16:34:57 -0800</bug_when>
    <thetext>Oh, and the Viewport meta content parsing algorithm in the css-viewport
spec mentions separating characters, with &quot;;&quot; not being one of them:
http://people.opera.com/rune/TR/css-viewport/#parsing-algorithm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345134</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-02-03 16:35:45 -0800</bug_when>
    <thetext>It seems fine to disregard trailing junk in the name of future compatibility. Giving equal meaning to commas and semicolons seems weird, I don&apos;t think there&apos;s precedent to that.

For a different but somewhat similar example, consider HTTP Accept-Language header, and HTTP in general, where comma is a list separator, and semicolon adds parameters: &quot;Accept-Language: da, en-gb;q=0.8, en;q=0.7&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348423</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-09 11:49:30 -0800</bug_when>
    <thetext>Android removed semicolon:
http://android.git.kernel.org/?p=platform/external/webkit.git;a=commit;h=3c81bbf75a3efd5f5ac8c7696a0c23c47ce15aa0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348856</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-10 00:38:41 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Android removed semicolon:
&gt; http://android.git.kernel.org/?p=platform/external/webkit.git;a=commit;h=3c81bbf75a3efd5f5ac8c7696a0c23c47ce15aa0

How are they parsing something like &quot;width=100;height=100&quot; then? as width = 100?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349297</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-10 12:56:39 -0800</bug_when>
    <thetext>&gt; How are they parsing something like &quot;width=100;height=100&quot; then? as width = 100?

That would be my guess. I don&apos;t have an Android device to test that on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352539</commentid>
    <comment_count>15</comment_count>
      <attachid>82738</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-16 19:20:22 -0800</bug_when>
    <thetext>Created attachment 82738
[PATCH] Proposed Fix

This implements the fix, as well as improves the console error/warning messages
around this situation. I don&apos;t have a Qt/Efl/Gtk machine to run the test, but I
suspect this may slightly change the results of some tests. I also specifically
added a test for this case. I&apos;d hate to just land this and check the watch the bot
for changes. Anyone care to run this on their port? The mac port skips
fast/viewport tests.

Also, see the following for even better warning/error messages: (requires this patch)
&lt;http://webkit.org/b/53707&gt; Viewport Warning/Error Messages Are Now Inaccurate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352540</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-16 19:23:50 -0800</bug_when>
    <thetext>Attachment 82738 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/dom/ViewportArguments.h:106:  The parameter name &quot;errorCode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352651</commentid>
    <comment_count>17</comment_count>
      <attachid>82738</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-17 00:46:14 -0800</bug_when>
    <thetext>Comment on attachment 82738
[PATCH] Proposed Fix

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

&gt; LayoutTests/ChangeLog:17
&gt; +        FIXME: OTHER TESTS WOULD BE AFFECTED.
&gt; +        fast/viewport/viewport-65.html and potentially others.
&gt; +        ------

Notice that the Qt port already skips a few of the tests.

&gt; Source/WebCore/dom/ViewportArguments.cpp:182
&gt; +static float numericPrefix(const String&amp; keyString, const String&amp; valueString, Document* document, bool* ok)

The valueString and the ok are related to the actual parsing here, where as the keyString and the document are used for error reporting.

What about:

numericPrefix(const String&amp; valueString, bool* ok, ViewportErrorCode* error)

We could then even add a NoError to the ViewportErrorCode if we wanted.

&gt; Source/WebCore/dom/ViewportArguments.cpp:192
&gt; +        if (!isASCIIDigit(firstChar) || (firstChar == &apos;-&apos; &amp;&amp; !isASCIIDigit(valueString[1]))) {

What if there is only the firstChar as - and no second one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353004</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-17 10:25:03 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 82738 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82738&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:17
&gt; &gt; +        FIXME: OTHER TESTS WOULD BE AFFECTED.
&gt; &gt; +        fast/viewport/viewport-65.html and potentially others.
&gt; &gt; +        ------
&gt; 
&gt; Notice that the Qt port already skips a few of the tests.

Good point, I forgot to check that.


&gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:182
&gt; &gt; +static float numericPrefix(const String&amp; keyString, const String&amp; valueString, Document* document, bool* ok)
&gt; 
&gt; The valueString and the ok are related to the actual parsing here, where as the keyString and the document are used for error reporting.
&gt; 
&gt; What about:
&gt; 
&gt; numericPrefix(const String&amp; valueString, bool* ok, ViewportErrorCode* error)
&gt; 
&gt; We could then even add a NoError to the ViewportErrorCode if we wanted.

I see. I would prefer to perform the error reporting in this function, otherwise each of the call sites would need to handle the error code and report the error.

Also because its possible that multiple errors/tips can be reported. The truncation
tip is really just that, a tip, that is not exclusive of other errors/tips. An example
of multiple tips is the truncation tip, which produces a valid value, and the
&quot;use keyword&quot; tip.

  &lt;meta name=&quot;viewport&quot; content=&quot;width=320;&quot;&gt;
    =&gt; TIP: &quot;320;&quot; was truncated to numeric prefix
    =&gt; TIP: width set to a constant equal to the physical device width, try the &quot;device-width&quot; keyword.

&gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:192
&gt; &gt; +        if (!isASCIIDigit(firstChar) || (firstChar == &apos;-&apos; &amp;&amp; !isASCIIDigit(valueString[1]))) {
&gt; 
&gt; What if there is only the firstChar as - and no second one?

Arg, excellent point. I get lucky here its handled in WTFString which returns 0:

    UChar operator[](unsigned index) const
    {
        if (!m_impl || index &gt;= m_impl-&gt;length())
            return 0;
        return m_impl-&gt;characters()[index];
    }

And isASCIIDigit(&apos;\0&apos;) is false, since it checks the &apos;0&apos;..&apos;9&apos; range. But still, this
feels &quot;lucky&quot;. Would you prefer I explicitly add some bounds checking? I&apos;ve
almost convinced myself I should =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353465</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-18 00:45:53 -0800</bug_when>
    <thetext>I understand that you want to do the warning inside 

&gt; +static float numericPrefix(const String&amp; keyString, const String&amp; valueString, Document* document, bool* ok)

But then maybe we should rename it and move the arguments around.

valueString and the ok are related to the actual parsing, and keyString and document are related to the warning.

Hmm, maybe this is just nitpicking, it is fine how it is. It is very localized code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353683</commentid>
    <comment_count>20</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-18 11:01:45 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; +static float numericPrefix(const String&amp; keyString, const String&amp; valueString, Document* document, bool* ok)
&gt; 
&gt; But then maybe we should rename it and move the arguments around.
&gt; 
&gt; valueString and the ok are related to the actual parsing, and keyString and document are related to the warning.
&gt; 
&gt; Hmm, maybe this is just nitpicking, it is fine how it is. It is very localized code.

Yah, that also crossed my mind. I ordered the arguments the same as all the
other static methods in the file thinking it was better to be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354861</commentid>
    <comment_count>21</comment_count>
      <attachid>83228</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-21 15:51:37 -0800</bug_when>
    <thetext>Created attachment 83228
[PATCH] Explicitly Handle String Bounds Checking

- Addressed style comments.
- Addressed Kenneth Rohde Christiansen&apos;s String length comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355036</commentid>
    <comment_count>22</comment_count>
      <attachid>83228</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-21 21:41:39 -0800</bug_when>
    <thetext>Comment on attachment 83228
[PATCH] Explicitly Handle String Bounds Checking

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

r=me, but consider removing the unused default statement, and making toFloat() accept an &quot;ignore trailing garbage&quot; flag (if that&apos;s even possible or easily done).

&gt; Source/WebCore/dom/ViewportArguments.cpp:192
&gt; +        if (!length || !isASCIIDigit(valueString[0]) || (length &gt; 1 &amp;&amp; valueString[0] == &apos;-&apos; &amp;&amp; !isASCIIDigit(valueString[1]))) {

Should we allow a unary &quot;+&quot; operator as well?

What about a decimal number without a leading zero?  &quot;.5&quot;?  Or &quot;+.5&quot;?  Let&apos;s not go crazy here, but I want you to consider all possibilities.

It&apos;s too bad the toFloat() method doesn&apos;t have a flag to say &quot;ignore trailing garbage&quot;.  That way, if you sent &quot;pure&quot; garbage to it, you&apos;d still end up with a value of &quot;0.0f&quot; (which is what you want in this case; or NaN which you could convert to 0.0f here), otherwise the method tries its best to convert whatever numeric string is passed to it (ignoring trailing garbage).  Then you don&apos;t have to reparse the string locally to guess if it started with something numeric.

Otherwise, I think it would be cleaner if this code was pulled out into a static inline method with a descriptive name.  It&apos;s a bit hard to read on one line.

&gt; Source/WebCore/dom/ViewportArguments.cpp:365
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return ErrorMessageLevel;

If the switch statement has case statements for every ViewportErrorCode enum, then you don&apos;t need a &quot;default&quot; case because a missing enum will cause a compiler warning (and thus an error with -Werror set).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355462</commentid>
    <comment_count>23</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-22 12:00:20 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 83228 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=83228&amp;action=review
&gt; 
&gt; r=me, but consider removing the unused default statement, and making toFloat() accept an &quot;ignore trailing garbage&quot; flag (if that&apos;s even possible or easily done).
&gt; 
&gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:192
&gt; &gt; +        if (!length || !isASCIIDigit(valueString[0]) || (length &gt; 1 &amp;&amp; valueString[0] == &apos;-&apos; &amp;&amp; !isASCIIDigit(valueString[1]))) {
&gt; 
&gt; Should we allow a unary &quot;+&quot; operator as well?
&gt; 
&gt; What about a decimal number without a leading zero?  &quot;.5&quot;?  Or &quot;+.5&quot;?  Let&apos;s not go crazy here, but I want you to consider all possibilities.
&gt; 
&gt; It&apos;s too bad the toFloat() method doesn&apos;t have a flag to say &quot;ignore trailing garbage&quot;.  That way, if you sent &quot;pure&quot; garbage to it, you&apos;d still end up with a value of &quot;0.0f&quot; (which is what you want in this case; or NaN which you could convert to 0.0f here), otherwise the method tries its best to convert whatever numeric string is passed to it (ignoring trailing garbage).  Then you don&apos;t have to reparse the string locally to guess if it started with something numeric.

Yes, &apos;-&apos;, &apos;+&apos; and &apos;.&apos;, and whitespace are all valid starting characters.
Maybe it would be best to extend the lower lower string functions.


&gt; Otherwise, I think it would be cleaner if this code was pulled out into a static inline method with a descriptive name.  It&apos;s a bit hard to read on one line.
&gt; 
&gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:365
&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return ErrorMessageLevel;
&gt; 
&gt; If the switch statement has case statements for every ViewportErrorCode enum, then you don&apos;t need a &quot;default&quot; case because a missing enum will cause a compiler warning (and thus an error with -Werror set).

Oh, nice. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356705</commentid>
    <comment_count>24</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-23 23:36:31 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:365
&gt; &gt; &gt; +    default:
&gt; &gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; &gt; +        return ErrorMessageLevel;
&gt; &gt; 
&gt; &gt; If the switch statement has case statements for every ViewportErrorCode enum, then you don&apos;t need a &quot;default&quot; case because a missing enum will cause a compiler warning (and thus an error with -Werror set).
&gt; 
&gt; Oh, nice. Thanks!

Hmm, the compiler still yelled at me. So I left it here. I could move it past the switch, which would save us a line of code (no &quot;default:&quot;) line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356706</commentid>
    <comment_count>25</comment_count>
      <attachid>83612</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-23 23:39:28 -0800</bug_when>
    <thetext>Created attachment 83612
[PATCH] Add didReadNumber to toFloat / toDecimal to clarify if &quot;ok&quot; means garbage at end

I might as well do this right!

Much cleaner from the Viewport side of things. &quot;ok&quot; is false if there was any
error, and didReadNumber is true is there was ever a numeric value parsed.

Valid values also include scientific notation, so &quot;1e3&quot; is valid for 100.
I tested this with a bunch of numbers and prefixes +1, -1, .5, etc, and
it looked good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356707</commentid>
    <comment_count>26</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-02-23 23:40:05 -0800</bug_when>
    <thetext>&gt; Valid values also include scientific notation, so &quot;1e3&quot; is valid for 100.

1e3 is 1000. Typo on my part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356716</commentid>
    <comment_count>27</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-24 00:12:26 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; Valid values also include scientific notation, so &quot;1e3&quot; is valid for 100.
&gt; 
&gt; 1e3 is 1000. Typo on my part.

Would be nice to make tests for these</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356719</commentid>
    <comment_count>28</comment_count>
      <attachid>83612</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-24 00:16:01 -0800</bug_when>
    <thetext>Comment on attachment 83612
[PATCH] Add didReadNumber to toFloat / toDecimal to clarify if &quot;ok&quot; means garbage at end

I wonder if these should be separate patches? I&apos;m OK with this change, but it would be nice with some buy-in from someone else before committing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357055</commentid>
    <comment_count>29</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-24 09:04:47 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; &gt; &gt; &gt; Source/WebCore/dom/ViewportArguments.cpp:365
&gt; &gt; &gt; &gt; +    default:
&gt; &gt; &gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; &gt; &gt; +        return ErrorMessageLevel;
&gt; &gt; &gt; 
&gt; &gt; &gt; If the switch statement has case statements for every ViewportErrorCode enum, then you don&apos;t need a &quot;default&quot; case because a missing enum will cause a compiler warning (and thus an error with -Werror set).
&gt; &gt; 
&gt; &gt; Oh, nice. Thanks!
&gt; 
&gt; Hmm, the compiler still yelled at me. So I left it here. I could move it past the switch, which would save us a line of code (no &quot;default:&quot;) line.

I would rather see the assert and return statements moved out of the switch statement so that you get a warning (error) if a new enum is added that the switch statement is missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357060</commentid>
    <comment_count>30</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-24 09:05:59 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 83612 [details])
&gt; I wonder if these should be separate patches? I&apos;m OK with this change, but it would be nice with some buy-in from someone else before committing this.

Are there any stakeholders from other ports that are missing from the CC list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357093</commentid>
    <comment_count>31</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-02-24 09:28:53 -0800</bug_when>
    <thetext>cc&apos;ing GTK and EFL stakeholders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359977</commentid>
    <comment_count>32</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 10:07:57 -0800</bug_when>
    <thetext>Well, this has been ~5 days. I think I&apos;m going to land this now, see what viewport tests fail
on core bots and update their expected results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360017</commentid>
    <comment_count>33</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 11:03:58 -0800</bug_when>
    <thetext>Landed r80012:
http://trac.webkit.org/changeset/80012

Watching the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360127</commentid>
    <comment_count>34</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-01 12:43:06 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Landed r80012:
&gt; http://trac.webkit.org/changeset/80012
&gt; 
&gt; Watching the bots.

Did you guys mean to land this without expectations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360133</commentid>
    <comment_count>35</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 12:46:50 -0800</bug_when>
    <thetext>&gt; Did you guys mean to land this without expectations?

Yes, I don&apos;t have builds of the other ports to produce the expected results.


Also, this looks like it just crashed on the Gtk 64bit port, but I
can&apos;t find any crash log / report to get information out of it.
I can either revert this change, or skip the test on Gtk. I&apos;ll most
likely revert the change if I can&apos;t get any more information about
why this crashed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360135</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 12:47:35 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80012 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/viewport/viewport-129.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360139</commentid>
    <comment_count>37</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-01 12:48:46 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; &gt; Did you guys mean to land this without expectations?
&gt; 
&gt; Yes, I don&apos;t have builds of the other ports to produce the expected results.
&gt; 
&gt; 
&gt; Also, this looks like it just crashed on the Gtk 64bit port, but I
&gt; can&apos;t find any crash log / report to get information out of it.
&gt; I can either revert this change, or skip the test on Gtk. I&apos;ll most
&gt; likely revert the change if I can&apos;t get any more information about
&gt; why this crashed.


Crash reports for GTK+ debug bots are at: http://webkit-bots.igalia.com. Here is the dump for this crash:

[New Thread 19324]
[New Thread 19391]
[New Thread 19393]

warning: Can&apos;t read pathname for load map: Input/output error.
Core was generated by `/home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/Programs/DumpR&apos;.
Program terminated with signal 11, Segmentation fault.
#0  0x00007ff3906810d2 in ?? ()

Thread 3 (Thread 19393):
#0  0x00007ff399a7f4d9 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007ff39b0a54c2 in g_cond_timed_wait_posix_impl (cond=0x21ad334, entered_mutex=0x189, abs_time=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./gthread/gthread-posix.c:242
#2  0x00007ff39abd0d31 in g_async_queue_pop_intern_unlocked (queue=0x21a7230, try=0, end_time=0x7ff3476a7bf0) at /tmp/buildd/glib2.0-2.27.91/./glib/gasyncqueue.c:423
#3  0x00007ff39ac25021 in g_thread_pool_wait_for_new_task (data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gthreadpool.c:274
#4  g_thread_pool_thread_proxy (data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gthreadpool.c:308
#5  0x00007ff39ac23124 in g_thread_create_proxy (data=0x55b2cf0) at /tmp/buildd/glib2.0-2.27.91/./glib/gthread.c:1897
#6  0x00007ff399a7a8ba in start_thread () from /lib/libpthread.so.0
#7  0x00007ff3997e202d in clone () from /lib/libc.so.6
#8  0x0000000000000000 in ?? ()

Thread 2 (Thread 19391):
#0  0x00007ff399a7f4d9 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007ff39b0a54c2 in g_cond_timed_wait_posix_impl (cond=0x21ad334, entered_mutex=0x189, abs_time=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./gthread/gthread-posix.c:242
#2  0x00007ff39abd0d31 in g_async_queue_pop_intern_unlocked (queue=0x21a7230, try=0, end_time=0x7ff346ea6bf0) at /tmp/buildd/glib2.0-2.27.91/./glib/gasyncqueue.c:423
#3  0x00007ff39ac25021 in g_thread_pool_wait_for_new_task (data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gthreadpool.c:274
#4  g_thread_pool_thread_proxy (data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gthreadpool.c:308
#5  0x00007ff39ac23124 in g_thread_create_proxy (data=0x7ff38c0071b0) at /tmp/buildd/glib2.0-2.27.91/./glib/gthread.c:1897
#6  0x00007ff399a7a8ba in start_thread () from /lib/libpthread.so.0
#7  0x00007ff3997e202d in clone () from /lib/libc.so.6
#8  0x0000000000000000 in ?? ()

Thread 1 (Thread 19324):
#0  0x00007ff3906810d2 in ?? ()
#1  0x00007ff39db40fdb in JSC::JSValue::toNumber (this=0x7fff618a7ee0, exec=0x7ff3906810d0) at ../../Source/JavaScriptCore/runtime/JSCell.h:310
#2  0x00007ff39e862595 in JSValueToNumber (ctx=0x7ff3906810d0, value=0x7fff618a8010, exception=0x7fff618a8088) at ../../Source/JavaScriptCore/API/JSValueRef.cpp:274
#3  0x000000000040dc55 in dumpConfigurationForViewportCallback (context=0x7ff3906810d0, function=0x7ff3a040fc10, thisObject=0x7ff3a040f750, argumentCount=2, arguments=0x7fff618a7fe8, exception=0x7fff618a8088) at ../../Tools/DumpRenderTree/LayoutTestController.cpp:155
#4  0x00007ff39e84ba38 in JSC::JSCallbackFunction::call (exec=0x7ff3906810d0) at ../../Source/JavaScriptCore/API/JSCallbackFunction.cpp:67
#5  0x00007ff39e8f06c9 in JSC::cti_op_call_NotJSFunction (args=0x7fff618a81c0) at ../../Source/JavaScriptCore/jit/JITStubs.cpp:2094
#6  0x00007ff39e8eb5ff in JSC::JITThunks::tryCacheGetByID (callFrame=0x7ff390681080, codeBlock=0x7fff618a81c0, returnAddress=..., baseValue=..., propertyName=..., slot=..., stubInfo=0x21b92c0) at ../../Source/JavaScriptCore/jit/JITStubs.cpp:869
#7  0x00007ff39e8be6f3 in JSC::JITCode::execute (this=0x774be98, registerFile=0x1bd2828, callFrame=0x7ff390681040, globalData=0x21b92c0) at ../../Source/JavaScriptCore/jit/JITCode.h:77
#8  0x00007ff39e8bb7d5 in JSC::Interpreter::executeCall (this=0x1bd2810, callFrame=0x794a708, function=0x7ff3a040fa90, callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:844
#9  0x00007ff39e948634 in JSC::call (exec=0x794a708, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/JavaScriptCore/runtime/CallData.cpp:38
#10 0x00007ff39db4a813 in WebCore::JSMainThreadExecState::call (exec=0x794a708, functionObject=..., callType=JSC::CallTypeJS, callData=..., thisValue=..., args=...) at ../../Source/WebCore/bindings/js/JSMainThreadExecState.h:48
#11 0x00007ff39db7d98d in WebCore::JSEventListener::handleEvent (this=0x75f6470, scriptExecutionContext=0x7577a98, event=0x7703f60) at ../../Source/WebCore/bindings/js/JSEventListener.cpp:123
#12 0x00007ff39dd72941 in WebCore::EventTarget::fireEventListeners (this=0x75b24b0, event=0x7703f60, d=0x75b2580, entry=...) at ../../Source/WebCore/dom/EventTarget.cpp:354
#13 0x00007ff39dd727d0 in WebCore::EventTarget::fireEventListeners (this=0x75b24b0, event=0x7703f60) at ../../Source/WebCore/dom/EventTarget.cpp:323
#14 0x00007ff39e0d3038 in WebCore::DOMWindow::dispatchEvent (this=0x75b24b0, prpEvent=..., prpTarget=...) at ../../Source/WebCore/page/DOMWindow.cpp:1578
#15 0x00007ff39e0d314c in WebCore::DOMWindow::dispatchTimedEvent (this=0x75b24b0, event=..., target=0x7577a30, startTime=0x7886898, endTime=0x78868a0) at ../../Source/WebCore/page/DOMWindow.cpp:1590
#16 0x00007ff39e0d2cf8 in WebCore::DOMWindow::dispatchLoadEvent (this=0x75b24b0) at ../../Source/WebCore/page/DOMWindow.cpp:1550
#17 0x00007ff39dd2ab12 in WebCore::Document::dispatchWindowLoadEvent (this=0x7577a30) at ../../Source/WebCore/dom/Document.cpp:3490
#18 0x00007ff39dd254f1 in WebCore::Document::implicitClose (this=0x7577a30) at ../../Source/WebCore/dom/Document.cpp:2076
#19 0x00007ff39e04d98d in WebCore::FrameLoader::checkCallImplicitClose (this=0x1bb18a0) at ../../Source/WebCore/loader/FrameLoader.cpp:891
#20 0x00007ff39e04d760 in WebCore::FrameLoader::checkCompleted (this=0x1bb18a0) at ../../Source/WebCore/loader/FrameLoader.cpp:839
#21 0x00007ff39e04d4cf in WebCore::FrameLoader::finishedParsing (this=0x1bb18a0) at ../../Source/WebCore/loader/FrameLoader.cpp:773
#22 0x00007ff39dd2dcfe in WebCore::Document::finishedParsing (this=0x7577a30) at ../../Source/WebCore/dom/Document.cpp:4239
#23 0x00007ff39df5a494 in WebCore::HTMLTreeBuilder::finished (this=0x7a28c40) at ../../Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2804
#24 0x00007ff39df30fb4 in WebCore::HTMLDocumentParser::end (this=0x75a8c40) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:354
#25 0x00007ff39df310b1 in WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd (this=0x75a8c40) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:363
#26 0x00007ff39df303e1 in WebCore::HTMLDocumentParser::prepareToStopParsing (this=0x75a8c40) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:151
#27 0x00007ff39df310f6 in WebCore::HTMLDocumentParser::attemptToEnd (this=0x75a8c40) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:375
#28 0x00007ff39df311af in WebCore::HTMLDocumentParser::finish (this=0x75a8c40) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:403
#29 0x00007ff39dd25c02 in WebCore::Document::finishParsing (this=0x7577a30) at ../../Source/WebCore/dom/Document.cpp:2243
#30 0x00007ff39e04740f in WebCore::DocumentWriter::endIfNotLoadingMainResource (this=0x78860c0) at ../../Source/WebCore/loader/DocumentWriter.cpp:222
#31 0x00007ff39e047365 in WebCore::DocumentWriter::end (this=0x78860c0) at ../../Source/WebCore/loader/DocumentWriter.cpp:207
#32 0x00007ff39e03c47d in WebCore::DocumentLoader::finishedLoading (this=0x7885fc0) at ../../Source/WebCore/loader/DocumentLoader.cpp:284
#33 0x00007ff39e053a1f in WebCore::FrameLoader::finishedLoading (this=0x1bb18a0) at ../../Source/WebCore/loader/FrameLoader.cpp:2188
#34 0x00007ff39e08403d in WebCore::MainResourceLoader::didFinishLoading (this=0x79f2d30, finishTime=0) at ../../Source/WebCore/loader/MainResourceLoader.cpp:464
#35 0x00007ff39e090231 in WebCore::ResourceLoader::didFinishLoading (this=0x79f2d30, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:436
#36 0x00007ff39d9fa73e in WebCore::readCallback (source=0x4db10c0, asyncResult=0x7ff38c024800, data=0x0) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:779
#37 0x00007ff39b752f65 in async_ready_callback_wrapper (source_object=0x4db10c0, res=0x7ff38c024800, user_data=0x0) at /tmp/buildd/glib2.0-2.27.91/./gio/ginputstream.c:470
#38 0x00007ff39b764628 in complete_in_idle_cb_for_thread (_data=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./gio/gsimpleasyncresult.c:812
#39 0x00007ff39abf9362 in g_main_dispatch (context=0x1b272c0) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:2440
#40 g_main_context_dispatch (context=0x1b272c0) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3013
#41 0x00007ff39abfda28 in g_main_context_iterate (context=0x1b272c0, block=&lt;value optimized out&gt;, dispatch=&lt;value optimized out&gt;, self=&lt;value optimized out&gt;) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3091
#42 0x00007ff39abfdf35 in g_main_loop_run (loop=0x78c9660) at /tmp/buildd/glib2.0-2.27.91/./glib/gmain.c:3299
#43 0x00007ff39cb32657 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#44 0x000000000041e32d in runTest (testPathOrURL=...) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:679
#45 0x000000000041d9bf in runTestingServerLoop () at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:489
#46 0x000000000041faa4 in main (argc=2, argv=0x7fff618a9b68) at ../../Tools/DumpRenderTree/gtk/DumpRenderTree.cpp:1143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360147</commentid>
    <comment_count>38</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 12:58:25 -0800</bug_when>
    <thetext>Wow, did fast/viewport tests just change? Apparently this is because I
failed to call layoutTestController.dumpConfigurationForViewport with
enough arguments. I can fix this pretty quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360148</commentid>
    <comment_count>39</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 13:00:08 -0800</bug_when>
    <thetext>Arg, yes, this changed in the 5 days between when it was r+ and landed:
http://trac.webkit.org/changeset/79783

Sorry about this. Should be an easy test content fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360150</commentid>
    <comment_count>40</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-03-01 13:01:40 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Wow, did fast/viewport tests just change? Apparently this is because I
&gt; failed to call layoutTestController.dumpConfigurationForViewport with
&gt; enough arguments. I can fix this pretty quickly.

Probably the GTK+ DumpRenderTree should be a more resilient to these kind of things. :) I&apos;ll ping the guy who wrote this originally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360156</commentid>
    <comment_count>41</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 13:06:54 -0800</bug_when>
    <thetext>Thanks! Yes, it looks like Kenneth made the change. Not a big deal,
mostly my fault for not having a port to test on.

I will also file a bug on the old-runwebkit-tests which saw:

  Use of uninitialized value in numeric lt (&lt;) at Tools/Scripts/old-run-webkit-tests line 1778.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360158</commentid>
    <comment_count>42</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 13:08:42 -0800</bug_when>
    <thetext>Landed test content fix in r80031:
http://trac.webkit.org/changeset/80031

I&apos;ll still need to grab expected results off of the bots when they finish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360267</commentid>
    <comment_count>43</comment_count>
      <attachid>84300</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 14:59:35 -0800</bug_when>
    <thetext>Created attachment 84300
[PATCH] Add Expected Results

Now that the build-bot has generated results, they look as I would expect.
I&apos;ve copied this from the GTK bot, which did churn through all tests after
the previous fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360280</commentid>
    <comment_count>44</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-03-01 15:03:54 -0800</bug_when>
    <thetext>Joseph, I don&apos;t know if you saw it, but apparently the new IE9 (only?) supports ; as separators.

http://blogs.msdn.com/b/iemobile/archive/2010/11/22/the-ie-mobile-viewport-on-windows-phone-7.aspx

I still think that we are doing the right thing, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360358</commentid>
    <comment_count>45</comment_count>
      <attachid>84300</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 16:28:17 -0800</bug_when>
    <thetext>Comment on attachment 84300
[PATCH] Add Expected Results

I&apos;ll manually land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360359</commentid>
    <comment_count>46</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-03-01 16:29:05 -0800</bug_when>
    <thetext>Landed expected results in r80062:
http://trac.webkit.org/changeset/80062

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360466</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 18:12:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80062 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/viewport/viewport-112.html
fast/viewport/viewport-121.html
fast/viewport/viewport-122.html
fast/viewport/viewport-125.html
fast/viewport/viewport-129.html
fast/viewport/viewport-35.html
fast/viewport/viewport-46.html
fast/viewport/viewport-52.html
fast/viewport/viewport-53.html
fast/viewport/viewport-54.html
fast/viewport/viewport-55.html
fast/viewport/viewport-66.html
fast/viewport/viewport-67.html
fast/viewport/viewport-68.html
fast/viewport/viewport-69.html
fast/viewport/viewport-70.html
fast/viewport/viewport-71.html
fast/viewport/viewport-72.html
fast/viewport/viewport-73.html
fast/viewport/viewport-74.html
fast/viewport/viewport-75.html
fast/viewport/viewport-77.html
fast/viewport/viewport-78.html
fast/viewport/viewport-79.html
fast/viewport/viewport-83.html
fast/xsl/xslt-mismatched-tags-in-xslt.xml
fast/xsl/xslt-missing-namespace-in-xslt.xml
http/tests/security/xss-DENIED-xsl-document-redirect.xml
http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
http/tests/xmlviewer/dumpAsText/wml.xml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373862</commentid>
    <comment_count>48</comment_count>
    <who name="Misha">mtutunik</who>
    <bug_when>2011-03-25 23:22:41 -0700</bug_when>
    <thetext>Should we also support trailing junk for device-width etc.?
Many pages specify &quot;width=device-width;&quot; (foxnews.com for example)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82738</attachid>
            <date>2011-02-16 19:20:22 -0800</date>
            <delta_ts>2011-02-21 15:51:37 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>viewport-1.patch</filename>
            <type>text/plain</type>
            <size>12780</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZDQzYWM3Li5mZDExNmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDIt
MTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBwYXJzaW5nIG5vIGxv
bmdlciBhY2NlcHRzICIxLjA7IiB2YWx1ZSBhcyB2YWxpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA1CisKKyAgICAgICAgQWRkIGEgbmV3IHRl
c3QgdG8gY2hlY2sgdmlld3BvcnQgYXJndW1lbnQgcGFyc2luZyBvZgorICAgICAgICB2YWx1ZSAi
MTIzeDQ1NiIsIHdoaWNoIGFsdGhvdWdoIG5vdCBjb21wbGV0ZWx5IGEgbnVtYmVyCisgICAgICAg
IHNob3VsZCByZXR1cm4gdGhlIG51bWVyaWMgcHJlZml4ICIxMjMiIGFzIHRoZSB2YWx1ZS4KKyAg
ICAgICAgTm90ZSB0aGF0IHRoaXMgYWZmZWN0cyAic2VtaWNvbG9ucyBhcyBzZXBhcmF0b3JzIiBl
dmVuCisgICAgICAgIHRob3VnaCBzZW1pY29sb25zIGFyZSBub3QgdmFsaWQgc2VwYXJhdG9ycy4K
KworICAgICAgICAtLS0tLS0KKyAgICAgICAgRklYTUU6IE9USEVSIFRFU1RTIFdPVUxEIEJFIEFG
RkVDVEVELgorICAgICAgICBmYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LTY1Lmh0bWwgYW5kIHBvdGVu
dGlhbGx5IG90aGVycy4KKyAgICAgICAgLS0tLS0tCisKKyAgICAgICAgKiBmYXN0L3ZpZXdwb3J0
L3ZpZXdwb3J0LTEyOS5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0xNiAgUGV0ZXIgS2FzdGluZyAg
PHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21pdW0gdGVz
dCBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3
cG9ydC92aWV3cG9ydC0xMjkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3Bv
cnQtMTI5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxN2VjZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5
Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPkNoZWNrIHRoYXQgbnVt
YmVyIHBhcnNpbmcgc3RvcHMgYXQgdGhlIGZpcnN0IG5vbi1udW1iZXIgY2hhcmFjdGVycyBhbmQg
c3RpbGwgdXNlcyB0aGUgbnVtZXJpYyBwcmVmaXguPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRp
b25Gb3JWaWV3cG9ydCgzMjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjljMzMzYy4uMDYxZDRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTAyLTE2
ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgcGFyc2luZyBubyBsb25n
ZXIgYWNjZXB0cyAiMS4wOyIgdmFsdWUgYXMgdmFsaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcwNQorCisgICAgICAgIFdoZW4gcGFyc2luZyBu
dW1lcmljIHZhbHVlcywgdGhlICJjc3Mtdmlld3BvcnQiIHNwZWMgc2F5cworICAgICAgICB0byB1
c2UgdGhlIG51bWJlciBwcmVmaXgsIGFuZCB0aGUgbm9uIG51bWVyaWMgcGFydCBvZiB0aGUKKyAg
ICAgICAgc3RyaW5nIGNhbiBiZSBpZ25vcmVkLiBUaGlzIG1hdGNoZXMgb3VyIGJlaGF2aW9yIGJl
Zm9yZQorICAgICAgICByNjczNzYuIFRoZSBjaGFuZ2Ugd2FzIHRoYXQgY2hlY2tpbmcgdGhlIGVy
cm9yIG91dCBjb25kaXRpb24KKyAgICAgICAgb2YgU3RyaW5nOjp0b0Zsb2F0IGRvZXNuJ3QgbmVj
ZXNzYXJpbHkgbWVhbiB0aGF0IHRoZXJlCisgICAgICAgIHdhcyBhIG5vbi1udW1lcmljIHByZWZp
eC4gVGhpcyBwYXRjaCBjaGVja3MgaWYgdGhlcmUgd2FzCisgICAgICAgIG9yIHdhc24ndCBhIG5v
bi1udW1lcmljIHByZWZpeC4KKworICAgICAgICBUaGVyZSBpcyBhIGNvbnNvbGUgd2FybmluZyBp
biBhbnkgY2FzZSB3aGVyZSBhIG51bWVyaWMKKyAgICAgICAgdmFsdWUgaXMgbm90IHBhcnNlZCBj
bGVhbmx5LiBUaGVyZSBpcyBhbiBlcnJvciB3YXJuaW5nCisgICAgICAgIHdoZW4gaXQgaXMgbm90
IGEgbnVtYmVyIGF0IGFsbCwgYW5kIGEgdGlwIHdhcm5pbmcgd2hlbgorICAgICAgICBpdCBoYXMg
YmVlbiB0cnVuY2F0ZWQuCisKKyAgICAgICAgRXJyb3IgbWVzc2FnZXMgYXJlIHNsaWdodGx5IGlt
cHJvdmVkIHRvIHByb3ZpZGUgbW9yZQorICAgICAgICBjb250ZXh0LCBib3RoIHRoZSBrZXkgYW5k
IHZhbHVlLCB3aGVuIGFuIGVycm9yIGhhcHBlbnMuCisKKyAgICAgICAgVGVzdDogZmFzdC92aWV3
cG9ydC92aWV3cG9ydC0xMjkuaHRtbAorCisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om51bWVyaWNQcmVmaXgpOiB1c2UgU3RyaW5nOjp0b0Zs
b2F0IGFuZCBpbiB0aGUgY2FzZSBvZiBhbiBlcnJvciBjaGVjayBpZiB0aGVyZSB3YXMgYSB2YWxp
ZCBudW1lcmljIHByZWZpeC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOiBzd2l0
Y2ggdG8gdXNlIG51bWVyaWNQcmVmaXguCisgICAgICAgIChXZWJDb3JlOjpmaW5kU2NhbGVWYWx1
ZSk6IHN3aXRjaCB0byB1c2UgbnVtZXJpY1ByZWZpeC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRV
c2VyU2NhbGFibGVWYWx1ZSk6IHN3aXRjaCB0byB1c2UgbnVtZXJpY1ByZWZpeC4KKyAgICAgICAg
KFdlYkNvcmU6OmZpbmRUYXJnZXREZW5zaXR5RFBJVmFsdWUpOiBzd2l0Y2ggdG8gdXNlIG51bWVy
aWNQcmVmaXguCisgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRl
KTogYWRkIGEgdHJ1bmNhdGVkIGVycm9yIG1lc3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjp2aWV3
cG9ydEVycm9yTWVzc2FnZUxldmVsKTogcHV0IHRoZSB0cnVuY2F0ZWQgbWVzc2FnZSBhdCBhIFRp
cCBsZXZlbC4KKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6IGV4dGVu
ZCB0byB0d28gcG9zc2libGUgcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICAgICAgKiBkb20vVmll
d3BvcnRBcmd1bWVudHMuaDogYWRkIGEgVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJy
b3IgZXJyb3IgY29kZS4KKwogMjAxMS0wMi0xNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCA2ZGQxYjhhLi4xOGQyYzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKQEAgLTMsNyArMyw3
IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9y
ZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTE3OCw2ICsxNzksMjcgQEAg
Vmlld3BvcnRBdHRyaWJ1dGVzIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMoVmlld3BvcnRBcmd1
bWVudHMgYXJncywgaW50IGRlc2t0b3AKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMg
ZmxvYXQgbnVtZXJpY1ByZWZpeChjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5n
JiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sKiBvaykKK3sKKyAgICAvLyBJ
ZiBhIHByZWZpeCBvZiBwcm9wZXJ0eS12YWx1ZSBjYW4gYmUgY29udmVydGVkIHRvIGEgbnVtYmVy
IHVzaW5nIHN0cnRvZCwKKyAgICAvLyB0aGUgdmFsdWUgd2lsbCBiZSB0aGF0IG51bWJlci4gVGhl
IHJlbWFpbmRlciBvZiB0aGUgc3RyaW5nIGlzIGlnbm9yZWQuCisgICAgLy8gU28gd2hlbiBTdHJp
bmc6OnRvRmxvYXQgc2F5cyB0aGVyZSBpcyBhbiBlcnJvciwgaXQgbWF5IGJlIGEgZmFsc2UgcG9z
aXRpdmUsCisgICAgLy8gYW5kIHdlIHNob3VsZCBjaGVjayBpZiB0aGUgdmFsdWVTdHJpbmcgcHJl
Zml4IHdhcyBhIG51bWJlci4KKworICAgIGZsb2F0IHZhbHVlID0gdmFsdWVTdHJpbmcudG9GbG9h
dChvayk7CisgICAgaWYgKCEqb2spIHsKKyAgICAgICAgVUNoYXIgZmlyc3RDaGFyID0gdmFsdWVT
dHJpbmdbMF07CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGZpcnN0Q2hhcikgfHwgKGZpcnN0
Q2hhciA9PSAnLScgJiYgIWlzQVNDSUlEaWdpdCh2YWx1ZVN0cmluZ1sxXSkpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhk
b2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0cmluZywg
a2V5U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICAqb2sgPSB0cnVlOworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFRy
dW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5n
KTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBzdGF0aWMgZmxvYXQgZmluZFNpemVW
YWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywg
RG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIDEpIE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFs
dWVzIGFyZSB0cmFuc2xhdGVkIHRvIHB4IGxlbmd0aHMuCkBAIC0xOTMsMTkgKzIxNSwxNyBAQCBz
dGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3Qg
U3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6
OlZhbHVlRGV2aWNlSGVpZ2h0OwogCiAgICAgYm9vbCBvazsKLSAgICBmbG9hdCB2YWx1ZSA9IHZh
bHVlU3RyaW5nLnRvRmxvYXQoJm9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIHJlcG9ydFZp
ZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9y
LCBrZXlTdHJpbmcpOworICAgIGZsb2F0IHZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXlTdHJpbmcs
IHZhbHVlU3RyaW5nLCBkb2N1bWVudCwgJm9rKTsKKyAgICBpZiAoIW9rKQogICAgICAgICByZXR1
cm4gZmxvYXQoMC4wKTsKLSAgICB9CiAKICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICByZXR1
cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKIAogICAgIGlmIChrZXlTdHJpbmcgPT0g
IndpZHRoIikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VX
aWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7CisgICAgICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nLCBTdHJp
bmcoKSwgU3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAiaGVpZ2h0IikKLSAg
ICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRTaG91bGRC
ZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmco
ZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0cmluZygpLCBTdHJp
bmcoKSk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yMzAsMTcgKzI1MCwxNSBAQCBzdGF0
aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdmFsdWVTdHJpbmcsCiAgICAgICAgIHJldHVybiBmbG9hdCgxMC4wKTsKIAogICAgIGJv
b2wgb2s7Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCZvayk7Ci0gICAg
aWYgKCFvaykgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVj
b2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwga2V5U3RyaW5nKTsKKyAgICBmbG9hdCB2YWx1
ZSA9IG51bWVyaWNQcmVmaXgoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQsICZvayk7
CisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZsb2F0KDAuMCk7Ci0gICAgfQogCiAgICAg
aWYgKHZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1
dG87CiAKICAgICBpZiAodmFsdWUgPiAxMC4wKQotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5p
bmcoZG9jdW1lbnQsIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsIGtleVN0cmluZyk7CisgICAg
ICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9vTGFyZ2VF
cnJvciwgU3RyaW5nKCksIFN0cmluZygpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTI2
MywxMSArMjgxLDkgQEAgc3RhdGljIGJvb2wgZmluZFVzZXJTY2FsYWJsZVZhbHVlKGNvbnN0IFN0
cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3QKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBib29sIG9rOwotICAgIGZsb2F0IHZhbHVlID0gdmFsdWVTdHJpbmcudG9GbG9h
dCgmb2spOwotICAgIGlmICghb2spIHsKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRv
Y3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsIGtleVN0cmluZyk7Cisg
ICAgZmxvYXQgdmFsdWUgPSBudW1lcmljUHJlZml4KGtleVN0cmluZywgdmFsdWVTdHJpbmcsIGRv
Y3VtZW50LCAmb2spOworICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
CiAKICAgICBpZiAoZmFicyh2YWx1ZSkgPCAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
ODcsMTQgKzMwMywxMiBAQCBzdGF0aWMgZmxvYXQgZmluZFRhcmdldERlbnNpdHlEUElWYWx1ZShj
b25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YQogICAgICAgICByZXR1cm4g
Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlSGlnaERQSTsKIAogICAgIGJvb2wgb2s7Ci0gICAgZmxv
YXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCZvayk7Ci0gICAgaWYgKCFvaykgewotICAg
ICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZpZXdwb3J0
QXJndW1lbnRFcnJvciwga2V5U3RyaW5nKTsKKyAgICBmbG9hdCB2YWx1ZSA9IG51bWVyaWNQcmVm
aXgoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQsICZvayk7CisgICAgaWYgKCFvaykK
ICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAgfQogCiAg
ICAgIGlmICh2YWx1ZSA8IDcwIHx8IHZhbHVlID4gNDAwKSB7Ci0gICAgICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9y
LCBrZXlTdHJpbmcpOworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFRh
cmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFyZ2VFcnJvciwgU3RyaW5nKCksIFN0cmluZygpKTsK
ICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAgfQogCkBA
IC0zMjYsOCArMzQwLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0RXJyb3JNZXNzYWdl
VGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdwb3J0IHdpZHRoIG9yIGhlaWdo
dCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNpbmcgXCJkZXZpY2Utd2lkdGhc
IiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4iLAogICAgICAgICAi
Vmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIGhlaWdodCwg
dHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGluc3RlYWQgZm9yIGZ1dHVyZSBj
b21wYXRpYmlsaXR5LiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBcIiVyZXBsYWNlbWVu
dFwiIG5vdCByZWNvZ25pemVkLiBDb250ZW50IGlnbm9yZWQuIiwKLSAgICAgICAgIlZpZXdwb3J0
IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuICBUaGUgbWF4aW11bS1z
Y2FsZSB3aWxsIGJlIHNldCB0byAxMC4wLiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCB2
YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIG5vdCByZWNv
Z25pemVkLiBDb250ZW50IGlnbm9yZWQuIiwKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3VtZW50IHZh
bHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgd2FzIHRydW5j
YXRlZCB0byBpdHMgbnVtZXJpYyBwcmVmaXguIiwKKyAgICAgICAgIlZpZXdwb3J0IG1heGltdW0t
c2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRoZSBtYXhpbXVtLXNjYWxlIHdpbGwg
YmUgc2V0IHRvIDEwLjAuIiwKICAgICAgICAgIlZpZXdwb3J0IHRhcmdldC1kZW5zaXR5ZHBpIGhh
cyB0byB0YWtlIGEgbnVtYmVyIGJldHdlZW4gNzAgYW5kIDQwMCBhcyBhIHZhbGlkIHRhcmdldCBk
cGksIHRyeSB1c2luZyBcImRldmljZS1kcGlcIiwgXCJsb3ctZHBpXCIsIFwibWVkaXVtLWRwaVwi
IG9yIFwiaGlnaC1kcGlcIiBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4iCiAgICAg
fTsKIApAQCAtMzM2LDcgKzM1MSwxOSBAQCBzdGF0aWMgY29uc3QgY2hhciogdmlld3BvcnRFcnJv
ck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAKIHN0YXRpYyBN
ZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9yQ29kZSBl
cnJvckNvZGUpCiB7Ci0gICAgcmV0dXJuIGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRWaWV3cG9y
dEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JDb2RlID09IE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3Ig
PyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRpcE1lc3NhZ2VMZXZlbDsKKyAgICBzd2l0Y2ggKGVycm9y
Q29kZSkgeworICAgIGNhc2UgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nOgorICAgIGNh
c2UgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZzoKKyAgICBjYXNlIFRydW5jYXRlZFZp
ZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yOgorICAgIGNhc2UgVGFyZ2V0RGVuc2l0eURwaVRvb1Nt
YWxsT3JMYXJnZUVycm9yOgorICAgICAgICByZXR1cm4gVGlwTWVzc2FnZUxldmVsOworICAgIGNh
c2UgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yOgorICAgIGNhc2UgTWF4aW11bVNj
YWxlVG9vTGFyZ2VFcnJvcjoKKyAgICAgICAgcmV0dXJuIEVycm9yTWVzc2FnZUxldmVsOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
RXJyb3JNZXNzYWdlTGV2ZWw7CisgICAgfQogfQogCiAvLyBGSVhNRTogV2h5IGlzIHRoaXMgZGlm
ZmVyZW50IGZyb20gU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHBhcnNlckxpbmVOdW1iZXI/CkBAIC0z
NTEsMTQgKzM3OCwxNyBAQCBzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7CiB9CiAKLXZvaWQg
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQordm9pZCByZXBvcnRWaWV3
cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
MikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0RXJy
b3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKLSAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBs
YWNlbWVudCIsIHJlcGxhY2VtZW50KTsKKyAgICBpZiAoIXJlcGxhY2VtZW50MS5pc051bGwoKSkK
KyAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQxIiwgcmVwbGFjZW1lbnQxKTsK
KyAgICBpZiAoIXJlcGxhY2VtZW50Mi5pc051bGwoKSkKKyAgICAgICAgbWVzc2FnZS5yZXBsYWNl
KCIlcmVwbGFjZW1lbnQyIiwgcmVwbGFjZW1lbnQyKTsKIAogICAgIGZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBwYXJzZXJM
aW5lTnVtYmVyKGRvY3VtZW50KSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXggNGY2NzhmMy4uNmM0OWJmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTM4LDYgKzM4LDcgQEAgZW51
bSBWaWV3cG9ydEVycm9yQ29kZSB7CiAgICAgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5n
LAogICAgIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsCiAgICAgVW5yZWNvZ25pemVk
Vmlld3BvcnRBcmd1bWVudEVycm9yLAorICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1
ZUVycm9yLAogICAgIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0RGVuc2l0
eURwaVRvb1NtYWxsT3JMYXJnZUVycm9yCiB9OwpAQCAtMTAyLDcgKzEwMyw3IEBAIHN0cnVjdCBW
aWV3cG9ydEFyZ3VtZW50cyB7CiBWaWV3cG9ydEF0dHJpYnV0ZXMgY29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyhWaWV3cG9ydEFyZ3VtZW50cyBhcmdzLCBpbnQgZGVza3RvcFdpZHRoLCBpbnQgZGV2
aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBkZXZpY2VEUEksIEludFNpemUgdmlzaWJs
ZVZpZXdwb3J0KTsKIAogdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50Kiwgdm9pZCogZGF0YSk7
Ci12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCosIFZpZXdwb3J0RXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKK3ZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5n
KERvY3VtZW50KiwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50MSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudDIpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAK
</data>
<flag name="commit-queue"
          id="74433"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83228</attachid>
            <date>2011-02-21 15:51:37 -0800</date>
            <delta_ts>2011-02-23 23:39:28 -0800</delta_ts>
            <desc>[PATCH] Explicitly Handle String Bounds Checking</desc>
            <filename>viewport-1-again.patch</filename>
            <type>text/plain</type>
            <size>14729</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGQzNzY5NmJhMjIwZDRmMDk5MGEwMDZkZjQxNWMxODc3ZmU4ODZhZGMKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPGpvZXBlY2tAd2Via2l0Lm9yZz4KRGF0ZTogICBXZWQgRmViIDE2IDE3
OjI1OjU3IDIwMTEgLTA4MDAKCiAgICAyMDExLTAyLTE2ICBKb3NlcGggUGVjb3Jhcm8gIDxqb2Vw
ZWNrQHdlYmtpdC5vcmc+CiAgICAKICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCiAgICAKICAgICAgICAgICAgVmlld3BvcnQgcGFyc2luZyBubyBsb25nZXIgYWNjZXB0cyAi
MS4wOyIgdmFsdWUgYXMgdmFsaWQuCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzcwNQogICAgCiAgICAgICAgICAgIFdoZW4gcGFyc2luZyBudW1l
cmljIHZhbHVlcywgdGhlICJjc3Mtdmlld3BvcnQiIHNwZWMgc2F5cwogICAgICAgICAgICB0byB1
c2UgdGhlIG51bWJlciBwcmVmaXgsIGFuZCB0aGUgbm9uIG51bWVyaWMgcGFydCBvZiB0aGUKICAg
ICAgICAgICAgc3RyaW5nIGNhbiBiZSBpZ25vcmVkLiBUaGlzIG1hdGNoZXMgb3VyIGJlaGF2aW9y
IGJlZm9yZQogICAgICAgICAgICByNjczNzYuIFRoZSBjaGFuZ2Ugd2FzIHRoYXQgY2hlY2tpbmcg
dGhlIGVycm9yIG91dCBjb25kaXRpb24KICAgICAgICAgICAgb2YgU3RyaW5nOjp0b0Zsb2F0IGRv
ZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IHRoZXJlCiAgICAgICAgICAgIHdhcyBhIG5vbi1u
dW1lcmljIHByZWZpeC4gVGhpcyBwYXRjaCBjaGVja3MgaWYgdGhlcmUgd2FzCiAgICAgICAgICAg
IG9yIHdhc24ndCBhIG5vbi1udW1lcmljIHByZWZpeC4KICAgIAogICAgICAgICAgICBUaGVyZSBp
cyBhIGNvbnNvbGUgd2FybmluZyBpbiBhbnkgY2FzZSB3aGVyZSBhIG51bWVyaWMKICAgICAgICAg
ICAgdmFsdWUgaXMgbm90IHBhcnNlZCBjbGVhbmx5LiBUaGVyZSBpcyBhbiBlcnJvciB3YXJuaW5n
CiAgICAgICAgICAgIHdoZW4gaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFsbCwgYW5kIGEgdGlwIHdh
cm5pbmcgd2hlbgogICAgICAgICAgICBpdCBoYXMgYmVlbiB0cnVuY2F0ZWQuCiAgICAKICAgICAg
ICAgICAgRXJyb3IgbWVzc2FnZXMgYXJlIHNsaWdodGx5IGltcHJvdmVkIHRvIHByb3ZpZGUgbW9y
ZQogICAgICAgICAgICBjb250ZXh0LCBib3RoIHRoZSBrZXkgYW5kIHZhbHVlLCB3aGVuIGFuIGVy
cm9yIGhhcHBlbnMuCiAgICAKICAgICAgICAgICAgVGVzdDogZmFzdC92aWV3cG9ydC92aWV3cG9y
dC0xMjkuaHRtbAogICAgCiAgICAgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoK
ICAgICAgICAgICAgKFdlYkNvcmU6Om51bWVyaWNQcmVmaXgpOiB1c2UgU3RyaW5nOjp0b0Zsb2F0
IGFuZCBpbiB0aGUgY2FzZSBvZiBhbiBlcnJvciBjaGVjayBpZiB0aGVyZSB3YXMgYSB2YWxpZCBu
dW1lcmljIHByZWZpeC4KICAgICAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOiBzd2l0
Y2ggdG8gdXNlIG51bWVyaWNQcmVmaXguCiAgICAgICAgICAgIChXZWJDb3JlOjpmaW5kU2NhbGVW
YWx1ZSk6IHN3aXRjaCB0byB1c2UgbnVtZXJpY1ByZWZpeC4KICAgICAgICAgICAgKFdlYkNvcmU6
OmZpbmRVc2VyU2NhbGFibGVWYWx1ZSk6IHN3aXRjaCB0byB1c2UgbnVtZXJpY1ByZWZpeC4KICAg
ICAgICAgICAgKFdlYkNvcmU6OmZpbmRUYXJnZXREZW5zaXR5RFBJVmFsdWUpOiBzd2l0Y2ggdG8g
dXNlIG51bWVyaWNQcmVmaXguCiAgICAgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVz
c2FnZVRlbXBsYXRlKTogYWRkIGEgdHJ1bmNhdGVkIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAg
IChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKTogcHV0IHRoZSB0cnVuY2F0ZWQg
bWVzc2FnZSBhdCBhIFRpcCBsZXZlbC4KICAgICAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdw
b3J0V2FybmluZyk6IGV4dGVuZCB0byB0d28gcG9zc2libGUgcmVwbGFjZW1lbnQgc3RyaW5ncy4K
ICAgICAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMuaDogYWRkIGEgVHJ1bmNhdGVkVmll
d3BvcnRBcmd1bWVudFZhbHVlRXJyb3IgZXJyb3IgY29kZS4KCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjI0NDRkMS4uNmRm
NjBhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTAyLTE2ICBKb3NlcGggUGVjb3Jhcm8g
IDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVmlld3BvcnQgcGFyc2luZyBubyBsb25nZXIgYWNjZXB0cyAiMS4wOyIg
dmFsdWUgYXMgdmFsaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MzcwNQorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIGNoZWNrIHZpZXdwb3J0
IGFyZ3VtZW50IHBhcnNpbmcgb2YKKyAgICAgICAgdmFsdWUgIjEyM3g0NTYiLCB3aGljaCBhbHRo
b3VnaCBub3QgY29tcGxldGVseSBhIG51bWJlcgorICAgICAgICBzaG91bGQgcmV0dXJuIHRoZSBu
dW1lcmljIHByZWZpeCAiMTIzIiBhcyB0aGUgdmFsdWUuCisgICAgICAgIE5vdGUgdGhhdCB0aGlz
IGFmZmVjdHMgInNlbWljb2xvbnMgYXMgc2VwYXJhdG9ycyIgZXZlbgorICAgICAgICB0aG91Z2gg
c2VtaWNvbG9ucyBhcmUgbm90IHZhbGlkIHNlcGFyYXRvcnMuCisKKyAgICAgICAgKiBmYXN0L3Zp
ZXdwb3J0L3ZpZXdwb3J0LTEyOS5odG1sOiBBZGRlZC4KKwogMjAxMS0wMi0yMSAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFu
IExvcGV6LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9ydC92aWV3cG9ydC0x
MjkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxN2VjZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5Lmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPGhlYWQ+CisgICAgPHRpdGxlPkNoZWNrIHRoYXQgbnVtYmVyIHBhcnNpbmcgc3Rv
cHMgYXQgdGhlIGZpcnN0IG5vbi1udW1iZXIgY2hhcmFjdGVycyBhbmQgc3RpbGwgdXNlcyB0aGUg
bnVtZXJpYyBwcmVmaXguPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVu
dD0id2lkdGg9MTIzeDQ1NiI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgp
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENvbmZpZ3VyYXRpb25Gb3JWaWV3cG9ydCgz
MjAsIDM1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpOyI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZmZTEzOC4uMDc4Nzhh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTAyLTE2ICBKb3NlcGggUGVjb3Jh
cm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVmlld3BvcnQgcGFyc2luZyBubyBsb25nZXIgYWNjZXB0cyAiMS4w
OyIgdmFsdWUgYXMgdmFsaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01MzcwNQorCisgICAgICAgIFdoZW4gcGFyc2luZyBudW1lcmljIHZhbHVlcywg
dGhlICJjc3Mtdmlld3BvcnQiIHNwZWMgc2F5cworICAgICAgICB0byB1c2UgdGhlIG51bWJlciBw
cmVmaXgsIGFuZCB0aGUgbm9uIG51bWVyaWMgcGFydCBvZiB0aGUKKyAgICAgICAgc3RyaW5nIGNh
biBiZSBpZ25vcmVkLiBUaGlzIG1hdGNoZXMgb3VyIGJlaGF2aW9yIGJlZm9yZQorICAgICAgICBy
NjczNzYuIFRoZSBjaGFuZ2Ugd2FzIHRoYXQgY2hlY2tpbmcgdGhlIGVycm9yIG91dCBjb25kaXRp
b24KKyAgICAgICAgb2YgU3RyaW5nOjp0b0Zsb2F0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbiB0
aGF0IHRoZXJlCisgICAgICAgIHdhcyBhIG5vbi1udW1lcmljIHByZWZpeC4gVGhpcyBwYXRjaCBj
aGVja3MgaWYgdGhlcmUgd2FzCisgICAgICAgIG9yIHdhc24ndCBhIG5vbi1udW1lcmljIHByZWZp
eC4KKworICAgICAgICBUaGVyZSBpcyBhIGNvbnNvbGUgd2FybmluZyBpbiBhbnkgY2FzZSB3aGVy
ZSBhIG51bWVyaWMKKyAgICAgICAgdmFsdWUgaXMgbm90IHBhcnNlZCBjbGVhbmx5LiBUaGVyZSBp
cyBhbiBlcnJvciB3YXJuaW5nCisgICAgICAgIHdoZW4gaXQgaXMgbm90IGEgbnVtYmVyIGF0IGFs
bCwgYW5kIGEgdGlwIHdhcm5pbmcgd2hlbgorICAgICAgICBpdCBoYXMgYmVlbiB0cnVuY2F0ZWQu
CisKKyAgICAgICAgRXJyb3IgbWVzc2FnZXMgYXJlIHNsaWdodGx5IGltcHJvdmVkIHRvIHByb3Zp
ZGUgbW9yZQorICAgICAgICBjb250ZXh0LCBib3RoIHRoZSBrZXkgYW5kIHZhbHVlLCB3aGVuIGFu
IGVycm9yIGhhcHBlbnMuCisKKyAgICAgICAgVGVzdDogZmFzdC92aWV3cG9ydC92aWV3cG9ydC0x
MjkuaHRtbAorCisgICAgICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om51bWVyaWNQcmVmaXgpOiB1c2UgU3RyaW5nOjp0b0Zsb2F0IGFuZCBpbiB0aGUg
Y2FzZSBvZiBhbiBlcnJvciBjaGVjayBpZiB0aGVyZSB3YXMgYSB2YWxpZCBudW1lcmljIHByZWZp
eC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOiBzd2l0Y2ggdG8gdXNlIG51bWVy
aWNQcmVmaXguCisgICAgICAgIChXZWJDb3JlOjpmaW5kU2NhbGVWYWx1ZSk6IHN3aXRjaCB0byB1
c2UgbnVtZXJpY1ByZWZpeC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRVc2VyU2NhbGFibGVWYWx1
ZSk6IHN3aXRjaCB0byB1c2UgbnVtZXJpY1ByZWZpeC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmRU
YXJnZXREZW5zaXR5RFBJVmFsdWUpOiBzd2l0Y2ggdG8gdXNlIG51bWVyaWNQcmVmaXguCisgICAg
ICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKTogYWRkIGEgdHJ1bmNh
dGVkIGVycm9yIG1lc3NhZ2UuCisgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2Fn
ZUxldmVsKTogcHV0IHRoZSB0cnVuY2F0ZWQgbWVzc2FnZSBhdCBhIFRpcCBsZXZlbC4KKyAgICAg
ICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6IGV4dGVuZCB0byB0d28gcG9zc2li
bGUgcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICAgICAgKiBkb20vVmlld3BvcnRBcmd1bWVudHMu
aDogYWRkIGEgVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IgZXJyb3IgY29kZS4K
KwogMjAxMS0wMi0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKaW5kZXggNmRkMWI4YS4uODI2Yjg2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCkBAIC0xNzgsNiArMTc5LDI3IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBj
b21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNr
dG9wCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgo
Y29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCogb2spCit7CisgICAgLy8gSWYgYSBwcmVmaXggb2YgcHJvcGVy
dHktdmFsdWUgY2FuIGJlIGNvbnZlcnRlZCB0byBhIG51bWJlciB1c2luZyBzdHJ0b2QsCisgICAg
Ly8gdGhlIHZhbHVlIHdpbGwgYmUgdGhhdCBudW1iZXIuIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0
cmluZyBpcyBpZ25vcmVkLgorICAgIC8vIFNvIHdoZW4gU3RyaW5nOjp0b0Zsb2F0IHNheXMgdGhl
cmUgaXMgYW4gZXJyb3IsIGl0IG1heSBiZSBhIGZhbHNlIHBvc2l0aXZlLAorICAgIC8vIGFuZCB3
ZSBzaG91bGQgY2hlY2sgaWYgdGhlIHZhbHVlU3RyaW5nIHByZWZpeCB3YXMgYSBudW1iZXIuCisK
KyAgICBmbG9hdCB2YWx1ZSA9IHZhbHVlU3RyaW5nLnRvRmxvYXQob2spOworICAgIGlmICghKm9r
KSB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlU3RyaW5nLmxlbmd0aCgpOworICAg
ICAgICBpZiAoIWxlbmd0aCB8fCAhaXNBU0NJSURpZ2l0KHZhbHVlU3RyaW5nWzBdKSB8fCAobGVu
Z3RoID4gMSAmJiB2YWx1ZVN0cmluZ1swXSA9PSAnLScgJiYgIWlzQVNDSUlEaWdpdCh2YWx1ZVN0
cmluZ1sxXSkpKSB7CisgICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgICAgIHJl
cG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dEVycm9yLCB2YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICAqb2sgPSB0cnVlOworICAgICAgICByZXBvcnRWaWV3cG9y
dFdhcm5pbmcoZG9jdW1lbnQsIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2
YWx1ZVN0cmluZywga2V5U3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBz
dGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3Qg
U3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIDEpIE5v
bi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIHB4IGxlbmd0aHMuCkBA
IC0xOTMsMTkgKzIxNSwxNyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJp
bmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgICAgICByZXR1
cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlSGVpZ2h0OwogCiAgICAgYm9vbCBvazsK
LSAgICBmbG9hdCB2YWx1ZSA9IHZhbHVlU3RyaW5nLnRvRmxvYXQoJm9rKTsKLSAgICBpZiAoIW9r
KSB7Ci0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVk
Vmlld3BvcnRBcmd1bWVudEVycm9yLCBrZXlTdHJpbmcpOworICAgIGZsb2F0IHZhbHVlID0gbnVt
ZXJpY1ByZWZpeChrZXlTdHJpbmcsIHZhbHVlU3RyaW5nLCBkb2N1bWVudCwgJm9rKTsKKyAgICBp
ZiAoIW9rKQogICAgICAgICByZXR1cm4gZmxvYXQoMC4wKTsKLSAgICB9CiAKICAgICBpZiAodmFs
dWUgPCAwKQogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKIAog
ICAgIGlmIChrZXlTdHJpbmcgPT0gIndpZHRoIikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJu
aW5nKGRvY3VtZW50LCBEZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7
CisgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlV2lkdGhTaG91
bGRCZVVzZWRXYXJuaW5nLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGtleVN0
cmluZyA9PSAiaGVpZ2h0IikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50
LCBEZXZpY2VIZWlnaHRTaG91bGRCZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICBy
ZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdh
cm5pbmcsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0y
MzAsMTcgKzI1MCwxNSBAQCBzdGF0aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoY29uc3QgU3RyaW5n
JiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsCiAgICAgICAgIHJldHVybiBm
bG9hdCgxMC4wKTsKIAogICAgIGJvb2wgb2s7Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmlu
Zy50b0Zsb2F0KCZvayk7Ci0gICAgaWYgKCFvaykgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdh
cm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwga2V5U3Ry
aW5nKTsKKyAgICBmbG9hdCB2YWx1ZSA9IG51bWVyaWNQcmVmaXgoa2V5U3RyaW5nLCB2YWx1ZVN0
cmluZywgZG9jdW1lbnQsICZvayk7CisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZsb2F0
KDAuMCk7Ci0gICAgfQogCiAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIFZpZXdw
b3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAKICAgICBpZiAodmFsdWUgPiAxMC4wKQotICAgICAg
ICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIE1heGltdW1TY2FsZVRvb0xhcmdlRXJy
b3IsIGtleVN0cmluZyk7CisgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwg
TWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvciwgU3RyaW5nKCksIFN0cmluZygpKTsKIAogICAgIHJl
dHVybiB2YWx1ZTsKIH0KQEAgLTI2MywxMSArMjgxLDkgQEAgc3RhdGljIGJvb2wgZmluZFVzZXJT
Y2FsYWJsZVZhbHVlKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVl
U3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIG9rOwotICAgIGZsb2F0IHZhbHVl
ID0gdmFsdWVTdHJpbmcudG9GbG9hdCgmb2spOwotICAgIGlmICghb2spIHsKLSAgICAgICAgcmVw
b3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50
RXJyb3IsIGtleVN0cmluZyk7CisgICAgZmxvYXQgdmFsdWUgPSBudW1lcmljUHJlZml4KGtleVN0
cmluZywgdmFsdWVTdHJpbmcsIGRvY3VtZW50LCAmb2spOworICAgIGlmICghb2spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICBpZiAoZmFicyh2YWx1ZSkgPCAxKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yODcsMTQgKzMwMywxMiBAQCBzdGF0aWMgZmxvYXQgZmluZFRh
cmdldERlbnNpdHlEUElWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5n
JiB2YQogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlSGlnaERQSTsKIAog
ICAgIGJvb2wgb2s7Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCZvayk7
Ci0gICAgaWYgKCFvaykgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQs
IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwga2V5U3RyaW5nKTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG51bWVyaWNQcmVmaXgoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQs
ICZvayk7CisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpW
YWx1ZUF1dG87Ci0gICAgfQogCiAgICAgIGlmICh2YWx1ZSA8IDcwIHx8IHZhbHVlID4gNDAwKSB7
Ci0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVGFyZ2V0RGVuc2l0eURw
aVRvb1NtYWxsT3JMYXJnZUVycm9yLCBrZXlTdHJpbmcpOworICAgICAgICByZXBvcnRWaWV3cG9y
dFdhcm5pbmcoZG9jdW1lbnQsIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFyZ2VFcnJvciwg
U3RyaW5nKCksIFN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpW
YWx1ZUF1dG87CiAgICAgfQogCkBAIC0zMjYsOCArMzQwLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2Rl
KQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZp
ZXdwb3J0IHdpZHRoIG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkg
dXNpbmcgXCJkZXZpY2Utd2lkdGhcIiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0
aWJpbGl0eS4iLAogICAgICAgICAiVmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5
c2ljYWwgZGV2aWNlIGhlaWdodCwgdHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50
IGluc3RlYWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LiIsCi0gICAgICAgICJWaWV3cG9ydCBh
cmd1bWVudCBcIiVyZXBsYWNlbWVudFwiIG5vdCByZWNvZ25pemVkLiBDb250ZW50IGlnbm9yZWQu
IiwKLSAgICAgICAgIlZpZXdwb3J0IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFu
IDEwLjAuICBUaGUgbWF4aW11bS1zY2FsZSB3aWxsIGJlIHNldCB0byAxMC4wLiIsCisgICAgICAg
ICJWaWV3cG9ydCBhcmd1bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJl
cGxhY2VtZW50MlwiIG5vdCByZWNvZ25pemVkLiBDb250ZW50IGlnbm9yZWQuIiwKKyAgICAgICAg
IlZpZXdwb3J0IGFyZ3VtZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVw
bGFjZW1lbnQyXCIgd2FzIHRydW5jYXRlZCB0byBpdHMgbnVtZXJpYyBwcmVmaXguIiwKKyAgICAg
ICAgIlZpZXdwb3J0IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRo
ZSBtYXhpbXVtLXNjYWxlIHdpbGwgYmUgc2V0IHRvIDEwLjAuIiwKICAgICAgICAgIlZpZXdwb3J0
IHRhcmdldC1kZW5zaXR5ZHBpIGhhcyB0byB0YWtlIGEgbnVtYmVyIGJldHdlZW4gNzAgYW5kIDQw
MCBhcyBhIHZhbGlkIHRhcmdldCBkcGksIHRyeSB1c2luZyBcImRldmljZS1kcGlcIiwgXCJsb3ct
ZHBpXCIsIFwibWVkaXVtLWRwaVwiIG9yIFwiaGlnaC1kcGlcIiBpbnN0ZWFkIGZvciBmdXR1cmUg
Y29tcGF0aWJpbGl0eS4iCiAgICAgfTsKIApAQCAtMzM2LDcgKzM1MSwxOSBAQCBzdGF0aWMgY29u
c3QgY2hhciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBl
cnJvckNvZGUpCiAKIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZl
bChWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiB7Ci0gICAgcmV0dXJuIGVycm9yQ29kZSA9
PSBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JDb2RlID09IE1heGlt
dW1TY2FsZVRvb0xhcmdlRXJyb3IgPyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRpcE1lc3NhZ2VMZXZl
bDsKKyAgICBzd2l0Y2ggKGVycm9yQ29kZSkgeworICAgIGNhc2UgRGV2aWNlV2lkdGhTaG91bGRC
ZVVzZWRXYXJuaW5nOgorICAgIGNhc2UgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZzoK
KyAgICBjYXNlIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yOgorICAgIGNhc2Ug
VGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9yOgorICAgICAgICByZXR1cm4gVGlw
TWVzc2FnZUxldmVsOworICAgIGNhc2UgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9y
OgorICAgIGNhc2UgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKKyAgICAgICAgcmV0dXJuIEVy
cm9yTWVzc2FnZUxldmVsOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gRXJyb3JNZXNzYWdlTGV2ZWw7CisgICAgfQogfQogCiAvLyBG
SVhNRTogV2h5IGlzIHRoaXMgZGlmZmVyZW50IGZyb20gU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHBh
cnNlckxpbmVOdW1iZXI/CkBAIC0zNTEsMTQgKzM3OCwxNyBAQCBzdGF0aWMgaW50IHBhcnNlckxp
bmVOdW1iZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1i
ZXIoKSArIDE7CiB9CiAKLXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1
bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50KQordm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3
cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50MikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
bWVzc2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKLSAgICBt
ZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKKyAgICBpZiAoIXJl
cGxhY2VtZW50MS5pc051bGwoKSkKKyAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1l
bnQxIiwgcmVwbGFjZW1lbnQxKTsKKyAgICBpZiAoIXJlcGxhY2VtZW50Mi5pc051bGwoKSkKKyAg
ICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQyIiwgcmVwbGFjZW1lbnQyKTsKIAog
ICAgIGZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdl
U291cmNlLCBMb2dNZXNzYWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNv
ZGUpLCBtZXNzYWdlLCBwYXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgZG9jdW1lbnQtPnVybCgp
LnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXgg
NGY2NzhmMy4uMzM5MzQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgK
QEAgLTM4LDYgKzM4LDcgQEAgZW51bSBWaWV3cG9ydEVycm9yQ29kZSB7CiAgICAgRGV2aWNlV2lk
dGhTaG91bGRCZVVzZWRXYXJuaW5nLAogICAgIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5p
bmcsCiAgICAgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLAorICAgIFRydW5jYXRl
ZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLAogICAgIE1heGltdW1TY2FsZVRvb0xhcmdlRXJy
b3IsCiAgICAgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9yCiB9OwpAQCAtMTAy
LDcgKzEwMyw3IEBAIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiBWaWV3cG9ydEF0dHJpYnV0
ZXMgY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9ydEFyZ3VtZW50cyBhcmdzLCBpbnQg
ZGVza3RvcFdpZHRoLCBpbnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBkZXZp
Y2VEUEksIEludFNpemUgdmlzaWJsZVZpZXdwb3J0KTsKIAogdm9pZCBzZXRWaWV3cG9ydEZlYXR1
cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERv
Y3VtZW50Kiwgdm9pZCogZGF0YSk7Ci12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVu
dCosIFZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKK3ZvaWQg
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiwgVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50Mik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>
<flag name="review"
          id="74999"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="75000"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83612</attachid>
            <date>2011-02-23 23:39:28 -0800</date>
            <delta_ts>2011-02-24 00:16:01 -0800</delta_ts>
            <desc>[PATCH] Add didReadNumber to toFloat / toDecimal to clarify if &quot;ok&quot; means garbage at end</desc>
            <filename>winner.patch</filename>
            <type>text/plain</type>
            <size>19901</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDJhY2JjLi44YzI3MWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDIt
MjMgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBwYXJzaW5nIG5vIGxv
bmdlciBhY2NlcHRzICIxLjA7IiB2YWx1ZSBhcyB2YWxpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA1CisKKyAgICAgICAgQWRkIGEgbmV3IHRl
c3QgdG8gY2hlY2sgdmlld3BvcnQgYXJndW1lbnQgcGFyc2luZyBvZgorICAgICAgICB2YWx1ZSAi
MTIzeDQ1NiIsIHdoaWNoIGFsdGhvdWdoIG5vdCBjb21wbGV0ZWx5IGEgbnVtYmVyCisgICAgICAg
IHNob3VsZCByZXR1cm4gdGhlIG51bWVyaWMgcHJlZml4ICIxMjMiIGFzIHRoZSB2YWx1ZS4KKyAg
ICAgICAgTm90ZSB0aGF0IHRoaXMgYWZmZWN0cyAic2VtaWNvbG9ucyBhcyBzZXBhcmF0b3JzIiBl
dmVuCisgICAgICAgIHRob3VnaCBzZW1pY29sb25zIGFyZSBub3QgdmFsaWQgc2VwYXJhdG9ycy4K
KworICAgICAgICAqIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5Lmh0bWw6IEFkZGVkLgorCiAy
MDExLTAyLTIzICBNT1JJVEEgSGFqaW1lIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCB1bnNraXBwaW5nIGFub3RoZXIgcGFzc2VkIHRlc3RzLiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3ZpZXdwb3J0L3ZpZXdwb3J0LTEyOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjk4MTdlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3ZpZXdwb3J0L3ZpZXdwb3J0LTEyOS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxoZWFkPgorICAg
IDx0aXRsZT5DaGVjayB0aGF0IG51bWJlciBwYXJzaW5nIHN0b3BzIGF0IHRoZSBmaXJzdCBub24t
bnVtYmVyIGNoYXJhY3RlcnMgYW5kIHN0aWxsIHVzZXMgdGhlIG51bWVyaWMgcHJlZml4LjwvdGl0
bGU+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPTEyM3g0NTYiPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoMzIwLCAzNTIpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKTsiPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZWY5OGQxNy4uZDE0YWEyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDItMjMgIEpvc2Vw
aCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBwYXJzaW5nIG5vIGxvbmdlciBhY2Nl
cHRzICIxLjA7IiB2YWx1ZSBhcyB2YWxpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUzNzA1CisKKyAgICAgICAgSW5jbHVkZSBhIGRpZFJlYWROdW1i
ZXIgcGFyYW1ldGVyIHRvIFN0cmluZyAtPiBmbG9hdCAvIGRvdWJsZQorICAgICAgICBjb252ZXJz
aW9uIGZ1bmN0aW9ucy4gVGhpcyB3YXksIGlmIHRoZSAib2siIGJvb2xlYW4gb3V0CisgICAgICAg
IHBhcmFtZXRlciBpcyBmYWxzZSwgeW91IGNhbiBjaGVjayB0byBzZWUgaWYgdGhlcmUgaW4gZmFj
dAorICAgICAgICB3YXMgYSB2YWxpZCBudW1iZXIgcGFyc2VkIHdpdGggZ2FyYmFnZSBhdCB0aGUg
ZW5kLiBFeGFtcGxlcworICAgICAgICBvZiB0aGF0IHdvdWxkIGJlIHBhcnNpbmcgIjEyM3g0NTYi
IHdvdWxkIGhhdmUgb2sgPSBmYWxzZSwKKyAgICAgICAgYnV0IGRpZFJlYWROdW1iZXIgPSB0cnVl
LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIHd0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0b0RvdWJsZSk6CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6OnRvRmxvYXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnRvRG91YmxlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjp0b0Zsb2F0KToKKyAg
ICAgICAgKFdURjo6Y2hhcmFjdGVyc1RvRG91YmxlKToKKyAgICAgICAgKFdURjo6Y2hhcmFjdGVy
c1RvRmxvYXQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorCiAyMDExLTAyLTIz
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApp
bmRleCA3M2QxMTliLi5iYTIyYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKQEAgLTQwNiwxMyArNDA2LDEzIEBAIF9fWk4zV1RGMTVjaGFyYWN0ZXJzVG9JbnRF
UEt0bVBiCiBfX1pOM1dURjE2Y2FsbE9uTWFpblRocmVhZEVQRnZQdkVTMF8KIF9fWk4zV1RGMTZj
b2RlUG9pbnRDb21wYXJlRVJLTlNfNlN0cmluZ0VTMl8KIF9fWk4zV1RGMTZmYXN0WmVyb2VkTWFs
bG9jRW0KLV9fWk4zV1RGMTdjaGFyYWN0ZXJzVG9GbG9hdEVQS3RtUGIKK19fWk4zV1RGMTdjaGFy
YWN0ZXJzVG9GbG9hdEVQS3RtUGJTMl8KIF9fWk4zV1RGMTdlcXVhbElnbm9yaW5nQ2FzZUVQS3RQ
S2NqCiBfX1pOM1dURjE3ZXF1YWxJZ25vcmluZ0Nhc2VFUE5TXzEwU3RyaW5nSW1wbEVQS2MKIF9f
Wk4zV1RGMTdlcXVhbElnbm9yaW5nQ2FzZUVQTlNfMTBTdHJpbmdJbXBsRVMxXwogX19aTjNXVEYx
OGNhbGN1bGF0ZURTVE9mZnNldEVkZAogX19aTjNXVEYxOGNhbGN1bGF0ZVVUQ09mZnNldEV2Ci1f
X1pOM1dURjE4Y2hhcmFjdGVyc1RvRG91YmxlRVBLdG1QYgorX19aTjNXVEYxOGNoYXJhY3RlcnNU
b0RvdWJsZUVQS3RtUGJTMl8KIF9fWk4zV1RGMThkYXRlVG9EYXlzRnJvbTE5NzBFaWlpCiBfX1pO
M1dURjE4bW9udGhGcm9tRGF5SW5ZZWFyRWliCiBfX1pOM1dURjE5aW5pdGlhbGl6ZVRocmVhZGlu
Z0V2CkBAIC01NzcsOSArNTc3LDkgQEAgX19aTkszV1RGNlN0cmluZzV0b0ludEVQYgogX19aTksz
V1RGNlN0cmluZzV1cHBlckV2CiBfX1pOSzNXVEY2U3RyaW5nNmxhdGluMUV2CiBfX1pOSzNXVEY2
U3RyaW5nNnRvVUludEVQYgotX19aTkszV1RGNlN0cmluZzd0b0Zsb2F0RVBiCitfX1pOSzNXVEY2
U3RyaW5nN3RvRmxvYXRFUGJTMV8KIF9fWk5LM1dURjZTdHJpbmc4Zm9sZENhc2VFdgotX19aTksz
V1RGNlN0cmluZzh0b0RvdWJsZUVQYgorX19aTkszV1RGNlN0cmluZzh0b0RvdWJsZUVQYlMxXwog
X19aTkszV1RGNlN0cmluZzh0b0ludFB0ckVQYgogX19aTkszV1RGNlN0cmluZzh0b1VJbnQ2NEVQ
YgogX19aTkszV1RGNlN0cmluZzlzdWJzdHJpbmdFamoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA3MTdmMTc1Li45YWZkMWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC00NTgsMTQg
KzQ1OCwxNCBAQCBpbnRwdHJfdCBTdHJpbmdJbXBsOjp0b0ludFB0cihib29sKiBvaykKICAgICBy
ZXR1cm4gY2hhcmFjdGVyc1RvSW50UHRyKG1fZGF0YSwgbV9sZW5ndGgsIG9rKTsKIH0KIAotZG91
YmxlIFN0cmluZ0ltcGw6OnRvRG91YmxlKGJvb2wqIG9rKQorZG91YmxlIFN0cmluZ0ltcGw6OnRv
RG91YmxlKGJvb2wqIG9rLCBib29sKiBkaWRSZWFkTnVtYmVyKQogewotICAgIHJldHVybiBjaGFy
YWN0ZXJzVG9Eb3VibGUobV9kYXRhLCBtX2xlbmd0aCwgb2spOworICAgIHJldHVybiBjaGFyYWN0
ZXJzVG9Eb3VibGUobV9kYXRhLCBtX2xlbmd0aCwgb2ssIGRpZFJlYWROdW1iZXIpOwogfQogCi1m
bG9hdCBTdHJpbmdJbXBsOjp0b0Zsb2F0KGJvb2wqIG9rKQorZmxvYXQgU3RyaW5nSW1wbDo6dG9G
bG9hdChib29sKiBvaywgYm9vbCogZGlkUmVhZE51bWJlcikKIHsKLSAgICByZXR1cm4gY2hhcmFj
dGVyc1RvRmxvYXQobV9kYXRhLCBtX2xlbmd0aCwgb2spOworICAgIHJldHVybiBjaGFyYWN0ZXJz
VG9GbG9hdChtX2RhdGEsIG1fbGVuZ3RoLCBvaywgZGlkUmVhZE51bWJlcik7CiB9CiAKIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCBpbnQgbGVuZ3RoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggNGFkMmRl
Yy4uYTA4NDI3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCkBAIC0yODEsOCArMjgxLDggQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHRvVUludDY0KGJv
b2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogICAgIGludHB0cl90IHRv
SW50UHRyKGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi0gICAg
ZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCk7Ci0gICAgZmxvYXQgdG9GbG9hdChib29sKiBv
ayA9IDApOworICAgIGRvdWJsZSB0b0RvdWJsZShib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWRO
dW1iZXIgPSAwKTsKKyAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVh
ZE51bWJlciA9IDApOwogCiAgICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwogICAg
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggYjliNGU3NC4uZDg2MmY5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTU2MSwyNCArNTYx
LDI4IEBAIGludHB0cl90IFN0cmluZzo6dG9JbnRQdHIoYm9vbCogb2spIGNvbnN0CiAgICAgcmV0
dXJuIG1faW1wbC0+dG9JbnRQdHIob2spOwogfQogCi1kb3VibGUgU3RyaW5nOjp0b0RvdWJsZShi
b29sKiBvaykgY29uc3QKK2RvdWJsZSBTdHJpbmc6OnRvRG91YmxlKGJvb2wqIG9rLCBib29sKiBk
aWRSZWFkTnVtYmVyKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKSB7CiAgICAgICAgIGlmIChv
aykKICAgICAgICAgICAgICpvayA9IGZhbHNlOworICAgICAgICBpZiAoZGlkUmVhZE51bWJlcikK
KyAgICAgICAgICAgICpkaWRSZWFkTnVtYmVyID0gZmFsc2U7CiAgICAgICAgIHJldHVybiAwLjA7
CiAgICAgfQotICAgIHJldHVybiBtX2ltcGwtPnRvRG91YmxlKG9rKTsKKyAgICByZXR1cm4gbV9p
bXBsLT50b0RvdWJsZShvaywgZGlkUmVhZE51bWJlcik7CiB9CiAKLWZsb2F0IFN0cmluZzo6dG9G
bG9hdChib29sKiBvaykgY29uc3QKK2Zsb2F0IFN0cmluZzo6dG9GbG9hdChib29sKiBvaywgYm9v
bCogZGlkUmVhZE51bWJlcikgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkgewogICAgICAgICBp
ZiAob2spCiAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKKyAgICAgICAgaWYgKGRpZFJlYWROdW1i
ZXIpCisgICAgICAgICAgICAqZGlkUmVhZE51bWJlciA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
MC4wZjsKICAgICB9Ci0gICAgcmV0dXJuIG1faW1wbC0+dG9GbG9hdChvayk7CisgICAgcmV0dXJu
IG1faW1wbC0+dG9GbG9hdChvaywgZGlkUmVhZE51bWJlcik7CiB9CiAKIFN0cmluZyBTdHJpbmc6
OnRocmVhZHNhZmVDb3B5KCkgY29uc3QKQEAgLTkzNywxMSArOTQxLDEzIEBAIGludHB0cl90IGNo
YXJhY3RlcnNUb0ludFB0cihjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCiAgICAgcmV0dXJuIHRvSW50ZWdyYWxUeXBlPGludHB0cl90PihkYXRhLCBsZW5ndGhPZkNo
YXJhY3RlcnNBc0ludGVnZXIoZGF0YSwgbGVuZ3RoKSwgb2ssIDEwKTsKIH0KIAotZG91YmxlIGNo
YXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCog
b2spCitkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywgYm9vbCogZGlkUmVhZE51bWJlcikKIHsKICAgICBpZiAoIWxlbmd0
aCkgewogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAqb2sgPSBmYWxzZTsKKyAgICAgICAg
aWYgKGRpZFJlYWROdW1iZXIpCisgICAgICAgICAgICAqZGlkUmVhZE51bWJlciA9IGZhbHNlOwog
ICAgICAgICByZXR1cm4gMC4wOwogICAgIH0KIApAQCAtOTQ5LDE3ICs5NTUsMjAgQEAgZG91Ymxl
IGNoYXJhY3RlcnNUb0RvdWJsZShjb25zdCBVQ2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9v
bCogb2spCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAg
ICBieXRlc1tpXSA9IGRhdGFbaV0gPCAweDdGID8gZGF0YVtpXSA6ICc/JzsKICAgICBieXRlc1ts
ZW5ndGhdID0gJ1wwJzsKKyAgICBjaGFyKiBzdGFydCA9IGJ5dGVzLmRhdGEoKTsKICAgICBjaGFy
KiBlbmQ7Ci0gICAgZG91YmxlIHZhbCA9IFdURjo6c3RydG9kKGJ5dGVzLmRhdGEoKSwgJmVuZCk7
CisgICAgZG91YmxlIHZhbCA9IFdURjo6c3RydG9kKHN0YXJ0LCAmZW5kKTsKICAgICBpZiAob2sp
CiAgICAgICAgICpvayA9IChlbmQgPT0gMCB8fCAqZW5kID09ICdcMCcpOworICAgIGlmIChkaWRS
ZWFkTnVtYmVyKQorICAgICAgICAqZGlkUmVhZE51bWJlciA9IGVuZCAtIHN0YXJ0OwogICAgIHJl
dHVybiB2YWw7CiB9CiAKLWZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaykKK2Zsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0
IFVDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywgYm9vbCogZGlkUmVhZE51bWJl
cikKIHsKICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIHJldHVybiBvayBldmVuIHdoZW4gdGhlIHN0
cmluZyBmaXRzIGludG8gYSBkb3VibGUgYnV0IG5vdCBhIGZsb2F0LgotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oY2hhcmFjdGVyc1RvRG91YmxlKGRhdGEsIGxlbmd0aCwgb2spKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYXJhY3RlcnNUb0RvdWJsZShkYXRhLCBsZW5n
dGgsIG9rLCBkaWRSZWFkTnVtYmVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDBhYzhmMGUuLjcxM2E2
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTc5
LDggKzc5LDggQEAgaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0cmFpbGkKIHVpbnQ2NF90IGNoYXJhY3RlcnNU
b1VJbnQ2NChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSAwKTsgLy8gaWdub3JlcyB0
cmFpbGluZyBnYXJiYWdlCiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHIoY29uc3QgVUNoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gMCk7IC8vIGlnbm9yZXMgdHJhaWxpbmcgZ2FyYmFnZQogCi1k
b3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9
IDApOwotZmxvYXQgY2hhcmFjdGVyc1RvRmxvYXQoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wq
IG9rID0gMCk7Citkb3VibGUgY2hhcmFjdGVyc1RvRG91YmxlKGNvbnN0IFVDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJlYWROdW1iZXIgPSAwKTsKK2Zsb2F0IGNoYXJhY3Rl
cnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IDAsIGJvb2wqIGRpZFJl
YWROdW1iZXIgPSAwKTsKIAogdGVtcGxhdGU8Ym9vbCBpc1NwZWNpYWxDaGFyYWN0ZXIoVUNoYXIp
PiBib29sIGlzQWxsU3BlY2lhbENoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogCkBA
IC0yNjksOCArMjY5LDggQEAgcHVibGljOgogICAgIGludDY0X3QgdG9JbnQ2NChib29sKiBvayA9
IDApIGNvbnN0OwogICAgIHVpbnQ2NF90IHRvVUludDY0KGJvb2wqIG9rID0gMCkgY29uc3Q7CiAg
ICAgaW50cHRyX3QgdG9JbnRQdHIoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBkb3VibGUgdG9E
b3VibGUoYm9vbCogb2sgPSAwKSBjb25zdDsKLSAgICBmbG9hdCB0b0Zsb2F0KGJvb2wqIG9rID0g
MCkgY29uc3Q7CisgICAgZG91YmxlIHRvRG91YmxlKGJvb2wqIG9rID0gMCwgYm9vbCogZGlkUmVh
ZE51bWJlciA9IDApIGNvbnN0OworICAgIGZsb2F0IHRvRmxvYXQoYm9vbCogb2sgPSAwLCBib29s
KiBkaWRSZWFkTnVtYmVyID0gMCkgY29uc3Q7CiAKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBw
ZXJjZW50YWdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGI1M2Q4OTguLjNjNGY5ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMS0wMi0yMyAgSm9zZXBoIFBlY29yYXJvICA8am9l
cGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFZpZXdwb3J0IHBhcnNpbmcgbm8gbG9uZ2VyIGFjY2VwdHMgIjEuMDsiIHZhbHVl
IGFzIHZhbGlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTM3MDUKKworICAgICAgICBXaGVuIHBhcnNpbmcgbnVtZXJpYyB2YWx1ZXMsIHRoZSAiY3Nz
LXZpZXdwb3J0IiBzcGVjIHNheXMKKyAgICAgICAgdG8gdXNlIHRoZSBudW1iZXIgcHJlZml4LCBh
bmQgdGhlIG5vbiBudW1lcmljIHBhcnQgb2YgdGhlCisgICAgICAgIHN0cmluZyBjYW4gYmUgaWdu
b3JlZC4gVGhpcyBtYXRjaGVzIG91ciBiZWhhdmlvciBiZWZvcmUKKyAgICAgICAgcjY3Mzc2LiBU
aGUgY2hhbmdlIHdhcyB0aGF0IGNoZWNraW5nIHRoZSBlcnJvciBvdXQgY29uZGl0aW9uCisgICAg
ICAgIG9mIFN0cmluZzo6dG9GbG9hdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCB0aGVy
ZQorICAgICAgICB3YXMgYSBub24tbnVtZXJpYyBwcmVmaXguIFRoaXMgcGF0Y2ggY2hlY2tzIGlm
IHRoZXJlIHdhcworICAgICAgICBvciB3YXNuJ3QgYSBub24tbnVtZXJpYyBwcmVmaXguCisKKyAg
ICAgICAgVGhlcmUgaXMgYSBjb25zb2xlIHdhcm5pbmcgaW4gYW55IGNhc2Ugd2hlcmUgYSBudW1l
cmljCisgICAgICAgIHZhbHVlIGlzIG5vdCBwYXJzZWQgY2xlYW5seS4gVGhlcmUgaXMgYW4gZXJy
b3Igd2FybmluZworICAgICAgICB3aGVuIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIGFuZCBh
IHRpcCB3YXJuaW5nIHdoZW4KKyAgICAgICAgaXQgaGFzIGJlZW4gdHJ1bmNhdGVkLgorCisgICAg
ICAgIEVycm9yIG1lc3NhZ2VzIGFyZSBzbGlnaHRseSBpbXByb3ZlZCB0byBwcm92aWRlIG1vcmUK
KyAgICAgICAgY29udGV4dCwgYm90aCB0aGUga2V5IGFuZCB2YWx1ZSwgd2hlbiBhbiBlcnJvciBo
YXBwZW5zLgorCisgICAgICAgIFRlc3Q6IGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5Lmh0bWwK
KworICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpudW1lcmljUHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmluZFNjYWxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFVz
ZXJTY2FsYWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRUYXJnZXREZW5zaXR5RFBJ
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjp2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0V2FybmluZyk6CisgICAgICAgICogZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmg6CisKIDIwMTEtMDItMjMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3OTUxMC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IDZkZDFiOGEuLjc4
ZmJmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMyw3
ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJr
aXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCkBAIC0x
NzgsNiArMTc4LDI3IEBAIFZpZXdwb3J0QXR0cmlidXRlcyBjb21wdXRlVmlld3BvcnRBdHRyaWJ1
dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3MsIGludCBkZXNrdG9wCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoY29uc3QgU3RyaW5nJiBrZXlTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCog
b2spCit7CisgICAgLy8gSWYgYSBwcmVmaXggb2YgcHJvcGVydHktdmFsdWUgY2FuIGJlIGNvbnZl
cnRlZCB0byBhIG51bWJlciB1c2luZyBzdHJ0b2QsCisgICAgLy8gdGhlIHZhbHVlIHdpbGwgYmUg
dGhhdCBudW1iZXIuIFRoZSByZW1haW5kZXIgb2YgdGhlIHN0cmluZyBpcyBpZ25vcmVkLgorICAg
IC8vIFNvIHdoZW4gU3RyaW5nOjp0b0Zsb2F0IHNheXMgdGhlcmUgaXMgYW4gZXJyb3IsIGl0IG1h
eSBiZSBhIGZhbHNlIHBvc2l0aXZlLAorICAgIC8vIGFuZCB3ZSBzaG91bGQgY2hlY2sgaWYgdGhl
IHZhbHVlU3RyaW5nIHByZWZpeCB3YXMgYSBudW1iZXIuCisKKyAgICBib29sIGRpZFJlYWROdW1i
ZXI7CisgICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KG9rLCAmZGlkUmVhZE51
bWJlcik7CisgICAgaWYgKCEqb2spIHsKKyAgICAgICAgaWYgKCFkaWRSZWFkTnVtYmVyKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2Fy
bmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLCB2YWx1ZVN0
cmluZywga2V5U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICAqb2sgPSB0cnVlOworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIFRydW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1ZVN0cmluZywga2V5
U3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBzdGF0aWMgZmxvYXQgZmlu
ZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0
cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIC8vIDEpIE5vbi1uZWdhdGl2ZSBudW1i
ZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIHB4IGxlbmd0aHMuCkBAIC0xOTMsMTkgKzIxNCwx
NyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywg
Y29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRAogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1
bWVudHM6OlZhbHVlRGV2aWNlSGVpZ2h0OwogCiAgICAgYm9vbCBvazsKLSAgICBmbG9hdCB2YWx1
ZSA9IHZhbHVlU3RyaW5nLnRvRmxvYXQoJm9rKTsKLSAgICBpZiAoIW9rKSB7Ci0gICAgICAgIHJl
cG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVu
dEVycm9yLCBrZXlTdHJpbmcpOworICAgIGZsb2F0IHZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXlT
dHJpbmcsIHZhbHVlU3RyaW5nLCBkb2N1bWVudCwgJm9rKTsKKyAgICBpZiAoIW9rKQogICAgICAg
ICByZXR1cm4gZmxvYXQoMC4wKTsKLSAgICB9CiAKICAgICBpZiAodmFsdWUgPCAwKQogICAgICAg
ICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsKIAogICAgIGlmIChrZXlTdHJp
bmcgPT0gIndpZHRoIikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBE
ZXZpY2VXaWR0aFNob3VsZEJlVXNlZFdhcm5pbmcsIGtleVN0cmluZyk7CisgICAgICAgIHJlcG9y
dFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5n
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGtleVN0cmluZyA9PSAiaGVpZ2h0
IikKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBEZXZpY2VIZWlnaHRT
aG91bGRCZVVzZWRXYXJuaW5nLCBrZXlTdHJpbmcpOworICAgICAgICByZXBvcnRWaWV3cG9ydFdh
cm5pbmcoZG9jdW1lbnQsIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsIFN0cmluZygp
LCBTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0yMzAsMTcgKzI0OSwxNSBA
QCBzdGF0aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsCiAgICAgICAgIHJldHVybiBmbG9hdCgxMC4wKTsKIAog
ICAgIGJvb2wgb2s7Ci0gICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCZvayk7
Ci0gICAgaWYgKCFvaykgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQs
IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRFcnJvciwga2V5U3RyaW5nKTsKKyAgICBmbG9h
dCB2YWx1ZSA9IG51bWVyaWNQcmVmaXgoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQs
ICZvayk7CisgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZsb2F0KDAuMCk7Ci0gICAgfQog
CiAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpW
YWx1ZUF1dG87CiAKICAgICBpZiAodmFsdWUgPiAxMC4wKQotICAgICAgICByZXBvcnRWaWV3cG9y
dFdhcm5pbmcoZG9jdW1lbnQsIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsIGtleVN0cmluZyk7
CisgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9v
TGFyZ2VFcnJvciwgU3RyaW5nKCksIFN0cmluZygpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0K
QEAgLTI2MywxMSArMjgwLDkgQEAgc3RhdGljIGJvb2wgZmluZFVzZXJTY2FsYWJsZVZhbHVlKGNv
bnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3QKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBib29sIG9rOwotICAgIGZsb2F0IHZhbHVlID0gdmFsdWVTdHJpbmcu
dG9GbG9hdCgmb2spOwotICAgIGlmICghb2spIHsKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJu
aW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50RXJyb3IsIGtleVN0cmlu
Zyk7CisgICAgZmxvYXQgdmFsdWUgPSBudW1lcmljUHJlZml4KGtleVN0cmluZywgdmFsdWVTdHJp
bmcsIGRvY3VtZW50LCAmb2spOworICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CiAKICAgICBpZiAoZmFicyh2YWx1ZSkgPCAxKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yODcsMTQgKzMwMiwxMiBAQCBzdGF0aWMgZmxvYXQgZmluZFRhcmdldERlbnNpdHlEUElW
YWx1ZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YQogICAgICAgICBy
ZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlSGlnaERQSTsKIAogICAgIGJvb2wgb2s7Ci0g
ICAgZmxvYXQgdmFsdWUgPSB2YWx1ZVN0cmluZy50b0Zsb2F0KCZvayk7Ci0gICAgaWYgKCFvaykg
ewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZp
ZXdwb3J0QXJndW1lbnRFcnJvciwga2V5U3RyaW5nKTsKKyAgICBmbG9hdCB2YWx1ZSA9IG51bWVy
aWNQcmVmaXgoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQsICZvayk7CisgICAgaWYg
KCFvaykKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87Ci0gICAg
fQogCiAgICAgIGlmICh2YWx1ZSA8IDcwIHx8IHZhbHVlID4gNDAwKSB7Ci0gICAgICAgIHJlcG9y
dFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVGFyZ2V0RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJn
ZUVycm9yLCBrZXlTdHJpbmcpOworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIFRhcmdldERlbnNpdHlEcGlUb29TbWFsbE9yTGFyZ2VFcnJvciwgU3RyaW5nKCksIFN0cmlu
ZygpKTsKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAg
fQogCkBAIC0zMjYsOCArMzM5LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0RXJyb3JN
ZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKICAgICAgICAgIlZpZXdwb3J0IHdpZHRoIG9y
IGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIHdpZHRoLCB0cnkgdXNpbmcgXCJkZXZpY2Ut
d2lkdGhcIiBjb25zdGFudCBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4iLAogICAg
ICAgICAiVmlld3BvcnQgaGVpZ2h0IG9yIGhlaWdodCBzZXQgdG8gcGh5c2ljYWwgZGV2aWNlIGhl
aWdodCwgdHJ5IHVzaW5nIFwiZGV2aWNlLWhlaWdodFwiIGNvbnN0YW50IGluc3RlYWQgZm9yIGZ1
dHVyZSBjb21wYXRpYmlsaXR5LiIsCi0gICAgICAgICJWaWV3cG9ydCBhcmd1bWVudCBcIiVyZXBs
YWNlbWVudFwiIG5vdCByZWNvZ25pemVkLiBDb250ZW50IGlnbm9yZWQuIiwKLSAgICAgICAgIlZp
ZXdwb3J0IG1heGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuICBUaGUgbWF4
aW11bS1zY2FsZSB3aWxsIGJlIHNldCB0byAxMC4wLiIsCisgICAgICAgICJWaWV3cG9ydCBhcmd1
bWVudCB2YWx1ZSBcIiVyZXBsYWNlbWVudDFcIiBmb3Iga2V5IFwiJXJlcGxhY2VtZW50MlwiIG5v
dCByZWNvZ25pemVkLiBDb250ZW50IGlnbm9yZWQuIiwKKyAgICAgICAgIlZpZXdwb3J0IGFyZ3Vt
ZW50IHZhbHVlIFwiJXJlcGxhY2VtZW50MVwiIGZvciBrZXkgXCIlcmVwbGFjZW1lbnQyXCIgd2Fz
IHRydW5jYXRlZCB0byBpdHMgbnVtZXJpYyBwcmVmaXguIiwKKyAgICAgICAgIlZpZXdwb3J0IG1h
eGltdW0tc2NhbGUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDEwLjAuIFRoZSBtYXhpbXVtLXNjYWxl
IHdpbGwgYmUgc2V0IHRvIDEwLjAuIiwKICAgICAgICAgIlZpZXdwb3J0IHRhcmdldC1kZW5zaXR5
ZHBpIGhhcyB0byB0YWtlIGEgbnVtYmVyIGJldHdlZW4gNzAgYW5kIDQwMCBhcyBhIHZhbGlkIHRh
cmdldCBkcGksIHRyeSB1c2luZyBcImRldmljZS1kcGlcIiwgXCJsb3ctZHBpXCIsIFwibWVkaXVt
LWRwaVwiIG9yIFwiaGlnaC1kcGlcIiBpbnN0ZWFkIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eS4i
CiAgICAgfTsKIApAQCAtMzM2LDcgKzM1MCwxOSBAQCBzdGF0aWMgY29uc3QgY2hhciogdmlld3Bv
cnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAKIHN0
YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9y
Q29kZSBlcnJvckNvZGUpCiB7Ci0gICAgcmV0dXJuIGVycm9yQ29kZSA9PSBVbnJlY29nbml6ZWRW
aWV3cG9ydEFyZ3VtZW50RXJyb3IgfHwgZXJyb3JDb2RlID09IE1heGltdW1TY2FsZVRvb0xhcmdl
RXJyb3IgPyBFcnJvck1lc3NhZ2VMZXZlbCA6IFRpcE1lc3NhZ2VMZXZlbDsKKyAgICBzd2l0Y2gg
KGVycm9yQ29kZSkgeworICAgIGNhc2UgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRXYXJuaW5nOgor
ICAgIGNhc2UgRGV2aWNlSGVpZ2h0U2hvdWxkQmVVc2VkV2FybmluZzoKKyAgICBjYXNlIFRydW5j
YXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yOgorICAgIGNhc2UgVGFyZ2V0RGVuc2l0eURw
aVRvb1NtYWxsT3JMYXJnZUVycm9yOgorICAgICAgICByZXR1cm4gVGlwTWVzc2FnZUxldmVsOwor
ICAgIGNhc2UgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yOgorICAgIGNhc2UgTWF4
aW11bVNjYWxlVG9vTGFyZ2VFcnJvcjoKKyAgICAgICAgcmV0dXJuIEVycm9yTWVzc2FnZUxldmVs
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gRXJyb3JNZXNzYWdlTGV2ZWw7CisgICAgfQogfQogCiAvLyBGSVhNRTogV2h5IGlzIHRo
aXMgZGlmZmVyZW50IGZyb20gU1ZHRG9jdW1lbnRFeHRlbnNpb25zIHBhcnNlckxpbmVOdW1iZXI/
CkBAIC0zNTEsMTQgKzM3NywxNyBAQCBzdGF0aWMgaW50IHBhcnNlckxpbmVOdW1iZXIoRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIHJldHVybiBwYXJzZXItPmxpbmVOdW1iZXIoKSArIDE7CiB9CiAK
LXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3BvcnRF
cnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQordm9pZCByZXBv
cnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQqIGRvY3VtZW50LCBWaWV3cG9ydEVycm9yQ29kZSBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50MikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdw
b3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKLSAgICBtZXNzYWdlLnJlcGxhY2Uo
IiVyZXBsYWNlbWVudCIsIHJlcGxhY2VtZW50KTsKKyAgICBpZiAoIXJlcGxhY2VtZW50MS5pc051
bGwoKSkKKyAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQxIiwgcmVwbGFjZW1l
bnQxKTsKKyAgICBpZiAoIXJlcGxhY2VtZW50Mi5pc051bGwoKSkKKyAgICAgICAgbWVzc2FnZS5y
ZXBsYWNlKCIlcmVwbGFjZW1lbnQyIiwgcmVwbGFjZW1lbnQyKTsKIAogICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlLCBw
YXJzZXJMaW5lTnVtYmVyKGRvY3VtZW50KSwgZG9jdW1lbnQtPnVybCgpLnN0cmluZygpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXggNGY2NzhmMy4uMzM5MzQ1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTM4LDYgKzM4LDcg
QEAgZW51bSBWaWV3cG9ydEVycm9yQ29kZSB7CiAgICAgRGV2aWNlV2lkdGhTaG91bGRCZVVzZWRX
YXJuaW5nLAogICAgIERldmljZUhlaWdodFNob3VsZEJlVXNlZFdhcm5pbmcsCiAgICAgVW5yZWNv
Z25pemVkVmlld3BvcnRBcmd1bWVudEVycm9yLAorICAgIFRydW5jYXRlZFZpZXdwb3J0QXJndW1l
bnRWYWx1ZUVycm9yLAogICAgIE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsCiAgICAgVGFyZ2V0
RGVuc2l0eURwaVRvb1NtYWxsT3JMYXJnZUVycm9yCiB9OwpAQCAtMTAyLDcgKzEwMyw3IEBAIHN0
cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CiBWaWV3cG9ydEF0dHJpYnV0ZXMgY29tcHV0ZVZpZXdw
b3J0QXR0cmlidXRlcyhWaWV3cG9ydEFyZ3VtZW50cyBhcmdzLCBpbnQgZGVza3RvcFdpZHRoLCBp
bnQgZGV2aWNlV2lkdGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBkZXZpY2VEUEksIEludFNpemUg
dmlzaWJsZVZpZXdwb3J0KTsKIAogdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5n
JiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50Kiwgdm9pZCog
ZGF0YSk7Ci12b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCosIFZpZXdwb3J0RXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKK3ZvaWQgcmVwb3J0Vmlld3BvcnRX
YXJuaW5nKERvY3VtZW50KiwgVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50Mik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAo=
</data>
<flag name="review"
          id="75458"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="75459"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84300</attachid>
            <date>2011-03-01 14:59:35 -0800</date>
            <delta_ts>2011-03-01 16:28:17 -0800</delta_ts>
            <desc>[PATCH] Add Expected Results</desc>
            <filename>add-expected-results.patch</filename>
            <type>text/plain</type>
            <size>1088</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMWFkODRhLi45NTA2OTU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTEtMDMt
MDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBWaWV3cG9ydCBwYXJzaW5nIG5vIGxv
bmdlciBhY2NlcHRzICIxLjA7IiB2YWx1ZSBhcyB2YWxpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzA1CisKKyAgICAgICAgQWRkaW5nIGV4cGVj
dGVkIHJlc3VsdHMgZ2VuZXJhdGVkIGZyb20gdGhlIGJ1aWxkLWJvdC4gVGhleSBsb29rCisgICAg
ICAgIGNvcnJlY3QsIGFzIHRoZSB2aWV3cG9ydCAiMTIzeDEzNSIgaGFzIHRoZSBleHBlY3RlZCB3
aWR0aCBvZiAiMTIzIi4KKworICAgICAgICAqIGZhc3Qvdmlld3BvcnQvdmlld3BvcnQtMTI5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKKzIwMTEtMDMtMDEgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBl
Y2tAd2Via2l0Lm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLCBmaXggR1RLIER1bXBSZW5kZXJU
cmVlIGNyYXNoLgogCiAgICAgICAgIFZpZXdwb3J0IHBhcnNpbmcgbm8gbG9uZ2VyIGFjY2VwdHMg
IjEuMDsiIHZhbHVlIGFzIHZhbGlkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC92aWV3
cG9ydC92aWV3cG9ydC0xMjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC92aWV3cG9y
dC92aWV3cG9ydC0xMjktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjVmYmIxZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ZpZXdw
b3J0L3ZpZXdwb3J0LTEyOS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACit2aWV3cG9ydCBz
aXplIDEyM3gxMzUgc2NhbGUgMi42MDE2MjYgd2l0aCBsaW1pdHMgWzIuNjAxNjI2LCA1LjAwMDAw
MF0KKwo=
</data>
<flag name="review"
          id="76268"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="76269"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>