<?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>48308</bug_id>
          
          <creation_ts>2010-10-25 23:23:03 -0700</creation_ts>
          <short_desc>Too precise serialization from floating point number to string for &quot;number&quot; input elements</short_desc>
          <delta_ts>2010-11-09 04:27:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,&lt;input type=&quot;number&quot; step=&quot;0.005&quot; min=&quot;4&quot; value=&quot;5.005&quot;&gt;</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dai Mikurube">dmikurube</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299302</commentid>
    <comment_count>0</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-25 23:23:03 -0700</bug_when>
    <thetext>Steps to reproduce:
1. use following input &lt;input type=&quot;number&quot; step=&quot;0.005&quot; min=&quot;4&quot; value=&quot;5.005&quot; /&gt;
2. stepUp(2) (by clicking the upper button or in another way)
3. check the value

Expected:
5.015

Actually happens:
5.015000000000001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299666</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-26 11:54:24 -0700</bug_when>
    <thetext>Testcase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299701</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-26 12:20:10 -0700</bug_when>
    <thetext>Added the same test case to bug URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301060</commentid>
    <comment_count>3</comment_count>
      <attachid>72189</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-28 07:19:03 -0700</bug_when>
    <thetext>Created attachment 72189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301061</commentid>
    <comment_count>4</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-28 07:20:10 -0700</bug_when>
    <thetext>Thanks, Alwxey.

The attached Patch includes the test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301091</commentid>
    <comment_count>5</comment_count>
      <attachid>72189</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-28 09:01:18 -0700</bug_when>
    <thetext>Comment on attachment 72189
Patch

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

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:70
&gt;      NumberToStringBuffer buffer;
&gt; -    unsigned length = numberToString(number, buffer);
&gt; +    // Round the result with 9 significant digits.
&gt; +    // 9 because of the significant digits of IEEE 754 single-precision numbers.
&gt; +    // They have 23 fraction bits, then 2^24 = 16,677,216.
&gt; +    // +1 to be safe in case of re-parsing required.
&gt; +    // Another reason for 9 is to follow the example in HTML5 4.10.7.2.10.
&gt; +    // &lt;input name=opacity type=range min=0 max=1 step=0.00392156863&gt;
&gt; +    unsigned length = numberToString(number, buffer, 9);

Isn&apos;t there a potential buffer overflow here (in the old code, as well as yours)? See
http://trac.webkit.org/changeset/70198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301364</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-28 15:08:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 72189 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72189&amp;action=review
&gt; 
&gt; &gt; WebCore/html/parser/HTMLParserIdioms.cpp:70
&gt; &gt;      NumberToStringBuffer buffer;
&gt; &gt; -    unsigned length = numberToString(number, buffer);
&gt; &gt; +    // Round the result with 9 significant digits.
&gt; &gt; +    // 9 because of the significant digits of IEEE 754 single-precision numbers.
&gt; &gt; +    // They have 23 fraction bits, then 2^24 = 16,677,216.
&gt; &gt; +    // +1 to be safe in case of re-parsing required.
&gt; &gt; +    // Another reason for 9 is to follow the example in HTML5 4.10.7.2.10.
&gt; &gt; +    // &lt;input name=opacity type=range min=0 max=1 step=0.00392156863&gt;
&gt; &gt; +    unsigned length = numberToString(number, buffer, 9);
&gt; 
&gt; Isn&apos;t there a potential buffer overflow here (in the old code, as well as yours)? See
&gt; http://trac.webkit.org/changeset/70198

Never mind; numberToString() is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301493</commentid>
    <comment_count>7</comment_count>
      <attachid>72189</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-28 17:33:37 -0700</bug_when>
    <thetext>Comment on attachment 72189
Patch

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

&gt; JavaScriptCore/ChangeLog:5
&gt; +        Too precise serialization from floating point number to string

Please change the summary as Simon did for the bug entry.
We should mention that this affects only to input element.

&gt; JavaScriptCore/JavaScriptCore.exp:392
&gt; +__ZN3WTF14numberToStringEdPtj

We need similar change to JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def. The mangled symbol name in VC++ is different from gcc&apos;s.

&gt; LayoutTests/fast/forms/script-tests/input-valueasnumber-number.js:24
&gt; +shouldBe(&apos;valueAsNumberFor(&quot;123456789012345678901234567890123456789&quot;)&apos;, &apos;1.23456789012345678E+38&apos;);

Why the result is changed? This test doesn&apos;t use serializeForNumberType().

&gt; WebCore/html/HTMLInputElement.cpp:302
&gt; +    double acceptableError = step / pow(2.0, FLT_MANT_DIG);

This is specific to type=number.  Other types such as type=date may have different acceptableError value.
Please introduce InputType::acceptableError(step) and override it in NumberInputType.  You can merge the same expression in NumberImputType::stepMismatch().

&gt; WebCore/html/HTMLInputElement.cpp:303
&gt; +    if (newValue - m_inputType-&gt;minimum() &lt; -acceptableError) {

Is this change needed to pass existing tests?  If not, we need new test cases.

&gt; WebCore/html/HTMLInputElement.cpp:309
&gt; +    if (newValue - m_inputType-&gt;maximum() &gt; acceptableError) {

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301513</commentid>
    <comment_count>8</comment_count>
      <attachid>72189</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-28 18:08:30 -0700</bug_when>
    <thetext>Comment on attachment 72189
Patch

Since you seem to print precision within the single precision range, in order to achieve the same effect could you not just round the value to float before passing it to numberToString()? (or maybe better still, cast to float prior to passing the value to serializeForNumberType – that way serializeForNumberType can continue to provide JavaScript ToString conversion, as defined by the spec).  This would seem a much simpler solution and smaller change, if it works.

If you do want to change serializeForNumberType I think you need to change the comments on the function in the .cpp and the .h to make it clear this method no longer provides conversion compliant with HTML5 (as per section 2.5.4.3) – and please don&apos;t change numberToString, this is a reasonably hot function, so if you do require a different behavior please just use DecimalNumber directly from HTMLParserIdioms.

thanks,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301566</commentid>
    <comment_count>9</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-28 20:53:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
Thanks for your comments, Gavin.

Unfortunately, casting to float and printing with numberToString() don&apos;t work. The original numberToString() try printing numbers with 16-17 digits. Then, for example,
&gt; setValueAsNumberAndGetValue(-1.2)
is printed as
&gt; -1.2000000476837158
with casting to float.

To solve the first problem (like 5.015000000000001), we have to
    1. limit the printed digits in the HTML context, or
    2. make stepUp() and stepDown() more and more precise

But [1.] is not compliant with HTML5 2.5.4.3 :
&gt; The best representation of the number n as a floating point number is the string obtained from applying the JavaScript operator ToString to n.
Yes, it is a difficult problem, I think. The difficulty comes from
    A. single-precision in HTML5, but double-precision in JavaScript, and
    B. numeric errors from computing stepUp and stepDown with floating point numbers.
A and B looks like incompatible with HTML5 2.5.4.3. [2.] is, of course, naturally challenging.

What do you think about adding another numberToString with a different signature without rewriting the original numberToString? It&apos;s to avoid rewriting the original numberToString, but also to make it easy to keep following with future changes on the original numberToString. My first idea here was to print with limited digits by the same logic as JavaScript&apos;s ToString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301600</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-28 23:33:15 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Unfortunately, casting to float and printing with numberToString() don&apos;t work. The original numberToString() try printing numbers with 16-17 digits. Then, for example,
&gt; &gt; setValueAsNumberAndGetValue(-1.2)
&gt; is printed as
&gt; &gt; -1.2000000476837158
&gt; with casting to float.

ok.

&gt; What do you think about adding another numberToString with a different signature without rewriting the original numberToString? It&apos;s to avoid rewriting the original numberToString, but also to make it easy to keep following with future changes on the original numberToString. My first idea here was to print with limited digits by the same logic as JavaScript&apos;s ToString.

I think using DecimalNumber in HTMLParserIdioms as Gavin wrote is better. because HTML floating pint number doesn&apos;t need NaN/Infinity handling, so it is so different from the existing numberToString().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302393</commentid>
    <comment_count>11</comment_count>
      <attachid>72456</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-31 08:09:10 -0700</bug_when>
    <thetext>Created attachment 72456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302394</commentid>
    <comment_count>12</comment_count>
      <attachid>72189</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-31 08:19:00 -0700</bug_when>
    <thetext>Comment on attachment 72189
Patch

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

&gt;&gt; JavaScriptCore/ChangeLog:5
&gt;&gt; +        Too precise serialization from floating point number to string
&gt; 
&gt; Please change the summary as Simon did for the bug entry.
&gt; We should mention that this affects only to input element.

Modified.

&gt;&gt; JavaScriptCore/JavaScriptCore.exp:392
&gt;&gt; +__ZN3WTF14numberToStringEdPtj
&gt; 
&gt; We need similar change to JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def. The mangled symbol name in VC++ is different from gcc&apos;s.

Finally, removed it and added a new function toStringExponential to JavaScriptCore.exp and .def.

&gt;&gt; LayoutTests/fast/forms/script-tests/input-valueasnumber-number.js:24
&gt;&gt; +shouldBe(&apos;valueAsNumberFor(&quot;123456789012345678901234567890123456789&quot;)&apos;, &apos;1.23456789012345678E+38&apos;);
&gt; 
&gt; Why the result is changed? This test doesn&apos;t use serializeForNumberType().

It was a mistake. I brought it back. (Actually, both results before and after the change PASSed.)

&gt;&gt; WebCore/html/HTMLInputElement.cpp:302
&gt;&gt; +    double acceptableError = step / pow(2.0, FLT_MANT_DIG);
&gt; 
&gt; This is specific to type=number.  Other types such as type=date may have different acceptableError value.
&gt; Please introduce InputType::acceptableError(step) and override it in NumberInputType.  You can merge the same expression in NumberImputType::stepMismatch().

Done.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:303
&gt;&gt; +    if (newValue - m_inputType-&gt;minimum() &lt; -acceptableError) {
&gt; 
&gt; Is this change needed to pass existing tests?  If not, we need new test cases.

Yes, it is required to pass /platform/mac/fast/forms/input-number-click.html .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302527</commentid>
    <comment_count>13</comment_count>
      <attachid>72456</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-31 19:10:09 -0700</bug_when>
    <thetext>Comment on attachment 72456
Patch

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

&gt; WebCore/html/NumberInputType.cpp:132
&gt;      // Accepts erros in lower fractional part which IEEE 754 single-precision

The comment should be moved to NumberInputType::acceptableError().

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:71
&gt; +    static const unsigned NumberToStringBufferLength = 96;

Why don&apos;t you use NumberToStringBuffer and NumberToStringBufferLength in dtoa.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302551</commentid>
    <comment_count>14</comment_count>
      <attachid>72456</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-31 20:29:05 -0700</bug_when>
    <thetext>Comment on attachment 72456
Patch

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

&gt;&gt; WebCore/html/NumberInputType.cpp:132
&gt;&gt;      // Accepts erros in lower fractional part which IEEE 754 single-precision
&gt; 
&gt; The comment should be moved to NumberInputType::acceptableError().

Moved. Thanks.

&gt;&gt; WebCore/html/parser/HTMLParserIdioms.cpp:71
&gt;&gt; +    static const unsigned NumberToStringBufferLength = 96;
&gt; 
&gt; Why don&apos;t you use NumberToStringBuffer and NumberToStringBufferLength in dtoa.h?

It&apos;s because NumberToStringBuffer and -Length is just for numberToString(). Currently serializeForNumberType() doesn&apos;t use numberToString(), so I stopped to use NumberToStringBuffer here.
(I removed #include &lt;dtoa.h&gt;. I forgot to remove it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302552</commentid>
    <comment_count>15</comment_count>
      <attachid>72484</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-31 20:35:10 -0700</bug_when>
    <thetext>Created attachment 72484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302556</commentid>
    <comment_count>16</comment_count>
      <attachid>72484</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-31 21:01:51 -0700</bug_when>
    <thetext>Comment on attachment 72484
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302557</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-31 21:03:49 -0700</bug_when>
    <thetext>Sorry, just in the middle of commenting, explanation for r- is incoming!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302559</commentid>
    <comment_count>18</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-31 21:17:21 -0700</bug_when>
    <thetext>I think this is the wrong fix for this problem – I think there is actually a bug here that we should be fixing, and adopting non-spec compliant behavior as a bug work-around wouldn&apos;t be the right solution.

All the code in HTMLInputElement is already written using double precision, which should be sufficient to obtain the desired results.  Looking through the code, it looks like the accuracy error is introduced by this line in HTMLInputElement::applyStep:

&gt;    newValue = base + round((newValue - base) / step) * step;

I believe this ensures that after stepping the value will snap to the nearest number that fits the formula (base + step * I, for some integer I).  But looking through the defined algorithm for stepUp() in section 4.10.7.3 of the HTML5 spec I can&apos;t find any reference to the behavior.  Unless I&apos;m missing something, this is also a bug – this should not be happening.  Assuming I&apos;m reading the spec correctly, I think the real fix for this bug is probably just to remove this line of code.

I&apos;ve not yet tested this, it is possible there is more than one place that errors are being introduced, but this is the only one I can spot.  Fundamentally 5.005 + (0.005 * 2) (which I believe is the calculation the spec requires us to perform) evaluated at double precision (which is what we&apos;re doing) produces a result that prints as desired using numberToString.  Any inaccuracies being introduced by errors in our code are bugs that should be fixed.  Once we are producing the correct value, per the spec, no changes to to-string conversion should be necessary.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302563</commentid>
    <comment_count>19</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-31 23:08:51 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt;    newValue = base + round((newValue - base) / step) * step;

Unfortunately, removing the adjustment doesn&apos;t solve this issue.

In JavaScript console, 5.005 + 0.005 * 2 prints 5.015, but 5.005 + 0.005 * 4 prints 5.0249999999999995.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302566</commentid>
    <comment_count>20</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-10-31 23:18:03 -0700</bug_when>
    <thetext>(In reply to comment #18)
Thanks for your comments, Gavin.

I agree with your comments that reducing numeric erros is the first priority. It&apos;s very important. But I believe adjustment is always required. Numeric errors occur and accumulate if using double.

I tried just removing the line (from the version without my patch). Then, numeric errors still occur. And the error piles up by and by clicking. Like :
&gt; 5.0249999999999995
&gt; ...
&gt; 5.064999999999999
&gt; ...
&gt; 5.109999999999998
&gt; ...
&gt; 5.149999999999997
&gt; ...

I guess this snapping to integral multiples comes from 4.10.7.2.10 `The step attribute&apos; (not 4.10.7.3) below. (Actually I have no idea on the true reason...it&apos;s not by me.) It mentions about stepMismatch(), not stepUp(). But the result of stepUp() should be false for stepMismatch().
&gt; Constraint validation: When the element ... (snip) ... number, and that number subtracted from the step base is not an integral multiple of the allowed value step, the element is suffering from a step mismatch.

Currently, a similar adjustment is done at NumberInputType::stepMismatch() to fix the bug 48220. This change replaced using fmod() with adjusting to integral multiples.
&gt; https://bugs.webkit.org/show_bug.cgi?id=48220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302569</commentid>
    <comment_count>21</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-31 23:27:47 -0700</bug_when>
    <thetext>I think HTML5 specification doesn&apos;t assume internal representation of numbers is IEEE 754.  So the specification don&apos;t mention such rounding errors.

The ideal solution might be BCD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302574</commentid>
    <comment_count>22</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-01 00:04:21 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; I think HTML5 specification doesn&apos;t assume internal representation of numbers is IEEE 754.  So the specification don&apos;t mention such rounding errors.
&gt; 
&gt; The ideal solution might be BCD.

Ah, no.  `2.5.4.3 Real numbers&apos; has a rounding step.  So we should not use BCD.
The specification should take care of rounding erros...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302589</commentid>
    <comment_count>23</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-01 01:16:43 -0700</bug_when>
    <thetext>Hi Dai,

Okay, so assuming that we&apos;re going to continue to store the value as double-precision, and that as such errors may accumulate, I buy that we don&apos;t want to present these errors to the user, so I agree that we need to round the values converted to strings.

Couple more thoughts though:

(1) I think these comments in the patch are slightly misleading:

 63     // It&apos;s because printing
 64     // as double-precision floating point numbers (by JavaScript&apos;s ToString())
 65     // cannot work due to numeric errors. (JavaScript uses double-precision,
 66     // though HTML5 uses single-precision.)

 72     // Round the result with 9 significant digits.
 73     // 9 because of the significant digits of IEEE 754 single-precision numbers.

I don&apos;t think this is completely accurate.  I don&apos;t believe HTML5 can be said to use single-precision (it does spec single-precision range for values parsed, but the requirement to use JS ToString would seem to implicitly favor double-precision for any operations, to avoid a precision mismatch).  Looking at the code, I&apos;m only seeing WebCore using double precision values here – so I&apos;m not sure this issue can really be said to be related to single-precision.  Given this, I think 9 is really just an arbitrary limit, which is not ideal.

(2) There seems to be a second problem, in that the internal value of the input element won&apos;t accurately match its string representation.  I can imagine this exposing itself in two ways.  Firstly, since rounding errors are retained in the internal value, it seems they could accumulate – if a script triggered stepUp/stepDown enough, it would seem possible that the rounding errors in value could accumulate to the point of overflowing into the 9 s.f. range.  Secondly, if there is any method allowing direct access to the internal value (or if any such interface is introduced), then the value accessed as a string would not match the value accessed as a number and then converted to string (e.g. in script code).  The problem still seems to lie in the fact that the applyStep() method is generating a value containing rounding errors (and as such is possibly failing to generate a new value that satisfies its constraints).  As such, I think the right fix is still to change applyStep(), such that this produces a suitable result.  Rounding at this stage will both prevent errors from propagating, and ensure that if the value is read directly as a double through any other means its string representation will still match the string value of the input element.

Let me suggest a possible alternate solution.  Presumably the number of decimal places we want the value rounded to is equal to the max of the number of decimal places in the base and step values.  For example, with a base of 0.1 and a step of 0.01, we never want more than 2 DP of precision to be retained.  We can easily enough calculate the number of DP of precision required to represent the base/step values based on their string length, and index(&apos;.&apos;).  You could then truncate then newValue in applyStep() by multiplying by 10^DP, rounding, and then dividing by 10^DP.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302603</commentid>
    <comment_count>24</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-01 05:25:47 -0700</bug_when>
    <thetext>(In reply to comment #23)
Hi Gavin,

Ok, I agree with your final suggestion. Rounding in applyStep() is ideally the best and your rounding method looks great.

But I think it requires deep modifications in the class WTFString and other fundamental classes. (E.g. adding another overloaded WTFString::toDouble(bool *, int decimalPlaces), the same for some StringImpls, parseToDoubleForNumberType, InputType::parseToDouble, *InputType::parseToDouble, and so on...)

Is it acceptable? I&apos;d like to hear some opinions from others. It was the reason that I was hesitating acculate rounding in applyStep(). It essentially requires information of the given string.


Memo:

I thought maximum/minimum limitations for confirmation, but no problem.
For single-precision numbers, DP is at most 38. The maximum number in single precision is 10^38. 10^(38*2) is ultimately required temporally. Double-precision can contain at most 10^308. (* But, of course, rounding errors are large near the boundaries.)

But we have to limit DP in parsing unreasonably long numbers given as a string. (E.g. &lt;input step=&quot;0.0000...(snip)...01&quot;&gt;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302648</commentid>
    <comment_count>25</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-01 07:08:01 -0700</bug_when>
    <thetext>(In reply to comment #24)
Ah, I found it can be done without deep modifications. I&apos;ll do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302854</commentid>
    <comment_count>26</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-01 12:49:48 -0700</bug_when>
    <thetext>One more quick thought, the method for rounding I described might cause some issues for very large/small values.

- The decimal-places check I described would not work for values with an exponential string representation – I&apos;d suggest checking base/step for index(&apos;e&apos;), and if it is found in either then don&apos;t perform the additional truncation.

- Also, for large values of newValue, the truncation may result in the value overflowing to infinity, so I&apos;d suggest only rounding where (newValue &lt; 10^21).  (This limit is the matches the cut-off where ToString conversion switches to exponential, and since values above this limit never have any decimal places in their representation we have nothing to truncate here anyway).

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303312</commentid>
    <comment_count>27</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-02 04:50:04 -0700</bug_when>
    <thetext>(In reply to comment #26)
Hi,

For the first one, I think we have no special reason to give up for small values with exponential expression like &quot;1.02E3&quot; or &quot;3.3013E-5&quot;. I tried handling values with exponential expressions in the Patch, but I will discard it if it results worse than nothing.

For the second one, I agree with your suggestion. Another reason is that digits around zero are not significant when newValue &gt; 10^21. Because 2^53 &lt; 10^21. (Actually 2^53 &lt; 10^17 &lt; 10^23.)

Then, may I ask your opinion on the upper limit of DP? My thought :

* Naturally, it must be smaller than 21 because of the same (&quot;another&quot;) reason above. Multiplying by 10^21 occurs unnecessary rounding error.
* Actually, I guess at most 16 is better for the same reason. 2^53 &lt; 10^17. (I used 16 in the Patch. Multiplying 10^16 for numbers with DP &gt; 16.)
* But it makes &quot;step=0.000000000000000001&quot; incorrect though it is a valid number &gt; FLT_MIN.
* Doing no truncation for any number with DP &gt; 16 (like 0.123456789012345678) is another option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303318</commentid>
    <comment_count>28</comment_count>
      <attachid>72653</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-02 05:11:02 -0700</bug_when>
    <thetext>Created attachment 72653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303922</commentid>
    <comment_count>29</comment_count>
      <attachid>72653</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-03 01:18:12 -0700</bug_when>
    <thetext>Comment on attachment 72653
Patch

Hi Dai,

Sorry for taking the day to get back to you, but took while to get my head around the fp math (particularly convince myself that allowing rounding all the way up to the 16 DP limit was okay &amp; wouldn&apos;t be introducing significant inaccuracies at that point).  But all looks like it should work fine to me.

I think this patch looks awesome – I think this will be a really great resolution to the bug.
Couple of really trivial issues with the code.

&gt; WebCore/html/HTMLInputElement.cpp:320
&gt; +    if (newValue - m_inputType-&gt;minimum() &lt; -acceptableError) {

You&apos;ve changed the logic here to allow a margin of error on this check.  I see why that makes sense, but it seems this could lead to the internal value being lower than the permitted minimum (albeit by a very small amount).  We could maybe catch this with a second check? - leave the error check as is with the tolerance, but below it follow up with a quick:...

+  if (newValue &lt; m_inputType-&gt;minimum())
+      newValue = m_inputType-&gt;minimum();

... to make sure the internal value is never below the minimum, by snapping back up to the minimum if it was close but below.
What do you think, worth doing anything to fix this case up?
Also, I guess the same is true for the maximum check, that could go slightly over, may need the value nudging down to ensure it&apos;s in range.

&gt; WebCore/html/HTMLInputElement.cpp:329
&gt; +    baseDecimalPlaces = min(baseDecimalPlaces, (unsigned) 16);
&gt; +    if (newValue &lt; pow((double) 10, (double) 21)) {
&gt; +        double scale = pow((double) 10, (double) max(stepDecimalPlaces, baseDecimalPlaces));

WebKit coding guidelines require c++ casts – personally I prefer C style casts for numeric code, but this should be sticking to the rules.
Also, in this case, we could probably ditch most of these casts anyway – we normally write (double)10 as 10.0 etc, and (unsigned)16 can just be 16u.
These casts should really be fixed, so r- I&apos;m afraid.


One last thought looking at this code, just wondering if this is another bug in applyStep (this would be a bug in the existing code too, not an issue specific to your patch).

We&apos;re doing the minimum/maximum bounds checks before we adjust to ensure we&apos;re at an integer multiple of steps.  Could this be an error?
I&apos;m thinking, could we end up in a situation something like:
  base = 0;
  value = 8.7;
  step = 1;
  maximum = 9.9
(I assume this is already in an invalid state, since value is not equal to base + step * INTEGER, but I&apos;m also assuming it is possible to get into such states, since otherwise I don&apos;t think we&apos;d need the code to snap back to a multiple of steps).

If we called stepUp from this state we&apos;d increment value, giving a new value of 9.7.  This would pass the maximum bounds check, so no error would be generated.  We&apos;d then adjust to snap to an integer multiple of steps, and round off new value to 10, above the maximum, and not catch this.

Think there&apos;s any danger this could be a real error? – I&apos;m thinking maybe it would be safer to sink the min/max checks to below the code to snap to multiples on step, to prevent any risk of this.
What do you think?

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304386</commentid>
    <comment_count>30</comment_count>
      <attachid>72653</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-03 17:59:48 -0700</bug_when>
    <thetext>Comment on attachment 72653
Patch

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

&gt; WebCore/html/InputType.cpp:240
&gt; +double InputType::stepBaseWithDecimalPlaces(unsigned* decimalPlaces) const

If you assume decimalPlaces must be non-0,
 - add ASSERT(decimalPlaces) and document it in the header, or
 - use unsigned&amp;.

&gt; WebCore/html/InputType.cpp:243
&gt; +    stepBase();

&quot;retrurn stepBase()&quot; ?

&gt; WebCore/html/InputType.cpp:284
&gt; +    *decimalPlaces = 0;

ASSERT or unsigned&amp;.

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:101
&gt; +    *decimalPlaces = 0;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304482</commentid>
    <comment_count>31</comment_count>
      <attachid>72653</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-03 23:02:18 -0700</bug_when>
    <thetext>Comment on attachment 72653
Patch

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

Hi Gavin and Kent-san,

Thank you for the feedback. No problem, yesterday was a national holiday in Japan.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:320
&gt;&gt; +    if (newValue - m_inputType-&gt;minimum() &lt; -acceptableError) {
&gt; 
&gt; You&apos;ve changed the logic here to allow a margin of error on this check.  I see why that makes sense, but it seems this could lead to the internal value being lower than the permitted minimum (albeit by a very small amount).  We could maybe catch this with a second check? - leave the error check as is with the tolerance, but below it follow up with a quick:...
&gt; 
&gt; +  if (newValue &lt; m_inputType-&gt;minimum())
&gt; +      newValue = m_inputType-&gt;minimum();
&gt; 
&gt; ... to make sure the internal value is never below the minimum, by snapping back up to the minimum if it was close but below.
&gt; What do you think, worth doing anything to fix this case up?
&gt; Also, I guess the same is true for the maximum check, that could go slightly over, may need the value nudging down to ensure it&apos;s in range.

These second checks are nice! I&apos;ve added them. I was out of touch with the case.

&gt;&gt; WebCore/html/HTMLInputElement.cpp:329
&gt;&gt; +        newValue = round((base + round((newValue - base) / step) * step) * scale) / scale;
&gt; 
&gt; WebKit coding guidelines require c++ casts – personally I prefer C style casts for numeric code, but this should be sticking to the rules.
&gt; Also, in this case, we could probably ditch most of these casts anyway – we normally write (double)10 as 10.0 etc, and (unsigned)16 can just be 16u.
&gt; These casts should really be fixed, so r- I&apos;m afraid.
&gt; 
&gt; 
&gt; One last thought looking at this code, just wondering if this is another bug in applyStep (this would be a bug in the existing code too, not an issue specific to your patch).
&gt; 
&gt; We&apos;re doing the minimum/maximum bounds checks before we adjust to ensure we&apos;re at an integer multiple of steps.  Could this be an error?
&gt; I&apos;m thinking, could we end up in a situation something like:
&gt;   base = 0;
&gt;   value = 8.7;
&gt;   step = 1;
&gt;   maximum = 9.9
&gt; (I assume this is already in an invalid state, since value is not equal to base + step * INTEGER, but I&apos;m also assuming it is possible to get into such states, since otherwise I don&apos;t think we&apos;d need the code to snap back to a multiple of steps).
&gt; 
&gt; If we called stepUp from this state we&apos;d increment value, giving a new value of 9.7.  This would pass the maximum bounds check, so no error would be generated.  We&apos;d then adjust to snap to an integer multiple of steps, and round off new value to 10, above the maximum, and not catch this.
&gt; 
&gt; Think there&apos;s any danger this could be a real error? – I&apos;m thinking maybe it would be safer to sink the min/max checks to below the code to snap to multiples on step, to prevent any risk of this.
&gt; What do you think?
&gt; 
&gt; cheers,
&gt; G.

I see. It&apos;s an issue to be considered, I think. I&apos;ve created another bug since it&apos;s a different issue from the bug 48308.
https://bugs.webkit.org/show_bug.cgi?id=48976

For short, I guess it&apos;s not an issue of min/max checks, but an issue on general steps from values in step-mismatching state.
As written in the bug 48976, for the case &lt;input type=&quot;number&quot; step=&quot;1&quot; min=&quot;0&quot; max=&quot;10.9&quot; value=&quot;8.7&quot; /&gt; then stepUp(), I think the result should be 9 rather than 10. May I ask your opinion?

&gt;&gt; WebCore/html/InputType.cpp:240
&gt;&gt; +double InputType::stepBaseWithDecimalPlaces(unsigned* decimalPlaces) const
&gt; 
&gt; If you assume decimalPlaces must be non-0,
&gt;  - add ASSERT(decimalPlaces) and document it in the header, or
&gt;  - use unsigned&amp;.

I&apos;ve added a 0-check, and do nothing for 0. Because:
- Other functions for decimal places (by me) accept 0 and do nothing.
- Other existing functions use pointers for outputs by arguments.

&gt;&gt; WebCore/html/InputType.cpp:243
&gt;&gt; +    stepBase();
&gt; 
&gt; &quot;retrurn stepBase()&quot; ?

Exactly. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304483</commentid>
    <comment_count>32</comment_count>
      <attachid>72906</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-03 23:04:16 -0700</bug_when>
    <thetext>Created attachment 72906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304486</commentid>
    <comment_count>33</comment_count>
      <attachid>72906</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-03 23:19:10 -0700</bug_when>
    <thetext>Comment on attachment 72906
Patch

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

&gt; WebCore/html/InputType.cpp:244
&gt; +// decimalPlaces must be non-0..
&gt; +double InputType::stepBaseWithDecimalPlaces(unsigned* decimalPlaces) const
&gt; +{
&gt; +    if (decimalPlaces)
&gt; +        *decimalPlaces = 0;

The comment is confusing.  The code accepts decimalPlace==0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304487</commentid>
    <comment_count>34</comment_count>
      <attachid>72908</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-03 23:24:58 -0700</bug_when>
    <thetext>Created attachment 72908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304488</commentid>
    <comment_count>35</comment_count>
      <attachid>72906</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-03 23:25:35 -0700</bug_when>
    <thetext>Comment on attachment 72906
Patch

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

&gt;&gt; WebCore/html/InputType.cpp:244
&gt;&gt; +        *decimalPlaces = 0;
&gt; 
&gt; The comment is confusing.  The code accepts decimalPlace==0.

Thanks. I failed in removing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306449</commentid>
    <comment_count>36</comment_count>
      <attachid>72908</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-08 16:27:14 -0800</bug_when>
    <thetext>Comment on attachment 72908
Patch

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

&gt; WebCore/ChangeLog:10
&gt; +        * html/HTMLInputElement.cpp:

Please add what you changed for each of files/functions as possible.

&gt; WebCore/html/parser/HTMLParserIdioms.cpp:130
&gt; +        switch (digit = string[cursor]) {

Can&apos;t we use String::toInt()?  If not, please add the reason as a code comment or ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306556</commentid>
    <comment_count>37</comment_count>
      <attachid>73333</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-08 18:53:04 -0800</bug_when>
    <thetext>Created attachment 73333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306566</commentid>
    <comment_count>38</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-08 19:01:25 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; Created an attachment (id=73333) [details]
&gt; Patch

Looks ok.  I&apos;ll set r+ tomorrow if Gavin has no comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306573</commentid>
    <comment_count>39</comment_count>
      <attachid>73333</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-11-08 19:11:24 -0800</bug_when>
    <thetext>Comment on attachment 73333
Patch

The patch looks great to me, setting r+ based on Kent&apos;s last comment.  

&gt; I see. It&apos;s an issue to be considered, I think. I&apos;ve created another bug since it&apos;s a different issue from the bug 48308.
&gt; https://bugs.webkit.org/show_bug.cgi?id=48976
&gt; 
&gt; For short, I guess it&apos;s not an issue of min/max checks, but an issue on general steps from values in step-mismatching state.
&gt; As written in the bug 48976, for the case &lt;input type=&quot;number&quot; step=&quot;1&quot; min=&quot;0&quot; max=&quot;10.9&quot; value=&quot;8.7&quot; /&gt; then stepUp(), I think the result should be 9 rather than 10. May I ask your opinion?

Dealing with the step mismatch as a separate bug seems sensible, re the change in behavior, I&apos;m not sure I have much of an opinion on this – it&apos;s quite a way from my area of expertise – but your proposed change certainly sounds right to me, seems intuitively like better behavior for stepUp to always take you to the next step, never the next-but-one.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306609</commentid>
    <comment_count>40</comment_count>
      <attachid>73333</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-08 21:47:28 -0800</bug_when>
    <thetext>Comment on attachment 73333
Patch

Rejecting patch 73333 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, 73333]&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;./WebKitTools/Scripts/webkit-patch&quot;, line 70, in &lt;module&gt;
    main()
  File &quot;./WebKitTools/Scripts/webkit-patch&quot;, line 63, in main
    from webkitpy.tool.main import WebKitPatch
  File &quot;/Users/abarth/git/webkit-queue/WebKitTools/Scripts/webkitpy/tool/main.py&quot;, line 42, in &lt;module&gt;
    from webkitpy.common.net.rietveld import Rietveld
ImportError: No module named rietveld

Full output: http://queues.webkit.org/results/5473057</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306617</commentid>
    <comment_count>41</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-08 22:20:51 -0800</bug_when>
    <thetext>I tried the 7th patch locally on Snow Leopard, and got a failure:

--- /tmp/layout-test-results/fast/forms/input-stepup-stepdown-expected.txt	2010-11-09 15:18:37.000000000 +0900
+++ /tmp/layout-test-results/fast/forms/input-stepup-stepdown-actual.txt	2010-11-09 15:18:37.000000000 +0900
@@ -167,7 +167,7 @@
 PASS for (var i = 0; i &lt; 255; i++) { input.stepDown(); }; input.value is &quot;0&quot;
 Rounding
 PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 2) is &quot;5.015&quot;
-PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 11) is &quot;5.06&quot;
+FAIL input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 11) should be 5.06. Was 5.0600000000000005.
 PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 12) is &quot;5.065&quot;
 
 Range type

Mikurube-san, would you check it please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306621</commentid>
    <comment_count>42</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-08 22:41:32 -0800</bug_when>
    <thetext>(In reply to comment #41)
Hmm, it passed the test in my environment on Snow Leopard as follows:
Rounding
PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 2) is &quot;5.015&quot;
PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 11) is &quot;5.06&quot;
PASS input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 12) is &quot;5.065&quot;


And #41 looks like a merge failure. I&apos;ll submit another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306641</commentid>
    <comment_count>43</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-09 00:26:07 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt;+FAIL input.min=&quot;4&quot;; stepUp(&quot;5.005&quot;, &quot;0.005&quot;, &quot;&quot;, 11) should be 5.06. Was 5.0600000000000005.
It occurred in the rebased version. I&apos;ll check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306665</commentid>
    <comment_count>44</comment_count>
      <attachid>73347</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-09 01:45:32 -0800</bug_when>
    <thetext>Created attachment 73347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306666</commentid>
    <comment_count>45</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-09 01:46:54 -0800</bug_when>
    <thetext>(In reply to comment #43)
It was an error in case of min=null. Fixed and added tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306667</commentid>
    <comment_count>46</comment_count>
      <attachid>73347</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-11-09 01:49:54 -0800</bug_when>
    <thetext>Comment on attachment 73347
Patch

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

&gt; WebCore/html/HTMLInputElement.cpp:328
&gt; +    fprintf(stderr, &quot;b = %u\n&quot;, baseDecimalPlaces);

please remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306669</commentid>
    <comment_count>47</comment_count>
      <attachid>73348</attachid>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-09 01:57:03 -0800</bug_when>
    <thetext>Created attachment 73348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306670</commentid>
    <comment_count>48</comment_count>
    <who name="Dai Mikurube">dmikurube</who>
    <bug_when>2010-11-09 01:57:55 -0800</bug_when>
    <thetext>(In reply to comment #46)
Thank you. Sorry for my careless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306701</commentid>
    <comment_count>49</comment_count>
      <attachid>73348</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-09 04:27:03 -0800</bug_when>
    <thetext>Comment on attachment 73348
Patch

Clearing flags on attachment: 73348

Committed r71622: &lt;http://trac.webkit.org/changeset/71622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306702</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-09 04:27:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72189</attachid>
            <date>2010-10-28 07:19:03 -0700</date>
            <delta_ts>2010-10-31 08:19:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101028231901.patch</filename>
            <type>text/plain</type>
            <size>13570</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1OTVjMGQzYTdkMDJlNjg0MDE2ZDJmYTE2MjUyODNjMDMyODlkNTZmLi5k
OGZlOGEwNDU4YjM2OWFkZmQwZWQ5NDIyYTAwNDQxMjBiM2JjNGIxIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMTAtMjggIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
byBwcmVjaXNlIHNlcmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3Ry
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODMw
OAorCisgICAgICAgIEFkZGVkIG5ldyBudW1iZXJUb1N0cmluZyB3aXRoIHNpZ25pZmljYW50IGZp
Z3VyZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6CisgICAgICAgICogd3RmL0Rl
Y2ltYWxOdW1iZXIuaDoKKyAgICAgICAgKFdURjo6RGVjaW1hbE51bWJlcjo6RGVjaW1hbE51bWJl
cik6CisgICAgICAgICogd3RmL2R0b2EuY3BwOgorICAgICAgICAoV1RGOjpkdG9hKToKKyAgICAg
ICAgKiB3dGYvZHRvYS5oOgorCiAyMDEwLTEwLTI2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW50ZXJwcmV0ZXIgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCmluZGV4IDZlZjhlYWQ5YjNjNjkyOTI5NGY3YjBmY2VmZTg5NGQxMDkxNzRiMzIu
LjkzYmI2ZDhiYWYzNjUzODA2MTNiNzYwNGRjMDBlZmJkMWNhOGM1OWQgMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAKQEAgLTM4OSw2ICszODksNyBAQCBfX1pOM1dURjEzdHJ5RmFzdENhbGxv
Y0VtbQogX19aTjNXVEYxM3RyeUZhc3RNYWxsb2NFbQogX19aTjNXVEYxNGZhc3RNYWxsb2NTaXpl
RVBLdgogX19aTjNXVEYxNG51bWJlclRvU3RyaW5nRWRQdAorX19aTjNXVEYxNG51bWJlclRvU3Ry
aW5nRWRQdGoKIF9fWk4zV1RGMTR0cnlGYXN0UmVhbGxvY0VQdm0KIF9fWk4zV1RGMTVUaHJlYWRD
b25kaXRpb240d2FpdEVSTlNfNU11dGV4RQogX19aTjNXVEYxNVRocmVhZENvbmRpdGlvbjZzaWdu
YWxFdgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaCBiL0ph
dmFTY3JpcHRDb3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKaW5kZXggYzQyZjAwYjUxZTBjNTMxYTIz
MDBjZWQ0ZmYxNWRlZTBlNTIyMTI4MS4uZGMyNDQ3Nzg5NjIwZTk5OTg3ZDcyOTI0ZTcwNjk0NTM2
Njk3YjczNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxOdW1iZXIuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5oCkBAIC0zNCw2ICszNCw3IEBA
CiBuYW1lc3BhY2UgV1RGIHsKIAogZW51bSBSb3VuZGluZ1NpZ25pZmljYW50RmlndXJlc1R5cGUg
eyBSb3VuZGluZ1NpZ25pZmljYW50RmlndXJlcyB9OworZW51bSBSb3VuZGluZ1NpZ25pZmljYW50
RmlndXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zVHlwZSB7IFJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1
cmVzV2l0aG91dFRyYWlsaW5nWmVyb3MgfTsKIGVudW0gUm91bmRpbmdEZWNpbWFsUGxhY2VzVHlw
ZSB7IFJvdW5kaW5nRGVjaW1hbFBsYWNlcyB9OwogCiBjbGFzcyBEZWNpbWFsTnVtYmVyIHsKQEAg
LTY2LDYgKzY3LDE4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0g
IT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKICAgICB9CiAKKyAgICBEZWNpbWFsTnVtYmVyKGRvdWJs
ZSBkLCBSb3VuZGluZ1NpZ25pZmljYW50RmlndXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zVHlwZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc25h
bihkKSAmJiAhaXNpbmYoZCkpOworICAgICAgICBkdG9hUm91bmRTRihtX3NpZ25pZmljYW5kLCBk
LCBzaWduaWZpY2FudEZpZ3VyZXMsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9wcmVjaXNpb24pOwor
CisgICAgICAgIEFTU0VSVChzaWduaWZpY2FudEZpZ3VyZXMgJiYgc2lnbmlmaWNhbnRGaWd1cmVz
IDw9IHNpemVvZihEdG9hQnVmZmVyKSk7CisKKyAgICAgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsK
KyAgICAgICAgLy8gWmVybyBzaG91bGQgYWx3YXlzIGhhdmUgZXhwb25lbnQgMC4KKyAgICAgICAg
QVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKKyAgICB9CisK
ICAgICBEZWNpbWFsTnVtYmVyKGRvdWJsZSBkLCBSb3VuZGluZ0RlY2ltYWxQbGFjZXNUeXBlLCB1
bnNpZ25lZCBkZWNpbWFsUGxhY2VzKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc25hbihkKSAm
JiAhaXNpbmYoZCkpOwpAQCAtMTAzLDYgKzExNiw3IEBAIHByaXZhdGU6CiAKIHVzaW5nIFdURjo6
RGVjaW1hbE51bWJlcjsKIHVzaW5nIFdURjo6Um91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXM7Cit1
c2luZyBXVEY6OlJvdW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVzV2l0aG91dFRyYWlsaW5nWmVyb3M7
CiB1c2luZyBXVEY6OlJvdW5kaW5nRGVjaW1hbFBsYWNlczsKIAogI2VuZGlmIC8vIERlY2ltYWxO
dW1iZXJfaApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwIGIvSmF2YVNj
cmlwdENvcmUvd3RmL2R0b2EuY3BwCmluZGV4IGM4OWMwMzY5MmZhYWZlM2FmNWE1MDIyYzY0MDMw
NWE4M2UyYWY4MzIuLmE2YjRmMzc4YmM2Y2I3ZDI4YTE3MzMzMzdmZGM1OGFlYjJlNjRhYWIgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvZHRvYS5jcHAKQEAgLTE4MDcsNiArMTgwNywxMSBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIGNvcHlBc2NpaVRvVVRGMTYoVUNoYXIqIG5leHQsIGNvbnN0IGNoYXIqIHNyYywgdW5z
aWduZQogCiB1bnNpZ25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUgZCwgTnVtYmVyVG9TdHJpbmdC
dWZmZXIgYnVmZmVyKQogeworICAgIHJldHVybiBudW1iZXJUb1N0cmluZyhkLCBidWZmZXIsIDAp
OworfQorCit1bnNpZ25lZCBudW1iZXJUb1N0cmluZyhkb3VibGUgZCwgTnVtYmVyVG9TdHJpbmdC
dWZmZXIgYnVmZmVyLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMpCit7CiAgICAgLy8gSGFu
ZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKGlzbmFuKGQpIHx8IGlzaW5mKGQpKSB7CiAg
ICAgICAgIGlmIChpc25hbihkKSkgewpAQCAtMTgyMiw2ICsxODI3LDEyIEBAIHVuc2lnbmVkIG51
bWJlclRvU3RyaW5nKGRvdWJsZSBkLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXIpCiAgICAg
fQogCiAgICAgLy8gQ29udmVydCB0byBkZWNpbWFsIHdpdGggcm91bmRpbmcuCisgICAgaWYgKHNp
Z25pZmljYW50RmlndXJlcyA+IDApIHsKKyAgICAgICAgRGVjaW1hbE51bWJlciBudW1iZXIoZCwg
Um91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNXaXRob3V0VHJhaWxpbmdaZXJvcywgc2lnbmlmaWNh
bnRGaWd1cmVzKTsKKyAgICAgICAgcmV0dXJuIG51bWJlci5leHBvbmVudCgpID49IC02ICYmIG51
bWJlci5leHBvbmVudCgpIDwgMjEKKyAgICAgICAgICAgID8gbnVtYmVyLnRvU3RyaW5nRGVjaW1h
bChidWZmZXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKQorICAgICAgICAgICAgOiBudW1i
ZXIudG9TdHJpbmdFeHBvbmVudGlhbChidWZmZXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3Ro
KTsKKyAgICB9CiAgICAgRGVjaW1hbE51bWJlciBudW1iZXIoZCk7CiAgICAgcmV0dXJuIG51bWJl
ci5leHBvbmVudCgpID49IC02ICYmIG51bWJlci5leHBvbmVudCgpIDwgMjEKICAgICAgICAgPyBu
dW1iZXIudG9TdHJpbmdEZWNpbWFsKGJ1ZmZlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgp
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oIGIvSmF2YVNjcmlwdENvcmUv
d3RmL2R0b2EuaAppbmRleCAzOTI0YTFjYzQwNWRiMjkzYjAxZjZkNGJkYWU2NTc1OTUyNTgxNzJj
Li41NjVhMzU0YjAwZTRmN2JhNjQ1OGIwYzViYWM0OWU1NzU4YWQzNDZkIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgK
QEAgLTQyLDYgKzQyLDcgQEAgdm9pZCBkdG9hUm91bmREUChEdG9hQnVmZmVyIHJlc3VsdCwgZG91
YmxlIGRkLCBpbnQgbmRpZ2l0cywgYm9vbCYgc2lnbiwgaW50JiBleHAKIGNvbnN0IHVuc2lnbmVk
IE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoID0gOTY7CiB0eXBlZGVmIFVDaGFyIE51bWJlclRv
U3RyaW5nQnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoXTsKIHVuc2lnbmVkIG51bWJl
clRvU3RyaW5nKGRvdWJsZSwgTnVtYmVyVG9TdHJpbmdCdWZmZXIpOwordW5zaWduZWQgbnVtYmVy
VG9TdHJpbmcoZG91YmxlLCBOdW1iZXJUb1N0cmluZ0J1ZmZlciwgdW5zaWduZWQpOwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0ODY2ZTUyYzc2YTgzYWMyZTUyY2I0ZmIwZTUyYTg1
MjNhZjg0MTMuLmVhMWI0N2I0NTBjOTU4Y2Q0ZjhmODQ5ODdhYjQ3YTY3Nzk5N2E3ZTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMC0yOCAgRGFpIE1pa3VydWJlICA8ZG1pa3VydWJlQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVG9vIHByZWNpc2Ugc2VyaWFsaXphdGlvbiBmcm9tIGZsb2F0aW5nIHBvaW50IG51bWJlciB0
byBzdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ4MzA4CisKKyAgICAgICAgTW9kaWZpZWQgdGVzdHMgZm9yIGh1Z2UgbnVtYmVycyB3aXRoIDkg
c2lnbmlmaWNhbnQgZGlnaXRzLgorICAgICAgICBBZGRlZCBhIHRlc3QgZm9yIDxpbnB1dCB0eXBl
PSJudW1iZXIiIHN0ZXA9IjAuMDA1IiBtaW49IjQiIHZhbHVlPSI1LjAwNSIgLz4KKworICAgICAg
ICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24u
anM6CisgICAgICAgICogZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtdmFsdWVhc251bWJl
ci1udW1iZXIuanM6CisKIDIwMTAtMTAtMjcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAuLmJmMTdhNzg3MDdk
ODhmY2Q3MjYxOGVhNDJkYWI0NWIwYTM5MDIzYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50eHQKQEAgLTE2
NSw2ICsxNjUsOCBAQCBQQVNTIHN0ZXBVcCgiMSIsICIwLjEiLCAiIiwgMTApIGlzICIyIgogUEFT
UyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5z
dGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQudmFs
dWUgaXMgIjMiCiBQQVNTIGlucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwgIjAuMDAzOTIxNTY4
NjI3NDUwOTgwIiwgIjEiLCAyNTUpIGlzICIxIgogUEFTUyBmb3IgKHZhciBpID0gMDsgaSA8IDI1
NTsgaSsrKSB7IGlucHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlIGlzICIwIgorUm91bmRp
bmcKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAyKSBp
cyAiNS4wMTUiCiAKIFJhbmdlIHR5cGUKIGZ1bmN0aW9uIGFyZ3VtZW50cyBhcmUgKG1pbiwgbWF4
LCBzdGVwLCB2YWx1ZSwgW3N0ZXBDb3VudF0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDcxMTQ3ZmRlMzkzZGQ1MGNkMmQ3YTkxYTU2ZTE2OGMzYzAwMDFkOTcuLjU5OGYzNjNkNTMy
YzRhMDE1YzEyZTJmNGQ2YWM1ZmZhNzI2NTk3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQu
dHh0CkBAIC0xMSw3ICsxMSw3IEBAIFBBU1MgdmFsdWVBc051bWJlckZvcigiLTEuMiIpIGlzIC0x
LjIKIFBBU1MgdmFsdWVBc051bWJlckZvcigiMS4yRTEwIikgaXMgMS4yRTEwCiBQQVNTIHZhbHVl
QXNOdW1iZXJGb3IoIjEuMkUtMTAiKSBpcyAxLjJFLTEwCiBQQVNTIHZhbHVlQXNOdW1iZXJGb3Io
IjEuMkUrMTAiKSBpcyAxLjJFMTAKLVBBU1MgdmFsdWVBc051bWJlckZvcigiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5IikgaXMgMS4yMzQ1Njc4OTAxMjM0NTY4RSszOAor
UEFTUyB2YWx1ZUFzTnVtYmVyRm9yKCIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkiKSBpcyAxLjIzNDU2Nzg5MDEyMzQ1Njc4RSszOAogUEFTUyB2YWx1ZUFzTnVtYmVyRm9y
KCIwLjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikg
aXMgMC4xMjM0NTY3ODkwMTIzNDU2NzgKIHZhbHVlQXNOdW1iZXIgZm9yIGludmFsaWQgc3RyaW5n
IHZhbHVlczoKIFBBU1MgaXNOYU4odmFsdWVBc051bWJlckZvcigiIikpIGlzIHRydWUKQEAgLTM4
LDcgKzM4LDcgQEAgUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoLTApIGlzICIwIgog
UEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoLTEuMikgaXMgIi0xLjIiCiBQQVNTIHNl
dFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjJlMTApIGlzICIxMjAwMDAwMDAwMCIKIFBBU1Mg
c2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMmUtMTApIGlzICIxLjJlLTEwIgotUEFTUyBz
ZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCkgaXMgIjEu
MjM0NTY3ODkwMTIzNDU2N2UrMzgiCitQQVNTIHNldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgx
LjIzNDU2Nzg5MDEyMzQ1NjdlKzM4KSBpcyAiMS4yMzQ1Njc4OWUrMzgiCiBQQVNTIHNldFZhbHVl
QXNOdW1iZXJBbmRHZXRWYWx1ZSgiLTMuNDAyODIzNDZlKzM4IikgaXMgIi0zLjQwMjgyMzQ2ZSsz
OCIKIFBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKCItMy40MDI4MjM0OGUrMzgiKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IElOVkFMSURfU1RBVEVfRVJSOiBET00gRXhjZXB0aW9uIDEx
LgogUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIjMuNDAyODIzNDZlKzM4IikgaXMg
IjMuNDAyODIzNDZlKzM4IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3Jp
cHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpzCmluZGV4IGNkNGEwN2MyZDA1
MGE3ZjMwODc5NWFiMjcwZjZlOGVmMjIxYmRjZDcuLmRhNzhkNTViZTFhMjYyZDg1OGUwNmM1NDJi
NDY5ODg4MjIyYTdhYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0
LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24uanMKQEAgLTIyMSw2ICsyMjEs
OCBAQCBzaG91bGRCZSgnc3RlcFVwKCIxIiwgIjAuMSIsICIiLCAxMCknLCAnIjIiJyk7CiBzaG91
bGRCZSgnaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5w
dXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVw
KCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0
LnZhbHVlJywgJyIzIicpOwogc2hvdWxkQmUoJ2lucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwg
IjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjEiLCAyNTUpJywgJyIxIicpOwogc2hvdWxkQmUoJ2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjU1OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQu
dmFsdWUnLCAnIjAiJyk7CitkZWJ1ZygnUm91bmRpbmcnKTsKK3Nob3VsZEJlKCdpbnB1dC5taW49
IjQiOyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDIpJywgJyI1LjAxNSInKTsKIAogZGVi
dWcoJycpOwogZGVidWcoJ1JhbmdlIHR5cGUnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtdmFsdWVhc251bWJlci1udW1i
ZXIuanMKaW5kZXggMjc5NzU5MWYyZGQyOThlMDdlNGM3NjFlMjc2Nzc3YmNjZGU1MDIyYS4uZGVk
NDUzNTgyNjY2ZmE1NjU4MmE2MmQ3MjUxZThkMzM3NDE0ZWRjOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXIu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtdmFsdWVh
c251bWJlci1udW1iZXIuanMKQEAgLTIxLDcgKzIxLDcgQEAgc2hvdWxkQmUoJ3ZhbHVlQXNOdW1i
ZXJGb3IoIi0xLjIiKScsICctMS4yJyk7CiBzaG91bGRCZSgndmFsdWVBc051bWJlckZvcigiMS4y
RTEwIiknLCAnMS4yRTEwJyk7CiBzaG91bGRCZSgndmFsdWVBc051bWJlckZvcigiMS4yRS0xMCIp
JywgJzEuMkUtMTAnKTsKIHNob3VsZEJlKCd2YWx1ZUFzTnVtYmVyRm9yKCIxLjJFKzEwIiknLCAn
MS4yRTEwJyk7Ci1zaG91bGRCZSgndmFsdWVBc051bWJlckZvcigiMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5IiknLCAnMS4yMzQ1Njc4OTAxMjM0NTY4RSszOCcpOworc2hv
dWxkQmUoJ3ZhbHVlQXNOdW1iZXJGb3IoIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OSIpJywgJzEuMjM0NTY3ODkwMTIzNDU2NzhFKzM4Jyk7CiBzaG91bGRCZSgndmFsdWVB
c051bWJlckZvcigiMC4xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MCIpJywgJzAuMTIzNDU2Nzg5MDEyMzQ1Njc4Jyk7CiAKIGRlYnVnKCd2YWx1ZUFzTnVt
YmVyIGZvciBpbnZhbGlkIHN0cmluZyB2YWx1ZXM6Jyk7CkBAIC01MSw3ICs1MSw3IEBAIHNob3Vs
ZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoLTApJywgJyIwIicpOwogc2hvdWxkQmUo
J3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgtMS4yKScsICciLTEuMiInKTsKIHNob3VsZEJl
KCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yZTEwKScsICciMTIwMDAwMDAwMDAiJyk7
CiBzaG91bGRCZSgnc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMmUtMTApJywgJyIxLjJl
LTEwIicpOwotc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjIzNDU2Nzg5
MDEyMzQ1NjdlKzM4KScsICciMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCInKTsKK3Nob3VsZEJlKCdz
ZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCknLCAnIjEu
MjM0NTY3ODllKzM4IicpOwogc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgi
LTMuNDAyODIzNDZlKzM4IiknLCAnIi0zLjQwMjgyMzQ2ZSszOCInKTsKIHNob3VsZFRocm93KCdz
ZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIi0zLjQwMjgyMzQ4ZSszOCIpJywgJyJFcnJvcjog
SU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEiJyk7CiBzaG91bGRCZSgnc2V0VmFs
dWVBc051bWJlckFuZEdldFZhbHVlKCIzLjQwMjgyMzQ2ZSszOCIpJywgJyIzLjQwMjgyMzQ2ZSsz
OCInKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOGM2YmY2NWM1ODRhMGFkNjA0MjUwNjAyNDdkOGUxZjRkZmUwNGRmNy4uNWYwODJkODE5
YjIyNDlmYjUzZTBlNTA3NDRmMWM0YzRhYTQzNDljYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0xMC0y
OCAgRGFpIE1pa3VydWJlICA8ZG1pa3VydWJlQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG9vIHByZWNpc2Ugc2VyaWFsaXphdGlv
biBmcm9tIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBzdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4CisKKyAgICAgICAgRml4ZWQgdGhl
IG51bWVyaWMgZXJyb3IgdGhyZXNob2xkIGluIGNvbXBhcmluZyB3aXRoIG1heC9taW4gaW4gYXBw
bHlTdGVwLgorICAgICAgICBNb2RpZmllZCB0byBwcmludCBmbG9hdGluZyBwb2ludCBudW1iZXJz
IHdpdGggOSBzaWduaWZpY2FudCBkaWdpdHMuCisKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6YXBwbHlTdGVw
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnNlcmlhbGl6ZUZvck51bWJlclR5cGUpOgorCiAyMDEwLTEwLTI3ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0
dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAyZmY4ZWM1YTg1NzJkMmQwNDMzZjdm
M2ZiZDMzNWFlMjA5ZGU0YjBkLi5lMjhmY2ZkZDUwOTZkN2Q1ZjY3NzhmZTFiN2QyMGM0YTJkMDg1
NGVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yOTksMTMgKzI5OSwxNCBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmIChuZXdWYWx1ZSA8IG1faW5wdXRUeXBlLT5taW5pbXVtKCkpIHsKKyAg
ICBkb3VibGUgYWNjZXB0YWJsZUVycm9yID0gc3RlcCAvIHBvdygyLjAsIEZMVF9NQU5UX0RJRyk7
CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKSA8IC1hY2NlcHRhYmxl
RXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpOwogICAg
IG5ld1ZhbHVlID0gYmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8gc3RlcCkgKiBzdGVw
OwotICAgIGlmIChuZXdWYWx1ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpIHsKKyAgICBpZiAo
bmV3VmFsdWUgLSBtX2lucHV0VHlwZS0+bWF4aW11bSgpID4gYWNjZXB0YWJsZUVycm9yKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAwY2U1ZTRkOTczMGMx
OTdhN2RlYmRmNjBhNWU2MWNjYWJlNmJmNjVlLi4xY2FkNjg5MzhlNTgxZDNiYjQxYzNkZjEyMzA0
NDRjYzA0NzhkNWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAK
QEAgLTYxLDcgKzYxLDEzIEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBu
dW1iZXIpCiAgICAgLy8gQWNjb3JkaW5nIHRvIEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRp
b24gb2YgdGhlIG51bWJlciBuIGFzIGEgZmxvYXRpbmcKICAgICAvLyBwb2ludCBudW1iZXIiIGlz
IGEgc3RyaW5nIHByb2R1Y2VkIGJ5IGFwcGx5aW5nIFRvU3RyaW5nKCkgdG8gbi4KICAgICBOdW1i
ZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbnVtYmVyVG9T
dHJpbmcobnVtYmVyLCBidWZmZXIpOworICAgIC8vIFJvdW5kIHRoZSByZXN1bHQgd2l0aCA5IHNp
Z25pZmljYW50IGRpZ2l0cy4KKyAgICAvLyA5IGJlY2F1c2Ugb2YgdGhlIHNpZ25pZmljYW50IGRp
Z2l0cyBvZiBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uIG51bWJlcnMuCisgICAgLy8gVGhleSBo
YXZlIDIzIGZyYWN0aW9uIGJpdHMsIHRoZW4gMl4yNCA9IDE2LDY3NywyMTYuCisgICAgLy8gKzEg
dG8gYmUgc2FmZSBpbiBjYXNlIG9mIHJlLXBhcnNpbmcgcmVxdWlyZWQuCisgICAgLy8gQW5vdGhl
ciByZWFzb24gZm9yIDkgaXMgdG8gZm9sbG93IHRoZSBleGFtcGxlIGluIEhUTUw1IDQuMTAuNy4y
LjEwLgorICAgIC8vIDxpbnB1dCBuYW1lPW9wYWNpdHkgdHlwZT1yYW5nZSBtaW49MCBtYXg9MSBz
dGVwPTAuMDAzOTIxNTY4NjM+CisgICAgdW5zaWduZWQgbGVuZ3RoID0gbnVtYmVyVG9TdHJpbmco
bnVtYmVyLCBidWZmZXIsIDkpOwogICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLCBsZW5ndGgpOwog
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72456</attachid>
            <date>2010-10-31 08:09:10 -0700</date>
            <delta_ts>2010-10-31 20:35:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101101000907.patch</filename>
            <type>text/plain</type>
            <size>15824</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMGMzZjBkYmNhMDk1MmFjMTc0NjEyOTY1N2YwNDNlY2JiOGZkYTIzLi45
MDIwMDRlMjk2Mzk5Yzk5ZjExZWIyNmQ0NzY0YzYwMDFiNTNkOWIwIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTAtMTAtMjggIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
byBwcmVjaXNlIHNlcmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3Ry
aW5nIGZvciAibnVtYmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICBBZGRlZCBuZXcgbnVtYmVy
VG9TdHJpbmcgd2l0aCBzaWduaWZpY2FudCBmaWd1cmVzLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAg
ICAgICAoV1RGOjpEZWNpbWFsTnVtYmVyOjpEZWNpbWFsTnVtYmVyKToKKwogMjAxMC0xMC0yOCAg
S3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDZlZjhlYWQ5
YjNjNjkyOTI5NGY3YjBmY2VmZTg5NGQxMDkxNzRiMzIuLjgxMzgxMzU1NThkZTA2YjQ2ZDUxNjk5
ZGUyYWM2M2ZmY2JjZTI5MzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTU1MCw2
ICs1NTAsNyBAQCBfX1pOM1dURjExZHRvYVJvdW5kRFBFUGNkaVJiUmlSagogX19aTjNXVEY0ZHRv
YUVQY2RSYlJpUmoKIF9fWk5LM1dURjEyQXRvbWljU3RyaW5nNWxvd2VyRXYKIF9fWk5LM1dURjEz
RGVjaW1hbE51bWJlcjE1dG9TdHJpbmdEZWNpbWFsRVB0agorX19aTkszV1RGMTNEZWNpbWFsTnVt
YmVyMTl0b1N0cmluZ0V4cG9uZW50aWFsRVB0agogX19aTkszV1RGMTNEZWNpbWFsTnVtYmVyMjhi
dWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsRXYKIF9fWk5LM1dURjZTdHJpbmcxMXRvSW50U3Ry
aWN0RVBiaQogX19aTkszV1RGNlN0cmluZzEydG9VSW50U3RyaWN0RVBiaQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNzc5YjBiYzU3OGUzZjk5NjFiZTVk
OGVkYzA0NzNkNWUxZjJkNWQ2OC4uYzFiZDJlNjNlZTg1MzAyMDRmZDlhN2IwMjlkM2ZhMGIyNTgw
Y2U0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0z
MjIsNiArMzIyLDcgQEAgRVhQT1JUUwogICAgID90b1ByaW1pdGl2ZUBKU1N0cmluZ0BKU0NAQEVC
RT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFByZWZlcnJlZFByaW1pdGl2ZVR5cGVAMkBA
WgogICAgID90b1N0cmljdFRoaXNPYmplY3RASlNPYmplY3RASlNDQEBVQkU/QVZKU1ZhbHVlQDJA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdEZWNpbWFsQERlY2ltYWxOdW1iZXJAV1RG
QEBRQkVJUEFfV0lAWgorICAgID90b1N0cmluZ0V4cG9uZW50aWFsQERlY2ltYWxOdW1iZXJAV1RG
QEBRQkVJUEFfV0lAWgogICAgID90b1N0cmluZ0BKU0NlbGxASlNDQEBVQkU/QVZVU3RyaW5nQDJA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdASlNPYmplY3RASlNDQEBVQkU/QVZVU3Ry
aW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdASlNTdHJpbmdASlNDQEBFQkU/
QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EZWNpbWFsTnVtYmVyLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5o
CmluZGV4IGM0MmYwMGI1MWUwYzUzMWEyMzAwY2VkNGZmMTVkZWUwZTUyMjEyODEuLmRjMjQ0Nzc4
OTYyMGU5OTk4N2Q3MjkyNGU3MDY5NDUzNjY5N2I3MzQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxO
dW1iZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGVudW0gUm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXNUeXBlIHsgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMgfTsK
K2VudW0gUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNXaXRob3V0VHJhaWxpbmdaZXJvc1R5cGUg
eyBSb3VuZGluZ1NpZ25pZmljYW50RmlndXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zIH07CiBlbnVt
IFJvdW5kaW5nRGVjaW1hbFBsYWNlc1R5cGUgeyBSb3VuZGluZ0RlY2ltYWxQbGFjZXMgfTsKIAog
Y2xhc3MgRGVjaW1hbE51bWJlciB7CkBAIC02Niw2ICs2NywxOCBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCAhbV9leHBvbmVudCk7CiAgICAgfQog
CisgICAgRGVjaW1hbE51bWJlcihkb3VibGUgZCwgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNX
aXRob3V0VHJhaWxpbmdaZXJvc1R5cGUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcykKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghaXNuYW4oZCkgJiYgIWlzaW5mKGQpKTsKKyAgICAgICAgZHRv
YVJvdW5kU0YobV9zaWduaWZpY2FuZCwgZCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBtX3NpZ24sIG1f
ZXhwb25lbnQsIG1fcHJlY2lzaW9uKTsKKworICAgICAgICBBU1NFUlQoc2lnbmlmaWNhbnRGaWd1
cmVzICYmIHNpZ25pZmljYW50RmlndXJlcyA8PSBzaXplb2YoRHRvYUJ1ZmZlcikpOworCisgICAg
ICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAgICAgIC8vIFplcm8gc2hvdWxkIGFsd2F5cyBo
YXZlIGV4cG9uZW50IDAuCisgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8
fCAhbV9leHBvbmVudCk7CisgICAgfQorCiAgICAgRGVjaW1hbE51bWJlcihkb3VibGUgZCwgUm91
bmRpbmdEZWNpbWFsUGxhY2VzVHlwZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghaXNuYW4oZCkgJiYgIWlzaW5mKGQpKTsKQEAgLTEwMyw2ICsxMTYsNyBA
QCBwcml2YXRlOgogCiB1c2luZyBXVEY6OkRlY2ltYWxOdW1iZXI7CiB1c2luZyBXVEY6OlJvdW5k
aW5nU2lnbmlmaWNhbnRGaWd1cmVzOwordXNpbmcgV1RGOjpSb3VuZGluZ1NpZ25pZmljYW50Rmln
dXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zOwogdXNpbmcgV1RGOjpSb3VuZGluZ0RlY2ltYWxQbGFj
ZXM7CiAKICNlbmRpZiAvLyBEZWNpbWFsTnVtYmVyX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTYwYmI1MDA2ZDBkNDVi
NjdmNDk4YWRjZjBlOTE2MGVhYWMwYmViLi5jNDI0ODg0OTBhOGNhMTNlZjhiYzhmYzE3YWRhNGY2
ZDFkYWY4NTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMjggIERhaSBNaWt1cnVi
ZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNlcmlhbGl6YXRpb24gZnJvbSBmbG9hdGlu
ZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVtYmVyIiBpbnB1dCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAg
ICAgICBNb2RpZmllZCB0ZXN0cyBmb3IgaHVnZSBudW1iZXJzIHdpdGggOSBzaWduaWZpY2FudCBk
aWdpdHMuCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgPGlucHV0IHR5cGU9Im51bWJlciIgc3Rl
cD0iMC4wMDUiIG1pbj0iNCIgdmFsdWU9IjUuMDA1IiAvPgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9y
bXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qczoKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC12YWx1ZWFzbnVtYmVyLW51bWJlci5qczoK
KwogMjAxMC0xMC0yOCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFVuZXZpZXdlZCwgdGVzdF9leHBlY3RhdGlvbnMgZml4LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhw
ZWN0ZWQudHh0CmluZGV4IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAu
LmJmMTdhNzg3MDdkODhmY2Q3MjYxOGVhNDJkYWI0NWIwYTM5MDIzYzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3Rl
ZC50eHQKQEAgLTE2NSw2ICsxNjUsOCBAQCBQQVNTIHN0ZXBVcCgiMSIsICIwLjEiLCAiIiwgMTAp
IGlzICIyIgogUEFTUyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBV
cCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1
dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAo
KTsgaW5wdXQudmFsdWUgaXMgIjMiCiBQQVNTIGlucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwg
IjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjEiLCAyNTUpIGlzICIxIgogUEFTUyBmb3IgKHZhciBp
ID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlIGlz
ICIwIgorUm91bmRpbmcKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAyKSBpcyAiNS4wMTUiCiAKIFJhbmdlIHR5cGUKIGZ1bmN0aW9uIGFyZ3VtZW50cyBh
cmUgKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgW3N0ZXBDb3VudF0pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDcxMTQ3ZmRlMzkzZGQ1MGNkMmQ3YTkxYTU2ZTE2OGMzYzAwMDFkOTcu
LjllY2FkZTFmYWExMGRkMmQyZmM5OWRmZDA2MmI2MTgwMGEyNDJkMmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1i
ZXItZXhwZWN0ZWQudHh0CkBAIC0zOCw3ICszOCw3IEBAIFBBU1Mgc2V0VmFsdWVBc051bWJlckFu
ZEdldFZhbHVlKC0wKSBpcyAiMCIKIFBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKC0x
LjIpIGlzICItMS4yIgogUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yZTEwKSBp
cyAiMTIwMDAwMDAwMDAiCiBQQVNTIHNldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjJlLTEw
KSBpcyAiMS4yZS0xMCIKLVBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMjM0NTY3
ODkwMTIzNDU2N2UrMzgpIGlzICIxLjIzNDU2Nzg5MDEyMzQ1NjdlKzM4IgorUEFTUyBzZXRWYWx1
ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCkgaXMgIjEuMjM0NTY3
ODllKzM4IgogUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIi0zLjQwMjgyMzQ2ZSsz
OCIpIGlzICItMy40MDI4MjM0NmUrMzgiCiBQQVNTIHNldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1
ZSgiLTMuNDAyODIzNDhlKzM4IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVl
KCIzLjQwMjgyMzQ2ZSszOCIpIGlzICIzLjQwMjgyMzQ2ZSszOCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93
bi5qcwppbmRleCBjZDRhMDdjMmQwNTBhN2YzMDg3OTVhYjI3MGY2ZThlZjIyMWJkY2Q3Li5kYTc4
ZDU1YmUxYTI2MmQ4NThlMDZjNTQyYjQ2OTg4ODIyMmE3YWFhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24uanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCkBAIC0yMjEsNiArMjIxLDggQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEiLCAi
IiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAo
KTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQu
c3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1dC5t
aW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1KScs
ICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0
LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5nJyk7
CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAy
KScsICciNS4wMTUiJyk7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdSYW5nZSB0eXBlJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC12YWx1ZWFz
bnVtYmVyLW51bWJlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lu
cHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCmluZGV4IDI3OTc1OTFmMmRkMjk4ZTA3ZTRjNzYx
ZTI3Njc3N2JjY2RlNTAyMmEuLmM0MGM4ZDM1MTRiNTQ3NTU1NzM4MjE0NmZiMTBkMjkzODhhZmFk
NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0
LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCkBAIC01MSw3ICs1MSw3IEBA
IHNob3VsZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoLTApJywgJyIwIicpOwogc2hv
dWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgtMS4yKScsICciLTEuMiInKTsKIHNo
b3VsZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yZTEwKScsICciMTIwMDAwMDAw
MDAiJyk7CiBzaG91bGRCZSgnc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMmUtMTApJywg
JyIxLjJlLTEwIicpOwotc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjIz
NDU2Nzg5MDEyMzQ1NjdlKzM4KScsICciMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCInKTsKK3Nob3Vs
ZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCkn
LCAnIjEuMjM0NTY3ODllKzM4IicpOwogc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRW
YWx1ZSgiLTMuNDAyODIzNDZlKzM4IiknLCAnIi0zLjQwMjgyMzQ2ZSszOCInKTsKIHNob3VsZFRo
cm93KCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIi0zLjQwMjgyMzQ4ZSszOCIpJywgJyJF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEiJyk7CiBzaG91bGRCZSgn
c2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKCIzLjQwMjgyMzQ2ZSszOCIpJywgJyIzLjQwMjgy
MzQ2ZSszOCInKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYmZkNGMyYzI5YzAzMTc1ZTg1ODQxM2JkYTA2N2JmOGZjODlhNGY5ZS4uODkx
ZjJiNjBmYzNjMGViMTQ0ODVlZjkxNTU3YWUyOWY2NzY3Y2RhYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
MC0xMC0yOCAgRGFpIE1pa3VydWJlICA8ZG1pa3VydWJlQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG9vIHByZWNpc2Ugc2VyaWFs
aXphdGlvbiBmcm9tIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBzdHJpbmcgZm9yICJudW1iZXIi
IGlucHV0IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODMwOAorCisgICAgICAgIEZpeGVkIHRoZSBudW1lcmljIGVycm9yIHRocmVzaG9s
ZCBpbiBjb21wYXJpbmcgd2l0aCBtYXgvbWluIGluIGFwcGx5U3RlcC4KKyAgICAgICAgTW9kaWZp
ZWQgdG8gcHJpbnQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyB3aXRoIDkgc2lnbmlmaWNhbnQgZGln
aXRzLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcCk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphY2NlcHRhYmxlRXJyb3Ip
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVwTWlzbWF0
Y2gpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVG
b3JOdW1iZXJUeXBlKToKKwogMjAxMC0xMC0yOCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgxYjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIu
LmEyYTRkODQzMWM2ZGVhZWQ4M2NhNWUwNTY3MWE1ZmVmMTk2MmNhOWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTMwMCwxMyArMzAwLDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG5l
d1ZhbHVlIDwgbV9pbnB1dFR5cGUtPm1pbmltdW0oKSkgeworICAgIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3IgPSBtX2lucHV0VHlwZS0+YWNjZXB0YWJsZUVycm9yKHN0ZXApOworICAgIGlmIChuZXdW
YWx1ZSAtIG1faW5wdXRUeXBlLT5taW5pbXVtKCkgPCAtYWNjZXB0YWJsZUVycm9yKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ZG91YmxlIGJhc2UgPSBtX2lucHV0VHlwZS0+c3RlcEJhc2UoKTsKICAgICBuZXdWYWx1ZSA9IGJh
c2UgKyByb3VuZCgobmV3VmFsdWUgLSBiYXNlKSAvIHN0ZXApICogc3RlcDsKLSAgICBpZiAobmV3
VmFsdWUgPiBtX2lucHV0VHlwZS0+bWF4aW11bSgpKSB7CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9p
bnB1dFR5cGUtPm1heGltdW0oKSA+IGFjY2VwdGFibGVFcnJvcikgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRl
eCBjODcwYzY5NDNlNmFiY2UwODcyZDBmOWQ2ODc2NGY1ZGQxNmI1OGJhLi44MDE4MGU2ODE3MTNi
YWZlMjFlZGM5ZjdhOThkYzEwNzNjNGVlMGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjU3LDYgKzI1
NywxMSBAQCBib29sIElucHV0VHlwZTo6c2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRlZ2VyKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OmFjY2VwdGFi
bGVFcnJvcihkb3VibGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIFJlbmRlck9iamVj
dCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxl
bWVudCgpLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggZjYwMTA1MTNmYmM2ZDA3NmQ1NTE1M2RiYjE3
ZTFkNzk4NDRmNTE1ZS4uN2Q5NmIwZmNjMDA2YjM3NTMxNGQ0NWMxM2M1Y2ZlMTdjYWNhY2U4MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUg
c3RlcFNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVwVmFs
ZXVTaG91bGRCZUludGVnZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3IoZG91YmxlKSBjb25zdDsKIAogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zCiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggMjhmNTEwYzFiZjQ1YmMzZjM5NWE3MzY0NGE1
NzBkYjk5ODU4N2U1NC4uOGIwOTkwNjJiY2IwZjQ4YzAyZTQ4ZDFjYzY3M2IzYTI0MDg1ZmFlOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBib29sIE51bWJl
cklucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUsIGRvdWJsZSBzdGVw
KSBjb25zdAogICAgIGRvdWJsZSByZW1haW5kZXIgPSBmYWJzKGRvdWJsZVZhbHVlIC0gc3RlcCAq
IHJvdW5kKGRvdWJsZVZhbHVlIC8gc3RlcCkpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93
ZXIgZnJhY3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAv
LyBjYW4ndCByZXByZXNlbnQuCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IHN0ZXAgLyBw
b3coMi4wLCBGTFRfTUFOVF9ESUcpOwotICAgIHJldHVybiBhY2NlcHRhYmxlRXJyb3IgPCByZW1h
aW5kZXIgJiYgcmVtYWluZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3IpOworICAgIGRvdWJs
ZSBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcihzdGVwKTsKKyAgICBy
ZXR1cm4gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwg
KHN0ZXAgLSBjb21wdXRlZEFjY2VwdGFibGVFcnJvcik7CiB9CiAKIGRvdWJsZSBOdW1iZXJJbnB1
dFR5cGU6OnN0ZXBCYXNlKCkgY29uc3QKQEAgLTE2Niw0ICsxNjYsOSBAQCBTdHJpbmcgTnVtYmVy
SW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBzZXJp
YWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0VHlwZTo6
YWNjZXB0YWJsZUVycm9yKGRvdWJsZSBzdGVwKSBjb25zdAoreworICAgIHJldHVybiBzdGVwIC8g
cG93KDIuMCwgRkxUX01BTlRfRElHKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL051
bWJlcklucHV0VHlwZS5oCmluZGV4IDI2Mjk1NWU3ZDkxOTI0ZmQ1YjEzNGJjNWU2NWY5MDIyZmFj
Yjg2MGEuLmUzNzE2NmNjY2M0OTQ4MmE3NzYzYTU3ODkyMTQ0YzEwNDc5ODY1N2QgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvTnVt
YmVySW5wdXRUeXBlLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRv
dWJsZSBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRv
RG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
c2VyaWFsaXplKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgYWNjZXB0YWJsZUVy
cm9yKGRvdWJsZSkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAwY2U1ZTRkOTczMGMxOTdhN2Rl
YmRmNjBhNWU2MWNjYWJlNmJmNjVlLi5lMDk3OTVjNzFkNTg0ZjJmMmRjZjQyZjdiMjNmY2ZiNjQ5
NzZjZDUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAKKyNpbmNsdWRlIDx3dGYvRGVjaW1hbE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KQEAgLTU4LDEwICs1OSwyNyBAQCBTdHJpbmcgc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogCiBTdHJpbmcgc2VyaWFs
aXplRm9yTnVtYmVyVHlwZShkb3VibGUgbnVtYmVyKQogewotICAgIC8vIEFjY29yZGluZyB0byBI
VE1MNSwgInRoZSBiZXN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBhIGZsb2F0
aW5nCi0gICAgLy8gcG9pbnQgbnVtYmVyIiBpcyBhIHN0cmluZyBwcm9kdWNlZCBieSBhcHBseWlu
ZyBUb1N0cmluZygpIHRvIG4uCi0gICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IG51bWJlclRvU3RyaW5nKG51bWJlciwgYnVmZmVyKTsKKyAgICAv
LyBVc2luZyBhIGxpdHRsZSBkaWZmZXJlbnQgbG9naWMgZnJvbSBKYXZhU2NyaXB0J3MgVG9TdHJp
bmcoKSB0aG91Z2ggSFRNTDUKKyAgICAvLyBzYXlzICJ0aGUgYmVzdCByZXByZXNlbnRhdGlvbiBv
ZiB0aGUgbnVtYmVyIG4gYXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIiCisgICAgLy8gaXMgYSBz
dHJpbmcgcHJvZHVjZWQgYnkgYXBwbHlpbmcgVG9TdHJpbmcoKSB0byBuLiBJdCdzIGJlY2F1c2Ug
cHJpbnRpbmcKKyAgICAvLyBhcyBkb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJl
cnMgKGJ5IEphdmFTY3JpcHQncyBUb1N0cmluZygpKQorICAgIC8vIGNhbm5vdCB3b3JrIGR1ZSB0
byBudW1lcmljIGVycm9ycy4gKEphdmFTY3JpcHQgdXNlcyBkb3VibGUtcHJlY2lzaW9uLAorICAg
IC8vIHRob3VnaCBIVE1MNSB1c2VzIHNpbmdsZS1wcmVjaXNpb24uKQorICAgIC8vIEVzcGVjaWFs
bHksIHNvbWUgb3BlcmF0aW9ucyAoZm9yIGV4YW1wbGUsIHN0ZXBVcCgpIGFuZCBzdGVwRG93bigp
KSBtYWtlCisgICAgLy8gdW5hdm9pZGFibGUgbnVtZXJpYyBlcnJvcnMgd2hpY2ggYWZmZWN0IHBy
aW50ZWQgcmVzdWx0cyB3aGVuIHByaW50aW5nIGFzCisgICAgLy8gZG91YmxlLXByZWNpc2lvbiBu
dW1iZXJzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxl
bmd0aCA9IDk2OworICAgIFVDaGFyIGJ1ZmZlcltOdW1iZXJUb1N0cmluZ0J1ZmZlckxlbmd0aF07
CisgICAgLy8gUm91bmQgdGhlIHJlc3VsdCB3aXRoIDkgc2lnbmlmaWNhbnQgZGlnaXRzLgorICAg
IC8vIDkgYmVjYXVzZSBvZiB0aGUgc2lnbmlmaWNhbnQgZGlnaXRzIG9mIElFRUUgNzU0IHNpbmds
ZS1wcmVjaXNpb24gbnVtYmVycy4KKyAgICAvLyBUaGV5IGhhdmUgMjMgZnJhY3Rpb24gYml0cywg
dGhlbiAyXjI0ID0gMTYsNjc3LDIxNi4KKyAgICAvLyArMSB0byBiZSBzYWZlIGluIGNhc2Ugb2Yg
cmUtcGFyc2luZyByZXF1aXJlZC4KKyAgICAvLyBBbm90aGVyIHJlYXNvbiBmb3IgOSBpcyB0byBm
b2xsb3cgdGhlIGV4YW1wbGUgaW4gSFRNTDUgNC4xMC43LjIuMTAuCisgICAgLy8gPGlucHV0IG5h
bWU9b3BhY2l0eSB0eXBlPXJhbmdlIG1pbj0wIG1heD0xIHN0ZXA9MC4wMDM5MjE1Njg2Mz4KKyAg
ICBEZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXIobnVtYmVyLCBSb3VuZGluZ1NpZ25pZmljYW50
RmlndXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zLCA5KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBk
ZWNpbWFsTnVtYmVyLmV4cG9uZW50KCkgPj0gLTYgJiYgZGVjaW1hbE51bWJlci5leHBvbmVudCgp
IDwgMjEKKyAgICAgICAgPyBkZWNpbWFsTnVtYmVyLnRvU3RyaW5nRGVjaW1hbChidWZmZXIsIE51
bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKQorICAgICAgICA6IGRlY2ltYWxOdW1iZXIudG9TdHJp
bmdFeHBvbmVudGlhbChidWZmZXIsIE51bWJlclRvU3RyaW5nQnVmZmVyTGVuZ3RoKTsKICAgICBy
ZXR1cm4gU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72484</attachid>
            <date>2010-10-31 20:35:10 -0700</date>
            <delta_ts>2010-11-02 05:10:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101101123508.patch</filename>
            <type>text/plain</type>
            <size>16117</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMGMzZjBkYmNhMDk1MmFjMTc0NjEyOTY1N2YwNDNlY2JiOGZkYTIzLi45
MDIwMDRlMjk2Mzk5Yzk5ZjExZWIyNmQ0NzY0YzYwMDFiNTNkOWIwIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTAtMTAtMjggIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
byBwcmVjaXNlIHNlcmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3Ry
aW5nIGZvciAibnVtYmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICBBZGRlZCBuZXcgbnVtYmVy
VG9TdHJpbmcgd2l0aCBzaWduaWZpY2FudCBmaWd1cmVzLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUuZXhwOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKKyAgICAgICAgKiB3dGYvRGVjaW1hbE51bWJlci5oOgorICAg
ICAgICAoV1RGOjpEZWNpbWFsTnVtYmVyOjpEZWNpbWFsTnVtYmVyKToKKwogMjAxMC0xMC0yOCAg
S3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IDZlZjhlYWQ5
YjNjNjkyOTI5NGY3YjBmY2VmZTg5NGQxMDkxNzRiMzIuLjgxMzgxMzU1NThkZTA2YjQ2ZDUxNjk5
ZGUyYWM2M2ZmY2JjZTI5MzEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTU1MCw2
ICs1NTAsNyBAQCBfX1pOM1dURjExZHRvYVJvdW5kRFBFUGNkaVJiUmlSagogX19aTjNXVEY0ZHRv
YUVQY2RSYlJpUmoKIF9fWk5LM1dURjEyQXRvbWljU3RyaW5nNWxvd2VyRXYKIF9fWk5LM1dURjEz
RGVjaW1hbE51bWJlcjE1dG9TdHJpbmdEZWNpbWFsRVB0agorX19aTkszV1RGMTNEZWNpbWFsTnVt
YmVyMTl0b1N0cmluZ0V4cG9uZW50aWFsRVB0agogX19aTkszV1RGMTNEZWNpbWFsTnVtYmVyMjhi
dWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsRXYKIF9fWk5LM1dURjZTdHJpbmcxMXRvSW50U3Ry
aWN0RVBiaQogX19aTkszV1RGNlN0cmluZzEydG9VSW50U3RyaWN0RVBiaQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmRlZiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNzc5YjBiYzU3OGUzZjk5NjFiZTVk
OGVkYzA0NzNkNWUxZjJkNWQ2OC4uYzFiZDJlNjNlZTg1MzAyMDRmZDlhN2IwMjlkM2ZhMGIyNTgw
Y2U0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0z
MjIsNiArMzIyLDcgQEAgRVhQT1JUUwogICAgID90b1ByaW1pdGl2ZUBKU1N0cmluZ0BKU0NAQEVC
RT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBXNFByZWZlcnJlZFByaW1pdGl2ZVR5cGVAMkBA
WgogICAgID90b1N0cmljdFRoaXNPYmplY3RASlNPYmplY3RASlNDQEBVQkU/QVZKU1ZhbHVlQDJA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdEZWNpbWFsQERlY2ltYWxOdW1iZXJAV1RG
QEBRQkVJUEFfV0lAWgorICAgID90b1N0cmluZ0V4cG9uZW50aWFsQERlY2ltYWxOdW1iZXJAV1RG
QEBRQkVJUEFfV0lAWgogICAgID90b1N0cmluZ0BKU0NlbGxASlNDQEBVQkU/QVZVU3RyaW5nQDJA
UEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdASlNPYmplY3RASlNDQEBVQkU/QVZVU3Ry
aW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKICAgICA/dG9TdHJpbmdASlNTdHJpbmdASlNDQEBFQkU/
QVZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3d0Zi9EZWNpbWFsTnVtYmVyLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvRGVjaW1hbE51bWJlci5o
CmluZGV4IGM0MmYwMGI1MWUwYzUzMWEyMzAwY2VkNGZmMTVkZWUwZTUyMjEyODEuLmRjMjQ0Nzc4
OTYyMGU5OTk4N2Q3MjkyNGU3MDY5NDUzNjY5N2I3MzQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3d0Zi9EZWNpbWFsTnVtYmVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL0RlY2ltYWxO
dW1iZXIuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGVudW0gUm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXNUeXBlIHsgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMgfTsK
K2VudW0gUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNXaXRob3V0VHJhaWxpbmdaZXJvc1R5cGUg
eyBSb3VuZGluZ1NpZ25pZmljYW50RmlndXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zIH07CiBlbnVt
IFJvdW5kaW5nRGVjaW1hbFBsYWNlc1R5cGUgeyBSb3VuZGluZ0RlY2ltYWxQbGFjZXMgfTsKIAog
Y2xhc3MgRGVjaW1hbE51bWJlciB7CkBAIC02Niw2ICs2NywxOCBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCAhbV9leHBvbmVudCk7CiAgICAgfQog
CisgICAgRGVjaW1hbE51bWJlcihkb3VibGUgZCwgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXNX
aXRob3V0VHJhaWxpbmdaZXJvc1R5cGUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcykKKyAg
ICB7CisgICAgICAgIEFTU0VSVCghaXNuYW4oZCkgJiYgIWlzaW5mKGQpKTsKKyAgICAgICAgZHRv
YVJvdW5kU0YobV9zaWduaWZpY2FuZCwgZCwgc2lnbmlmaWNhbnRGaWd1cmVzLCBtX3NpZ24sIG1f
ZXhwb25lbnQsIG1fcHJlY2lzaW9uKTsKKworICAgICAgICBBU1NFUlQoc2lnbmlmaWNhbnRGaWd1
cmVzICYmIHNpZ25pZmljYW50RmlndXJlcyA8PSBzaXplb2YoRHRvYUJ1ZmZlcikpOworCisgICAg
ICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAgICAgIC8vIFplcm8gc2hvdWxkIGFsd2F5cyBo
YXZlIGV4cG9uZW50IDAuCisgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8
fCAhbV9leHBvbmVudCk7CisgICAgfQorCiAgICAgRGVjaW1hbE51bWJlcihkb3VibGUgZCwgUm91
bmRpbmdEZWNpbWFsUGxhY2VzVHlwZSwgdW5zaWduZWQgZGVjaW1hbFBsYWNlcykKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghaXNuYW4oZCkgJiYgIWlzaW5mKGQpKTsKQEAgLTEwMyw2ICsxMTYsNyBA
QCBwcml2YXRlOgogCiB1c2luZyBXVEY6OkRlY2ltYWxOdW1iZXI7CiB1c2luZyBXVEY6OlJvdW5k
aW5nU2lnbmlmaWNhbnRGaWd1cmVzOwordXNpbmcgV1RGOjpSb3VuZGluZ1NpZ25pZmljYW50Rmln
dXJlc1dpdGhvdXRUcmFpbGluZ1plcm9zOwogdXNpbmcgV1RGOjpSb3VuZGluZ0RlY2ltYWxQbGFj
ZXM7CiAKICNlbmRpZiAvLyBEZWNpbWFsTnVtYmVyX2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTYwYmI1MDA2ZDBkNDVi
NjdmNDk4YWRjZjBlOTE2MGVhYWMwYmViLi5jNDI0ODg0OTBhOGNhMTNlZjhiYzhmYzE3YWRhNGY2
ZDFkYWY4NTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMTAtMjggIERhaSBNaWt1cnVi
ZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNlcmlhbGl6YXRpb24gZnJvbSBmbG9hdGlu
ZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVtYmVyIiBpbnB1dCBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAg
ICAgICBNb2RpZmllZCB0ZXN0cyBmb3IgaHVnZSBudW1iZXJzIHdpdGggOSBzaWduaWZpY2FudCBk
aWdpdHMuCisgICAgICAgIEFkZGVkIGEgdGVzdCBmb3IgPGlucHV0IHR5cGU9Im51bWJlciIgc3Rl
cD0iMC4wMDUiIG1pbj0iNCIgdmFsdWU9IjUuMDA1IiAvPgorCisgICAgICAgICogZmFzdC9mb3Jt
cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9y
bXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qczoKKyAgICAgICAg
KiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC12YWx1ZWFzbnVtYmVyLW51bWJlci5qczoK
KwogMjAxMC0xMC0yOCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFVuZXZpZXdlZCwgdGVzdF9leHBlY3RhdGlvbnMgZml4LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhw
ZWN0ZWQudHh0CmluZGV4IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAu
LmJmMTdhNzg3MDdkODhmY2Q3MjYxOGVhNDJkYWI0NWIwYTM5MDIzYzAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3Rl
ZC50eHQKQEAgLTE2NSw2ICsxNjUsOCBAQCBQQVNTIHN0ZXBVcCgiMSIsICIwLjEiLCAiIiwgMTAp
IGlzICIyIgogUEFTUyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBV
cCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1
dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAo
KTsgaW5wdXQudmFsdWUgaXMgIjMiCiBQQVNTIGlucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwg
IjAuMDAzOTIxNTY4NjI3NDUwOTgwIiwgIjEiLCAyNTUpIGlzICIxIgogUEFTUyBmb3IgKHZhciBp
ID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlIGlz
ICIwIgorUm91bmRpbmcKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAyKSBpcyAiNS4wMTUiCiAKIFJhbmdlIHR5cGUKIGZ1bmN0aW9uIGFyZ3VtZW50cyBh
cmUgKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgW3N0ZXBDb3VudF0pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhw
ZWN0ZWQudHh0CmluZGV4IDcxMTQ3ZmRlMzkzZGQ1MGNkMmQ3YTkxYTU2ZTE2OGMzYzAwMDFkOTcu
LjllY2FkZTFmYWExMGRkMmQyZmM5OWRmZDA2MmI2MTgwMGEyNDJkMmMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1iZXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtdmFsdWVhc251bWJlci1udW1i
ZXItZXhwZWN0ZWQudHh0CkBAIC0zOCw3ICszOCw3IEBAIFBBU1Mgc2V0VmFsdWVBc051bWJlckFu
ZEdldFZhbHVlKC0wKSBpcyAiMCIKIFBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKC0x
LjIpIGlzICItMS4yIgogUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yZTEwKSBp
cyAiMTIwMDAwMDAwMDAiCiBQQVNTIHNldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjJlLTEw
KSBpcyAiMS4yZS0xMCIKLVBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMjM0NTY3
ODkwMTIzNDU2N2UrMzgpIGlzICIxLjIzNDU2Nzg5MDEyMzQ1NjdlKzM4IgorUEFTUyBzZXRWYWx1
ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCkgaXMgIjEuMjM0NTY3
ODllKzM4IgogUEFTUyBzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIi0zLjQwMjgyMzQ2ZSsz
OCIpIGlzICItMy40MDI4MjM0NmUrMzgiCiBQQVNTIHNldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1
ZSgiLTMuNDAyODIzNDhlKzM4IikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJTlZBTElEX1NUQVRF
X0VSUjogRE9NIEV4Y2VwdGlvbiAxMS4KIFBBU1Mgc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVl
KCIzLjQwMjgyMzQ2ZSszOCIpIGlzICIzLjQwMjgyMzQ2ZSszOCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93
bi5qcwppbmRleCBjZDRhMDdjMmQwNTBhN2YzMDg3OTVhYjI3MGY2ZThlZjIyMWJkY2Q3Li5kYTc4
ZDU1YmUxYTI2MmQ4NThlMDZjNTQyYjQ2OTg4ODIyMmE3YWFhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3RlcGRvd24uanMKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCkBAIC0yMjEsNiArMjIxLDggQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEiLCAi
IiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAo
KTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQu
c3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1dC5t
aW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1KScs
ICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlucHV0
LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5nJyk7
CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAy
KScsICciNS4wMTUiJyk7CiAKIGRlYnVnKCcnKTsKIGRlYnVnKCdSYW5nZSB0eXBlJyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC12YWx1ZWFz
bnVtYmVyLW51bWJlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lu
cHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCmluZGV4IDI3OTc1OTFmMmRkMjk4ZTA3ZTRjNzYx
ZTI3Njc3N2JjY2RlNTAyMmEuLmM0MGM4ZDM1MTRiNTQ3NTU1NzM4MjE0NmZiMTBkMjkzODhhZmFk
NzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0
LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2Ny
aXB0LXRlc3RzL2lucHV0LXZhbHVlYXNudW1iZXItbnVtYmVyLmpzCkBAIC01MSw3ICs1MSw3IEBA
IHNob3VsZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoLTApJywgJyIwIicpOwogc2hv
dWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgtMS4yKScsICciLTEuMiInKTsKIHNo
b3VsZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yZTEwKScsICciMTIwMDAwMDAw
MDAiJyk7CiBzaG91bGRCZSgnc2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKDEuMmUtMTApJywg
JyIxLjJlLTEwIicpOwotc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRWYWx1ZSgxLjIz
NDU2Nzg5MDEyMzQ1NjdlKzM4KScsICciMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCInKTsKK3Nob3Vs
ZEJlKCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoMS4yMzQ1Njc4OTAxMjM0NTY3ZSszOCkn
LCAnIjEuMjM0NTY3ODllKzM4IicpOwogc2hvdWxkQmUoJ3NldFZhbHVlQXNOdW1iZXJBbmRHZXRW
YWx1ZSgiLTMuNDAyODIzNDZlKzM4IiknLCAnIi0zLjQwMjgyMzQ2ZSszOCInKTsKIHNob3VsZFRo
cm93KCdzZXRWYWx1ZUFzTnVtYmVyQW5kR2V0VmFsdWUoIi0zLjQwMjgyMzQ4ZSszOCIpJywgJyJF
cnJvcjogSU5WQUxJRF9TVEFURV9FUlI6IERPTSBFeGNlcHRpb24gMTEiJyk7CiBzaG91bGRCZSgn
c2V0VmFsdWVBc051bWJlckFuZEdldFZhbHVlKCIzLjQwMjgyMzQ2ZSszOCIpJywgJyIzLjQwMjgy
MzQ2ZSszOCInKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYmZkNGMyYzI5YzAzMTc1ZTg1ODQxM2JkYTA2N2JmOGZjODlhNGY5ZS4uODkx
ZjJiNjBmYzNjMGViMTQ0ODVlZjkxNTU3YWUyOWY2NzY3Y2RhYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAx
MC0xMC0yOCAgRGFpIE1pa3VydWJlICA8ZG1pa3VydWJlQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG9vIHByZWNpc2Ugc2VyaWFs
aXphdGlvbiBmcm9tIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byBzdHJpbmcgZm9yICJudW1iZXIi
IGlucHV0IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODMwOAorCisgICAgICAgIEZpeGVkIHRoZSBudW1lcmljIGVycm9yIHRocmVzaG9s
ZCBpbiBjb21wYXJpbmcgd2l0aCBtYXgvbWluIGluIGFwcGx5U3RlcC4KKyAgICAgICAgTW9kaWZp
ZWQgdG8gcHJpbnQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyB3aXRoIDkgc2lnbmlmaWNhbnQgZGln
aXRzLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcCk6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphY2NlcHRhYmxlRXJyb3Ip
OgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TnVtYmVySW5wdXRUeXBlOjpzdGVwTWlzbWF0
Y2gpOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXJpYWxpemVG
b3JOdW1iZXJUeXBlKToKKwogMjAxMC0xMC0yOCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgxYjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIu
LmEyYTRkODQzMWM2ZGVhZWQ4M2NhNWUwNTY3MWE1ZmVmMTk2MmNhOWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTMwMCwxMyArMzAwLDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG5l
d1ZhbHVlIDwgbV9pbnB1dFR5cGUtPm1pbmltdW0oKSkgeworICAgIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3IgPSBtX2lucHV0VHlwZS0+YWNjZXB0YWJsZUVycm9yKHN0ZXApOworICAgIGlmIChuZXdW
YWx1ZSAtIG1faW5wdXRUeXBlLT5taW5pbXVtKCkgPCAtYWNjZXB0YWJsZUVycm9yKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ZG91YmxlIGJhc2UgPSBtX2lucHV0VHlwZS0+c3RlcEJhc2UoKTsKICAgICBuZXdWYWx1ZSA9IGJh
c2UgKyByb3VuZCgobmV3VmFsdWUgLSBiYXNlKSAvIHN0ZXApICogc3RlcDsKLSAgICBpZiAobmV3
VmFsdWUgPiBtX2lucHV0VHlwZS0+bWF4aW11bSgpKSB7CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9p
bnB1dFR5cGUtPm1heGltdW0oKSA+IGFjY2VwdGFibGVFcnJvcikgewogICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRl
eCBjODcwYzY5NDNlNmFiY2UwODcyZDBmOWQ2ODc2NGY1ZGQxNmI1OGJhLi44MDE4MGU2ODE3MTNi
YWZlMjFlZGM5ZjdhOThkYzEwNzNjNGVlMGU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjU3LDYgKzI1
NywxMSBAQCBib29sIElucHV0VHlwZTo6c2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRlZ2VyKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OmFjY2VwdGFi
bGVFcnJvcihkb3VibGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIFJlbmRlck9iamVj
dCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxl
bWVudCgpLCBzdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggZjYwMTA1MTNmYmM2ZDA3NmQ1NTE1M2RiYjE3
ZTFkNzk4NDRmNTE1ZS4uN2Q5NmIwZmNjMDA2YjM3NTMxNGQ0NWMxM2M1Y2ZlMTdjYWNhY2U4MCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUg
c3RlcFNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBWYWx1
ZVNob3VsZEJlSW50ZWdlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVwVmFs
ZXVTaG91bGRCZUludGVnZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRhYmxl
RXJyb3IoZG91YmxlKSBjb25zdDsKIAogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zCiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggMjhmNTEwYzFiZjQ1YmMzZjM5NWE3MzY0NGE1
NzBkYjk5ODU4N2U1NC4uMmQwODQ5Y2RlZmJmMTIzMTI5MWViNmMwNGM0NmQ3M2JkNjVkNmFhZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTEyOSwxMCArMTI5LDggQEAgYm9vbCBOdW1i
ZXJJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlLCBkb3VibGUgc3Rl
cCkgY29uc3QKICAgICAvLyAuLi4gdGhhdCBudW1iZXIgc3VidHJhY3RlZCBmcm9tIHRoZSBzdGVw
IGJhc2UgaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxlCiAgICAgLy8gb2YgdGhlIGFsbG93ZWQg
dmFsdWUgc3RlcCwgdGhlIGVsZW1lbnQgaXMgc3VmZmVyaW5nIGZyb20gYSBzdGVwIG1pc21hdGNo
LgogICAgIGRvdWJsZSByZW1haW5kZXIgPSBmYWJzKGRvdWJsZVZhbHVlIC0gc3RlcCAqIHJvdW5k
KGRvdWJsZVZhbHVlIC8gc3RlcCkpOwotICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJh
Y3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KLSAgICAvLyBjYW4n
dCByZXByZXNlbnQuCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IHN0ZXAgLyBwb3coMi4w
LCBGTFRfTUFOVF9ESUcpOwotICAgIHJldHVybiBhY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIg
JiYgcmVtYWluZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3IpOworICAgIGRvdWJsZSBjb21w
dXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcihzdGVwKTsKKyAgICByZXR1cm4g
Y29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKHN0ZXAg
LSBjb21wdXRlZEFjY2VwdGFibGVFcnJvcik7CiB9CiAKIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6
OnN0ZXBCYXNlKCkgY29uc3QKQEAgLTE2Niw0ICsxNjQsMTEgQEAgU3RyaW5nIE51bWJlcklucHV0
VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZSh2YWx1ZSk7CiB9CiAKK2RvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OmFjY2Vw
dGFibGVFcnJvcihkb3VibGUgc3RlcCkgY29uc3QKK3sKKyAgICAvLyBBY2NlcHRzIGVycm9zIGlu
IGxvd2VyIGZyYWN0aW9uYWwgcGFydCB3aGljaCBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uCisg
ICAgLy8gY2FuJ3QgcmVwcmVzZW50LgorICAgIHJldHVybiBzdGVwIC8gcG93KDIuMCwgRkxUX01B
TlRfRElHKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5o
CmluZGV4IDI2Mjk1NWU3ZDkxOTI0ZmQ1YjEzNGJjNWU2NWY5MDIyZmFjYjg2MGEuLmUzNzE2NmNj
Y2M0OTQ4MmE3NzYzYTU3ODkyMTQ0YzEwNDc5ODY1N2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgK
QEAgLTU2LDYgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwU2NhbGVG
YWN0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0
cmluZyYsIGRvdWJsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGRvdWJs
ZSkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgYWNjZXB0YWJsZUVycm9yKGRvdWJsZSkgY29u
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAppbmRleCAwY2U1ZTRkOTczMGMxOTdhN2RlYmRmNjBhNWU2MWNjYWJl
NmJmNjVlLi5hZDQwMTQ5NmM4ZjJiZTkxNTc4YmI5NzdkY2Q2MzU1MTI2ZjY4MzVmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTI1LDggKzI1LDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAKKyNpbmNs
dWRlIDx3dGYvRGVjaW1hbE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0j
aW5jbHVkZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsMTAgKzU4LDI3IEBAIFN0cmluZyBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIFN0cmlu
ZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7Ci0gICAgLy8gQWNjb3Jk
aW5nIHRvIEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBuIGFz
IGEgZmxvYXRpbmcKLSAgICAvLyBwb2ludCBudW1iZXIiIGlzIGEgc3RyaW5nIHByb2R1Y2VkIGJ5
IGFwcGx5aW5nIFRvU3RyaW5nKCkgdG8gbi4KLSAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZm
ZXI7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbnVtYmVyVG9TdHJpbmcobnVtYmVyLCBidWZmZXIp
OworICAgIC8vIFVzaW5nIGEgbGl0dGxlIGRpZmZlcmVudCBsb2dpYyBmcm9tIEphdmFTY3JpcHQn
cyBUb1N0cmluZygpIHRob3VnaCBIVE1MNQorICAgIC8vIHNheXMgInRoZSBiZXN0IHJlcHJlc2Vu
dGF0aW9uIG9mIHRoZSBudW1iZXIgbiBhcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciIKKyAgICAv
LyBpcyBhIHN0cmluZyBwcm9kdWNlZCBieSBhcHBseWluZyBUb1N0cmluZygpIHRvIG4uIEl0J3Mg
YmVjYXVzZSBwcmludGluZworICAgIC8vIGFzIGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9p
bnQgbnVtYmVycyAoYnkgSmF2YVNjcmlwdCdzIFRvU3RyaW5nKCkpCisgICAgLy8gY2Fubm90IHdv
cmsgZHVlIHRvIG51bWVyaWMgZXJyb3JzLiAoSmF2YVNjcmlwdCB1c2VzIGRvdWJsZS1wcmVjaXNp
b24sCisgICAgLy8gdGhvdWdoIEhUTUw1IHVzZXMgc2luZ2xlLXByZWNpc2lvbi4pCisgICAgLy8g
RXNwZWNpYWxseSwgc29tZSBvcGVyYXRpb25zIChmb3IgZXhhbXBsZSwgc3RlcFVwKCkgYW5kIHN0
ZXBEb3duKCkpIG1ha2UKKyAgICAvLyB1bmF2b2lkYWJsZSBudW1lcmljIGVycm9ycyB3aGljaCBh
ZmZlY3QgcHJpbnRlZCByZXN1bHRzIHdoZW4gcHJpbnRpbmcgYXMKKyAgICAvLyBkb3VibGUtcHJl
Y2lzaW9uIG51bWJlcnMuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE51bWJlclRvU3RyaW5n
QnVmZmVyTGVuZ3RoID0gOTY7CisgICAgVUNoYXIgYnVmZmVyW051bWJlclRvU3RyaW5nQnVmZmVy
TGVuZ3RoXTsKKyAgICAvLyBSb3VuZCB0aGUgcmVzdWx0IHdpdGggOSBzaWduaWZpY2FudCBkaWdp
dHMuCisgICAgLy8gOSBiZWNhdXNlIG9mIHRoZSBzaWduaWZpY2FudCBkaWdpdHMgb2YgSUVFRSA3
NTQgc2luZ2xlLXByZWNpc2lvbiBudW1iZXJzLgorICAgIC8vIFRoZXkgaGF2ZSAyMyBmcmFjdGlv
biBiaXRzLCB0aGVuIDJeMjQgPSAxNiw2NzcsMjE2LgorICAgIC8vICsxIHRvIGJlIHNhZmUgaW4g
Y2FzZSBvZiByZS1wYXJzaW5nIHJlcXVpcmVkLgorICAgIC8vIEFub3RoZXIgcmVhc29uIGZvciA5
IGlzIHRvIGZvbGxvdyB0aGUgZXhhbXBsZSBpbiBIVE1MNSA0LjEwLjcuMi4xMC4KKyAgICAvLyA8
aW5wdXQgbmFtZT1vcGFjaXR5IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTEgc3RlcD0wLjAwMzkyMTU2
ODYzPgorICAgIERlY2ltYWxOdW1iZXIgZGVjaW1hbE51bWJlcihudW1iZXIsIFJvdW5kaW5nU2ln
bmlmaWNhbnRGaWd1cmVzV2l0aG91dFRyYWlsaW5nWmVyb3MsIDkpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGRlY2ltYWxOdW1iZXIuZXhwb25lbnQoKSA+PSAtNiAmJiBkZWNpbWFsTnVtYmVyLmV4
cG9uZW50KCkgPCAyMQorICAgICAgICA/IGRlY2ltYWxOdW1iZXIudG9TdHJpbmdEZWNpbWFsKGJ1
ZmZlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgpCisgICAgICAgIDogZGVjaW1hbE51bWJl
ci50b1N0cmluZ0V4cG9uZW50aWFsKGJ1ZmZlciwgTnVtYmVyVG9TdHJpbmdCdWZmZXJMZW5ndGgp
OwogICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLCBsZW5ndGgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72653</attachid>
            <date>2010-11-02 05:11:02 -0700</date>
            <delta_ts>2010-11-03 23:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101102211100.patch</filename>
            <type>text/plain</type>
            <size>17752</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjQ0MTdlMzNhOTU0MjMzOTk1OTc2YjcxNjE5ZWY1OWFmMzZjN2FmLi5mNTg4YTg2
ZTE3YmU3ZWQ0NDExZjlhOTI5NzhlNThhYTdjMDQ0OGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDIgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzaW1wbGlmeSBz
dHlsZXMgdGVzdCB0byBtYWtlIGFsbCBib3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CmluZGV4
IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAuLjgwYzY2MGI4NTE3MDJk
Mjc1ZWUyOWE2NjlhZmExMzZmYjhmMzAzMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50eHQKQEAgLTE2NSw2
ICsxNjUsMTAgQEAgUEFTUyBzdGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgogUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKIFBBU1MgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTU7
IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZSBpcyAiMCIKK1JvdW5kaW5n
CitQQVNTIGlucHV0Lm1pbj0iNCI7IHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMikgaXMg
IjUuMDE1IgorUEFTUyBpbnB1dC5taW49IjQiOyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIs
IDExKSBpcyAiNS4wNiIKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAxMikgaXMgIjUuMDY1IgogCiBSYW5nZSB0eXBlCiBmdW5jdGlvbiBhcmd1bWVudHMg
YXJlIChtaW4sIG1heCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCmluZGV4IGNkNGEwN2MyZDA1MGE3ZjMwODc5NWFiMjcwZjZlOGVmMjIxYmRjZDcuLjEz
M2Q3NGJkM2VlOTdhOGFiNDY4ZDI1ODJlNzY4OTAxODdjYmUyZDkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3Rl
cGRvd24uanMKQEAgLTIyMSw2ICsyMjEsMTAgQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEi
LCAiIiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVw
VXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5w
dXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVw
KCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1
dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1
KScsICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlu
cHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5n
Jyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIi
LCAyKScsICciNS4wMTUiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAw
NSIsICIwLjAwNSIsICIiLCAxMSknLCAnIjUuMDYiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0
Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1
ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmI0OTk0ZDg0MzAxMjY3MDlhOGUxNTRmOGFj
YjBkMWU3Nzc1ZDhhLi5hYjZlNzI4OTFmMWVjNDNmNjkyYmE0MDJkMTkyNGMzY2RiOTE2ZWI4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDEwLTExLTAyICBEYWkgTWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
b28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20gZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0
cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29u
c2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5kbGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5
U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3Rl
cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9J
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhE
ZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcEJh
c2VXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1i
ZXJJbnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0x
MS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBO
b3QgcmV2aWV3ZWQ6IHNpbXBsaWZ5IGluc3BlY3RvciBzdHlsZXMgdGVzdCB0byBtYWtlIGFsbCBi
b3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgx
YjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIuLmJlODBiMmVjYTVjYjU5ZjhkZDAxNDk0NjY1YzA3
OTA3MzE3NWE2Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI1Myw2ICsyNTMs
MTEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVw
KGRvdWJsZSogc3RlcCkgY29uc3QKIHsKKyAgICByZXR1cm4gZ2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKHN0ZXAsIDApOworfQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omdl
dEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyhkb3VibGUqIHN0ZXAsIHVuc2lnbmVk
KiBkZWNpbWFsUGxhY2VzKSBjb25zdAorewogICAgIEFTU0VSVChzdGVwKTsKICAgICBkb3VibGUg
ZGVmYXVsdFN0ZXAgPSBtX2lucHV0VHlwZS0+ZGVmYXVsdFN0ZXAoKTsKICAgICBkb3VibGUgc3Rl
cFNjYWxlRmFjdG9yID0gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpOwpAQCAtMjYxLDE0
ICsyNjYsMjQgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRv
dWJsZSogc3RlcCkgY29uc3QKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBn
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkgewog
ICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBp
ZiAoZGVjaW1hbFBsYWNlcykKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgcGFyc2VkOwot
ICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RlcFN0cmluZywgJnBhcnNlZCkg
fHwgcGFyc2VkIDw9IDAuMCkgewotICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNj
YWxlRmFjdG9yOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWRlY2ltYWxQbGFjZXMp
IHsKKyAgICAgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAm
cGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRT
dGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
V2l0aERlY2ltYWxQbGFjZXMoc3RlcFN0cmluZywgJnBhcnNlZCwgZGVjaW1hbFBsYWNlcykgfHwg
cGFyc2VkIDw9IDAuMCkgeworICAgICAgICAgICAgKnN0ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBT
Y2FsZUZhY3RvcjsKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIC8vIEZvciBkYXRlLCBtb250aCwg
d2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29tZSB0eXBl
cy4KICAgICBpZiAobV9pbnB1dFR5cGUtPnBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigp
KQpAQCAtMjg1LDcgKzMwMCw4IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZh
bHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5
U3RlcChkb3VibGUgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGRvdWJsZSBzdGVw
OwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpIHsKKyAgICB1bnNpZ25lZCBz
dGVwRGVjaW1hbFBsYWNlczsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1h
bFBsYWNlcygmc3RlcCwgJnN0ZXBEZWNpbWFsUGxhY2VzKSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzAwLDEzICszMTYsMTkg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0ZXAoZG91YmxlIGNvdW50LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKSB7
CisgICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IG1faW5wdXRUeXBlLT5hY2NlcHRhYmxlRXJy
b3Ioc3RlcCk7CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKSA8IC1h
Y2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFz
ZSgpOwotICAgIG5ld1ZhbHVlID0gYmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8gc3Rl
cCkgKiBzdGVwOwotICAgIGlmIChuZXdWYWx1ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpIHsK
KyAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgYmFzZSA9IG1faW5w
dXRUeXBlLT5zdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7Cisg
ICAgYmFzZURlY2ltYWxQbGFjZXMgPSBtaW4oYmFzZURlY2ltYWxQbGFjZXMsICh1bnNpZ25lZCkg
MTYpOworICAgIGlmIChuZXdWYWx1ZSA8IHBvdygoZG91YmxlKSAxMCwgKGRvdWJsZSkgMjEpKSB7
CisgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygoZG91YmxlKSAxMCwgKGRvdWJsZSkgbWF4KHN0
ZXBEZWNpbWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpOworICAgICAgICBuZXdWYWx1ZSA9
IHJvdW5kKChiYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gYmFzZSkgLyBzdGVwKSAqIHN0ZXApICog
c2NhbGUpIC8gc2NhbGU7CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSAtIG1faW5wdXRUeXBlLT5t
YXhpbXVtKCkgPiBhY2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4
IDFhMDQ5MGU3MDFhMWIxYjUyN2I4NzdmY2RkN2ZlZjQ1NDU3MzhiZDcuLjBhY2YyMWU3NWU4Zjcx
YmY3OTY0NjVjNDgxZmUxMTljNDVjMTdmMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAt
NjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyB0aGUgImFsbG93ZWQgdmFsdWUgc3Rl
cCIgZGVmaW5lZCBpbiB0aGUgSFRNTCBzcGVjIHRvIHRoZSBzcGVjaWZpZWQgZG91YmxlIHBvaW50
ZXIuCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBz
dGVwLiIKICAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29uc3Q7CisgICAg
Ym9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwV2l0aERlY2ltYWxQbGFjZXMoZG91YmxlKiwgdW5zaWdu
ZWQqKSBjb25zdDsKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZS4KICAgICBib29sIHN0ZXBNaXNt
YXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCBjODcwYzY5NDNl
NmFiY2UwODcyZDBmOWQ2ODc2NGY1ZGQxNmI1OGJhLi5lYTEwZmZmNGUxN2U0MjU2ZjFhOGU2YTBm
ZjQ4ZGEwMzY2NDlmNzI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjM3LDYgKzIzNywxMyBAQCBkb3Vi
bGUgSW5wdXRUeXBlOjpzdGVwQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2RvdWJs
ZSBJbnB1dFR5cGU6OnN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqIGRlY2ltYWxQ
bGFjZXMpIGNvbnN0Cit7CisgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAgIHN0ZXBCYXNlKCk7
CisgICAgcmV0dXJuIDA7Cit9CisKIGRvdWJsZSBJbnB1dFR5cGU6OmRlZmF1bHRTdGVwKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CkBA
IC0yNTcsNiArMjY0LDExIEBAIGJvb2wgSW5wdXRUeXBlOjpzY2FsZWRTdGVwVmFsZXVTaG91bGRC
ZUludGVnZXIoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorZG91YmxlIElucHV0VHlw
ZTo6YWNjZXB0YWJsZUVycm9yKGRvdWJsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwog
UmVuZGVyT2JqZWN0KiBJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0
ZU9iamVjdChlbGVtZW50KCksIHN0eWxlKTsKQEAgLTI2Nyw2ICsyNzksMTIgQEAgZG91YmxlIElu
cHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVl
KSBjb25zdAogICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6
OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNyYywgZG91Ymxl
IGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CisgICAgKmRl
Y2ltYWxQbGFjZXMgPSAwOworICAgIHJldHVybiBwYXJzZVRvRG91YmxlKHNyYywgZGVmYXVsdFZh
bHVlKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnBhcnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBT
dHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmgKaW5kZXggZjYwMTA1MTNmYmM2ZDA3NmQ1NTE1M2RiYjE3ZTFkNzk4NDRmNTE1
ZS4uNzhhYWI3YzgxYTRkYTY4M2IxNjZjNzkxZmNkNzk1YjE3MWI4Yzc0OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApA
QCAtOTAsMTAgKzkwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3Vi
bGUpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0Owog
ICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRTdGVwKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3Vi
bGUgc3RlcFNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBW
YWx1ZVNob3VsZEJlSW50ZWdlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVw
VmFsZXVTaG91bGRCZUludGVnZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRh
YmxlRXJyb3IoZG91YmxlKSBjb25zdDsKIAogICAgIC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25z
CiAKQEAgLTEwNCw2ICsxMDYsMTAgQEAgcHVibGljOgogICAgIC8vIHN1Y2NlZWRzOyBSZXR1cm5z
IGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRoaXMgZnVuY3Rpb24gY2FuCiAgICAgLy8gcmV0dXJu
IE5hTiBvciBJbmZpbml0eSBvbmx5IGlmIGRlZmF1bHRWYWx1ZSBpcyBOYU4gb3IgSW5maW5pdHku
CiAgICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUg
ZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcg
Zm9yIHRoZSB0eXBlIGFzIHBhcnNlVG9Eb3VibGUoKSBkb2VzLgorICAgIC8vIEluIGFkZGl0aW9u
LCBpdCBzdG9yZXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQK
KyAgICAvLyBpbnRvICpkZWNpbWFsUGxhY2VzLgorICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9E
b3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRW
YWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0OwogICAgIC8vIFBhcnNlcyB0aGUg
c3BlY2lmaWVkIHN0cmluZyBmb3IgdGhpcyBJbnB1dFR5cGUsIGFuZCByZXR1cm5zIHRydWUgaWYg
aXQKICAgICAvLyBpcyBzdWNjZXNzZnVsbHkgcGFyc2VkLiBBbiBpbnN0YW5jZSBwb2ludGVkIGJ5
IHRoZSBEYXRlQ29tcG9uZW50cyoKICAgICAvLyBwYXJhbWV0ZXIgd2lsbCBoYXZlIHBhcnNlZCB2
YWx1ZXMgYW5kIGJlIG1vZGlmaWVkIGV2ZW4gaWYgdGhlIHBhcnNpbmcKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5jcHAKaW5kZXggMjhmNTEwYzFiZjQ1YmMzZjM5NWE3MzY0NGE1NzBkYjk5ODU4N2U1NC4u
N2E0ZDUwNDczYjdiNGJjYTY1YTliMGMxOTA3YWU3ZDE1MzE3ZjU3YyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL051bWJlcklu
cHV0VHlwZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBAQCBib29sIE51bWJlcklucHV0VHlwZTo6c3Rl
cE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUsIGRvdWJsZSBzdGVwKSBjb25zdAogICAgIGRv
dWJsZSByZW1haW5kZXIgPSBmYWJzKGRvdWJsZVZhbHVlIC0gc3RlcCAqIHJvdW5kKGRvdWJsZVZh
bHVlIC8gc3RlcCkpOwogICAgIC8vIEFjY2VwdHMgZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBw
YXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVjaXNpb24KICAgICAvLyBjYW4ndCByZXByZXNl
bnQuCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IHN0ZXAgLyBwb3coMi4wLCBGTFRfTUFO
VF9ESUcpOwotICAgIHJldHVybiBhY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWlu
ZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3IpOworICAgIGRvdWJsZSBjb21wdXRlZEFjY2Vw
dGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcihzdGVwKTsKKyAgICByZXR1cm4gY29tcHV0ZWRB
Y2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKHN0ZXAgLSBjb21wdXRl
ZEFjY2VwdGFibGVFcnJvcik7CiB9CiAKIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNl
KCkgY29uc3QKQEAgLTE0MCw2ICsxNDAsMTEgQEAgZG91YmxlIE51bWJlcklucHV0VHlwZTo6c3Rl
cEJhc2UoKSBjb25zdAogICAgIHJldHVybiBwYXJzZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdl
dEF0dHJpYnV0ZShtaW5BdHRyKSwgZGVmYXVsdFN0ZXBCYXNlKCkpOwogfQogCitkb3VibGUgTnVt
YmVySW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKiBkZWNpbWFs
UGxhY2VzKSBjb25zdAoreworICAgIHJldHVybiBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFj
ZXMoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBkZWZhdWx0U3RlcEJhc2Uo
KSwgZGVjaW1hbFBsYWNlcyk7Cit9CisKIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OmRlZmF1bHRT
dGVwKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVtYmVyRGVmYXVsdFN0ZXA7CkBAIC0xNTksNiAr
MTY0LDE1IEBAIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3Ry
aW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvCiAgICAgcmV0dXJuIG51bWJlclZhbHVl
OwogfQogCitkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQ
bGFjZXMoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpk
ZWNpbWFsUGxhY2VzKSBjb25zdAoreworICAgIGRvdWJsZSBudW1iZXJWYWx1ZTsKKyAgICBpZiAo
IXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3JjLCAmbnVtYmVy
VmFsdWUsIGRlY2ltYWxQbGFjZXMpKQorICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworICAg
IEFTU0VSVChpc2Zpbml0ZShudW1iZXJWYWx1ZSkpOworICAgIHJldHVybiBudW1iZXJWYWx1ZTsK
K30KKwogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29u
c3QKIHsKICAgICBpZiAoIWlzZmluaXRlKHZhbHVlKSkKQEAgLTE2Niw0ICsxODAsMTAgQEAgU3Ry
aW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICBy
ZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSk7CiB9CiAKK2RvdWJsZSBOdW1iZXJJ
bnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcihkb3VibGUgc3RlcCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc3RlcCAvIHBvdygyLjAsIEZMVF9NQU5UX0RJRyk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oIGIvV2Vi
Q29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IDI2Mjk1NWU3ZDkxOTI0ZmQ1YjEzNGJj
NWU2NWY5MDIyZmFjYjg2MGEuLjFmMGI4ODE0YzcxOTMwMzhjMmZkZDI3ZDg4OTA2NTk4NjNlNGMw
YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysgYi9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAgLTUyLDEwICs1MiwxMyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3Rl
cE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3Vi
bGUgc3RlcEJhc2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNp
bWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFN0
ZXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkg
Y29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2Vz
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdW5zaWduZWQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRh
YmxlRXJyb3IoZG91YmxlKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDBjZTVlNGQ5NzMwYzE5
N2E3ZGViZGY2MGE1ZTYxY2NhYmU2YmY2NWUuLjEzMTIwYmY1M2Y5NWEwYTJjODQxMTk3ODcyZjYz
NmUyYzZjMDQxOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApA
QCAtOTYsNiArOTYsNzIgQEAgYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBT
dHJpbmcmIHN0cmluZywgZG91YmxlKiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgZG91YmxlICpyZXN1bHQsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKQorewor
ICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90
IGRvdEluZGV4ID0gc3RyaW5nLmZpbmQoJy4nKTsKKyAgICBzaXplX3QgZUluZGV4ID0gc3RyaW5n
LmZpbmQoJ2UnKTsKKyAgICBpZiAoZUluZGV4ID09IG5vdEZvdW5kKSAKKyAgICAgICAgZUluZGV4
ID0gc3RyaW5nLmZpbmQoJ0UnKTsKKworICAgIHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxhY2VzID0g
MDsKKyAgICBpZiAoZG90SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGVJbmRleCA9
PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gc3RyaW5nLmxlbmd0
aCgpIC0gZG90SW5kZXggLSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBiYXNlRGVjaW1h
bFBsYWNlcyA9IGVJbmRleCAtIGRvdEluZGV4IC0gMTsKKyAgICB9CisKKyAgICBpbnQgZXhwb25l
bnQgPSAwOworICAgIGlmIChlSW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgdW5zaWduZWQg
Y3Vyc29yID0gZUluZGV4ICsgMSwgY3Vyc29yU2F2ZWQ7CisgICAgICAgIGludCBkaWdpdCwgZXhw
b25lbnRTaWduOworICAgICAgICBpbnQzMl90IGV4cG9uZW50MzI7CisgICAgICAgIHNpemVfdCBs
ZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICAgICAgZXhwb25lbnRTaWduID0gMDsKKyAg
ICAgICAgc3dpdGNoIChkaWdpdCA9IHN0cmluZ1tjdXJzb3JdKSB7CisgICAgICAgIGNhc2UgJy0n
OgorICAgICAgICAgICAgZXhwb25lbnRTaWduID0gMTsKKyAgICAgICAgY2FzZSAnKyc6CisgICAg
ICAgICAgICBkaWdpdCA9IHN0cmluZ1srK2N1cnNvcl07CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGRpZ2l0ID49ICcwJyAmJiBkaWdpdCA8PSAnOScpIHsKKyAgICAgICAgICAgIHdoaWxlIChjdXJz
b3IgPCBsZW5ndGggJiYgZGlnaXQgPT0gJzAnKQorICAgICAgICAgICAgICAgIGRpZ2l0ID0gc3Ry
aW5nWysrY3Vyc29yXTsKKyAgICAgICAgICAgIGlmIChkaWdpdCA+ICcwJyAmJiBkaWdpdCA8PSAn
OScpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudDMyID0gZGlnaXQgLSAnMCc7CisgICAgICAg
ICAgICAgICAgY3Vyc29yU2F2ZWQgPSBjdXJzb3I7CisgICAgICAgICAgICAgICAgd2hpbGUgKGN1
cnNvciA8IGxlbmd0aCAmJiAoZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdKSA+PSAnMCcgJiYgZGln
aXQgPD0gJzknKQorICAgICAgICAgICAgICAgICAgICBleHBvbmVudDMyID0gKDEwICogZXhwb25l
bnQzMikgKyBkaWdpdCAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoY3Vyc29yIC0gY3Vyc29y
U2F2ZWQgPiA4IHx8IGV4cG9uZW50MzIgPiAxOTk5OSkKKyAgICAgICAgICAgICAgICAgICAgLyog
QXZvaWQgY29uZnVzaW9uIGZyb20gZXhwb25lbnRzCisgICAgICAgICAgICAgICAgICAgICAqIHNv
IGxhcmdlIHRoYXQgZSBtaWdodCBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMTk5OTk7IC8qIHNhZmUgZm9yIDE2IGJpdCBp
bnRzICovCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBleHBvbmVu
dCA9IChpbnQpIGV4cG9uZW50MzI7CisgICAgICAgICAgICAgICAgaWYgKGV4cG9uZW50U2lnbikK
KyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQ7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IDA7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBpbnQgaW50RGVjaW1hbFBsYWNlcyA9IGJhc2VEZWNpbWFsUGxhY2VzIC0gZXhwb25lbnQ7
CisgICAgaWYgKGludERlY2ltYWxQbGFjZXMgPCAwKQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9
IDA7CisgICAgZWxzZSBpZiAoaW50RGVjaW1hbFBsYWNlcyA+IDE5OTk5KQorICAgICAgICAqZGVj
aW1hbFBsYWNlcyA9IDE5OTk5OworICAgIGVsc2UKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAo
dW5zaWduZWQpIGludERlY2ltYWxQbGFjZXM7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8g
aHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMt
Zm9yLXBhcnNpbmctaW50ZWdlcnMKIGJvb2wgcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcm
IGlucHV0LCBpbnQmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmggYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
aAppbmRleCA0ODM5MTM4M2I1ZGIwOWEzYjQ0YzUxODdiNjgzYWYxNDFjMDY5MmUwLi40ZThlNThm
N2RhNmI2NTgwYTc0YmQwODM2MDUxMzExZDc4NDk0NjNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuaApAQCAtNDQsNiArNDQsNyBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVt
YmVyVHlwZShkb3VibGUpOwogLy8gTGVhZGluZyBvciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJhY3Rl
cnMgY2F1c2UgZmFpbHVyZSwgYXMgZG9lcyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZy4KIC8vIFRo
ZSBkb3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBi
ZSBwYXJzZWQgd2l0aG91dCBnZXR0aW5nIHRoZSByZXN1bHQuCiBib29sIHBhcnNlVG9Eb3VibGVG
b3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOworYm9vbCBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSosIHVu
c2lnbmVkKik7CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVn
ZXIoY29uc3QgU3RyaW5nJiwgaW50Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72906</attachid>
            <date>2010-11-03 23:04:16 -0700</date>
            <delta_ts>2010-11-03 23:25:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101104150414.patch</filename>
            <type>text/plain</type>
            <size>18119</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjQ0MTdlMzNhOTU0MjMzOTk1OTc2YjcxNjE5ZWY1OWFmMzZjN2FmLi5mNTg4YTg2
ZTE3YmU3ZWQ0NDExZjlhOTI5NzhlNThhYTdjMDQ0OGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDIgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzaW1wbGlmeSBz
dHlsZXMgdGVzdCB0byBtYWtlIGFsbCBib3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CmluZGV4
IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAuLjgwYzY2MGI4NTE3MDJk
Mjc1ZWUyOWE2NjlhZmExMzZmYjhmMzAzMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50eHQKQEAgLTE2NSw2
ICsxNjUsMTAgQEAgUEFTUyBzdGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgogUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKIFBBU1MgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTU7
IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZSBpcyAiMCIKK1JvdW5kaW5n
CitQQVNTIGlucHV0Lm1pbj0iNCI7IHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMikgaXMg
IjUuMDE1IgorUEFTUyBpbnB1dC5taW49IjQiOyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIs
IDExKSBpcyAiNS4wNiIKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAxMikgaXMgIjUuMDY1IgogCiBSYW5nZSB0eXBlCiBmdW5jdGlvbiBhcmd1bWVudHMg
YXJlIChtaW4sIG1heCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCmluZGV4IGNkNGEwN2MyZDA1MGE3ZjMwODc5NWFiMjcwZjZlOGVmMjIxYmRjZDcuLjEz
M2Q3NGJkM2VlOTdhOGFiNDY4ZDI1ODJlNzY4OTAxODdjYmUyZDkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3Rl
cGRvd24uanMKQEAgLTIyMSw2ICsyMjEsMTAgQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEi
LCAiIiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVw
VXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5w
dXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVw
KCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1
dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1
KScsICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlu
cHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5n
Jyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIi
LCAyKScsICciNS4wMTUiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAw
NSIsICIwLjAwNSIsICIiLCAxMSknLCAnIjUuMDYiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0
Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1
ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmI0OTk0ZDg0MzAxMjY3MDlhOGUxNTRmOGFj
YjBkMWU3Nzc1ZDhhLi5hYjZlNzI4OTFmMWVjNDNmNjkyYmE0MDJkMTkyNGMzY2RiOTE2ZWI4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDEwLTExLTAyICBEYWkgTWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
b28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20gZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0
cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29u
c2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5kbGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5
U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3Rl
cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9J
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhE
ZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcEJh
c2VXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1i
ZXJJbnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0x
MS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBO
b3QgcmV2aWV3ZWQ6IHNpbXBsaWZ5IGluc3BlY3RvciBzdHlsZXMgdGVzdCB0byBtYWtlIGFsbCBi
b3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgx
YjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIuLjM2YjNiMTAyN2UzMDRhNTI4MzBlM2E1N2QxMmZk
MzYxNzQ2YzRmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI1Myw2ICsyNTMs
MTEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVw
KGRvdWJsZSogc3RlcCkgY29uc3QKIHsKKyAgICByZXR1cm4gZ2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKHN0ZXAsIDApOworfQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omdl
dEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyhkb3VibGUqIHN0ZXAsIHVuc2lnbmVk
KiBkZWNpbWFsUGxhY2VzKSBjb25zdAorewogICAgIEFTU0VSVChzdGVwKTsKICAgICBkb3VibGUg
ZGVmYXVsdFN0ZXAgPSBtX2lucHV0VHlwZS0+ZGVmYXVsdFN0ZXAoKTsKICAgICBkb3VibGUgc3Rl
cFNjYWxlRmFjdG9yID0gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpOwpAQCAtMjYxLDE0
ICsyNjYsMjQgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRv
dWJsZSogc3RlcCkgY29uc3QKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBn
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkgewog
ICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBp
ZiAoZGVjaW1hbFBsYWNlcykKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgcGFyc2VkOwot
ICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RlcFN0cmluZywgJnBhcnNlZCkg
fHwgcGFyc2VkIDw9IDAuMCkgewotICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNj
YWxlRmFjdG9yOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWRlY2ltYWxQbGFjZXMp
IHsKKyAgICAgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAm
cGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRT
dGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
V2l0aERlY2ltYWxQbGFjZXMoc3RlcFN0cmluZywgJnBhcnNlZCwgZGVjaW1hbFBsYWNlcykgfHwg
cGFyc2VkIDw9IDAuMCkgeworICAgICAgICAgICAgKnN0ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBT
Y2FsZUZhY3RvcjsKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIC8vIEZvciBkYXRlLCBtb250aCwg
d2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29tZSB0eXBl
cy4KICAgICBpZiAobV9pbnB1dFR5cGUtPnBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigp
KQpAQCAtMjg1LDcgKzMwMCw4IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZh
bHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5
U3RlcChkb3VibGUgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGRvdWJsZSBzdGVw
OwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpIHsKKyAgICB1bnNpZ25lZCBz
dGVwRGVjaW1hbFBsYWNlczsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1h
bFBsYWNlcygmc3RlcCwgJnN0ZXBEZWNpbWFsUGxhY2VzKSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzAwLDE2ICszMTYsMjYg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0ZXAoZG91YmxlIGNvdW50LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKSB7
CisgICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IG1faW5wdXRUeXBlLT5hY2NlcHRhYmxlRXJy
b3Ioc3RlcCk7CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKSA8IC1h
Y2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFz
ZSgpOwotICAgIG5ld1ZhbHVlID0gYmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8gc3Rl
cCkgKiBzdGVwOwotICAgIGlmIChuZXdWYWx1ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpIHsK
KyAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKQorICAgICAgICBuZXdW
YWx1ZSA9IG1faW5wdXRUeXBlLT5taW5pbXVtKCk7CisgICAgdW5zaWduZWQgYmFzZURlY2ltYWxQ
bGFjZXM7CisgICAgZG91YmxlIGJhc2UgPSBtX2lucHV0VHlwZS0+c3RlcEJhc2VXaXRoRGVjaW1h
bFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMpOworICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gbWlu
KGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOworICAgIGlmIChuZXdWYWx1ZSA8IHBvdygxMC4wLCAy
MS4wKSkgeworICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihtYXgoc3RlcERlY2ltYWxQbGFjZXMsIGJhc2VEZWNpbWFsUGxhY2VzKSkpOworICAgICAg
ICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gYmFzZSkgLyBzdGVw
KSAqIHN0ZXApICogc2NhbGUpIC8gc2NhbGU7CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSAtIG1f
aW5wdXRUeXBlLT5tYXhpbXVtKCkgPiBhY2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobmV3VmFs
dWUgPiBtX2lucHV0VHlwZS0+bWF4aW11bSgpKQorICAgICAgICBuZXdWYWx1ZSA9IG1faW5wdXRU
eXBlLT5tYXhpbXVtKCk7CiAgICAgc2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZWMpOwogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAxYTA0OTBlNzAxYTFiMWI1MjdiODc3ZmNkZDdm
ZWY0NTQ1NzM4YmQ3Li4wYWNmMjFlNzVlOGY3MWJmNzk2NDY1YzQ4MWZlMTE5YzQ1YzE3ZjBmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIC8v
IFNldHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0
byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2ludGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
dGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3RlcC4iCiAgICAgYm9vbCBnZXRBbGxvd2VkVmFs
dWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhE
ZWNpbWFsUGxhY2VzKGRvdWJsZSosIHVuc2lnbmVkKikgY29uc3Q7CiAgICAgLy8gRm9yIFZhbGlk
aXR5U3RhdGUuCiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKaW5kZXggYzg3MGM2OTQzZTZhYmNlMDg3MmQwZjlkNjg3NjRmNWRkMTZiNThi
YS4uODZlZWEzODIzZTgyYTE4M2FmYTNjN2YyNjljODgzMGM0OWM0ZTcwYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKQEAgLTIzNyw2ICsyMzcsMTQgQEAgZG91YmxlIElucHV0VHlwZTo6c3RlcEJhc2UoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCisvLyBkZWNpbWFsUGxhY2VzIG11c3QgYmUgbm9uLTAuLgor
ZG91YmxlIElucHV0VHlwZTo6c3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCogZGVj
aW1hbFBsYWNlcykgY29uc3QKK3sKKyAgICBpZiAoZGVjaW1hbFBsYWNlcykKKyAgICAgICAgKmRl
Y2ltYWxQbGFjZXMgPSAwOworICAgIHJldHVybiBzdGVwQmFzZSgpOworfQorCiBkb3VibGUgSW5w
dXRUeXBlOjpkZWZhdWx0U3RlcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpOwpAQCAtMjU3LDYgKzI2NSwxMSBAQCBib29sIElucHV0VHlw
ZTo6c2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRlZ2VyKCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcihkb3VibGUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIFJlbmRlck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoZWxlbWVudCgpLCBzdHlsZSk7CkBAIC0y
NjcsNiArMjgwLDEzIEBAIGRvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKICAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OwogfQogCitkb3VibGUgSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMo
Y29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFs
UGxhY2VzKSBjb25zdAoreworICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAgICAqZGVjaW1h
bFBsYWNlcyA9IDA7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoc3JjLCBkZWZhdWx0VmFsdWUp
OworfQorCiBib29sIElucHV0VHlwZTo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
ZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaAppbmRleCBmNjAxMDUxM2ZiYzZkMDc2ZDU1MTUzZGJiMTdlMWQ3OTg0NGY1MTVlLi43
OGFhYjdjODFhNGRhNjgzYjE2NmM3OTFmY2Q3OTViMTcxYjhjNzQ5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC05
MCwxMCArOTAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkg
Y29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgZGVmYXVsdFN0ZXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBz
dGVwU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VkU3RlcFZhbHVl
U2hvdWxkQmVJbnRlZ2VyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNjYWxlZFN0ZXBWYWxl
dVNob3VsZEJlSW50ZWdlcigpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIGFjY2VwdGFibGVF
cnJvcihkb3VibGUpIGNvbnN0OwogCiAgICAgLy8gTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIApA
QCAtMTA0LDYgKzEwNiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gc3VjY2VlZHM7IFJldHVybnMgZGVm
YXVsdFZhbHVlIG90aGVyd2lzZS4gVGhpcyBmdW5jdGlvbiBjYW4KICAgICAvLyByZXR1cm4gTmFO
IG9yIEluZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZhbHVlIGlzIE5hTiBvciBJbmZpbml0eS4KICAg
ICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZh
dWx0VmFsdWUpIGNvbnN0OworICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3Ig
dGhlIHR5cGUgYXMgcGFyc2VUb0RvdWJsZSgpIGRvZXMuCisgICAgLy8gSW4gYWRkaXRpb24sIGl0
IHN0b3JlcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludAorICAg
IC8vIGludG8gKmRlY2ltYWxQbGFjZXMuCisgICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJs
ZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVl
LCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3Q7CiAgICAgLy8gUGFyc2VzIHRoZSBzcGVj
aWZpZWQgc3RyaW5nIGZvciB0aGlzIElucHV0VHlwZSwgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdAog
ICAgIC8vIGlzIHN1Y2Nlc3NmdWxseSBwYXJzZWQuIEFuIGluc3RhbmNlIHBvaW50ZWQgYnkgdGhl
IERhdGVDb21wb25lbnRzKgogICAgIC8vIHBhcmFtZXRlciB3aWxsIGhhdmUgcGFyc2VkIHZhbHVl
cyBhbmQgYmUgbW9kaWZpZWQgZXZlbiBpZiB0aGUgcGFyc2luZwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBl
LmNwcAppbmRleCAyOGY1MTBjMWJmNDViYzNmMzk1YTczNjQ0YTU3MGRiOTk4NTg3ZTU0Li43YTRk
NTA0NzNiN2I0YmNhNjVhOWIwYzE5MDdhZTdkMTUzMTdmNTdjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRU
eXBlLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIGJvb2wgTnVtYmVySW5wdXRUeXBlOjpzdGVwTWlz
bWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSwgZG91YmxlIHN0ZXApIGNvbnN0CiAgICAgZG91Ymxl
IHJlbWFpbmRlciA9IGZhYnMoZG91YmxlVmFsdWUgLSBzdGVwICogcm91bmQoZG91YmxlVmFsdWUg
LyBzdGVwKSk7CiAgICAgLy8gQWNjZXB0cyBlcnJvcyBpbiBsb3dlciBmcmFjdGlvbmFsIHBhcnQg
d2hpY2ggSUVFRSA3NTQgc2luZ2xlLXByZWNpc2lvbgogICAgIC8vIGNhbid0IHJlcHJlc2VudC4K
LSAgICBkb3VibGUgYWNjZXB0YWJsZUVycm9yID0gc3RlcCAvIHBvdygyLjAsIEZMVF9NQU5UX0RJ
Ryk7Ci0gICAgcmV0dXJuIGFjY2VwdGFibGVFcnJvciA8IHJlbWFpbmRlciAmJiByZW1haW5kZXIg
PCAoc3RlcCAtIGFjY2VwdGFibGVFcnJvcik7CisgICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJs
ZUVycm9yID0gYWNjZXB0YWJsZUVycm9yKHN0ZXApOworICAgIHJldHVybiBjb21wdXRlZEFjY2Vw
dGFibGVFcnJvciA8IHJlbWFpbmRlciAmJiByZW1haW5kZXIgPCAoc3RlcCAtIGNvbXB1dGVkQWNj
ZXB0YWJsZUVycm9yKTsKIH0KIAogZG91YmxlIE51bWJlcklucHV0VHlwZTo6c3RlcEJhc2UoKSBj
b25zdApAQCAtMTQwLDYgKzE0MCwxMSBAQCBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpzdGVwQmFz
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0
cmlidXRlKG1pbkF0dHIpLCBkZWZhdWx0U3RlcEJhc2UoKSk7CiB9CiAKK2RvdWJsZSBOdW1iZXJJ
bnB1dFR5cGU6OnN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqIGRlY2ltYWxQbGFj
ZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGRlZmF1bHRTdGVwQmFzZSgpLCBk
ZWNpbWFsUGxhY2VzKTsKK30KKwogZG91YmxlIE51bWJlcklucHV0VHlwZTo6ZGVmYXVsdFN0ZXAo
KSBjb25zdAogewogICAgIHJldHVybiBudW1iZXJEZWZhdWx0U3RlcDsKQEAgLTE1OSw2ICsxNjQs
MTUgQEAgZG91YmxlIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcm
IHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY28KICAgICByZXR1cm4gbnVtYmVyVmFsdWU7CiB9
CiAKK2RvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNl
cyhjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2lt
YWxQbGFjZXMpIGNvbnN0Cit7CisgICAgZG91YmxlIG51bWJlclZhbHVlOworICAgIGlmICghcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzcmMsICZudW1iZXJWYWx1
ZSwgZGVjaW1hbFBsYWNlcykpCisgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CisgICAgQVNT
RVJUKGlzZmluaXRlKG51bWJlclZhbHVlKSk7CisgICAgcmV0dXJuIG51bWJlclZhbHVlOworfQor
CiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAog
ewogICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQpAQCAtMTY2LDQgKzE4MCwxMCBAQCBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAogICAgIHJldHVy
biBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVlKTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0
VHlwZTo6YWNjZXB0YWJsZUVycm9yKGRvdWJsZSBzdGVwKSBjb25zdAoreworICAgIHJldHVybiBz
dGVwIC8gcG93KDIuMCwgRkxUX01BTlRfRElHKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggYi9XZWJDb3Jl
L2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKaW5kZXggMjYyOTU1ZTdkOTE5MjRmZDViMTM0YmM1ZTY1
ZjkwMjJmYWNiODYwYS4uMWYwYjg4MTRjNzE5MzAzOGMyZmRkMjdkODg5MDY1OTg2M2U0YzBjMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUv
aHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtNTIsMTAgKzUyLDEzIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlz
bWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBz
dGVwQmFzZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQ
bGFjZXModW5zaWduZWQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0U3RlcCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBTY2FsZUZhY3RvcigpIGNvbnN0OwogICAg
IHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29u
c3QgU3RyaW5nJiwgZG91YmxlLCB1bnNpZ25lZCopIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5n
IHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIGFjY2VwdGFibGVF
cnJvcihkb3VibGUpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggMGNlNWU0ZDk3MzBjMTk3YTdk
ZWJkZjYwYTVlNjFjY2FiZTZiZjY1ZS4uOWRhY2JlYTNlOTdmMjU2YWU2MTc3NDIxYjdkYzM5OTk1
ZDZlNDllYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC05
Niw2ICs5Niw3NiBAQCBib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBkb3VibGUqIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBw
YXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBkb3VibGUgKnJlc3VsdCwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpCit7CisgICAg
aWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdHJpbmcsIHJlc3VsdCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAgICAqZGVjaW1h
bFBsYWNlcyA9IDA7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVf
dCBkb3RJbmRleCA9IHN0cmluZy5maW5kKCcuJyk7CisgICAgc2l6ZV90IGVJbmRleCA9IHN0cmlu
Zy5maW5kKCdlJyk7CisgICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkgCisgICAgICAgIGVJbmRl
eCA9IHN0cmluZy5maW5kKCdFJyk7CisKKyAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlcyA9
IDA7CisgICAgaWYgKGRvdEluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChlSW5kZXgg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IHN0cmluZy5sZW5n
dGgoKSAtIGRvdEluZGV4IC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmFzZURlY2lt
YWxQbGFjZXMgPSBlSW5kZXggLSBkb3RJbmRleCAtIDE7CisgICAgfQorCisgICAgaW50IGV4cG9u
ZW50ID0gMDsKKyAgICBpZiAoZUluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHVuc2lnbmVk
IGN1cnNvciA9IGVJbmRleCArIDEsIGN1cnNvclNhdmVkOworICAgICAgICBpbnQgZGlnaXQsIGV4
cG9uZW50U2lnbjsKKyAgICAgICAgaW50MzJfdCBleHBvbmVudDMyOworICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworCisgICAgICAgIGV4cG9uZW50U2lnbiA9IDA7Cisg
ICAgICAgIHN3aXRjaCAoZGlnaXQgPSBzdHJpbmdbY3Vyc29yXSkgeworICAgICAgICBjYXNlICct
JzoKKyAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDE7CisgICAgICAgIGNhc2UgJysnOgorICAg
ICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdOworICAgICAgICB9CisgICAgICAgIGlm
IChkaWdpdCA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKSB7CisgICAgICAgICAgICB3aGlsZSAoY3Vy
c29yIDwgbGVuZ3RoICYmIGRpZ2l0ID09ICcwJykKKyAgICAgICAgICAgICAgICBkaWdpdCA9IHN0
cmluZ1srK2N1cnNvcl07CisgICAgICAgICAgICBpZiAoZGlnaXQgPiAnMCcgJiYgZGlnaXQgPD0g
JzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQzMiA9IGRpZ2l0IC0gJzAnOworICAgICAg
ICAgICAgICAgIGN1cnNvclNhdmVkID0gY3Vyc29yOworICAgICAgICAgICAgICAgIHdoaWxlIChj
dXJzb3IgPCBsZW5ndGggJiYgKGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXSkgPj0gJzAnICYmIGRp
Z2l0IDw9ICc5JykKKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQzMiA9ICgxMCAqIGV4cG9u
ZW50MzIpICsgZGlnaXQgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKGN1cnNvciAtIGN1cnNv
clNhdmVkID4gOCB8fCBleHBvbmVudDMyID4gMTk5OTkpCisgICAgICAgICAgICAgICAgICAgIC8q
IEF2b2lkIGNvbmZ1c2lvbiBmcm9tIGV4cG9uZW50cworICAgICAgICAgICAgICAgICAgICAgKiBz
byBsYXJnZSB0aGF0IGUgbWlnaHQgb3ZlcmZsb3cuCisgICAgICAgICAgICAgICAgICAgICAqLwor
ICAgICAgICAgICAgICAgICAgICBleHBvbmVudCA9IDE5OTk5OyAvKiBzYWZlIGZvciAxNiBiaXQg
aW50cyAqLworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZXhwb25l
bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4cG9uZW50MzIpOworICAgICAgICAgICAgICAgIGlmIChl
eHBvbmVudFNpZ24pCisgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50Owor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAg
ICB9CisgICAgfQorCisgICAgaW50IGludERlY2ltYWxQbGFjZXMgPSBiYXNlRGVjaW1hbFBsYWNl
cyAtIGV4cG9uZW50OworICAgIGlmIChpbnREZWNpbWFsUGxhY2VzIDwgMCkKKyAgICAgICAgKmRl
Y2ltYWxQbGFjZXMgPSAwOworICAgIGVsc2UgaWYgKGludERlY2ltYWxQbGFjZXMgPiAxOTk5OSkK
KyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAxOTk5OTsKKyAgICBlbHNlCisgICAgICAgICpkZWNp
bWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludERlY2ltYWxQbGFjZXMpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNl
SFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgaW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXggNDgzOTEzODNiNWRiMDlhM2I0NGM1MTg3
YjY4M2FmMTQxYzA2OTJlMC4uNGU4ZTU4ZjdkYTZiNjU4MGE3NGJkMDgzNjA1MTMxMWQ3ODQ5NDYz
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysr
IGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoZG91YmxlKTsKIC8vIExlYWRpbmcgb3Ig
dHJhaWxpbmcgaWxsZWdhbCBjaGFyYWN0ZXJzIGNhdXNlIGZhaWx1cmUsIGFzIGRvZXMgcGFzc2lu
ZyBhbiBlbXB0eSBzdHJpbmcuCiAvLyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAgdG8g
Y2hlY2sgaWYgdGhlIHN0cmluZyBjYW4gYmUgcGFyc2VkIHdpdGhvdXQgZ2V0dGluZyB0aGUgcmVz
dWx0LgogYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3Vi
bGUqKTsKK2Jvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhj
b25zdCBTdHJpbmcmLCBkb3VibGUqLCB1bnNpZ25lZCopOwogCiAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRl
Z2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYsIGludCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72908</attachid>
            <date>2010-11-03 23:24:58 -0700</date>
            <delta_ts>2010-11-08 18:52:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101104152456.patch</filename>
            <type>text/plain</type>
            <size>18085</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjQ0MTdlMzNhOTU0MjMzOTk1OTc2YjcxNjE5ZWY1OWFmMzZjN2FmLi5mNTg4YTg2
ZTE3YmU3ZWQ0NDExZjlhOTI5NzhlNThhYTdjMDQ0OGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDIgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzaW1wbGlmeSBz
dHlsZXMgdGVzdCB0byBtYWtlIGFsbCBib3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CmluZGV4
IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAuLjgwYzY2MGI4NTE3MDJk
Mjc1ZWUyOWE2NjlhZmExMzZmYjhmMzAzMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50eHQKQEAgLTE2NSw2
ICsxNjUsMTAgQEAgUEFTUyBzdGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgogUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKIFBBU1MgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTU7
IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZSBpcyAiMCIKK1JvdW5kaW5n
CitQQVNTIGlucHV0Lm1pbj0iNCI7IHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMikgaXMg
IjUuMDE1IgorUEFTUyBpbnB1dC5taW49IjQiOyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIs
IDExKSBpcyAiNS4wNiIKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAxMikgaXMgIjUuMDY1IgogCiBSYW5nZSB0eXBlCiBmdW5jdGlvbiBhcmd1bWVudHMg
YXJlIChtaW4sIG1heCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCmluZGV4IGNkNGEwN2MyZDA1MGE3ZjMwODc5NWFiMjcwZjZlOGVmMjIxYmRjZDcuLjEz
M2Q3NGJkM2VlOTdhOGFiNDY4ZDI1ODJlNzY4OTAxODdjYmUyZDkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3Rl
cGRvd24uanMKQEAgLTIyMSw2ICsyMjEsMTAgQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEi
LCAiIiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVw
VXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5w
dXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVw
KCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1
dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1
KScsICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlu
cHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5n
Jyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIi
LCAyKScsICciNS4wMTUiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAw
NSIsICIwLjAwNSIsICIiLCAxMSknLCAnIjUuMDYiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0
Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1
ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmI0OTk0ZDg0MzAxMjY3MDlhOGUxNTRmOGFj
YjBkMWU3Nzc1ZDhhLi5hYjZlNzI4OTFmMWVjNDNmNjkyYmE0MDJkMTkyNGMzY2RiOTE2ZWI4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDEwLTExLTAyICBEYWkgTWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
b28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20gZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0
cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29u
c2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5kbGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5
U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3Rl
cCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9J
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhE
ZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YWNjZXB0YWJsZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNp
bWFsUGxhY2VzKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcEJh
c2VXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6
OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOdW1i
ZXJJbnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcik6CisgICAgICAgICogaHRtbC9OdW1iZXJJbnB1
dFR5cGUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFj
ZXMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0x
MS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBO
b3QgcmV2aWV3ZWQ6IHNpbXBsaWZ5IGluc3BlY3RvciBzdHlsZXMgdGVzdCB0byBtYWtlIGFsbCBi
b3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgx
YjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIuLjM2YjNiMTAyN2UzMDRhNTI4MzBlM2E1N2QxMmZk
MzYxNzQ2YzRmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTI1Myw2ICsyNTMs
MTEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVw
KGRvdWJsZSogc3RlcCkgY29uc3QKIHsKKyAgICByZXR1cm4gZ2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKHN0ZXAsIDApOworfQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omdl
dEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyhkb3VibGUqIHN0ZXAsIHVuc2lnbmVk
KiBkZWNpbWFsUGxhY2VzKSBjb25zdAorewogICAgIEFTU0VSVChzdGVwKTsKICAgICBkb3VibGUg
ZGVmYXVsdFN0ZXAgPSBtX2lucHV0VHlwZS0+ZGVmYXVsdFN0ZXAoKTsKICAgICBkb3VibGUgc3Rl
cFNjYWxlRmFjdG9yID0gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpOwpAQCAtMjYxLDE0
ICsyNjYsMjQgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRv
dWJsZSogc3RlcCkgY29uc3QKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBn
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkgewog
ICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBp
ZiAoZGVjaW1hbFBsYWNlcykKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkb3VibGUgcGFyc2VkOwot
ICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RlcFN0cmluZywgJnBhcnNlZCkg
fHwgcGFyc2VkIDw9IDAuMCkgewotICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNj
YWxlRmFjdG9yOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWRlY2ltYWxQbGFjZXMp
IHsKKyAgICAgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAm
cGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRT
dGVwICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBl
V2l0aERlY2ltYWxQbGFjZXMoc3RlcFN0cmluZywgJnBhcnNlZCwgZGVjaW1hbFBsYWNlcykgfHwg
cGFyc2VkIDw9IDAuMCkgeworICAgICAgICAgICAgKnN0ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBT
Y2FsZUZhY3RvcjsKKyAgICAgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIC8vIEZvciBkYXRlLCBtb250aCwg
d2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91bGQgYmUgYW4gaW50ZWdlciBmb3Igc29tZSB0eXBl
cy4KICAgICBpZiAobV9pbnB1dFR5cGUtPnBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigp
KQpAQCAtMjg1LDcgKzMwMCw4IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZh
bHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5
U3RlcChkb3VibGUgY291bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGRvdWJsZSBzdGVw
OwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpIHsKKyAgICB1bnNpZ25lZCBz
dGVwRGVjaW1hbFBsYWNlczsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1h
bFBsYWNlcygmc3RlcCwgJnN0ZXBEZWNpbWFsUGxhY2VzKSkgewogICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzAwLDE2ICszMTYsMjYg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0ZXAoZG91YmxlIGNvdW50LCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKSB7
CisgICAgZG91YmxlIGFjY2VwdGFibGVFcnJvciA9IG1faW5wdXRUeXBlLT5hY2NlcHRhYmxlRXJy
b3Ioc3RlcCk7CisgICAgaWYgKG5ld1ZhbHVlIC0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKSA8IC1h
Y2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFz
ZSgpOwotICAgIG5ld1ZhbHVlID0gYmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8gc3Rl
cCkgKiBzdGVwOwotICAgIGlmIChuZXdWYWx1ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpIHsK
KyAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKQorICAgICAgICBuZXdW
YWx1ZSA9IG1faW5wdXRUeXBlLT5taW5pbXVtKCk7CisgICAgdW5zaWduZWQgYmFzZURlY2ltYWxQ
bGFjZXM7CisgICAgZG91YmxlIGJhc2UgPSBtX2lucHV0VHlwZS0+c3RlcEJhc2VXaXRoRGVjaW1h
bFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMpOworICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gbWlu
KGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOworICAgIGlmIChuZXdWYWx1ZSA8IHBvdygxMC4wLCAy
MS4wKSkgeworICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihtYXgoc3RlcERlY2ltYWxQbGFjZXMsIGJhc2VEZWNpbWFsUGxhY2VzKSkpOworICAgICAg
ICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gYmFzZSkgLyBzdGVw
KSAqIHN0ZXApICogc2NhbGUpIC8gc2NhbGU7CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSAtIG1f
aW5wdXRUeXBlLT5tYXhpbXVtKCkgPiBhY2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobmV3VmFs
dWUgPiBtX2lucHV0VHlwZS0+bWF4aW11bSgpKQorICAgICAgICBuZXdWYWx1ZSA9IG1faW5wdXRU
eXBlLT5tYXhpbXVtKCk7CiAgICAgc2V0VmFsdWVBc051bWJlcihuZXdWYWx1ZSwgZWMpOwogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAxYTA0OTBlNzAxYTFiMWI1MjdiODc3ZmNkZDdm
ZWY0NTQ1NzM4YmQ3Li4wYWNmMjFlNzVlOGY3MWJmNzk2NDY1YzQ4MWZlMTE5YzQ1YzE3ZjBmIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIC8v
IFNldHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0
byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2ludGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYg
dGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3RlcC4iCiAgICAgYm9vbCBnZXRBbGxvd2VkVmFs
dWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhE
ZWNpbWFsUGxhY2VzKGRvdWJsZSosIHVuc2lnbmVkKikgY29uc3Q7CiAgICAgLy8gRm9yIFZhbGlk
aXR5U3RhdGUuCiAgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKaW5kZXggYzg3MGM2OTQzZTZhYmNlMDg3MmQwZjlkNjg3NjRmNWRkMTZiNThi
YS4uYzBjYzM0Mjc5MGFjOTFlZTUyZTUyN2IzNWE4YjNjMThkZjliZjhkNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKQEAgLTIzNyw2ICsyMzcsMTMgQEAgZG91YmxlIElucHV0VHlwZTo6c3RlcEJhc2UoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCitkb3VibGUgSW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNp
bWFsUGxhY2VzKHVuc2lnbmVkKiBkZWNpbWFsUGxhY2VzKSBjb25zdAoreworICAgIGlmIChkZWNp
bWFsUGxhY2VzKQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7CisgICAgcmV0dXJuIHN0ZXBC
YXNlKCk7Cit9CisKIGRvdWJsZSBJbnB1dFR5cGU6OmRlZmF1bHRTdGVwKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CkBAIC0yNTcsNiAr
MjY0LDExIEBAIGJvb2wgSW5wdXRUeXBlOjpzY2FsZWRTdGVwVmFsZXVTaG91bGRCZUludGVnZXIo
KSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorZG91YmxlIElucHV0VHlwZTo6YWNjZXB0
YWJsZUVycm9yKGRvdWJsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwogUmVuZGVyT2Jq
ZWN0KiBJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
IHN0eWxlKSBjb25zdAogewogICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChl
bGVtZW50KCksIHN0eWxlKTsKQEAgLTI2Nyw2ICsyNzksMTMgQEAgZG91YmxlIElucHV0VHlwZTo6
cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAog
ICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9E
b3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRW
YWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CisgICAgaWYgKGRlY2ltYWxQ
bGFjZXMpCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICByZXR1cm4gcGFyc2VUb0Rv
dWJsZShzcmMsIGRlZmF1bHRWYWx1ZSk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdAogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IGY2MDEwNTEzZmJjNmQwNzZkNTUx
NTNkYmIxN2UxZDc5ODQ0ZjUxNWUuLjc4YWFiN2M4MWE0ZGE2ODNiMTY2Yzc5MWZjZDc5NWIxNzFi
OGM3NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKQEAgLTkwLDEwICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFz
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXMo
dW5zaWduZWQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0U3RlcCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBwYXJzZWRTdGVwVmFsdWVTaG91bGRCZUludGVnZXIoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRlZ2VyKCkgY29uc3Q7CisgICAgdmly
dHVhbCBkb3VibGUgYWNjZXB0YWJsZUVycm9yKGRvdWJsZSkgY29uc3Q7CiAKICAgICAvLyBNaXNj
ZWxsYW5lb3VzIGZ1bmN0aW9ucwogCkBAIC0xMDQsNiArMTA2LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBzdWNjZWVkczsgUmV0dXJucyBkZWZhdWx0VmFsdWUgb3RoZXJ3aXNlLiBUaGlzIGZ1bmN0aW9u
IGNhbgogICAgIC8vIHJldHVybiBOYU4gb3IgSW5maW5pdHkgb25seSBpZiBkZWZhdWx0VmFsdWUg
aXMgTmFOIG9yIEluZmluaXR5LgogICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29u
c3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgLy8gUGFyc2VzIHRo
ZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGUgdHlwZSBhcyBwYXJzZVRvRG91YmxlKCkgZG9lcy4K
KyAgICAvLyBJbiBhZGRpdGlvbiwgaXQgc3RvcmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVy
IHRoZSBkZWNpbWFsIHBvaW50CisgICAgLy8gaW50byAqZGVjaW1hbFBsYWNlcy4KKyAgICB2aXJ0
dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBz
cmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdDsK
ICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoaXMgSW5wdXRUeXBlLCBh
bmQgcmV0dXJucyB0cnVlIGlmIGl0CiAgICAgLy8gaXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4gQW4g
aW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNvbXBvbmVudHMqCiAgICAgLy8gcGFyYW1ldGVy
IHdpbGwgaGF2ZSBwYXJzZWQgdmFsdWVzIGFuZCBiZSBtb2RpZmllZCBldmVuIGlmIHRoZSBwYXJz
aW5nCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1dlYkNv
cmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCmluZGV4IDI4ZjUxMGMxYmY0NWJjM2YzOTVhNzM2
NDRhNTcwZGI5OTg1ODdlNTQuLjdhNGQ1MDQ3M2I3YjRiY2E2NWE5YjBjMTkwN2FlN2QxNTMxN2Y1
N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgYm9vbCBO
dW1iZXJJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlLCBkb3VibGUg
c3RlcCkgY29uc3QKICAgICBkb3VibGUgcmVtYWluZGVyID0gZmFicyhkb3VibGVWYWx1ZSAtIHN0
ZXAgKiByb3VuZChkb3VibGVWYWx1ZSAvIHN0ZXApKTsKICAgICAvLyBBY2NlcHRzIGVycm9zIGlu
IGxvd2VyIGZyYWN0aW9uYWwgcGFydCB3aGljaCBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uCiAg
ICAgLy8gY2FuJ3QgcmVwcmVzZW50LgotICAgIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IgPSBzdGVw
IC8gcG93KDIuMCwgRkxUX01BTlRfRElHKTsKLSAgICByZXR1cm4gYWNjZXB0YWJsZUVycm9yIDwg
cmVtYWluZGVyICYmIHJlbWFpbmRlciA8IChzdGVwIC0gYWNjZXB0YWJsZUVycm9yKTsKKyAgICBk
b3VibGUgY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPSBhY2NlcHRhYmxlRXJyb3Ioc3RlcCk7Cisg
ICAgcmV0dXJuIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yIDwgcmVtYWluZGVyICYmIHJlbWFpbmRl
ciA8IChzdGVwIC0gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IpOwogfQogCiBkb3VibGUgTnVtYmVy
SW5wdXRUeXBlOjpzdGVwQmFzZSgpIGNvbnN0CkBAIC0xNDAsNiArMTQwLDExIEBAIGRvdWJsZSBO
dW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlKCkgY29uc3QKICAgICByZXR1cm4gcGFyc2VUb0RvdWJs
ZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0ciksIGRlZmF1bHRTdGVwQmFzZSgp
KTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0VHlwZTo6c3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNl
cyh1bnNpZ25lZCogZGVjaW1hbFBsYWNlcykgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyc2VUb0Rv
dWJsZVdpdGhEZWNpbWFsUGxhY2VzKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRy
KSwgZGVmYXVsdFN0ZXBCYXNlKCksIGRlY2ltYWxQbGFjZXMpOworfQorCiBkb3VibGUgTnVtYmVy
SW5wdXRUeXBlOjpkZWZhdWx0U3RlcCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bWJlckRlZmF1
bHRTdGVwOwpAQCAtMTU5LDYgKzE2NCwxNSBAQCBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJz
ZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjbwogICAg
IHJldHVybiBudW1iZXJWYWx1ZTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0VHlwZTo6cGFyc2VU
b0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVs
dFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK3sKKyAgICBkb3VibGUgbnVt
YmVyVmFsdWU7CisgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFs
UGxhY2VzKHNyYywgJm51bWJlclZhbHVlLCBkZWNpbWFsUGxhY2VzKSkKKyAgICAgICAgcmV0dXJu
IGRlZmF1bHRWYWx1ZTsKKyAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyVmFsdWUpKTsKKyAgICBy
ZXR1cm4gbnVtYmVyVmFsdWU7Cit9CisKIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCkBAIC0x
NjYsNCArMTgwLDEwIEBAIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUg
dmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpOwog
fQogCitkb3VibGUgTnVtYmVySW5wdXRUeXBlOjphY2NlcHRhYmxlRXJyb3IoZG91YmxlIHN0ZXAp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZXAgLyBwb3coMi4wLCBGTFRfTUFOVF9ESUcpOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAppbmRleCAyNjI5
NTVlN2Q5MTkyNGZkNWIxMzRiYzVlNjVmOTAyMmZhY2I4NjBhLi4xZjBiODgxNGM3MTkzMDM4YzJm
ZGQyN2Q4ODkwNjU5ODYzZTRjMGMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5w
dXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCkBAIC01MiwxMCAr
NTIsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0
OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3Vi
bGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0OwogICAgIHZpcnR1
YWwgZG91YmxlIGRlZmF1bHRTdGVwKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcFNj
YWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25z
dCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0OworICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3Vi
bGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBkb3VibGUsIHVuc2lnbmVkKikgY29u
c3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGRvdWJsZSkgY29uc3Q7CisgICAgdmly
dHVhbCBkb3VibGUgYWNjZXB0YWJsZUVycm9yKGRvdWJsZSkgY29uc3Q7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApp
bmRleCAwY2U1ZTRkOTczMGMxOTdhN2RlYmRmNjBhNWU2MWNjYWJlNmJmNjVlLi45ZGFjYmVhM2U5
N2YyNTZhZTYxNzc0MjFiN2RjMzk5OTVkNmU0OWVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKQEAgLTk2LDYgKzk2LDc2IEBAIGJvb2wgcGFyc2VUb0RvdWJsZUZv
ck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSogcmVzdWx0KQogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2lt
YWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSAqcmVzdWx0LCB1bnNpZ25lZCAq
ZGVjaW1hbFBsYWNlcykKK3sKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0
cmluZywgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGRlY2ltYWxQ
bGFjZXMpCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgc2l6ZV90IGRvdEluZGV4ID0gc3RyaW5nLmZpbmQoJy4nKTsKKyAg
ICBzaXplX3QgZUluZGV4ID0gc3RyaW5nLmZpbmQoJ2UnKTsKKyAgICBpZiAoZUluZGV4ID09IG5v
dEZvdW5kKSAKKyAgICAgICAgZUluZGV4ID0gc3RyaW5nLmZpbmQoJ0UnKTsKKworICAgIHVuc2ln
bmVkIGJhc2VEZWNpbWFsUGxhY2VzID0gMDsKKyAgICBpZiAoZG90SW5kZXggIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJhc2VEZWNp
bWFsUGxhY2VzID0gc3RyaW5nLmxlbmd0aCgpIC0gZG90SW5kZXggLSAxOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IGVJbmRleCAtIGRvdEluZGV4IC0gMTsK
KyAgICB9CisKKyAgICBpbnQgZXhwb25lbnQgPSAwOworICAgIGlmIChlSW5kZXggIT0gbm90Rm91
bmQpIHsKKyAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gZUluZGV4ICsgMSwgY3Vyc29yU2F2ZWQ7
CisgICAgICAgIGludCBkaWdpdCwgZXhwb25lbnRTaWduOworICAgICAgICBpbnQzMl90IGV4cG9u
ZW50MzI7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICAg
ICAgZXhwb25lbnRTaWduID0gMDsKKyAgICAgICAgc3dpdGNoIChkaWdpdCA9IHN0cmluZ1tjdXJz
b3JdKSB7CisgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgZXhwb25lbnRTaWduID0gMTsK
KyAgICAgICAgY2FzZSAnKyc6CisgICAgICAgICAgICBkaWdpdCA9IHN0cmluZ1srK2N1cnNvcl07
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRpZ2l0ID49ICcwJyAmJiBkaWdpdCA8PSAnOScpIHsK
KyAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsZW5ndGggJiYgZGlnaXQgPT0gJzAnKQorICAg
ICAgICAgICAgICAgIGRpZ2l0ID0gc3RyaW5nWysrY3Vyc29yXTsKKyAgICAgICAgICAgIGlmIChk
aWdpdCA+ICcwJyAmJiBkaWdpdCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBleHBvbmVudDMy
ID0gZGlnaXQgLSAnMCc7CisgICAgICAgICAgICAgICAgY3Vyc29yU2F2ZWQgPSBjdXJzb3I7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAmJiAoZGlnaXQgPSBzdHJpbmdb
KytjdXJzb3JdKSA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKQorICAgICAgICAgICAgICAgICAgICBl
eHBvbmVudDMyID0gKDEwICogZXhwb25lbnQzMikgKyBkaWdpdCAtICcwJzsKKyAgICAgICAgICAg
ICAgICBpZiAoY3Vyc29yIC0gY3Vyc29yU2F2ZWQgPiA4IHx8IGV4cG9uZW50MzIgPiAxOTk5OSkK
KyAgICAgICAgICAgICAgICAgICAgLyogQXZvaWQgY29uZnVzaW9uIGZyb20gZXhwb25lbnRzCisg
ICAgICAgICAgICAgICAgICAgICAqIHNvIGxhcmdlIHRoYXQgZSBtaWdodCBvdmVyZmxvdy4KKyAg
ICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gMTk5
OTk7IC8qIHNhZmUgZm9yIDE2IGJpdCBpbnRzICovCisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBleHBvbmVudCA9IHN0YXRpY19jYXN0PGludD4oZXhwb25lbnQzMik7
CisgICAgICAgICAgICAgICAgaWYgKGV4cG9uZW50U2lnbikKKyAgICAgICAgICAgICAgICAgICAg
ZXhwb25lbnQgPSAtZXhwb25lbnQ7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBleHBvbmVudCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnQgaW50RGVjaW1hbFBs
YWNlcyA9IGJhc2VEZWNpbWFsUGxhY2VzIC0gZXhwb25lbnQ7CisgICAgaWYgKGludERlY2ltYWxQ
bGFjZXMgPCAwKQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7CisgICAgZWxzZSBpZiAoaW50
RGVjaW1hbFBsYWNlcyA+IDE5OTk5KQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDE5OTk5Owor
ICAgIGVsc2UKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW50RGVjaW1hbFBsYWNlcyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLy8gaHR0cDovL3d3
dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jcnVsZXMtZm9yLXBhcnNp
bmctaW50ZWdlcnMKIGJvb2wgcGFyc2VIVE1MSW50ZWdlcihjb25zdCBTdHJpbmcmIGlucHV0LCBp
bnQmIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmggYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA0
ODM5MTM4M2I1ZGIwOWEzYjQ0YzUxODdiNjgzYWYxNDFjMDY5MmUwLi40ZThlNThmN2RhNmI2NTgw
YTc0YmQwODM2MDUxMzExZDc4NDk0NjNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuaApAQCAtNDQsNiArNDQsNyBAQCBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShk
b3VibGUpOwogLy8gTGVhZGluZyBvciB0cmFpbGluZyBpbGxlZ2FsIGNoYXJhY3RlcnMgY2F1c2Ug
ZmFpbHVyZSwgYXMgZG9lcyBwYXNzaW5nIGFuIGVtcHR5IHN0cmluZy4KIC8vIFRoZSBkb3VibGUq
IHBhcmFtZXRlciBtYXkgYmUgMCB0byBjaGVjayBpZiB0aGUgc3RyaW5nIGNhbiBiZSBwYXJzZWQg
d2l0aG91dCBnZXR0aW5nIHRoZSByZXN1bHQuCiBib29sIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOworYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSosIHVuc2lnbmVkKik7
CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
I3J1bGVzLWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3Qg
U3RyaW5nJiwgaW50Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73333</attachid>
            <date>2010-11-08 18:53:04 -0800</date>
            <delta_ts>2010-11-09 01:45:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101109115302.patch</filename>
            <type>text/plain</type>
            <size>18494</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjQ0MTdlMzNhOTU0MjMzOTk1OTc2YjcxNjE5ZWY1OWFmMzZjN2FmLi5mNTg4YTg2
ZTE3YmU3ZWQ0NDExZjlhOTI5NzhlNThhYTdjMDQ0OGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDIgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDEgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBzaW1wbGlmeSBz
dHlsZXMgdGVzdCB0byBtYWtlIGFsbCBib3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhwZWN0ZWQudHh0CmluZGV4
IGZhYmI3ODdmNDZhNTZiYTFiYzM5NjU3OGNkNmViZDJkMjRhMWRjNTAuLjgwYzY2MGI4NTE3MDJk
Mjc1ZWUyOWE2NjlhZmExMzZmYjhmMzAzMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50eHQKQEAgLTE2NSw2
ICsxNjUsMTAgQEAgUEFTUyBzdGVwVXAoIjEiLCAiMC4xIiwgIiIsIDEwKSBpcyAiMiIKIFBBU1Mg
aW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3Rl
cFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlu
cHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVl
IGlzICIzIgogUEFTUyBpbnB1dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYy
NzQ1MDk4MCIsICIxIiwgMjU1KSBpcyAiMSIKIFBBU1MgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTU7
IGkrKykgeyBpbnB1dC5zdGVwRG93bigpOyB9OyBpbnB1dC52YWx1ZSBpcyAiMCIKK1JvdW5kaW5n
CitQQVNTIGlucHV0Lm1pbj0iNCI7IHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMikgaXMg
IjUuMDE1IgorUEFTUyBpbnB1dC5taW49IjQiOyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIs
IDExKSBpcyAiNS4wNiIKK1BBU1MgaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAw
NSIsICIiLCAxMikgaXMgIjUuMDY1IgogCiBSYW5nZSB0eXBlCiBmdW5jdGlvbiBhcmd1bWVudHMg
YXJlIChtaW4sIG1heCwgc3RlcCwgdmFsdWUsIFtzdGVwQ291bnRdKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0ZXBk
b3duLmpzCmluZGV4IGNkNGEwN2MyZDA1MGE3ZjMwODc5NWFiMjcwZjZlOGVmMjIxYmRjZDcuLjEz
M2Q3NGJkM2VlOTdhOGFiNDY4ZDI1ODJlNzY4OTAxODdjYmUyZDkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0LXN0ZXB1cC1zdGVwZG93bi5qcwor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAtc3Rl
cGRvd24uanMKQEAgLTIyMSw2ICsyMjEsMTAgQEAgc2hvdWxkQmUoJ3N0ZXBVcCgiMSIsICIwLjEi
LCAiIiwgMTApJywgJyIyIicpOwogc2hvdWxkQmUoJ2lucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVw
VXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5w
dXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVw
KCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC52YWx1ZScsICciMyInKTsKIHNob3VsZEJlKCdpbnB1
dC5taW4gPSAiMCI7IHN0ZXBVcCgiMCIsICIwLjAwMzkyMTU2ODYyNzQ1MDk4MCIsICIxIiwgMjU1
KScsICciMSInKTsKIHNob3VsZEJlKCdmb3IgKHZhciBpID0gMDsgaSA8IDI1NTsgaSsrKSB7IGlu
cHV0LnN0ZXBEb3duKCk7IH07IGlucHV0LnZhbHVlJywgJyIwIicpOworZGVidWcoJ1JvdW5kaW5n
Jyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIi
LCAyKScsICciNS4wMTUiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0Ijsgc3RlcFVwKCI1LjAw
NSIsICIwLjAwNSIsICIiLCAxMSknLCAnIjUuMDYiJyk7CitzaG91bGRCZSgnaW5wdXQubWluPSI0
Ijsgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1
ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmI0OTk0ZDg0MzAxMjY3MDlhOGUxNTRmOGFj
YjBkMWU3Nzc1ZDhhLi5jOWEwMWRiNjYxZTZjOTc2YThiYmQxNjhjYWIyMjQ1YWMwMmY5YThkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMyIEBACisyMDEwLTExLTAyICBEYWkgTWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
b28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20gZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0
cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29u
c2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5kbGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5
U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDogQ29uc2lkZXJp
bmcgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIGdpdmVuICJzdGVwIiBhdHRyaWJ0dWUuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVj
aW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0
ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SW5wdXRUeXBlLmNwcDogQWRkZWQgdmlydHVhbCBmdW5jdGlvbnMgZm9yIGRlY2ltYWwgcGxhY2Vz
IGFuZCBhbiBhY2NlcHRhYmxlIGVycm9yLgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpz
dGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
YWNjZXB0YWJsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0Rv
dWJsZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAg
ICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJl
cklucHV0VHlwZTo6c3RlcE1pc21hdGNoKTogVXNpbmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gYWNj
ZXB0YWJsZUVycm9yKCkuCisgICAgICAgIChXZWJDb3JlOjpOdW1iZXJJbnB1dFR5cGU6OnN0ZXBC
YXNlV2l0aERlY2ltYWxQbGFjZXMpOiBDb25zaWRlcmluZyBkZWNpbWFsIHBsYWNlcyBvZiB0aGUg
Z2l2ZW4gImJhc2UiIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlw
ZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok51
bWJlcklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9yKTogQ29uY3JldGUgYWNjZXB0YWJsZUVycm9y
KCkgZm9yIHRoZSBudW1iZXIgdHlwZS4KKyAgICAgICAgKiBodG1sL051bWJlcklucHV0VHlwZS5o
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyk6IFBh
cnNpbmcgbnVtYmVycyB3aXRoIGRlY2ltYWwgcGxhY2VzLgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0xMS0wMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxk
bWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6IHNpbXBsaWZ5IGluc3Bl
Y3RvciBzdHlsZXMgdGVzdCB0byBtYWtlIGFsbCBib3RzIGhhcHB5LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGIwMzA2NWM5YWZjNDgxYjlmMzE4ZTYzMzE0MmRlMGRjMWIxODM5ZTIu
LjM2YjNiMTAyN2UzMDRhNTI4MzBlM2E1N2QxMmZkMzYxNzQ2YzRmYTYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTI1Myw2ICsyNTMsMTEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKIHsKKyAg
ICByZXR1cm4gZ2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNpbWFsUGxhY2VzKHN0ZXAsIDApOwor
fQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1h
bFBsYWNlcyhkb3VibGUqIHN0ZXAsIHVuc2lnbmVkKiBkZWNpbWFsUGxhY2VzKSBjb25zdAorewog
ICAgIEFTU0VSVChzdGVwKTsKICAgICBkb3VibGUgZGVmYXVsdFN0ZXAgPSBtX2lucHV0VHlwZS0+
ZGVmYXVsdFN0ZXAoKTsKICAgICBkb3VibGUgc3RlcFNjYWxlRmFjdG9yID0gbV9pbnB1dFR5cGUt
PnN0ZXBTY2FsZUZhY3RvcigpOwpAQCAtMjYxLDE0ICsyNjYsMjQgQEAgYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJpbmcgPSBnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAg
IGlmIChzdGVwU3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVw
ICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICBpZiAoZGVjaW1hbFBsYWNlcykKKyAgICAgICAg
ICAgICpkZWNpbWFsUGxhY2VzID0gMDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3RyaW5nLCAiYW55IikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBkb3VibGUgcGFyc2VkOwotICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoc3RlcFN0cmluZywgJnBhcnNlZCkgfHwgcGFyc2VkIDw9IDAuMCkgewotICAgICAg
ICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoIWRlY2ltYWxQbGFjZXMpIHsKKyAgICAgICAgaWYgKCFwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAmcGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7
CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVwICogc3RlcFNjYWxlRmFjdG9yOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoc3RlcFN0cmlu
ZywgJnBhcnNlZCwgZGVjaW1hbFBsYWNlcykgfHwgcGFyc2VkIDw9IDAuMCkgeworICAgICAgICAg
ICAgKnN0ZXAgPSBkZWZhdWx0U3RlcCAqIHN0ZXBTY2FsZUZhY3RvcjsKKyAgICAgICAgICAgICpk
ZWNpbWFsUGxhY2VzID0gMDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgfQogICAgIC8vIEZvciBkYXRlLCBtb250aCwgd2VlaywgdGhlIHBhcnNlZCB2YWx1ZSBzaG91
bGQgYmUgYW4gaW50ZWdlciBmb3Igc29tZSB0eXBlcy4KICAgICBpZiAobV9pbnB1dFR5cGUtPnBh
cnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigpKQpAQCAtMjg1LDcgKzMwMCw4IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcChkb3VibGUgY291bnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVl
U3RlcCgmc3RlcCkpIHsKKyAgICB1bnNpZ25lZCBzdGVwRGVjaW1hbFBsYWNlczsKKyAgICBpZiAo
IWdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcygmc3RlcCwgJnN0ZXBEZWNpbWFs
UGxhY2VzKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMzAwLDE2ICszMTYsMjYgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojph
cHBseVN0ZXAoZG91YmxlIGNvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobmV3VmFs
dWUgPCBtX2lucHV0VHlwZS0+bWluaW11bSgpKSB7CisgICAgZG91YmxlIGFjY2VwdGFibGVFcnJv
ciA9IG1faW5wdXRUeXBlLT5hY2NlcHRhYmxlRXJyb3Ioc3RlcCk7CisgICAgaWYgKG5ld1ZhbHVl
IC0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKSA8IC1hY2NlcHRhYmxlRXJyb3IpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBkb3Vi
bGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpOwotICAgIG5ld1ZhbHVlID0gYmFzZSAr
IHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8gc3RlcCkgKiBzdGVwOwotICAgIGlmIChuZXdWYWx1
ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpIHsKKyAgICBpZiAobmV3VmFsdWUgPCBtX2lucHV0
VHlwZS0+bWluaW11bSgpKQorICAgICAgICBuZXdWYWx1ZSA9IG1faW5wdXRUeXBlLT5taW5pbXVt
KCk7CisgICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFjZXM7CisgICAgZG91YmxlIGJhc2UgPSBt
X2lucHV0VHlwZS0+c3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMp
OworICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gbWluKGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOwor
ICAgIGlmIChuZXdWYWx1ZSA8IHBvdygxMC4wLCAyMS4wKSkgeworICAgICAgICBkb3VibGUgc2Nh
bGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgoc3RlcERlY2ltYWxQbGFjZXMs
IGJhc2VEZWNpbWFsUGxhY2VzKSkpOworICAgICAgICBuZXdWYWx1ZSA9IHJvdW5kKChiYXNlICsg
cm91bmQoKG5ld1ZhbHVlIC0gYmFzZSkgLyBzdGVwKSAqIHN0ZXApICogc2NhbGUpIC8gc2NhbGU7
CisgICAgfQorICAgIGlmIChuZXdWYWx1ZSAtIG1faW5wdXRUeXBlLT5tYXhpbXVtKCkgPiBhY2Nl
cHRhYmxlRXJyb3IpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBpZiAobmV3VmFsdWUgPiBtX2lucHV0VHlwZS0+bWF4aW11bSgp
KQorICAgICAgICBuZXdWYWx1ZSA9IG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7CiAgICAgc2V0VmFs
dWVBc051bWJlcihuZXdWYWx1ZSwgZWMpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCAxYTA0OTBlNzAxYTFiMWI1MjdiODc3ZmNkZDdmZWY0NTQ1NzM4YmQ3Li4wYWNmMjFlNzVlOGY3
MWJmNzk2NDY1YzQ4MWZlMTE5YzQ1YzE3ZjBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAg
LTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIC8vIFNldHMgdGhlICJhbGxvd2VkIHZhbHVlIHN0
ZXAiIGRlZmluZWQgaW4gdGhlIEhUTUwgc3BlYyB0byB0aGUgc3BlY2lmaWVkIGRvdWJsZSBwb2lu
dGVyLgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUg
c3RlcC4iCiAgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OworICAg
IGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNpbWFsUGxhY2VzKGRvdWJsZSosIHVuc2ln
bmVkKikgY29uc3Q7CiAgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUuCiAgICAgYm9vbCBzdGVwTWlz
bWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggYzg3MGM2OTQz
ZTZhYmNlMDg3MmQwZjlkNjg3NjRmNWRkMTZiNThiYS4uYzBjYzM0Mjc5MGFjOTFlZTUyZTUyN2Iz
NWE4YjNjMThkZjliZjhkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTIzNyw2ICsyMzcsMTMgQEAgZG91
YmxlIElucHV0VHlwZTo6c3RlcEJhc2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitkb3Vi
bGUgSW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKiBkZWNpbWFs
UGxhY2VzKSBjb25zdAoreworICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAgICAqZGVjaW1h
bFBsYWNlcyA9IDA7CisgICAgcmV0dXJuIHN0ZXBCYXNlKCk7Cit9CisKIGRvdWJsZSBJbnB1dFR5
cGU6OmRlZmF1bHRTdGVwKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6cXVpZXRfTmFOKCk7CkBAIC0yNTcsNiArMjY0LDExIEBAIGJvb2wgSW5wdXRUeXBlOjpz
Y2FsZWRTdGVwVmFsZXVTaG91bGRCZUludGVnZXIoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorZG91YmxlIElucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9yKGRvdWJsZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gMDsKK30KKwogUmVuZGVyT2JqZWN0KiBJbnB1dFR5cGU6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIHJldHVy
biBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChlbGVtZW50KCksIHN0eWxlKTsKQEAgLTI2Nyw2
ICsyNzksMTMgQEAgZG91YmxlIElucHV0VHlwZTo6cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcm
LCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdAogICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiB9
CiAKK2RvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25z
dCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFj
ZXMpIGNvbnN0Cit7CisgICAgaWYgKGRlY2ltYWxQbGFjZXMpCisgICAgICAgICpkZWNpbWFsUGxh
Y2VzID0gMDsKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShzcmMsIGRlZmF1bHRWYWx1ZSk7Cit9
CisKIGJvb2wgSW5wdXRUeXBlOjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oCmluZGV4IGY2MDEwNTEzZmJjNmQwNzZkNTUxNTNkYmIxN2UxZDc5ODQ0ZjUxNWUuLjc4YWFi
N2M4MWE0ZGE2ODNiMTY2Yzc5MWZjZDc5NWIxNzFiOGM3NDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTkwLDEw
ICs5MCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25z
dDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZG91
YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqKSBjb25zdDsKICAgICB2aXJ0
dWFsIGRvdWJsZSBkZWZhdWx0U3RlcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBT
Y2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYXJzZWRTdGVwVmFsdWVTaG91
bGRCZUludGVnZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2NhbGVkU3RlcFZhbGV1U2hv
dWxkQmVJbnRlZ2VyKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgYWNjZXB0YWJsZUVycm9y
KGRvdWJsZSkgY29uc3Q7CiAKICAgICAvLyBNaXNjZWxsYW5lb3VzIGZ1bmN0aW9ucwogCkBAIC0x
MDQsNiArMTA2LDEwIEBAIHB1YmxpYzoKICAgICAvLyBzdWNjZWVkczsgUmV0dXJucyBkZWZhdWx0
VmFsdWUgb3RoZXJ3aXNlLiBUaGlzIGZ1bmN0aW9uIGNhbgogICAgIC8vIHJldHVybiBOYU4gb3Ig
SW5maW5pdHkgb25seSBpZiBkZWZhdWx0VmFsdWUgaXMgTmFOIG9yIEluZmluaXR5LgogICAgIHZp
cnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRW
YWx1ZSkgY29uc3Q7CisgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGUg
dHlwZSBhcyBwYXJzZVRvRG91YmxlKCkgZG9lcy4KKyAgICAvLyBJbiBhZGRpdGlvbiwgaXQgc3Rv
cmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50CisgICAgLy8g
aW50byAqZGVjaW1hbFBsYWNlcy4KKyAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91YmxlV2l0
aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIHVu
c2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdDsKICAgICAvLyBQYXJzZXMgdGhlIHNwZWNpZmll
ZCBzdHJpbmcgZm9yIHRoaXMgSW5wdXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CiAgICAg
Ly8gaXMgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0
ZUNvbXBvbmVudHMqCiAgICAgLy8gcGFyYW1ldGVyIHdpbGwgaGF2ZSBwYXJzZWQgdmFsdWVzIGFu
ZCBiZSBtb2RpZmllZCBldmVuIGlmIHRoZSBwYXJzaW5nCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvTnVtYmVySW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CmluZGV4IDI4ZjUxMGMxYmY0NWJjM2YzOTVhNzM2NDRhNTcwZGI5OTg1ODdlNTQuLjdhNGQ1MDQ3
M2I3YjRiY2E2NWE5YjBjMTkwN2FlN2QxNTMxN2Y1N2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUu
Y3BwCkBAIC0xMzEsOCArMTMxLDggQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBNaXNtYXRj
aChjb25zdCBTdHJpbmcmIHZhbHVlLCBkb3VibGUgc3RlcCkgY29uc3QKICAgICBkb3VibGUgcmVt
YWluZGVyID0gZmFicyhkb3VibGVWYWx1ZSAtIHN0ZXAgKiByb3VuZChkb3VibGVWYWx1ZSAvIHN0
ZXApKTsKICAgICAvLyBBY2NlcHRzIGVycm9zIGluIGxvd2VyIGZyYWN0aW9uYWwgcGFydCB3aGlj
aCBJRUVFIDc1NCBzaW5nbGUtcHJlY2lzaW9uCiAgICAgLy8gY2FuJ3QgcmVwcmVzZW50LgotICAg
IGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IgPSBzdGVwIC8gcG93KDIuMCwgRkxUX01BTlRfRElHKTsK
LSAgICByZXR1cm4gYWNjZXB0YWJsZUVycm9yIDwgcmVtYWluZGVyICYmIHJlbWFpbmRlciA8IChz
dGVwIC0gYWNjZXB0YWJsZUVycm9yKTsKKyAgICBkb3VibGUgY29tcHV0ZWRBY2NlcHRhYmxlRXJy
b3IgPSBhY2NlcHRhYmxlRXJyb3Ioc3RlcCk7CisgICAgcmV0dXJuIGNvbXB1dGVkQWNjZXB0YWJs
ZUVycm9yIDwgcmVtYWluZGVyICYmIHJlbWFpbmRlciA8IChzdGVwIC0gY29tcHV0ZWRBY2NlcHRh
YmxlRXJyb3IpOwogfQogCiBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpzdGVwQmFzZSgpIGNvbnN0
CkBAIC0xNDAsNiArMTQwLDExIEBAIGRvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlKCkg
Y29uc3QKICAgICByZXR1cm4gcGFyc2VUb0RvdWJsZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1
dGUobWluQXR0ciksIGRlZmF1bHRTdGVwQmFzZSgpKTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0
VHlwZTo6c3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCogZGVjaW1hbFBsYWNlcykg
Y29uc3QKK3sKKyAgICByZXR1cm4gcGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGVsZW1l
bnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgZGVmYXVsdFN0ZXBCYXNlKCksIGRlY2lt
YWxQbGFjZXMpOworfQorCiBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpkZWZhdWx0U3RlcCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG51bWJlckRlZmF1bHRTdGVwOwpAQCAtMTU5LDYgKzE2NCwxNSBA
QCBkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3Jj
LCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjbwogICAgIHJldHVybiBudW1iZXJWYWx1ZTsKIH0KIAor
ZG91YmxlIE51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNv
bnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBs
YWNlcykgY29uc3QKK3sKKyAgICBkb3VibGUgbnVtYmVyVmFsdWU7CisgICAgaWYgKCFwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZVdpdGhEZWNpbWFsUGxhY2VzKHNyYywgJm51bWJlclZhbHVlLCBk
ZWNpbWFsUGxhY2VzKSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICBBU1NFUlQo
aXNmaW5pdGUobnVtYmVyVmFsdWUpKTsKKyAgICByZXR1cm4gbnVtYmVyVmFsdWU7Cit9CisKIFN0
cmluZyBOdW1iZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCkBAIC0xNjYsNCArMTgwLDEwIEBAIFN0cmluZyBOdW1i
ZXJJbnB1dFR5cGU6OnNlcmlhbGl6ZShkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgcmV0dXJuIHNl
cmlhbGl6ZUZvck51bWJlclR5cGUodmFsdWUpOwogfQogCitkb3VibGUgTnVtYmVySW5wdXRUeXBl
OjphY2NlcHRhYmxlRXJyb3IoZG91YmxlIHN0ZXApIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZXAg
LyBwb3coMi4wLCBGTFRfTUFOVF9ESUcpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBiL1dlYkNvcmUvaHRt
bC9OdW1iZXJJbnB1dFR5cGUuaAppbmRleCAyNjI5NTVlN2Q5MTkyNGZkNWIxMzRiYzVlNjVmOTAy
MmZhY2I4NjBhLi4xZjBiODgxNGM3MTkzMDM4YzJmZGQyN2Q4ODkwNjU5ODYzZTRjMGMwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKKysrIGIvV2ViQ29yZS9odG1s
L051bWJlcklucHV0VHlwZS5oCkBAIC01MiwxMCArNTIsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRj
aChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBC
YXNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNl
cyh1bnNpZ25lZCopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRTdGVwKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcFNjYWxlRmFjdG9yKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0Owor
ICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBT
dHJpbmcmLCBkb3VibGUsIHVuc2lnbmVkKikgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc2Vy
aWFsaXplKGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgYWNjZXB0YWJsZUVycm9y
KGRvdWJsZSkgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCAwY2U1ZTRkOTczMGMxOTdhN2RlYmRm
NjBhNWU2MWNjYWJlNmJmNjVlLi4wODBjY2Y3Mzg2M2E0NTgzNWU1ZDJkNjAxZTMzY2M4ZGIwNDE2
ZDA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTk2LDYg
Kzk2LDc3IEBAIGJvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGRvdWJsZSogcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIHBhcnNl
VG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGRvdWJsZSAqcmVzdWx0LCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykKK3sKKyAgICBpZiAo
IXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0cmluZywgcmVzdWx0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGRlY2ltYWxQbGFjZXMpCisgICAgICAgICpkZWNpbWFsUGxh
Y2VzID0gMDsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc2l6ZV90IGRv
dEluZGV4ID0gc3RyaW5nLmZpbmQoJy4nKTsKKyAgICBzaXplX3QgZUluZGV4ID0gc3RyaW5nLmZp
bmQoJ2UnKTsKKyAgICBpZiAoZUluZGV4ID09IG5vdEZvdW5kKSAKKyAgICAgICAgZUluZGV4ID0g
c3RyaW5nLmZpbmQoJ0UnKTsKKworICAgIHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxhY2VzID0gMDsK
KyAgICBpZiAoZG90SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGVJbmRleCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gc3RyaW5nLmxlbmd0aCgp
IC0gZG90SW5kZXggLSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBiYXNlRGVjaW1hbFBs
YWNlcyA9IGVJbmRleCAtIGRvdEluZGV4IC0gMTsKKyAgICB9CisKKyAgICBpbnQgZXhwb25lbnQg
PSAwOworICAgIGlmIChlSW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgdW5zaWduZWQgY3Vy
c29yID0gZUluZGV4ICsgMSwgY3Vyc29yU2F2ZWQ7CisgICAgICAgIGludCBkaWdpdCwgZXhwb25l
bnRTaWduOworICAgICAgICBpbnQzMl90IGV4cG9uZW50MzI7CisgICAgICAgIHNpemVfdCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICAgICAgLy8gTm90IHVzaW5nIFN0cmluZy50b0lu
dCgpIGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIHNhbWUgY29tcHV0YXRpb24gYXMgZHRvYSgpIGRv
ZXMuCisgICAgICAgIGV4cG9uZW50U2lnbiA9IDA7CisgICAgICAgIHN3aXRjaCAoZGlnaXQgPSBz
dHJpbmdbY3Vyc29yXSkgeworICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgIGV4cG9uZW50
U2lnbiA9IDE7CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdb
KytjdXJzb3JdOworICAgICAgICB9CisgICAgICAgIGlmIChkaWdpdCA+PSAnMCcgJiYgZGlnaXQg
PD0gJzknKSB7CisgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoICYmIGRpZ2l0ID09
ICcwJykKKyAgICAgICAgICAgICAgICBkaWdpdCA9IHN0cmluZ1srK2N1cnNvcl07CisgICAgICAg
ICAgICBpZiAoZGlnaXQgPiAnMCcgJiYgZGlnaXQgPD0gJzknKSB7CisgICAgICAgICAgICAgICAg
ZXhwb25lbnQzMiA9IGRpZ2l0IC0gJzAnOworICAgICAgICAgICAgICAgIGN1cnNvclNhdmVkID0g
Y3Vyc29yOworICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsZW5ndGggJiYgKGRpZ2l0
ID0gc3RyaW5nWysrY3Vyc29yXSkgPj0gJzAnICYmIGRpZ2l0IDw9ICc5JykKKyAgICAgICAgICAg
ICAgICAgICAgZXhwb25lbnQzMiA9ICgxMCAqIGV4cG9uZW50MzIpICsgZGlnaXQgLSAnMCc7Cisg
ICAgICAgICAgICAgICAgaWYgKGN1cnNvciAtIGN1cnNvclNhdmVkID4gOCB8fCBleHBvbmVudDMy
ID4gMTk5OTkpCisgICAgICAgICAgICAgICAgICAgIC8qIEF2b2lkIGNvbmZ1c2lvbiBmcm9tIGV4
cG9uZW50cworICAgICAgICAgICAgICAgICAgICAgKiBzbyBsYXJnZSB0aGF0IGUgbWlnaHQgb3Zl
cmZsb3cuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBleHBv
bmVudCA9IDE5OTk5OyAvKiBzYWZlIGZvciAxNiBiaXQgaW50cyAqLworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4
cG9uZW50MzIpOworICAgICAgICAgICAgICAgIGlmIChleHBvbmVudFNpZ24pCisgICAgICAgICAg
ICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50OworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGlu
dERlY2ltYWxQbGFjZXMgPSBiYXNlRGVjaW1hbFBsYWNlcyAtIGV4cG9uZW50OworICAgIGlmIChp
bnREZWNpbWFsUGxhY2VzIDwgMCkKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAgIGVs
c2UgaWYgKGludERlY2ltYWxQbGFjZXMgPiAxOTk5OSkKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMg
PSAxOTk5OTsKKyAgICBlbHNlCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGludERlY2ltYWxQbGFjZXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVz
LWZvci1wYXJzaW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5n
JiBpbnB1dCwgaW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmgKaW5kZXggNDgzOTEzODNiNWRiMDlhM2I0NGM1MTg3YjY4M2FmMTQxYzA2OTJlMC4uNGU4ZTU4
ZjdkYTZiNjU4MGE3NGJkMDgzNjA1MTMxMWQ3ODQ5NDYzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51
bWJlclR5cGUoZG91YmxlKTsKIC8vIExlYWRpbmcgb3IgdHJhaWxpbmcgaWxsZWdhbCBjaGFyYWN0
ZXJzIGNhdXNlIGZhaWx1cmUsIGFzIGRvZXMgcGFzc2luZyBhbiBlbXB0eSBzdHJpbmcuCiAvLyBU
aGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAgdG8gY2hlY2sgaWYgdGhlIHN0cmluZyBjYW4g
YmUgcGFyc2VkIHdpdGhvdXQgZ2V0dGluZyB0aGUgcmVzdWx0LgogYm9vbCBwYXJzZVRvRG91Ymxl
Rm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUqKTsKK2Jvb2wgcGFyc2VUb0RvdWJs
ZUZvck51bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBkb3VibGUqLCB1
bnNpZ25lZCopOwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRl
Z2VyKGNvbnN0IFN0cmluZyYsIGludCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73347</attachid>
            <date>2010-11-09 01:45:32 -0800</date>
            <delta_ts>2010-11-09 01:56:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101109184530.patch</filename>
            <type>text/plain</type>
            <size>18827</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyODhmNjEyMmI5ODhlMDhhNmYzYmIyYzkyZTlmODNhOGY3N2ZmNjBiLi5iYjk5ZWFk
YzQ5OWRlY2U4YzM0YzgxMzRhYjcwNGJlYWY5MWY3MmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDkgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDggIENoYW5nIFNodSAgPGNoYW5n
LnNodUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3du
LWV4cGVjdGVkLnR4dAppbmRleCBmYWJiNzg3ZjQ2YTU2YmExYmMzOTY1NzhjZDZlYmQyZDI0YTFk
YzUwLi4xZGVkODZkZDA3NjNmZWZkZGE1NDZkM2RkOGI2YTk0NDNjZjg4NDcxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhw
ZWN0ZWQudHh0CkBAIC0xNjUsNiArMTY1LDEzIEBAIFBBU1Mgc3RlcFVwKCIxIiwgIjAuMSIsICIi
LCAxMCkgaXMgIjIiCiBQQVNTIGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQu
c3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0
ZXBVcCgpOyBpbnB1dC52YWx1ZSBpcyAiMyIKIFBBU1MgaW5wdXQubWluID0gIjAiOyBzdGVwVXAo
IjAiLCAiMC4wMDM5MjE1Njg2Mjc0NTA5ODAiLCAiMSIsIDI1NSkgaXMgIjEiCiBQQVNTIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU1OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFs
dWUgaXMgIjAiCitSb3VuZGluZworUEFTUyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDIp
IGlzICI1LjAxNSIKK1BBU1Mgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMSkgaXMgIjUu
MDYiCitQQVNTIHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMTIpIGlzICI1LjA2NSIKK1BB
U1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIsICIwLjAwNSIsICI1LjAwNSIsIDIpIGlz
ICI1LjAxNSIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIsICIwLjAwNSIsICI1
LjAwNSIsIDExKSBpcyAiNS4wNiIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIs
ICIwLjAwNSIsICI1LjAwNSIsIDEyKSBpcyAiNS4wNjUiCiAKIFJhbmdlIHR5cGUKIGZ1bmN0aW9u
IGFyZ3VtZW50cyBhcmUgKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgW3N0ZXBDb3VudF0pCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAt
c3RlcGRvd24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1z
dGVwdXAtc3RlcGRvd24uanMKaW5kZXggY2Q0YTA3YzJkMDUwYTdmMzA4Nzk1YWIyNzBmNmU4ZWYy
MjFiZGNkNy4uMWJiYzk3ODIwZDc4MzM4OWQzOWRkNzc0MjY1ZTRhOTNlM2IzOTg1MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0
LXN0ZXB1cC1zdGVwZG93bi5qcwpAQCAtMjIxLDYgKzIyMSwxMyBAQCBzaG91bGRCZSgnc3RlcFVw
KCIxIiwgIjAuMSIsICIiLCAxMCknLCAnIjIiJyk7CiBzaG91bGRCZSgnaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0
ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBp
bnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVlJywgJyIzIicpOwogc2hv
dWxkQmUoJ2lucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgw
IiwgIjEiLCAyNTUpJywgJyIxIicpOwogc2hvdWxkQmUoJ2ZvciAodmFyIGkgPSAwOyBpIDwgMjU1
OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFsdWUnLCAnIjAiJyk7CitkZWJ1
ZygnUm91bmRpbmcnKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDIp
JywgJyI1LjAxNSInKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDEx
KScsICciNS4wNiInKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDEy
KScsICciNS4wNjUiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIs
ICIwLjAwNSIsICI1LjAwNSIsIDIpJywgJyI1LjAxNSInKTsKK3Nob3VsZEJlKCdzdGVwVXBFeHBs
aWNpdEJvdW5kcygiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTEpJywgJyI1LjA2IicpOwor
c2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUi
LCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWViN2NlMjJjMWE1OTdjYWNmYjhhMjgwNTU1NzNiODIyYmYwODNhLi44MTFmZDk4NzJmYzRmMTM4
ZDM0MjVmYzgzZDQ3MjllNjg2NDRlYmI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTExLTA5ICBEYWkg
TWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20g
ZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4
CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29uc2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5k
bGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDogQ29uc2lkZXJpbmcgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIGdpdmVu
ICJzdGVwIiBhdHRyaWJ0dWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpn
ZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDogQWRkZWQgdmlydHVhbCBm
dW5jdGlvbnMgZm9yIGRlY2ltYWwgcGxhY2VzIGFuZCBhbiBhY2NlcHRhYmxlIGVycm9yLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcE1pc21hdGNoKTogVXNp
bmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gYWNjZXB0YWJsZUVycm9yKCkuCisgICAgICAgIChXZWJD
b3JlOjpOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXMpOiBDb25zaWRl
cmluZyBkZWNpbWFsIHBsYWNlcyBvZiB0aGUgZ2l2ZW4gImJhc2UiIGF0dHJpYnV0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxh
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9y
KTogQ29uY3JldGUgYWNjZXB0YWJsZUVycm9yKCkgZm9yIHRoZSBudW1iZXIgdHlwZS4KKyAgICAg
ICAgKiBodG1sL051bWJlcklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyk6IFBhcnNpbmcgbnVtYmVycyB3aXRoIGRlY2ltYWwgcGxh
Y2VzLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0x
MS0wOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMzYxYThj
OTY3YWFlN2U0MDdhN2Q3ZmYzYTk4ZTFkM2NjMmI3ZTllMy4uNGNiZTc2YzM3ZmJkYzRiNDdjODYy
ZDdlZmI0ZDJlOTNjZWIzNDlkMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjUz
LDYgKzI1MywxMSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRW
YWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAogeworICAgIHJldHVybiBnZXRBbGxvd2VkVmFs
dWVTdGVwV2l0aERlY2ltYWxQbGFjZXMoc3RlcCwgMCk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNpbWFsUGxhY2VzKGRvdWJsZSogc3RlcCwg
dW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CiAgICAgQVNTRVJUKHN0ZXApOwogICAg
IGRvdWJsZSBkZWZhdWx0U3RlcCA9IG1faW5wdXRUeXBlLT5kZWZhdWx0U3RlcCgpOwogICAgIGRv
dWJsZSBzdGVwU2NhbGVGYWN0b3IgPSBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFjdG9yKCk7CkBA
IC0yNjEsMTQgKzI2NiwyNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1
ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RlcFN0
cmluZyA9IGdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0
eSgpKSB7CiAgICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVGYWN0b3I7Cisg
ICAgICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAw
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHN0ZXBTdHJpbmcsICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRvdWJsZSBw
YXJzZWQ7Ci0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAm
cGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7Ci0gICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAg
KiBzdGVwU2NhbGVGYWN0b3I7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghZGVjaW1h
bFBsYWNlcykgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0ZXBT
dHJpbmcsICZwYXJzZWQpIHx8IHBhcnNlZCA8PSAwLjApIHsKKyAgICAgICAgICAgICpzdGVwID0g
ZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVGYWN0b3I7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmcGFyc2VkLCBkZWNpbWFsUGxh
Y2VzKSB8fCBwYXJzZWQgPD0gMC4wKSB7CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVw
ICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAgICAgLy8gRm9yIGRhdGUs
IG1vbnRoLCB3ZWVrLCB0aGUgcGFyc2VkIHZhbHVlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBz
b21lIHR5cGVzLgogICAgIGlmIChtX2lucHV0VHlwZS0+cGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJ
bnRlZ2VyKCkpCkBAIC0yODUsNyArMzAwLDggQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRB
bGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZG91
YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkgeworICAgIHVu
c2lnbmVkIHN0ZXBEZWNpbWFsUGxhY2VzOworICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKCZzdGVwLCAmc3RlcERlY2ltYWxQbGFjZXMpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDAsMTYg
KzMxNiwyNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcChkb3VibGUgY291bnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChuZXdWYWx1ZSA8IG1faW5wdXRUeXBlLT5taW5p
bXVtKCkpIHsKKyAgICBkb3VibGUgYWNjZXB0YWJsZUVycm9yID0gbV9pbnB1dFR5cGUtPmFjY2Vw
dGFibGVFcnJvcihzdGVwKTsKKyAgICBpZiAobmV3VmFsdWUgLSBtX2lucHV0VHlwZS0+bWluaW11
bSgpIDwgLWFjY2VwdGFibGVFcnJvcikgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRvdWJsZSBiYXNlID0gbV9pbnB1dFR5cGUt
PnN0ZXBCYXNlKCk7Ci0gICAgbmV3VmFsdWUgPSBiYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gYmFz
ZSkgLyBzdGVwKSAqIHN0ZXA7Ci0gICAgaWYgKG5ld1ZhbHVlID4gbV9pbnB1dFR5cGUtPm1heGlt
dW0oKSkgeworICAgIGlmIChuZXdWYWx1ZSA8IG1faW5wdXRUeXBlLT5taW5pbXVtKCkpCisgICAg
ICAgIG5ld1ZhbHVlID0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKKyAgICB1bnNpZ25lZCBiYXNl
RGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFzZVdp
dGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CisgICAgZnByaW50ZihzdGRlcnIs
ICJiID0gJXVcbiIsIGJhc2VEZWNpbWFsUGxhY2VzKTsKKyAgICBiYXNlRGVjaW1hbFBsYWNlcyA9
IG1pbihiYXNlRGVjaW1hbFBsYWNlcywgMTZ1KTsKKyAgICBpZiAobmV3VmFsdWUgPCBwb3coMTAu
MCwgMjEuMCkpIHsKKyAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0
PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpKTsKKyAg
ICAgICAgbmV3VmFsdWUgPSByb3VuZCgoYmFzZSArIHJvdW5kKChuZXdWYWx1ZSAtIGJhc2UpIC8g
c3RlcCkgKiBzdGVwKSAqIHNjYWxlKSAvIHNjYWxlOworICAgIH0KKyAgICBpZiAobmV3VmFsdWUg
LSBtX2lucHV0VHlwZS0+bWF4aW11bSgpID4gYWNjZXB0YWJsZUVycm9yKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG5l
d1ZhbHVlID4gbV9pbnB1dFR5cGUtPm1heGltdW0oKSkKKyAgICAgICAgbmV3VmFsdWUgPSBtX2lu
cHV0VHlwZS0+bWF4aW11bSgpOwogICAgIHNldFZhbHVlQXNOdW1iZXIobmV3VmFsdWUsIGVjKTsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMWEwNDkwZTcwMWExYjFiNTI3Yjg3N2Zj
ZGQ3ZmVmNDU0NTczOGJkNy4uMGFjZjIxZTc1ZThmNzFiZjc5NjQ2NWM0ODFmZTExOWM0NWMxN2Yw
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBTZXRzIHRoZSAiYWxsb3dlZCB2YWx1ZSBzdGVwIiBkZWZpbmVkIGluIHRoZSBIVE1MIHNw
ZWMgdG8gdGhlIHNwZWNpZmllZCBkb3VibGUgcG9pbnRlci4KICAgICAvLyBSZXR1cm5zIGZhbHNl
IGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgogICAgIGJvb2wgZ2V0QWxsb3dl
ZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKKyAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXBX
aXRoRGVjaW1hbFBsYWNlcyhkb3VibGUqLCB1bnNpZ25lZCopIGNvbnN0OwogICAgIC8vIEZvciBW
YWxpZGl0eVN0YXRlLgogICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCmluZGV4IGM4NzBjNjk0M2U2YWJjZTA4NzJkMGY5ZDY4NzY0ZjVkZDE2
YjU4YmEuLmMwY2MzNDI3OTBhYzkxZWU1MmU1MjdiMzVhOGIzYzE4ZGY5YmY4ZDQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuY3BwCkBAIC0yMzcsNiArMjM3LDEzIEBAIGRvdWJsZSBJbnB1dFR5cGU6OnN0ZXBCYXNlKCkg
Y29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorZG91YmxlIElucHV0VHlwZTo6c3RlcEJhc2VXaXRo
RGVjaW1hbFBsYWNlcyh1bnNpZ25lZCogZGVjaW1hbFBsYWNlcykgY29uc3QKK3sKKyAgICBpZiAo
ZGVjaW1hbFBsYWNlcykKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAgIHJldHVybiBz
dGVwQmFzZSgpOworfQorCiBkb3VibGUgSW5wdXRUeXBlOjpkZWZhdWx0U3RlcCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwpAQCAtMjU3
LDYgKzI2NCwxMSBAQCBib29sIElucHV0VHlwZTo6c2NhbGVkU3RlcFZhbGV1U2hvdWxkQmVJbnRl
Z2VyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OmFj
Y2VwdGFibGVFcnJvcihkb3VibGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIFJlbmRl
ck9iamVjdCogSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmpl
Y3QoZWxlbWVudCgpLCBzdHlsZSk7CkBAIC0yNjcsNiArMjc5LDEzIEBAIGRvdWJsZSBJbnB1dFR5
cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29u
c3QKICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogfQogCitkb3VibGUgSW5wdXRUeXBlOjpwYXJz
ZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZh
dWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdAoreworICAgIGlmIChkZWNp
bWFsUGxhY2VzKQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IDA7CisgICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGUoc3JjLCBkZWZhdWx0VmFsdWUpOworfQorCiBib29sIElucHV0VHlwZTo6cGFyc2VU
b0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmluZyYsIERhdGVDb21wb25lbnRzKikgY29uc3QKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaCBiL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCBmNjAxMDUxM2ZiYzZkMDc2
ZDU1MTUzZGJiMTdlMWQ3OTg0NGY1MTVlLi43OGFhYjdjODFhNGRhNjgzYjE2NmM3OTFmY2Q3OTVi
MTcxYjhjNzQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC05MCwxMCArOTAsMTIgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21h
dGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3Rl
cEJhc2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxh
Y2VzKHVuc2lnbmVkKikgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFN0ZXAoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJbnRlZ2VyKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIHNjYWxlZFN0ZXBWYWxldVNob3VsZEJlSW50ZWdlcigpIGNvbnN0OworICAg
IHZpcnR1YWwgZG91YmxlIGFjY2VwdGFibGVFcnJvcihkb3VibGUpIGNvbnN0OwogCiAgICAgLy8g
TWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIApAQCAtMTA0LDYgKzEwNiwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gc3VjY2VlZHM7IFJldHVybnMgZGVmYXVsdFZhbHVlIG90aGVyd2lzZS4gVGhpcyBmdW5j
dGlvbiBjYW4KICAgICAvLyByZXR1cm4gTmFOIG9yIEluZmluaXR5IG9ubHkgaWYgZGVmYXVsdFZh
bHVlIGlzIE5hTiBvciBJbmZpbml0eS4KICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91Ymxl
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIC8vIFBhcnNl
cyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhlIHR5cGUgYXMgcGFyc2VUb0RvdWJsZSgpIGRv
ZXMuCisgICAgLy8gSW4gYWRkaXRpb24sIGl0IHN0b3JlcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBh
ZnRlciB0aGUgZGVjaW1hbCBwb2ludAorICAgIC8vIGludG8gKmRlY2ltYWxQbGFjZXMuCisgICAg
dmlydHVhbCBkb3VibGUgcGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmlu
ZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29u
c3Q7CiAgICAgLy8gUGFyc2VzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZvciB0aGlzIElucHV0VHlw
ZSwgYW5kIHJldHVybnMgdHJ1ZSBpZiBpdAogICAgIC8vIGlzIHN1Y2Nlc3NmdWxseSBwYXJzZWQu
IEFuIGluc3RhbmNlIHBvaW50ZWQgYnkgdGhlIERhdGVDb21wb25lbnRzKgogICAgIC8vIHBhcmFt
ZXRlciB3aWxsIGhhdmUgcGFyc2VkIHZhbHVlcyBhbmQgYmUgbW9kaWZpZWQgZXZlbiBpZiB0aGUg
cGFyc2luZwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAgYi9X
ZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAppbmRleCAyOGY1MTBjMWJmNDViYzNmMzk1
YTczNjQ0YTU3MGRiOTk4NTg3ZTU0Li43YTRkNTA0NzNiN2I0YmNhNjVhOWIwYzE5MDdhZTdkMTUz
MTdmNTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIGJv
b2wgTnVtYmVySW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSwgZG91
YmxlIHN0ZXApIGNvbnN0CiAgICAgZG91YmxlIHJlbWFpbmRlciA9IGZhYnMoZG91YmxlVmFsdWUg
LSBzdGVwICogcm91bmQoZG91YmxlVmFsdWUgLyBzdGVwKSk7CiAgICAgLy8gQWNjZXB0cyBlcnJv
cyBpbiBsb3dlciBmcmFjdGlvbmFsIHBhcnQgd2hpY2ggSUVFRSA3NTQgc2luZ2xlLXByZWNpc2lv
bgogICAgIC8vIGNhbid0IHJlcHJlc2VudC4KLSAgICBkb3VibGUgYWNjZXB0YWJsZUVycm9yID0g
c3RlcCAvIHBvdygyLjAsIEZMVF9NQU5UX0RJRyk7Ci0gICAgcmV0dXJuIGFjY2VwdGFibGVFcnJv
ciA8IHJlbWFpbmRlciAmJiByZW1haW5kZXIgPCAoc3RlcCAtIGFjY2VwdGFibGVFcnJvcik7Cisg
ICAgZG91YmxlIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yID0gYWNjZXB0YWJsZUVycm9yKHN0ZXAp
OworICAgIHJldHVybiBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA8IHJlbWFpbmRlciAmJiByZW1h
aW5kZXIgPCAoc3RlcCAtIGNvbXB1dGVkQWNjZXB0YWJsZUVycm9yKTsKIH0KIAogZG91YmxlIE51
bWJlcklucHV0VHlwZTo6c3RlcEJhc2UoKSBjb25zdApAQCAtMTQwLDYgKzE0MCwxMSBAQCBkb3Vi
bGUgTnVtYmVySW5wdXRUeXBlOjpzdGVwQmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIHBhcnNlVG9E
b3VibGUoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCBkZWZhdWx0U3RlcEJh
c2UoKSk7CiB9CiAKK2RvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlV2l0aERlY2ltYWxQ
bGFjZXModW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcnNl
VG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWlu
QXR0ciksIGRlZmF1bHRTdGVwQmFzZSgpLCBkZWNpbWFsUGxhY2VzKTsKK30KKwogZG91YmxlIE51
bWJlcklucHV0VHlwZTo6ZGVmYXVsdFN0ZXAoKSBjb25zdAogewogICAgIHJldHVybiBudW1iZXJE
ZWZhdWx0U3RlcDsKQEAgLTE1OSw2ICsxNjQsMTUgQEAgZG91YmxlIE51bWJlcklucHV0VHlwZTo6
cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY28K
ICAgICByZXR1cm4gbnVtYmVyVmFsdWU7CiB9CiAKK2RvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OnBh
cnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRl
ZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CisgICAgZG91Ymxl
IG51bWJlclZhbHVlOworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVXaXRoRGVj
aW1hbFBsYWNlcyhzcmMsICZudW1iZXJWYWx1ZSwgZGVjaW1hbFBsYWNlcykpCisgICAgICAgIHJl
dHVybiBkZWZhdWx0VmFsdWU7CisgICAgQVNTRVJUKGlzZmluaXRlKG51bWJlclZhbHVlKSk7Cisg
ICAgcmV0dXJuIG51bWJlclZhbHVlOworfQorCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJp
YWxpemUoZG91YmxlIHZhbHVlKSBjb25zdAogewogICAgIGlmICghaXNmaW5pdGUodmFsdWUpKQpA
QCAtMTY2LDQgKzE4MCwxMCBAQCBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzZXJpYWxpemUoZG91
YmxlIHZhbHVlKSBjb25zdAogICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHZhbHVl
KTsKIH0KIAorZG91YmxlIE51bWJlcklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9yKGRvdWJsZSBz
dGVwKSBjb25zdAoreworICAgIHJldHVybiBzdGVwIC8gcG93KDIuMCwgRkxUX01BTlRfRElHKTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKaW5kZXgg
MjYyOTU1ZTdkOTE5MjRmZDViMTM0YmM1ZTY1ZjkwMjJmYWNiODYwYS4uMWYwYjg4MTRjNzE5MzAz
OGMyZmRkMjdkODg5MDY1OTg2M2U0YzBjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL051bWJl
cklucHV0VHlwZS5oCisrKyBiL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtNTIs
MTAgKzUyLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlKSBj
b25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
ZG91YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqKSBjb25zdDsKICAgICB2
aXJ0dWFsIGRvdWJsZSBkZWZhdWx0U3RlcCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0
ZXBTY2FsZUZhY3RvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGUo
Y29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRv
RG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlLCB1bnNpZ25lZCop
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHNlcmlhbGl6ZShkb3VibGUpIGNvbnN0OworICAg
IHZpcnR1YWwgZG91YmxlIGFjY2VwdGFibGVFcnJvcihkb3VibGUpIGNvbnN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKaW5kZXggMGNlNWU0ZDk3MzBjMTk3YTdkZWJkZjYwYTVlNjFjY2FiZTZiZjY1ZS4uOTFmZjhk
M2NhMmE3N2ZmZGFjZjg3ZjIyMDVlMDg3ZTM5N2Y2MmE3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC05Niw2ICs5Niw3OCBAQCBib29sIHBhcnNlVG9Eb3Vi
bGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUqIHJlc3VsdCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZVdpdGhE
ZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBkb3VibGUgKnJlc3VsdCwgdW5zaWdu
ZWQgKmRlY2ltYWxQbGFjZXMpCit7CisgICAgaWYgKGRlY2ltYWxQbGFjZXMpCisgICAgICAgICpk
ZWNpbWFsUGxhY2VzID0gMDsKKworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUo
c3RyaW5nLCByZXN1bHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY2lt
YWxQbGFjZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc2l6ZV90IGRvdEluZGV4ID0g
c3RyaW5nLmZpbmQoJy4nKTsKKyAgICBzaXplX3QgZUluZGV4ID0gc3RyaW5nLmZpbmQoJ2UnKTsK
KyAgICBpZiAoZUluZGV4ID09IG5vdEZvdW5kKSAKKyAgICAgICAgZUluZGV4ID0gc3RyaW5nLmZp
bmQoJ0UnKTsKKworICAgIHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxhY2VzID0gMDsKKyAgICBpZiAo
ZG90SW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkK
KyAgICAgICAgICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gc3RyaW5nLmxlbmd0aCgpIC0gZG90SW5k
ZXggLSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IGVJ
bmRleCAtIGRvdEluZGV4IC0gMTsKKyAgICB9CisKKyAgICBpbnQgZXhwb25lbnQgPSAwOworICAg
IGlmIChlSW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgdW5zaWduZWQgY3Vyc29yID0gZUlu
ZGV4ICsgMSwgY3Vyc29yU2F2ZWQ7CisgICAgICAgIGludCBkaWdpdCwgZXhwb25lbnRTaWduOwor
ICAgICAgICBpbnQzMl90IGV4cG9uZW50MzI7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CisKKyAgICAgICAgLy8gTm90IHVzaW5nIFN0cmluZy50b0ludCgpIGluIG9y
ZGVyIHRvIHBlcmZvcm0gdGhlIHNhbWUgY29tcHV0YXRpb24gYXMgZHRvYSgpIGRvZXMuCisgICAg
ICAgIGV4cG9uZW50U2lnbiA9IDA7CisgICAgICAgIHN3aXRjaCAoZGlnaXQgPSBzdHJpbmdbY3Vy
c29yXSkgeworICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgIGV4cG9uZW50U2lnbiA9IDE7
CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3Jd
OworICAgICAgICB9CisgICAgICAgIGlmIChkaWdpdCA+PSAnMCcgJiYgZGlnaXQgPD0gJzknKSB7
CisgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoICYmIGRpZ2l0ID09ICcwJykKKyAg
ICAgICAgICAgICAgICBkaWdpdCA9IHN0cmluZ1srK2N1cnNvcl07CisgICAgICAgICAgICBpZiAo
ZGlnaXQgPiAnMCcgJiYgZGlnaXQgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQz
MiA9IGRpZ2l0IC0gJzAnOworICAgICAgICAgICAgICAgIGN1cnNvclNhdmVkID0gY3Vyc29yOwor
ICAgICAgICAgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsZW5ndGggJiYgKGRpZ2l0ID0gc3RyaW5n
WysrY3Vyc29yXSkgPj0gJzAnICYmIGRpZ2l0IDw9ICc5JykKKyAgICAgICAgICAgICAgICAgICAg
ZXhwb25lbnQzMiA9ICgxMCAqIGV4cG9uZW50MzIpICsgZGlnaXQgLSAnMCc7CisgICAgICAgICAg
ICAgICAgaWYgKGN1cnNvciAtIGN1cnNvclNhdmVkID4gOCB8fCBleHBvbmVudDMyID4gMTk5OTkp
CisgICAgICAgICAgICAgICAgICAgIC8qIEF2b2lkIGNvbmZ1c2lvbiBmcm9tIGV4cG9uZW50cwor
ICAgICAgICAgICAgICAgICAgICAgKiBzbyBsYXJnZSB0aGF0IGUgbWlnaHQgb3ZlcmZsb3cuCisg
ICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBleHBvbmVudCA9IDE5
OTk5OyAvKiBzYWZlIGZvciAxNiBiaXQgaW50cyAqLworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4cG9uZW50MzIp
OworICAgICAgICAgICAgICAgIGlmIChleHBvbmVudFNpZ24pCisgICAgICAgICAgICAgICAgICAg
IGV4cG9uZW50ID0gLWV4cG9uZW50OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZXhwb25lbnQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGludERlY2ltYWxQ
bGFjZXMgPSBiYXNlRGVjaW1hbFBsYWNlcyAtIGV4cG9uZW50OworICAgIGlmIChpbnREZWNpbWFs
UGxhY2VzIDwgMCkKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAgIGVsc2UgaWYgKGlu
dERlY2ltYWxQbGFjZXMgPiAxOTk5OSkKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAxOTk5OTsK
KyAgICBlbHNlCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGludERlY2ltYWxQbGFjZXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8vIGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3J1bGVzLWZvci1wYXJz
aW5nLWludGVnZXJzCiBib29sIHBhcnNlSFRNTEludGVnZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwg
aW50JiB2YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5oIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmgKaW5kZXgg
NDgzOTEzODNiNWRiMDlhM2I0NGM1MTg3YjY4M2FmMTQxYzA2OTJlMC4uNGU4ZTU4ZjdkYTZiNjU4
MGE3NGJkMDgzNjA1MTMxMWQ3ODQ5NDYzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgU3RyaW5nIHNlcmlhbGl6ZUZvck51bWJlclR5cGUo
ZG91YmxlKTsKIC8vIExlYWRpbmcgb3IgdHJhaWxpbmcgaWxsZWdhbCBjaGFyYWN0ZXJzIGNhdXNl
IGZhaWx1cmUsIGFzIGRvZXMgcGFzc2luZyBhbiBlbXB0eSBzdHJpbmcuCiAvLyBUaGUgZG91Ymxl
KiBwYXJhbWV0ZXIgbWF5IGJlIDAgdG8gY2hlY2sgaWYgdGhlIHN0cmluZyBjYW4gYmUgcGFyc2Vk
IHdpdGhvdXQgZ2V0dGluZyB0aGUgcmVzdWx0LgogYm9vbCBwYXJzZVRvRG91YmxlRm9yTnVtYmVy
VHlwZShjb25zdCBTdHJpbmcmLCBkb3VibGUqKTsKK2Jvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmLCBkb3VibGUqLCB1bnNpZ25lZCop
OwogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyNydWxlcy1mb3ItcGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0
IFN0cmluZyYsIGludCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73348</attachid>
            <date>2010-11-09 01:57:03 -0800</date>
            <delta_ts>2010-11-09 04:27:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48308-20101109185701.patch</filename>
            <type>text/plain</type>
            <size>18774</size>
            <attacher name="Dai Mikurube">dmikurube</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyODhmNjEyMmI5ODhlMDhhNmYzYmIyYzkyZTlmODNhOGY3N2ZmNjBiLi5iYjk5ZWFk
YzQ5OWRlY2U4YzM0YzgxMzRhYjcwNGJlYWY5MWY3MmM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTEtMDkgIERhaSBNaWt1cnViZSAgPGRtaWt1cnViZUBnb29nbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvbyBwcmVjaXNlIHNl
cmlhbGl6YXRpb24gZnJvbSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gc3RyaW5nIGZvciAibnVt
YmVyIiBpbnB1dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDgzMDgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9p
bnB1dC1zdGVwdXAtc3RlcGRvd24uanM6CisKIDIwMTAtMTEtMDggIENoYW5nIFNodSAgPGNoYW5n
LnNodUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3duLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtc3RlcHVwLXN0ZXBkb3du
LWV4cGVjdGVkLnR4dAppbmRleCBmYWJiNzg3ZjQ2YTU2YmExYmMzOTY1NzhjZDZlYmQyZDI0YTFk
YzUwLi4xZGVkODZkZDA3NjNmZWZkZGE1NDZkM2RkOGI2YTk0NDNjZjg4NDcxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LXN0ZXB1cC1zdGVwZG93bi1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1zdGVwdXAtc3RlcGRvd24tZXhw
ZWN0ZWQudHh0CkBAIC0xNjUsNiArMTY1LDEzIEBAIFBBU1Mgc3RlcFVwKCIxIiwgIjAuMSIsICIi
LCAxMCkgaXMgIjIiCiBQQVNTIGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQu
c3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0
ZXBVcCgpOyBpbnB1dC52YWx1ZSBpcyAiMyIKIFBBU1MgaW5wdXQubWluID0gIjAiOyBzdGVwVXAo
IjAiLCAiMC4wMDM5MjE1Njg2Mjc0NTA5ODAiLCAiMSIsIDI1NSkgaXMgIjEiCiBQQVNTIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU1OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFs
dWUgaXMgIjAiCitSb3VuZGluZworUEFTUyBzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDIp
IGlzICI1LjAxNSIKK1BBU1Mgc3RlcFVwKCI1LjAwNSIsICIwLjAwNSIsICIiLCAxMSkgaXMgIjUu
MDYiCitQQVNTIHN0ZXBVcCgiNS4wMDUiLCAiMC4wMDUiLCAiIiwgMTIpIGlzICI1LjA2NSIKK1BB
U1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIsICIwLjAwNSIsICI1LjAwNSIsIDIpIGlz
ICI1LjAxNSIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIsICIwLjAwNSIsICI1
LjAwNSIsIDExKSBpcyAiNS4wNiIKK1BBU1Mgc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIs
ICIwLjAwNSIsICI1LjAwNSIsIDEyKSBpcyAiNS4wNjUiCiAKIFJhbmdlIHR5cGUKIGZ1bmN0aW9u
IGFyZ3VtZW50cyBhcmUgKG1pbiwgbWF4LCBzdGVwLCB2YWx1ZSwgW3N0ZXBDb3VudF0pCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1zdGVwdXAt
c3RlcGRvd24uanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NjcmlwdC10ZXN0cy9pbnB1dC1z
dGVwdXAtc3RlcGRvd24uanMKaW5kZXggY2Q0YTA3YzJkMDUwYTdmMzA4Nzk1YWIyNzBmNmU4ZWYy
MjFiZGNkNy4uMWJiYzk3ODIwZDc4MzM4OWQzOWRkNzc0MjY1ZTRhOTNlM2IzOTg1MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zY3JpcHQtdGVzdHMvaW5wdXQtc3RlcHVwLXN0
ZXBkb3duLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2NyaXB0LXRlc3RzL2lucHV0
LXN0ZXB1cC1zdGVwZG93bi5qcwpAQCAtMjIxLDYgKzIyMSwxMyBAQCBzaG91bGRCZSgnc3RlcFVw
KCIxIiwgIjAuMSIsICIiLCAxMCknLCAnIjIiJyk7CiBzaG91bGRCZSgnaW5wdXQuc3RlcFVwKCk7
IGlucHV0LnN0ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0
ZXBVcCgpOyBpbnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnN0ZXBVcCgpOyBp
bnB1dC5zdGVwVXAoKTsgaW5wdXQuc3RlcFVwKCk7IGlucHV0LnZhbHVlJywgJyIzIicpOwogc2hv
dWxkQmUoJ2lucHV0Lm1pbiA9ICIwIjsgc3RlcFVwKCIwIiwgIjAuMDAzOTIxNTY4NjI3NDUwOTgw
IiwgIjEiLCAyNTUpJywgJyIxIicpOwogc2hvdWxkQmUoJ2ZvciAodmFyIGkgPSAwOyBpIDwgMjU1
OyBpKyspIHsgaW5wdXQuc3RlcERvd24oKTsgfTsgaW5wdXQudmFsdWUnLCAnIjAiJyk7CitkZWJ1
ZygnUm91bmRpbmcnKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDIp
JywgJyI1LjAxNSInKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDEx
KScsICciNS4wNiInKTsKK3Nob3VsZEJlKCdzdGVwVXAoIjUuMDA1IiwgIjAuMDA1IiwgIiIsIDEy
KScsICciNS4wNjUiJyk7CitzaG91bGRCZSgnc3RlcFVwRXhwbGljaXRCb3VuZHMoIjQiLCAiOSIs
ICIwLjAwNSIsICI1LjAwNSIsIDIpJywgJyI1LjAxNSInKTsKK3Nob3VsZEJlKCdzdGVwVXBFeHBs
aWNpdEJvdW5kcygiNCIsICI5IiwgIjAuMDA1IiwgIjUuMDA1IiwgMTEpJywgJyI1LjA2IicpOwor
c2hvdWxkQmUoJ3N0ZXBVcEV4cGxpY2l0Qm91bmRzKCI0IiwgIjkiLCAiMC4wMDUiLCAiNS4wMDUi
LCAxMiknLCAnIjUuMDY1IicpOwogCiBkZWJ1ZygnJyk7CiBkZWJ1ZygnUmFuZ2UgdHlwZScpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4
NWViN2NlMjJjMWE1OTdjYWNmYjhhMjgwNTU1NzNiODIyYmYwODNhLi44MTFmZDk4NzJmYzRmMTM4
ZDM0MjVmYzgzZDQ3MjllNjg2NDRlYmI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTExLTA5ICBEYWkg
TWlrdXJ1YmUgIDxkbWlrdXJ1YmVAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUb28gcHJlY2lzZSBzZXJpYWxpemF0aW9uIGZyb20g
ZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIHN0cmluZyBmb3IgIm51bWJlciIgaW5wdXQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MzA4
CisKKyAgICAgICAgTW9kaWZpZWQgdG8gY29uc2lkZXIgZGVjaW1hbCBwbGFjZXMgd2hlbiBoYW5k
bGluZyBzdGVwIGFuZCBiYXNlIGluIGFwcGx5U3RlcCgpLgorCisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDogQ29uc2lkZXJpbmcgZGVjaW1hbCBwbGFjZXMgb2YgdGhlIGdpdmVu
ICJzdGVwIiBhdHRyaWJ0dWUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpn
ZXRBbGxvd2VkVmFsdWVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OmdldEFsbG93ZWRWYWx1ZVN0ZXBXaXRoRGVjaW1hbFBsYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjphcHBseVN0ZXApOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDogQWRkZWQgdmlydHVhbCBm
dW5jdGlvbnMgZm9yIGRlY2ltYWwgcGxhY2VzIGFuZCBhbiBhY2NlcHRhYmxlIGVycm9yLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKToKKyAgICAg
ICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvTnVtYmVySW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6c3RlcE1pc21hdGNoKTogVXNp
bmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gYWNjZXB0YWJsZUVycm9yKCkuCisgICAgICAgIChXZWJD
b3JlOjpOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXMpOiBDb25zaWRl
cmluZyBkZWNpbWFsIHBsYWNlcyBvZiB0aGUgZ2l2ZW4gImJhc2UiIGF0dHJpYnV0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxh
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWJlcklucHV0VHlwZTo6YWNjZXB0YWJsZUVycm9y
KTogQ29uY3JldGUgYWNjZXB0YWJsZUVycm9yKCkgZm9yIHRoZSBudW1iZXIgdHlwZS4KKyAgICAg
ICAgKiBodG1sL051bWJlcklucHV0VHlwZS5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VUb0RvdWJsZUZvck51bWJl
clR5cGVXaXRoRGVjaW1hbFBsYWNlcyk6IFBhcnNpbmcgbnVtYmVycyB3aXRoIGRlY2ltYWwgcGxh
Y2VzLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaDoKKwogMjAxMC0x
MS0wOCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMzYxYThj
OTY3YWFlN2U0MDdhN2Q3ZmYzYTk4ZTFkM2NjMmI3ZTllMy4uNTQwNjUyNDc1NjMxMDc3MzlkMGY5
MTk3MThmZTUxMDg5MzQ3ZjgxNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMjUz
LDYgKzI1MywxMSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRW
YWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAogeworICAgIHJldHVybiBnZXRBbGxvd2VkVmFs
dWVTdGVwV2l0aERlY2ltYWxQbGFjZXMoc3RlcCwgMCk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcFdpdGhEZWNpbWFsUGxhY2VzKGRvdWJsZSogc3RlcCwg
dW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CiAgICAgQVNTRVJUKHN0ZXApOwogICAg
IGRvdWJsZSBkZWZhdWx0U3RlcCA9IG1faW5wdXRUeXBlLT5kZWZhdWx0U3RlcCgpOwogICAgIGRv
dWJsZSBzdGVwU2NhbGVGYWN0b3IgPSBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFjdG9yKCk7CkBA
IC0yNjEsMTQgKzI2NiwyNCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1
ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RlcFN0
cmluZyA9IGdldEF0dHJpYnV0ZShzdGVwQXR0cik7CiAgICAgaWYgKHN0ZXBTdHJpbmcuaXNFbXB0
eSgpKSB7CiAgICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVGYWN0b3I7Cisg
ICAgICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAw
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHN0ZXBTdHJpbmcsICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRvdWJsZSBw
YXJzZWQ7Ci0gICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzdGVwU3RyaW5nLCAm
cGFyc2VkKSB8fCBwYXJzZWQgPD0gMC4wKSB7Ci0gICAgICAgICpzdGVwID0gZGVmYXVsdFN0ZXAg
KiBzdGVwU2NhbGVGYWN0b3I7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghZGVjaW1h
bFBsYWNlcykgeworICAgICAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHN0ZXBT
dHJpbmcsICZwYXJzZWQpIHx8IHBhcnNlZCA8PSAwLjApIHsKKyAgICAgICAgICAgICpzdGVwID0g
ZGVmYXVsdFN0ZXAgKiBzdGVwU2NhbGVGYWN0b3I7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGVXaXRoRGVjaW1hbFBsYWNlcyhzdGVwU3RyaW5nLCAmcGFyc2VkLCBkZWNpbWFsUGxh
Y2VzKSB8fCBwYXJzZWQgPD0gMC4wKSB7CisgICAgICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVw
ICogc3RlcFNjYWxlRmFjdG9yOworICAgICAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAgICAgLy8gRm9yIGRhdGUs
IG1vbnRoLCB3ZWVrLCB0aGUgcGFyc2VkIHZhbHVlIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZvciBz
b21lIHR5cGVzLgogICAgIGlmIChtX2lucHV0VHlwZS0+cGFyc2VkU3RlcFZhbHVlU2hvdWxkQmVJ
bnRlZ2VyKCkpCkBAIC0yODUsNyArMzAwLDggQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRB
bGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6YXBwbHlTdGVwKGRvdWJsZSBjb3VudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZG91
YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkgeworICAgIHVu
c2lnbmVkIHN0ZXBEZWNpbWFsUGxhY2VzOworICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcFdp
dGhEZWNpbWFsUGxhY2VzKCZzdGVwLCAmc3RlcERlY2ltYWxQbGFjZXMpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDAsMTYg
KzMxNiwyNiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFwcGx5U3RlcChkb3VibGUgY291bnQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChuZXdWYWx1ZSA8IG1faW5wdXRUeXBlLT5taW5p
bXVtKCkpIHsKKyAgICBkb3VibGUgYWNjZXB0YWJsZUVycm9yID0gbV9pbnB1dFR5cGUtPmFjY2Vw
dGFibGVFcnJvcihzdGVwKTsKKyAgICBpZiAobmV3VmFsdWUgLSBtX2lucHV0VHlwZS0+bWluaW11
bSgpIDwgLWFjY2VwdGFibGVFcnJvcikgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRvdWJsZSBiYXNlID0gbV9pbnB1dFR5cGUt
PnN0ZXBCYXNlKCk7Ci0gICAgbmV3VmFsdWUgPSBiYXNlICsgcm91bmQoKG5ld1ZhbHVlIC0gYmFz
ZSkgLyBzdGVwKSAqIHN0ZXA7Ci0gICAgaWYgKG5ld1ZhbHVlID4gbV9pbnB1dFR5cGUtPm1heGlt
dW0oKSkgeworICAgIGlmIChuZXdWYWx1ZSA8IG1faW5wdXRUeXBlLT5taW5pbXVtKCkpCisgICAg
ICAgIG5ld1ZhbHVlID0gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKKyAgICB1bnNpZ25lZCBiYXNl
RGVjaW1hbFBsYWNlczsKKyAgICBkb3VibGUgYmFzZSA9IG1faW5wdXRUeXBlLT5zdGVwQmFzZVdp
dGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CisgICAgYmFzZURlY2ltYWxQbGFj
ZXMgPSBtaW4oYmFzZURlY2ltYWxQbGFjZXMsIDE2dSk7CisgICAgaWYgKG5ld1ZhbHVlIDwgcG93
KDEwLjAsIDIxLjApKSB7CisgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgYmFzZURlY2ltYWxQbGFjZXMpKSk7
CisgICAgICAgIG5ld1ZhbHVlID0gcm91bmQoKGJhc2UgKyByb3VuZCgobmV3VmFsdWUgLSBiYXNl
KSAvIHN0ZXApICogc3RlcCkgKiBzY2FsZSkgLyBzY2FsZTsKKyAgICB9CisgICAgaWYgKG5ld1Zh
bHVlIC0gbV9pbnB1dFR5cGUtPm1heGltdW0oKSA+IGFjY2VwdGFibGVFcnJvcikgewogICAgICAg
ICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlm
IChuZXdWYWx1ZSA+IG1faW5wdXRUeXBlLT5tYXhpbXVtKCkpCisgICAgICAgIG5ld1ZhbHVlID0g
bV9pbnB1dFR5cGUtPm1heGltdW0oKTsKICAgICBzZXRWYWx1ZUFzTnVtYmVyKG5ld1ZhbHVlLCBl
Yyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDFhMDQ5MGU3MDFhMWIxYjUyN2I4
NzdmY2RkN2ZlZjQ1NDU3MzhiZDcuLjBhY2YyMWU3NWU4ZjcxYmY3OTY0NjVjNDgxZmUxMTljNDVj
MTdmMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gU2V0cyB0aGUgImFsbG93ZWQgdmFsdWUgc3RlcCIgZGVmaW5lZCBpbiB0aGUgSFRN
TCBzcGVjIHRvIHRoZSBzcGVjaWZpZWQgZG91YmxlIHBvaW50ZXIuCiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFs
bG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29uc3Q7CisgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVT
dGVwV2l0aERlY2ltYWxQbGFjZXMoZG91YmxlKiwgdW5zaWduZWQqKSBjb25zdDsKICAgICAvLyBG
b3IgVmFsaWRpdHlTdGF0ZS4KICAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCBjODcwYzY5NDNlNmFiY2UwODcyZDBmOWQ2ODc2NGY1
ZGQxNmI1OGJhLi5jMGNjMzQyNzkwYWM5MWVlNTJlNTI3YjM1YThiM2MxOGRmOWJmOGQ0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcApAQCAtMjM3LDYgKzIzNywxMyBAQCBkb3VibGUgSW5wdXRUeXBlOjpzdGVwQmFz
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2RvdWJsZSBJbnB1dFR5cGU6OnN0ZXBCYXNl
V2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqIGRlY2ltYWxQbGFjZXMpIGNvbnN0Cit7CisgICAg
aWYgKGRlY2ltYWxQbGFjZXMpCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICByZXR1
cm4gc3RlcEJhc2UoKTsKK30KKwogZG91YmxlIElucHV0VHlwZTo6ZGVmYXVsdFN0ZXAoKSBjb25z
dAogewogICAgIHJldHVybiBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKQEAg
LTI1Nyw2ICsyNjQsMTEgQEAgYm9vbCBJbnB1dFR5cGU6OnNjYWxlZFN0ZXBWYWxldVNob3VsZEJl
SW50ZWdlcigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitkb3VibGUgSW5wdXRUeXBl
OjphY2NlcHRhYmxlRXJyb3IoZG91YmxlKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCiBS
ZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRl
T2JqZWN0KGVsZW1lbnQoKSwgc3R5bGUpOwpAQCAtMjY3LDYgKzI3OSwxMyBAQCBkb3VibGUgSW5w
dXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUp
IGNvbnN0CiAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIH0KIAorZG91YmxlIElucHV0VHlwZTo6
cGFyc2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCB1bnNpZ25lZCAqZGVjaW1hbFBsYWNlcykgY29uc3QKK3sKKyAgICBpZiAo
ZGVjaW1hbFBsYWNlcykKKyAgICAgICAgKmRlY2ltYWxQbGFjZXMgPSAwOworICAgIHJldHVybiBw
YXJzZVRvRG91YmxlKHNyYywgZGVmYXVsdFZhbHVlKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnBh
cnNlVG9EYXRlQ29tcG9uZW50cyhjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmggYi9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggZjYwMTA1MTNmYmM2
ZDA3NmQ1NTE1M2RiYjE3ZTFkNzk4NDRmNTE1ZS4uNzhhYWI3YzgxYTRkYTY4M2IxNjZjNzkxZmNk
Nzk1YjE3MWI4Yzc0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBi
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtOTAsMTAgKzkwLDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91Ymxl
IHN0ZXBCYXNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1h
bFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGRlZmF1bHRTdGVw
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcFNjYWxlRmFjdG9yKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHBhcnNlZFN0ZXBWYWx1ZVNob3VsZEJlSW50ZWdlcigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBzY2FsZWRTdGVwVmFsZXVTaG91bGRCZUludGVnZXIoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IoZG91YmxlKSBjb25zdDsKIAogICAg
IC8vIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zCiAKQEAgLTEwNCw2ICsxMDYsMTAgQEAgcHVibGlj
OgogICAgIC8vIHN1Y2NlZWRzOyBSZXR1cm5zIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRoaXMg
ZnVuY3Rpb24gY2FuCiAgICAgLy8gcmV0dXJuIE5hTiBvciBJbmZpbml0eSBvbmx5IGlmIGRlZmF1
bHRWYWx1ZSBpcyBOYU4gb3IgSW5maW5pdHkuCiAgICAgdmlydHVhbCBkb3VibGUgcGFyc2VUb0Rv
dWJsZShjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICAvLyBQ
YXJzZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgZm9yIHRoZSB0eXBlIGFzIHBhcnNlVG9Eb3VibGUo
KSBkb2VzLgorICAgIC8vIEluIGFkZGl0aW9uLCBpdCBzdG9yZXMgdGhlIG51bWJlciBvZiBkaWdp
dHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQKKyAgICAvLyBpbnRvICpkZWNpbWFsUGxhY2VzLgor
ICAgIHZpcnR1YWwgZG91YmxlIHBhcnNlVG9Eb3VibGVXaXRoRGVjaW1hbFBsYWNlcyhjb25zdCBT
dHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSwgdW5zaWduZWQgKmRlY2ltYWxQbGFjZXMp
IGNvbnN0OwogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBmb3IgdGhpcyBJbnB1
dFR5cGUsIGFuZCByZXR1cm5zIHRydWUgaWYgaXQKICAgICAvLyBpcyBzdWNjZXNzZnVsbHkgcGFy
c2VkLiBBbiBpbnN0YW5jZSBwb2ludGVkIGJ5IHRoZSBEYXRlQ29tcG9uZW50cyoKICAgICAvLyBw
YXJhbWV0ZXIgd2lsbCBoYXZlIHBhcnNlZCB2YWx1ZXMgYW5kIGJlIG1vZGlmaWVkIGV2ZW4gaWYg
dGhlIHBhcnNpbmcKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
IGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKaW5kZXggMjhmNTEwYzFiZjQ1YmMz
ZjM5NWE3MzY0NGE1NzBkYjk5ODU4N2U1NC4uN2E0ZDUwNDczYjdiNGJjYTY1YTliMGMxOTA3YWU3
ZDE1MzE3ZjU3YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5jcHAKQEAgLTEzMSw4ICsxMzEsOCBA
QCBib29sIE51bWJlcklucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUs
IGRvdWJsZSBzdGVwKSBjb25zdAogICAgIGRvdWJsZSByZW1haW5kZXIgPSBmYWJzKGRvdWJsZVZh
bHVlIC0gc3RlcCAqIHJvdW5kKGRvdWJsZVZhbHVlIC8gc3RlcCkpOwogICAgIC8vIEFjY2VwdHMg
ZXJyb3MgaW4gbG93ZXIgZnJhY3Rpb25hbCBwYXJ0IHdoaWNoIElFRUUgNzU0IHNpbmdsZS1wcmVj
aXNpb24KICAgICAvLyBjYW4ndCByZXByZXNlbnQuCi0gICAgZG91YmxlIGFjY2VwdGFibGVFcnJv
ciA9IHN0ZXAgLyBwb3coMi4wLCBGTFRfTUFOVF9ESUcpOwotICAgIHJldHVybiBhY2NlcHRhYmxl
RXJyb3IgPCByZW1haW5kZXIgJiYgcmVtYWluZGVyIDwgKHN0ZXAgLSBhY2NlcHRhYmxlRXJyb3Ip
OworICAgIGRvdWJsZSBjb21wdXRlZEFjY2VwdGFibGVFcnJvciA9IGFjY2VwdGFibGVFcnJvcihz
dGVwKTsKKyAgICByZXR1cm4gY29tcHV0ZWRBY2NlcHRhYmxlRXJyb3IgPCByZW1haW5kZXIgJiYg
cmVtYWluZGVyIDwgKHN0ZXAgLSBjb21wdXRlZEFjY2VwdGFibGVFcnJvcik7CiB9CiAKIGRvdWJs
ZSBOdW1iZXJJbnB1dFR5cGU6OnN0ZXBCYXNlKCkgY29uc3QKQEAgLTE0MCw2ICsxNDAsMTEgQEAg
ZG91YmxlIE51bWJlcklucHV0VHlwZTo6c3RlcEJhc2UoKSBjb25zdAogICAgIHJldHVybiBwYXJz
ZVRvRG91YmxlKGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSwgZGVmYXVsdFN0
ZXBCYXNlKCkpOwogfQogCitkb3VibGUgTnVtYmVySW5wdXRUeXBlOjpzdGVwQmFzZVdpdGhEZWNp
bWFsUGxhY2VzKHVuc2lnbmVkKiBkZWNpbWFsUGxhY2VzKSBjb25zdAoreworICAgIHJldHVybiBw
YXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KG1pbkF0dHIpLCBkZWZhdWx0U3RlcEJhc2UoKSwgZGVjaW1hbFBsYWNlcyk7Cit9CisKIGRvdWJs
ZSBOdW1iZXJJbnB1dFR5cGU6OmRlZmF1bHRTdGVwKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVt
YmVyRGVmYXVsdFN0ZXA7CkBAIC0xNTksNiArMTY0LDE1IEBAIGRvdWJsZSBOdW1iZXJJbnB1dFR5
cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSBkZWZhdWx0VmFsdWUp
IGNvCiAgICAgcmV0dXJuIG51bWJlclZhbHVlOwogfQogCitkb3VibGUgTnVtYmVySW5wdXRUeXBl
OjpwYXJzZVRvRG91YmxlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJs
ZSBkZWZhdWx0VmFsdWUsIHVuc2lnbmVkICpkZWNpbWFsUGxhY2VzKSBjb25zdAoreworICAgIGRv
dWJsZSBudW1iZXJWYWx1ZTsKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlV2l0
aERlY2ltYWxQbGFjZXMoc3JjLCAmbnVtYmVyVmFsdWUsIGRlY2ltYWxQbGFjZXMpKQorICAgICAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXJWYWx1ZSkp
OworICAgIHJldHVybiBudW1iZXJWYWx1ZTsKK30KKwogU3RyaW5nIE51bWJlcklucHV0VHlwZTo6
c2VyaWFsaXplKGRvdWJsZSB2YWx1ZSkgY29uc3QKIHsKICAgICBpZiAoIWlzZmluaXRlKHZhbHVl
KSkKQEAgLTE2Niw0ICsxODAsMTAgQEAgU3RyaW5nIE51bWJlcklucHV0VHlwZTo6c2VyaWFsaXpl
KGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2
YWx1ZSk7CiB9CiAKK2RvdWJsZSBOdW1iZXJJbnB1dFR5cGU6OmFjY2VwdGFibGVFcnJvcihkb3Vi
bGUgc3RlcCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RlcCAvIHBvdygyLjAsIEZMVF9NQU5UX0RJ
Ryk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL051bWJlcklucHV0VHlwZS5oIGIvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmlu
ZGV4IDI2Mjk1NWU3ZDkxOTI0ZmQ1YjEzNGJjNWU2NWY5MDIyZmFjYjg2MGEuLjFmMGI4ODE0Yzcx
OTMwMzhjMmZkZDI3ZDg4OTA2NTk4NjNlNGMwYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9O
dW1iZXJJbnB1dFR5cGUuaAorKysgYi9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKQEAg
LTUyLDEwICs1MiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJs
ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CiAg
ICAgdmlydHVhbCBkb3VibGUgZGVmYXVsdFN0ZXAoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJs
ZSBzdGVwU2NhbGVGYWN0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwYXJzZVRvRG91
YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3Q7CisgICAgdmlydHVhbCBkb3VibGUgcGFy
c2VUb0RvdWJsZVdpdGhEZWNpbWFsUGxhY2VzKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgdW5zaWdu
ZWQqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemUoZG91YmxlKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGRvdWJsZSBhY2NlcHRhYmxlRXJyb3IoZG91YmxlKSBjb25zdDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCmluZGV4IDBjZTVlNGQ5NzMwYzE5N2E3ZGViZGY2MGE1ZTYxY2NhYmU2YmY2NWUuLjkx
ZmY4ZDNjYTJhNzdmZmRhY2Y4N2YyMjA1ZTA4N2UzOTdmNjJhNzcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAtOTYsNiArOTYsNzggQEAgYm9vbCBwYXJzZVRv
RG91YmxlRm9yTnVtYmVyVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlKiByZXN1bHQp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGVX
aXRoRGVjaW1hbFBsYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlICpyZXN1bHQsIHVu
c2lnbmVkICpkZWNpbWFsUGxhY2VzKQoreworICAgIGlmIChkZWNpbWFsUGxhY2VzKQorICAgICAg
ICAqZGVjaW1hbFBsYWNlcyA9IDA7CisKKyAgICBpZiAoIXBhcnNlVG9Eb3VibGVGb3JOdW1iZXJU
eXBlKHN0cmluZywgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNpbWFsUGxhY2VzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHNpemVfdCBkb3RJbmRl
eCA9IHN0cmluZy5maW5kKCcuJyk7CisgICAgc2l6ZV90IGVJbmRleCA9IHN0cmluZy5maW5kKCdl
Jyk7CisgICAgaWYgKGVJbmRleCA9PSBub3RGb3VuZCkgCisgICAgICAgIGVJbmRleCA9IHN0cmlu
Zy5maW5kKCdFJyk7CisKKyAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlcyA9IDA7CisgICAg
aWYgKGRvdEluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChlSW5kZXggPT0gbm90Rm91
bmQpCisgICAgICAgICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IHN0cmluZy5sZW5ndGgoKSAtIGRv
dEluZGV4IC0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmFzZURlY2ltYWxQbGFjZXMg
PSBlSW5kZXggLSBkb3RJbmRleCAtIDE7CisgICAgfQorCisgICAgaW50IGV4cG9uZW50ID0gMDsK
KyAgICBpZiAoZUluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHVuc2lnbmVkIGN1cnNvciA9
IGVJbmRleCArIDEsIGN1cnNvclNhdmVkOworICAgICAgICBpbnQgZGlnaXQsIGV4cG9uZW50U2ln
bjsKKyAgICAgICAgaW50MzJfdCBleHBvbmVudDMyOworICAgICAgICBzaXplX3QgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpOworCisgICAgICAgIC8vIE5vdCB1c2luZyBTdHJpbmcudG9JbnQoKSBp
biBvcmRlciB0byBwZXJmb3JtIHRoZSBzYW1lIGNvbXB1dGF0aW9uIGFzIGR0b2EoKSBkb2VzLgor
ICAgICAgICBleHBvbmVudFNpZ24gPSAwOworICAgICAgICBzd2l0Y2ggKGRpZ2l0ID0gc3RyaW5n
W2N1cnNvcl0pIHsKKyAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICBleHBvbmVudFNpZ24g
PSAxOworICAgICAgICBjYXNlICcrJzoKKyAgICAgICAgICAgIGRpZ2l0ID0gc3RyaW5nWysrY3Vy
c29yXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGlnaXQgPj0gJzAnICYmIGRpZ2l0IDw9ICc5
JykgeworICAgICAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxlbmd0aCAmJiBkaWdpdCA9PSAnMCcp
CisgICAgICAgICAgICAgICAgZGlnaXQgPSBzdHJpbmdbKytjdXJzb3JdOworICAgICAgICAgICAg
aWYgKGRpZ2l0ID4gJzAnICYmIGRpZ2l0IDw9ICc5JykgeworICAgICAgICAgICAgICAgIGV4cG9u
ZW50MzIgPSBkaWdpdCAtICcwJzsKKyAgICAgICAgICAgICAgICBjdXJzb3JTYXZlZCA9IGN1cnNv
cjsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGVuZ3RoICYmIChkaWdpdCA9IHN0
cmluZ1srK2N1cnNvcl0pID49ICcwJyAmJiBkaWdpdCA8PSAnOScpCisgICAgICAgICAgICAgICAg
ICAgIGV4cG9uZW50MzIgPSAoMTAgKiBleHBvbmVudDMyKSArIGRpZ2l0IC0gJzAnOworICAgICAg
ICAgICAgICAgIGlmIChjdXJzb3IgLSBjdXJzb3JTYXZlZCA+IDggfHwgZXhwb25lbnQzMiA+IDE5
OTk5KQorICAgICAgICAgICAgICAgICAgICAvKiBBdm9pZCBjb25mdXNpb24gZnJvbSBleHBvbmVu
dHMKKyAgICAgICAgICAgICAgICAgICAgICogc28gbGFyZ2UgdGhhdCBlIG1pZ2h0IG92ZXJmbG93
LgorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQg
PSAxOTk5OTsgLyogc2FmZSBmb3IgMTYgYml0IGludHMgKi8KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gc3RhdGljX2Nhc3Q8aW50PihleHBvbmVu
dDMyKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwb25lbnRTaWduKQorICAgICAgICAgICAgICAg
ICAgICBleHBvbmVudCA9IC1leHBvbmVudDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIGV4cG9uZW50ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCBpbnREZWNp
bWFsUGxhY2VzID0gYmFzZURlY2ltYWxQbGFjZXMgLSBleHBvbmVudDsKKyAgICBpZiAoaW50RGVj
aW1hbFBsYWNlcyA8IDApCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMDsKKyAgICBlbHNlIGlm
IChpbnREZWNpbWFsUGxhY2VzID4gMTk5OTkpCisgICAgICAgICpkZWNpbWFsUGxhY2VzID0gMTk5
OTk7CisgICAgZWxzZQorICAgICAgICAqZGVjaW1hbFBsYWNlcyA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihpbnREZWNpbWFsUGxhY2VzKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNydWxlcy1mb3It
cGFyc2luZy1pbnRlZ2VycwogYm9vbCBwYXJzZUhUTUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYgaW5w
dXQsIGludCYgdmFsdWUpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuaCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmlu
ZGV4IDQ4MzkxMzgzYjVkYjA5YTNiNDRjNTE4N2I2ODNhZjE0MWMwNjkyZTAuLjRlOGU1OGY3ZGE2
YjY1ODBhNzRiZDA4MzYwNTEzMTFkNzg0OTQ2M2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5oCkBAIC00NCw2ICs0NCw3IEBAIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKGRvdWJsZSk7CiAvLyBMZWFkaW5nIG9yIHRyYWlsaW5nIGlsbGVnYWwgY2hhcmFjdGVycyBj
YXVzZSBmYWlsdXJlLCBhcyBkb2VzIHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLgogLy8gVGhlIGRv
dWJsZSogcGFyYW1ldGVyIG1heSBiZSAwIHRvIGNoZWNrIGlmIHRoZSBzdHJpbmcgY2FuIGJlIHBh
cnNlZCB3aXRob3V0IGdldHRpbmcgdGhlIHJlc3VsdC4KIGJvb2wgcGFyc2VUb0RvdWJsZUZvck51
bWJlclR5cGUoY29uc3QgU3RyaW5nJiwgZG91YmxlKik7Citib29sIHBhcnNlVG9Eb3VibGVGb3JO
dW1iZXJUeXBlV2l0aERlY2ltYWxQbGFjZXMoY29uc3QgU3RyaW5nJiwgZG91YmxlKiwgdW5zaWdu
ZWQqKTsKIAogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jcnVsZXMtZm9yLXBhcnNpbmctaW50ZWdlcnMKIGJvb2wgcGFyc2VIVE1MSW50ZWdlcihj
b25zdCBTdHJpbmcmLCBpbnQmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>