<?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>72350</bug_id>
          
          <creation_ts>2011-11-14 21:04:35 -0800</creation_ts>
          <short_desc>Pass Aspect Ratio to RenderStyle</short_desc>
          <delta_ts>2011-11-23 12:19:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>47738</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fady Samuel">fsamuel</reporter>
          <assigned_to name="Fady Samuel">fsamuel</assigned_to>
          <cc>macpherson</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502616</commentid>
    <comment_count>0</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 21:04:35 -0800</bug_when>
    <thetext>Pass Aspect Ratio to RenderStyle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502617</commentid>
    <comment_count>1</comment_count>
      <attachid>115092</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 21:05:04 -0800</bug_when>
    <thetext>Created attachment 115092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502618</commentid>
    <comment_count>2</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-14 21:07:45 -0800</bug_when>
    <thetext>This code does not yet actually work yet. With all the changes to style code lately, I&apos;m not sure how to get aspect ratio in RenderStyle and accessible from RenderBox (where most of the layout logic will be). This seems to be what I need to do but I&apos;m not sure why it&apos;s not working. What am I doing wrong? I&apos;d appreciate any ideas. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502619</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-14 21:07:45 -0800</bug_when>
    <thetext>Attachment 115092 did not pass style-queue:

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

Source/WebCore/css/CSSStyleSelector.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504091</commentid>
    <comment_count>4</comment_count>
      <attachid>115092</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-16 11:33:44 -0800</bug_when>
    <thetext>Comment on attachment 115092
Patch

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

&gt; Source/WebCore/css/CSSStyleSelector.cpp:2595
&gt; +    case CSSPropertyWebkitAspectRatio:
&gt; +    {
&gt; +        HANDLE_INHERIT_AND_INITIAL(aspectRatioNumerator, AspectRatioNumerator);
&gt; +        HANDLE_INHERIT_AND_INITIAL(aspectRatioDenominator, AspectRatioDenominator);
&gt; +        if (!value-&gt;isAspectRatioValue())
&gt; +            return;
&gt; +        fprintf(stderr, &quot;&gt;&gt;&gt;setting aspect ratio\n&quot;);
&gt; +        CSSAspectRatioValue* aspectRatioValue = static_cast&lt;CSSAspectRatioValue*&gt;(value);
&gt; +        m_style-&gt;setAspectRatioNumerator(aspectRatioValue-&gt;numeratorValue());
&gt; +        m_style-&gt;setAspectRatioDenominator(aspectRatioValue-&gt;denominatorValue());
&gt; +        return;
&gt; +    }

Not sure if this is your problem, but I don&apos;t think you need any of this code. The code in CSSStyleApplyProperty.cpp should do all this work for you. You just need to add a case to the end of applyProperty to the looong list of cases below &quot;// These properties are implemented in the CSSStyleApplyProperty lookup table.&quot;

&gt; Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp:39
&gt; +    , m_aspectRatioNumerator(RenderStyle::initialAspectRatioDenominator())

Should be initialAspectRatioNumerator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504547</commentid>
    <comment_count>5</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-16 21:51:27 -0800</bug_when>
    <thetext>Looks like this was a failure in testing on my part. I was using the parsing test I wrote for my previous patch. It turns out that the style recalc timer was not going off until the end of all the tests and so the style update never made its way into RenderStyle. In order to verify that style is being set correctly and is accessible in RenderBox, I call document.body.offsetHeight to force a style recalc and relayout after each test. fprintfs will not be included in RenderBox in the final patch obviously, this is just for local testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504959</commentid>
    <comment_count>6</comment_count>
      <attachid>115616</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 10:23:22 -0800</bug_when>
    <thetext>Created attachment 115616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504986</commentid>
    <comment_count>7</comment_count>
      <attachid>115621</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 10:50:31 -0800</bug_when>
    <thetext>Created attachment 115621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505022</commentid>
    <comment_count>8</comment_count>
      <attachid>115621</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-17 11:40:25 -0800</bug_when>
    <thetext>Comment on attachment 115621
Patch

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

Code looks fine. I&apos;m fine with having all this untestable plumbing code, I&apos;m a bit more hesitant about the RenderStyle.cpp change since it actually has some logic.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:393
&gt; +        if (rareNonInheritedData-&gt;m_hasAspectRatio != other-&gt;rareNonInheritedData-&gt;m_hasAspectRatio)
&gt; +            return StyleDifferenceLayout;
&gt; +
&gt; +        if (rareNonInheritedData-&gt;m_hasAspectRatio) {
&gt; +            float aspectRatio = rareNonInheritedData-&gt;m_aspectRatioNumerator / rareNonInheritedData-&gt;m_aspectRatioDenominator;
&gt; +            float otherAspectRatio = other-&gt;rareNonInheritedData-&gt;m_aspectRatioNumerator / other-&gt;rareNonInheritedData-&gt;m_aspectRatioDenominator;
&gt; +            if (aspectRatio != otherAspectRatio)
&gt; +                return StyleDifferenceLayout;
&gt; +        }

I&apos;m hesitant to add complicated code like this without any tests. I understand this code can&apos;t be tested until you actually are using this values. Maybe this bit belongs in the patch where you actually modify RenderBox?

&gt; LayoutTests/fast/css/aspect-ratio-parsing-tests.html:19
&gt; +          // Force a relayout to test
&gt; +          document.body.offsetHeight;

Is this still necessary? If it is, then I think there&apos;s still a bug. You shouldn&apos;t need a layout for the style parsing to happen. You&apos;ll need the layout in order to measure  the actual size of the element, but not to get the inline style attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505042</commentid>
    <comment_count>9</comment_count>
      <attachid>115621</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 11:48:07 -0800</bug_when>
    <thetext>Comment on attachment 115621
Patch

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

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.cpp:393
&gt;&gt; +        }
&gt; 
&gt; I&apos;m hesitant to add complicated code like this without any tests. I understand this code can&apos;t be tested until you actually are using this values. Maybe this bit belongs in the patch where you actually modify RenderBox?

That&apos;s fair, I&apos;ll get rid of this change for this patch.

&gt;&gt; LayoutTests/fast/css/aspect-ratio-parsing-tests.html:19
&gt;&gt; +          document.body.offsetHeight;
&gt; 
&gt; Is this still necessary? If it is, then I think there&apos;s still a bug. You shouldn&apos;t need a layout for the style parsing to happen. You&apos;ll need the layout in order to measure  the actual size of the element, but not to get the inline style attribute.

I guess I&apos;m getting a little ahead of what&apos;s necessary for this patch. This is necessary to force the style recalc so that it then forces a relayout. I did this to verify RenderBox is getting the updated style information while testing this code manually. This is not necessary for this patch or this layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505062</commentid>
    <comment_count>10</comment_count>
      <attachid>115646</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 11:58:58 -0800</bug_when>
    <thetext>Created attachment 115646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505073</commentid>
    <comment_count>11</comment_count>
      <attachid>115646</attachid>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 12:09:42 -0800</bug_when>
    <thetext>Comment on attachment 115646
Patch

Clearing flags on attachment: 115646

Committed r100656: &lt;http://trac.webkit.org/changeset/100656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505074</commentid>
    <comment_count>12</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 12:09:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505300</commentid>
    <comment_count>13</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-17 15:47:34 -0800</bug_when>
    <thetext>Sorry for the late feedback, I&apos;m just back from holidays so catching up on my email.

I think it would make sense to introduce an AspectRatio value struct containing the numerator and denominator values, and have a single setter + getter on RenderStyle.

You could probably also squash a few bits by having an invalid AspectRatio when the floats are NaN, which would get you away from three setters + getters on RenderStyle down to one, save a boolean on RenderStyle for hasAspectRatio, drop 15-20 lines of code, and might even allow you to use CSSStyleApplyProperty::ApplyPropertyDefault instead of having to define your own.

I&apos;m not sure if CSSAspectRatioValue belongs in CSSPrimitiveValue or not. I prefer how you have it as a separate class personally, but the existing code does dump most of these simple types in there, especially when the css value can be either an identifier or a primitive value.

Finally a question:
Why do you need a separate numerator and denominator? Couldn&apos;t this ratio be effectively stored and used as a fractional floating point value instead? Why can&apos;t the property accept a single floating point value in the CSS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505311</commentid>
    <comment_count>14</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-17 15:58:11 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Sorry for the late feedback, I&apos;m just back from holidays so catching up on my email.
&gt; 
&gt; I think it would make sense to introduce an AspectRatio value struct containing the numerator and denominator values, and have a single setter + getter on RenderStyle.
&gt; 
&gt; You could probably also squash a few bits by having an invalid AspectRatio when the floats are NaN, which would get you away from three setters + getters on RenderStyle down to one, save a boolean on RenderStyle for hasAspectRatio, drop 15-20 lines of code, and might even allow you to use CSSStyleApplyProperty::ApplyPropertyDefault instead of having to define your own.
&gt; 
&gt; I&apos;m not sure if CSSAspectRatioValue belongs in CSSPrimitiveValue or not. I prefer how you have it as a separate class personally, but the existing code does dump most of these simple types in there, especially when the css value can be either an identifier or a primitive value.
&gt; 
&gt; Finally a question:
&gt; Why do you need a separate numerator and denominator? Couldn&apos;t this ratio be effectively stored and used as a fractional floating point value instead? Why can&apos;t the property accept a single floating point value in the CSS?

I suppose I don&apos;t but I decided to keep them up to when we do layout to avoid rounding errors. Occasionally in the original experimental patch (see the master bug), I need 1/aspectRatio() rather than aspectRatio(). In retrospect, this is probably unnecessary.

I&apos;m certainly willing to make changes to this, I just wanted to have all the parsing/plumbing out of the way, so that I can focus on layout, I&apos;m sure I&apos;ll probably iterate over layout corner cases at least a dozen times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508292</commentid>
    <comment_count>15</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2011-11-23 12:19:49 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Sorry for the late feedback, I&apos;m just back from holidays so catching up on my email.
&gt; 
&gt; I think it would make sense to introduce an AspectRatio value struct containing the numerator and denominator values, and have a single setter + getter on RenderStyle.
&gt; 
&gt; You could probably also squash a few bits by having an invalid AspectRatio when the floats are NaN, which would get you away from three setters + getters on RenderStyle down to one, save a boolean on RenderStyle for hasAspectRatio, drop 15-20 lines of code, and might even allow you to use CSSStyleApplyProperty::ApplyPropertyDefault instead of having to define your own.
&gt; 
&gt; I&apos;m not sure if CSSAspectRatioValue belongs in CSSPrimitiveValue or not. I prefer how you have it as a separate class personally, but the existing code does dump most of these simple types in there, especially when the css value can be either an identifier or a primitive value.
&gt; 
&gt; Finally a question:
&gt; Why do you need a separate numerator and denominator? Couldn&apos;t this ratio be effectively stored and used as a fractional floating point value instead? Why can&apos;t the property accept a single floating point value in the CSS?

Luke, I plan to implement your suggestions here: https://bugs.webkit.org/show_bug.cgi?id=73037 before closing the master bug. Thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115092</attachid>
            <date>2011-11-14 21:05:04 -0800</date>
            <delta_ts>2011-11-17 10:23:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72350-20111115000502.patch</filename>
            <type>text/plain</type>
            <size>16341</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU4NjQ3NDEzMTBjYTM1
ZmViMjczMjAyNmJhNGI2ZWVkMGE1YTc4Zi4uZjA2M2E5NzZiNGViMjFkYjViZTM0MmNkYzQ2ZWJk
ZmJiNGM1ZGE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE0ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJh
dGlvIHRvIFJlbmRlclN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFz
cGVjdFJhdGlvOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5SW5pdGlhbFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0ZUhhbmRsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkpOgorICAg
ICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQXNwZWN0UmF0aW9WYWx1ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aGFzQXNw
ZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmFzcGVjdFJhdGlv
KToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb051bWVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0SGFzQXNwZWN0UmF0
aW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJh
dGlvTnVtZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFs
SGFzQXNwZWN0UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmluaXRp
YWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZs
YWdzOjppbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwog
MjAxMS0xMS0xNCAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBNdWx0aXBsZSBmb3JlaWduIG9iamVjdHMgbm90IHJlbmRlcmVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDk1M2VlYWMz
ZDJkZTU0NTI4OGU4Y2EyNWU0NjI4YmE5YWI1NDI0YzcuLjkwMDVhNzdmMjJhMmYxYjBlMGVjZjI3
ZmRmNDcxNjJlYjY1ODc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODYyLDYgKzE4NjIsMTAgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1Zh
bHVlKGludCBwcm9wZXIKICAgICAgICAgICAgIHJldHVybiBnZXRUaW1pbmdGdW5jdGlvblZhbHVl
KHN0eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBw
ZWFyYW5jZToKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVW
YWx1ZShzdHlsZS0+YXBwZWFyYW5jZSgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFzcGVjdFJhdGlvOgorICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQXNwZWN0UmF0aW8oKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmFzcGVjdFJhdGlvKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNl
VmlzaWJpbGl0eToKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoKHN0eWxlLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFj
ZVZpc2liaWxpdHlIaWRkZW4pID8gQ1NTVmFsdWVIaWRkZW4gOiBDU1NWYWx1ZVZpc2libGUpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CkBAIC0yMDUyLDcgKzIw
NTYsNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgLyogVW5pbXBsZW1lbnRlZCBDU1MgMyBwcm9wZXJ0aWVzIChpbmNsdWRpbmcgQ1NTMyBz
aG9ydGhhbmQgcHJvcGVydGllcykgKi8KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFz
cGVjdFJhdGlvOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IDllMzEwMWZjMzcyYTRhYzE5MzAzYzBkYzdhZDM2
YWEwMDQ3ZmNjZDkuLmI1ZGRjYjI2NDkzNzk3MTNjOTc4NWRjMzg4ZjRiZjlhYTRlYzFjNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVBcHBseVBy
b3BlcnR5LmgiCiAKKyNpbmNsdWRlICJDU1NBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZsZXhWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTgzNiw2ICs4MzcsNDEgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJu
IFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwg
JmFwcGx5VmFsdWUpOyB9CiB9OwogCitjbGFzcyBBcHBseVByb3BlcnR5QXNwZWN0UmF0aW8gewor
cHVibGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0
b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyZW50U3R5bGUo
KS0+aGFzQXNwZWN0UmF0aW8oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2VsZWN0
b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0
eWxlKCktPmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHls
ZSgpLT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+YXNw
ZWN0UmF0aW9OdW1lcmF0b3IoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0
aWFsVmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oUmVuZGVyU3R5bGU6OmluaXRpYWxIYXNB
c3BlY3RSYXRpbygpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlv
RGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkp
OworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoUmVu
ZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc0FzcGVjdFJhdGlvVmFsdWUo
KSkgeworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKGZh
bHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBDU1NBc3BlY3RS
YXRpb1ZhbHVlKiBhc3BlY3RSYXRpb1ZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0UmF0aW9W
YWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJh
dGlvKHRydWUpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5v
bWluYXRvcihhc3BlY3RSYXRpb1ZhbHVlLT5kZW5vbWluYXRvclZhbHVlKCkpOworICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1
ZS0+bnVtZXJhdG9yVmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxl
ciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIo
JmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsKKyAg
ICB9Cit9OworCiBjb25zdCBDU1NTdHlsZUFwcGx5UHJvcGVydHkmIENTU1N0eWxlQXBwbHlQcm9w
ZXJ0eTo6c2hhcmVkQ1NTU3R5bGVBcHBseVByb3BlcnR5KCkKIHsKICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1N0eWxlQXBwbHlQcm9wZXJ0eSwgY3NzU3R5bGVBcHBseVByb3BlcnR5SW5zdGFu
Y2UsICgpKTsKQEAgLTg0Nyw2ICs4ODMsOCBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0
eWxlQXBwbHlQcm9wZXJ0eSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0
aWVzOyArK2kpCiAgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIoKTsK
IAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFzcGVjdFJhdGlvLCBB
cHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0ZUhhbmRsZXIoKSk7CisKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPEluaGVyaXRG
cm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldENvbG9yLCAm
UmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IsICZSZW5kZXJTdHlsZTo6aW52YWxpZENv
bG9yLCBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlEaXJl
Y3Rpb248JlJlbmRlclN0eWxlOjpkaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0RGlyZWN0aW9u
LCBSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA2YmVlODM2NDYyMTMwMDI1
MzY1YWExZGYyOWEwZmVhZjkyMzM1NWY1Li5iMGM3MjE1MzllOTRmM2ZjMGIxZDVmMjgxOGRkYWU0
OGJmMjJmNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29udGVudERhdGEuaCIKICNpbmNsdWRlICJDb3VudGVy
Q29udGVudC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKKyNpbmNsdWRlICJDU1NBc3BlY3RS
YXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKQEAg
LTI1ODAsNiArMjU4MSwxOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgICAgIG1fc3R5bGUtPnNldEJvcmRlckltYWdl
U291cmNlKHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwgdmFsdWUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0
UmF0aW86CisgICAgeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChhc3BlY3RS
YXRpb051bWVyYXRvciwgQXNwZWN0UmF0aW9OdW1lcmF0b3IpOworICAgICAgICBIQU5ETEVfSU5I
RVJJVF9BTkRfSU5JVElBTChhc3BlY3RSYXRpb0Rlbm9taW5hdG9yLCBBc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yKTsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNBc3BlY3RSYXRpb1ZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiPj4+c2V0dGluZyBhc3Bl
Y3QgcmF0aW9cbiIpOworICAgICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVlKiBhc3BlY3RSYXRpb1Zh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAg
bV9zdHlsZS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+bnVtZXJh
dG9yVmFsdWUoKSk7CisgICAgICAgIG1fc3R5bGUtPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Io
YXNwZWN0UmF0aW9WYWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOgogICAg
IHsKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwobWFza0JveEltYWdlU291cmNl
LCBNYXNrQm94SW1hZ2VTb3VyY2UpCkBAIC0zNzg3LDcgKzM4MDAsNiBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
VW5kZXJsaW5lU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEZvbnRTaXplRGVsdGE6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA3MTE5MDIzNDg0NzA4NDk2MTM0Y2ZjODg2N2ZkYzU0
NDRiZjUyNWZkLi45M2RjNzQxNjAzMmEyNTQ0M2M2MTlkYWI3NjJjMjgzNTU1MzJhYjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lu
aXRpYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbml0aWFsOyB9CiAgICAgYm9vbCBpc0lu
aGVyaXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luaGVyaXRlZDsgfQogCisgICAgYm9v
bCBpc0FzcGVjdFJhdGlvVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBBc3Bl
Y3RSYXRpb0NsYXNzOyB9CiAgICAgYm9vbCBpc0JvcmRlckltYWdlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2NsYXNzVHlwZSA9PSBCb3JkZXJJbWFnZUNsYXNzOyB9CiAgICAgYm9vbCBpc0JvcmRl
ckltYWdlU2xpY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEJvcmRlcklt
YWdlU2xpY2VDbGFzczsgfQogICAgIGJvb2wgaXNDdXJzb3JJbWFnZVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3Vyc29ySW1hZ2VDbGFzczsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBjOTc5ZTBlZGY1OTNiN2ZlMTRkN2ZmOGM3MDRhY2Yz
NzhlZWYyYWI1Li5lMjU1ZmZiYTBmYmE0ZDVjNmYyNDcxM2QzNDlkZDFhZWQ3OGY5OGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTcwOCw3ICsxNzA4LDEyIEBA
IHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9u
KiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAgICAgICAgICAgICBzZXRMb2dpY2FsV2lkdGgobWF4
PExheW91dFVuaXQ+KGxvZ2ljYWxXaWR0aExlbmd0aC5jYWxjRmxvYXRWYWx1ZSgwKSArIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIC8qCisgICAgZnByaW50ZihzdGRlcnIsICJS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGggSGFzQXNwZWN0UmF0aW86ICVkIE51bTogJWYg
RGVub206ICVmXG4iLAorICAgICAgICAgICAgc3R5bGUoKS0+aGFzQXNwZWN0UmF0aW8oKSwKKyAg
ICAgICAgICAgIHN0eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9yKCksCisgICAgICAgICAgICBz
dHlsZSgpLT5hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOworICAgICovCiAgICAgLy8gV2lkdGgg
Y2FsY3VsYXRpb25zCiAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkKICAgICAgICAgc2V0TG9naWNh
bFdpZHRoKGxvZ2ljYWxXaWR0aExlbmd0aC52YWx1ZSgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2lj
YWxXaWR0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKaW5kZXggZjE3Nzc4Y2IyYTVlNDJiNzgzNmI4NmMxY2FmYjc4Mjg4NTk3ODkwMS4uZDA5NGNi
MDE4NGNhNmM3NTE3OGZkNDVlODM5ZTM3NjRkNTA1OTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwMSw2ICs3MDEsMTEgQEAgcHVibGlj
OgogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbG9yU3BhY2U+KHJhcmVJbmhlcml0ZWREYXRhLT5jb2xvclNwYWNlKTsgfQogICAgIGZsb2F0
IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsg
fQogICAgIENvbnRyb2xQYXJ0IGFwcGVhcmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDb250cm9sUGFydD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSk7IH0KKyAg
ICAvLyBhc3BlY3QgcmF0aW8gY29udmVuaWVuY2UgbWV0aG9kCisgICAgYm9vbCBoYXNBc3BlY3RS
YXRpbygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2hhc0FzcGVjdFJh
dGlvOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBhc3BlY3RSYXRp
b051bWVyYXRvcigpIC8gYXNwZWN0UmF0aW9EZW5vbWluYXRvcigpOyB9CisgICAgZmxvYXQgYXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlv
TnVtZXJhdG9yOyB9CiAgICAgRUJveEFsaWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3hBbGlnbm1lbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJl
Y2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24pOyB9CiAgICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94RGlyZWN0aW9uPihpbmhlcml0ZWRf
ZmxhZ3MuX2JveF9kaXJlY3Rpb24pOyB9CiAgICAgZmxvYXQgYm94RmxleCgpIHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleDsgfQpAQCAt
MTA1Miw2ICsxMDU3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlD
ZWxsIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxscyA9IHY7IH0KICAgICB2b2lkIHNl
dENhcHRpb25TaWRlKEVDYXB0aW9uU2lkZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9z
aWRlID0gdjsgfQogCisgICAgdm9pZCBzZXRIYXNBc3BlY3RSYXRpbyhib29sIGIpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9oYXNBc3BlY3RSYXRpbywgYik7IH0KKyAgICB2b2lk
IHNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3IsIHYpOyB9CisgICAgdm9pZCBzZXRB
c3BlY3RSYXRpb051bWVyYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fYXNwZWN0UmF0aW9OdW1lcmF0b3IsIHYpOyB9CiAgICAgdm9pZCBzZXRDb3VudGVySW5j
cmVtZW50KHNob3J0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9jb3VudGVy
SW5jcmVtZW50LCB2KSB9CiAgICAgdm9pZCBzZXRDb3VudGVyUmVzZXQoc2hvcnQgdikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2NvdW50ZXJSZXNldCwgdikgfQogCkBAIC0xNDUy
LDYgKzE0NjAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlhbEJvcmRl
ckZpdCgpIHsgcmV0dXJuIEJvcmRlckZpdEJvcmRlcjsgfQogICAgIHN0YXRpYyBFUmVzaXplIGlu
aXRpYWxSZXNpemUoKSB7IHJldHVybiBSRVNJWkVfTk9ORTsgfQogICAgIHN0YXRpYyBDb250cm9s
UGFydCBpbml0aWFsQXBwZWFyYW5jZSgpIHsgcmV0dXJuIE5vQ29udHJvbFBhcnQ7IH0KKyAgICBz
dGF0aWMgYm9vbCBpbml0aWFsSGFzQXNwZWN0UmF0aW8oKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHN0YXRpYyBmbG9hdCBpbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIHsgcmV0dXJuIDE7
IH0KKyAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgeyByZXR1
cm4gMTsgfQogICAgIHN0YXRpYyBPcmRlciBpbml0aWFsUlRMT3JkZXJpbmcoKSB7IHJldHVybiBM
b2dpY2FsT3JkZXI7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFRleHRTdHJva2VXaWR0aCgp
IHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNv
dW50KCkgeyByZXR1cm4gMTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IGNhMzE3NTYz
YjU1Zjk3ZTNjYmEwMmMzN2UxNzdkMWJkNWEyZjI5YTYuLjk4OTU3NzgzZjkwY2VlOWYwYTU1MTYy
NjQ4NjY0MDQ0ZWQwOGM3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTM1LDYgKzM1
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICA6IG9wYWNpdHkoUmVuZGVyU3R5bGU6Omlu
aXRpYWxPcGFjaXR5KCkpCisgICAgLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpCisgICAgLCBtX2FzcGVjdFJhdGlv
TnVtZXJhdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKQog
ICAgICwgbV9jb3VudGVySW5jcmVtZW50KDApCiAgICAgLCBtX2NvdW50ZXJSZXNldCgwKQogICAg
ICwgbV9wZXJzcGVjdGl2ZShSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlKCkpCkBAIC02
Miw2ICs2NCw3IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEoKQogICAgICwgbV9hcHBlYXJhbmNlKFJlbmRlclN0eWxlOjppbml0aWFsQXBwZWFy
YW5jZSgpKQogICAgICwgbV9ib3JkZXJGaXQoUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQo
KSkKICAgICAsIG1fdGV4dENvbWJpbmUoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0Q29tYmluZSgp
KQorICAgICwgbV9oYXNBc3BlY3RSYXRpbyhmYWxzZSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgLCBtX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbihmYWxzZSkKICNl
bmRpZgpAQCAtNzIsNiArNzUsOCBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhKCkKIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykKICAg
ICA6IFJlZkNvdW50ZWQ8U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YT4oKQogICAgICwgb3BhY2l0
eShvLm9wYWNpdHkpCisgICAgLCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3Ioby5tX2FzcGVjdFJh
dGlvRGVub21pbmF0b3IpCisgICAgLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yKG8ubV9hc3BlY3RS
YXRpb051bWVyYXRvcikKICAgICAsIG1fY291bnRlckluY3JlbWVudChvLm1fY291bnRlckluY3Jl
bWVudCkKICAgICAsIG1fY291bnRlclJlc2V0KG8ubV9jb3VudGVyUmVzZXQpCiAgICAgLCBtX3Bl
cnNwZWN0aXZlKG8ubV9wZXJzcGVjdGl2ZSkKQEAgLTEyMSw2ICsxMjYsNyBAQCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFy
ZU5vbkluaGVyaXRlZAogICAgICwgbV9hcHBlYXJhbmNlKG8ubV9hcHBlYXJhbmNlKQogICAgICwg
bV9ib3JkZXJGaXQoby5tX2JvcmRlckZpdCkKICAgICAsIG1fdGV4dENvbWJpbmUoby5tX3RleHRD
b21iaW5lKQorICAgICwgbV9oYXNBc3BlY3RSYXRpbyhvLm1faGFzQXNwZWN0UmF0aW8pCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICwgbV9ydW5uaW5nQWNjZWxlcmF0ZWRB
bmltYXRpb24oby5tX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbikKICNlbmRpZgpAQCAtMTU4
LDggKzE2NCwxMSBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX2FwcGVh
cmFuY2UgPT0gby5tX2FwcGVhcmFuY2UKICAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2Jv
cmRlckZpdAogICAgICAgICAmJiBtX3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQorICAg
ICAgICAmJiBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3IgPT0gby5tX2FzcGVjdFJhdGlvRGVub21p
bmF0b3IKKyAgICAgICAgJiYgbV9hc3BlY3RSYXRpb051bWVyYXRvciA9PSBvLm1fYXNwZWN0UmF0
aW9OdW1lcmF0b3IKICAgICAgICAgJiYgbV9jb3VudGVySW5jcmVtZW50ID09IG8ubV9jb3VudGVy
SW5jcmVtZW50CiAgICAgICAgICYmIG1fY291bnRlclJlc2V0ID09IG8ubV9jb3VudGVyUmVzZXQK
KyAgICAgICAgJiYgbV9oYXNBc3BlY3RSYXRpbyA9PSBvLm1faGFzQXNwZWN0UmF0aW8KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgICYmICFtX3J1bm5pbmdBY2NlbGVy
YXRlZEFuaW1hdGlvbiAmJiAhby5tX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbgogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCA5ZTYyZGZmZjQxOGQyY2RhZmRlODQyMjNiYTU2MzU4
MmJiM2Y1Y2YyLi5mNTIwYTQxMjk1MzRjZjE5MjNiNWZhZjRkYjAyZDM0OWNiYjJkMzlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgKQEAgLTg5LDYgKzg5LDkgQEAgcHVibGljOgogCiAgICAgZmxvYXQg
b3BhY2l0eTsgLy8gV2hldGhlciBvciBub3Qgd2UncmUgdHJhbnNwYXJlbnQuCiAKKyAgICBmbG9h
dCBtX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7CisgICAgZmxvYXQgbV9hc3BlY3RSYXRpb051bWVy
YXRvcjsKKwogICAgIHNob3J0IG1fY291bnRlckluY3JlbWVudDsKICAgICBzaG9ydCBtX2NvdW50
ZXJSZXNldDsKIApAQCAtMTU4LDYgKzE2MSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2Jv
cmRlckZpdCA6IDE7IC8vIEVCb3JkZXJGaXQKICAgICB1bnNpZ25lZCBtX3RleHRDb21iaW5lIDog
MTsgLy8gQ1NTMyB0ZXh0LWNvbWJpbmUgcHJvcGVydGllcwogCisgICAgYm9vbCBtX2hhc0FzcGVj
dFJhdGlvIDogMTsgLy8gV2hldGhlciBvciBub3QgYW4gYXNwZWN0IHJhdGlvIGhhcyBiZWVuIHNw
ZWNpZmllZC4KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBtX3J1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbiA6IDE7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115616</attachid>
            <date>2011-11-17 10:23:22 -0800</date>
            <delta_ts>2011-11-17 10:50:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72350-20111117132320.patch</filename>
            <type>text/plain</type>
            <size>17882</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDczODIwYzE3ZmMwYjNm
MDVmNDViMTZlYWVkNjNiZWEwNDRiZjZkNS4uMDg4N2UzNDY0OGVmNzg0YTI5MzUxMTViMmI4ZTI5
NDMyNmMyNWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE3ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJh
dGlvIHRvIFJlbmRlclN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhc3MgdGhlIGFzcGVjdCByYXRpbyB0byBSZW5kZXJTdHlsZSwgYW5kIGZvcmNl
IHJlbGF5b3V0IGlmIHRoZSByYXRpbyBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIGNzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlBc3BlY3RSYXRpbzo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5KToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0FzcGVjdFJhdGlvVmFsdWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aGFzQXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb0Rlbm9taW5hdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb051bWVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0SGFzQXNwZWN0UmF0aW8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvTnVtZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsSGFzQXNwZWN0
UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxBc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0
aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMS0xMS0x
NiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBpbmNv
cnJlY3QgbXVsdGlwYXJ0IGhhbmRsaW5nIGluIHIxMDAzMTEuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGFjYjdmOWYwMWVk
MzJkMzg2MzdhNDVmMzRjMDRmYWI4NzRkNjEyZGMuLjUyMWZhNzk0YWNjZGRlODVmMzZlM2JlY2Vl
MTVjNDczOGU4ZmYwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODcxLDYgKzE4NzEsMTAgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGludCBwcm9wZXIKICAgICAgICAgICAgIHJldHVybiBnZXRUaW1pbmdGdW5jdGlvblZhbHVlKHN0
eWxlLT5hbmltYXRpb25zKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFy
YW5jZToKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1
ZShzdHlsZS0+YXBwZWFyYW5jZSgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFz
cGVjdFJhdGlvOgorICAgICAgICAgICAgaWYgKCFzdHlsZS0+aGFzQXNwZWN0UmF0aW8oKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlTm9uZSk7CisgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVD
YWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmFzcGVjdFJhdGlvKCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlz
aWJpbGl0eToKICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoKHN0eWxlLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZp
c2liaWxpdHlIaWRkZW4pID8gQ1NTVmFsdWVIaWRkZW4gOiBDU1NWYWx1ZVZpc2libGUpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6CkBAIC0yMDYxLDcgKzIwNjUs
NiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgLyogVW5pbXBsZW1lbnRlZCBDU1MgMyBwcm9wZXJ0aWVzIChpbmNsdWRpbmcgQ1NTMyBzaG9y
dGhhbmQgcHJvcGVydGllcykgKi8KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFzcGVj
dFJhdGlvOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VGV4dExpbmVUaHJvdWdoQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZUFwcGx5UHJvcGVydHkuY3BwCmluZGV4IDAzNDBkYmM0MmE5YjUyZDQ4MmU0MjM4NTViOTc3MmQ2
MDYzNGZiMDMuLmZiNWIxZTlmZDAyYWMyODNjM2QzYmQyNzUxMzU1OTBlOGMwZDVkZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmgiCiAKKyNpbmNsdWRlICJDU1NBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZsZXhWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTgzMSw2ICs4MzIsNDEgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFBy
b3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFw
cGx5VmFsdWUpOyB9CiB9OwogCitjbGFzcyBBcHBseVByb3BlcnR5QXNwZWN0UmF0aW8geworcHVi
bGljOgorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+
aGFzQXNwZWN0UmF0aW8oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxl
KCktPmFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSk7CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgp
LT5zZXRBc3BlY3RSYXRpb051bWVyYXRvcihzZWxlY3Rvci0+cGFyZW50U3R5bGUoKS0+YXNwZWN0
UmF0aW9OdW1lcmF0b3IoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFs
VmFsdWUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IpCisgICAgeworICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0SGFzQXNwZWN0UmF0aW8oUmVuZGVyU3R5bGU6OmluaXRpYWxIYXNBc3Bl
Y3RSYXRpbygpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkpOwor
ICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoUmVuZGVy
U3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSog
dmFsdWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc0FzcGVjdFJhdGlvVmFsdWUoKSkg
eworICAgICAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlvKGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBDU1NBc3BlY3RSYXRp
b1ZhbHVlKiBhc3BlY3RSYXRpb1ZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTQXNwZWN0UmF0aW9WYWx1
ZSo+KHZhbHVlKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhhc0FzcGVjdFJhdGlv
KHRydWUpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9EZW5vbWlu
YXRvcihhc3BlY3RSYXRpb1ZhbHVlLT5kZW5vbWluYXRvclZhbHVlKCkpOworICAgICAgICBzZWxl
Y3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoYXNwZWN0UmF0aW9WYWx1ZS0+
bnVtZXJhdG9yVmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBj
cmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFw
cGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsKKyAgICB9
Cit9OworCiBjb25zdCBDU1NTdHlsZUFwcGx5UHJvcGVydHkmIENTU1N0eWxlQXBwbHlQcm9wZXJ0
eTo6c2hhcmVkQ1NTU3R5bGVBcHBseVByb3BlcnR5KCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTU1N0eWxlQXBwbHlQcm9wZXJ0eSwgY3NzU3R5bGVBcHBseVByb3BlcnR5SW5zdGFuY2Us
ICgpKTsKQEAgLTg0Miw2ICs4NzgsOCBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxl
QXBwbHlQcm9wZXJ0eSgpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVz
OyArK2kpCiAgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIoKTsKIAor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFzcGVjdFJhdGlvLCBBcHBs
eVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0ZUhhbmRsZXIoKSk7CisKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPEluaGVyaXRGcm9t
UGFyZW50LCAmUmVuZGVyU3R5bGU6OmNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldENvbG9yLCAmUmVu
ZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IsICZSZW5kZXJTdHlsZTo6aW52YWxpZENvbG9y
LCBSZW5kZXJTdHlsZTo6aW5pdGlhbENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlEaXJlY3Rp
b248JlJlbmRlclN0eWxlOjpkaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0RGlyZWN0aW9uLCBS
ZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA3NTI3ZDczZWY0MmZhOGIwYjNk
MmEwMDI4MDE1OWEwZTY5ZGQxOTFmLi41NGY0N2Q5YmEyNWRjOWM1NGQwMWM2MDM1ZGUyMDFjMDEx
NmVkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yOSw5
ICsyOSwxMCBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKIAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ29udGVudERh
dGEuaCIKKyNpbmNsdWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAiQ291bnRlckNvbnRlbnQuaCIK
LSNpbmNsdWRlICJDdXJzb3JMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFj
ZVJ1bGUuaCIKQEAgLTUzLDggKzU0LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAj
aW5jbHVkZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgotI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSAiQ291bnRlci5oIgorI2lu
Y2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
RmlsdGVyT3BlcmF0aW9uLmgiCiAjZW5kaWYKQEAgLTM4MjIsNyArMzgyMiw2IEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZU1vZGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVTdHlsZToKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVdp
ZHRoOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2U6CkBAIC0zOTE3LDYgKzM5MTYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5
UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmln
aW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZToKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0QXNwZWN0UmF0aW86CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZToKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4
IDYzYjE2ZWExOGJiYzQ1NzBlNTI0YjljNWUwMzE3ZWVmNGIxMGM1NTMuLjkwYjhhZWYyOTAzMjA1
ODZjNGM3YmUxMTJjNmMwNzQ2NmVmMmYxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC01OSw2
ICs1OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJpbWl0aXZlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpbWl0aXZlOyB9CiAgICAgYm9vbCBpc1ZhbHVlTGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNMaXN0OyB9CiAKKyAgICBib29sIGlzQXNwZWN0UmF0aW9WYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2xhc3NUeXBlID09IEFzcGVjdFJhdGlvQ2xhc3M7IH0KICAgICBib29sIGlzQm9y
ZGVySW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IEJvcmRlckltYWdl
Q2xhc3M7IH0KICAgICBib29sIGlzQm9yZGVySW1hZ2VTbGljZVZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9jbGFzc1R5cGUgPT0gQm9yZGVySW1hZ2VTbGljZUNsYXNzOyB9CiAgICAgYm9vbCBpc0N1
cnNvckltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBDdXJzb3JJbWFn
ZUNsYXNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAppbmRleCA5MmE0OTk3NGQ5MTY0OWJiMmM0OTlkYTQzODJjMDEzNzNmMGM2ZjQ2Li4zYjU1
NTBkMDJlNDRiY2NjNzRiNDg0YWQ3MDNlYWQxZDk2NmMwYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTM4Miw2ICszODIsMTYgQEAg
U3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0eWxlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhl
ciwgdW5zaWduZWQmIGNoYW5nZWRDb24KICAgICAgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0T3ZlcmZsb3cgIT0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0T3Zl
cmZsb3cpCiAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCisgICAg
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9oYXNBc3BlY3RSYXRpbyAhPSBvdGhlci0+
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8pCisgICAgICAgICAgICByZXR1
cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OworCisgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9oYXNBc3BlY3RSYXRpbykgeworICAgICAgICAgICAgZmxvYXQgYXNwZWN0UmF0aW8g
PSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb051bWVyYXRvciAvIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3I7CisgICAgICAgICAgICBmbG9h
dCBvdGhlckFzcGVjdFJhdGlvID0gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVj
dFJhdGlvTnVtZXJhdG9yIC8gb3RoZXItPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJh
dGlvRGVub21pbmF0b3I7CisgICAgICAgICAgICBpZiAoYXNwZWN0UmF0aW8gIT0gb3RoZXJBc3Bl
Y3RSYXRpbykKKyAgICAgICAgICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0Owor
ICAgICAgICB9CisKICAgICAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3JlZ2lvbk92
ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25PdmVyZmxvdykK
ICAgICAgICAgICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VMYXlvdXQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggOWEwOTE1NDgxNTJhMDE0
ZDAwNDYzODZlM2JhMzA4ZDJhZDBkM2JmMy4uYjc3YjAzZjQ0ZTI0MGM4ZmU1Y2EwNGQzYTdiNzdj
MzMxOTc1ZDhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKQEAgLTcwMSw2ICs3MDEsMTEgQEAgcHVibGljOgogICAgIENvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbG9yU3BhY2U+KHJhcmVJbmhlcml0
ZWREYXRhLT5jb2xvclNwYWNlKTsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+b3BhY2l0eTsgfQogICAgIENvbnRyb2xQYXJ0IGFwcGVh
cmFuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250cm9sUGFydD4ocmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYXBwZWFyYW5jZSk7IH0KKyAgICAvLyBhc3BlY3QgcmF0aW8gY29udmVu
aWVuY2UgbWV0aG9kCisgICAgYm9vbCBoYXNBc3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2hhc0FzcGVjdFJhdGlvOyB9CisgICAgZmxvYXQgYXNwZWN0
UmF0aW8oKSBjb25zdCB7IHJldHVybiBhc3BlY3RSYXRpb051bWVyYXRvcigpIC8gYXNwZWN0UmF0
aW9EZW5vbWluYXRvcigpOyB9CisgICAgZmxvYXQgYXNwZWN0UmF0aW9EZW5vbWluYXRvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvRGVub21pbmF0
b3I7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRpb051bWVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yOyB9CiAgICAgRUJveEFs
aWdubWVudCBib3hBbGlnbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hBbGlnbm1l
bnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RlcHJlY2F0ZWRGbGV4aWJsZUJveC0+YWxpZ24p
OyB9CiAgICAgRUJveERpcmVjdGlvbiBib3hEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFQm94RGlyZWN0aW9uPihpbmhlcml0ZWRfZmxhZ3MuX2JveF9kaXJlY3Rpb24pOyB9
CiAgICAgZmxvYXQgYm94RmxleCgpIHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Rl
cHJlY2F0ZWRGbGV4aWJsZUJveC0+ZmxleDsgfQpAQCAtMTA1MSw2ICsxMDU2LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RW1wdHlDZWxscyhFRW1wdHlDZWxsIHYpIHsgaW5oZXJpdGVkX2ZsYWdz
Ll9lbXB0eV9jZWxscyA9IHY7IH0KICAgICB2b2lkIHNldENhcHRpb25TaWRlKEVDYXB0aW9uU2lk
ZSB2KSB7IGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlID0gdjsgfQogCisgICAgdm9pZCBz
ZXRIYXNBc3BlY3RSYXRpbyhib29sIGIpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9oYXNBc3BlY3RSYXRpbywgYik7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvRGVub21pbmF0
b3IoZmxvYXQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVjdFJhdGlv
RGVub21pbmF0b3IsIHYpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb051bWVyYXRvcihmbG9h
dCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0UmF0aW9OdW1lcmF0
b3IsIHYpOyB9CiAgICAgdm9pZCBzZXRDb3VudGVySW5jcmVtZW50KHNob3J0IHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9jb3VudGVySW5jcmVtZW50LCB2KSB9CiAgICAgdm9p
ZCBzZXRDb3VudGVyUmVzZXQoc2hvcnQgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX2NvdW50ZXJSZXNldCwgdikgfQogCkBAIC0xNDQ5LDYgKzE0NTcsOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEVCb3JkZXJGaXQgaW5pdGlhbEJvcmRlckZpdCgpIHsgcmV0dXJuIEJvcmRlckZp
dEJvcmRlcjsgfQogICAgIHN0YXRpYyBFUmVzaXplIGluaXRpYWxSZXNpemUoKSB7IHJldHVybiBS
RVNJWkVfTk9ORTsgfQogICAgIHN0YXRpYyBDb250cm9sUGFydCBpbml0aWFsQXBwZWFyYW5jZSgp
IHsgcmV0dXJuIE5vQ29udHJvbFBhcnQ7IH0KKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsSGFzQXNw
ZWN0UmF0aW8oKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBmbG9hdCBpbml0aWFsQXNw
ZWN0UmF0aW9EZW5vbWluYXRvcigpIHsgcmV0dXJuIDE7IH0KKyAgICBzdGF0aWMgZmxvYXQgaW5p
dGlhbEFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgeyByZXR1cm4gMTsgfQogICAgIHN0YXRpYyBPcmRl
ciBpbml0aWFsUlRMT3JkZXJpbmcoKSB7IHJldHVybiBMb2dpY2FsT3JkZXI7IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbFRleHRTdHJva2VXaWR0aCgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0
aWMgdW5zaWduZWQgc2hvcnQgaW5pdGlhbENvbHVtbkNvdW50KCkgeyByZXR1cm4gMTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuY3BwCmluZGV4IDhkOTBjYThkOTYwNTY4MzA1ZTY4YjcxMmRjMzkzMjA0
Mjk1NmE4ZDMuLmMwMzE3NjAzYzQyODM4ZmFhMzNhZjUyMDkwZTBiY2E4NzEzNWQwMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
KCkKICAgICA6IG9wYWNpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxPcGFjaXR5KCkpCisgICAgLCBt
X2FzcGVjdFJhdGlvRGVub21pbmF0b3IoUmVuZGVyU3R5bGU6OmluaXRpYWxBc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKCkpCisgICAgLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRlclN0eWxlOjpp
bml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSkKICAgICAsIG1fY291bnRlckluY3JlbWVudCgw
KQogICAgICwgbV9jb3VudGVyUmVzZXQoMCkKICAgICAsIG1fcGVyc3BlY3RpdmUoUmVuZGVyU3R5
bGU6OmluaXRpYWxQZXJzcGVjdGl2ZSgpKQpAQCAtNjIsNiArNjQsNyBAQCBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkKICAgICAsIG1fYXBwZWFy
YW5jZShSZW5kZXJTdHlsZTo6aW5pdGlhbEFwcGVhcmFuY2UoKSkKICAgICAsIG1fYm9yZGVyRml0
KFJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyRml0KCkpCiAgICAgLCBtX3RleHRDb21iaW5lKFJl
bmRlclN0eWxlOjppbml0aWFsVGV4dENvbWJpbmUoKSkKKyAgICAsIG1faGFzQXNwZWN0UmF0aW8o
ZmFsc2UpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICwgbV9ydW5uaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb24oZmFsc2UpCiAjZW5kaWYKQEAgLTcyLDYgKzc1LDggQEAgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE+KCkKICAgICAsIG9wYWNpdHkoby5vcGFjaXR5KQorICAgICwgbV9hc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKG8ubV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yKQorICAgICwgbV9h
c3BlY3RSYXRpb051bWVyYXRvcihvLm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IpCiAgICAgLCBtX2Nv
dW50ZXJJbmNyZW1lbnQoby5tX2NvdW50ZXJJbmNyZW1lbnQpCiAgICAgLCBtX2NvdW50ZXJSZXNl
dChvLm1fY291bnRlclJlc2V0KQogICAgICwgbV9wZXJzcGVjdGl2ZShvLm1fcGVyc3BlY3RpdmUp
CkBAIC0xMTksNiArMTI0LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWQKICAgICAsIG1fYXBw
ZWFyYW5jZShvLm1fYXBwZWFyYW5jZSkKICAgICAsIG1fYm9yZGVyRml0KG8ubV9ib3JkZXJGaXQp
CiAgICAgLCBtX3RleHRDb21iaW5lKG8ubV90ZXh0Q29tYmluZSkKKyAgICAsIG1faGFzQXNwZWN0
UmF0aW8oby5tX2hhc0FzcGVjdFJhdGlvKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICAsIG1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uKG8ubV9ydW5uaW5nQWNjZWxl
cmF0ZWRBbmltYXRpb24pCiAjZW5kaWYKQEAgLTE1NCw4ICsxNjAsMTEgQEAgYm9vbCBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV9hcHBlYXJhbmNlID09IG8ubV9hcHBlYXJhbmNlCiAg
ICAgICAgICYmIG1fYm9yZGVyRml0ID09IG8ubV9ib3JkZXJGaXQKICAgICAgICAgJiYgbV90ZXh0
Q29tYmluZSA9PSBvLm1fdGV4dENvbWJpbmUKKyAgICAgICAgJiYgbV9hc3BlY3RSYXRpb0Rlbm9t
aW5hdG9yID09IG8ubV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yCisgICAgICAgICYmIG1fYXNwZWN0
UmF0aW9OdW1lcmF0b3IgPT0gby5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yCiAgICAgICAgICYmIG1f
Y291bnRlckluY3JlbWVudCA9PSBvLm1fY291bnRlckluY3JlbWVudAogICAgICAgICAmJiBtX2Nv
dW50ZXJSZXNldCA9PSBvLm1fY291bnRlclJlc2V0CisgICAgICAgICYmIG1faGFzQXNwZWN0UmF0
aW8gPT0gby5tX2hhc0FzcGVjdFJhdGlvCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgICAgICAmJiAhbV9ydW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24gJiYgIW8ubV9ydW5u
aW5nQWNjZWxlcmF0ZWRBbmltYXRpb24KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXgg
ZDJhYTJlODk4ODJhM2JjZDg0OGIzMDg0MTcyODg0ODY4ZDEyNmE4NS4uNWZiZjkyZDUwMDczZDdm
OWM5NThlMTQ0NjNmZTU5ZWRkZDViNDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC04OSw2
ICs4OSw5IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IG9wYWNpdHk7IC8vIFdoZXRoZXIgb3Igbm90
IHdlJ3JlIHRyYW5zcGFyZW50LgogCisgICAgZmxvYXQgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9y
OworICAgIGZsb2F0IG1fYXNwZWN0UmF0aW9OdW1lcmF0b3I7CisKICAgICBzaG9ydCBtX2NvdW50
ZXJJbmNyZW1lbnQ7CiAgICAgc2hvcnQgbV9jb3VudGVyUmVzZXQ7CiAKQEAgLTE1Niw2ICsxNTks
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbV9ib3JkZXJGaXQgOiAxOyAvLyBFQm9yZGVyRml0
CiAgICAgdW5zaWduZWQgbV90ZXh0Q29tYmluZSA6IDE7IC8vIENTUzMgdGV4dC1jb21iaW5lIHBy
b3BlcnRpZXMKIAorICAgIGJvb2wgbV9oYXNBc3BlY3RSYXRpbyA6IDE7IC8vIFdoZXRoZXIgb3Ig
bm90IGFuIGFzcGVjdCByYXRpbyBoYXMgYmVlbiBzcGVjaWZpZWQuCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgbV9ydW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24g
OiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmZjNTYzMGU3MDIzNzEzNjA1MjZjMjlkOTlhNzZkODc0N2Vm
OGJkOS4uMWM0ODAwNGZjNmNmMmMxZjYwZjc4MTU1NTFiZDk1YjhlZDY3YTIyOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDExLTExLTE3ICBGYWR5IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJhdGlvIHRvIFJlbmRlclN0eWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjM1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGVzdCB0byBm
b3JjZSBzdHlsZSByZWNhbGMgYWZ0ZXIgZXZlcnkgY2hhbmdlLgorCisgICAgICAgICogZmFzdC9j
c3MvYXNwZWN0LXJhdGlvLXBhcnNpbmctdGVzdHMuaHRtbDoKKwogMjAxMS0xMS0xNiAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBDUkFTSCBleHBl
Y3RhdGlvbiBmb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2FzcGVjdC1yYXRp
by1wYXJzaW5nLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hc3BlY3QtcmF0aW8t
cGFyc2luZy10ZXN0cy5odG1sCmluZGV4IDk0ZWNkODQwNmYzMTZhYTE5OTA5NDA0MGI3Mjc5N2Iz
MzA1ZWY2N2EuLjU4MzgwOGM5YmFlMzFkMmVlMDc3MzI5NGJmMzMwN2VmMjUzMjM3MjMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2FzcGVjdC1yYXRpby1wYXJzaW5nLXRlc3RzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXNwZWN0LXJhdGlvLXBhcnNpbmctdGVzdHMu
aHRtbApAQCAtMTAsMTAgKzEwLDEzIEBACiAgICAgPGRpdiBpZD0iYXNwZWN0UmF0aW9UZXN0Ij48
L2Rpdj4KICAgICA8c2NyaXB0PgogICAgICAgZGVzY3JpcHRpb24oJ0NTUyBBc3BlY3QgUmF0aW8g
UGFyc2luZyBUZXN0Jyk7CisKICAgICAgIGZ1bmN0aW9uIHRlc3RQYXJzaW5nKGVsZW1lbnRJZCwg
dmFsdWUsIHN0eWxlQXR0cmlidXRlKQogICAgICAgewogICAgICAgICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgIGRpdi5zdHlsZVtzdHls
ZUF0dHJpYnV0ZV0gPSB2YWx1ZTsKKyAgICAgICAgICAvLyBGb3JjZSBhIHJlbGF5b3V0IHRvIHRl
c3QKKyAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgICAgICByZXR1
cm4gZGl2LnN0eWxlW3N0eWxlQXR0cmlidXRlXTsKICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115621</attachid>
            <date>2011-11-17 10:50:31 -0800</date>
            <delta_ts>2011-11-17 11:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72350-20111117135029.patch</filename>
            <type>text/plain</type>
            <size>17945</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNjk3NzM2N2ExNThj
MDYwNTI0MWM2ZWE0NmY0YjE2MTMxNDQ4My4uMmRlNmJlZjE5ZGRiMGE2MjU4YjEwZDhhMTQzZmE0
NzM3MTE5MDViNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE3ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJh
dGlvIHRvIFJlbmRlclN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBhc3MgdGhlIGFzcGVjdCByYXRpbyB0byBSZW5kZXJTdHlsZSwgYW5kIGZvcmNl
IHJlbGF5b3V0IGlmIHRoZSByYXRpbyBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIGNzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlBc3BlY3RSYXRpbzo6YXBwbHlJbmhlcml0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5VmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjpjcmVhdGVIYW5kbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5KToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjppc0FzcGVjdFJhdGlvVmFsdWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6ZGlmZik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aGFzQXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmFzcGVjdFJhdGlvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb0Rlbm9taW5hdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb051bWVyYXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0SGFzQXNwZWN0UmF0aW8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvTnVtZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsSGFzQXNwZWN0
UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxBc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0
aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMS0xMS0x
NyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBwbHVnaW5zL2dldC11cmwtbm90aWZ5LXdpdGgtdXJsLXRoYXQtZmFpbHMtdG8tbG9hZC5o
dG1sIG9uIGJvdHMgYWZ0ZXIgcjEwMDQ2NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBmMDM4M2JkYjYyZThmYmFiODcyODRi
MjI5ZTQ5MGRmYzUwYWE4NzY2Li5hZjk0Njg4ZTMwNjc1NzQwZjVjNDE2MGI3YjY3NmVmNDdlMmQ2
NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcApAQCAtMTg3Niw2ICsxODc2LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVy
CiAgICAgICAgICAgICByZXR1cm4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0
aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CiAgICAg
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmFw
cGVhcmFuY2UoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoK
KyAgICAgICAgICAgIGlmICghc3R5bGUtPmhhc0FzcGVjdFJhdGlvKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpOworICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZVZhbHVlKHN0eWxlLT5hc3BlY3RSYXRpbygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CiAg
ICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZh
bHVlKChzdHlsZS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5SGlk
ZGVuKSA/IENTU1ZhbHVlSGlkZGVuIDogQ1NTVmFsdWVWaXNpYmxlKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlOgpAQCAtMjA3MCw3ICsyMDc0LDYgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNT
U1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFVuaW1w
bGVtZW50ZWQgQ1NTIDMgcHJvcGVydGllcyAoaW5jbHVkaW5nIENTUzMgc2hvcnRoYW5kIHByb3Bl
cnRpZXMpICovCi0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRM
aW5lVGhyb3VnaENvbG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3Bl
cnR5LmNwcAppbmRleCA3ZGFmM2QwYTJiNmE5NDk1MTMyYzI4MzEyOTZlYmJlMzFjMDIzY2I4Li41
YTZhNzJmMzg0NzJlYzM3ZGMzYjdmMDI2OWJlZDc0N2MwNWQ2Y2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgogCisj
aW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGbGV4VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZU1hcHBpbmdzLmgiCkBAIC04MzEsNiArODMyLDQxIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRs
ZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsg
fQogfTsKIAorY2xhc3MgQXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikK
KyAgICB7CisgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmhhc0FzcGVjdFJh
dGlvKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5z
ZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5hc3BlY3RS
YXRpb0Rlbm9taW5hdG9yKCkpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0
UmF0aW9OdW1lcmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJh
dG9yKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCkt
PnNldEhhc0FzcGVjdFJhdGlvKFJlbmRlclN0eWxlOjppbml0aWFsSGFzQXNwZWN0UmF0aW8oKSk7
CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKKyAgICAgICAgc2Vs
ZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRlclN0eWxlOjppbml0
aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAg
IHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNBc3BlY3RSYXRpb1ZhbHVlKCkpIHsKKyAgICAgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhmYWxzZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ1NTQXNwZWN0UmF0aW9WYWx1ZSogYXNw
ZWN0UmF0aW9WYWx1ZSA9IHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWUqPih2YWx1ZSk7
CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyh0cnVlKTsKKyAg
ICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoYXNwZWN0
UmF0aW9WYWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxl
KCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKGFzcGVjdFJhdGlvVmFsdWUtPm51bWVyYXRvclZh
bHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxl
cigpCisgICAgeworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRW
YWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKwogY29u
c3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENT
U1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NTdHls
ZUFwcGx5UHJvcGVydHksIGNzc1N0eWxlQXBwbHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7CkBAIC04
NDIsNiArODc4LDggQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVy
dHkoKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQogICAg
ICAgICBtX3Byb3BlcnR5TWFwW2ldID0gUHJvcGVydHlIYW5kbGVyKCk7CiAKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywgQXBwbHlQcm9wZXJ0eUFz
cGVjdFJhdGlvOjpjcmVhdGVIYW5kbGVyKCkpOworCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5Q29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxJbmhlcml0RnJvbVBhcmVudCwgJlJl
bmRlclN0eWxlOjpjb2xvciwgJlJlbmRlclN0eWxlOjpzZXRDb2xvciwgJlJlbmRlclN0eWxlOjpz
ZXRWaXNpdGVkTGlua0NvbG9yLCAmUmVuZGVyU3R5bGU6OmludmFsaWRDb2xvciwgUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBBcHBseVByb3BlcnR5RGlyZWN0aW9uPCZSZW5kZXJT
dHlsZTo6ZGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldERpcmVjdGlvbiwgUmVuZGVyU3R5bGU6
OmluaXRpYWxEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMDJlZDIyZDFjZmVhNzllNmFiYTQwNTVmYTAyNjM3
YzMzY2IzNTFhZS4uMjk1ZjVjN2U3YzdhZDFhMjQ3NDA2NzRmZDAwYmIzNmE2Yzk5NmJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMjksOSArMjksMTAgQEAK
ICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
KyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCisjaW5j
bHVkZSAiQ291bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCi0jaW5jbHVkZSAi
Q3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCkBA
IC01Myw4ICs1NCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJDdXJz
b3JMaXN0LmgiCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlck9wZXJh
dGlvbi5oIgogI2VuZGlmCkBAIC0zODIyLDcgKzM4MjIsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVNb2RlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJs
aW5lU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKLSAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEZvbnRTaXplRGVsdGE6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0
aW9uc0luRWZmZWN0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgpAQCAt
MzkyNSw2ICszOTI0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3Jp
Z2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEFzcGVjdFJhdGlvOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tBdHRhY2htZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA2M2IxNmVhMThi
YmM0NTcwZTUyNGI5YzVlMDMxN2VlZjRiMTBjNTUzLi45MGI4YWVmMjkwMzIwNTg2YzRjN2JlMTEy
YzZjMDc0NjZlZjJmMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtNTksNiArNTksNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1ByaW1pdGl2ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1By
aW1pdGl2ZTsgfQogICAgIGJvb2wgaXNWYWx1ZUxpc3QoKSBjb25zdCB7IHJldHVybiBtX2lzTGlz
dDsgfQogCisgICAgYm9vbCBpc0FzcGVjdFJhdGlvVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Ns
YXNzVHlwZSA9PSBBc3BlY3RSYXRpb0NsYXNzOyB9CiAgICAgYm9vbCBpc0JvcmRlckltYWdlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBCb3JkZXJJbWFnZUNsYXNzOyB9CiAg
ICAgYm9vbCBpc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NU
eXBlID09IEJvcmRlckltYWdlU2xpY2VDbGFzczsgfQogICAgIGJvb2wgaXNDdXJzb3JJbWFnZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3Vyc29ySW1hZ2VDbGFzczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXgg
Yzc0MjllYjgyZmM1NTYwZWU0YWNmZGU5NzkwODg2YTI0YTQxZTgwOC4uMjRjYzVhYWQ0NDg4ZGVi
ZjZlOTJkNmE5ODBjZDNmNmYwODY0MGQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0zODIsNiArMzgyLDE2IEBAIFN0eWxlRGlmZmVy
ZW5jZSBSZW5kZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVk
JiBjaGFuZ2VkQ29uCiAgICAgICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92
ZXJmbG93ICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dE92ZXJmbG93KQogICAg
ICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKIAorICAgICAgICBpZiAocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW8gIT0gb3RoZXItPnJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2hhc0FzcGVjdFJhdGlvKQorICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlm
ZmVyZW5jZUxheW91dDsKKworICAgICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFz
QXNwZWN0UmF0aW8pIHsKKyAgICAgICAgICAgIGZsb2F0IGFzcGVjdFJhdGlvID0gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IgLyByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOworICAgICAgICAgICAgZmxvYXQgb3RoZXJBc3Bl
Y3RSYXRpbyA9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb051bWVy
YXRvciAvIG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5h
dG9yOworICAgICAgICAgICAgaWYgKGFzcGVjdFJhdGlvICE9IG90aGVyQXNwZWN0UmF0aW8pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0eWxlRGlmZmVyZW5jZUxheW91dDsKKyAgICAgICAgfQor
CiAgICAgICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9yZWdpb25PdmVyZmxvdyAhPSBv
dGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcmVnaW9uT3ZlcmZsb3cpCiAgICAgICAgICAg
ICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlTGF5b3V0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDA0N2Q4MmRkZTU5YzAxYWU0MTJhMTFmZjEz
Zjk0YmRlZmZhZjc4YjkuLmQ1Mzk3YzZmNGQ5N2U4NzQ3NWQxZWYwZWY5YTBmMDVlM2MyYjkzMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03
MDEsNiArNzAxLDExIEBAIHB1YmxpYzoKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb2xvclNwYWNlPihyYXJlSW5oZXJpdGVkRGF0YS0+Y29s
b3JTcGFjZSk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm9wYWNpdHk7IH0KICAgICBDb250cm9sUGFydCBhcHBlYXJhbmNlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udHJvbFBhcnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FwcGVhcmFuY2UpOyB9CisgICAgLy8gYXNwZWN0IHJhdGlvIGNvbnZlbmllbmNlIG1ldGhv
ZAorICAgIGJvb2wgaGFzQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9oYXNBc3BlY3RSYXRpbzsgfQorICAgIGZsb2F0IGFzcGVjdFJhdGlvKCkgY29u
c3QgeyByZXR1cm4gYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSAvIGFzcGVjdFJhdGlvRGVub21pbmF0
b3IoKTsgfQorICAgIGZsb2F0IGFzcGVjdFJhdGlvRGVub21pbmF0b3IoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9yOyB9CisgICAg
ZmxvYXQgYXNwZWN0UmF0aW9OdW1lcmF0b3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9hc3BlY3RSYXRpb051bWVyYXRvcjsgfQogICAgIEVCb3hBbGlnbm1lbnQgYm94
QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94QWxpZ25tZW50PihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPmFsaWduKTsgfQogICAgIEVC
b3hEaXJlY3Rpb24gYm94RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJv
eERpcmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uKTsgfQogICAgIGZsb2F0
IGJveEZsZXgoKSB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxl
eGlibGVCb3gtPmZsZXg7IH0KQEAgLTEwNTQsNiArMTA1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEVtcHR5Q2VsbHMoRUVtcHR5Q2VsbCB2KSB7IGluaGVyaXRlZF9mbGFncy5fZW1wdHlfY2Vs
bHMgPSB2OyB9CiAgICAgdm9pZCBzZXRDYXB0aW9uU2lkZShFQ2FwdGlvblNpZGUgdikgeyBpbmhl
cml0ZWRfZmxhZ3MuX2NhcHRpb25fc2lkZSA9IHY7IH0KIAorICAgIHZvaWQgc2V0SGFzQXNwZWN0
UmF0aW8oYm9vbCBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1faGFzQXNwZWN0
UmF0aW8sIGIpOyB9CisgICAgdm9pZCBzZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKGZsb2F0IHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb0Rlbm9taW5hdG9y
LCB2KTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9OdW1lcmF0b3IoZmxvYXQgdikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yLCB2KTsgfQog
ICAgIHZvaWQgc2V0Q291bnRlckluY3JlbWVudChzaG9ydCB2KSB7IFNFVF9WQVIocmFyZU5vbklu
aGVyaXRlZERhdGEsIG1fY291bnRlckluY3JlbWVudCwgdikgfQogICAgIHZvaWQgc2V0Q291bnRl
clJlc2V0KHNob3J0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9jb3VudGVy
UmVzZXQsIHYpIH0KIApAQCAtMTQ2Myw2ICsxNDcxLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBF
Qm9yZGVyRml0IGluaXRpYWxCb3JkZXJGaXQoKSB7IHJldHVybiBCb3JkZXJGaXRCb3JkZXI7IH0K
ICAgICBzdGF0aWMgRVJlc2l6ZSBpbml0aWFsUmVzaXplKCkgeyByZXR1cm4gUkVTSVpFX05PTkU7
IH0KICAgICBzdGF0aWMgQ29udHJvbFBhcnQgaW5pdGlhbEFwcGVhcmFuY2UoKSB7IHJldHVybiBO
b0NvbnRyb2xQYXJ0OyB9CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbEhhc0FzcGVjdFJhdGlvKCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbEFzcGVjdFJhdGlvRGVu
b21pbmF0b3IoKSB7IHJldHVybiAxOyB9CisgICAgc3RhdGljIGZsb2F0IGluaXRpYWxBc3BlY3RS
YXRpb051bWVyYXRvcigpIHsgcmV0dXJuIDE7IH0KICAgICBzdGF0aWMgT3JkZXIgaW5pdGlhbFJU
TE9yZGVyaW5nKCkgeyByZXR1cm4gTG9naWNhbE9yZGVyOyB9CiAgICAgc3RhdGljIGZsb2F0IGlu
aXRpYWxUZXh0U3Ryb2tlV2lkdGgoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIHVuc2lnbmVk
IHNob3J0IGluaXRpYWxDb2x1bW5Db3VudCgpIHsgcmV0dXJuIDE7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcAppbmRleCBmYzEzOWQxZTI3OGVjZjcxNjQzNTQxNjk2ODRjZmNlMmI0N2NkMjdjLi43
ODhhNDg4ZDhlNmRmNzlhNzU4ZGQ2ZDk3OTBjZTIzZGVjMTQyNDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEuY3BwCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgOiBv
cGFjaXR5KFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpKQorICAgICwgbV9hc3BlY3RSYXRp
b0Rlbm9taW5hdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigp
KQorICAgICwgbV9hc3BlY3RSYXRpb051bWVyYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVj
dFJhdGlvTnVtZXJhdG9yKCkpCiAgICAgLCBtX2NvdW50ZXJJbmNyZW1lbnQoMCkKICAgICAsIG1f
Y291bnRlclJlc2V0KDApCiAgICAgLCBtX3BlcnNwZWN0aXZlKFJlbmRlclN0eWxlOjppbml0aWFs
UGVyc3BlY3RpdmUoKSkKQEAgLTY2LDYgKzY4LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX3RleHRDb21iaW5lKFJlbmRl
clN0eWxlOjppbml0aWFsVGV4dENvbWJpbmUoKSkKICAgICAsIG1fd3JhcEZsb3coUmVuZGVyU3R5
bGU6OmluaXRpYWxXcmFwRmxvdygpKQogICAgICwgbV93cmFwVGhyb3VnaChSZW5kZXJTdHlsZTo6
aW5pdGlhbFdyYXBUaHJvdWdoKCkpCisgICAgLCBtX2hhc0FzcGVjdFJhdGlvKGZhbHNlKQogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIG1fcnVubmluZ0FjY2VsZXJhdGVk
QW5pbWF0aW9uKGZhbHNlKQogI2VuZGlmCkBAIC03Niw2ICs3OSw4IEBAIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhJiBvKQogICAgIDogUmVmQ291bnRlZDxTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhPigpCiAgICAgLCBvcGFjaXR5KG8ub3BhY2l0eSkKKyAgICAsIG1fYXNwZWN0UmF0aW9EZW5v
bWluYXRvcihvLm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcikKKyAgICAsIG1fYXNwZWN0UmF0aW9O
dW1lcmF0b3Ioby5tX2FzcGVjdFJhdGlvTnVtZXJhdG9yKQogICAgICwgbV9jb3VudGVySW5jcmVt
ZW50KG8ubV9jb3VudGVySW5jcmVtZW50KQogICAgICwgbV9jb3VudGVyUmVzZXQoby5tX2NvdW50
ZXJSZXNldCkKICAgICAsIG1fcGVyc3BlY3RpdmUoby5tX3BlcnNwZWN0aXZlKQpAQCAtMTI3LDYg
KzEzMiw3IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkCiAgICAgLCBtX3RleHRDb21iaW5lKG8u
bV90ZXh0Q29tYmluZSkKICAgICAsIG1fd3JhcEZsb3coby5tX3dyYXBGbG93KQogICAgICwgbV93
cmFwVGhyb3VnaChvLm1fd3JhcFRocm91Z2gpCisgICAgLCBtX2hhc0FzcGVjdFJhdGlvKG8ubV9o
YXNBc3BlY3RSYXRpbykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBt
X3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbihvLm1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0
aW9uKQogI2VuZGlmCkBAIC0xNjIsOCArMTY4LDExIEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBj
CiAgICAgICAgICYmIG1fYXBwZWFyYW5jZSA9PSBvLm1fYXBwZWFyYW5jZQogICAgICAgICAmJiBt
X2JvcmRlckZpdCA9PSBvLm1fYm9yZGVyRml0CiAgICAgICAgICYmIG1fdGV4dENvbWJpbmUgPT0g
by5tX3RleHRDb21iaW5lCisgICAgICAgICYmIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvciA9PSBv
Lm1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcgorICAgICAgICAmJiBtX2FzcGVjdFJhdGlvTnVtZXJh
dG9yID09IG8ubV9hc3BlY3RSYXRpb051bWVyYXRvcgogICAgICAgICAmJiBtX2NvdW50ZXJJbmNy
ZW1lbnQgPT0gby5tX2NvdW50ZXJJbmNyZW1lbnQKICAgICAgICAgJiYgbV9jb3VudGVyUmVzZXQg
PT0gby5tX2NvdW50ZXJSZXNldAorICAgICAgICAmJiBtX2hhc0FzcGVjdFJhdGlvID09IG8ubV9o
YXNBc3BlY3RSYXRpbwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAg
JiYgIW1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uICYmICFvLm1fcnVubmluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9uCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDAwMjNlNzRlN2Yy
Njc1ZmQyMzZjMGEzNTQ5ZmFjOWUzYTUwYzY0NWMuLmUyYzYyYmM3MzY1YjI0OWQ3NTVhYjAwNmUw
ZjY0MjgwZGZmMGFkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtODksNiArODksOSBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCBvcGFjaXR5OyAvLyBXaGV0aGVyIG9yIG5vdCB3ZSdyZSB0cmFu
c3BhcmVudC4KIAorICAgIGZsb2F0IG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcjsKKyAgICBmbG9h
dCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yOworCiAgICAgc2hvcnQgbV9jb3VudGVySW5jcmVtZW50
OwogICAgIHNob3J0IG1fY291bnRlclJlc2V0OwogCkBAIC0xNjEsNiArMTY0LDcgQEAgcHVibGlj
OgogICAgIHVuc2lnbmVkIG1fd3JhcEZsb3c6IDM7IC8vIFdyYXBGbG93CiAgICAgdW5zaWduZWQg
bV93cmFwVGhyb3VnaDogMTsgLy8gV3JhcFRocm91Z2gKIAorICAgIGJvb2wgbV9oYXNBc3BlY3RS
YXRpbyA6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGFuIGFzcGVjdCByYXRpbyBoYXMgYmVlbiBzcGVj
aWZpZWQuCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgbV9ydW5u
aW5nQWNjZWxlcmF0ZWRBbmltYXRpb24gOiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2ViMTY2ODJkYzE4
MTA5NGIyYzAxMTRhMzkxMzU3ZjJlOTYzMWU2NS4uNzM1ZGMzNzc2ZWQ4NGFiYmFiNTgxOGM0ZWM4
YjA0MTNkYzc1ODk1NSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTE3ICBGYWR5IFNh
bXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJhdGlv
IHRvIFJlbmRlclN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgdGVzdCB0byBmb3JjZSBzdHlsZSByZWNhbGMgYWZ0ZXIgZXZlcnkgY2hh
bmdlLgorCisgICAgICAgICogZmFzdC9jc3MvYXNwZWN0LXJhdGlvLXBhcnNpbmctdGVzdHMuaHRt
bDoKKwogMjAxMS0xMS0xNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5
LXJlbGF0ZWQgRFJUIEFQSXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2FzcGVj
dC1yYXRpby1wYXJzaW5nLXRlc3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9hc3BlY3Qt
cmF0aW8tcGFyc2luZy10ZXN0cy5odG1sCmluZGV4IDk0ZWNkODQwNmYzMTZhYTE5OTA5NDA0MGI3
Mjc5N2IzMzA1ZWY2N2EuLjU4MzgwOGM5YmFlMzFkMmVlMDc3MzI5NGJmMzMwN2VmMjUzMjM3MjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2FzcGVjdC1yYXRpby1wYXJzaW5nLXRl
c3RzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvYXNwZWN0LXJhdGlvLXBhcnNpbmct
dGVzdHMuaHRtbApAQCAtMTAsMTAgKzEwLDEzIEBACiAgICAgPGRpdiBpZD0iYXNwZWN0UmF0aW9U
ZXN0Ij48L2Rpdj4KICAgICA8c2NyaXB0PgogICAgICAgZGVzY3JpcHRpb24oJ0NTUyBBc3BlY3Qg
UmF0aW8gUGFyc2luZyBUZXN0Jyk7CisKICAgICAgIGZ1bmN0aW9uIHRlc3RQYXJzaW5nKGVsZW1l
bnRJZCwgdmFsdWUsIHN0eWxlQXR0cmlidXRlKQogICAgICAgewogICAgICAgICAgIHZhciBkaXYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpOwogICAgICAgICAgIGRpdi5zdHls
ZVtzdHlsZUF0dHJpYnV0ZV0gPSB2YWx1ZTsKKyAgICAgICAgICAvLyBGb3JjZSBhIHJlbGF5b3V0
IHRvIHRlc3QKKyAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKICAgICAgICAg
ICByZXR1cm4gZGl2LnN0eWxlW3N0eWxlQXR0cmlidXRlXTsKICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115646</attachid>
            <date>2011-11-17 11:58:58 -0800</date>
            <delta_ts>2011-11-17 12:09:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72350-20111117145857.patch</filename>
            <type>text/plain</type>
            <size>15044</size>
            <attacher name="Fady Samuel">fsamuel</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMxNjk3NzM2N2ExNThj
MDYwNTI0MWM2ZWE0NmY0YjE2MTMxNDQ4My4uYWM4MTIzOGFjZDUzNDM3OWM0MjA2MjY0YzgzZjFl
YjFjZmVlNDNiZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTE3ICBGYWR5
IFNhbXVlbCAgPGZzYW11ZWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFBhc3MgQXNwZWN0IFJh
dGlvIHRvIFJlbmRlclN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjphcHBseUluaGVyaXRWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmFwcGx5SW5pdGlhbFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6YXBwbHlW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5QXNwZWN0UmF0aW86OmNyZWF0
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NT
dHlsZUFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkpOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6OmlzQXNw
ZWN0UmF0aW9WYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6aGFzQXNwZWN0UmF0aW8pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb0Rlbm9taW5hdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjphc3BlY3RSYXRpb051bWVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6c2V0SGFzQXNwZWN0UmF0aW8pOgorICAgICAgICAo
V2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsSGFzQXNwZWN0UmF0aW8p
OgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmluaXRpYWxBc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjppbml0aWFsQXNw
ZWN0UmF0aW9OdW1lcmF0b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMS0xMS0xNyAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBw
bHVnaW5zL2dldC11cmwtbm90aWZ5LXdpdGgtdXJsLXRoYXQtZmFpbHMtdG8tbG9hZC5odG1sIG9u
IGJvdHMgYWZ0ZXIgcjEwMDQ2NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBmMDM4M2JkYjYyZThmYmFiODcyODRiMjI5ZTQ5
MGRmYzUwYWE4NzY2Li5hZjk0Njg4ZTMwNjc1NzQwZjVjNDE2MGI3YjY3NmVmNDdlMmQ2NDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMTg3Niw2ICsxODc2LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAg
ICAgICAgICByZXR1cm4gZ2V0VGltaW5nRnVuY3Rpb25WYWx1ZShzdHlsZS0+YW5pbWF0aW9ucygp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFwcGVhcmFuY2U6CiAgICAgICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPmFwcGVhcmFu
Y2UoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKKyAgICAg
ICAgICAgIGlmICghc3R5bGUtPmhhc0FzcGVjdFJhdGlvKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5v
bmUpOworICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVl
KHN0eWxlLT5hc3BlY3RSYXRpbygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CiAgICAgICAg
ICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKChz
dHlsZS0+YmFja2ZhY2VWaXNpYmlsaXR5KCkgPT0gQmFja2ZhY2VWaXNpYmlsaXR5SGlkZGVuKSA/
IENTU1ZhbHVlSGlkZGVuIDogQ1NTVmFsdWVWaXNpYmxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckltYWdlOgpAQCAtMjA3MCw3ICsyMDc0LDYgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KGludCBwcm9wZXIKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qIFVuaW1wbGVtZW50
ZWQgQ1NTIDMgcHJvcGVydGllcyAoaW5jbHVkaW5nIENTUzMgc2hvcnRoYW5kIHByb3BlcnRpZXMp
ICovCi0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbzoKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRMaW5lVGhyb3VnaDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhy
b3VnaENvbG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNw
cAppbmRleCA3ZGFmM2QwYTJiNmE5NDk1MTMyYzI4MzEyOTZlYmJlMzFjMDIzY2I4Li41YTZhNzJm
Mzg0NzJlYzM3ZGMzYjdmMDI2OWJlZDc0N2MwNWQ2Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1N0eWxlQXBwbHlQcm9wZXJ0eS5oIgogCisjaW5jbHVk
ZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NGbGV4VmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgiCkBAIC04MzEsNiArODMyLDQxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJv
cGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFw
cGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJbml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQogfTsK
IAorY2xhc3MgQXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvcikKKyAgICB7
CisgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmhhc0FzcGVjdFJhdGlvKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT5hc3BlY3RSYXRpb0Rl
bm9taW5hdG9yKCkpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9O
dW1lcmF0b3Ioc2VsZWN0b3ItPnBhcmVudFN0eWxlKCktPmFzcGVjdFJhdGlvTnVtZXJhdG9yKCkp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldEhh
c0FzcGVjdFJhdGlvKFJlbmRlclN0eWxlOjppbml0aWFsSGFzQXNwZWN0UmF0aW8oKSk7CisgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKFJlbmRlclN0
eWxlOjppbml0aWFsQXNwZWN0UmF0aW9EZW5vbWluYXRvcigpKTsKKyAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldEFzcGVjdFJhdGlvTnVtZXJhdG9yKFJlbmRlclN0eWxlOjppbml0aWFsQXNw
ZWN0UmF0aW9OdW1lcmF0b3IoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1
ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgaWYgKCF2YWx1ZS0+aXNBc3BlY3RSYXRpb1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIHNl
bGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyhmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ1NTQXNwZWN0UmF0aW9WYWx1ZSogYXNwZWN0UmF0
aW9WYWx1ZSA9IHN0YXRpY19jYXN0PENTU0FzcGVjdFJhdGlvVmFsdWUqPih2YWx1ZSk7CisgICAg
ICAgIHNlbGVjdG9yLT5zdHlsZSgpLT5zZXRIYXNBc3BlY3RSYXRpbyh0cnVlKTsKKyAgICAgICAg
c2VsZWN0b3ItPnN0eWxlKCktPnNldEFzcGVjdFJhdGlvRGVub21pbmF0b3IoYXNwZWN0UmF0aW9W
YWx1ZS0+ZGVub21pbmF0b3JWYWx1ZSgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNl
dEFzcGVjdFJhdGlvTnVtZXJhdG9yKGFzcGVjdFJhdGlvVmFsdWUtPm51bWVyYXRvclZhbHVlKCkp
OworICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpCisg
ICAgeworICAgICAgICByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwg
JmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKwogY29uc3QgQ1NT
U3R5bGVBcHBseVByb3BlcnR5JiBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxl
QXBwbHlQcm9wZXJ0eSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NTdHlsZUFwcGx5
UHJvcGVydHksIGNzc1N0eWxlQXBwbHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7CkBAIC04NDIsNiAr
ODc4LDggQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVydHkoKQog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQogICAgICAgICBt
X3Byb3BlcnR5TWFwW2ldID0gUHJvcGVydHlIYW5kbGVyKCk7CiAKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBc3BlY3RSYXRpbywgQXBwbHlQcm9wZXJ0eUFzcGVjdFJh
dGlvOjpjcmVhdGVIYW5kbGVyKCkpOworCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Q29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxJbmhlcml0RnJvbVBhcmVudCwgJlJlbmRlclN0
eWxlOjpjb2xvciwgJlJlbmRlclN0eWxlOjpzZXRDb2xvciwgJlJlbmRlclN0eWxlOjpzZXRWaXNp
dGVkTGlua0NvbG9yLCAmUmVuZGVyU3R5bGU6OmludmFsaWRDb2xvciwgUmVuZGVyU3R5bGU6Omlu
aXRpYWxDb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5RGlyZWN0aW9uLCBBcHBseVByb3BlcnR5RGlyZWN0aW9uPCZSZW5kZXJTdHlsZTo6
ZGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldERpcmVjdGlvbiwgUmVuZGVyU3R5bGU6OmluaXRp
YWxEaXJlY3Rpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKaW5kZXggMDJlZDIyZDFjZmVhNzllNmFiYTQwNTVmYTAyNjM3YzMzY2Iz
NTFhZS4uMjk1ZjVjN2U3YzdhZDFhMjQ3NDA2NzRmZDAwYmIzNmE2Yzk5NmJiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMjksOSArMjksMTAgQEAKICNpbmNs
dWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCisjaW5jbHVkZSAi
Q291bnRlci5oIgogI2luY2x1ZGUgIkNvdW50ZXJDb250ZW50LmgiCi0jaW5jbHVkZSAiQ3Vyc29y
TGlzdC5oIgogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1ND
dXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCkBAIC01Myw4
ICs1NCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1RpbWlu
Z0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkNvdW50ZXIuaCIKKyNpbmNsdWRlICJDdXJzb3JMaXN0
LmgiCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbi5o
IgogI2VuZGlmCkBAIC0zODIyLDcgKzM4MjIsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVNb2RlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lU3R5
bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVXaWR0aDoKLSAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW86CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZv
bnRTaXplRGVsdGE6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgpAQCAtMzkyNSw2
ICszOTI0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwg
Q1NTVmFsdWUgKnZhbHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kT3JpZ2luOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFzcGVj
dFJhdGlvOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZToKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tBdHRhY2htZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA2M2IxNmVhMThiYmM0NTcw
ZTUyNGI5YzVlMDMxN2VlZjRiMTBjNTUzLi45MGI4YWVmMjkwMzIwNTg2YzRjN2JlMTEyYzZjMDc0
NjZlZjJmMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc1ByaW1pdGl2ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByaW1pdGl2
ZTsgfQogICAgIGJvb2wgaXNWYWx1ZUxpc3QoKSBjb25zdCB7IHJldHVybiBtX2lzTGlzdDsgfQog
CisgICAgYm9vbCBpc0FzcGVjdFJhdGlvVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlw
ZSA9PSBBc3BlY3RSYXRpb0NsYXNzOyB9CiAgICAgYm9vbCBpc0JvcmRlckltYWdlVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBCb3JkZXJJbWFnZUNsYXNzOyB9CiAgICAgYm9v
bCBpc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09
IEJvcmRlckltYWdlU2xpY2VDbGFzczsgfQogICAgIGJvb2wgaXNDdXJzb3JJbWFnZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gQ3Vyc29ySW1hZ2VDbGFzczsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwNDdkODJkZGU1
OWMwMWFlNDEyYTExZmYxM2Y5NGJkZWZmYWY3OGI5Li5kNTM5N2M2ZjRkOTdlODc0NzVkMWVmMGVm
OWEwZjA1ZTNjMmI5MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaApAQCAtNzAxLDYgKzcwMSwxMSBAQCBwdWJsaWM6CiAgICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sb3JTcGFjZT4ocmFyZUlu
aGVyaXRlZERhdGEtPmNvbG9yU3BhY2UpOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5vcGFjaXR5OyB9CiAgICAgQ29udHJvbFBhcnQg
YXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRyb2xQYXJ0PihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlKTsgfQorICAgIC8vIGFzcGVjdCByYXRpbyBj
b252ZW5pZW5jZSBtZXRob2QKKyAgICBib29sIGhhc0FzcGVjdFJhdGlvKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1faGFzQXNwZWN0UmF0aW87IH0KKyAgICBmbG9hdCBh
c3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIGFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgLyBhc3Bl
Y3RSYXRpb0Rlbm9taW5hdG9yKCk7IH0KKyAgICBmbG9hdCBhc3BlY3RSYXRpb0Rlbm9taW5hdG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9EZW5v
bWluYXRvcjsgfQorICAgIGZsb2F0IGFzcGVjdFJhdGlvTnVtZXJhdG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYXNwZWN0UmF0aW9OdW1lcmF0b3I7IH0KICAgICBF
Qm94QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveEFs
aWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5h
bGlnbik7IH0KICAgICBFQm94RGlyZWN0aW9uIGJveERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3hEaXJlY3Rpb24+KGluaGVyaXRlZF9mbGFncy5fYm94X2RpcmVjdGlv
bik7IH0KICAgICBmbG9hdCBib3hGbGV4KCkgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5mbGV4OyB9CkBAIC0xMDU0LDYgKzEwNTksOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRFbXB0eUNlbGxzKEVFbXB0eUNlbGwgdikgeyBpbmhlcml0ZWRf
ZmxhZ3MuX2VtcHR5X2NlbGxzID0gdjsgfQogICAgIHZvaWQgc2V0Q2FwdGlvblNpZGUoRUNhcHRp
b25TaWRlIHYpIHsgaW5oZXJpdGVkX2ZsYWdzLl9jYXB0aW9uX3NpZGUgPSB2OyB9CiAKKyAgICB2
b2lkIHNldEhhc0FzcGVjdFJhdGlvKGJvb2wgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX2hhc0FzcGVjdFJhdGlvLCBiKTsgfQorICAgIHZvaWQgc2V0QXNwZWN0UmF0aW9EZW5v
bWluYXRvcihmbG9hdCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYXNwZWN0
UmF0aW9EZW5vbWluYXRvciwgdik7IH0KKyAgICB2b2lkIHNldEFzcGVjdFJhdGlvTnVtZXJhdG9y
KGZsb2F0IHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hc3BlY3RSYXRpb051
bWVyYXRvciwgdik7IH0KICAgICB2b2lkIHNldENvdW50ZXJJbmNyZW1lbnQoc2hvcnQgdikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2NvdW50ZXJJbmNyZW1lbnQsIHYpIH0KICAg
ICB2b2lkIHNldENvdW50ZXJSZXNldChzaG9ydCB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fY291bnRlclJlc2V0LCB2KSB9CiAKQEAgLTE0NjMsNiArMTQ3MSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgRUJvcmRlckZpdCBpbml0aWFsQm9yZGVyRml0KCkgeyByZXR1cm4gQm9y
ZGVyRml0Qm9yZGVyOyB9CiAgICAgc3RhdGljIEVSZXNpemUgaW5pdGlhbFJlc2l6ZSgpIHsgcmV0
dXJuIFJFU0laRV9OT05FOyB9CiAgICAgc3RhdGljIENvbnRyb2xQYXJ0IGluaXRpYWxBcHBlYXJh
bmNlKCkgeyByZXR1cm4gTm9Db250cm9sUGFydDsgfQorICAgIHN0YXRpYyBib29sIGluaXRpYWxI
YXNBc3BlY3RSYXRpbygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGZsb2F0IGluaXRp
YWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKCkgeyByZXR1cm4gMTsgfQorICAgIHN0YXRpYyBmbG9h
dCBpbml0aWFsQXNwZWN0UmF0aW9OdW1lcmF0b3IoKSB7IHJldHVybiAxOyB9CiAgICAgc3RhdGlj
IE9yZGVyIGluaXRpYWxSVExPcmRlcmluZygpIHsgcmV0dXJuIExvZ2ljYWxPcmRlcjsgfQogICAg
IHN0YXRpYyBmbG9hdCBpbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkgeyByZXR1cm4gMDsgfQogICAg
IHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbml0aWFsQ29sdW1uQ291bnQoKSB7IHJldHVybiAxOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggZmMxMzlkMWUyNzhlY2Y3MTY0MzU0MTY5Njg0
Y2ZjZTJiNDdjZDI3Yy4uNzg4YTQ4OGQ4ZTZkZjc5YTc1OGRkNmQ5NzkwY2UyM2RlYzE0MjQ3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEoKQogICAgIDogb3BhY2l0eShSZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHkoKSkKKyAg
ICAsIG1fYXNwZWN0UmF0aW9EZW5vbWluYXRvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEFzcGVjdFJh
dGlvRGVub21pbmF0b3IoKSkKKyAgICAsIG1fYXNwZWN0UmF0aW9OdW1lcmF0b3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxBc3BlY3RSYXRpb051bWVyYXRvcigpKQogICAgICwgbV9jb3VudGVySW5jcmVt
ZW50KDApCiAgICAgLCBtX2NvdW50ZXJSZXNldCgwKQogICAgICwgbV9wZXJzcGVjdGl2ZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlKCkpCkBAIC02Niw2ICs2OCw3IEBAIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV90
ZXh0Q29tYmluZShSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHRDb21iaW5lKCkpCiAgICAgLCBtX3dy
YXBGbG93KFJlbmRlclN0eWxlOjppbml0aWFsV3JhcEZsb3coKSkKICAgICAsIG1fd3JhcFRocm91
Z2goUmVuZGVyU3R5bGU6OmluaXRpYWxXcmFwVGhyb3VnaCgpKQorICAgICwgbV9oYXNBc3BlY3RS
YXRpbyhmYWxzZSkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLCBtX3J1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbihmYWxzZSkKICNlbmRpZgpAQCAtNzYsNiArNzksOCBA
QCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkK
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29u
c3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YT4oKQogICAgICwgb3BhY2l0eShvLm9wYWNpdHkpCisgICAgLCBt
X2FzcGVjdFJhdGlvRGVub21pbmF0b3Ioby5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3IpCisgICAg
LCBtX2FzcGVjdFJhdGlvTnVtZXJhdG9yKG8ubV9hc3BlY3RSYXRpb051bWVyYXRvcikKICAgICAs
IG1fY291bnRlckluY3JlbWVudChvLm1fY291bnRlckluY3JlbWVudCkKICAgICAsIG1fY291bnRl
clJlc2V0KG8ubV9jb3VudGVyUmVzZXQpCiAgICAgLCBtX3BlcnNwZWN0aXZlKG8ubV9wZXJzcGVj
dGl2ZSkKQEAgLTEyNyw2ICsxMzIsNyBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogICAgICwg
bV90ZXh0Q29tYmluZShvLm1fdGV4dENvbWJpbmUpCiAgICAgLCBtX3dyYXBGbG93KG8ubV93cmFw
RmxvdykKICAgICAsIG1fd3JhcFRocm91Z2goby5tX3dyYXBUaHJvdWdoKQorICAgICwgbV9oYXNB
c3BlY3RSYXRpbyhvLm1faGFzQXNwZWN0UmF0aW8pCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgICwgbV9ydW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24oby5tX3J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbikKICNlbmRpZgpAQCAtMTYyLDggKzE2OCwxMSBAQCBib29sIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX2FwcGVhcmFuY2UgPT0gby5tX2FwcGVhcmFu
Y2UKICAgICAgICAgJiYgbV9ib3JkZXJGaXQgPT0gby5tX2JvcmRlckZpdAogICAgICAgICAmJiBt
X3RleHRDb21iaW5lID09IG8ubV90ZXh0Q29tYmluZQorICAgICAgICAmJiBtX2FzcGVjdFJhdGlv
RGVub21pbmF0b3IgPT0gby5tX2FzcGVjdFJhdGlvRGVub21pbmF0b3IKKyAgICAgICAgJiYgbV9h
c3BlY3RSYXRpb051bWVyYXRvciA9PSBvLm1fYXNwZWN0UmF0aW9OdW1lcmF0b3IKICAgICAgICAg
JiYgbV9jb3VudGVySW5jcmVtZW50ID09IG8ubV9jb3VudGVySW5jcmVtZW50CiAgICAgICAgICYm
IG1fY291bnRlclJlc2V0ID09IG8ubV9jb3VudGVyUmVzZXQKKyAgICAgICAgJiYgbV9oYXNBc3Bl
Y3RSYXRpbyA9PSBvLm1faGFzQXNwZWN0UmF0aW8KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAgICAgICAgICYmICFtX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbiAmJiAhby5t
X3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApp
bmRleCAwMDIzZTc0ZTdmMjY3NWZkMjM2YzBhMzU0OWZhYzllM2E1MGM2NDVjLi5lMmM2MmJjNzM2
NWIyNDlkNzU1YWIwMDZlMGY2NDI4MGRmZjBhZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAg
LTg5LDYgKzg5LDkgQEAgcHVibGljOgogCiAgICAgZmxvYXQgb3BhY2l0eTsgLy8gV2hldGhlciBv
ciBub3Qgd2UncmUgdHJhbnNwYXJlbnQuCiAKKyAgICBmbG9hdCBtX2FzcGVjdFJhdGlvRGVub21p
bmF0b3I7CisgICAgZmxvYXQgbV9hc3BlY3RSYXRpb051bWVyYXRvcjsKKwogICAgIHNob3J0IG1f
Y291bnRlckluY3JlbWVudDsKICAgICBzaG9ydCBtX2NvdW50ZXJSZXNldDsKIApAQCAtMTYxLDYg
KzE2NCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX3dyYXBGbG93OiAzOyAvLyBXcmFwRmxv
dwogICAgIHVuc2lnbmVkIG1fd3JhcFRocm91Z2g6IDE7IC8vIFdyYXBUaHJvdWdoCiAKKyAgICBi
b29sIG1faGFzQXNwZWN0UmF0aW8gOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCBhbiBhc3BlY3QgcmF0
aW8gaGFzIGJlZW4gc3BlY2lmaWVkLgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICBib29sIG1fcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uIDogMTsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>