<?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>89439</bug_id>
          
          <creation_ts>2012-06-19 00:20:23 -0700</creation_ts>
          <short_desc>[Forms] Make step action of SpinButtonElement replaceable</short_desc>
          <delta_ts>2012-06-20 22:11:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88970</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652134</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-19 00:20:23 -0700</bug_when>
    <thetext>To introduce time fields UI, we would like to use SpinButtonElement and handle step action different from current implementation, it is HTMLInputElement::stepFromRenderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652178</commentid>
    <comment_count>1</comment_count>
      <attachid>148278</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 01:02:55 -0700</bug_when>
    <thetext>Created attachment 148278
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652180</commentid>
    <comment_count>2</comment_count>
      <attachid>148278</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 01:03:56 -0700</bug_when>
    <thetext>Comment on attachment 148278
Patch 1

Could you review this patch?
Thanks in advance.

* This is a part of time fields UI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652202</commentid>
    <comment_count>3</comment_count>
      <attachid>148278</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-19 01:25:32 -0700</bug_when>
    <thetext>Comment on attachment 148278
Patch 1

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

&gt; Source/WebCore/html/TextFieldInputType.h:87
&gt;  
&gt; +    virtual void spinButtonStepDown() OVERRIDE;
&gt; +    virtual void spinButtonStepUp() OVERRIDE;

nit: Add a comment like &quot;// SpinButtonElement::Callback functions.&quot;

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:301
&gt;                  if (m_upDownState != Indeterminate) {
&gt; -                    input-&gt;stepUpFromRenderer(m_upDownState == Up ? 1 : -1);
&gt; +                    if (m_upDownState == Up)
&gt; +                        m_callback.spinButtonStepUp();
&gt; +                    else
&gt; +                        m_callback.spinButtonStepDown();

How do you make sure m_callback object is live after spinButtonStepUp/Down calls, which dispatch &apos;change&apos; event and JavaScript code change the input type.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.h:99
&gt; +    class Callback {

The name &apos;Callback&apos; sounds too generic.
It should be more specific.  e.g. ValueUpdater, ValueChangeDelegate, ...

&gt; Source/WebCore/html/shadow/TextControlInnerElements.h:102
&gt; +        virtual void spinButtonStepDown() = 0;
&gt; +        virtual void spinButtonStepUp() = 0;

Why do you separate the functionality of stepUpFromRenderer() into two functions? It makes the patch larger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652211</commentid>
    <comment_count>4</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-19 01:34:44 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/html/shadow/TextControlInnerElements.h:102
&gt; &gt; +        virtual void spinButtonStepDown() = 0;
&gt; &gt; +        virtual void spinButtonStepUp() = 0;
&gt; 
&gt; Why do you separate the functionality of stepUpFromRenderer() into two functions? It makes the patch larger.

* We support only 1 or -1.
** It seems stepUp(-1) == stepDown(1) isn&apos;t so clear.
** We may not want to check amount is zero or not.
** In stepUpFromRenderer, we have ASSERT(n) and if (!n) return
* DateTimeNumericFieldElement, we may not want to write
https://bugs.webkit.org/attachment.cgi?id=147253&amp;action=prettypatch

void DateTimeNumericFieldElement::spinButtonStep(int amount)
{
    if (!amount)
       return;

    if (m_hasValue)
        if (amount &gt; 0)
            m_value = m_value == m_minimum ? m_maximum : ensureInRange(m_value -   1);
        else
            m_value = m_value == m_maximum ? m_minimum : ensureInRange(m_value +  1);

    else
        m_value = amount &gt; 0 ? m_maximum : m_minimum;

    m_hasValue = true;
    updateText();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652247</commentid>
    <comment_count>5</comment_count>
      <attachid>148290</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 02:14:30 -0700</bug_when>
    <thetext>Created attachment 148290
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652248</commentid>
    <comment_count>6</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-19 02:16:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Source/WebCore/html/shadow/TextControlInnerElements.h:102
&gt; &gt; &gt; +        virtual void spinButtonStepDown() = 0;
&gt; &gt; &gt; +        virtual void spinButtonStepUp() = 0;
&gt; &gt; 
&gt; &gt; Why do you separate the functionality of stepUpFromRenderer() into two functions? It makes the patch larger.
&gt; 
&gt; * We support only 1 or -1.
&gt; ** It seems stepUp(-1) == stepDown(1) isn&apos;t so clear.
&gt; ** We may not want to check amount is zero or not.
&gt; ** In stepUpFromRenderer, we have ASSERT(n) and if (!n) return
&gt; * DateTimeNumericFieldElement, we may not want to write
&gt; https://bugs.webkit.org/attachment.cgi?id=147253&amp;action=prettypatch
&gt; 
&gt; void DateTimeNumericFieldElement::spinButtonStep(int amount)
&gt; {
&gt;     if (!amount)
&gt;        return;
&gt; 
&gt;     if (m_hasValue)
&gt;         if (amount &gt; 0)
&gt;             m_value = m_value == m_minimum ? m_maximum : ensureInRange(m_value -   1);
&gt;         else
&gt;             m_value = m_value == m_maximum ? m_minimum : ensureInRange(m_value +  1);
&gt; 
&gt;     else
&gt;         m_value = amount &gt; 0 ? m_maximum : m_minimum;
&gt; 
&gt;     m_hasValue = true;
&gt;     updateText();
&gt; }

Another option is using StepDirection enum, although we need to use switch with default ASSERT_NOT_REACHED. It is too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652249</commentid>
    <comment_count>7</comment_count>
      <attachid>148290</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 02:18:29 -0700</bug_when>
    <thetext>Comment on attachment 148290
Patch 2

Could you review this patch?
Thanks in advance.

= Changes since last patch =
* Rename SpinButtonElement::Callback to StepActionHandler
* SpinButtonElement keeps m_stepActionHandler as pointer and checks it isn&apos;t nullptr before calling action.
* Add SpinButtonElement::removeStepActionHandler
** This method will be called from TextFieldInputType dtor and destroyShadowSubtree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652268</commentid>
    <comment_count>8</comment_count>
      <attachid>148290</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-19 02:43:06 -0700</bug_when>
    <thetext>Comment on attachment 148290
Patch 2

Attachment 148290 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12988019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652311</commentid>
    <comment_count>9</comment_count>
      <attachid>148290</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 03:51:05 -0700</bug_when>
    <thetext>Comment on attachment 148290
Patch 2

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

&gt; Source/WebCore/html/InputType.h:299
&gt; +    void stepUpFromRenderer(int);

We should move stepUpFromRenderer to TextFieldInputType, because only TextFieldInputType uses it.
Note: We need to expose applyStep as protected for this.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.h:101
&gt; +        virtual void spinButtonStepDown() = 0;

We should have virtual destructor, clang issues warning for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653077</commentid>
    <comment_count>10</comment_count>
      <attachid>148480</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 18:45:23 -0700</bug_when>
    <thetext>Created attachment 148480
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653083</commentid>
    <comment_count>11</comment_count>
      <attachid>148480</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 18:52:51 -0700</bug_when>
    <thetext>Comment on attachment 148480
Patch 3

Could you review this patch?
Thanks in advance.

* I would like to use separate methods for Step Up and Step Down. Because, 
** it isn&apos;t Intuitive that stepUp(-1)==stepDown(1)
** We don&apos;t want to check parameter isn&apos;t zero and to have ASSERT(n).
** I guess if we have stepUpFromRenderer and stepDownFromRenderer, it code could be simpler.

= Changes since last patch =
* Rename SpinButtonElement::Callback to StepActionHandler
* SpinButtonElement keeps m_stepActionHandler as pointer and checks it isn&apos;t nullptr before calling action.
* Add SpinButtonElement::removeStepActionHandler
** This method will be called from TextFieldInputType dtor and destroyShadowSubtree
* Add virtual destructor to StepButtonElement for Mac-clang
* Move InputType::stepUpFromRenderer to TextFieldInputType
* Expose InputType::applyStep as protected for stepUpFromRenderer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653167</commentid>
    <comment_count>12</comment_count>
      <attachid>148480</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-19 21:23:15 -0700</bug_when>
    <thetext>Comment on attachment 148480
Patch 3

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

&gt; Source/WebCore/html/TextFieldInputType.cpp:-155
&gt; -    int step = 0;

Not using variable step makes patch size bigger, but new code is smaller than current and there is no extra variable initialization, although it will be removed by compiler but readers need to track how variable step is used.

&gt; Source/WebCore/html/TextFieldInputType.cpp:-170
&gt; -    int step = 0;

Not using variable step makes patch size bigger, but new code is smaller than current and there is no extra variable initialization, although it will be removed by compiler but readers need to track how variable step is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653305</commentid>
    <comment_count>13</comment_count>
      <attachid>148480</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-20 02:37:54 -0700</bug_when>
    <thetext>Comment on attachment 148480
Patch 3

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

&gt; Source/WebCore/ChangeLog:29
&gt; +        (WebCore::TextFieldInputType::stepUpFromRenderer): Moved from InputType.

I object moving it.  Non-textfield UI might use this feature in the future.  This feature is not related to &quot;text field&quot; essentially.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:303
&gt; +                    if (m_stepActionHandler) {
&gt; +                        if (m_upDownState == Up)
&gt; +                            m_stepActionHandler-&gt;spinButtonStepUp();
&gt; +                        else
&gt; +                            m_stepActionHandler-&gt;spinButtonStepDown();
&gt; +                    }

We had better share the code with the next part.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:375
&gt; +    if (!m_stepActionHandler)
&gt; +        return;
&gt; +
&gt; +    if (amount &gt; 0)
&gt; +        m_stepActionHandler-&gt;spinButtonStepUp();
&gt; +    else if (amount &lt; 0)
&gt; +        m_stepActionHandler-&gt;spinButtonStepDown();

We had better share the code with the previous part.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.h:106
&gt; +    static PassRefPtr&lt;SpinButtonElement&gt; create(Document*, StepActionHandler&amp;);

We should mention that a StepActionHandler implementation must call removeStepActionHandler().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654106</commentid>
    <comment_count>14</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-06-20 18:27:25 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 148480 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148480&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:29
&gt; &gt; +        (WebCore::TextFieldInputType::stepUpFromRenderer): Moved from InputType.
&gt; 
&gt; I object moving it.  Non-textfield UI might use this feature in the future.  This feature is not related to &quot;text field&quot; essentially.

stepUpFromRenderer is implementation of spin button event action and spin button is part of TextFieldInputType at this time.

If another feature wants to use stepUpFromRenderer, it will move back into InputType or another good place.

If we could have Steppable class, we would move stepUpFromRenderer to there. Although, RangeInputType should be Steppable but it is different from other Steppable classes.

I believe　limiting scope of identifier helps us for future modification and maintenance.

Is stepUpBySpinButton better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654196</commentid>
    <comment_count>15</comment_count>
      <attachid>148722</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-20 20:40:15 -0700</bug_when>
    <thetext>Created attachment 148722
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654199</commentid>
    <comment_count>16</comment_count>
      <attachid>148722</attachid>
    <who name="">yosin</who>
    <bug_when>2012-06-20 20:42:25 -0700</bug_when>
    <thetext>Comment on attachment 148722
Patch 4

Could you review this patch?
Thanks in advance.

== Changes since last review ==
* Don&apos;t move InputType::stepUpFromRenderer =&gt; No changes in InputType.{cpp,h} in this patch.
* Introduce SpinButtonElement::doStepAction
* Added comment for owner of SpinButtonElement must call removeActionHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654212</commentid>
    <comment_count>17</comment_count>
      <attachid>148722</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-20 21:14:33 -0700</bug_when>
    <thetext>Comment on attachment 148722
Patch 4

looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654241</commentid>
    <comment_count>18</comment_count>
      <attachid>148722</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 22:11:43 -0700</bug_when>
    <thetext>Comment on attachment 148722
Patch 4

Clearing flags on attachment: 148722

Committed r120903: &lt;http://trac.webkit.org/changeset/120903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654242</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 22:11:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148278</attachid>
            <date>2012-06-19 01:02:55 -0700</date>
            <delta_ts>2012-06-19 02:14:25 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-89439-20120619170254.patch</filename>
            <type>text/plain</type>
            <size>10986</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJhN2UzOTdmNWE4ZTZj
ZGUwMmIzNmQ0MzVjNDBlNTY2OGQzOWYyOS4uZTk5MmY4MTM1YjE3NmVhODU2OWY5YWYyNDA1N2M0
MTZmOWM5NjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA2LTE5ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNYWtl
IHN0ZXAgYWN0aW9uIG9mIFNwaW5CdXR0b25FbGVtZW50IHJlcGxhY2VhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBTcGluQnV0dG9uRWxlbWVudDo6Q2FsbGJhY2sgdG8gc3BlY2lmeSBzdGVwCisgICAgICAgIGFj
dGlvbiBieSBjb250cm9sIGNsaWVudHMgZm9yIHVzaW5nIFNwaW5CdXR0b25FbGVtZW50IGJ5Cisg
ICAgICAgIFRleHRGaWVsZElucHV0VHlwZSBhbmQgZnV0dXJlIHZlcnNpb24gb2YgVGltZUlucHV0
RmllbGQuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcyBpbXByb3ZpbmcgZmxleGliaWxp
dHkgb2YgU3BpbkJ1dHRvbkVsZW1lbnQsIHdlCisgICAgICAgIGZyZWUgSFRNTElucHV0RWxlbWVu
dCBmcm9tIFNwaW5CdXR0b25FbGVtZW50IGRlcGVuZGVuY3kgb24KKyAgICAgICAgc3RlcFVwRnJv
bVJlbmRlcmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNo
YW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6IFJl
bW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6IFJlbW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgIChIVE1MSW5wdXRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBl
KTogTW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkgZnJvbSBwdWJsaWMgdG8gcHJvdGVjdGVkLgor
ICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbik6IENo
YW5nZWQgdG8gY2FsbCBzcGluQnV0dG9uU3RlcHtEb3duLFVwfQorICAgICAgICAoV2ViQ29yZTo6
VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbik6IENoYW5n
ZWQgdG8gY2FsbCBzcGluQnV0dG9uU3RlcHtEb3duLFVwfQorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKTogQWRkZWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OkNhbGxiYWNrIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElu
cHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBEb3duKTogQWRkZWQgZm9yIGltcGxlbWVudGF0aW9uIG9m
IFNwaW5CdXR0b25FbGVtZW50OjpDYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBVcCk6IEFkZGVkIGZvciBpbXBsZW1lbnRhdGlvbiBv
ZiBTcGluQnV0dG9uRWxlbWVudDo6Q2FsbGJhY2suCisgICAgICAgICogaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKFRleHRGaWVsZElucHV0VHlwZSk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudCk6IEFkZGVkIENhbGxiYWNrIHBh
cmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogQ2hhbmdlZCB0byBjYWxsIENhbGxiYWNrOjpzcGluQnV0dG9uU3RlcHtEb3du
LFVwfQorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnN0ZXApOiBkaXR0bwor
ICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorICAgICAg
ICAoQ2FsbGJhY2spOiBBZGRlZC4KKyAgICAgICAgKElucHV0RmllbGRTcGVlY2hCdXR0b25FbGVt
ZW50KToKKwogMjAxMi0wNi0xOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW01hY10gRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgbGVh
a3MgYSBOU1NoYWRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggOTYwMzFkNGRhOTkxNjQ2OGZiOTY1NzcyZjE4Mjg0NTVkMWQ4ZjBhYy4uMmVhN2QzYmI0NjUx
MjgzYjRjM2YzZmRhNDk4MjdhYmNiOGVkNDdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xNDUwLDExICsxNDUwLDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVt
ZW50Ojppc1N0ZXBwYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1N0ZXBw
YWJsZSgpOwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcEZyb21SZW5kZXJlcihp
bnQgbikKLXsKLSAgICBtX2lucHV0VHlwZS0+c3RlcFVwRnJvbVJlbmRlcmVyKG4pOwotfQotCiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVj
aEVuYWJsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCA5ODcxMDExOTVkMmQwODMwN2U0ZjNlZWU3MzBiMGI0NTE3Mjg3ZjA3Li5mNjY3MGYxZTM0ZDg3
YzZiNjE3ZDUzZGYzMGJhYTQxMzdkYWIzMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaApAQCAtNzcsNyArNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGVwRG93bihF
eGNlcHRpb25Db2RlJiBlYykgeyBzdGVwRG93bigxLCBlYyk7IH0KICAgICAvLyBzdGVwVXAoKS9z
dGVwRG93bigpIGZvciB1c2VyLWludGVyYWN0aW9uLgogICAgIGJvb2wgaXNTdGVwcGFibGUoKSBj
b25zdDsKLSAgICB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQpOwogCiAgICAgYm9vbCBpc1Rl
eHRCdXR0b24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggOTk2ZDU5NjVi
MTczZTU5M2FiMGQ5Mzg0YTFlMjc3ODIwZTQ1NTQ0Yy4uZjNjMGU5MDU3NzNmMzIxYzZiNzVjZmIy
Yzk1YjIwNjQ0NWQyY2ZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNjUsNyArMTY1
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2lt
YWwqKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3Rl
cEhhbmRsaW5nKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKGludCwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBzdGVwVXBGcm9tUmVuZGVyZXIoaW50KTsKICAgICB2
aXJ0dWFsIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJp
bmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTdHJp
bmdWYWx1ZSgpIGNvbnN0OwpAQCAtMjk2LDYgKzI5NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAg
ICAgQ2hyb21lKiBjaHJvbWUoKSBjb25zdDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXJPck5h
Tihjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQp
OwogCiBwcml2YXRlOgogICAgIC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24oKS4gQWRk
cyBzdGVwIHZhbHVlICogY291bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggODE4OTE0NGE5OTM4MGE1OGQwYzhh
NWE3N2FjZjBiNjhjMGUwZjQ4ZS4uM2EwYWYwNTU0ZjY4NGJhNjU2NWE1NTM4OGJkZGU4ZTM3NTk5
ZjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAt
MTQyLDE0ICsxNDIsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25F
dmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGVsZW1lbnQo
KS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7Ci0gICAgaW50
IHN0ZXAgPSAwOwogICAgIGlmIChrZXkgPT0gIlVwIikKLSAgICAgICAgc3RlcCA9IDE7CisgICAg
ICAgIHNwaW5CdXR0b25TdGVwVXAoKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQotICAg
ICAgICBzdGVwID0gLTE7CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UK
ICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXAp
OwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0xNTcsMTQgKzE1NSwx
MiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0
b24oV2hlZWxFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8
fCBlbGVtZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgaW50IHN0ZXAgPSAwOwogICAgIGlmIChldmVudC0+d2hlZWxEZWx0YVko
KSA+IDApCi0gICAgICAgIHN0ZXAgPSAxOworICAgICAgICBzcGluQnV0dG9uU3RlcFVwKCk7CiAg
ICAgZWxzZSBpZiAoZXZlbnQtPndoZWVsRGVsdGFZKCkgPCAwKQotICAgICAgICBzdGVwID0gLTE7
CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJu
OwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXApOwogICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0yNTgsNyArMjU0LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogI2VuZGlmCiAKICAgICBpZiAoc2hv
dWxkSGF2ZVNwaW5CdXR0b24pIHsKLSAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24g
PSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7CiAgICAgICAgIG1f
Y29udGFpbmVyLT5hcHBlbmRDaGlsZChtX2lubmVyU3BpbkJ1dHRvbiwgZWMpOwogICAgIH0KIApA
QCAtNDI4LDQgKzQyNCwxNSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURh
dGEoRm9ybURhdGFMaXN0JiBsaXN0LCBib29sIG11bHRpcGFydCkgY29ucwogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBEb3duKCkK
K3sKKyAgICBzdGVwVXBGcm9tUmVuZGVyZXIoLTEpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6c3BpbkJ1dHRvblN0ZXBVcCgpCit7CisgICAgc3RlcFVwRnJvbVJlbmRlcmVyKDEpOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVs
ZElucHV0VHlwZS5oCmluZGV4IDU1OWJlMjVlNzUxOTkyNmM4YzlkYTliNWFlYmRmNjI0YTg5YzJh
MjAuLjE1OTE4NzNjNjI0NjkzYWM3ODQ4ZWYxMmVhMDMwOWVkZDUyNzZjZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmlu
ZSBUZXh0RmllbGRJbnB1dFR5cGVfaAogCiAjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCisjaW5jbHVk
ZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDAsNyArNDEsNyBAQCBjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKIAogLy8gVGhlIGNsYXNz
IHJlcHJlc2VudHMgdHlwZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4KIC8vIEl0
IHN1cHBvcnRzIG5vdCBvbmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5cGUgYnV0IGFs
c28gdHlwZT1udW1iZXIuCi1jbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRU
eXBlIHsKK2NsYXNzIFRleHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHByaXZh
dGUgU3BpbkJ1dHRvbkVsZW1lbnQ6OkNhbGxiYWNrIHsKIHByb3RlY3RlZDoKICAgICBUZXh0Rmll
bGRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCopOwogICAgIHZpcnR1YWwgflRleHRGaWVsZElu
cHV0VHlwZSgpOwpAQCAtODIsNiArODMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBh
cHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sIG11bHRpcGFydCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2
b2lkIHNwaW5CdXR0b25TdGVwRG93bigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzcGlu
QnV0dG9uU3RlcFVwKCkgT1ZFUlJJREU7CisKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fY29u
dGFpbmVyOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9pbm5lckJsb2NrOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gbV9pbm5lclRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA1ZDI2ODQxYzI0
MzU3MDU1ZjdiNWI5OGI3MTgxOGIzMDU3YzFhZDEzLi45YTI2YmQwNjBkZDRkYTczYzQxOThiYzdj
YzkwZDVjOGUxNDk1N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTIzNCw4ICsyMzQsOSBAQCB2b2lk
IFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIFNw
aW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitp
bmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCwgQ2FsbGJhY2smIGNhbGxiYWNrKQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBk
b2N1bWVudCkKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX2NhcHR1cmluZyhm
YWxzZSkKICAgICAsIG1fdXBEb3duU3RhdGUoSW5kZXRlcm1pbmF0ZSkKICAgICAsIG1fcHJlc3NT
dGFydGluZ1N0YXRlKEluZGV0ZXJtaW5hdGUpCkBAIC0yNDMsOSArMjQ0LDkgQEAgaW5saW5lIFNw
aW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IFNwaW5CdXR0b25FbGVtZW50Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0cjxTcGluQnV0dG9uRWxlbWVudD4g
U3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIENhbGxiYWNrJiBj
YWxsYmFjaykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwaW5CdXR0b25FbGVtZW50KGRv
Y3VtZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGluQnV0dG9uRWxlbWVudChkb2N1
bWVudCwgY2FsbGJhY2spKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTcGluQnV0dG9uRWxl
bWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtMjk0LDcgKzI5NSwxMCBAQCB2b2lkIFNw
aW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAg
ICAgICAgIGlucHV0LT5zZWxlY3QoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKG1fdXBEb3duU3RhdGUgIT0gSW5kZXRlcm1pbmF0ZSkgewotICAg
ICAgICAgICAgICAgICAgICBpbnB1dC0+c3RlcFVwRnJvbVJlbmRlcmVyKG1fdXBEb3duU3RhdGUg
PT0gVXAgPyAxIDogLTEpOworICAgICAgICAgICAgICAgICAgICBpZiAobV91cERvd25TdGF0ZSA9
PSBVcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FsbGJhY2suc3BpbkJ1dHRvblN0ZXBV
cCgpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2NhbGxiYWNrLnNwaW5CdXR0b25TdGVwRG93bigpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVwZWF0aW5nVGltZXIo
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0zNjAsNyArMzY0LDEwIEBAIHZvaWQgU3BpbkJ1dHRv
bkVsZW1lbnQ6OnN0ZXAoaW50IGFtb3VudCkKICAgICBpZiAobV91cERvd25TdGF0ZSAhPSBtX3By
ZXNzU3RhcnRpbmdTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgaW5wdXQtPnN0
ZXBVcEZyb21SZW5kZXJlcihhbW91bnQpOworICAgIGlmIChhbW91bnQgPiAwKQorICAgICAgICBt
X2NhbGxiYWNrLnNwaW5CdXR0b25TdGVwVXAoKTsKKyAgICBlbHNlIGlmIChhbW91bnQgPCAwKQor
ICAgICAgICBtX2NhbGxiYWNrLnNwaW5CdXR0b25TdGVwRG93bigpOwogfQogICAgIAogdm9pZCBT
cGluQnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGltZXJGaXJlZChUaW1lcjxTcGluQnV0dG9uRWxl
bWVudD4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaAppbmRleCBjMjI4MGYxZTgzN2VlMzU0ZjJiMTExODY4ZjY2NDNhZTg4
M2NiNGM0Li5jNGFjZmM0MDc5ZWEwYzU3YTJhODliYjc0MmU1Y2YwNWQ4ZTM5MTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaApAQCAtOTYsMTQgKzk2LDIwIEBAIHB1YmxpYzoKICAgICAgICAgVXAsCiAgICAgfTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQq
KTsKKyAgICBjbGFzcyBDYWxsYmFjayB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZv
aWQgc3BpbkJ1dHRvblN0ZXBEb3duKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3BpbkJ1
dHRvblN0ZXBVcCgpID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BpbkJ1
dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIENhbGxiYWNrJik7CiAgICAgVXBEb3duU3Rh
dGUgdXBEb3duU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3VwRG93blN0YXRlOyB9CiAgICAgdmly
dHVhbCB2b2lkIHJlbGVhc2VDYXB0dXJlKCk7CiAKICAgICB2b2lkIHN0ZXAoaW50IGFtb3VudCk7
CiAgICAgCiBwcml2YXRlOgotICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50Kik7CisgICAg
U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBDYWxsYmFjayYpOwogCiAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGRldGFjaCgpOwpAQCAtMTE3LDYgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpOwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9j
dXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIENhbGxiYWNrJiBtX2NhbGxi
YWNrOwogICAgIGJvb2wgbV9jYXB0dXJpbmc7CiAgICAgVXBEb3duU3RhdGUgbV91cERvd25TdGF0
ZTsKICAgICBVcERvd25TdGF0ZSBtX3ByZXNzU3RhcnRpbmdTdGF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148290</attachid>
            <date>2012-06-19 02:14:30 -0700</date>
            <delta_ts>2012-06-19 18:45:18 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-89439-20120619181430.patch</filename>
            <type>text/plain</type>
            <size>12290</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4MjgyNTJlNzExZmJj
ZGMxYzViODkxZTAxOGNiYzFjMjI4NmUwMC4uYTczNzExNTIwNGViNzVjOWJhNTg4N2Q3ODQ2MWE1
YTVhNjI4ZmRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA2LTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNYWtl
IHN0ZXAgYWN0aW9uIG9mIFNwaW5CdXR0b25FbGVtZW50IHJlcGxhY2VhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBTcGluQnV0dG9uRWxlbWVudDo6Q2FsbGJhY2sgdG8gc3BlY2lmeSBzdGVwCisgICAgICAgIGFj
dGlvbiBieSBjb250cm9sIGNsaWVudHMgZm9yIHVzaW5nIFNwaW5CdXR0b25FbGVtZW50IGJ5Cisg
ICAgICAgIFRleHRGaWVsZElucHV0VHlwZSBhbmQgZnV0dXJlIHZlcnNpb24gb2YgVGltZUlucHV0
RmllbGQuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcyBpbXByb3ZpbmcgZmxleGliaWxp
dHkgb2YgU3BpbkJ1dHRvbkVsZW1lbnQsIHdlCisgICAgICAgIGZyZWUgSFRNTElucHV0RWxlbWVu
dCBmcm9tIFNwaW5CdXR0b25FbGVtZW50IGRlcGVuZGVuY3kgb24KKyAgICAgICAgc3RlcFVwRnJv
bVJlbmRlcmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNo
YW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6IFJl
bW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6IFJlbW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgIChIVE1MSW5wdXRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBl
KTogTW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkgZnJvbSBwdWJsaWMgdG8gcHJvdGVjdGVkLgor
ICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6flRleHRGaWVsZElucHV0VHlwZSk6IEFkZGVkIHRvIGNhbGwg
U3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbW92ZVN0ZXBBY3Rpb25IYW5kbGVyLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnRGb3JTcGluQnV0dG9u
KTogQ2hhbmdlZCB0byBjYWxsIHNwaW5CdXR0b25TdGVwe0Rvd24sVXB9CisgICAgICAgIChXZWJD
b3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZVdoZWVsRXZlbnRGb3JTcGluQnV0dG9uKTog
Q2hhbmdlZCB0byBjYWxsIHNwaW5CdXR0b25TdGVwe0Rvd24sVXB9CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOiBBZGRlZCBTcGluQnV0
dG9uRWxlbWVudDo6U3RlcEFjdGlvbkhhbmRsZXIgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSk6IEFkZGVkIHRvIGNh
bGwgU3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbW92ZVN0ZXBBY3Rpb25IYW5kbGVyLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcERvd24pOiBBZGRlZCBm
b3IgaW1wbGVtZW50YXRpb24gb2YgU3BpbkJ1dHRvbkVsZW1lbnQ6OlN0ZXBBY3Rpb25IYW5kbGVy
LgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcFVw
KTogQWRkZWQgZm9yIGltcGxlbWVudGF0aW9uIG9mIFNwaW5CdXR0b25FbGVtZW50OjpTdGVwQWN0
aW9uSGFuZGxlci4KKyAgICAgICAgKiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5oOgorICAgICAg
ICAoVGV4dEZpZWxkSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6
OlNwaW5CdXR0b25FbGVtZW50KTogQWRkZWQgU3RlcEFjdGlvbkhhbmRsZXIgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIp
OiBDaGFuZ2VkIHRvIGNhbGwgU3RlcEFjdGlvbkhhbmRsZXI6OnNwaW5CdXR0b25TdGVwe0Rvd24s
VXB9CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6c3RlcCk6IGRpdHRvCisg
ICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6CisgICAgICAg
IChTdGVwQWN0aW9uSGFuZGxlcik6IEFkZGVkLgorICAgICAgICAoSW5wdXRGaWVsZFNwZWVjaEJ1
dHRvbkVsZW1lbnQpOgorCiAyMDEyLTA2LTE5ICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW0Zvcm1zXSBNb3ZlIGlzS2V5Ym9hcmRGb2N1c2FibGUgYW5k
IGlzTW91c2VGb2N1c2FibGUgdG8gSW5wdXRUeXBlIGZyb20gSFRNTElucHV0RWxlbWVudApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNGE4MTA3ZWU1ZDYwM2Qw
MjZiNGJjMTE3NGU0YTRlNjU5NzZjNWNlMS4uNmZjZDE1OGYwMzFjNjNiMjZmMzU0NWZmY2M5YWFj
ZDc0OGIyYWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC0xNDYxLDExICsxNDYxLDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1N0ZXBwYWJsZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5pc1N0ZXBwYWJsZSgpOwogfQogCi12b2lk
IEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKLXsKLSAgICBtX2lu
cHV0VHlwZS0+c3RlcFVwRnJvbVJlbmRlcmVyKG4pOwotfQotCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAzYWYyYjM1MjU2OGRjMmI1
YWNiOWVlODQ3MWI3NWY5NDdlNTI4YzE1Li5mYWVhYmZmYmFhYjRiMzc5ZTE1OGU0MjJjMzcwMmUz
MjQ0OWQzMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNzcs
NyArNzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGVwRG93bihFeGNlcHRpb25Db2RlJiBlYykg
eyBzdGVwRG93bigxLCBlYyk7IH0KICAgICAvLyBzdGVwVXAoKS9zdGVwRG93bigpIGZvciB1c2Vy
LWludGVyYWN0aW9uLgogICAgIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdDsKLSAgICB2b2lkIHN0
ZXBVcEZyb21SZW5kZXJlcihpbnQpOwogCiAgICAgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNDUxMzAzZDEzYzQyNDBmZWM3NWFkMGVmMDA5
NzMyM2QwZTMxM2RiOS4uZGI5NGI2YjQ4NzYxZjRhYmE3NTQ3MzJiZTQxMDY2ZmZlOTE3MzIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNjUsNyArMTY1LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKGludCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBzdGVwVXBGcm9tUmVuZGVyZXIoaW50KTsKICAgICB2aXJ0dWFsIFN0cmluZyB0eXBl
TWlzbWF0Y2hUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OwpA
QCAtMjk3LDYgKzI5Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoU2ltdWxhdGVk
Q2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgQ2hyb21lKiBjaHJvbWUo
KSBjb25zdDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXJPck5hTihjb25zdCBTdHJpbmcmKSBj
b25zdDsKKyAgICB2b2lkIHN0ZXBVcEZyb21SZW5kZXJlcihpbnQpOwogCiBwcml2YXRlOgogICAg
IC8vIEhlbHBlciBmb3Igc3RlcFVwKCkvc3RlcERvd24oKS4gQWRkcyBzdGVwIHZhbHVlICogY291
bnQgdG8gdGhlIGN1cnJlbnQgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5jcHAKaW5kZXggYWY1MzI1NWJiNjI2MjI2NTI4NzVjMDY4MTI1MmEwNmVhMjg4N2Nm
NS4uYjdjOTM0YmQ3YTQ1N2YwYWU0MWI1ODdkNjJkM2U2ZWNhYjYwZGQxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNjMsNiArNjMsOCBAQCBUZXh0
RmllbGRJbnB1dFR5cGU6OlRleHRGaWVsZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQogCiBUZXh0RmllbGRJbnB1dFR5cGU6On5UZXh0RmllbGRJbnB1dFR5cGUoKQogeworICAg
IGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbW92
ZVN0ZXBBY3Rpb25IYW5kbGVyKCk7CiB9CiAKIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc0tl
eWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdApAQCAtMTUyLDE0ICsxNTQsMTIg
QEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0
b24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8
fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBTdHJp
bmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7Ci0gICAgaW50IHN0ZXAgPSAwOwogICAg
IGlmIChrZXkgPT0gIlVwIikKLSAgICAgICAgc3RlcCA9IDE7CisgICAgICAgIHNwaW5CdXR0b25T
dGVwVXAoKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQotICAgICAgICBzdGVwID0gLTE7
CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJu
OwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXApOwogICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0xNjcsMTQgKzE2NywxMiBAQCB2b2lkIFRleHRG
aWVsZElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0b24oV2hlZWxFdmVudCog
ZXZlbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJl
YWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
aW50IHN0ZXAgPSAwOwogICAgIGlmIChldmVudC0+d2hlZWxEZWx0YVkoKSA+IDApCi0gICAgICAg
IHN0ZXAgPSAxOworICAgICAgICBzcGluQnV0dG9uU3RlcFVwKCk7CiAgICAgZWxzZSBpZiAoZXZl
bnQtPndoZWVsRGVsdGFZKCkgPCAwKQotICAgICAgICBzdGVwID0gLTE7CisgICAgICAgIHNwaW5C
dXR0b25TdGVwRG93bigpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQo
KS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXApOwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwogfQogCkBAIC0yNjgsNyArMjY2LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKQogI2VuZGlmCiAKICAgICBpZiAoc2hvdWxkSGF2ZVNwaW5CdXR0
b24pIHsKLSAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7CiAgICAgICAgIG1fY29udGFpbmVyLT5hcHBl
bmRDaGlsZChtX2lubmVyU3BpbkJ1dHRvbiwgZWMpOwogICAgIH0KIApAQCAtMzE4LDYgKzMxNiw4
IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAjaWYg
RU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBtX3NwZWVjaEJ1dHRvbi5jbGVhcigpOwogI2VuZGlm
CisgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQorICAgICAgICBtX2lubmVyU3BpbkJ1dHRvbi0+
cmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKTsKICAgICBtX2lubmVyU3BpbkJ1dHRvbi5jbGVhcigp
OwogICAgIG1fY29udGFpbmVyLmNsZWFyKCk7CiB9CkBAIC00MzgsNCArNDM4LDE1IEBAIGJvb2wg
VGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGxpc3QsIGJv
b2wgbXVsdGlwYXJ0KSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgVGV4dEZpZWxk
SW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcERvd24oKQoreworICAgIHN0ZXBVcEZyb21SZW5kZXJl
cigtMSk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcFVwKCkK
K3sKKyAgICBzdGVwVXBGcm9tUmVuZGVyZXIoMSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKaW5kZXggYjM2Mjlk
MGQzZTg0MGI1ZGY4MGMyZTM3ZjMwYzM2MjhkYjE2MzA3OC4uNGM3YTliYWM0MzRiZjY4NmIxNWVk
OGJhMzc5ZjNmMTdiOWQwYzZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFRleHRGaWVsZElucHV0VHlwZV9oCiAK
ICNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw3ICs0MSw3IEBAIGNsYXNzIFNw
aW5CdXR0b25FbGVtZW50OwogCiAvLyBUaGUgY2xhc3MgcmVwcmVzZW50cyB0eXBlcyBvZiB3aGlj
aCBVSSBjb250YWluIHRleHQgZmllbGRzLgogLy8gSXQgc3VwcG9ydHMgbm90IG9ubHkgdGhlIHR5
cGVzIGZvciBCYXNlVGV4dElucHV0VHlwZSBidXQgYWxzbyB0eXBlPW51bWJlci4KLWNsYXNzIFRl
eHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworY2xhc3MgVGV4dEZpZWxkSW5w
dXRUeXBlIDogcHVibGljIElucHV0VHlwZSwgcHJpdmF0ZSBTcGluQnV0dG9uRWxlbWVudDo6U3Rl
cEFjdGlvbkhhbmRsZXIgewogcHJvdGVjdGVkOgogICAgIFRleHRGaWVsZElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+VGV4dEZpZWxkSW5wdXRUeXBlKCk7CkBAIC04
NCw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShG
b3JtRGF0YUxpc3QmLCBib29sIG11bHRpcGFydCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogCisgICAgLy8gU3BpbkJ1dHRvbkVsZW1lbnQ6OlN0
ZXBBY3Rpb25IYW5kbGVyIGZ1bmN0aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgc3BpbkJ1dHRvblN0
ZXBEb3duKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25TdGVwVXAoKSBP
VkVSUklERTsKKwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9jb250YWluZXI7CiAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBtX2lubmVyQmxvY2s7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBt
X2lubmVyVGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDVkMjY4NDFjMjQzNTcwNTVmN2I1Yjk4Yjcx
ODE4YjMwNTdjMWFkMTMuLjlmNmU4NGZjNzIwMmNhZjcwYmFkMTMwNDAyMDE0ZTJhZGYxNTFhMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIHZvaWQgU2VhcmNoRmllbGRDYW5j
ZWxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6
OlNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSBTcGluQnV0dG9u
RWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBTdGVwQWN0aW9u
SGFuZGxlciYgc3RlcEFjdGlvbkhhbmRsZXIpCiAgICAgOiBIVE1MRGl2RWxlbWVudChkaXZUYWcs
IGRvY3VtZW50KQorICAgICwgbV9zdGVwQWN0aW9uSGFuZGxlcigmc3RlcEFjdGlvbkhhbmRsZXIp
CiAgICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKICAgICAsIG1fdXBEb3duU3RhdGUoSW5kZXRlcm1p
bmF0ZSkKICAgICAsIG1fcHJlc3NTdGFydGluZ1N0YXRlKEluZGV0ZXJtaW5hdGUpCkBAIC0yNDMs
OSArMjQ0LDkgQEAgaW5saW5lIFNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxlbWVudChE
b2N1bWVudCogZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+
IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0
cjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQsIFN0ZXBBY3Rpb25IYW5kbGVyJiBzdGVwQWN0aW9uSGFuZGxlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNwaW5CdXR0b25FbGVtZW50KGRvY3VtZW50KSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTcGluQnV0dG9uRWxlbWVudChkb2N1bWVudCwgc3RlcEFjdGlvbkhh
bmRsZXIpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTcGluQnV0dG9uRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdApAQCAtMjk0LDcgKzI5NSwxMiBAQCB2b2lkIFNwaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlu
cHV0LT5zZWxlY3QoKTsKICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1fdXBEb3duU3RhdGUgIT0gSW5kZXRlcm1pbmF0ZSkgewotICAgICAgICAgICAg
ICAgICAgICBpbnB1dC0+c3RlcFVwRnJvbVJlbmRlcmVyKG1fdXBEb3duU3RhdGUgPT0gVXAgPyAx
IDogLTEpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9zdGVwQWN0aW9uSGFuZGxlcikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXBEb3duU3RhdGUgPT0gVXApCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdGVwQWN0aW9uSGFuZGxlci0+c3BpbkJ1dHRvblN0ZXBV
cCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3RlcEFjdGlvbkhhbmRsZXItPnNwaW5CdXR0b25TdGVwRG93bigpOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnRSZXBlYXRpbmdUaW1lcigpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTM2MCw3ICszNjYsMTMgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6c3RlcChp
bnQgYW1vdW50KQogICAgIGlmIChtX3VwRG93blN0YXRlICE9IG1fcHJlc3NTdGFydGluZ1N0YXRl
KQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBpbnB1dC0+c3RlcFVwRnJvbVJlbmRlcmVy
KGFtb3VudCk7CisgICAgaWYgKCFtX3N0ZXBBY3Rpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoYW1vdW50ID4gMCkKKyAgICAgICAgbV9zdGVwQWN0aW9uSGFuZGxlci0+c3Bp
bkJ1dHRvblN0ZXBVcCgpOworICAgIGVsc2UgaWYgKGFtb3VudCA8IDApCisgICAgICAgIG1fc3Rl
cEFjdGlvbkhhbmRsZXItPnNwaW5CdXR0b25TdGVwRG93bigpOwogfQogICAgIAogdm9pZCBTcGlu
QnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGltZXJGaXJlZChUaW1lcjxTcGluQnV0dG9uRWxlbWVu
dD4qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaAppbmRleCBjMjI4MGYxZTgzN2VlMzU0ZjJiMTExODY4ZjY2NDNhZTg4M2Ni
NGM0Li5hNDJiMWY2ODY4NTExZmVjYmEyMWVmNWI2ZGZjN2E1NmEzZTRiZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
aApAQCAtOTYsMTQgKzk2LDIxIEBAIHB1YmxpYzoKICAgICAgICAgVXAsCiAgICAgfTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsK
KyAgICBjbGFzcyBTdGVwQWN0aW9uSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgc3BpbkJ1dHRvblN0ZXBEb3duKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3BpbkJ1dHRvblN0ZXBVcCgpID0gMDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3BpbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCosIFN0ZXBBY3Rpb25IYW5kbGVyJik7
CiAgICAgVXBEb3duU3RhdGUgdXBEb3duU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3VwRG93blN0
YXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VDYXB0dXJlKCk7CisgICAgdm9pZCByZW1v
dmVTdGVwQWN0aW9uSGFuZGxlcigpIHsgbV9zdGVwQWN0aW9uSGFuZGxlciA9IDA7IH0KIAogICAg
IHZvaWQgc3RlcChpbnQgYW1vdW50KTsKICAgICAKIHByaXZhdGU6Ci0gICAgU3BpbkJ1dHRvbkVs
ZW1lbnQoRG9jdW1lbnQqKTsKKyAgICBTcGluQnV0dG9uRWxlbWVudChEb2N1bWVudCosIFN0ZXBB
Y3Rpb25IYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkBAIC0xMTcsNiAr
MTI0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZChib29sID0gdHJ1
ZSk7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCisgICAgU3RlcEFjdGlvbkhhbmRsZXIqIG1fc3RlcEFjdGlvbkhhbmRsZXI7CiAg
ICAgYm9vbCBtX2NhcHR1cmluZzsKICAgICBVcERvd25TdGF0ZSBtX3VwRG93blN0YXRlOwogICAg
IFVwRG93blN0YXRlIG1fcHJlc3NTdGFydGluZ1N0YXRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148480</attachid>
            <date>2012-06-19 18:45:23 -0700</date>
            <delta_ts>2012-06-20 20:40:10 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-89439-20120620104523.patch</filename>
            <type>text/plain</type>
            <size>22179</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM1ZWRmYzJiMjFkYWQx
MWYzMzNhZTgzMGFhZjc3NjgxNDU2YjI1Ny4uYWIxNDc1OWI3NmJmYzA5MzI0YWI3NTRmNTZiNjQ1
YzczOGQwZjAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNYWtl
IHN0ZXAgYWN0aW9uIG9mIFNwaW5CdXR0b25FbGVtZW50IHJlcGxhY2VhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBTcGluQnV0dG9uRWxlbWVudDo6Q2FsbGJhY2sgdG8gc3BlY2lmeSBzdGVwCisgICAgICAgIGFj
dGlvbiBieSBjb250cm9sIGNsaWVudHMgZm9yIHVzaW5nIFNwaW5CdXR0b25FbGVtZW50IGJ5Cisg
ICAgICAgIFRleHRGaWVsZElucHV0VHlwZSBhbmQgZnV0dXJlIHZlcnNpb24gb2YgVGltZUlucHV0
RmllbGQuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcyBpbXByb3ZpbmcgZmxleGliaWxp
dHkgb2YgU3BpbkJ1dHRvbkVsZW1lbnQsIHdlCisgICAgICAgIGZyZWUgSFRNTElucHV0RWxlbWVu
dCBmcm9tIFNwaW5CdXR0b25FbGVtZW50IGRlcGVuZGVuY3kgb24KKyAgICAgICAgc3RlcFVwRnJv
bVJlbmRlcmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNo
YW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6IFJl
bW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6IFJlbW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgIChIVE1MSW5wdXRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBl
KTogTW92ZWQgYXBwbHlTdGVwKCkgZnJvbSBwcml2YXRlIHRvIHByb3RlY3RlZC4KKyAgICAgICAg
KiBodG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6On5UZXh0RmllbGRJbnB1dFR5cGUpOiBBZGRlZCB0byBjYWxsIFNwaW5CdXR0
b25FbGVtZW50OjpyZW1vdmVTdGVwQWN0aW9uSGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbik6IENoYW5n
ZWQgdG8gY2FsbCBzcGluQnV0dG9uU3RlcHtEb3duLFVwfQorICAgICAgICAoV2ViQ29yZTo6VGV4
dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVXaGVlbEV2ZW50Rm9yU3BpbkJ1dHRvbik6IENoYW5nZWQg
dG8gY2FsbCBzcGluQnV0dG9uU3RlcHtEb3duLFVwfQorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKTogQWRkZWQgU3BpbkJ1dHRvbkVsZW1l
bnQ6OlN0ZXBBY3Rpb25IYW5kbGVyIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUpOiBBZGRlZCB0byBjYWxsIFNwaW5C
dXR0b25FbGVtZW50OjpyZW1vdmVTdGVwQWN0aW9uSGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRGaWVsZElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKTogTW92ZWQgZnJvbSBJbnB1
dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnNwaW5CdXR0b25T
dGVwRG93bik6IEFkZGVkIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBTcGluQnV0dG9uRWxlbWVudDo6
U3RlcEFjdGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OnNwaW5CdXR0b25TdGVwVXApOiBBZGRlZCBmb3IgaW1wbGVtZW50YXRpb24gb2YgU3BpbkJ1dHRv
bkVsZW1lbnQ6OlN0ZXBBY3Rpb25IYW5kbGVyLgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5w
dXRUeXBlLmg6CisgICAgICAgIChUZXh0RmllbGRJbnB1dFR5cGUpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
cGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQpOiBBZGRlZCBTdGVwQWN0aW9uSGFu
ZGxlciBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcik6IENoYW5nZWQgdG8gY2FsbCBTdGVwQWN0aW9uSGFuZGxlcjo6c3Bp
bkJ1dHRvblN0ZXB7RG93bixVcH0KKyAgICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50
OjpzdGVwKTogZGl0dG8KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaDoKKyAgICAgICAgKFN0ZXBBY3Rpb25IYW5kbGVyKTogQWRkZWQuCisgICAgICAgIChJ
bnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudCk6CisKIDIwMTItMDYtMTkgIEVyaWsgQXJ2aWRz
c29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIEZpeCBpc3N1ZSB3aGVyZSBh
IGNhbGxiYWNrIGdvdCBhIG51bGwgY2FsbGluZyBjb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA0YTgxMDdlZTVkNjAzZDAyNmI0YmMxMTc0ZTRhNGU2
NTk3NmM1Y2UxLi42ZmNkMTU4ZjAzMWM2M2IyNmYzNTQ1ZmZjYzlhYWNkNzQ4YjJhYzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0NjEsMTEgKzE0NjEs
NiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3RlcHBhYmxlKCkgY29uc3QKICAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPmlzU3RlcHBhYmxlKCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVu
dDo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQotewotICAgIG1faW5wdXRUeXBlLT5zdGVwVXBG
cm9tUmVuZGVyZXIobik7Ci19Ci0KICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCmluZGV4IDNhZjJiMzUyNTY4ZGMyYjVhY2I5ZWU4NDcxYjc1Zjk0
N2U1MjhjMTUuLmZhZWFiZmZiYWFiNGIzNzllMTU4ZTQyMmMzNzAyZTMyNDQ5ZDMzNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0ZXBEb3duKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHN0ZXBEb3duKDEsIGVj
KTsgfQogICAgIC8vIHN0ZXBVcCgpL3N0ZXBEb3duKCkgZm9yIHVzZXItaW50ZXJhY3Rpb24uCiAg
ICAgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0OwotICAgIHZvaWQgc3RlcFVwRnJvbVJlbmRlcmVy
KGludCk7CiAKICAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKaW5kZXggNTE0MTE5ZmVhNGM0MTdhYmFjYWM5YjcxNDA4ZTQxNWEwZjdlMWRh
Ni4uYTBlMjhlOTQ5YmRlZmFjMzVjMWQ0YmU3MDVhNzlkYzA1NDcxN2E5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcApAQCAtOTU5LDExMCArOTU5LDYgQEAgdm9pZCBJbnB1dFR5cGU6OnN0
ZXBVcChpbnQgbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgYXBwbHlTdGVwKG4sIFJlamVjdEFu
eSwgRGlzcGF0Y2hOb0V2ZW50LCBlYyk7CiB9CiAKLXZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9t
UmVuZGVyZXIoaW50IG4pCi17Ci0gICAgLy8gVGhlIGRpZmZlcmVuY2VzIGZyb20gc3RlcFVwKCkv
c3RlcERvd24oKToKLSAgICAvLwotICAgIC8vIERpZmZlcmVuY2UgMTogdGhlIGN1cnJlbnQgdmFs
dWUKLSAgICAvLyBJZiB0aGUgY3VycmVudCB2YWx1ZSBpcyBub3QgYSBudW1iZXIsIGluY2x1ZGlu
ZyBlbXB0eSwgdGhlIGN1cnJlbnQgdmFsdWUgaXMgYXNzdW1lZCBhcyAwLgotICAgIC8vICAgKiBJ
ZiAwIGlzIGluLXJhbmdlLCBhbmQgbWF0Y2hlcyB0byBzdGVwIHZhbHVlCi0gICAgLy8gICAgIC0g
VGhlIHZhbHVlIHNob3VsZCBiZSB0aGUgK3N0ZXAgaWYgbiA+IDAKLSAgICAvLyAgICAgLSBUaGUg
dmFsdWUgc2hvdWxkIGJlIHRoZSAtc3RlcCBpZiBuIDwgMAotICAgIC8vICAgICBJZiAtc3RlcCBv
ciArc3RlcCBpcyBvdXQgb2YgcmFuZ2UsIG5ldyB2YWx1ZSBzaG91bGQgYmUgMC4KLSAgICAvLyAg
ICogSWYgMCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWUKLSAgICAvLyAgICAgLSBU
aGUgdmFsdWUgc2hvdWxkIGJlIHRoZSBtaW5pbXVtIHZhbHVlIGZvciBhbnkgbgotICAgIC8vICAg
KiBJZiAwIGlzIGxhcmdlciB0aGFuIHRoZSBtYXhpbXVtIHZhbHVlCi0gICAgLy8gICAgIC0gVGhl
IHZhbHVlIHNob3VsZCBiZSB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgYW55IG4KLSAgICAvLyAgICog
SWYgMCBpcyBpbi1yYW5nZSwgYnV0IG5vdCBtYXRjaGVkIHRvIHN0ZXAgdmFsdWUKLSAgICAvLyAg
ICAgLSBUaGUgdmFsdWUgc2hvdWxkIGJlIHRoZSBsYXJnZXIgbWF0Y2hlZCB2YWx1ZSBuZWFyZXN0
IHRvIDAgaWYgbiA+IDAKLSAgICAvLyAgICAgICBlLmcuIDxpbnB1dCB0eXBlPW51bWJlciBtaW49
LTEwMCBzdGVwPTM+IC0+IDIKLSAgICAvLyAgICAgLSBUaGUgdmFsdWUgc2hvdWxkIGJlIHRoZSBz
bWFsZXIgbWF0Y2hlZCB2YWx1ZSBuZWFyZXN0IHRvIDAgaWYgbiA8IDAKLSAgICAvLyAgICAgICBl
LmcuIDxpbnB1dCB0eXBlPW51bWJlciBtaW49LTEwMCBzdGVwPTM+IC0+IC0xCi0gICAgLy8gICBB
cyBmb3IgZGF0ZS9kYXRldGltZS1sb2NhbC9tb250aC90aW1lL3dlZWsgdHlwZXMsIHRoZSBjdXJy
ZW50IHZhbHVlIGlzIGFzc3VtZWQgYXMgInRoZSBjdXJyZW50IGxvY2FsIGRhdGUvdGltZSIuCi0g
ICAgLy8gICBBcyBmb3IgZGF0ZXRpbWUgdHlwZSwgdGhlIGN1cnJlbnQgdmFsdWUgaXMgYXNzdW1l
ZCBhcyAidGhlIGN1cnJlbnQgZGF0ZS90aW1lIGluIFVUQyIuCi0gICAgLy8gSWYgdGhlIGN1cnJl
bnQgdmFsdWUgaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlOgotICAgIC8vICAtIFRo
ZSB2YWx1ZSBzaG91bGQgYmUgdGhlIG1pbmltdW0gdmFsdWUgaWYgbiA+IDAKLSAgICAvLyAgLSBO
b3RoaW5nIHNob3VsZCBoYXBwZW4gaWYgbiA8IDAKLSAgICAvLyBJZiB0aGUgY3VycmVudCB2YWx1
ZSBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4aW11bSB2YWx1ZToKLSAgICAvLyAgLSBUaGUgdmFsdWUg
c2hvdWxkIGJlIHRoZSBtYXhpbXVtIHZhbHVlIGlmIG4gPCAwCi0gICAgLy8gIC0gTm90aGluZyBz
aG91bGQgaGFwcGVuIGlmIG4gPiAwCi0gICAgLy8KLSAgICAvLyBEaWZmZXJlbmNlIDI6IGNsYW1w
aW5nIHN0ZXBzCi0gICAgLy8gSWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgbm90IG1hdGNoZWQgdG8g
c3RlcCB2YWx1ZToKLSAgICAvLyAtIFRoZSB2YWx1ZSBzaG91bGQgYmUgdGhlIGxhcmdlciBtYXRj
aGVkIHZhbHVlIG5lYXJlc3QgdG8gMCBpZiBuID4gMAotICAgIC8vICAgZS5nLiA8aW5wdXQgdHlw
ZT1udW1iZXIgdmFsdWU9MyBtaW49LTEwMCBzdGVwPTM+IC0+IDUKLSAgICAvLyAtIFRoZSB2YWx1
ZSBzaG91bGQgYmUgdGhlIHNtYWxlciBtYXRjaGVkIHZhbHVlIG5lYXJlc3QgdG8gMCBpZiBuIDwg
MAotICAgIC8vICAgZS5nLiA8aW5wdXQgdHlwZT1udW1iZXIgdmFsdWU9MyBtaW49LTEwMCBzdGVw
PTM+IC0+IDIKLSAgICAvLwotICAgIC8vIG4gaXMgYXNzdW1lZCBhcyAtbiBpZiBzdGVwIDwgMC4K
LQotICAgIEFTU0VSVChpc1N0ZXBwYWJsZSgpKTsKLSAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQobik7Ci0gICAgaWYgKCFuKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdGVwUmFuZ2Ugc3RlcFJhbmdlKGNyZWF0ZVN0ZXBSYW5nZShBbnlJc0RlZmF1
bHRTdGVwKSk7Ci0KLSAgICAvLyBGSVhNRTogTm90IGFueSBjaGFuZ2VzIGFmdGVyIHN0ZXBwaW5n
LCBldmVuIGlmIGl0IGlzIGFuIGludmFsaWQgdmFsdWUsIG1heSBiZSBiZXR0ZXIuCi0gICAgLy8g
KGUuZy4gU3RlcHBpbmctdXAgZm9yIDxpbnB1dCB0eXBlPSJudW1iZXIiIHZhbHVlPSJmb28iIHN0
ZXA9ImFueSIgLz4gPT4gImZvbyIpCi0gICAgaWYgKCFzdGVwUmFuZ2UuaGFzU3RlcCgpKQotICAg
ICAgcmV0dXJuOwotCi0gICAgY29uc3QgRGVjaW1hbCBzdGVwID0gc3RlcFJhbmdlLnN0ZXAoKTsK
LQotICAgIGludCBzaWduOwotICAgIGlmIChzdGVwID4gMCkKLSAgICAgICAgc2lnbiA9IG47Ci0g
ICAgZWxzZSBpZiAoc3RlcCA8IDApCi0gICAgICAgIHNpZ24gPSAtbjsKLSAgICBlbHNlCi0gICAg
ICAgIHNpZ24gPSAwOwotCi0gICAgU3RyaW5nIGN1cnJlbnRTdHJpbmdWYWx1ZSA9IGVsZW1lbnQo
KS0+dmFsdWUoKTsKLSAgICBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvTnVtYmVyT3JOYU4oY3Vy
cmVudFN0cmluZ1ZhbHVlKTsKLSAgICBpZiAoIWN1cnJlbnQuaXNGaW5pdGUoKSkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBjdXJyZW50ID0gZGVmYXVsdFZhbHVlRm9yU3Rl
cFVwKCk7Ci0gICAgICAgIGNvbnN0IERlY2ltYWwgbmV4dERpZmYgPSBzdGVwICogbjsKLSAgICAg
ICAgaWYgKGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgpIC0gbmV4dERpZmYpCi0gICAgICAg
ICAgICBjdXJyZW50ID0gc3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmOwotICAgICAgICBp
ZiAoY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBuZXh0RGlmZikKLSAgICAgICAgICAg
IGN1cnJlbnQgPSBzdGVwUmFuZ2UubWF4aW11bSgpIC0gbmV4dERpZmY7Ci0gICAgICAgIHNldFZh
bHVlQXNEZWNpbWFsKGN1cnJlbnQsIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgZWMpOwot
ICAgIH0KLSAgICBpZiAoKHNpZ24gPiAwICYmIGN1cnJlbnQgPCBzdGVwUmFuZ2UubWluaW11bSgp
KSB8fCAoc2lnbiA8IDAgJiYgY3VycmVudCA+IHN0ZXBSYW5nZS5tYXhpbXVtKCkpKSB7Ci0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIHNldFZhbHVlQXNEZWNpbWFsKHNpZ24gPiAw
ID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5tYXhpbXVtKCksIERpc3BhdGNoSW5w
dXRBbmRDaGFuZ2VFdmVudCwgZWMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7Ci0gICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewot
ICAgICAgICAgICAgQVNTRVJUKCFzdGVwLmlzWmVybygpKTsKLSAgICAgICAgICAgIGNvbnN0IERl
Y2ltYWwgYmFzZSA9IHN0ZXBSYW5nZS5zdGVwQmFzZSgpOwotICAgICAgICAgICAgRGVjaW1hbCBu
ZXdWYWx1ZTsKLSAgICAgICAgICAgIGlmIChzaWduIDwgMCkKLSAgICAgICAgICAgICAgICBuZXdW
YWx1ZSA9IGJhc2UgKyAoKGN1cnJlbnQgLSBiYXNlKSAvIHN0ZXApLmZsb29yKCkgKiBzdGVwOwot
ICAgICAgICAgICAgZWxzZSBpZiAoc2lnbiA+IDApCi0gICAgICAgICAgICAgICAgbmV3VmFsdWUg
PSBiYXNlICsgKChjdXJyZW50IC0gYmFzZSkgLyBzdGVwKS5jZWlsaW5nKCkgKiBzdGVwOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gY3VycmVudDsKLQotICAg
ICAgICAgICAgaWYgKG5ld1ZhbHVlIDwgc3RlcFJhbmdlLm1pbmltdW0oKSkKLSAgICAgICAgICAg
ICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5taW5pbXVtKCk7Ci0gICAgICAgICAgICBpZiAobmV3
VmFsdWUgPiBzdGVwUmFuZ2UubWF4aW11bSgpKQotICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0g
c3RlcFJhbmdlLm1heGltdW0oKTsKLQotICAgICAgICAgICAgc2V0VmFsdWVBc0RlY2ltYWwobmV3
VmFsdWUsIG4gPT0gMSB8fCBuID09IC0xID8gRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50IDog
RGlzcGF0Y2hOb0V2ZW50LCBlYyk7Ci0gICAgICAgICAgICBpZiAobiA+IDEpCi0gICAgICAgICAg
ICAgICAgYXBwbHlTdGVwKG4gLSAxLCBBbnlJc0RlZmF1bHRTdGVwLCBEaXNwYXRjaElucHV0QW5k
Q2hhbmdlRXZlbnQsIGVjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG4gPCAtMSkKLSAgICAgICAg
ICAgICAgICBhcHBseVN0ZXAobiArIDEsIEFueUlzRGVmYXVsdFN0ZXAsIERpc3BhdGNoSW5wdXRB
bmRDaGFuZ2VFdmVudCwgZWMpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFwcGx5U3Rl
cChuLCBBbnlJc0RlZmF1bHRTdGVwLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQsIGVjKTsK
LSAgICB9Ci19Ci0KIG5hbWVzcGFjZSBJbnB1dFR5cGVOYW1lcyB7CiAKIC8vIFRoZSB0eXBlIG5h
bWVzIG11c3QgYmUgbG93ZXJjYXNlZCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB0aGUgcmV0dXJuIHZh
bHVlcyBvZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNDUxMzAzZDEzYzQyNDBmZWM3NWFk
MGVmMDA5NzMyM2QwZTMxM2RiOS4uZGJjZjRmZjZkMzQxNDFlN2IyMmY3NGJjZjNlNGNlNjY2Nzlk
YWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNjUsNyArMTY1LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcFVwKGludCwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBzdGVwVXBGcm9tUmVuZGVyZXIoaW50KTsKICAgICB2aXJ0dWFsIFN0cmlu
ZyB0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVNaXNz
aW5nVGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNv
bnN0OwpAQCAtMjk4LDEwICsyOTcsMTAgQEAgcHJvdGVjdGVkOgogICAgIENocm9tZSogY2hyb21l
KCkgY29uc3Q7CiAgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyT3JOYU4oY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAKLXByaXZhdGU6CiAgICAgLy8gSGVscGVyIGZvciBzdGVwVXAoKS9zdGVwRG93bigp
LiBBZGRzIHN0ZXAgdmFsdWUgKiBjb3VudCB0byB0aGUgY3VycmVudCB2YWx1ZS4KICAgICB2b2lk
IGFwcGx5U3RlcChpbnQgY291bnQsIEFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvciwgRXhjZXB0aW9uQ29kZSYpOwogCitwcml2YXRlOgogICAgIC8vIFJhdyBwb2ludGVyIGJl
Y2F1c2UgdGhlIEhUTUxJbnB1dEVsZW1lbnQgb2JqZWN0IG93bnMgdGhpcyBJbnB1dFR5cGUgb2Jq
ZWN0LgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggYWY1MzI1NWJiNjI2MjI2NTI4NzVj
MDY4MTI1MmEwNmVhMjg4N2NmNS4uMWMxNjc0YmUwYWEzMzk4ODE3MTgxNjc4NWM1OTRjMDY5MzM2
OGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAt
NjMsNiArNjMsOCBAQCBUZXh0RmllbGRJbnB1dFR5cGU6OlRleHRGaWVsZElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50KiBlbGVtZW50KQogCiBUZXh0RmllbGRJbnB1dFR5cGU6On5UZXh0RmllbGRJ
bnB1dFR5cGUoKQogeworICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9pbm5l
clNwaW5CdXR0b24tPnJlbW92ZVN0ZXBBY3Rpb25IYW5kbGVyKCk7CiB9CiAKIGJvb2wgVGV4dEZp
ZWxkSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdApA
QCAtMTUyLDE0ICsxNTQsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUtleWRv
d25FdmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGVsZW1l
bnQoKS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7Ci0gICAg
aW50IHN0ZXAgPSAwOwogICAgIGlmIChrZXkgPT0gIlVwIikKLSAgICAgICAgc3RlcCA9IDE7Cisg
ICAgICAgIHNwaW5CdXR0b25TdGVwVXAoKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQot
ICAgICAgICBzdGVwID0gLTE7CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVs
c2UKICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0
ZXApOwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0xNjcsMTQgKzE2
NywxMiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudEZvclNwaW5C
dXR0b24oV2hlZWxFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQo
KSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgaW50IHN0ZXAgPSAwOwogICAgIGlmIChldmVudC0+d2hlZWxEZWx0
YVkoKSA+IDApCi0gICAgICAgIHN0ZXAgPSAxOworICAgICAgICBzcGluQnV0dG9uU3RlcFVwKCk7
CiAgICAgZWxzZSBpZiAoZXZlbnQtPndoZWVsRGVsdGFZKCkgPCAwKQotICAgICAgICBzdGVwID0g
LTE7CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UKICAgICAgICAgcmV0
dXJuOwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXApOwogICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0yNjgsNyArMjY2LDcgQEAgdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogI2VuZGlmCiAKICAgICBpZiAo
c2hvdWxkSGF2ZVNwaW5CdXR0b24pIHsKLSAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGlu
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0
b24gPSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7CiAgICAgICAg
IG1fY29udGFpbmVyLT5hcHBlbmRDaGlsZChtX2lubmVyU3BpbkJ1dHRvbiwgZWMpOwogICAgIH0K
IApAQCAtMzE4LDYgKzMxNiw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkZXN0cm95U2hh
ZG93U3VidHJlZSgpCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBtX3NwZWVjaEJ1dHRv
bi5jbGVhcigpOwogI2VuZGlmCisgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQorICAgICAgICBt
X2lubmVyU3BpbkJ1dHRvbi0+cmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKTsKICAgICBtX2lubmVy
U3BpbkJ1dHRvbi5jbGVhcigpOwogICAgIG1fY29udGFpbmVyLmNsZWFyKCk7CiB9CkBAIC00Mzgs
NCArNDM4LDExOSBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiBsaXN0LCBib29sIG11bHRpcGFydCkgY29ucwogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQor
eworICAgIC8vIFRoZSBkaWZmZXJlbmNlcyBmcm9tIHN0ZXBVcCgpL3N0ZXBEb3duKCk6CisgICAg
Ly8KKyAgICAvLyBEaWZmZXJlbmNlIDE6IHRoZSBjdXJyZW50IHZhbHVlCisgICAgLy8gSWYgdGhl
IGN1cnJlbnQgdmFsdWUgaXMgbm90IGEgbnVtYmVyLCBpbmNsdWRpbmcgZW1wdHksIHRoZSBjdXJy
ZW50IHZhbHVlIGlzIGFzc3VtZWQgYXMgMC4KKyAgICAvLyAgICogSWYgMCBpcyBpbi1yYW5nZSwg
YW5kIG1hdGNoZXMgdG8gc3RlcCB2YWx1ZQorICAgIC8vICAgICAtIFRoZSB2YWx1ZSBzaG91bGQg
YmUgdGhlICtzdGVwIGlmIG4gPiAwCisgICAgLy8gICAgIC0gVGhlIHZhbHVlIHNob3VsZCBiZSB0
aGUgLXN0ZXAgaWYgbiA8IDAKKyAgICAvLyAgICAgSWYgLXN0ZXAgb3IgK3N0ZXAgaXMgb3V0IG9m
IHJhbmdlLCBuZXcgdmFsdWUgc2hvdWxkIGJlIDAuCisgICAgLy8gICAqIElmIDAgaXMgc21hbGxl
ciB0aGFuIHRoZSBtaW5pbXVtIHZhbHVlCisgICAgLy8gICAgIC0gVGhlIHZhbHVlIHNob3VsZCBi
ZSB0aGUgbWluaW11bSB2YWx1ZSBmb3IgYW55IG4KKyAgICAvLyAgICogSWYgMCBpcyBsYXJnZXIg
dGhhbiB0aGUgbWF4aW11bSB2YWx1ZQorICAgIC8vICAgICAtIFRoZSB2YWx1ZSBzaG91bGQgYmUg
dGhlIG1heGltdW0gdmFsdWUgZm9yIGFueSBuCisgICAgLy8gICAqIElmIDAgaXMgaW4tcmFuZ2Us
IGJ1dCBub3QgbWF0Y2hlZCB0byBzdGVwIHZhbHVlCisgICAgLy8gICAgIC0gVGhlIHZhbHVlIHNo
b3VsZCBiZSB0aGUgbGFyZ2VyIG1hdGNoZWQgdmFsdWUgbmVhcmVzdCB0byAwIGlmIG4gPiAwCisg
ICAgLy8gICAgICAgZS5nLiA8aW5wdXQgdHlwZT1udW1iZXIgbWluPS0xMDAgc3RlcD0zPiAtPiAy
CisgICAgLy8gICAgIC0gVGhlIHZhbHVlIHNob3VsZCBiZSB0aGUgc21hbGVyIG1hdGNoZWQgdmFs
dWUgbmVhcmVzdCB0byAwIGlmIG4gPCAwCisgICAgLy8gICAgICAgZS5nLiA8aW5wdXQgdHlwZT1u
dW1iZXIgbWluPS0xMDAgc3RlcD0zPiAtPiAtMQorICAgIC8vICAgQXMgZm9yIGRhdGUvZGF0ZXRp
bWUtbG9jYWwvbW9udGgvdGltZS93ZWVrIHR5cGVzLCB0aGUgY3VycmVudCB2YWx1ZSBpcyBhc3N1
bWVkIGFzICJ0aGUgY3VycmVudCBsb2NhbCBkYXRlL3RpbWUiLgorICAgIC8vICAgQXMgZm9yIGRh
dGV0aW1lIHR5cGUsIHRoZSBjdXJyZW50IHZhbHVlIGlzIGFzc3VtZWQgYXMgInRoZSBjdXJyZW50
IGRhdGUvdGltZSBpbiBVVEMiLgorICAgIC8vIElmIHRoZSBjdXJyZW50IHZhbHVlIGlzIHNtYWxs
ZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZToKKyAgICAvLyAgLSBUaGUgdmFsdWUgc2hvdWxkIGJl
IHRoZSBtaW5pbXVtIHZhbHVlIGlmIG4gPiAwCisgICAgLy8gIC0gTm90aGluZyBzaG91bGQgaGFw
cGVuIGlmIG4gPCAwCisgICAgLy8gSWYgdGhlIGN1cnJlbnQgdmFsdWUgaXMgbGFyZ2VyIHRoYW4g
dGhlIG1heGltdW0gdmFsdWU6CisgICAgLy8gIC0gVGhlIHZhbHVlIHNob3VsZCBiZSB0aGUgbWF4
aW11bSB2YWx1ZSBpZiBuIDwgMAorICAgIC8vICAtIE5vdGhpbmcgc2hvdWxkIGhhcHBlbiBpZiBu
ID4gMAorICAgIC8vCisgICAgLy8gRGlmZmVyZW5jZSAyOiBjbGFtcGluZyBzdGVwcworICAgIC8v
IElmIHRoZSBjdXJyZW50IHZhbHVlIGlzIG5vdCBtYXRjaGVkIHRvIHN0ZXAgdmFsdWU6CisgICAg
Ly8gLSBUaGUgdmFsdWUgc2hvdWxkIGJlIHRoZSBsYXJnZXIgbWF0Y2hlZCB2YWx1ZSBuZWFyZXN0
IHRvIDAgaWYgbiA+IDAKKyAgICAvLyAgIGUuZy4gPGlucHV0IHR5cGU9bnVtYmVyIHZhbHVlPTMg
bWluPS0xMDAgc3RlcD0zPiAtPiA1CisgICAgLy8gLSBUaGUgdmFsdWUgc2hvdWxkIGJlIHRoZSBz
bWFsZXIgbWF0Y2hlZCB2YWx1ZSBuZWFyZXN0IHRvIDAgaWYgbiA8IDAKKyAgICAvLyAgIGUuZy4g
PGlucHV0IHR5cGU9bnVtYmVyIHZhbHVlPTMgbWluPS0xMDAgc3RlcD0zPiAtPiAyCisgICAgLy8K
KyAgICAvLyBuIGlzIGFzc3VtZWQgYXMgLW4gaWYgc3RlcCA8IDAuCisKKyAgICBBU1NFUlQoaXNT
dGVwcGFibGUoKSk7CisgICAgaWYgKCFpc1N0ZXBwYWJsZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgQVNTRVJUKG4pOworICAgIGlmICghbikKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RlcFJh
bmdlIHN0ZXBSYW5nZShjcmVhdGVTdGVwUmFuZ2UoQW55SXNEZWZhdWx0U3RlcCkpOworCisgICAg
Ly8gRklYTUU6IE5vdCBhbnkgY2hhbmdlcyBhZnRlciBzdGVwcGluZywgZXZlbiBpZiBpdCBpcyBh
biBpbnZhbGlkIHZhbHVlLCBtYXkgYmUgYmV0dGVyLgorICAgIC8vIChlLmcuIFN0ZXBwaW5nLXVw
IGZvciA8aW5wdXQgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iZm9vIiBzdGVwPSJhbnkiIC8+ID0+ICJm
b28iKQorICAgIGlmICghc3RlcFJhbmdlLmhhc1N0ZXAoKSkKKyAgICAgIHJldHVybjsKKworICAg
IGNvbnN0IERlY2ltYWwgc3RlcCA9IHN0ZXBSYW5nZS5zdGVwKCk7CisKKyAgICBpbnQgc2lnbjsK
KyAgICBpZiAoc3RlcCA+IDApCisgICAgICAgIHNpZ24gPSBuOworICAgIGVsc2UgaWYgKHN0ZXAg
PCAwKQorICAgICAgICBzaWduID0gLW47CisgICAgZWxzZQorICAgICAgICBzaWduID0gMDsKKwor
ICAgIFN0cmluZyBjdXJyZW50U3RyaW5nVmFsdWUgPSBlbGVtZW50KCktPnZhbHVlKCk7CisgICAg
RGVjaW1hbCBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGN1cnJlbnRTdHJpbmdWYWx1ZSk7
CisgICAgaWYgKCFjdXJyZW50LmlzRmluaXRlKCkpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YzsKKyAgICAgICAgY3VycmVudCA9IGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpOworICAgICAgICBj
b25zdCBEZWNpbWFsIG5leHREaWZmID0gc3RlcCAqIG47CisgICAgICAgIGlmIChjdXJyZW50IDwg
c3RlcFJhbmdlLm1pbmltdW0oKSAtIG5leHREaWZmKQorICAgICAgICAgICAgY3VycmVudCA9IHN0
ZXBSYW5nZS5taW5pbXVtKCkgLSBuZXh0RGlmZjsKKyAgICAgICAgaWYgKGN1cnJlbnQgPiBzdGVw
UmFuZ2UubWF4aW11bSgpIC0gbmV4dERpZmYpCisgICAgICAgICAgICBjdXJyZW50ID0gc3RlcFJh
bmdlLm1heGltdW0oKSAtIG5leHREaWZmOworICAgICAgICBzZXRWYWx1ZUFzRGVjaW1hbChjdXJy
ZW50LCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQsIGVjKTsKKyAgICB9CisgICAgaWYgKChz
aWduID4gMCAmJiBjdXJyZW50IDwgc3RlcFJhbmdlLm1pbmltdW0oKSkgfHwgKHNpZ24gPCAwICYm
IGN1cnJlbnQgPiBzdGVwUmFuZ2UubWF4aW11bSgpKSkgeworICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOworICAgICAgICBzZXRWYWx1ZUFzRGVjaW1hbChzaWduID4gMCA/IHN0ZXBSYW5nZS5taW5p
bXVtKCkgOiBzdGVwUmFuZ2UubWF4aW11bSgpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQs
IGVjKTsKKyAgICB9IGVsc2UgeworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBp
ZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VS
VCghc3RlcC5pc1plcm8oKSk7CisgICAgICAgICAgICBjb25zdCBEZWNpbWFsIGJhc2UgPSBzdGVw
UmFuZ2Uuc3RlcEJhc2UoKTsKKyAgICAgICAgICAgIERlY2ltYWwgbmV3VmFsdWU7CisgICAgICAg
ICAgICBpZiAoc2lnbiA8IDApCisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBiYXNlICsgKChj
dXJyZW50IC0gYmFzZSkgLyBzdGVwKS5mbG9vcigpICogc3RlcDsKKyAgICAgICAgICAgIGVsc2Ug
aWYgKHNpZ24gPiAwKQorICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gYmFzZSArICgoY3VycmVu
dCAtIGJhc2UpIC8gc3RlcCkuY2VpbGluZygpICogc3RlcDsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGN1cnJlbnQ7CisKKyAgICAgICAgICAgIGlmIChuZXdW
YWx1ZSA8IHN0ZXBSYW5nZS5taW5pbXVtKCkpCisgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBz
dGVwUmFuZ2UubWluaW11bSgpOworICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID4gc3RlcFJhbmdl
Lm1heGltdW0oKSkKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHN0ZXBSYW5nZS5tYXhpbXVt
KCk7CisKKyAgICAgICAgICAgIHNldFZhbHVlQXNEZWNpbWFsKG5ld1ZhbHVlLCBuID09IDEgfHwg
biA9PSAtMSA/IERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCA6IERpc3BhdGNoTm9FdmVudCwg
ZWMpOworICAgICAgICAgICAgaWYgKG4gPiAxKQorICAgICAgICAgICAgICAgIGFwcGx5U3RlcChu
IC0gMSwgQW55SXNEZWZhdWx0U3RlcCwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7
CisgICAgICAgICAgICBlbHNlIGlmIChuIDwgLTEpCisgICAgICAgICAgICAgICAgYXBwbHlTdGVw
KG4gKyAxLCBBbnlJc0RlZmF1bHRTdGVwLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQsIGVj
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhcHBseVN0ZXAobiwgQW55SXNEZWZhdWx0
U3RlcCwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50LCBlYyk7CisgICAgfQorfQorCit2b2lk
IFRleHRGaWVsZElucHV0VHlwZTo6c3BpbkJ1dHRvblN0ZXBEb3duKCkKK3sKKyAgICBzdGVwVXBG
cm9tUmVuZGVyZXIoLTEpOworfQorCit2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6c3BpbkJ1dHRv
blN0ZXBVcCgpCit7CisgICAgc3RlcFVwRnJvbVJlbmRlcmVyKDEpOworfQorCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxk
SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmlu
ZGV4IGIzNjI5ZDBkM2U4NDBiNWRmODBjMmUzN2YzMGMzNjI4ZGIxNjMwNzguLmJkZWU2NjAyZTg5
ZDJkNTg2NDNlNmRmOTcxNWUzM2JiZjIxNTNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBUZXh0RmllbGRJbnB1
dFR5cGVfaAogCiAjaW5jbHVkZSAiSW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsNyArNDEsNyBA
QCBjbGFzcyBTcGluQnV0dG9uRWxlbWVudDsKIAogLy8gVGhlIGNsYXNzIHJlcHJlc2VudHMgdHlw
ZXMgb2Ygd2hpY2ggVUkgY29udGFpbiB0ZXh0IGZpZWxkcy4KIC8vIEl0IHN1cHBvcnRzIG5vdCBv
bmx5IHRoZSB0eXBlcyBmb3IgQmFzZVRleHRJbnB1dFR5cGUgYnV0IGFsc28gdHlwZT1udW1iZXIu
Ci1jbGFzcyBUZXh0RmllbGRJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKK2NsYXNzIFRl
eHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHByaXZhdGUgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OlN0ZXBBY3Rpb25IYW5kbGVyIHsKIHByb3RlY3RlZDoKICAgICBUZXh0RmllbGRJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCopOwogICAgIHZpcnR1YWwgflRleHRGaWVsZElucHV0VHlw
ZSgpOwpAQCAtODQsNiArODUsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgYXBwZW5k
Rm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKIAorICAgIC8vIEhlbHBlciBmdW5j
dGlvbiBmb3Igc3BpbkJ1dHRvblN0ZXB7RG93bixVcH0uCisgICAgdm9pZCBzdGVwVXBGcm9tUmVu
ZGVyZXIoaW50KTsKKworICAgIC8vIFNwaW5CdXR0b25FbGVtZW50OjpTdGVwQWN0aW9uSGFuZGxl
ciBmdW5jdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25TdGVwRG93bigpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzcGluQnV0dG9uU3RlcFVwKCkgT1ZFUlJJREU7CisKICAg
ICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fY29udGFpbmVyOwogICAgIFJlZlB0cjxIVE1MRWxlbWVu
dD4gbV9pbm5lckJsb2NrOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9pbm5lclRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAppbmRleCA1ZDI2ODQxYzI0MzU3MDU1ZjdiNWI5OGI3MTgxOGIzMDU3YzFhZDEz
Li45ZjZlODRmYzcyMDJjYWY3MGJhZDEzMDQwMjAxNGUyYWRmMTUxYTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKQEAgLTIzNCw4ICsyMzQsOSBAQCB2b2lkIFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIFNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCitpbmxpbmUgU3BpbkJ1dHRvbkVsZW1lbnQ6OlNwaW5C
dXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgU3RlcEFjdGlvbkhhbmRsZXImIHN0ZXBB
Y3Rpb25IYW5kbGVyKQogICAgIDogSFRNTERpdkVsZW1lbnQoZGl2VGFnLCBkb2N1bWVudCkKKyAg
ICAsIG1fc3RlcEFjdGlvbkhhbmRsZXIoJnN0ZXBBY3Rpb25IYW5kbGVyKQogICAgICwgbV9jYXB0
dXJpbmcoZmFsc2UpCiAgICAgLCBtX3VwRG93blN0YXRlKEluZGV0ZXJtaW5hdGUpCiAgICAgLCBt
X3ByZXNzU3RhcnRpbmdTdGF0ZShJbmRldGVybWluYXRlKQpAQCAtMjQzLDkgKzI0NCw5IEBAIGlu
bGluZSBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogfQogCi1QYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBTcGluQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8U3BpbkJ1dHRvbkVs
ZW1lbnQ+IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBTdGVw
QWN0aW9uSGFuZGxlciYgc3RlcEFjdGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGluQnV0dG9uRWxlbWVudChkb2N1bWVudCkpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU3BpbkJ1dHRvbkVsZW1lbnQoZG9jdW1lbnQsIHN0ZXBBY3Rpb25IYW5kbGVyKSk7CiB9CiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU3BpbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKQEAgLTI5NCw3ICsyOTUsMTIgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBpbnB1dC0+c2VsZWN0KCk7
CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChtX3Vw
RG93blN0YXRlICE9IEluZGV0ZXJtaW5hdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXQt
PnN0ZXBVcEZyb21SZW5kZXJlcihtX3VwRG93blN0YXRlID09IFVwID8gMSA6IC0xKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fc3RlcEFjdGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3VwRG93blN0YXRlID09IFVwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc3RlcEFjdGlvbkhhbmRsZXItPnNwaW5CdXR0b25TdGVwVXAoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3N0ZXBB
Y3Rpb25IYW5kbGVyLT5zcGluQnV0dG9uU3RlcERvd24oKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0UmVwZWF0aW5nVGltZXIoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0zNjAs
NyArMzY2LDEzIEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnN0ZXAoaW50IGFtb3VudCkKICAg
ICBpZiAobV91cERvd25TdGF0ZSAhPSBtX3ByZXNzU3RhcnRpbmdTdGF0ZSkKICAgICAgICAgcmV0
dXJuOwogI2VuZGlmCi0gICAgaW5wdXQtPnN0ZXBVcEZyb21SZW5kZXJlcihhbW91bnQpOworICAg
IGlmICghbV9zdGVwQWN0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGFt
b3VudCA+IDApCisgICAgICAgIG1fc3RlcEFjdGlvbkhhbmRsZXItPnNwaW5CdXR0b25TdGVwVXAo
KTsKKyAgICBlbHNlIGlmIChhbW91bnQgPCAwKQorICAgICAgICBtX3N0ZXBBY3Rpb25IYW5kbGVy
LT5zcGluQnV0dG9uU3RlcERvd24oKTsKIH0KICAgICAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6
OnJlcGVhdGluZ1RpbWVyRmlyZWQoVGltZXI8U3BpbkJ1dHRvbkVsZW1lbnQ+KikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgK
aW5kZXggYzIyODBmMWU4MzdlZTM1NGYyYjExMTg2OGY2NjQzYWU4ODNjYjRjNC4uNTE4MjZjN2Vl
MGFiZjA3ZjBmM2IxNjA5NTQ2NDgxMzFlOTI3ZmY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTk2LDE0ICs5
NiwyMiBAQCBwdWJsaWM6CiAgICAgICAgIFVwLAogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTcGluQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Kik7CisgICAgY2xhc3MgU3Rl
cEFjdGlvbkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U3RlcEFjdGlv
bkhhbmRsZXIoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25TdGVwRG93bigp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25TdGVwVXAoKSA9IDA7CisgICAg
fTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqLCBTdGVwQWN0aW9uSGFuZGxlciYpOwogICAgIFVwRG93blN0YXRlIHVwRG93blN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV91cERvd25TdGF0ZTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlQ2FwdHVyZSgpOworICAgIHZvaWQgcmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKSB7IG1fc3Rl
cEFjdGlvbkhhbmRsZXIgPSAwOyB9CiAKICAgICB2b2lkIHN0ZXAoaW50IGFtb3VudCk7CiAgICAg
CiBwcml2YXRlOgotICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50Kik7CisgICAgU3BpbkJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBTdGVwQWN0aW9uSGFuZGxlciYpOwogCiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwpAQCAtMTE3LDYgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpOwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNl
Rm9jdXNhYmxlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIFN0ZXBBY3Rpb25IYW5k
bGVyKiBtX3N0ZXBBY3Rpb25IYW5kbGVyOwogICAgIGJvb2wgbV9jYXB0dXJpbmc7CiAgICAgVXBE
b3duU3RhdGUgbV91cERvd25TdGF0ZTsKICAgICBVcERvd25TdGF0ZSBtX3ByZXNzU3RhcnRpbmdT
dGF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148722</attachid>
            <date>2012-06-20 20:40:15 -0700</date>
            <delta_ts>2012-06-20 22:11:43 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-89439-20120621124014.patch</filename>
            <type>text/plain</type>
            <size>11977</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY2ZWY2NjIxNTE2OWIy
ZGU3Zjc1ODg0M2E5MjczMjBlMjczYTA2Ny4uNzNhNDZmNWYxZjI1YmM3NDJlMTU1YTljMzcyNTg3
OWE4NDY4YzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA2LTE4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNYWtl
IHN0ZXAgYWN0aW9uIG9mIFNwaW5CdXR0b25FbGVtZW50IHJlcGxhY2VhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTQzOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBTcGluQnV0dG9uRWxlbWVudDo6Q2FsbGJhY2sgdG8gc3BlY2lmeSBzdGVwCisgICAgICAgIGFj
dGlvbiBieSBjb250cm9sIGNsaWVudHMgZm9yIHVzaW5nIFNwaW5CdXR0b25FbGVtZW50IGJ5Cisg
ICAgICAgIFRleHRGaWVsZElucHV0VHlwZSBhbmQgZnV0dXJlIHZlcnNpb24gb2YgVGltZUlucHV0
RmllbGQuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhpcyBpbXByb3ZpbmcgZmxleGliaWxp
dHkgb2YgU3BpbkJ1dHRvbkVsZW1lbnQsIHdlCisgICAgICAgIGZyZWUgSFRNTElucHV0RWxlbWVu
dCBmcm9tIFNwaW5CdXR0b25FbGVtZW50IGRlcGVuZGVuY3kgb24KKyAgICAgICAgc3RlcFVwRnJv
bVJlbmRlcmVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNo
YW5nZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6IFJl
bW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6IFJlbW92ZWQgc3RlcFVwRnJvbVJlbmRlcmVyKCkuCisgICAgICAgICogaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBl
Ojp+VGV4dEZpZWxkSW5wdXRUeXBlKTogQWRkZWQgdG8gY2FsbCBTcGluQnV0dG9uRWxlbWVudDo6
cmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1
dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudEZvclNwaW5CdXR0b24pOiBDaGFuZ2VkIHRvIGNhbGwg
c3BpbkJ1dHRvblN0ZXB7RG93bixVcH0KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0
VHlwZTo6aGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0b24pOiBDaGFuZ2VkIHRvIGNhbGwgc3Bp
bkJ1dHRvblN0ZXB7RG93bixVcH0KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6IEFkZGVkIFNwaW5CdXR0b25FbGVtZW50OjpTdGVwQWN0
aW9uSGFuZGxlciBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5
cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKTogQWRkZWQgdG8gY2FsbCBTcGluQnV0dG9uRWxlbWVu
dDo6cmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJ
bnB1dFR5cGU6OnNwaW5CdXR0b25TdGVwRG93bik6IEFkZGVkIGZvciBpbXBsZW1lbnRhdGlvbiBv
ZiBTcGluQnV0dG9uRWxlbWVudDo6U3RlcEFjdGlvbkhhbmRsZXIuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0RmllbGRJbnB1dFR5cGU6OnNwaW5CdXR0b25TdGVwVXApOiBBZGRlZCBmb3IgaW1wbGVt
ZW50YXRpb24gb2YgU3BpbkJ1dHRvbkVsZW1lbnQ6OlN0ZXBBY3Rpb25IYW5kbGVyLgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgIChUZXh0RmllbGRJbnB1dFR5
cGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQp
OiBBZGRlZCBTdGVwQWN0aW9uSGFuZGxlciBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpT
cGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IENoYW5nZWQgdG8gY2FsbCBk
b1N0ZXBBY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpTcGluQnV0dG9uRWxlbWVudDo6ZG9TdGVw
QWN0aW9uKTogQWRkZWQgdG8gY2FsbCBTdGVwQWN0aW9uSGFuZGxlciBpZiBwb3NzaWJsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlNwaW5CdXR0b25FbGVtZW50OjpzdGVwKTogQ2hhbmdlZCB0byBjYWxs
IGRvU3RlcEFjdGlvbi4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaDoKKyAgICAgICAgKFN0ZXBBY3Rpb25IYW5kbGVyKTogQWRkZWQuCisKIDIwMTItMDYt
MjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjA4ODkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAppbmRleCA0YTgxMDdlZTVkNjAzZDAyNmI0YmMxMTc0ZTRhNGU2NTk3
NmM1Y2UxLi42ZmNkMTU4ZjAzMWM2M2IyNmYzNTQ1ZmZjYzlhYWNkNzQ4YjJhYzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE0NjEsMTEgKzE0NjEsNiBA
QCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3RlcHBhYmxlKCkgY29uc3QKICAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPmlzU3RlcHBhYmxlKCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6
c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQotewotICAgIG1faW5wdXRUeXBlLT5zdGVwVXBGcm9t
UmVuZGVyZXIobik7Ci19Ci0KICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCiBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCmluZGV4IDNhZjJiMzUyNTY4ZGMyYjVhY2I5ZWU4NDcxYjc1Zjk0N2U1
MjhjMTUuLmZhZWFiZmZiYWFiNGIzNzllMTU4ZTQyMmMzNzAyZTMyNDQ5ZDMzNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0ZXBEb3duKEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHN0ZXBEb3duKDEsIGVjKTsg
fQogICAgIC8vIHN0ZXBVcCgpL3N0ZXBEb3duKCkgZm9yIHVzZXItaW50ZXJhY3Rpb24uCiAgICAg
Ym9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0OwotICAgIHZvaWQgc3RlcFVwRnJvbVJlbmRlcmVyKGlu
dCk7CiAKICAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggN2ZjNDBkMmEyZTljYzJiMzRkOGE2NDAx
Y2Q4YjUzNGQ4NjVkOTljYS4uNjMyODE2YmU3ZDE3MTk1MDE3MDZiMjkzYTc1ODI3ZDUwMmYyYTE1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNjMs
NiArNjMsOCBAQCBUZXh0RmllbGRJbnB1dFR5cGU6OlRleHRGaWVsZElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KQogCiBUZXh0RmllbGRJbnB1dFR5cGU6On5UZXh0RmllbGRJbnB1
dFR5cGUoKQogeworICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikKKyAgICAgICAgbV9pbm5lclNw
aW5CdXR0b24tPnJlbW92ZVN0ZXBBY3Rpb25IYW5kbGVyKCk7CiB9CiAKIGJvb2wgVGV4dEZpZWxk
SW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdApAQCAt
MTUyLDE0ICsxNTQsMTIgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25F
dmVudEZvclNwaW5CdXR0b24oS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgaWYgKGVsZW1lbnQo
KS0+ZGlzYWJsZWQoKSB8fCBlbGVtZW50KCktPnJlYWRPbmx5KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCBTdHJpbmcmIGtleSA9IGV2ZW50LT5rZXlJZGVudGlmaWVyKCk7Ci0gICAgaW50
IHN0ZXAgPSAwOwogICAgIGlmIChrZXkgPT0gIlVwIikKLSAgICAgICAgc3RlcCA9IDE7CisgICAg
ICAgIHNwaW5CdXR0b25TdGVwVXAoKTsKICAgICBlbHNlIGlmIChrZXkgPT0gIkRvd24iKQotICAg
ICAgICBzdGVwID0gLTE7CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UK
ICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXAp
OwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0xNjcsMTQgKzE2Nywx
MiBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlV2hlZWxFdmVudEZvclNwaW5CdXR0
b24oV2hlZWxFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGVsZW1lbnQoKS0+ZGlzYWJsZWQoKSB8
fCBlbGVtZW50KCktPnJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgaW50IHN0ZXAgPSAwOwogICAgIGlmIChldmVudC0+d2hlZWxEZWx0YVko
KSA+IDApCi0gICAgICAgIHN0ZXAgPSAxOworICAgICAgICBzcGluQnV0dG9uU3RlcFVwKCk7CiAg
ICAgZWxzZSBpZiAoZXZlbnQtPndoZWVsRGVsdGFZKCkgPCAwKQotICAgICAgICBzdGVwID0gLTE7
CisgICAgICAgIHNwaW5CdXR0b25TdGVwRG93bigpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJu
OwotICAgIGVsZW1lbnQoKS0+c3RlcFVwRnJvbVJlbmRlcmVyKHN0ZXApOwogICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCkBAIC0yNzAsNyArMjY4LDcgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogI2VuZGlmCiAKICAgICBpZiAoc2hv
dWxkSGF2ZVNwaW5CdXR0b24pIHsKLSAgICAgICAgbV9pbm5lclNwaW5CdXR0b24gPSBTcGluQnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICAgICAgbV9pbm5lclNwaW5CdXR0b24g
PSBTcGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7CiAgICAgICAgIG1f
Y29udGFpbmVyLT5hcHBlbmRDaGlsZChtX2lubmVyU3BpbkJ1dHRvbiwgZWMpOwogICAgIH0KIApA
QCAtMzIwLDYgKzMxOCw4IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93
U3VidHJlZSgpCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICBtX3NwZWVjaEJ1dHRvbi5j
bGVhcigpOwogI2VuZGlmCisgICAgaWYgKG1faW5uZXJTcGluQnV0dG9uKQorICAgICAgICBtX2lu
bmVyU3BpbkJ1dHRvbi0+cmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKTsKICAgICBtX2lubmVyU3Bp
bkJ1dHRvbi5jbGVhcigpOwogICAgIG1fY29udGFpbmVyLmNsZWFyKCk7CiB9CkBAIC00NDAsNCAr
NDQwLDE1IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmIGxpc3QsIGJvb2wgbXVsdGlwYXJ0KSBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcERvd24oKQoreworICAgIHN0
ZXBVcEZyb21SZW5kZXJlcigtMSk7Cit9CisKK3ZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpzcGlu
QnV0dG9uU3RlcFVwKCkKK3sKKyAgICBzdGVwVXBGcm9tUmVuZGVyZXIoMSk7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmgKaW5kZXggYjM2MjlkMGQzZTg0MGI1ZGY4MGMyZTM3ZjMwYzM2MjhkYjE2MzA3OC4uNGM3YTli
YWM0MzRiZjY4NmIxNWVkOGJhMzc5ZjNmMTdiOWQwYzZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRGaWVsZElucHV0VHlwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFRleHRGaWVs
ZElucHV0VHlwZV9oCiAKICNpbmNsdWRlICJJbnB1dFR5cGUuaCIKKyNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw3ICs0
MSw3IEBAIGNsYXNzIFNwaW5CdXR0b25FbGVtZW50OwogCiAvLyBUaGUgY2xhc3MgcmVwcmVzZW50
cyB0eXBlcyBvZiB3aGljaCBVSSBjb250YWluIHRleHQgZmllbGRzLgogLy8gSXQgc3VwcG9ydHMg
bm90IG9ubHkgdGhlIHR5cGVzIGZvciBCYXNlVGV4dElucHV0VHlwZSBidXQgYWxzbyB0eXBlPW51
bWJlci4KLWNsYXNzIFRleHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgeworY2xh
c3MgVGV4dEZpZWxkSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSwgcHJpdmF0ZSBTcGluQnV0
dG9uRWxlbWVudDo6U3RlcEFjdGlvbkhhbmRsZXIgewogcHJvdGVjdGVkOgogICAgIFRleHRGaWVs
ZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+VGV4dEZpZWxkSW5w
dXRUeXBlKCk7CkBAIC04NCw2ICs4NSwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBh
cHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sIG11bHRpcGFydCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogCisgICAgLy8gU3BpbkJ1
dHRvbkVsZW1lbnQ6OlN0ZXBBY3Rpb25IYW5kbGVyIGZ1bmN0aW9ucy4KKyAgICB2aXJ0dWFsIHZv
aWQgc3BpbkJ1dHRvblN0ZXBEb3duKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNwaW5C
dXR0b25TdGVwVXAoKSBPVkVSUklERTsKKwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9jb250
YWluZXI7CiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2lubmVyQmxvY2s7CiAgICAgUmVmUHRy
PEhUTUxFbGVtZW50PiBtX2lubmVyVGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCmluZGV4IDVkMjY4NDFjMjQz
NTcwNTVmN2I1Yjk4YjcxODE4YjMwNTdjMWFkMTMuLmMwNGZiNTVmODE4YzliNjc2YjA4YTE5OTIx
MDQ4NmMzZjk2ODUzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApAQCAtMjM0LDggKzIzNCw5IEBAIHZvaWQg
U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
KiBldmVudCkKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgU3Bp
bkJ1dHRvbkVsZW1lbnQ6OlNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK2lu
bGluZSBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBTdGVwQWN0aW9uSGFuZGxlciYgc3RlcEFjdGlvbkhhbmRsZXIpCiAgICAgOiBIVE1MRGl2
RWxlbWVudChkaXZUYWcsIGRvY3VtZW50KQorICAgICwgbV9zdGVwQWN0aW9uSGFuZGxlcigmc3Rl
cEFjdGlvbkhhbmRsZXIpCiAgICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKICAgICAsIG1fdXBEb3du
U3RhdGUoSW5kZXRlcm1pbmF0ZSkKICAgICAsIG1fcHJlc3NTdGFydGluZ1N0YXRlKEluZGV0ZXJt
aW5hdGUpCkBAIC0yNDMsOSArMjQ0LDkgQEAgaW5saW5lIFNwaW5CdXR0b25FbGVtZW50OjpTcGlu
QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U3Bp
bkJ1dHRvbkVsZW1lbnQ+IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50KQorUGFzc1JlZlB0cjxTcGluQnV0dG9uRWxlbWVudD4gU3BpbkJ1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFN0ZXBBY3Rpb25IYW5kbGVyJiBzdGVwQWN0aW9uSGFu
ZGxlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwaW5CdXR0b25FbGVtZW50KGRvY3Vt
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGluQnV0dG9uRWxlbWVudChkb2N1bWVu
dCwgc3RlcEFjdGlvbkhhbmRsZXIpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTcGluQnV0
dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtMjk0LDcgKzI5NSw3IEBAIHZv
aWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
ICAgICAgICAgICAgaW5wdXQtPnNlbGVjdCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAobV91cERvd25TdGF0ZSAhPSBJbmRldGVybWluYXRlKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlucHV0LT5zdGVwVXBGcm9tUmVuZGVyZXIobV91cERvd25T
dGF0ZSA9PSBVcCA/IDEgOiAtMSk7CisgICAgICAgICAgICAgICAgICAgIGRvU3RlcEFjdGlvbiht
X3VwRG93blN0YXRlID09IFVwID8gMSA6IC0xKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
bmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFJlcGVhdGluZ1RpbWVyKCk7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzI1LDYgKzMyNiwxNyBAQCB2b2lkIFNwaW5CdXR0b25F
bGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgSFRNTERp
dkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogfQogCit2b2lkIFNwaW5CdXR0
b25FbGVtZW50Ojpkb1N0ZXBBY3Rpb24oaW50IGFtb3VudCkKK3sKKyAgICBpZiAoIW1fc3RlcEFj
dGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhbW91bnQgPiAwKQorICAg
ICAgICBtX3N0ZXBBY3Rpb25IYW5kbGVyLT5zcGluQnV0dG9uU3RlcFVwKCk7CisgICAgZWxzZSBp
ZiAoYW1vdW50IDwgMCkKKyAgICAgICAgbV9zdGVwQWN0aW9uSGFuZGxlci0+c3BpbkJ1dHRvblN0
ZXBEb3duKCk7Cit9CisKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKCkK
IHsKICAgICBzdG9wUmVwZWF0aW5nVGltZXIoKTsKQEAgLTM2MCw3ICszNzIsNyBAQCB2b2lkIFNw
aW5CdXR0b25FbGVtZW50OjpzdGVwKGludCBhbW91bnQpCiAgICAgaWYgKG1fdXBEb3duU3RhdGUg
IT0gbV9wcmVzc1N0YXJ0aW5nU3RhdGUpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgotICAgIGlu
cHV0LT5zdGVwVXBGcm9tUmVuZGVyZXIoYW1vdW50KTsKKyAgICBkb1N0ZXBBY3Rpb24oYW1vdW50
KTsKIH0KICAgICAKIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnJlcGVhdGluZ1RpbWVyRmlyZWQo
VGltZXI8U3BpbkJ1dHRvbkVsZW1lbnQ+KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5kZXggYzIyODBmMWU4MzdlZTM1
NGYyYjExMTg2OGY2NjQzYWU4ODNjYjRjNC4uNmYxYTk5OTNhZTI1YzY5ZjhkNzg1ZTk4ZTIyMGY3
YjZkMjcwNWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTk2LDE0ICs5NiwyNSBAQCBwdWJsaWM6CiAgICAg
ICAgIFVwLAogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGluQnV0dG9uRWxlbWVu
dD4gY3JlYXRlKERvY3VtZW50Kik7CisgICAgY2xhc3MgU3RlcEFjdGlvbkhhbmRsZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+U3RlcEFjdGlvbkhhbmRsZXIoKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNwaW5CdXR0b25TdGVwRG93bigpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNwaW5CdXR0b25TdGVwVXAoKSA9IDA7CisgICAgfTsKKworICAgIC8vIFRoZSBvd25l
ciBvZiBTcGluQnV0dG9uRWxlbWVudCBtdXN0IGNhbGwgcmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIK
KyAgICAvLyBiZWNhdXNlIFNwaW5CdXR0b25FbGVtZW50IGNhbiBiZSBvdXRsaXZlIFN0ZXBBY3Rp
b25IYW5kbGVyCisgICAgLy8gaW1wbGVtZW50YXRpb24sIGUuZy4gZHVyaW5nIGV2ZW50IGhhbmRs
aW5nLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBjcmVhdGUoRG9j
dW1lbnQqLCBTdGVwQWN0aW9uSGFuZGxlciYpOwogICAgIFVwRG93blN0YXRlIHVwRG93blN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV91cERvd25TdGF0ZTsgfQogICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlQ2FwdHVyZSgpOworICAgIHZvaWQgcmVtb3ZlU3RlcEFjdGlvbkhhbmRsZXIoKSB7IG1fc3Rl
cEFjdGlvbkhhbmRsZXIgPSAwOyB9CiAKICAgICB2b2lkIHN0ZXAoaW50IGFtb3VudCk7CiAgICAg
CiBwcml2YXRlOgotICAgIFNwaW5CdXR0b25FbGVtZW50KERvY3VtZW50Kik7CisgICAgU3BpbkJ1
dHRvbkVsZW1lbnQoRG9jdW1lbnQqLCBTdGVwQWN0aW9uSGFuZGxlciYpOwogCiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwpAQCAtMTExLDEyICsxMjIsMTQgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4oc2hhZG93QW5jZXN0b3JOb2RlKCkpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgp
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHlGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSktPmlzUmVhZE9u
bHlGb3JtQ29udHJvbCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKTsKKyAgICB2b2lkIGRvU3RlcEFjdGlvbihpbnQpOwogICAgIHZvaWQgc3RhcnRSZXBl
YXRpbmdUaW1lcigpOwogICAgIHZvaWQgc3RvcFJlcGVhdGluZ1RpbWVyKCk7CiAgICAgdm9pZCBy
ZXBlYXRpbmdUaW1lckZpcmVkKFRpbWVyPFNwaW5CdXR0b25FbGVtZW50PiopOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0cnVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3Vz
ZUZvY3VzYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgICBTdGVwQWN0aW9uSGFu
ZGxlciogbV9zdGVwQWN0aW9uSGFuZGxlcjsKICAgICBib29sIG1fY2FwdHVyaW5nOwogICAgIFVw
RG93blN0YXRlIG1fdXBEb3duU3RhdGU7CiAgICAgVXBEb3duU3RhdGUgbV9wcmVzc1N0YXJ0aW5n
U3RhdGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>