<?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>6282</bug_id>
          
          <creation_ts>2005-12-29 00:11:14 -0800</creation_ts>
          <short_desc>Adding new Option with new Option(text, value, defaultSelected, selected) fails to update selectedIndex</short_desc>
          <delta_ts>2006-06-17 08:32:57 -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>Forms</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>27096</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-29 00:11:14 -0800</bug_when>
    <thetext>Adding new Option with new Option(text, value, defaultSelected, selected) fails to update selectedIndex

to demonstrate:

var mySelect = document.getElementById(&quot;mySelect&quot;);
var prevSelection = mySelect.selectedIndex;
mySelect.options[mySelect.length] = new Option(&quot;text&quot;, &quot;value&quot;, true, true);
if (prevSelection == mySelect.selectedIndex)
    alert(&quot;Failure!&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>27102</commentid>
    <comment_count>1</comment_count>
      <attachid>5349</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-29 00:49:04 -0800</bug_when>
    <thetext>Created attachment 5349
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41447</commentid>
    <comment_count>2</comment_count>
      <attachid>8143</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-07 10:40:37 -0700</bug_when>
    <thetext>Created attachment 8143
Proposed fix

If I get it right, the selectedIndex only changes when new options are added, not
on replacements.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41453</commentid>
    <comment_count>3</comment_count>
      <attachid>8143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-07 11:06:04 -0700</bug_when>
    <thetext>Comment on attachment 8143
Proposed fix

Looks good.

+         m_element-&gt;setSelectedIndex( u );

We don&apos;t use parentheses around arguments like this. It should just be &quot;(u)&quot;.

This patch needs a test; we don&apos;t land bug fixes without tests. We need a test that demonstrates that this works, and also that demonstrates that modifying existing elements does *not* change the selected index (to test the &quot;diff &gt;= 0&quot; in this patch).

Finally, in the future if not in this patch, I&apos;d like to see a lot more of this in HTMLSelectElement. We don&apos;t want functions like this in the binding itself. JSHTMLSelectCollection::put should deal only with the conventions of how this feature works JavaScript-wise. Code like adding dummy option elements to padd out the array and selecting the newly-created element should be in HTMLSelectElement.

This function should be something like:

    if (propertyName == &quot;selectedIndex&quot;)
        m_element-&gt;setSelectedIndex(value-&gt;toInt32(exec));
    else if (propertyName == lengthPropertyName)
        m_element-&gt;setLength(value-&gt;toInt32(exec));
    else {
        bool ok;
        unsigned i = propertyName.toUInt32(&amp;ok);
        if (ok)
            m_element-&gt;setOption(i, toNode(value));
    }

It might have to be slightly more complicated than that, but should not be a lot more. The logic that&apos;s really about how select elements behave should be in HTMLSelectElement rather than the JavaScript binding.

review- because of the lack of a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41540</commentid>
    <comment_count>4</comment_count>
      <attachid>8172</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-08 13:51:00 -0700</bug_when>
    <thetext>Created attachment 8172
New patch after feedback from Darin

Hi Darin,

This new patch tries to solve some of the issues you raised. I agree with
your points about the js binding trying to do too much.
If you can give some pointers on the needed testcase I can add it quickly too.
Note that there already is a test for dynamic option replacement, so we may just need 1
for dynamic option additions?
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41564</commentid>
    <comment_count>5</comment_count>
      <attachid>8172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-08 20:01:03 -0700</bug_when>
    <thetext>Comment on attachment 8172
New patch after feedback from Darin

The structure of the new code looks good. Formatting needs a bit of improvement. Also, the code that&apos;s being moved into HTMLSelectElement has some old sloppiness that could be fixed while moving it.

We use &quot;unsigned&quot; rather than &quot;unsigned int&quot;. We use &quot;ExceptionCode&amp; exception&quot; rather than &quot;ExceptionCode &amp;exception&quot;. We use &quot;HTMLElement*&quot; rather than &quot;HTMLElement *&quot;.

+  if ( propertyName == &quot;selectedIndex&quot; )
     m_element-&gt;setSelectedIndex( value-&gt;toInt32( exec ) );
+  else {
     int exception = 0;
+    // resize ?
+    if (propertyName == lengthPropertyName) {

I&apos;d like to see the above use else if and have a separate section for each property. I don&apos;t think it does use good to share a single exception variable.

+      if( value-&gt;getUInt32(newLen)) {

Parenthesis placed wrong here.

+      unsigned int i = propertyName.toUInt32(&amp;ok);

Just unsigned will do.

I&apos;m not sure why we&apos;re using getUInt32 for setting length, toUInt32 for setting by index, and toInt32 for selectedIndex. We should test with non-integer values that can be converted to integers to see how this should work. The difference between getUInt32 and toUInt32 is that the former will not do type conversions.

+          m_element-&gt;setOption(i, toNode(value), exception);

We should test to see that when the value is something other than an option that we want to do nothing. Instead we should consider doing a remove.

I also think we may want to change HTMLSelectElement::setOption to take a HTMLOptionElement* parameter instead of a Node* and put the type checking in the language binding. That&apos;s parallel with what we usually do for DOM elements.

+    int diff = int(u) - length();

Should just be u - length() -- no need to cast to int. But if u is a very large value this will underflow. In general it would be best to put some kind of limit on this so we won&apos;t loop forever putting a huge number of option elements in if the passed-in value is a huge number.

+    int diff = length() - newLen;

Same issues. We could get an underflow if newLen is a huge number.

+    else // remove elements
+        while (diff-- &gt; 0)
+            remove(newLen);

This code would be faster if it always removed from the end.

Could save a little code in HTMLSelectElement::setOption by calling setLength(u - 1) in the case where diff &gt; 0 instead of having our own &quot;add dummy options&quot; loop.

In declarations we normally leave out parameter names exception when they make things clearer.

    void setOption(unsigned index, HTMLOptionElement*, ExceptionCode&amp;);
    void setLength(unsigned, ExceptionCode&amp;);

In the case of setLength, we know that the single parameter is the length.

As far as test cases are concerned, a good test needs to test all the code paths:

    1) setting length to a larger length
    2) setting length to a smaller length
    3) setting length to the same length
    4) setting length to non-integer values (null, undefined, non-numeric string, floating point number)
    5) setting an element by index past the end of the current list
    6) setting an existing element by index
    7) trying to set an element that&apos;s not an option element (null, undefined, other kinds of objects, other kinds of elements)

The test should verify how the selected index is affected by these various mutations, and also how the options in the select are affected. Need to test both a single-selection select and a multiple-selection select.

A truly thorough test would also monitor DOM mutation events to see things like whether a DOM element is removed and then added in cases like (6) above, but I don&apos;t think that&apos;s terribly important. And test behavior when a DOM mutation event handler completely changes around the list. Can you make one that causes setLength to infinite loop?

review- because there&apos;s no test yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41827</commentid>
    <comment_count>6</comment_count>
      <attachid>8201</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-10 00:33:17 -0700</bug_when>
    <thetext>Created attachment 8201
Better patch

This patch tries to address some of darin&apos;s issues with the previous patch.
I&apos;ll do a seperate entry to indicate what it fixes.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41835</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-05-10 00:37:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 8172 [edit])
&gt; The structure of the new code looks good. Formatting needs a bit of
&gt; improvement. Also, the code that&apos;s being moved into HTMLSelectElement has some
&gt; old sloppiness that could be fixed while moving it.

I agree.

&gt; We use &quot;unsigned&quot; rather than &quot;unsigned int&quot;. We use &quot;ExceptionCode&amp; exception&quot;
&gt; rather than &quot;ExceptionCode &amp;exception&quot;. We use &quot;HTMLElement*&quot; rather than
&gt; &quot;HTMLElement *&quot;.

I tried to address these points in the latest patch.

&gt; +  if ( propertyName == &quot;selectedIndex&quot; )
&gt;      m_element-&gt;setSelectedIndex( value-&gt;toInt32( exec ) );
&gt; +  else {
&gt;      int exception = 0;
&gt; +    // resize ?
&gt; +    if (propertyName == lengthPropertyName) {
&gt; 
&gt; I&apos;d like to see the above use else if and have a separate section for each
&gt; property. I don&apos;t think it does use good to share a single exception variable.

Should be fixed now.

&gt; +      if( value-&gt;getUInt32(newLen)) {
&gt; 
&gt; Parenthesis placed wrong here.

Fixed. I tried to fix similar issues in the code too.

&gt; +      unsigned int i = propertyName.toUInt32(&amp;ok);
&gt; 
&gt; Just unsigned will do.

Fixed.
 
&gt; I&apos;m not sure why we&apos;re using getUInt32 for setting length, toUInt32 for setting
&gt; by index, and toInt32 for selectedIndex. We should test with non-integer values
&gt; that can be converted to integers to see how this should work. The difference
&gt; between getUInt32 and toUInt32 is that the former will not do type conversions.

I did not change this.

&gt; +          m_element-&gt;setOption(i, toNode(value), exception);
&gt; 
&gt; We should test to see that when the value is something other than an option
&gt; that we want to do nothing. Instead we should consider doing a remove.

Are you sure about the remove?
 
&gt; I also think we may want to change HTMLSelectElement::setOption to take a
&gt; HTMLOptionElement* parameter instead of a Node* and put the type checking in
&gt; the language binding. That&apos;s parallel with what we usually do for DOM elements.

I tried to fix it like described.
 
&gt; +    int diff = int(u) - length();
&gt; 
&gt; Should just be u - length() -- no need to cast to int. But if u is a very large
&gt; value this will underflow. In general it would be best to put some kind of
&gt; limit on this so we won&apos;t loop forever putting a huge number of option elements
&gt; in if the passed-in value is a huge number.

I have put a limit on it, not sure if it is unrealisticly high, but any other limit
sounds a bit arbitrary to me, unless there is some specific value in the spec.
 
&gt; +    int diff = length() - newLen;
&gt; 
&gt; Same issues. We could get an underflow if newLen is a huge number.

Also tried to fix it.
 
&gt; +    else // remove elements
&gt; +        while (diff-- &gt; 0)
&gt; +            remove(newLen);
&gt; 
&gt; This code would be faster if it always removed from the end.

I do not see this?
 
&gt; Could save a little code in HTMLSelectElement::setOption by calling setLength(u
&gt; - 1) in the case where diff &gt; 0 instead of having our own &quot;add dummy options&quot;
&gt; loop.

Fixed.
 
&gt; In declarations we normally leave out parameter names exception when they make
&gt; things clearer.
&gt; 
&gt;     void setOption(unsigned index, HTMLOptionElement*, ExceptionCode&amp;);
&gt;     void setLength(unsigned, ExceptionCode&amp;);
&gt; 
&gt; In the case of setLength, we know that the single parameter is the length.

Fixed.
 
&gt; As far as test cases are concerned, a good test needs to test all the code
&gt; paths:
&gt; 
&gt;     1) setting length to a larger length
&gt;     2) setting length to a smaller length
&gt;     3) setting length to the same length
&gt;     4) setting length to non-integer values (null, undefined, non-numeric
&gt; string, floating point number)
&gt;     5) setting an element by index past the end of the current list
&gt;     6) setting an existing element by index
&gt;     7) trying to set an element that&apos;s not an option element (null, undefined,
&gt; other kinds of objects, other kinds of elements)
&gt; 
&gt; The test should verify how the selected index is affected by these various
&gt; mutations, and also how the options in the select are affected. Need to test
&gt; both a single-selection select and a multiple-selection select.
&gt; 
&gt; A truly thorough test would also monitor DOM mutation events to see things like
&gt; whether a DOM element is removed and then added in cases like (6) above, but I
&gt; don&apos;t think that&apos;s terribly important. And test behavior when a DOM mutation
&gt; event handler completely changes around the list. Can you make one that causes
&gt; setLength to infinite loop?
&gt; 
&gt; review- because there&apos;s no test yet.

I will try to come up with a testcase later
Cheers,

Rob. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41882</commentid>
    <comment_count>8</comment_count>
      <attachid>8201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-05-10 09:36:43 -0700</bug_when>
    <thetext>Comment on attachment 8201
Better patch

Looks great. I think ready to land now once we have written a test and run it to find any problems.

review- only because of the lack of a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45286</commentid>
    <comment_count>9</comment_count>
      <attachid>8801</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-06-10 14:55:32 -0700</bug_when>
    <thetext>Created attachment 8801
Now with testcase

I made two testcases, and adjusted the code when I noticed differences with firefox.
For the normal test we have the same results, but the multiple selection one differs, I
think we do it according to spec though. Also the use of getNumber may need some
attention, could those values get too big? It seems we have to support setting lengths
using floats, firefox supports it.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45358</commentid>
    <comment_count>10</comment_count>
      <attachid>8801</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-11 16:28:57 -0700</bug_when>
    <thetext>Comment on attachment 8801
Now with testcase

Test case looks great, but also need expected results! (including pixel results, unless it&apos;s a &quot;dump as text test&quot;, which is the preferred style).

HTMLSelectElement::setOption and HTMLSelectElement::setLength are written here assuming that the passed in &quot;ec&quot; is already 0. In general, functions should not be written that way. Callers are not obliged to set up ec before calling if they intend to ignore it. The rule is &quot;caller must set exception code to 0 if and only if caller looks at it to determine success; implementers may set the exception code to 0 or leave it untouched on success&quot;.

Otherwise, looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45447</commentid>
    <comment_count>11</comment_count>
      <attachid>8829</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-06-12 13:30:39 -0700</bug_when>
    <thetext>Created attachment 8829
Improved patch

This patch should fix the mentioned problems. Also
I now match FF behaviour with the multiple selection, but it
may need more testing.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45458</commentid>
    <comment_count>12</comment_count>
      <attachid>8829</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-12 16:30:30 -0700</bug_when>
    <thetext>Comment on attachment 8829
Improved patch

Looks good. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45481</commentid>
    <comment_count>13</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-06-13 01:15:39 -0700</bug_when>
    <thetext>I had a brief look at how IE6 performs with the multiple testcase. It stops processing
after mySelect.options.length = -1; If I comment that out, it behaves the same
as FF and my patch. 
Cheers,

Rob.
(In reply to comment #11)
&gt; Created an attachment (id=8829) [edit]
&gt; Improved patch
&gt; 
&gt; This patch should fix the mentioned problems. Also
&gt; I now match FF behaviour with the multiple selection, but it
&gt; may need more testing.
&gt; Cheers,
&gt; 
&gt; Rob.
&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>46094</commentid>
    <comment_count>14</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2006-06-17 08:32:57 -0700</bug_when>
    <thetext>committed in r14898.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>5349</attachid>
            <date>2005-12-29 00:49:04 -0800</date>
            <delta_ts>2005-12-29 00:49:04 -0800</delta_ts>
            <desc>test case</desc>
            <filename>select.html</filename>
            <type>text/html</type>
            <size>514</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">PHNlbGVjdCBpZD0idGVzdCIgc2l6ZT0iMyI+Cjwvc2VsZWN0Pgo8c2NyaXB0Pgp2YXIgbXlTZWxl
Y3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwp2YXIgcHJldlNlbGVjdGlvbiA9
IG15U2VsZWN0LnNlbGVjdGVkSW5kZXg7Cm15U2VsZWN0Lm9wdGlvbnNbbXlTZWxlY3QubGVuZ3Ro
XSA9IG5ldyBPcHRpb24oIm9uZSIsICJ2YWx1ZSIsIHRydWUsIHRydWUpOwpteVNlbGVjdC5vcHRp
b25zW215U2VsZWN0Lmxlbmd0aF0gPSBuZXcgT3B0aW9uKCJ0d28iLCAidmFsdWUiLCB0cnVlLCB0
cnVlKTsKaWYgKG15U2VsZWN0LnNlbGVjdGVkSW5kZXggPT0gMSkKICAgIGRvY3VtZW50LndyaXRl
KCJTVUNDRVNTISIpOwplbHNlCiAgICBkb2N1bWVudC53cml0ZSgiRkFJTFVSRSEiKTsKZG9jdW1l
bnQud3JpdGUoIiAob3JpZ2luYWw6ICIgKyBwcmV2U2VsZWN0aW9uICsgIiBuZXcgc2VsZWN0aW9u
OiAiICsgbXlTZWxlY3Quc2VsZWN0ZWRJbmRleCArICIgZXhwZWN0ZWQ6IDEpIik7Cjwvc2NyaXB0
Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8143</attachid>
            <date>2006-05-07 10:40:37 -0700</date>
            <delta_ts>2006-05-08 13:51:00 -0700</delta_ts>
            <desc>Proposed fix</desc>
            <filename>6282.diff</filename>
            <type>text/plain</type>
            <size>1395</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDIxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDYtMDUtMDcgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIEZpeCBmb3IgaHR0cDovL2J1
Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjgyOgorICAgICAgICBBZGRp
bmcgbmV3IE9wdGlvbiB3aXRoIG5ldyBPcHRpb24odGV4dCwgdmFsdWUsIGRlZmF1bHRTZWxlY3Rl
ZCwgc2VsZWN0ZWQpIGZhaWxzIHRvIHVwZGF0ZSBzZWxlY3RlZEluZGV4CisKKyAgICAgICAgVXBk
YXRlIHNlbGVjdGVkSW5kZXggd2hlbiBhIG5ldyBvcHRpb24gaXMgYWRkZWQgdXNpbmcgamF2YXNj
cmlwdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtK
Uzo6SlNIVE1MU2VsZWN0Q29sbGVjdGlvbjo6cHV0KToKKwogMjAwNi0wNS0wNiAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdlYkNvcmVGb250IHRvIEZv
bnRQbGF0Zm9ybURhdGEgYW5kIFdlYlRleHRSZW5kZXJlciB0byBGb250RGF0YS4gIE1lcmdlIHRo
ZW0gaW50byB0aGUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0bWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0bWwuY3BwCShyZXZpc2lvbiAxNDIx
NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2h0bWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDQ2LDggKzM0NDYsMTEgQEAgdm9pZCBKU0hUTUxTZWxlY3RDb2xsZWN0aW9uOjpwdXQoRXhl
Y1N0YQogICAgIG1fZWxlbWVudC0+cmVtb3ZlKHUpOwogICB9CiAgIC8vIGZpbmFsbHkgYWRkIHRo
ZSBuZXcgZWxlbWVudAotICBpZiAoZXhjZXB0aW9uID09IDApCisgIGlmIChleGNlcHRpb24gPT0g
MCkgewogICAgIG1fZWxlbWVudC0+YWRkKHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50ICo+
KG9wdGlvbiksIGJlZm9yZSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZGlmZiA+PSAwKQorICAgICAg
ICAgbV9lbGVtZW50LT5zZXRTZWxlY3RlZEluZGV4KCB1ICk7CisgIH0KIAogICBzZXRET01FeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0K
</data>
<flag name="review"
          id="2260"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8172</attachid>
            <date>2006-05-08 13:51:00 -0700</date>
            <delta_ts>2006-05-10 00:33:17 -0700</delta_ts>
            <desc>New patch after feedback from Darin</desc>
            <filename>6282-2.diff</filename>
            <type>text/plain</type>
            <size>6618</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDIzMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDYtMDUtMDggIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIEZpeCBmb3IgaHR0cDovL2J1
Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjgyOgorICAgICAgICBBZGRp
bmcgbmV3IE9wdGlvbiB3aXRoIG5ldyBPcHRpb24odGV4dCwgdmFsdWUsIGRlZmF1bHRTZWxlY3Rl
ZCwgc2VsZWN0ZWQpIGZhaWxzIHRvIHVwZGF0ZSBzZWxlY3RlZEluZGV4CisKKyAgICAgICAgVXBk
YXRlIHNlbGVjdGVkSW5kZXggd2hlbiBhIG5ldyBvcHRpb24gaXMgYWRkZWQgdXNpbmcgamF2YXNj
cmlwdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtK
Uzo6SlNIVE1MU2VsZWN0Q29sbGVjdGlvbjo6cHV0KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRP
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCk6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorCiAyMDA2LTA1LTA4ICBEYXZp
ZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBDb21wcmVoZW5zaXZlIGJveC1z
aXppbmcgZml4LiAgVGhpcyBwYXRjaCBjaGFuZ2VzIGFsbCBmb3JtIGNvbnRyb2xzIHRvCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19odG1sLmNwcAkocmV2aXNpb24gMTQyMzMpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19odG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM3Nyw3OSArMzM3Nywz
MiBAQCB2b2lkIEpTSFRNTFNlbGVjdENvbGxlY3Rpb246OnB1dChFeGVjU3RhCiAjaWZkZWYgS0pT
X1ZFUkJPU0UKICAga2REZWJ1Zyg2MDcwKSA8PCAiSlNIVE1MU2VsZWN0Q29sbGVjdGlvbjo6cHV0
ICIgPDwgcHJvcGVydHlOYW1lLmRlcHJlY2F0ZWRTdHJpbmcoKSA8PCBlbmRsOwogI2VuZGlmCi0g
IGlmICggcHJvcGVydHlOYW1lID09ICJzZWxlY3RlZEluZGV4IiApIHsKKyAgaWYgKCBwcm9wZXJ0
eU5hbWUgPT0gInNlbGVjdGVkSW5kZXgiICkKICAgICBtX2VsZW1lbnQtPnNldFNlbGVjdGVkSW5k
ZXgoIHZhbHVlLT50b0ludDMyKCBleGVjICkgKTsKLSAgICByZXR1cm47Ci0gIH0KLSAgLy8gcmVz
aXplID8KLSAgZWxzZSBpZiAocHJvcGVydHlOYW1lID09IGxlbmd0aFByb3BlcnR5TmFtZSkgewor
ICBlbHNlIHsKICAgICBpbnQgZXhjZXB0aW9uID0gMDsKLQotICAgIHVuc2lnbmVkIG5ld0xlbjsK
LSAgICBib29sIGNvbnZlcnRlZCA9IHZhbHVlLT5nZXRVSW50MzIobmV3TGVuKTsKLQotICAgIGlm
ICghY29udmVydGVkKQotICAgICAgcmV0dXJuOwotCi0gICAgaW50IGRpZmYgPSBtX2VsZW1lbnQt
Pmxlbmd0aCgpIC0gbmV3TGVuOwotCi0gICAgaWYgKGRpZmYgPCAwKSB7IC8vIGFkZCBkdW1teSBl
bGVtZW50cwotICAgICAgZG8gewotICAgICAgICBSZWZQdHI8RWxlbWVudD4gb3B0aW9uID0gbV9l
bGVtZW50LT5vd25lckRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIGV4Y2VwdGlv
bik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgYnJlYWs7ICAgICAgICAgCi0g
ICAgICAgIG1fZWxlbWVudC0+YWRkKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KG9wdGlvbi5n
ZXQoKSksIDAsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAg
YnJlYWs7Ci0gICAgICB9IHdoaWxlICgrK2RpZmYpOworICAgIC8vIHJlc2l6ZSA/CisgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBsZW5ndGhQcm9wZXJ0eU5hbWUpIHsKKyAgICAgIHVuc2lnbmVkIG5l
d0xlbjsKKyAgICAgIGlmKCB2YWx1ZS0+Z2V0VUludDMyKG5ld0xlbikpIHsKKyAgICAgICAgbV9l
bGVtZW50LT5zZXRMZW5ndGgobmV3TGVuLCBleGNlcHRpb24pOworICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgLy8g
YW4gaW5kZXggPworICAgICAgYm9vbCBvazsKKyAgICAgIHVuc2lnbmVkIGludCBpID0gcHJvcGVy
dHlOYW1lLnRvVUludDMyKCZvayk7CisgICAgICBpZiAob2spIHsKKyAgICAgICAgaWYgKHZhbHVl
LT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgICAgLy8gbnVsbCBhbmQgdW5kZWZpbmVk
IGRlbGV0ZS4gb3RoZXJzLCB0b28gPworICAgICAgICAgIG1fZWxlbWVudC0+cmVtb3ZlKGkpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgIG1fZWxlbWVudC0+c2V0T3B0aW9uKGksIHRvTm9k
ZSh2YWx1ZSksIGV4Y2VwdGlvbik7CisgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4
Y2VwdGlvbik7CisgICAgICAgIH0KKyAgICAgIH0KICAgICB9Ci0gICAgZWxzZSAvLyByZW1vdmUg
ZWxlbWVudHMKLSAgICAgIHdoaWxlIChkaWZmLS0gPiAwKQotICAgICAgICBtX2VsZW1lbnQtPnJl
bW92ZShuZXdMZW4pOwotCi0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuOwotICB9Ci0gIC8vIGFuIGluZGV4ID8KLSAgYm9vbCBvazsKLSAgdW5zaWduZWQg
aW50IHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgaWYgKCFvaykKLSAgICByZXR1
cm47Ci0KLSAgaWYgKHZhbHVlLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgLy8gbnVsbCBh
bmQgdW5kZWZpbmVkIGRlbGV0ZS4gb3RoZXJzLCB0b28gPwotICAgIG1fZWxlbWVudC0+cmVtb3Zl
KHUpOwotICAgIHJldHVybjsKICAgfQotCi0gIC8vIGlzIHYgYW4gb3B0aW9uIGVsZW1lbnQgPwot
ICBXZWJDb3JlOjpOb2RlICpvcHRpb24gPSB0b05vZGUodmFsdWUpOwotICBpZiAoIW9wdGlvbiB8
fCAhb3B0aW9uLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCi0gICAgcmV0dXJuOwotCi0gIGludCBl
eGNlcHRpb24gPSAwOwotICBpbnQgZGlmZiA9IGludCh1KSAtIG1fZWxlbWVudC0+bGVuZ3RoKCk7
Ci0gIEhUTUxFbGVtZW50ICpiZWZvcmUgPSAwOwotICAvLyBvdXQgb2YgYXJyYXkgYm91bmRzID8g
Zmlyc3QgaW5zZXJ0IGVtcHR5IGR1bW1pZXMKLSAgaWYgKGRpZmYgPiAwKSB7Ci0gICAgd2hpbGUg
KGRpZmYtLSkgewotICAgICAgUmVmUHRyPEVsZW1lbnQ+IGR1bW15T3B0aW9uID0gbV9lbGVtZW50
LT5vd25lckRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIGV4Y2VwdGlvbik7Ci0g
ICAgICBpZiAoIWR1bW15T3B0aW9uKQotICAgICAgICBicmVhazsgICAgICAKLSAgICAgIG1fZWxl
bWVudC0+YWRkKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KGR1bW15T3B0aW9uLmdldCgpKSwg
MCwgZXhjZXB0aW9uKTsKLSAgICAgIGlmIChleGNlcHRpb24pIAotICAgICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICAvLyByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5ID8KLSAgfSBlbHNlIGlmIChk
aWZmIDwgMCkgewotICAgIGJlZm9yZSA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KG1fZWxl
bWVudC0+b3B0aW9ucygpLT5pdGVtKHUrMSkpOwotICAgIG1fZWxlbWVudC0+cmVtb3ZlKHUpOwot
ICB9Ci0gIC8vIGZpbmFsbHkgYWRkIHRoZSBuZXcgZWxlbWVudAotICBpZiAoZXhjZXB0aW9uID09
IDApCi0gICAgbV9lbGVtZW50LT5hZGQoc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQgKj4o
b3B0aW9uKSwgYmVmb3JlLCBleGNlcHRpb24pOwotCi0gIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
eGNlcHRpb24pOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vIE9wdGlvbiBPYmplY3QgLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE0MjMzKQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUxLDUgKzQ1MSw1NSBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpzZXRTaXplKGludCBzaXplCiB7CiAgICAgc2V0QXR0cmlidXRlKHNpemVBdHRyLCBTdHJpbmc6
Om51bWJlcihzaXplKSk7CiB9Ci0gICAgCisKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9w
dGlvbih1bnNpZ25lZCBpbnQgdSwgTm9kZSAqb3B0aW9uLCBFeGNlcHRpb25Db2RlICZleGNlcHRp
b24pCit7CisgICAgLy8gaXMgdiBhbiBvcHRpb24gZWxlbWVudCA/CisgICAgaWYgKCFvcHRpb24g
fHwgIW9wdGlvbi0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpbnQgZGlmZiA9IGludCh1KSAtIGxlbmd0aCgpOworICAgIEhUTUxFbGVtZW50ICpiZWZvcmUg
PSAwOworICAgIC8vIG91dCBvZiBhcnJheSBib3VuZHMgPyBmaXJzdCBpbnNlcnQgZW1wdHkgZHVt
bWllcworICAgIGlmIChkaWZmID4gMCkgeworICAgICAgICB3aGlsZSAoZGlmZi0tKSB7CisgICAg
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gZHVtbXlPcHRpb24gPSBvd25lckRvY3VtZW50KCktPmNy
ZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBpZiAoIWR1bW15
T3B0aW9uKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYWRkKHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50ICo+KGR1bW15T3B0aW9uLmdldCgpKSwgMCwgZXhjZXB0aW9uKTsKKyAg
ICAgICAgICAgIGlmIChleGNlcHRpb24pIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIC8vIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgPworICAgIH0gZWxzZSBp
ZiAoZGlmZiA8IDApIHsKKyAgICAgICAgYmVmb3JlID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQg
Kj4ob3B0aW9ucygpLT5pdGVtKHUrMSkpOworICAgICAgICByZW1vdmUodSk7CisgICAgfQorICAg
IC8vIGZpbmFsbHkgYWRkIHRoZSBuZXcgZWxlbWVudAorICAgIGlmIChleGNlcHRpb24gPT0gMCkg
eworICAgICAgICBhZGQoc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQgKj4ob3B0aW9uKSwg
YmVmb3JlLCBleGNlcHRpb24pOworICAgICAgICBpZiAoZGlmZiA+PSAwKQorICAgICAgICAgICAg
c2V0U2VsZWN0ZWRJbmRleCh1KTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnNldExlbmd0aCh1bnNpZ25lZCBpbnQgbmV3TGVuLCBFeGNlcHRpb25Db2RlICZleGNlcHRpb24p
Cit7CisgICAgaW50IGRpZmYgPSBsZW5ndGgoKSAtIG5ld0xlbjsKKworICAgIGlmIChkaWZmIDwg
MCkgeyAvLyBhZGQgZHVtbXkgZWxlbWVudHMKKyAgICAgICAgZG8geworICAgICAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IG9wdGlvbiA9IG93bmVyRG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCgib3B0
aW9uIiwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgCisgICAgICAgICAgICBhZGQoc3RhdGljX2Nhc3Q8SFRNTEVs
ZW1lbnQgKj4ob3B0aW9uLmdldCgpKSwgMCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKCsrZGlm
Zik7CisgICAgfQorICAgIGVsc2UgLy8gcmVtb3ZlIGVsZW1lbnRzCisgICAgICAgIHdoaWxlIChk
aWZmLS0gPiAwKQorICAgICAgICAgICAgcmVtb3ZlKG5ld0xlbik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMTQyMzMpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYg
KzEwOCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2l6ZShpbnQpOwogCisgICAgdm9pZCBz
ZXRPcHRpb24odW5zaWduZWQgaW50IHUsIE5vZGUgKm9wdGlvbiwgRXhjZXB0aW9uQ29kZSAmZXhj
ZXB0aW9uKTsKKyAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCBpbnQgbmV3TGVuLCBFeGNlcHRp
b25Db2RlICZleGNlcHRpb24pOworCiBwcml2YXRlOgogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1z
KCk7CiAK
</data>
<flag name="review"
          id="2275"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8201</attachid>
            <date>2006-05-10 00:33:17 -0700</date>
            <delta_ts>2006-06-10 14:55:32 -0700</delta_ts>
            <desc>Better patch</desc>
            <filename>6282-4.diff</filename>
            <type>text/plain</type>
            <size>6369</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNDI4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDYtMDUtMTAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5P
IFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgIEZpeCBmb3IgaHR0cDovL2J1
Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD02MjgyOgorICAgICAgICBBZGRp
bmcgbmV3IE9wdGlvbiB3aXRoIG5ldyBPcHRpb24odGV4dCwgdmFsdWUsIGRlZmF1bHRTZWxlY3Rl
ZCwgc2VsZWN0ZWQpIGZhaWxzIHRvIHVwZGF0ZSBzZWxlY3RlZEluZGV4CisKKyAgICAgICAgVXBk
YXRlIHNlbGVjdGVkSW5kZXggd2hlbiBhIG5ldyBvcHRpb24gaXMgYWRkZWQgdXNpbmcgamF2YXNj
cmlwdC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19odG1sLmNwcDoKKyAgICAgICAgKEtK
Uzo6SlNIVE1MU2VsZWN0Q29sbGVjdGlvbjo6cHV0KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZXRP
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0aCk6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorCiAyMDA2LTA1LTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAtIGFub3RoZXIgdHJ5IGF0IGZp
eGluZyB0aGUgV2luZG93cyBidWlsZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfaHRt
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfaHRtbC5jcHAJKHJl
dmlzaW9uIDE0Mjc3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfaHRtbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzNzcsNzkgKzMzNzcsMzYgQEAgdm9pZCBKU0hUTUxTZWxlY3RDb2xsZWN0
aW9uOjpwdXQoRXhlY1N0YQogI2lmZGVmIEtKU19WRVJCT1NFCiAgIGtkRGVidWcoNjA3MCkgPDwg
IkpTSFRNTFNlbGVjdENvbGxlY3Rpb246OnB1dCAiIDw8IHByb3BlcnR5TmFtZS5kZXByZWNhdGVk
U3RyaW5nKCkgPDwgZW5kbDsKICNlbmRpZgotICBpZiAoIHByb3BlcnR5TmFtZSA9PSAic2VsZWN0
ZWRJbmRleCIgKSB7Ci0gICAgbV9lbGVtZW50LT5zZXRTZWxlY3RlZEluZGV4KCB2YWx1ZS0+dG9J
bnQzMiggZXhlYyApICk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIHJlc2l6ZSA/CisgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gInNlbGVjdGVkSW5kZXgiKQorICAgIG1fZWxlbWVudC0+c2V0U2VsZWN0
ZWRJbmRleCh2YWx1ZS0+dG9JbnQzMihleGVjKSk7CiAgIGVsc2UgaWYgKHByb3BlcnR5TmFtZSA9
PSBsZW5ndGhQcm9wZXJ0eU5hbWUpIHsKLSAgICBpbnQgZXhjZXB0aW9uID0gMDsKLQorICAgIC8v
IHJlc2l6ZSA/CiAgICAgdW5zaWduZWQgbmV3TGVuOwotICAgIGJvb2wgY29udmVydGVkID0gdmFs
dWUtPmdldFVJbnQzMihuZXdMZW4pOwotCi0gICAgaWYgKCFjb252ZXJ0ZWQpCi0gICAgICByZXR1
cm47Ci0KLSAgICBpbnQgZGlmZiA9IG1fZWxlbWVudC0+bGVuZ3RoKCkgLSBuZXdMZW47Ci0KLSAg
ICBpZiAoZGlmZiA8IDApIHsgLy8gYWRkIGR1bW15IGVsZW1lbnRzCi0gICAgICBkbyB7Ci0gICAg
ICAgIFJlZlB0cjxFbGVtZW50PiBvcHRpb24gPSBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+
Y3JlYXRlRWxlbWVudCgib3B0aW9uIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICBicmVhazsgICAgICAgICAKLSAgICAgICAgbV9lbGVtZW50LT5hZGQoc3Rh
dGljX2Nhc3Q8SFRNTEVsZW1lbnQgKj4ob3B0aW9uLmdldCgpKSwgMCwgZXhjZXB0aW9uKTsKLSAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0gd2hpbGUgKCsr
ZGlmZik7CisgICAgaWYgKHZhbHVlLT5nZXRVSW50MzIobmV3TGVuKSkgeworICAgICAgaW50IGV4
Y2VwdGlvbiA9IDA7CisgICAgICBtX2VsZW1lbnQtPnNldExlbmd0aChuZXdMZW4sIGV4Y2VwdGlv
bik7CisgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKICAgICB9Ci0gICAg
ZWxzZSAvLyByZW1vdmUgZWxlbWVudHMKLSAgICAgIHdoaWxlIChkaWZmLS0gPiAwKQotICAgICAg
ICBtX2VsZW1lbnQtPnJlbW92ZShuZXdMZW4pOwotCi0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIGFuIGluZGV4ID8KLSAgYm9vbCBv
azsKLSAgdW5zaWduZWQgaW50IHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgaWYg
KCFvaykKLSAgICByZXR1cm47Ci0KLSAgaWYgKHZhbHVlLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgLy8gbnVsbCBhbmQgdW5kZWZpbmVkIGRlbGV0ZS4gb3RoZXJzLCB0b28gPwotICAgIG1f
ZWxlbWVudC0+cmVtb3ZlKHUpOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIGlzIHYgYW4gb3B0
aW9uIGVsZW1lbnQgPwotICBXZWJDb3JlOjpOb2RlICpvcHRpb24gPSB0b05vZGUodmFsdWUpOwot
ICBpZiAoIW9wdGlvbiB8fCAhb3B0aW9uLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCi0gICAgcmV0
dXJuOwotCi0gIGludCBleGNlcHRpb24gPSAwOwotICBpbnQgZGlmZiA9IGludCh1KSAtIG1fZWxl
bWVudC0+bGVuZ3RoKCk7Ci0gIEhUTUxFbGVtZW50ICpiZWZvcmUgPSAwOwotICAvLyBvdXQgb2Yg
YXJyYXkgYm91bmRzID8gZmlyc3QgaW5zZXJ0IGVtcHR5IGR1bW1pZXMKLSAgaWYgKGRpZmYgPiAw
KSB7Ci0gICAgd2hpbGUgKGRpZmYtLSkgewotICAgICAgUmVmUHRyPEVsZW1lbnQ+IGR1bW15T3B0
aW9uID0gbV9lbGVtZW50LT5vd25lckRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIs
IGV4Y2VwdGlvbik7Ci0gICAgICBpZiAoIWR1bW15T3B0aW9uKQotICAgICAgICBicmVhazsgICAg
ICAKLSAgICAgIG1fZWxlbWVudC0+YWRkKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50ICo+KGR1bW15
T3B0aW9uLmdldCgpKSwgMCwgZXhjZXB0aW9uKTsKLSAgICAgIGlmIChleGNlcHRpb24pIAotICAg
ICAgICAgIGJyZWFrOworICB9IGVsc2UgeworICAgIC8vIGFuIGluZGV4ID8KKyAgICBib29sIG9r
OworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKKyAgICBpZiAo
b2spIHsKKyAgICAgIGlmICh2YWx1ZS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAv
LyBudWxsIGFuZCB1bmRlZmluZWQgZGVsZXRlLiBvdGhlcnMsIHRvbyA/CisgICAgICAgIG1fZWxl
bWVudC0+cmVtb3ZlKGkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViQ29yZTo6Tm9kZSAq
b3B0aW9uID0gdG9Ob2RlKHZhbHVlKTsKKyAgICAgICAgLy8gaXMgdiBhbiBvcHRpb24gZWxlbWVu
dCA/CisgICAgICAgIGlmICghb3B0aW9uIHx8ICFvcHRpb24tPmhhc1RhZ05hbWUob3B0aW9uVGFn
KSkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAg
ICAgIG1fZWxlbWVudC0+c2V0T3B0aW9uKGksIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50
Kj4ob3B0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4
Y2VwdGlvbik7CisgICAgICB9CiAgICAgfQotICAgIC8vIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50
cnkgPwotICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7Ci0gICAgYmVmb3JlID0gc3RhdGljX2Nhc3Q8
SFRNTEVsZW1lbnQgKj4obV9lbGVtZW50LT5vcHRpb25zKCktPml0ZW0odSsxKSk7Ci0gICAgbV9l
bGVtZW50LT5yZW1vdmUodSk7CiAgIH0KLSAgLy8gZmluYWxseSBhZGQgdGhlIG5ldyBlbGVtZW50
Ci0gIGlmIChleGNlcHRpb24gPT0gMCkKLSAgICBtX2VsZW1lbnQtPmFkZChzdGF0aWNfY2FzdDxI
VE1MT3B0aW9uRWxlbWVudCAqPihvcHRpb24pLCBiZWZvcmUsIGV4Y2VwdGlvbik7Ci0KLSAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8gT3B0aW9uIE9iamVjdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTQyNzcpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNSArNDUxLDQ4IEBAIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNpemUoaW50IHNpemUKIHsKICAgICBzZXRBdHRyaWJ1
dGUoc2l6ZUF0dHIsIFN0cmluZzo6bnVtYmVyKHNpemUpKTsKIH0KLSAgICAKKwordm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uKHVuc2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVu
dCogb3B0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoaW5kZXggPiBJTlRfTUFY
KQorICAgICAgICBpbmRleCA9IElOVF9NQVg7CisgICAgaW50IGRpZmYgPSBpbmRleCAgLSBsZW5n
dGgoKTsKKyAgICBIVE1MRWxlbWVudCogYmVmb3JlID0gMDsKKyAgICAvLyBvdXQgb2YgYXJyYXkg
Ym91bmRzID8gZmlyc3QgaW5zZXJ0IGVtcHR5IGR1bW1pZXMKKyAgICBpZiAoZGlmZiA+IDApIHsK
KyAgICAgICAgc2V0TGVuZ3RoKGluZGV4IC0gMSwgZWMpOworICAgICAgICAvLyByZXBsYWNlIGFu
IGV4aXN0aW5nIGVudHJ5ID8KKyAgICB9IGVsc2UgaWYgKGRpZmYgPCAwKSB7CisgICAgICAgIGJl
Zm9yZSA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ob3B0aW9ucygpLT5pdGVtKGluZGV4KzEp
KTsKKyAgICAgICAgcmVtb3ZlKGluZGV4KTsKKyAgICB9CisgICAgLy8gZmluYWxseSBhZGQgdGhl
IG5ldyBlbGVtZW50CisgICAgaWYgKGVjID09IDApIHsKKyAgICAgICAgYWRkKG9wdGlvbiwgYmVm
b3JlLCBlYyk7CisgICAgICAgIGlmIChkaWZmID49IDApCisgICAgICAgICAgICBzZXRTZWxlY3Rl
ZEluZGV4KGluZGV4KTsKKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExl
bmd0aCh1bnNpZ25lZCBuZXdMZW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChuZXdM
ZW4gPiBJTlRfTUFYKQorICAgICAgICBuZXdMZW4gPSBJTlRfTUFYOworICAgIGludCBkaWZmID0g
bGVuZ3RoKCkgLSBuZXdMZW47CisKKyAgICBpZiAoZGlmZiA8IDApIHsgLy8gYWRkIGR1bW15IGVs
ZW1lbnRzCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBvcHRpb24g
PSBvd25lckRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIGVjKTsKKyAgICAgICAg
ICAgIGlmICghb3B0aW9uKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgYWRk
KHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ob3B0aW9uLmdldCgpKSwgMCwgZWMpOworICAgICAg
ICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IHdoaWxlICgr
K2RpZmYpOworICAgIH0KKyAgICBlbHNlIC8vIHJlbW92ZSBlbGVtZW50cworICAgICAgICB3aGls
ZSAoZGlmZi0tID4gMCkKKyAgICAgICAgICAgIHJlbW92ZShuZXdMZW4pOworfQorCiB9IC8vIG5h
bWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDE0Mjc3KQor
KysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoaW50KTsKIAorICAgIHZv
aWQgc2V0T3B0aW9uKHVuc2lnbmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCosIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zKCk7CiAK
</data>
<flag name="review"
          id="2292"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8801</attachid>
            <date>2006-06-10 14:55:32 -0700</date>
            <delta_ts>2006-06-12 13:30:39 -0700</delta_ts>
            <desc>Now with testcase</desc>
            <filename>6282-5.diff</filename>
            <type>text/plain</type>
            <size>13166</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDYtMTAgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3QgY2FzZXMgZm9yCisgICAgICAgIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTYyODI+CisKKyAgICAgICAgKiBmYXN0L2RvbS9zZWxlY3Qtc2VsZWN0
ZWRJbmRleC1tdWx0aXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zZWxlY3Qt
c2VsZWN0ZWRJbmRleC5odG1sOiBBZGRlZC4KKwogMjAwNi0wNi0wOSAgSnVzdGluIEdhcmNpYSAg
PGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGxldmkKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NlbGVjdC1zZWxlY3RlZEluZGV4LW11bHRpcGxlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2VsZWN0LXNlbGVjdGVkSW5k
ZXgtbXVsdGlwbGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Nl
bGVjdC1zZWxlY3RlZEluZGV4LW11bHRpcGxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODIgQEAKKzxzZWxlY3QgbXVsdGlwbGUgaWQ9InRlc3QiIHNpemU9IjMiPgorPC9zZWxlY3Q+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlc2V0KG15U2VsZWN0
KSB7CisgIG15U2VsZWN0Lmxlbmd0aCA9IDA7CisgIG15U2VsZWN0Lm9wdGlvbnNbbXlTZWxlY3Qu
bGVuZ3RoXSA9IG5ldyBPcHRpb24oIm9uZSIsICJ2YWx1ZSIsIHRydWUsIHRydWUpOworICBteVNl
bGVjdC5vcHRpb25zW215U2VsZWN0Lmxlbmd0aF0gPSBuZXcgT3B0aW9uKCJ0d28iLCAidmFsdWUi
LCB0cnVlLCB0cnVlKTsKK30KKwordmFyIG15U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QiKTsKK3Jlc2V0KG15U2VsZWN0KTsKKworbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgg
PSAtMTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIyIik7CitzaG91bGRC
ZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxIik7CisKKy8vIDEpIHNldHRpbmcgbGVuZ3Ro
IHRvIGEgbGFyZ2VyIGxlbmd0aAorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSA1Oworc2hvdWxk
QmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjUiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5z
ZWxlY3RlZEluZGV4IiwgIjEiKTsKKworLy8gMikgc2V0dGluZyBsZW5ndGggdG8gYSBzbWFsbGVy
IGxlbmd0aAorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSAyOworc2hvdWxkQmUoIm15U2VsZWN0
Lm9wdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4
IiwgIjEiKTsKKworbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSAxOworc2hvdWxkQmUoIm15U2Vs
ZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZElu
ZGV4IiwgIi0xIik7CityZXNldChteVNlbGVjdCk7CisKKy8vIDMpIHNldHRpbmcgbGVuZ3RoIHRv
IHRoZSBzYW1lIGxlbmd0aAorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSAyOworc2hvdWxkQmUo
Im15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxl
Y3RlZEluZGV4IiwgIjEiKTsKKworLy8gNCkgc2V0dGluZyBsZW5ndGggdG8gbm9uLWludGVnZXIg
dmFsdWVzIChudWxsLAorLy8gdW5kZWZpbmVkLCBub24tbnVtZXJpYyBzdHJpbmcsIGZsb2F0aW5n
IHBvaW50IG51bWJlcikKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gbnVsbAorc2hvdWxkQmUo
Im15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxl
Y3RlZEluZGV4IiwgIi0xIik7CityZXNldChteVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMu
bGVuZ3RoID0gdW5kZWZpbmVkOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwg
IjAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CityZXNldCht
eVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gImFwcGxlIgorc2hvdWxkQmUo
Im15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxl
Y3RlZEluZGV4IiwgIi0xIik7CityZXNldChteVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMu
bGVuZ3RoID0gMi4xOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjIiKTsK
K3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIjEiKTsKKworLy8gNSkgc2V0dGlu
ZyBhbiBlbGVtZW50IGJ5IGluZGV4IHBhc3QgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBsaXN0Citt
eVNlbGVjdC5vcHRpb25zWzEwXSA9IG5ldyBPcHRpb24oInRlbiIsICJ2YWx1ZSIsIHRydWUsIHRy
dWUpOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjExIik7CitzaG91bGRC
ZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxMCIpOworCisvLyA2KSBzZXR0aW5nIGFuIGV4
aXN0aW5nIGVsZW1lbnQgYnkgaW5kZXgKK215U2VsZWN0Lm9wdGlvbnNbMTBdID0gbXlTZWxlY3Qu
b3B0aW9uc1sxMF07CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMTEiKTsK
K3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIjEwIik7CisKKy8vIDcpIHRyeWlu
ZyB0byBzZXQgYW4gZWxlbWVudCB0aGF0J3Mgbm90IGFuIG9wdGlvbgorLy8gZWxlbWVudCAobnVs
bCwgdW5kZWZpbmVkLCBvdGhlciBraW5kcyBvZiBvYmplY3RzLCBvdGhlciBraW5kcyBvZiBlbGVt
ZW50cykKK215U2VsZWN0Lm9wdGlvbnNbMTBdID0gbnVsbDsKK3Nob3VsZEJlKCJteVNlbGVjdC5v
cHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgi
LCAiLTEiKTsKK215U2VsZWN0Lm9wdGlvbnNbMTBdID0gdW5kZWZpbmVkOworc2hvdWxkQmUoIm15
U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEwIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0
ZWRJbmRleCIsICItMSIpOworbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBteVNlbGVjdDsKK3Nob3Vs
ZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUoIm15U2VsZWN0
LnNlbGVjdGVkSW5kZXgiLCAiLTEiKTsKKworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9zZWxlY3Qtc2VsZWN0ZWRJbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL3NlbGVjdC1zZWxlY3RlZEluZGV4Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9zZWxlY3Qtc2VsZWN0ZWRJbmRleC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDgyIEBACis8c2VsZWN0IGlkPSJ0ZXN0IiBzaXplPSIzIj4KKzwvc2VsZWN0
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZXNldChteVNl
bGVjdCkgeworICBteVNlbGVjdC5sZW5ndGggPSAwOworICBteVNlbGVjdC5vcHRpb25zW215U2Vs
ZWN0Lmxlbmd0aF0gPSBuZXcgT3B0aW9uKCJvbmUiLCAidmFsdWUiLCB0cnVlLCB0cnVlKTsKKyAg
bXlTZWxlY3Qub3B0aW9uc1tteVNlbGVjdC5sZW5ndGhdID0gbmV3IE9wdGlvbigidHdvIiwgInZh
bHVlIiwgdHJ1ZSwgdHJ1ZSk7Cit9CisKK3ZhciBteVNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CityZXNldChteVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMubGVu
Z3RoID0gLTE7CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hv
dWxkQmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMSIpOworCisvLyAxKSBzZXR0aW5nIGxl
bmd0aCB0byBhIGxhcmdlciBsZW5ndGgKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gNTsKK3No
b3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICI1Iik7CitzaG91bGRCZSgibXlTZWxl
Y3Quc2VsZWN0ZWRJbmRleCIsICIxIik7CisKKy8vIDIpIHNldHRpbmcgbGVuZ3RoIHRvIGEgc21h
bGxlciBsZW5ndGgKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gMjsKK3Nob3VsZEJlKCJteVNl
bGVjdC5vcHRpb25zLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJ
bmRleCIsICIxIik7CisKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gMTsKK3Nob3VsZEJlKCJt
eVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0
ZWRJbmRleCIsICItMSIpOworcmVzZXQobXlTZWxlY3QpOworCisvLyAzKSBzZXR0aW5nIGxlbmd0
aCB0byB0aGUgc2FtZSBsZW5ndGgKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gMjsKK3Nob3Vs
ZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgibXlTZWxlY3Qu
c2VsZWN0ZWRJbmRleCIsICIxIik7CisKKy8vIDQpIHNldHRpbmcgbGVuZ3RoIHRvIG5vbi1pbnRl
Z2VyIHZhbHVlcyAobnVsbCwKKy8vIHVuZGVmaW5lZCwgbm9uLW51bWVyaWMgc3RyaW5nLCBmbG9h
dGluZyBwb2ludCBudW1iZXIpCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9IG51bGwKK3Nob3Vs
ZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgibXlTZWxlY3Qu
c2VsZWN0ZWRJbmRleCIsICItMSIpOworcmVzZXQobXlTZWxlY3QpOworCitteVNlbGVjdC5vcHRp
b25zLmxlbmd0aCA9IHVuZGVmaW5lZDsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0
aCIsICIwIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICItMSIpOworcmVz
ZXQobXlTZWxlY3QpOworCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9ICJhcHBsZSIKK3Nob3Vs
ZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgibXlTZWxlY3Qu
c2VsZWN0ZWRJbmRleCIsICItMSIpOworcmVzZXQobXlTZWxlY3QpOworCitteVNlbGVjdC5vcHRp
b25zLmxlbmd0aCA9IDIuMTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIy
Iik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxIik7CisKKy8vIDUpIHNl
dHRpbmcgYW4gZWxlbWVudCBieSBpbmRleCBwYXN0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbGlz
dAorbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBuZXcgT3B0aW9uKCJ0ZW4iLCAidmFsdWUiLCB0cnVl
LCB0cnVlKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMSIpOworc2hv
dWxkQmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMTAiKTsKKworLy8gNikgc2V0dGluZyBh
biBleGlzdGluZyBlbGVtZW50IGJ5IGluZGV4CitteVNlbGVjdC5vcHRpb25zWzEwXSA9IG15U2Vs
ZWN0Lm9wdGlvbnNbMTBdOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEx
Iik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxMCIpOworCisvLyA3KSB0
cnlpbmcgdG8gc2V0IGFuIGVsZW1lbnQgdGhhdCdzIG5vdCBhbiBvcHRpb24KKy8vIGVsZW1lbnQg
KG51bGwsIHVuZGVmaW5lZCwgb3RoZXIga2luZHMgb2Ygb2JqZWN0cywgb3RoZXIga2luZHMgb2Yg
ZWxlbWVudHMpCitteVNlbGVjdC5vcHRpb25zWzEwXSA9IG51bGw7CitzaG91bGRCZSgibXlTZWxl
Y3Qub3B0aW9ucy5sZW5ndGgiLCAiMTAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZElu
ZGV4IiwgIi0xIik7CitteVNlbGVjdC5vcHRpb25zWzEwXSA9IHVuZGVmaW5lZDsKK3Nob3VsZEJl
KCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUoIm15U2VsZWN0LnNl
bGVjdGVkSW5kZXgiLCAiLTEiKTsKK215U2VsZWN0Lm9wdGlvbnNbMTBdID0gbXlTZWxlY3Q7Citz
aG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMTAiKTsKK3Nob3VsZEJlKCJteVNl
bGVjdC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CisKKzwvc2NyaXB0PgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODA3
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAor
MjAwNi0wNi0xMCAgUm9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBodHRwOi8vYnVnemlsbGEub3Bl
bmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYyODI6CisgICAgICAgIEFkZGluZyBuZXcgT3B0
aW9uIHdpdGggbmV3IE9wdGlvbih0ZXh0LCB2YWx1ZSwgZGVmYXVsdFNlbGVjdGVkLCBzZWxlY3Rl
ZCkgZmFpbHMgdG8gdXBkYXRlIHNlbGVjdGVkSW5kZXgKKworICAgICAgICBVcGRhdGUgc2VsZWN0
ZWRJbmRleCB3aGVuIGEgbmV3IG9wdGlvbiBpcyBhZGRlZCB1c2luZyBqYXZhc2NyaXB0LgorCisg
ICAgICAgICogYmluZGluZ3MvanMva2pzX2h0bWwuY3BwOgorICAgICAgICAoS0pTOjpKU0hUTUxT
ZWxlY3RDb2xsZWN0aW9uOjpwdXQpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAg
KiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisKIDIwMDYtMDYtMTAgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICAtIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFy
d2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxNQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfaHRtbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfaHRtbC5j
cHAJKHJldmlzaW9uIDE0ODA3KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfaHRtbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NDUsNzkgKzE3NDUsNDQgQEAgdm9pZCBKU0hUTUxTZWxlY3RD
b2xsZWN0aW9uOjpwdXQoRXhlY1N0YQogI2lmZGVmIEtKU19WRVJCT1NFCiAgIGtkRGVidWcoNjA3
MCkgPDwgIkpTSFRNTFNlbGVjdENvbGxlY3Rpb246OnB1dCAiIDw8IHByb3BlcnR5TmFtZS5kZXBy
ZWNhdGVkU3RyaW5nKCkgPDwgZW5kbDsKICNlbmRpZgotICBpZiAoIHByb3BlcnR5TmFtZSA9PSAi
c2VsZWN0ZWRJbmRleCIgKSB7Ci0gICAgbV9lbGVtZW50LT5zZXRTZWxlY3RlZEluZGV4KCB2YWx1
ZS0+dG9JbnQzMiggZXhlYyApICk7Ci0gICAgcmV0dXJuOwotICB9Ci0gIC8vIHJlc2l6ZSA/Cisg
IGlmICggcHJvcGVydHlOYW1lID09ICJzZWxlY3RlZEluZGV4IiApCisgICAgbV9lbGVtZW50LT5z
ZXRTZWxlY3RlZEluZGV4KHZhbHVlLT50b0ludDMyKGV4ZWMpKTsKICAgZWxzZSBpZiAocHJvcGVy
dHlOYW1lID09IGxlbmd0aFByb3BlcnR5TmFtZSkgewotICAgIGludCBleGNlcHRpb24gPSAwOwot
Ci0gICAgdW5zaWduZWQgbmV3TGVuOwotICAgIGJvb2wgY29udmVydGVkID0gdmFsdWUtPmdldFVJ
bnQzMihuZXdMZW4pOwotCi0gICAgaWYgKCFjb252ZXJ0ZWQpCi0gICAgICByZXR1cm47Ci0KLSAg
ICBpbnQgZGlmZiA9IG1fZWxlbWVudC0+bGVuZ3RoKCkgLSBuZXdMZW47Ci0KLSAgICBpZiAoZGlm
ZiA8IDApIHsgLy8gYWRkIGR1bW15IGVsZW1lbnRzCi0gICAgICBkbyB7Ci0gICAgICAgIFJlZlB0
cjxFbGVtZW50PiBvcHRpb24gPSBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+Y3JlYXRlRWxl
bWVudCgib3B0aW9uIiwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAg
ICAgICBicmVhazsgICAgICAgICAKLSAgICAgICAgbV9lbGVtZW50LT5hZGQoc3RhdGljX2Nhc3Q8
SFRNTEVsZW1lbnQqPihvcHRpb24uZ2V0KCkpLCAwLCBleGNlcHRpb24pOwotICAgICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICAgIGJyZWFrOwotICAgICAgfSB3aGlsZSAoKytkaWZmKTsKKyAg
ICAvLyByZXNpemUgPworICAgIGlmICh2YWx1ZS0+aXNOdW1iZXIoKSkgeworICAgICAgZG91Ymxl
IG5ld0xlbjsKKyAgICAgIGlmICh2YWx1ZS0+Z2V0TnVtYmVyKG5ld0xlbikpIHsKKyAgICAgICAg
aW50IGV4Y2VwdGlvbiA9IDA7CisgICAgICAgIGlmIChuZXdMZW4gPj0gMCkgeworICAgICAgICAg
IG1fZWxlbWVudC0+c2V0TGVuZ3RoKHVuc2lnbmVkKGZsb29yKG5ld0xlbikpLCBleGNlcHRpb24p
OworICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB9
CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGludCBleGNlcHRpb24gPSAwOworICAgICAg
bV9lbGVtZW50LT5zZXRMZW5ndGgoMCwgZXhjZXB0aW9uKTsKKyAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwogICAgIH0KLSAgICBlbHNlIC8vIHJlbW92ZSBlbGVtZW50cwot
ICAgICAgd2hpbGUgKGRpZmYtLSA+IDApCi0gICAgICAgIG1fZWxlbWVudC0+cmVtb3ZlKG5ld0xl
bik7Ci0KLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKLSAgICByZXR1cm47
Ci0gIH0KLSAgLy8gYW4gaW5kZXggPwotICBib29sIG9rOwotICB1bnNpZ25lZCBpbnQgdSA9IHBy
b3BlcnR5TmFtZS50b1VJbnQzMigmb2spOwotICBpZiAoIW9rKQotICAgIHJldHVybjsKLQotICBp
ZiAodmFsdWUtPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAvLyBudWxsIGFuZCB1bmRlZmlu
ZWQgZGVsZXRlLiBvdGhlcnMsIHRvbyA/Ci0gICAgbV9lbGVtZW50LT5yZW1vdmUodSk7Ci0gICAg
cmV0dXJuOwotICB9Ci0KLSAgLy8gaXMgdiBhbiBvcHRpb24gZWxlbWVudCA/Ci0gIFdlYkNvcmU6
Ok5vZGUgKm9wdGlvbiA9IHRvTm9kZSh2YWx1ZSk7Ci0gIGlmICghb3B0aW9uIHx8ICFvcHRpb24t
Pmhhc1RhZ05hbWUob3B0aW9uVGFnKSkKLSAgICByZXR1cm47Ci0KLSAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gIGludCBkaWZmID0gaW50KHUpIC0gbV9lbGVtZW50LT5sZW5ndGgoKTsKLSAgSFRNTEVs
ZW1lbnQqIGJlZm9yZSA9IDA7Ci0gIC8vIG91dCBvZiBhcnJheSBib3VuZHMgPyBmaXJzdCBpbnNl
cnQgZW1wdHkgZHVtbWllcwotICBpZiAoZGlmZiA+IDApIHsKLSAgICB3aGlsZSAoZGlmZi0tKSB7
Ci0gICAgICBSZWZQdHI8RWxlbWVudD4gZHVtbXlPcHRpb24gPSBtX2VsZW1lbnQtPm93bmVyRG9j
dW1lbnQoKS0+Y3JlYXRlRWxlbWVudCgib3B0aW9uIiwgZXhjZXB0aW9uKTsKLSAgICAgIGlmICgh
ZHVtbXlPcHRpb24pCi0gICAgICAgIGJyZWFrOyAgICAgIAotICAgICAgbV9lbGVtZW50LT5hZGQo
c3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihkdW1teU9wdGlvbi5nZXQoKSksIDAsIGV4Y2VwdGlv
bik7Ci0gICAgICBpZiAoZXhjZXB0aW9uKSAKLSAgICAgICAgICBicmVhazsKKyAgfSBlbHNlIHsK
KyAgICAvLyBhbiBpbmRleCA/CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLnRvVUludDMyKCZvayk7CisgICAgaWYgKG9rKSB7CisgICAgICBpZiAodmFsdWUtPmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgLy8gbnVsbCBhbmQgdW5kZWZpbmVkIGRlbGV0
ZS4gb3RoZXJzLCB0b28gPworICAgICAgICBtX2VsZW1lbnQtPnJlbW92ZShpKTsKKyAgICAgIH0g
ZWxzZSB7CisgICAgICAgIFdlYkNvcmU6Ok5vZGUgKm9wdGlvbiA9IHRvTm9kZSh2YWx1ZSk7Cisg
ICAgICAgIC8vIGlzIHYgYW4gb3B0aW9uIGVsZW1lbnQgPworICAgICAgICBpZiAoIW9wdGlvbiB8
fCAhb3B0aW9uLT5oYXNUYWdOYW1lKG9wdGlvblRhZykpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgICAgIG1fZWxlbWVudC0+c2V0T3B0aW9u
KGksIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4ob3B0aW9uKSwgZXhjZXB0aW9uKTsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICB9CiAgICAg
fQotICAgIC8vIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgPwotICB9IGVsc2UgaWYgKGRpZmYg
PCAwKSB7Ci0gICAgYmVmb3JlID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihtX2VsZW1lbnQt
Pm9wdGlvbnMoKS0+aXRlbSh1KzEpKTsKLSAgICBtX2VsZW1lbnQtPnJlbW92ZSh1KTsKICAgfQot
ICAvLyBmaW5hbGx5IGFkZCB0aGUgbmV3IGVsZW1lbnQKLSAgaWYgKGV4Y2VwdGlvbiA9PSAwKQot
ICAgIG1fZWxlbWVudC0+YWRkKHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4ob3B0aW9u
KSwgYmVmb3JlLCBleGNlcHRpb24pOwotCi0gIHNldERPTUV4Y2VwdGlvbihleGVjLCBleGNlcHRp
b24pOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vIEltYWdlIE9iamVjdCAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMTQ4MDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzEsNCArNDcxLDQ3IEBAIE5vZGUqIEhUTUxTZWxlY3RFbGVtZW50OjpuYW1l
ZEl0ZW0oY29uc3QKICAgICByZXR1cm4gKG9wdGlvbnMoKS0+bmFtZWRJdGVtKG5hbWUsIGNhc2VT
ZW5zaXRpdmUpKTsKIH0KIAordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uKHVuc2ln
bmVkIGluZGV4LCBIVE1MT3B0aW9uRWxlbWVudCogb3B0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoaW5kZXggPiBJTlRfTUFYKQorICAgICAgICBpbmRleCA9IElOVF9NQVg7Cisg
ICAgaW50IGRpZmYgPSBpbmRleCAgLSBsZW5ndGgoKTsKKyAgICBIVE1MRWxlbWVudCogYmVmb3Jl
ID0gMDsKKyAgICAvLyBvdXQgb2YgYXJyYXkgYm91bmRzID8gZmlyc3QgaW5zZXJ0IGVtcHR5IGR1
bW1pZXMKKyAgICBpZiAoZGlmZiA+IDApIHsKKyAgICAgICAgc2V0TGVuZ3RoKGluZGV4LCBlYyk7
CisgICAgICAgIC8vIHJlcGxhY2UgYW4gZXhpc3RpbmcgZW50cnkgPworICAgIH0gZWxzZSBpZiAo
ZGlmZiA8IDApIHsKKyAgICAgICAgYmVmb3JlID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihv
cHRpb25zKCktPml0ZW0oaW5kZXgrMSkpOworICAgICAgICByZW1vdmUoaW5kZXgpOworICAgIH0K
KyAgICAvLyBmaW5hbGx5IGFkZCB0aGUgbmV3IGVsZW1lbnQKKyAgICBpZiAoZWMgPT0gMCkgewor
ICAgICAgICBhZGQob3B0aW9uLCBiZWZvcmUsIGVjKTsKKyAgICAgICAgaWYgKGRpZmYgPj0gMCkK
KyAgICAgICAgICAgIHNldFNlbGVjdGVkSW5kZXgoaW5kZXgpOworICAgIH0KK30KKwordm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgaWYgKG5ld0xlbiA+IElOVF9NQVgpCisgICAgICAgIG5ld0xlbiA9IElO
VF9NQVg7CisgICAgaW50IGRpZmYgPSBsZW5ndGgoKSAtIG5ld0xlbjsKKworICAgIGlmIChkaWZm
IDwgMCkgeyAvLyBhZGQgZHVtbXkgZWxlbWVudHMKKyAgICAgICAgZG8geworICAgICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IG9wdGlvbiA9IG93bmVyRG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudCgi
b3B0aW9uIiwgZWMpOworICAgICAgICAgICAgaWYgKCFvcHRpb24pCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBhZGQoc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihvcHRpb24u
Z2V0KCkpLCAwLCBlYyk7CisgICAgICAgICAgICBpZiAoZWMpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0gd2hpbGUgKCsrZGlmZik7CisgICAgfQorICAgIGVsc2UgLy8gcmVtb3Zl
IGVsZW1lbnRzCisgICAgICAgIHdoaWxlIChkaWZmLS0gPiAwKQorICAgICAgICAgICAgcmVtb3Zl
KG5ld0xlbik7Cit9CisKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAkocmV2aXNpb24gMTQ4MDcpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0U2l6ZShpbnQpOwogCisgICAgdm9pZCBzZXRPcHRpb24odW5zaWduZWQgaW5kZXgsIEhUTUxP
cHRpb25FbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2ln
bmVkLCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25z
dCBTdHJpbmcgJm5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUpOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="2553"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8829</attachid>
            <date>2006-06-12 13:30:39 -0700</date>
            <delta_ts>2006-06-12 16:30:30 -0700</delta_ts>
            <desc>Improved patch</desc>
            <filename>6282-6.diff</filename>
            <type>text/plain</type>
            <size>16943</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODIyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDYtMTIgIFJvYiBCdWlzICA8YnVpc0Br
ZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3QgY2FzZXMgZm9yCisgICAgICAgIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcv
c2hvd19idWcuY2dpP2lkPTYyODI+CisKKyAgICAgICAgKiBmYXN0L2RvbS9zZWxlY3Qtc2VsZWN0
ZWRJbmRleC1tdWx0aXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zZWxlY3Qt
c2VsZWN0ZWRJbmRleC5odG1sOiBBZGRlZC4KKwogMjAwNi0wNi0xMCAgTWl0eiBQZXR0ZWwgIDxv
cGVuZGFyd2luLm9yZ0BtaXR6cGV0dGVsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBoeWF0
dC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NlbGVjdC1zZWxlY3RlZEluZGV4LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZWxlY3Qtc2VsZWN0
ZWRJbmRleC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zZWxlY3Qtc2VsZWN0ZWRJbmRleC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzAgQEAKKworUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG15U2Vs
ZWN0LnNlbGVjdGVkSW5kZXggaXMgMQorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyA1
CitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMQorUEFTUyBteVNlbGVjdC5vcHRpb25z
Lmxlbmd0aCBpcyAyCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMQorUEFTUyBteVNl
bGVjdC5vcHRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMg
LTEKK1BBU1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBteVNlbGVjdC5zZWxl
Y3RlZEluZGV4IGlzIDEKK1BBU1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMAorUEFTUyBt
eVNlbGVjdC5zZWxlY3RlZEluZGV4IGlzIC0xCitQQVNTIG15U2VsZWN0Lm9wdGlvbnMubGVuZ3Ro
IGlzIDAKK1BBU1MgbXlTZWxlY3Quc2VsZWN0ZWRJbmRleCBpcyAtMQorUEFTUyBteVNlbGVjdC5v
cHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgLTEKK1BB
U1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMgorUEFTUyBteVNlbGVjdC5zZWxlY3RlZElu
ZGV4IGlzIDEKK1BBU1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMTEKK1BBU1MgbXlTZWxl
Y3Quc2VsZWN0ZWRJbmRleCBpcyAxMAorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAx
MQorUEFTUyBteVNlbGVjdC5zZWxlY3RlZEluZGV4IGlzIDEwCitQQVNTIG15U2VsZWN0Lm9wdGlv
bnMubGVuZ3RoIGlzIDEwCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgLTEKK1BBU1Mg
bXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMTAKK1BBU1MgbXlTZWxlY3Quc2VsZWN0ZWRJbmRl
eCBpcyAtMQorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAxMAorUEFTUyBteVNlbGVj
dC5zZWxlY3RlZEluZGV4IGlzIC0xCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NlbGVj
dC1zZWxlY3RlZEluZGV4LW11bHRpcGxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9zZWxlY3Qtc2VsZWN0ZWRJbmRleC1tdWx0aXBsZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZWxlY3Qtc2VsZWN0ZWRJ
bmRleC1tdWx0aXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAK
KworUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG15U2VsZWN0LnNlbGVj
dGVkSW5kZXggaXMgMAorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyA1CitQQVNTIG15
U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMAorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBp
cyAyCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMAorUEFTUyBteVNlbGVjdC5vcHRp
b25zLmxlbmd0aCBpcyAxCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMAorUEFTUyBt
eVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXgg
aXMgMAorUEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAwCitQQVNTIG15U2VsZWN0LnNl
bGVjdGVkSW5kZXggaXMgLTEKK1BBU1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMAorUEFT
UyBteVNlbGVjdC5zZWxlY3RlZEluZGV4IGlzIC0xCitQQVNTIG15U2VsZWN0Lm9wdGlvbnMubGVu
Z3RoIGlzIDAKK1BBU1MgbXlTZWxlY3Quc2VsZWN0ZWRJbmRleCBpcyAtMQorUEFTUyBteVNlbGVj
dC5vcHRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMAor
UEFTUyBteVNlbGVjdC5vcHRpb25zLmxlbmd0aCBpcyAxMQorUEFTUyBteVNlbGVjdC5zZWxlY3Rl
ZEluZGV4IGlzIDAKK1BBU1MgbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMTEKK1BBU1MgbXlT
ZWxlY3Quc2VsZWN0ZWRJbmRleCBpcyAwCitQQVNTIG15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIGlz
IDEwCitQQVNTIG15U2VsZWN0LnNlbGVjdGVkSW5kZXggaXMgMAorUEFTUyBteVNlbGVjdC5vcHRp
b25zLmxlbmd0aCBpcyAxMAorUEFTUyBteVNlbGVjdC5zZWxlY3RlZEluZGV4IGlzIDAKK1BBU1Mg
bXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggaXMgMTAKK1BBU1MgbXlTZWxlY3Quc2VsZWN0ZWRJbmRl
eCBpcyAwCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3NlbGVjdC1zZWxlY3RlZEluZGV4
LW11bHRpcGxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vc2VsZWN0
LXNlbGVjdGVkSW5kZXgtbXVsdGlwbGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL3NlbGVjdC1zZWxlY3RlZEluZGV4LW11bHRpcGxlLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODMgQEAKKzxzZWxlY3QgbXVsdGlwbGUgaWQ9InRlc3QiIHNpemU9IjMiPgor
PC9zZWxlY3Q+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJl
c2V0KG15U2VsZWN0KSB7CisgIG15U2VsZWN0Lmxlbmd0aCA9IDA7CisgIG15U2VsZWN0Lm9wdGlv
bnNbbXlTZWxlY3QubGVuZ3RoXSA9IG5ldyBPcHRpb24oIm9uZSIsICJ2YWx1ZSIsIHRydWUsIHRy
dWUpOworICBteVNlbGVjdC5vcHRpb25zW215U2VsZWN0Lmxlbmd0aF0gPSBuZXcgT3B0aW9uKCJ0
d28iLCAidmFsdWUiLCB0cnVlLCB0cnVlKTsKK30KKwordmFyIG15U2VsZWN0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QiKTsKK3Jlc2V0KG15U2VsZWN0KTsKKworbXlTZWxlY3Qub3B0
aW9ucy5sZW5ndGggPSAtMTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIy
Iik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIwIik7CisKKy8vIDEpIHNl
dHRpbmcgbGVuZ3RoIHRvIGEgbGFyZ2VyIGxlbmd0aAorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgg
PSA1Oworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjUiKTsKK3Nob3VsZEJl
KCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIjAiKTsKKworLy8gMikgc2V0dGluZyBsZW5ndGgg
dG8gYSBzbWFsbGVyIGxlbmd0aAorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSAyOworc2hvdWxk
QmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5z
ZWxlY3RlZEluZGV4IiwgIjAiKTsKKworbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSAxOworc2hv
dWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJteVNlbGVj
dC5zZWxlY3RlZEluZGV4IiwgIjAiKTsKK3Jlc2V0KG15U2VsZWN0KTsKKworLy8gMykgc2V0dGlu
ZyBsZW5ndGggdG8gdGhlIHNhbWUgbGVuZ3RoCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9IDI7
CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoIm15
U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMCIpOworCisvLyA0KSBzZXR0aW5nIGxlbmd0aCB0byBu
b24taW50ZWdlciB2YWx1ZXMgKG51bGwsCisvLyB1bmRlZmluZWQsIG5vbi1udW1lcmljIHN0cmlu
ZywgZmxvYXRpbmcgcG9pbnQgbnVtYmVyKQorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSBudWxs
Oworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJt
eVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CityZXNldChteVNlbGVjdCk7CisKK215U2Vs
ZWN0Lm9wdGlvbnMubGVuZ3RoID0gdW5kZWZpbmVkOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlv
bnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIi0x
Iik7CityZXNldChteVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gImFwcGxl
IjsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRCZSgi
bXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICItMSIpOworcmVzZXQobXlTZWxlY3QpOworCitteVNl
bGVjdC5vcHRpb25zLmxlbmd0aCA9IDIuMTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxl
bmd0aCIsICIyIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIwIik7CisK
Ky8vIDUpIHNldHRpbmcgYW4gZWxlbWVudCBieSBpbmRleCBwYXN0IHRoZSBlbmQgb2YgdGhlIGN1
cnJlbnQgbGlzdAorbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBuZXcgT3B0aW9uKCJ0ZW4iLCAidmFs
dWUiLCB0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIx
MSIpOworc2hvdWxkQmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMCIpOworCisvLyA2KSBz
ZXR0aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgYnkgaW5kZXgKK215U2VsZWN0Lm9wdGlvbnNbMTBd
ID0gbXlTZWxlY3Qub3B0aW9uc1sxMF07CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5n
dGgiLCAiMTEiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIjAiKTsKKwor
Ly8gNykgdHJ5aW5nIHRvIHNldCBhbiBlbGVtZW50IHRoYXQncyBub3QgYW4gb3B0aW9uCisvLyBl
bGVtZW50IChudWxsLCB1bmRlZmluZWQsIG90aGVyIGtpbmRzIG9mIG9iamVjdHMsIG90aGVyIGtp
bmRzIG9mIGVsZW1lbnRzKQorbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBudWxsOworc2hvdWxkQmUo
Im15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjEwIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2Vs
ZWN0ZWRJbmRleCIsICIwIik7CitteVNlbGVjdC5vcHRpb25zWzEwXSA9IHVuZGVmaW5lZDsKK3No
b3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUoIm15U2Vs
ZWN0LnNlbGVjdGVkSW5kZXgiLCAiMCIpOworbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBteVNlbGVj
dDsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUo
Im15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMCIpOworCis8L3NjcmlwdD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2VsZWN0LXNlbGVjdGVkSW5kZXguaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zZWxlY3Qtc2VsZWN0ZWRJbmRleC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vc2VsZWN0LXNlbGVjdGVkSW5kZXguaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorPHNlbGVjdCBpZD0idGVzdCIgc2l6ZT0iMyI+
Cis8L3NlbGVjdD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24g
cmVzZXQobXlTZWxlY3QpIHsKKyAgbXlTZWxlY3QubGVuZ3RoID0gMDsKKyAgbXlTZWxlY3Qub3B0
aW9uc1tteVNlbGVjdC5sZW5ndGhdID0gbmV3IE9wdGlvbigib25lIiwgInZhbHVlIiwgdHJ1ZSwg
dHJ1ZSk7CisgIG15U2VsZWN0Lm9wdGlvbnNbbXlTZWxlY3QubGVuZ3RoXSA9IG5ldyBPcHRpb24o
InR3byIsICJ2YWx1ZSIsIHRydWUsIHRydWUpOworfQorCit2YXIgbXlTZWxlY3QgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworcmVzZXQobXlTZWxlY3QpOworCitteVNlbGVjdC5v
cHRpb25zLmxlbmd0aCA9IC0xOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwg
IjIiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIjEiKTsKKworLy8gMSkg
c2V0dGluZyBsZW5ndGggdG8gYSBsYXJnZXIgbGVuZ3RoCitteVNlbGVjdC5vcHRpb25zLmxlbmd0
aCA9IDU7CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiNSIpOworc2hvdWxk
QmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMSIpOworCisvLyAyKSBzZXR0aW5nIGxlbmd0
aCB0byBhIHNtYWxsZXIgbGVuZ3RoCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9IDI7CitzaG91
bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoIm15U2VsZWN0
LnNlbGVjdGVkSW5kZXgiLCAiMSIpOworCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9IDE7Citz
aG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm15U2Vs
ZWN0LnNlbGVjdGVkSW5kZXgiLCAiLTEiKTsKK3Jlc2V0KG15U2VsZWN0KTsKKworLy8gMykgc2V0
dGluZyBsZW5ndGggdG8gdGhlIHNhbWUgbGVuZ3RoCitteVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9
IDI7CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUo
Im15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMSIpOworCisvLyA0KSBzZXR0aW5nIGxlbmd0aCB0
byBub24taW50ZWdlciB2YWx1ZXMgKG51bGwsCisvLyB1bmRlZmluZWQsIG5vbi1udW1lcmljIHN0
cmluZywgZmxvYXRpbmcgcG9pbnQgbnVtYmVyKQorbXlTZWxlY3Qub3B0aW9ucy5sZW5ndGggPSBu
dWxsOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJl
KCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CityZXNldChteVNlbGVjdCk7CisKK215
U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gdW5kZWZpbmVkOworc2hvdWxkQmUoIm15U2VsZWN0Lm9w
dGlvbnMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4Iiwg
Ii0xIik7CityZXNldChteVNlbGVjdCk7CisKK215U2VsZWN0Lm9wdGlvbnMubGVuZ3RoID0gImFw
cGxlIjsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIwIik7CitzaG91bGRC
ZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICItMSIpOworcmVzZXQobXlTZWxlY3QpOworCitt
eVNlbGVjdC5vcHRpb25zLmxlbmd0aCA9IDIuMTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25z
Lmxlbmd0aCIsICIyIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxIik7
CisKKy8vIDUpIHNldHRpbmcgYW4gZWxlbWVudCBieSBpbmRleCBwYXN0IHRoZSBlbmQgb2YgdGhl
IGN1cnJlbnQgbGlzdAorbXlTZWxlY3Qub3B0aW9uc1sxMF0gPSBuZXcgT3B0aW9uKCJ0ZW4iLCAi
dmFsdWUiLCB0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIs
ICIxMSIpOworc2hvdWxkQmUoIm15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiMTAiKTsKKworLy8g
Nikgc2V0dGluZyBhbiBleGlzdGluZyBlbGVtZW50IGJ5IGluZGV4CitteVNlbGVjdC5vcHRpb25z
WzEwXSA9IG15U2VsZWN0Lm9wdGlvbnNbMTBdOworc2hvdWxkQmUoIm15U2VsZWN0Lm9wdGlvbnMu
bGVuZ3RoIiwgIjExIik7CitzaG91bGRCZSgibXlTZWxlY3Quc2VsZWN0ZWRJbmRleCIsICIxMCIp
OworCisvLyA3KSB0cnlpbmcgdG8gc2V0IGFuIGVsZW1lbnQgdGhhdCdzIG5vdCBhbiBvcHRpb24K
Ky8vIGVsZW1lbnQgKG51bGwsIHVuZGVmaW5lZCwgb3RoZXIga2luZHMgb2Ygb2JqZWN0cywgb3Ro
ZXIga2luZHMgb2YgZWxlbWVudHMpCitteVNlbGVjdC5vcHRpb25zWzEwXSA9IG51bGw7CitzaG91
bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMTAiKTsKK3Nob3VsZEJlKCJteVNlbGVj
dC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CitteVNlbGVjdC5vcHRpb25zWzEwXSA9IHVuZGVmaW5l
ZDsKK3Nob3VsZEJlKCJteVNlbGVjdC5vcHRpb25zLmxlbmd0aCIsICIxMCIpOworc2hvdWxkQmUo
Im15U2VsZWN0LnNlbGVjdGVkSW5kZXgiLCAiLTEiKTsKK215U2VsZWN0Lm9wdGlvbnNbMTBdID0g
bXlTZWxlY3Q7CitzaG91bGRCZSgibXlTZWxlY3Qub3B0aW9ucy5sZW5ndGgiLCAiMTAiKTsKK3No
b3VsZEJlKCJteVNlbGVjdC5zZWxlY3RlZEluZGV4IiwgIi0xIik7CisKKzwvc2NyaXB0PgpJbmRl
eDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE0ODIyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMCBAQAorMjAwNi0wNi0xMiAgUm9iIEJ1aXMgIDxidWlzQGtkZS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTYyODI6CisgICAgICAgIEFk
ZGluZyBuZXcgT3B0aW9uIHdpdGggbmV3IE9wdGlvbih0ZXh0LCB2YWx1ZSwgZGVmYXVsdFNlbGVj
dGVkLCBzZWxlY3RlZCkgZmFpbHMgdG8gdXBkYXRlIHNlbGVjdGVkSW5kZXgKKworICAgICAgICBV
cGRhdGUgc2VsZWN0ZWRJbmRleCB3aGVuIGEgbmV3IG9wdGlvbiBpcyBhZGRlZCB1c2luZyBqYXZh
c2NyaXB0LgorCisgICAgICAgICogYmluZGluZ3MvanMva2pzX2h0bWwuY3BwOgorICAgICAgICAo
S0pTOjpKU0hUTUxTZWxlY3RDb2xsZWN0aW9uOjpwdXQpOgorICAgICAgICAqIGh0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dFNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dE9wdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3Ro
KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisKIDIwMDYtMDYtMTIgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IExl
dmkuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19odG1sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19odG1sLmNwcAkocmV2aXNpb24gMTQ4MjIpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19odG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0NSw3
OSArMTc0NSw0NCBAQCB2b2lkIEpTSFRNTFNlbGVjdENvbGxlY3Rpb246OnB1dChFeGVjU3RhCiAj
aWZkZWYgS0pTX1ZFUkJPU0UKICAga2REZWJ1Zyg2MDcwKSA8PCAiSlNIVE1MU2VsZWN0Q29sbGVj
dGlvbjo6cHV0ICIgPDwgcHJvcGVydHlOYW1lLmRlcHJlY2F0ZWRTdHJpbmcoKSA8PCBlbmRsOwog
I2VuZGlmCi0gIGlmICggcHJvcGVydHlOYW1lID09ICJzZWxlY3RlZEluZGV4IiApIHsKLSAgICBt
X2VsZW1lbnQtPnNldFNlbGVjdGVkSW5kZXgoIHZhbHVlLT50b0ludDMyKCBleGVjICkgKTsKLSAg
ICByZXR1cm47Ci0gIH0KLSAgLy8gcmVzaXplID8KKyAgaWYgKCBwcm9wZXJ0eU5hbWUgPT0gInNl
bGVjdGVkSW5kZXgiICkKKyAgICBtX2VsZW1lbnQtPnNldFNlbGVjdGVkSW5kZXgodmFsdWUtPnRv
SW50MzIoZXhlYykpOwogICBlbHNlIGlmIChwcm9wZXJ0eU5hbWUgPT0gbGVuZ3RoUHJvcGVydHlO
YW1lKSB7Ci0gICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0KLSAgICB1bnNpZ25lZCBuZXdMZW47Ci0g
ICAgYm9vbCBjb252ZXJ0ZWQgPSB2YWx1ZS0+Z2V0VUludDMyKG5ld0xlbik7Ci0KLSAgICBpZiAo
IWNvbnZlcnRlZCkKLSAgICAgIHJldHVybjsKLQotICAgIGludCBkaWZmID0gbV9lbGVtZW50LT5s
ZW5ndGgoKSAtIG5ld0xlbjsKLQotICAgIGlmIChkaWZmIDwgMCkgeyAvLyBhZGQgZHVtbXkgZWxl
bWVudHMKLSAgICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG9wdGlvbiA9IG1fZWxl
bWVudC0+b3duZXJEb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KCJvcHRpb24iLCBleGNlcHRpb24p
OwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgIGJyZWFrOyAgICAgICAgIAotICAg
ICAgICBtX2VsZW1lbnQtPmFkZChzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG9wdGlvbi5nZXQo
KSksIDAsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgYnJl
YWs7Ci0gICAgICB9IHdoaWxlICgrK2RpZmYpOworICAgIC8vIHJlc2l6ZSA/CisgICAgaWYgKHZh
bHVlLT5pc051bWJlcigpKSB7CisgICAgICBkb3VibGUgbmV3TGVuOworICAgICAgaWYgKHZhbHVl
LT5nZXROdW1iZXIobmV3TGVuKSkgeworICAgICAgICBpbnQgZXhjZXB0aW9uID0gMDsKKyAgICAg
ICAgaWYgKG5ld0xlbiA+PSAwKSB7CisgICAgICAgICAgbV9lbGVtZW50LT5zZXRMZW5ndGgodW5z
aWduZWQoZmxvb3IobmV3TGVuKSksIGV4Y2VwdGlvbik7CisgICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgICBtX2VsZW1lbnQtPnNldExlbmd0aCgwLCBl
eGNlcHRpb24pOworICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAg
fQotICAgIGVsc2UgLy8gcmVtb3ZlIGVsZW1lbnRzCi0gICAgICB3aGlsZSAoZGlmZi0tID4gMCkK
LSAgICAgICAgbV9lbGVtZW50LT5yZW1vdmUobmV3TGVuKTsKLQotICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwotICAgIHJldHVybjsKLSAgfQotICAvLyBhbiBpbmRleCA/Ci0g
IGJvb2wgb2s7Ci0gIHVuc2lnbmVkIGludCB1ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvayk7
Ci0gIGlmICghb2spCi0gICAgcmV0dXJuOwotCi0gIGlmICh2YWx1ZS0+aXNVbmRlZmluZWRPck51
bGwoKSkgewotICAgIC8vIG51bGwgYW5kIHVuZGVmaW5lZCBkZWxldGUuIG90aGVycywgdG9vID8K
LSAgICBtX2VsZW1lbnQtPnJlbW92ZSh1KTsKLSAgICByZXR1cm47Ci0gIH0KLQotICAvLyBpcyB2
IGFuIG9wdGlvbiBlbGVtZW50ID8KLSAgV2ViQ29yZTo6Tm9kZSAqb3B0aW9uID0gdG9Ob2RlKHZh
bHVlKTsKLSAgaWYgKCFvcHRpb24gfHwgIW9wdGlvbi0+aGFzVGFnTmFtZShvcHRpb25UYWcpKQot
ICAgIHJldHVybjsKLQotICBpbnQgZXhjZXB0aW9uID0gMDsKLSAgaW50IGRpZmYgPSBpbnQodSkg
LSBtX2VsZW1lbnQtPmxlbmd0aCgpOwotICBIVE1MRWxlbWVudCogYmVmb3JlID0gMDsKLSAgLy8g
b3V0IG9mIGFycmF5IGJvdW5kcyA/IGZpcnN0IGluc2VydCBlbXB0eSBkdW1taWVzCi0gIGlmIChk
aWZmID4gMCkgewotICAgIHdoaWxlIChkaWZmLS0pIHsKLSAgICAgIFJlZlB0cjxFbGVtZW50PiBk
dW1teU9wdGlvbiA9IG1fZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KCJv
cHRpb24iLCBleGNlcHRpb24pOwotICAgICAgaWYgKCFkdW1teU9wdGlvbikKLSAgICAgICAgYnJl
YWs7ICAgICAgCi0gICAgICBtX2VsZW1lbnQtPmFkZChzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+
KGR1bW15T3B0aW9uLmdldCgpKSwgMCwgZXhjZXB0aW9uKTsKLSAgICAgIGlmIChleGNlcHRpb24p
IAotICAgICAgICAgIGJyZWFrOworICB9IGVsc2UgeworICAgIC8vIGFuIGluZGV4ID8KKyAgICBi
b29sIG9rOworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKKyAg
ICBpZiAob2spIHsKKyAgICAgIGlmICh2YWx1ZS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICAvLyBudWxsIGFuZCB1bmRlZmluZWQgZGVsZXRlLiBvdGhlcnMsIHRvbyA/CisgICAgICAg
IG1fZWxlbWVudC0+cmVtb3ZlKGkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgV2ViQ29yZTo6
Tm9kZSAqb3B0aW9uID0gdG9Ob2RlKHZhbHVlKTsKKyAgICAgICAgLy8gaXMgdiBhbiBvcHRpb24g
ZWxlbWVudCA/CisgICAgICAgIGlmICghb3B0aW9uIHx8ICFvcHRpb24tPmhhc1RhZ05hbWUob3B0
aW9uVGFnKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpbnQgZXhjZXB0aW9uID0g
MDsKKyAgICAgICAgbV9lbGVtZW50LT5zZXRPcHRpb24oaSwgc3RhdGljX2Nhc3Q8SFRNTE9wdGlv
bkVsZW1lbnQqPihvcHRpb24pLCBleGNlcHRpb24pOworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgIH0KICAgICB9Ci0gICAgLy8gcmVwbGFjZSBhbiBleGlz
dGluZyBlbnRyeSA/Ci0gIH0gZWxzZSBpZiAoZGlmZiA8IDApIHsKLSAgICBiZWZvcmUgPSBzdGF0
aWNfY2FzdDxIVE1MRWxlbWVudCo+KG1fZWxlbWVudC0+b3B0aW9ucygpLT5pdGVtKHUrMSkpOwot
ICAgIG1fZWxlbWVudC0+cmVtb3ZlKHUpOwogICB9Ci0gIC8vIGZpbmFsbHkgYWRkIHRoZSBuZXcg
ZWxlbWVudAotICBpZiAoZXhjZXB0aW9uID09IDApCi0gICAgbV9lbGVtZW50LT5hZGQoc3RhdGlj
X2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihvcHRpb24pLCBiZWZvcmUsIGV4Y2VwdGlvbik7Ci0K
LSAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIC8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8gSW1hZ2UgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDgyMikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxNCArMTAzLDE2
IEBAIGludCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleCgpIGMKICAgICByZXR1cm4g
LTE7CiB9CiAKLXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXgoIGludCAg
aW5kZXggKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0U2VsZWN0ZWRJbmRleCggaW50IGlu
ZGV4LCBib29sIGRlc2VsZWN0ICkKIHsKICAgICAvLyBkZXNlbGVjdCBhbGwgb3RoZXIgb3B0aW9u
cyBhbmQgc2VsZWN0IG9ubHkgdGhlIG5ldyBvbmUKICAgICBWZWN0b3I8SFRNTEVsZW1lbnQqPiBp
dGVtcyA9IGxpc3RJdGVtcygpOwogICAgIGludCBsaXN0SW5kZXg7Ci0gICAgZm9yIChsaXN0SW5k
ZXggPSAwOyBsaXN0SW5kZXggPCBpbnQoaXRlbXMuc2l6ZSgpKTsgbGlzdEluZGV4KyspIHsKLSAg
ICAgICAgaWYgKGl0ZW1zW2xpc3RJbmRleF0tPmhhc0xvY2FsTmFtZShvcHRpb25UYWcpKQotICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihpdGVtc1tsaXN0SW5kZXhd
KS0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgIGlmIChkZXNlbGVjdCkgeworICAgICAgICBmb3Ig
KGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IGludChpdGVtcy5zaXplKCkpOyBsaXN0SW5kZXgr
KykgeworICAgICAgICAgICAgaWYgKGl0ZW1zW2xpc3RJbmRleF0tPmhhc0xvY2FsTmFtZShvcHRp
b25UYWcpKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4o
aXRlbXNbbGlzdEluZGV4XSktPnNldFNlbGVjdGVkKGZhbHNlKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICBsaXN0SW5kZXggPSBvcHRpb25Ub0xpc3RJbmRleChpbmRleCk7CiAgICAgaWYgKGxpc3RJ
bmRleCA+PSAwKQpAQCAtNDY4LDQgKzQ3MCw0OSBAQCBOb2RlKiBIVE1MU2VsZWN0RWxlbWVudDo6
bmFtZWRJdGVtKGNvbnN0CiAgICAgcmV0dXJuIChvcHRpb25zKCktPm5hbWVkSXRlbShuYW1lLCBj
YXNlU2Vuc2l0aXZlKSk7CiB9CiAKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbih1
bnNpZ25lZCBpbmRleCwgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgZWMgPSAwOworICAgIGlmIChpbmRleCA+IElOVF9NQVgpCisgICAgICAgIGlu
ZGV4ID0gSU5UX01BWDsKKyAgICBpbnQgZGlmZiA9IGluZGV4ICAtIGxlbmd0aCgpOworICAgIEhU
TUxFbGVtZW50KiBiZWZvcmUgPSAwOworICAgIC8vIG91dCBvZiBhcnJheSBib3VuZHMgPyBmaXJz
dCBpbnNlcnQgZW1wdHkgZHVtbWllcworICAgIGlmIChkaWZmID4gMCkgeworICAgICAgICBzZXRM
ZW5ndGgoaW5kZXgsIGVjKTsKKyAgICAgICAgLy8gcmVwbGFjZSBhbiBleGlzdGluZyBlbnRyeSA/
CisgICAgfSBlbHNlIGlmIChkaWZmIDwgMCkgeworICAgICAgICBiZWZvcmUgPSBzdGF0aWNfY2Fz
dDxIVE1MRWxlbWVudCo+KG9wdGlvbnMoKS0+aXRlbShpbmRleCsxKSk7CisgICAgICAgIHJlbW92
ZShpbmRleCk7CisgICAgfQorICAgIC8vIGZpbmFsbHkgYWRkIHRoZSBuZXcgZWxlbWVudAorICAg
IGlmIChlYyA9PSAwKSB7CisgICAgICAgIGFkZChvcHRpb24sIGJlZm9yZSwgZWMpOworICAgICAg
ICBpZiAoZGlmZiA+PSAwKQorICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChpbmRleCwgIW1f
bXVsdGlwbGUpOworICAgIH0KK30KKwordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3Ro
KHVuc2lnbmVkIG5ld0xlbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAg
IGlmIChuZXdMZW4gPiBJTlRfTUFYKQorICAgICAgICBuZXdMZW4gPSBJTlRfTUFYOworICAgIGlu
dCBkaWZmID0gbGVuZ3RoKCkgLSBuZXdMZW47CisKKyAgICBpZiAoZGlmZiA8IDApIHsgLy8gYWRk
IGR1bW15IGVsZW1lbnRzCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50
PiBvcHRpb24gPSBvd25lckRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIsIGVjKTsK
KyAgICAgICAgICAgIGlmICghb3B0aW9uKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgYWRkKHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4ob3B0aW9uLmdldCgpKSwgMCwgZWMp
OworICAgICAgICAgICAgaWYgKGVjKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
IHdoaWxlICgrK2RpZmYpOworICAgIH0KKyAgICBlbHNlIC8vIHJlbW92ZSBlbGVtZW50cworICAg
ICAgICB3aGlsZSAoZGlmZi0tID4gMCkKKyAgICAgICAgICAgIHJlbW92ZShuZXdMZW4pOworfQor
CiB9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9u
IDE0ODIyKQorKysgV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHls
ZShTdHlsZUNoYW5nZSk7CiAKICAgICBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0U2VsZWN0ZWRJbmRleChpbnQgaW5kZXgpOworICAgIHZvaWQgc2V0U2VsZWN0ZWRJbmRl
eChpbnQgaW5kZXgsIGJvb2wgPSB0cnVlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTEwLDYgKzExMCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0U2l6ZShpbnQpOwogCisgICAgdm9pZCBzZXRPcHRpb24odW5zaWdu
ZWQgaW5kZXgsIEhUTUxPcHRpb25FbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2aXJ0dWFsIE5vZGUq
IG5hbWVkSXRlbShjb25zdCBTdHJpbmcgJm5hbWUsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUp
OwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="2566"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>