<?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>74370</bug_id>
          
          <creation_ts>2011-12-12 16:30:40 -0800</creation_ts>
          <short_desc>Hardware-backed renderLayer could avoid repainting during a positioned movement layout</short_desc>
          <delta_ts>2013-05-18 12:43:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>50417</blocked>
    
    <blocked>74634</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519660</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-12 16:30:40 -0800</bug_when>
    <thetext>The current logic always repaints the old and the new position of the positioned object as part of RenderLayer::updateLayerPositions. However if we have a backing, we could be able to just recomposite and avoid the repaint invalidation.

This was seen as part of http://jsbin.com/ulofav where several repaints can be seen on the animated div to be related to the RenderLayer logic after layouting the div.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519748</commentid>
    <comment_count>1</comment_count>
      <attachid>118929</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-12 18:07:58 -0800</bug_when>
    <thetext>Created attachment 118929
Proposed optimization: Pass the did-a-positioned-movement-layout to RenderLayer and avoid repainting in this case if we have a backing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519749</commentid>
    <comment_count>2</comment_count>
      <attachid>118929</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-12 18:12:36 -0800</bug_when>
    <thetext>Comment on attachment 118929
Proposed optimization: Pass the did-a-positioned-movement-layout to RenderLayer and avoid repainting in this case if we have a backing.

Does this do the right thing for a positioned-movement-only of a non-composited abs pos inside a compositing layer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519757</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-12 18:25:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 118929 [details])
&gt; Does this do the right thing for a positioned-movement-only of a non-composited abs pos inside a compositing layer?

I would say so: it would do an invalidation as isComposited() will return false. Do you want the test coverage to be broadened and include that case or do you think this is already covered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520941</commentid>
    <comment_count>4</comment_count>
      <attachid>119222</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-14 08:33:32 -0800</bug_when>
    <thetext>Created attachment 119222
Added more testing following Simon&apos;s cue, a passing test is worth 1000 words.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520958</commentid>
    <comment_count>5</comment_count>
      <attachid>119222</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-14 08:48:41 -0800</bug_when>
    <thetext>Comment on attachment 119222
Added more testing following Simon&apos;s cue, a passing test is worth 1000 words.

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

&gt; Source/WebCore/rendering/RenderLayer.h:79
&gt; +    RepaintAfterLayout = 0,
&gt; +    NeedsFullRepaint = 1,
&gt; +    NeedsFullRepaintForPositionedMovementLayout = 1 &lt;&lt; 1,

These values are slightly confusing. Maybe it&apos;s not used, but &quot;no repaint needed&quot; would be a sensible 0 value, with the other values all non-zero.

I also find 1 &lt;&lt; 0, 1, &lt;&lt; 1 a bit more consistent.

&gt; Source/WebCore/rendering/RenderLayer.h:751
&gt; +    RepaintStatus m_repaintStatus : 2;

I think we normally stuff enums into unsigned bitfield fields, for Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521749</commentid>
    <comment_count>6</comment_count>
      <attachid>119222</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-15 01:47:35 -0800</bug_when>
    <thetext>Comment on attachment 119222
Added more testing following Simon&apos;s cue, a passing test is worth 1000 words.

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:79
&gt;&gt; +    NeedsFullRepaintForPositionedMovementLayout = 1 &lt;&lt; 1,
&gt; 
&gt; These values are slightly confusing. Maybe it&apos;s not used, but &quot;no repaint needed&quot; would be a sensible 0 value, with the other values all non-zero.
&gt; 
&gt; I also find 1 &lt;&lt; 0, 1, &lt;&lt; 1 a bit more consistent.

The NoRepaintNeeded is indeed never uses as we rely always on the RenderLayers for properly repainting after layout. That&apos;s why the default value is RepaintAfterLayout.

I am fine with adding this value in case we want to support it at some point (I will put a comment that it is unused though).

&gt;&gt; Source/WebCore/rendering/RenderLayer.h:751
&gt;&gt; +    RepaintStatus m_repaintStatus : 2;
&gt; 
&gt; I think we normally stuff enums into unsigned bitfield fields, for Windows?

You&apos;re right, I will switch to unsigned to avoid the issue with padding on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521762</commentid>
    <comment_count>7</comment_count>
      <attachid>119222</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-15 02:18:45 -0800</bug_when>
    <thetext>Comment on attachment 119222
Added more testing following Simon&apos;s cue, a passing test is worth 1000 words.

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderLayer.h:79
&gt;&gt;&gt; +    NeedsFullRepaintForPositionedMovementLayout = 1 &lt;&lt; 1,
&gt;&gt; 
&gt;&gt; These values are slightly confusing. Maybe it&apos;s not used, but &quot;no repaint needed&quot; would be a sensible 0 value, with the other values all non-zero.
&gt;&gt; 
&gt;&gt; I also find 1 &lt;&lt; 0, 1, &lt;&lt; 1 a bit more consistent.
&gt; 
&gt; The NoRepaintNeeded is indeed never uses as we rely always on the RenderLayers for properly repainting after layout. That&apos;s why the default value is RepaintAfterLayout.
&gt; 
&gt; I am fine with adding this value in case we want to support it at some point (I will put a comment that it is unused though).

I have to amend this: adding NoRepaintNeeded adds one extra (unneeded) bit to m_repaintStatus. Although I don&apos;t think this will grow RenderLayer by another byte, it is still using a bit that could be used for better optimizations. I would rather not add NoRepaintNeeded in this case and will post a patch in this direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521794</commentid>
    <comment_count>8</comment_count>
      <attachid>119407</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-15 03:32:42 -0800</bug_when>
    <thetext>Created attachment 119407
Updated change: RepaintAfterLayout -&gt; NeedsNormalRepaint (should make the enum values less confusing) + addressed Simon&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521908</commentid>
    <comment_count>9</comment_count>
      <attachid>119407</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-12-15 08:26:22 -0800</bug_when>
    <thetext>Comment on attachment 119407
Updated change: RepaintAfterLayout -&gt; NeedsNormalRepaint (should make the enum values less confusing) + addressed Simon&apos;s comments.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:891
&gt; +    if (m_repaintStatus == NeedsNormalRepaint)

I&apos;m surprised you don&apos;t need casts here from unsigned to the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521939</commentid>
    <comment_count>10</comment_count>
      <attachid>119407</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-12-15 08:59:24 -0800</bug_when>
    <thetext>Comment on attachment 119407
Updated change: RepaintAfterLayout -&gt; NeedsNormalRepaint (should make the enum values less confusing) + addressed Simon&apos;s comments.

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:891
&gt;&gt; +    if (m_repaintStatus == NeedsNormalRepaint)
&gt; 
&gt; I&apos;m surprised you don&apos;t need casts here from unsigned to the enum.

Interestingly, it seems to be compiling on all platforms (I tested the patch on mac before submitting).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521986</commentid>
    <comment_count>11</comment_count>
      <attachid>119407</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 09:56:04 -0800</bug_when>
    <thetext>Comment on attachment 119407
Updated change: RepaintAfterLayout -&gt; NeedsNormalRepaint (should make the enum values less confusing) + addressed Simon&apos;s comments.

Clearing flags on attachment: 119407

Committed r102952: &lt;http://trac.webkit.org/changeset/102952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521987</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 09:56:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890936</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-05-18 12:43:25 -0700</bug_when>
    <thetext>I think this caused bug 116319.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118929</attachid>
            <date>2011-12-12 18:07:58 -0800</date>
            <delta_ts>2011-12-14 08:33:29 -0800</delta_ts>
            <desc>Proposed optimization: Pass the did-a-positioned-movement-layout to RenderLayer and avoid repainting in this case if we have a backing.</desc>
            <filename>bug-74370-20111212180757.patch</filename>
            <type>text/plain</type>
            <size>16011</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlYTMwMTNjNzAxNWVh
MWM3MzI2ZWNmNmVhNjM2MzY2YjhlYjg3Mi4uMjYyOGUxOTMxNTg3NGNhNzBiMWFiODZhY2NjZGQ4
YmE4NmI2ZDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDExLTEyLTEyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEhhcmR3YXJl
LWJhY2tlZCByZW5kZXJMYXllciBjb3VsZCBhdm9pZCByZXBhaW50aW5nIGR1cmluZyBhIHBvc2l0
aW9uZWQgbW92ZW1lbnQgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzOiBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2Vk
LWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvZml4
ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwKKworICAgICAgICBU
byBiZSBhYmxlIHRvIHByb3Blcmx5IHNraXAgcmVwYWludGluZyBhZnRlciBhIHBvc2l0aW9uZWQg
bW92ZW1lbnQgbGF5b3V0IG9ubHksIHdlCisgICAgICAgIG5lZWRlZCB0byBhZGQgbW9yZSBzdGF0
ZSB0byB0aGUgY3VycmVudCB8c2V0TmVlZHNGdWxsUmVwYWludHwgbWV0aG9kLiBBcyBwYXJ0IG9m
IHRoYXQKKyAgICAgICAgd2UgcmVmYWN0b3JlZCB0aGUgY2FsbGVycyBhbmQgaW50ZXJuYWwgZmll
bGRzIHRvIGJldHRlciBtYXRjaCB0aGUgbmV3IG1lYW5pbmcuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgRXhwbGljaXRlbHkgZ2F2ZSB0
aGUgUmVwYWludFN0YXR1cyB0byBzZXRSZXBhaW50U3RhdHVzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5k
ZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNM
YXllcik6CisgICAgICAgIFVwZGF0ZWQgdGhvc2UgZnVuY3Rpb24gYWZ0ZXIgdGhlIHJlbmFtaW5n
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25z
KToKKyAgICAgICAgRGl0dG8uIEFsc28gYWRkZWQgYSBzaG9sZFJlcGFpbnRBZnRlckxheW91dCBj
aGVjay4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNob3VsZFJlcGFpbnRBZnRl
ckxheW91dCk6CisgICAgICAgIEhlYXJ0IG9mIHRoZSBvcHRpbWl6YXRpb24sIGlmIHdlIGp1c3Qg
ZGlkIGEgcG9zaXRpb25lZCBtb3ZlbWVudCBsYXlvdXQgb2YgY29tcG9zaXRlZCBSZW5kZXJMYXll
ciwKKyAgICAgICAgdGhlbiBkb24ndCByZXBhaW50LiBBbGwgdGhlIG90aGVyIGNhc2VzIHNob3Vs
ZCBzdGlsbCB0cmlnZ2VyIGEgcmVwYWludC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldFJlcGFpbnRTdGF0dXMp
OgorICAgICAgICBSZW5hbWVkIHNldE5lZWRzRnVsbFJlcGFpbnQgdG8gc2V0UmVwYWludFN0YXR1
cy4gQWxzbyBhZGRlZCBhIG5ldyBlbnVtIFJlcGFpbnRTdGF0dXMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KToKKyAgICAgICAgVXBkYXRlZCBhZnRlciB0aGUgcmVu
YW1pbmdzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNG
dWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk6CisgICAgICAgIE5ldyBtZXRo
b2QgdGhhdCBwYXNzIGEgbmV3IHZhbHVlIHRvIHRoZSBSZW5kZXJMYXllci4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0TmVlZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOgorICAgICAgICBTd2l0Y2hlZCB0
aGUgY2FsbCB0byB0aGUgZGVkaWNhdGVkIG1ldGhvZC4KKwogMjAxMS0xMi0wOCAgWW9uZ2p1biBa
aGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBiaXRmaWVsZCBm
b3IgYm9vbCBkYXRhIG1lbWJlcnMgaW4gQml0bWFwSW1hZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5MjEzZGIzYTZjMDll
Mzc2OWMyMDFhYTYzNWFkNWRhYTI0MmM4ZDA4Li5mOTk3OWEyMzk2ZDM4OTYwMDgwOWUwN2ZkYTBh
MDQ1OGY5N2RiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bAogICAgICAgICAgICAgc2V0SGFzTGF5ZXIodHJ1ZSk7CiAgICAgICAgICAgICBtX2xheWVy
LT5pbnNlcnRPbmx5VGhpc0xheWVyKCk7CiAgICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5l
ZWRzTGF5b3V0KCkgJiYgY29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2xh
eWVyLT5zZXROZWVkc0Z1bGxSZXBhaW50KCk7CisgICAgICAgICAgICAgICAgbV9sYXllci0+c2V0
UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKICAgICAgICAgICAgICAgICAvLyBUaGVy
ZSBpcyBvbmx5IG9uZSBsYXllciB0byB1cGRhdGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2Fj
aGVkT2Zmc2V0fCBzaW5jZQogICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUg
dmFsdWUgd2lsbCBiZSB1c2VkLgogICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVy
UG9zaXRpb25zKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggYzM5NGQwNGNkMGJjNjU2MjFmZmRlZWY5ZmY1MTNmZDBlYjcyNjE0Yi4uOGQ3NTQ5ODIyYjlj
YTUxZjI1Y2VkM2M5ZGVkYmQ1NmQwMWVkNWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxh
eWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fdXNlZFRyYW5zcGFy
ZW5jeShmYWxzZSkKICAgICAsIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKGZhbHNlKQogICAg
ICwgbV9pbk92ZXJmbG93UmVsYXlvdXQoZmFsc2UpCi0gICAgLCBtX25lZWRzRnVsbFJlcGFpbnQo
ZmFsc2UpCisgICAgLCBtX3JlcGFpbnRTdGF0dXMoUmVwYWludEFmdGVyTGF5b3V0KQogICAgICwg
bV9vdmVyZmxvd1N0YXR1c0RpcnR5KHRydWUpCiAgICAgLCBtX3Zpc2libGVDb250ZW50U3RhdHVz
RGlydHkodHJ1ZSkKICAgICAsIG1faGFzVmlzaWJsZUNvbnRlbnQoZmFsc2UpCkBAIC0zNjIsMTgg
KzM2MiwxOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQ
b2ludCogb2Zmc2V0RnJvbVJvb3QsIFVwZGF0ZUxheWVyUAogICAgICAgICAvLyBhcyB0aGUgdmFs
dWUgbm90IHVzaW5nIHRoZSBjYWNoZWQgb2Zmc2V0LCBidXQgd2UgY2FuJ3QgZHVlIHRvIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OAogICAgICAgICBpZiAoZmxh
Z3MgJiBDaGVja0ZvclJlcGFpbnQpIHsKICAgICAgICAgICAgIGlmICh2aWV3ICYmICF2aWV3LT5w
cmludGluZygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbmVlZHNGdWxsUmVwYWludCkgewor
ICAgICAgICAgICAgICAgIGlmIChtX3JlcGFpbnRTdGF0dXMgJiBOZWVkc0Z1bGxSZXBhaW50KSB7
CiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnRVc2luZ0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyLCBvbGRSZXBhaW50UmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChtX3JlcGFpbnRSZWN0ICE9IG9sZFJlcGFpbnRSZWN0KQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG1f
cmVwYWludFJlY3QpOwotICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkpCiAgICAgICAgICAgICAgICAgICAg
IHJlbmRlcmVyKCktPnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKHJlcGFpbnRDb250YWluZXIs
IG9sZFJlcGFpbnRSZWN0LCBvbGRPdXRsaW5lQm94LCAmbV9yZXBhaW50UmVjdCwgJm1fb3V0bGlu
ZUJveCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgY2xl
YXJSZXBhaW50UmVjdHMoKTsKIAotICAgIG1fbmVlZHNGdWxsUmVwYWludCA9IGZhbHNlOworICAg
IG1fcmVwYWludFN0YXR1cyA9IFJlcGFpbnRBZnRlckxheW91dDsKIAogICAgIC8vIEdvIGFoZWFk
IGFuZCB1cGRhdGUgdGhlIHJlZmxlY3Rpb24ncyBwb3NpdGlvbiBhbmQgc2l6ZS4KICAgICBpZiAo
bV9yZWZsZWN0aW9uKQpAQCAtODg0LDYgKzg4NCwyMSBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFJl
bmRlckxheWVyKiBjb21wb3NpdGluZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIp
CiAgICAgcmV0dXJuIGxheWVyLT5pc05vcm1hbEZsb3dPbmx5KCkgPyBsYXllci0+cGFyZW50KCkg
OiBsYXllci0+c3RhY2tpbmdDb250ZXh0KCk7CiB9CiAKK2lubGluZSBib29sIFJlbmRlckxheWVy
OjpzaG91bGRSZXBhaW50QWZ0ZXJMYXlvdXQoKSBjb25zdAoreworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBpZiAobV9yZXBhaW50U3RhdHVzID09IFJlcGFpbnRBZnRlckxh
eW91dCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBDb21wb3NpdGVkIGxheWVycyB0
aGF0IHdlcmUgbW92ZWQgZHVyaW5nIGEgcG9zaXRpb25lZCBtb3ZlbWVudCBvbmx5CisgICAgLy8g
bGF5b3V0LCBkb24ndCBuZWVkIHRvIGJlIHJlcGFpbnRlZC4gVGhleSBqdXN0IG5lZWQgdG8gYmUg
cmVjb21wb3NpdGVkLgorICAgIEFTU0VSVChtX3JlcGFpbnRTdGF0dXMgPT0gTmVlZHNGdWxsUmVw
YWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCk7CisgICAgcmV0dXJuICFpc0NvbXBvc2l0
ZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5n
Q29tcG9zaXRpbmdMYXllcihib29sIGluY2x1ZGVTZWxmKSBjb25zdAogewpAQCAtMTE2Niw3ICsx
MTgxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcigpCiAgICAgICAg
IFJlbmRlckxheWVyKiBuZXh0ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVt
b3ZlQ2hpbGQoY3VycmVudCk7CiAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY3VycmVudCwgbmV4
dFNpYik7Ci0gICAgICAgIGN1cnJlbnQtPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKKyAgICAgICAg
Y3VycmVudC0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKICAgICAgICAgTGF5
b3V0UG9pbnQgb2Zmc2V0RnJvbVJvb3QgPSBvZmZzZXRGcm9tUm9vdEJlZm9yZU1vdmU7CiAgICAg
ICAgIC8vIHVwZGF0ZUxheWVyUG9zaXRpb25zIGRlcGVuZHMgb24gaGFzTGF5ZXIoKSBhbHJlYWR5
IGJlaW5nIGZhbHNlIGZvciBwcm9wZXIgbGF5b3V0LgogICAgICAgICBBU1NFUlQoIXJlbmRlcmVy
KCktPmhhc0xheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCA5N2U0ZTQyZDBiN2VmMGExMTJiZTI2MjQ3YTE5N2UzN2EyNTg1YTNkLi5iZjRkMDJlNGNjOGQy
YWVhMmM4YmI5ODdiN2MzNTY3MTMyMzhiZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNzMsNiArNzMsMTIgQEAgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OwogCiBlbnVtIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSB7IEluY2x1ZGVTZWxmRm9yQm9yZGVy
UmFkaXVzLCBEb05vdEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzIH07CiAKK2VudW0gUmVwYWlu
dFN0YXR1cyB7CisgICAgUmVwYWludEFmdGVyTGF5b3V0ID0gMCwKKyAgICBOZWVkc0Z1bGxSZXBh
aW50ID0gMSwKKyAgICBOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0
ID0gMSA8PCAxLAorfTsKKwogY2xhc3MgQ2xpcFJlY3QgewogcHVibGljOgogICAgIENsaXBSZWN0
KCkKQEAgLTQ4Myw4ICs0ODksOCBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFVw
ZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxGbGFnczsKICAgICB2b2lkIHVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGwoVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWdz
ID0gTm9GbGFnKTsKLSAgICB2b2lkIHNldE5lZWRzRnVsbFJlcGFpbnQoYm9vbCBmID0gdHJ1ZSkg
eyBtX25lZWRzRnVsbFJlcGFpbnQgPSBmOyB9Ci0gICAgCisgICAgdm9pZCBzZXRSZXBhaW50U3Rh
dHVzKFJlcGFpbnRTdGF0dXMgZmxhZykgeyBtX3JlcGFpbnRTdGF0dXMgPSBmbGFnOyB9CisKICAg
ICBMYXlvdXRVbml0IHN0YXRpY0lubGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
aWNJbmxpbmVQb3NpdGlvbjsgfQogICAgIExheW91dFVuaXQgc3RhdGljQmxvY2tQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGljQmxvY2tQb3NpdGlvbjsgfQogICAgCkBAIC01NTMsNiAr
NTU5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQm9yZGVyUmFkaXVzQ2xpcHBp
bmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgIHZvaWQgcmVzdG9yZUNs
aXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNv
bnN0IENsaXBSZWN0Jik7CiAKKyAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpIGNv
bnN0OworCiAgICAgLy8gVGhlIG5vcm1hbCBvcGVyYXRvciBuZXcgaXMgZGlzYWxsb3dlZCBvbiBh
bGwgcmVuZGVyIG9iamVjdHMuCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgdGhyb3co
KTsKIApAQCAtNzQwLDcgKzc0OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGJsZW5kKS4KICAgICBib29sIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0
aW9uIDogMTsgIC8vIEEgc3RhdGUgYml0IHRyYWNraW5nIGlmIHdlIGFyZSBwYWludGluZyBpbnNp
ZGUgYSByZXBsaWNhLgogICAgIGJvb2wgbV9pbk92ZXJmbG93UmVsYXlvdXQgOiAxOwotICAgIGJv
b2wgbV9uZWVkc0Z1bGxSZXBhaW50IDogMTsKKyAgICBSZXBhaW50U3RhdHVzIG1fcmVwYWludFN0
YXR1cyA6IDI7CiAKICAgICBib29sIG1fb3ZlcmZsb3dTdGF0dXNEaXJ0eSA6IDE7CiAgICAgYm9v
bCBtX2hvcml6b250YWxPdmVyZmxvdyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCmluZGV4IGQwZjhhOGI1NjliMTlkZjVlZDJlY2NmNGFjNzBjZTM1ZGY2NzEz
ZDYuLjU2MmNlNzYwMGM3ZmYzMDA5OTg4ODY1NWIyNDJjZWViMjc0YmYzZGEgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MTAsNyArNzEwLDEzIEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjppbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KCkKIHsKICAg
ICBBU1NFUlQoaGFzTGF5ZXIoKSk7Ci0gICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+
bGF5ZXIoKS0+c2V0TmVlZHNGdWxsUmVwYWludCh0cnVlKTsKKyAgICB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KHRoaXMpLT5sYXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQp
OworfQorCit2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9z
aXRpb25lZE1vdmVtZW50TGF5b3V0KCkKK3sKKyAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7CisgICAg
dG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhO
ZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKIH0KIAogUmVuZGVy
QmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlNTFkMWQyOGE3NDc0NzI4ZjNhMTU0NzI3
OTIzMTUyYzgyOGU2N2E4Li5kMTY5ZjhlMDY4NzNlZmY0ZWQ2ZDg5YjNjOGUzMTllYTVhZTRkZmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0yNDYsNiArMjQ2
LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGFkZEFic29sdXRlUmVjdEZvckxh
eWVyKExheW91dFJlY3QmIHJlc3VsdCk7CiAgICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFp
bnQoKTsKKyAgICB2b2lkIHNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3Zl
bWVudExheW91dCgpOwogCiBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTAwNyw3ICsxMDA4
LDcgQEAgaW5saW5lIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVu
dExheW91dCgpCiAgICAgaWYgKCFhbHJlYWR5TmVlZGVkTGF5b3V0KSB7CiAgICAgICAgIG1hcmtD
b250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CiAgICAgICAgIGlmIChoYXNMYXllcigpKQotICAg
ICAgICAgICAgc2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KCk7CisgICAgICAgICAgICBzZXRMYXll
ck5lZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxYmFlNjI2ZTI1ODA0MDI5MmY5OWIyZDk0NGFiODI1YTkxODIyNzY0Li5mY2Y0
ZDhhOTUwMzNiOThjNWJlYjI0NGFjOTUwYmRmOTY5MDRkY2RiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMTItMTIgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgSGFyZHdhcmUtYmFja2VkIHJlbmRlckxheWVyIGNvdWxkIGF2b2lkIHJlcGFp
bnRpbmcgZHVyaW5nIGEgcG9zaXRpb25lZCBtb3ZlbWVudCBsYXlvdXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBkaWQgbm90IGZpbmQgYW55IHRlc3Qg
Y292ZXJpbmcgcG9zaXRpb25lZCBtb3ZlbWVudCBsYXlvdXQgd2l0aCBjb21wb3NpdGVkIGxheWVy
cworICAgICAgICBzbyBJIGFkZGVkIHNvbWUgdGVzdGluZy4KKworICAgICAgICAqIGNvbXBvc2l0
aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNo
YW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXll
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFu
Z2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1j
aGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMTItMDggIEph
Y29iIEdvbGRzdGVpbiAgPGphY29iZ0BhZG9iZS5jb20+CiAKICAgICAgICAgQ29udmVydCBzb21l
IGZhc3QvcmVnaW9ucyBwaXhlbCB0ZXN0cyB0byByZWZ0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBv
c2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODAxOGYwOGMxMzMzYmRkYWFiZjE2N2YwYTA4MTRmNmM3MWYzYjU2ZgpHSVQgYmluYXJ5IHBh
dGNoCmxpdGVyYWwgMjg2MQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlop
PWheaGxBJUBXcyRsSGBvazxtfT9vVG4wMWEKeldIVz1MbHdefntSMTVQWWxoaD0wcWVOMiFRfWJq
P1Y+MlU1THhUeTZwUFhjMTtNKHUkO3V1bWY9azFNeW9RRTkqCnpTUkNnVS1nQkNgZXNWXkgkfHxL
OT5CaX00Yl9AKDlgKSlIY0Z4KyFYVX1RTUxCRjVuMEdzK2taZ3dkMmgkNldBYwp6eVheemRiRzYm
bFpIfm9rd3E8MHZSPFZKQkEmSDViS3x5VmxHNHVpPEojQ3ZnMUgreSFfUiRDJk9+cz0qY3IrSmAK
ZjxedTleIThkbDFlQlJabzxoTUJpK3JKRSt1NnsxLW9EIU08IzlqWlAKCmxpdGVyYWwgMApIY21W
P2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBv
c2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQt
bGF5ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRi
MGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
YWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0
ZWQtbGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWE1ZWRkYThmNmY4NWIwZTQwMzNmNjkwZWRmZTc2
NDA0NDRkMjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJz
b2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwKQEAgLTAsMCAr
MSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAg
ICAgICAgaHRtbCB7IG92ZXJmbG93OiBoaWRkZW47IH0KKyAgICAgICAgZGl2IHsgaGVpZ2h0OiAx
MDBweDsgd2lkdGg6IDEwMHB4OyB9CisgICAgICAgIC5maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsg
fQorICAgICAgICAuYWJzb2x1dGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH0KKyAgICAgICAgLmdy
ZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgLnJlZCB7IGJhY2tncm91
bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAuY29tcG9zaXRlZCB7IC13ZWJraXQtdHJhbnNmb3Jt
OiB0cmFuc2xhdGVaKDApOyB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRydWUpOworICAgICAg
ICBmdW5jdGlvbiBtb3ZlQWJzb2x1dGVEaXYoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWJzb2x1dGVEaXYnKS5zdHlsZS50b3AgPSAnNzAwcHgnOwor
ICAgICAgICB9CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbW92ZUFi
c29sdXRlRGl2LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0i
aGVpZ2h0OjIwMDBweDsiPgorICAgIDwhLS0gWW91IHNob3VsZCBzZWUgMSBncmVlbiByZWN0YW5n
bGUgaW4gdGhlIG91dHB1dCBhbmQgbm8gcmVkLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJ0b3A6IDIw
MHB4OyBsZWZ0OiAxMDBweDsiIGNsYXNzPSJmaXhlZCByZWQiPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImFic29sdXRlRGl2IiBzdHlsZT0idG9wOiA1MDBweDsgbGVmdDoxMDBweDsiIGNsYXNzPSJhYnNv
bHV0ZSBncmVlbiBjb21wb3NpdGVkIj48L2Rpdj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgNTAwKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNo
YW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgwMThmMDhjMTMzM2JkZGFhYmYxNjdmMGEwODE0ZjZjNzFmM2I1
NmYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMDFhCnpXSFc9TGx3Xn57UjE1
UFlsaGg9MHFlTjIhUX1iaj9WPjJVNUx4VHk2cFBYYzE7TSh1JDt1dW1mPWsxTXlvUUU5Kgp6U1JD
Z1UtZ0JDYGVzVl5IJHx8Szk+Qml9NGJfQCg5YCkpSGNGeCshWFV9UU1MQkY1bjBHcytrWmd3ZDJo
JDZXQWMKenlYXnpkYkc2JmxaSH5va3dxPDB2UjxWSkJBJkg1Ykt8eVZsRzR1aTxKI0N2ZzFIK3kh
X1IkQyZPfnM9KmNyK0pgCmY8XnU5XiE4ZGwxZUJSWm88aE1CaStySkUrdTZ7MS1vRCFNPCM5alpQ
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5
MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3Np
dGVkLWxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlNjZjZmNhYmFiNTE3NmQ2MGQ4NDYyMjE4YWQz
MWU5MDFmMWFiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Zp
eGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAg
ICAgIGh0bWwgeyBvdmVyZmxvdzogaGlkZGVuOyB9CisgICAgICAgIGRpdiB7IGhlaWdodDogMTAw
cHg7IHdpZHRoOiAxMDBweDsgfQorICAgICAgICAuZml4ZWQgeyBwb3NpdGlvbjogZml4ZWQ7IH0K
KyAgICAgICAgLmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgLnJl
ZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAuY29tcG9zaXRlZCB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgICAgICBmdW5jdGlvbiBtb3ZlRml4ZWREaXYoKQorICAgICAgICB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZml4ZWREaXYnKS5zdHlsZS50b3AgPSAnMjAw
cHgnOworICAgICAgICB9CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
bW92ZUZpeGVkRGl2LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHls
ZT0iaGVpZ2h0OjIwMDBweDsiPgorICAgIDwhLS0gWW91IHNob3VsZCBzZWUgMSBncmVlbiByZWN0
YW5nbGUgaW4gdGhlIG91dHB1dCBhbmQgbm8gcmVkLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJ0b3A6
IDIwMHB4OyBsZWZ0OiAxMDBweDsiIGNsYXNzPSJmaXhlZCByZWQiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImZpeGVkRGl2IiBzdHlsZT0idG9wOiA1MDBweDsgbGVmdDoxMDBweDsiIGNsYXNzPSJmaXhl
ZCBncmVlbiBjb21wb3NpdGVkIj48L2Rpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119222</attachid>
            <date>2011-12-14 08:33:32 -0800</date>
            <delta_ts>2011-12-15 03:32:35 -0800</delta_ts>
            <desc>Added more testing following Simon&apos;s cue, a passing test is worth 1000 words.</desc>
            <filename>bug-74370-20111214083331.patch</filename>
            <type>text/plain</type>
            <size>21897</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyNDcxYzM4Y2U0Zjhh
YmI0NzdjZjRhODc3NjA1NGMyY2Y1YWQwOC4uMGRmNTQyNjFiYmI3NzQxMDBiNjUxYTgwZTk3NzRk
MGQxNmUzNDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDExLTEyLTE0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEhhcmR3YXJl
LWJhY2tlZCByZW5kZXJMYXllciBjb3VsZCBhdm9pZCByZXBhaW50aW5nIGR1cmluZyBhIHBvc2l0
aW9uZWQgbW92ZW1lbnQgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3RzOiBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2Vk
LWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvYWJz
b2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWwK
KyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29t
cG9zaXRlZC1sYXllci5odG1sCisgICAgICAgICAgICAgICBjb21wb3NpdGluZy9maXhlZC1wb3Np
dGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sCisKKyAgICAg
ICAgVG8gYmUgYWJsZSB0byBwcm9wZXJseSBza2lwIHJlcGFpbnRpbmcgYWZ0ZXIgYSBwb3NpdGlv
bmVkIG1vdmVtZW50IGxheW91dCBvbmx5LCB3ZQorICAgICAgICBuZWVkZWQgdG8gYWRkIG1vcmUg
c3RhdGUgdG8gdGhlIGN1cnJlbnQgfHNldE5lZWRzRnVsbFJlcGFpbnR8IG1ldGhvZC4gQXMgcGFy
dCBvZiB0aGF0CisgICAgICAgIHdlIHJlZmFjdG9yZWQgdGhlIGNhbGxlcnMgYW5kIGludGVybmFs
IGZpZWxkcyB0byBiZXR0ZXIgbWF0Y2ggdGhlIG5ldyBtZWFuaW5nLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIEV4cGxpY2l0ZWx5IGdh
dmUgdGhlIFJlcGFpbnRTdGF0dXMgdG8gc2V0UmVwYWludFN0YXR1cy4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlU
aGlzTGF5ZXIpOgorICAgICAgICBVcGRhdGVkIHRob3NlIGZ1bmN0aW9uIGFmdGVyIHRoZSByZW5h
bWluZ3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0
aW9ucyk6CisgICAgICAgIERpdHRvLiBBbHNvIGFkZGVkIGEgc2hvbGRSZXBhaW50QWZ0ZXJMYXlv
dXQgY2hlY2suCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRSZXBhaW50
QWZ0ZXJMYXlvdXQpOgorICAgICAgICBIZWFydCBvZiB0aGUgb3B0aW1pemF0aW9uLCBpZiB3ZSBq
dXN0IGRpZCBhIHBvc2l0aW9uZWQgbW92ZW1lbnQgbGF5b3V0IG9mIGNvbXBvc2l0ZWQgUmVuZGVy
TGF5ZXIsCisgICAgICAgIHRoZW4gZG9uJ3QgcmVwYWludC4gQWxsIHRoZSBvdGhlciBjYXNlcyBz
aG91bGQgc3RpbGwgdHJpZ2dlciBhIHJlcGFpbnQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRSZXBhaW50U3Rh
dHVzKToKKyAgICAgICAgUmVuYW1lZCBzZXROZWVkc0Z1bGxSZXBhaW50IHRvIHNldFJlcGFpbnRT
dGF0dXMuIEFsc28gYWRkZWQgYSBuZXcgZW51bSBSZXBhaW50U3RhdHVzLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludCk6CisgICAgICAgIFVwZGF0ZWQgYWZ0ZXIgdGhl
IHJlbmFtaW5ncy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRMYXllck5l
ZWRzRnVsbFJlcGFpbnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQpOgorICAgICAgICBOZXcg
bWV0aG9kIHRoYXQgcGFzcyBhIG5ldyB2YWx1ZSB0byB0aGUgUmVuZGVyTGF5ZXIuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToKKyAgICAgICAgU3dpdGNo
ZWQgdGhlIGNhbGwgdG8gdGhlIGRlZGljYXRlZCBtZXRob2QuCisKIDIwMTEtMTItMTQgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBbU3VwcGxlbWVu
dGFsXSBJREwgaW4gV2ViU29ja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5MjEzZGIzYTZjMDllMzc2OWMyMDFhYTYzNWFk
NWRhYTI0MmM4ZDA4Li5mOTk3OWEyMzk2ZDM4OTYwMDgwOWUwN2ZkYTBhMDQ1OGY5N2RiNmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bAogICAgICAgICAg
ICAgc2V0SGFzTGF5ZXIodHJ1ZSk7CiAgICAgICAgICAgICBtX2xheWVyLT5pbnNlcnRPbmx5VGhp
c0xheWVyKCk7CiAgICAgICAgICAgICBpZiAocGFyZW50KCkgJiYgIW5lZWRzTGF5b3V0KCkgJiYg
Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXROZWVkc0Z1
bGxSZXBhaW50KCk7CisgICAgICAgICAgICAgICAgbV9sYXllci0+c2V0UmVwYWludFN0YXR1cyhO
ZWVkc0Z1bGxSZXBhaW50KTsKICAgICAgICAgICAgICAgICAvLyBUaGVyZSBpcyBvbmx5IG9uZSBs
YXllciB0byB1cGRhdGUsIGl0IGlzIG5vdCB3b3J0aCB1c2luZyB8Y2FjaGVkT2Zmc2V0fCBzaW5j
ZQogICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBub3Qgc3VyZSB0aGUgdmFsdWUgd2lsbCBiZSB1
c2VkLgogICAgICAgICAgICAgICAgIG1fbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb25zKDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYzM5NGQwNGNkMGJj
NjU2MjFmZmRlZWY5ZmY1MTNmZDBlYjcyNjE0Yi4uOGQ3NTQ5ODIyYjljYTUxZjI1Y2VkM2M5ZGVk
YmQ1NmQwMWVkNWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CkBAIC0xNDksNyArMTQ5LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZW5kZXJlcikKICAgICAsIG1fdXNlZFRyYW5zcGFyZW5jeShmYWxzZSkKICAg
ICAsIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uKGZhbHNlKQogICAgICwgbV9pbk92ZXJmbG93
UmVsYXlvdXQoZmFsc2UpCi0gICAgLCBtX25lZWRzRnVsbFJlcGFpbnQoZmFsc2UpCisgICAgLCBt
X3JlcGFpbnRTdGF0dXMoUmVwYWludEFmdGVyTGF5b3V0KQogICAgICwgbV9vdmVyZmxvd1N0YXR1
c0RpcnR5KHRydWUpCiAgICAgLCBtX3Zpc2libGVDb250ZW50U3RhdHVzRGlydHkodHJ1ZSkKICAg
ICAsIG1faGFzVmlzaWJsZUNvbnRlbnQoZmFsc2UpCkBAIC0zNjIsMTggKzM2MiwxOCBAQCB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMYXlvdXRQb2ludCogb2Zmc2V0RnJv
bVJvb3QsIFVwZGF0ZUxheWVyUAogICAgICAgICAvLyBhcyB0aGUgdmFsdWUgbm90IHVzaW5nIHRo
ZSBjYWNoZWQgb2Zmc2V0LCBidXQgd2UgY2FuJ3QgZHVlIHRvIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA0OAogICAgICAgICBpZiAoZmxhZ3MgJiBDaGVja0ZvclJl
cGFpbnQpIHsKICAgICAgICAgICAgIGlmICh2aWV3ICYmICF2aWV3LT5wcmludGluZygpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fbmVlZHNGdWxsUmVwYWludCkgeworICAgICAgICAgICAgICAg
IGlmIChtX3JlcGFpbnRTdGF0dXMgJiBOZWVkc0Z1bGxSZXBhaW50KSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcmVyKCktPnJlcGFpbnRVc2luZ0NvbnRhaW5lcihyZXBhaW50Q29udGFpbmVy
LCBvbGRSZXBhaW50UmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3JlcGFpbnRSZWN0
ICE9IG9sZFJlcGFpbnRSZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+
cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsIG1fcmVwYWludFJlY3QpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxk
UmVwYWludEFmdGVyTGF5b3V0KCkpCiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnJl
cGFpbnRBZnRlckxheW91dElmTmVlZGVkKHJlcGFpbnRDb250YWluZXIsIG9sZFJlcGFpbnRSZWN0
LCBvbGRPdXRsaW5lQm94LCAmbV9yZXBhaW50UmVjdCwgJm1fb3V0bGluZUJveCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgY2xlYXJSZXBhaW50UmVjdHMo
KTsKIAotICAgIG1fbmVlZHNGdWxsUmVwYWludCA9IGZhbHNlOworICAgIG1fcmVwYWludFN0YXR1
cyA9IFJlcGFpbnRBZnRlckxheW91dDsKIAogICAgIC8vIEdvIGFoZWFkIGFuZCB1cGRhdGUgdGhl
IHJlZmxlY3Rpb24ncyBwb3NpdGlvbiBhbmQgc2l6ZS4KICAgICBpZiAobV9yZWZsZWN0aW9uKQpA
QCAtODg0LDYgKzg4NCwyMSBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFJlbmRlckxheWVyKiBjb21w
b3NpdGluZ0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgcmV0dXJuIGxh
eWVyLT5pc05vcm1hbEZsb3dPbmx5KCkgPyBsYXllci0+cGFyZW50KCkgOiBsYXllci0+c3RhY2tp
bmdDb250ZXh0KCk7CiB9CiAKK2lubGluZSBib29sIFJlbmRlckxheWVyOjpzaG91bGRSZXBhaW50
QWZ0ZXJMYXlvdXQoKSBjb25zdAoreworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyAgICBpZiAobV9yZXBhaW50U3RhdHVzID09IFJlcGFpbnRBZnRlckxheW91dCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAvLyBDb21wb3NpdGVkIGxheWVycyB0aGF0IHdlcmUgbW92ZWQg
ZHVyaW5nIGEgcG9zaXRpb25lZCBtb3ZlbWVudCBvbmx5CisgICAgLy8gbGF5b3V0LCBkb24ndCBu
ZWVkIHRvIGJlIHJlcGFpbnRlZC4gVGhleSBqdXN0IG5lZWQgdG8gYmUgcmVjb21wb3NpdGVkLgor
ICAgIEFTU0VSVChtX3JlcGFpbnRTdGF0dXMgPT0gTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9u
ZWRNb3ZlbWVudExheW91dCk7CisgICAgcmV0dXJuICFpc0NvbXBvc2l0ZWQoKTsKKyNlbHNlCisg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6ZW5jbG9zaW5nQ29tcG9zaXRpbmdMYXll
cihib29sIGluY2x1ZGVTZWxmKSBjb25zdAogewpAQCAtMTE2Niw3ICsxMTgxLDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cmVtb3ZlT25seVRoaXNMYXllcigpCiAgICAgICAgIFJlbmRlckxheWVyKiBu
ZXh0ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVtb3ZlQ2hpbGQoY3VycmVu
dCk7CiAgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY3VycmVudCwgbmV4dFNpYik7Ci0gICAgICAg
IGN1cnJlbnQtPnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKKyAgICAgICAgY3VycmVudC0+c2V0UmVw
YWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50KTsKICAgICAgICAgTGF5b3V0UG9pbnQgb2Zmc2V0
RnJvbVJvb3QgPSBvZmZzZXRGcm9tUm9vdEJlZm9yZU1vdmU7CiAgICAgICAgIC8vIHVwZGF0ZUxh
eWVyUG9zaXRpb25zIGRlcGVuZHMgb24gaGFzTGF5ZXIoKSBhbHJlYWR5IGJlaW5nIGZhbHNlIGZv
ciBwcm9wZXIgbGF5b3V0LgogICAgICAgICBBU1NFUlQoIXJlbmRlcmVyKCktPmhhc0xheWVyKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA5N2U0ZTQyZDBiN2Vm
MGExMTJiZTI2MjQ3YTE5N2UzN2EyNTg1YTNkLi5iZjRkMDJlNGNjOGQyYWVhMmM4YmI5ODdiN2Mz
NTY3MTMyMzhiZTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
NzMsNiArNzMsMTIgQEAgY2xhc3MgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOwogCiBlbnVtIEJvcmRl
clJhZGl1c0NsaXBwaW5nUnVsZSB7IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzLCBEb05vdElu
Y2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzIH07CiAKK2VudW0gUmVwYWludFN0YXR1cyB7CisgICAg
UmVwYWludEFmdGVyTGF5b3V0ID0gMCwKKyAgICBOZWVkc0Z1bGxSZXBhaW50ID0gMSwKKyAgICBO
ZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0ID0gMSA8PCAxLAorfTsK
KwogY2xhc3MgQ2xpcFJlY3QgewogcHVibGljOgogICAgIENsaXBSZWN0KCkKQEAgLTQ4Myw4ICs0
ODksOCBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJTY3JvbGxGbGFnczsKICAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJT
Y3JvbGwoVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWdzID0gTm9GbGFnKTsKLSAg
ICB2b2lkIHNldE5lZWRzRnVsbFJlcGFpbnQoYm9vbCBmID0gdHJ1ZSkgeyBtX25lZWRzRnVsbFJl
cGFpbnQgPSBmOyB9Ci0gICAgCisgICAgdm9pZCBzZXRSZXBhaW50U3RhdHVzKFJlcGFpbnRTdGF0
dXMgZmxhZykgeyBtX3JlcGFpbnRTdGF0dXMgPSBmbGFnOyB9CisKICAgICBMYXlvdXRVbml0IHN0
YXRpY0lubGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0aWNJbmxpbmVQb3NpdGlv
bjsgfQogICAgIExheW91dFVuaXQgc3RhdGljQmxvY2tQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGljQmxvY2tQb3NpdGlvbjsgfQogICAgCkBAIC01NTMsNiArNTU5LDggQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVk
ZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwogICAgIHZvaWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7
CiAKKyAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpIGNvbnN0OworCiAgICAgLy8g
VGhlIG5vcm1hbCBvcGVyYXRvciBuZXcgaXMgZGlzYWxsb3dlZCBvbiBhbGwgcmVuZGVyIG9iamVj
dHMuCiAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCkgdGhyb3coKTsKIApAQCAtNzQwLDcg
Kzc0OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGJsZW5kKS4KICAgICBib29sIG1fcGFpbnRpbmdJbnNpZGVSZWZsZWN0aW9uIDogMTsgIC8vIEEg
c3RhdGUgYml0IHRyYWNraW5nIGlmIHdlIGFyZSBwYWludGluZyBpbnNpZGUgYSByZXBsaWNhLgog
ICAgIGJvb2wgbV9pbk92ZXJmbG93UmVsYXlvdXQgOiAxOwotICAgIGJvb2wgbV9uZWVkc0Z1bGxS
ZXBhaW50IDogMTsKKyAgICBSZXBhaW50U3RhdHVzIG1fcmVwYWludFN0YXR1cyA6IDI7CiAKICAg
ICBib29sIG1fb3ZlcmZsb3dTdGF0dXNEaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2hvcml6b250YWxP
dmVyZmxvdyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IGE3MTAyZTE3YzNmMjczMjMzMjc2OTIwYWU1ZTg2ODIxMWZlZjc3MGIuLjRlMWJmN2E4M2Ri
MjI1Y2E3MTY4YTM1YTI5NDYxMjA0ZDYyMzU5NjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MTAsNyArNzEwLDEzIEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjppbnZhbGlkYXRlQ29udGFpbmVyUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiB2b2lkIFJlbmRl
ck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KCkKIHsKICAgICBBU1NFUlQoaGFzTGF5
ZXIoKSk7Ci0gICAgdG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0TmVl
ZHNGdWxsUmVwYWludCh0cnVlKTsKKyAgICB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHRoaXMpLT5s
YXllcigpLT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOworfQorCit2b2lkIFJl
bmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50
TGF5b3V0KCkKK3sKKyAgICBBU1NFUlQoaGFzTGF5ZXIoKSk7CisgICAgdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhOZWVkc0Z1bGxSZXBhaW50
Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKIH0KIAogUmVuZGVyQmxvY2sqIFJlbmRlck9i
amVjdDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCA0ZWViZjZmYjQ1ZGQyZGY0ODY0ZjU5ZTkxOTI5MDJlNjQwYjY5MzI4
Li5mNDlmNGIzMmI0YzExMGE3ZDBkNTE3NjI1MzgxMzU0MTk1Mzg4YTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0yNDYsNiArMjQ2LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICB2b2lkIGFkZEFic29sdXRlUmVjdEZvckxheWVyKExheW91dFJlY3Qm
IHJlc3VsdCk7CiAgICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKTsKKyAgICB2b2lk
IHNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpOwog
CiBwdWJsaWM6CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTAwNyw3ICsxMDA4LDcgQEAgaW5saW5lIHZv
aWQgUmVuZGVyT2JqZWN0OjpzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpCiAgICAg
aWYgKCFhbHJlYWR5TmVlZGVkTGF5b3V0KSB7CiAgICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tz
Rm9yTGF5b3V0KCk7CiAgICAgICAgIGlmIChoYXNMYXllcigpKQotICAgICAgICAgICAgc2V0TGF5
ZXJOZWVkc0Z1bGxSZXBhaW50KCk7CisgICAgICAgICAgICBzZXRMYXllck5lZWRzRnVsbFJlcGFp
bnRGb3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ODU5
MjA5YzljZDYwNDVlNTgyMDNhYjgzZTllNTc5YTAyN2I1NzNkLi40YjkyZWJhZmNmNDllYzY2YWNi
MTlkMTYzOTUxN2ZmZGUxN2U2OGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMTItMTQg
IEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSGFy
ZHdhcmUtYmFja2VkIHJlbmRlckxheWVyIGNvdWxkIGF2b2lkIHJlcGFpbnRpbmcgZHVyaW5nIGEg
cG9zaXRpb25lZCBtb3ZlbWVudCBsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0MzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSSBkaWQgbm90IGZpbmQgYW55IHRlc3QgY292ZXJpbmcgcG9zaXRp
b25lZCBtb3ZlbWVudCBsYXlvdXQgd2l0aCBjb21wb3NpdGVkIGxheWVycworICAgICAgICBzbyBJ
IGFkZGVkIHNvbWUgdGVzdGluZy4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29sdXRlLXBv
c2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmc6IEFkZGVkLgor
ICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9z
aXRlZC1sYXllci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2Fi
c29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29t
cG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQt
bGF5ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9hYnNvbHV0
ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21w
b3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcv
Zml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2ZpeGVk
LXBvc2l0aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWV4cGVjdGVk
LnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdl
ZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBjb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3Np
dGVkLXBhcmVudC1sYXllci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0xNCAgQmFsYXpzIEtlbGVt
ZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBRdC1XSzIgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9z
aXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAxOGYwOGMxMzMzYmRkYWFiZjE2N2YwYTA4
MTRmNmM3MWYzYjU2ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2MQp6Y21lQVNATj8ob2xI
eWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4wMWEKeldI
Vz1MbHdefntSMTVQWWxoaD0wcWVOMiFRfWJqP1Y+MlU1THhUeTZwUFhjMTtNKHUkO3V1bWY9azFN
eW9RRTkqCnpTUkNnVS1nQkNgZXNWXkgkfHxLOT5CaX00Yl9AKDlgKSlIY0Z4KyFYVX1RTUxCRjVu
MEdzK2taZ3dkMmgkNldBYwp6eVheemRiRzYmbFpIfm9rd3E8MHZSPFZKQkEmSDViS3x5VmxHNHVp
PEojQ3ZnMUgreSFfUiRDJk9+cz0qY3IrSmAKZjxedTleIThkbDFlQlJabzxoTUJpK3JKRSt1Nnsx
LW9EIU08IzlqWlAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1s
YXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3Np
dGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWlu
LWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1w
b3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWE1
ZWRkYThmNmY4NWIwZTQwMzNmNjkwZWRmZTc2NDA0NDRkMjZjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21w
b3NpdGVkLWxheWVyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OiBoaWRkZW47
IH0KKyAgICAgICAgZGl2IHsgaGVpZ2h0OiAxMDBweDsgd2lkdGg6IDEwMHB4OyB9CisgICAgICAg
IC5maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsgfQorICAgICAgICAuYWJzb2x1dGUgeyBwb3NpdGlv
bjogYWJzb2x1dGU7IH0KKyAgICAgICAgLmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47
IH0KKyAgICAgICAgLnJlZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAuY29t
cG9zaXRlZCB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyB9CisgICAgPC9zdHls
ZT4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KHRydWUpOworICAgICAgICBmdW5jdGlvbiBtb3ZlQWJzb2x1dGVEaXYoKQor
ICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWJzb2x1dGVE
aXYnKS5zdHlsZS50b3AgPSAnNzAwcHgnOworICAgICAgICB9CisgICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgbW92ZUFic29sdXRlRGl2LCBmYWxzZSk7CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0iaGVpZ2h0OjIwMDBweDsiPgorICAgIDwhLS0gWW91
IHNob3VsZCBzZWUgMSBncmVlbiByZWN0YW5nbGUgaW4gdGhlIG91dHB1dCBhbmQgbm8gcmVkLiAt
LT4KKyAgICA8ZGl2IHN0eWxlPSJ0b3A6IDIwMHB4OyBsZWZ0OiAxMDBweDsiIGNsYXNzPSJmaXhl
ZCByZWQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImFic29sdXRlRGl2IiBzdHlsZT0idG9wOiA1MDBw
eDsgbGVmdDoxMDBweDsiIGNsYXNzPSJhYnNvbHV0ZSBncmVlbiBjb21wb3NpdGVkIj48L2Rpdj48
L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgNTAwKTsKKyAg
ICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVu
dC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1w
b3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQucG5n
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgwMThmMDhjMTMzM2JkZGFhYmYxNjdmMGEwODE0ZjZjNzFmM2I1NmYKR0lU
IGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2
WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMDFhCnpXSFc9TGx3Xn57UjE1UFlsaGg9
MHFlTjIhUX1iaj9WPjJVNUx4VHk2cFBYYzE7TSh1JDt1dW1mPWsxTXlvUUU5Kgp6U1JDZ1UtZ0JD
YGVzVl5IJHx8Szk+Qml9NGJfQCg5YCkpSGNGeCshWFV9UU1MQkY1bjBHcytrWmd3ZDJoJDZXQWMK
enlYXnpkYkc2JmxaSH5va3dxPDB2UjxWSkJBJkg1Ykt8eVZsRzR1aTxKI0N2ZzFIK3khX1IkQyZP
fnM9KmNyK0pgCmY8XnU5XiE4ZGwxZUJSWm88aE1CaStySkUrdTZ7MS1vRCFNPCM5alpQCgpsaXRl
cmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9h
YnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hh
bmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC13
aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNo
YW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50
LWxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNjNWU0ZWZjNTQwOGUwNjhkNTkzYzdkYTA0OGM4M2Jl
MGNiZGQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29s
dXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sCkBA
IC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5
bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzogaGlkZGVuOyB9CisgICAgICAgIGJvZHkgeyBt
YXJnaW46IDBweDsgfQorICAgICAgICBkaXYgeyBoZWlnaHQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7
IH0KKyAgICAgICAgLmZpeGVkIHsgcG9zaXRpb246IGZpeGVkOyB9CisgICAgICAgIC5hYnNvbHV0
ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQorICAgICAgICAuZ3JlZW4geyBiYWNrZ3JvdW5kLWNv
bG9yOiBncmVlbjsgfQorICAgICAgICAucmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9Cisg
ICAgICAgIC5jb21wb3NpdGVkIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0K
KyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGZ1bmN0aW9uIG1vdmVBYnNv
bHV0ZURpdigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhYnNvbHV0ZURpdicpLnN0eWxlLnRvcCA9ICc3MDBweCc7CisgICAgICAgIH0KKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBtb3ZlQWJzb2x1dGVEaXYsIGZhbHNlKTsK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJoZWlnaHQ6MjAwMHB4OyI+Cisg
ICAgPCEtLSBZb3Ugc2hvdWxkIHNlZSAxIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgb3V0cHV0IGFu
ZCBubyByZWQuIC0tPgorICAgIDxkaXYgc3R5bGU9InRvcDogMjAwcHg7IGxlZnQ6IDEwMHB4OyIg
Y2xhc3M9ImZpeGVkIHJlZCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0iY29tcG9zaXRlZCI+PGRp
diBpZD0iYWJzb2x1dGVEaXYiIHN0eWxlPSJ0b3A6IDUwMHB4OyBsZWZ0OjEwMHB4OyIgY2xhc3M9
ImFic29sdXRlIGdyZWVuIj48L2Rpdj48L2Rpdj48L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgNTAwKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNo
YW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0
ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgwMThmMDhjMTMzM2JkZGFhYmYxNjdmMGEwODE0ZjZjNzFmM2I1
NmYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5
fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMDFhCnpXSFc9TGx3Xn57UjE1
UFlsaGg9MHFlTjIhUX1iaj9WPjJVNUx4VHk2cFBYYzE7TSh1JDt1dW1mPWsxTXlvUUU5Kgp6U1JD
Z1UtZ0JDYGVzVl5IJHx8Szk+Qml9NGJfQCg5YCkpSGNGeCshWFV9UU1MQkY1bjBHcytrWmd3ZDJo
JDZXQWMKenlYXnpkYkc2JmxaSH5va3dxPDB2UjxWSkJBJkg1Ykt8eVZsRzR1aTxKI0N2ZzFIK3kh
X1IkQyZPfnM9KmNyK0pgCmY8XnU5XiE4ZGwxZUJSWm88aE1CaStySkUrdTZ7MS1vRCFNPCM5alpQ
CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5
MjdhZDc4ZTY0YjBhYWQ3YmRlZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3Np
dGVkLWxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlNjZjZmNhYmFiNTE3NmQ2MGQ4NDYyMjE4YWQz
MWU5MDFmMWFiOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Zp
eGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAg
ICAgIGh0bWwgeyBvdmVyZmxvdzogaGlkZGVuOyB9CisgICAgICAgIGRpdiB7IGhlaWdodDogMTAw
cHg7IHdpZHRoOiAxMDBweDsgfQorICAgICAgICAuZml4ZWQgeyBwb3NpdGlvbjogZml4ZWQ7IH0K
KyAgICAgICAgLmdyZWVuIHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IH0KKyAgICAgICAgLnJl
ZCB7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgfQorICAgICAgICAuY29tcG9zaXRlZCB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KHRy
dWUpOworICAgICAgICBmdW5jdGlvbiBtb3ZlRml4ZWREaXYoKQorICAgICAgICB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZml4ZWREaXYnKS5zdHlsZS50b3AgPSAnMjAw
cHgnOworICAgICAgICB9CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
bW92ZUZpeGVkRGl2LCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHls
ZT0iaGVpZ2h0OjIwMDBweDsiPgorICAgIDwhLS0gWW91IHNob3VsZCBzZWUgMSBncmVlbiByZWN0
YW5nbGUgaW4gdGhlIG91dHB1dCBhbmQgbm8gcmVkLiAtLT4KKyAgICA8ZGl2IHN0eWxlPSJ0b3A6
IDIwMHB4OyBsZWZ0OiAxMDBweDsiIGNsYXNzPSJmaXhlZCByZWQiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImZpeGVkRGl2IiBzdHlsZT0idG9wOiA1MDBweDsgbGVmdDoxMDBweDsiIGNsYXNzPSJmaXhl
ZCBncmVlbiBjb21wb3NpdGVkIj48L2Rpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtd2l0
aGluLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0ZWQtcGFyZW50
LWxheWVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDE4ZjA4YzEzMzNiZGRhYWJmMTY3ZjBh
MDgxNGY2YzcxZjNiNTZmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODYxCnpjbWVBU0BOPyhv
bEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjAxYQp6
V0hXPUxsd15+e1IxNVBZbGhoPTBxZU4yIVF9Ymo/Vj4yVTVMeFR5NnBQWGMxO00odSQ7dXVtZj1r
MU15b1FFOSoKelNSQ2dVLWdCQ2Blc1ZeSCR8fEs5PkJpfTRiX0AoOWApKUhjRngrIVhVfVFNTEJG
NW4wR3Mra1pnd2QyaCQ2V0FjCnp5WF56ZGJHNiZsWkh+b2t3cTwwdlI8VkpCQSZINWJLfHlWbEc0
dWk8SiNDdmcxSCt5IV9SJEMmT35zPSpjcitKYApmPF51OV4hOGRsMWVCUlpvPGhNQmkrckpFK3U2
ezEtb0QhTTwjOWpaUAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRl
ZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4
ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhi
ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhlZC1wb3Np
dGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhl
ZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29t
cG9zaXRlZC1wYXJlbnQtbGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzQ2MjkxYmVlYTlmZTlmOGJj
OWI5ZTA1ZGNjN2UwMjFiMzc2ZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQt
bGF5ZXIuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgICAgPHN0eWxlPgorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfQorICAg
ICAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgICAgZGl2IHsgaGVpZ2h0OiAxMDBweDsg
d2lkdGg6IDEwMHB4OyB9CisgICAgICAgIC5maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsgfQorICAg
ICAgICAuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICAucmVkIHsg
YmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgIC5jb21wb3NpdGVkIHsgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1ZSk7
CisgICAgICAgIGZ1bmN0aW9uIG1vdmVGaXhlZERpdigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXhlZERpdicpLnN0eWxlLnRvcCA9ICcyMDBweCc7
CisgICAgICAgIH0KKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBtb3Zl
Rml4ZWREaXYsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJo
ZWlnaHQ6MjAwMHB4OyI+CisgICAgPCEtLSBZb3Ugc2hvdWxkIHNlZSAxIGdyZWVuIHJlY3Rhbmds
ZSBpbiB0aGUgb3V0cHV0IGFuZCBubyByZWQuIC0tPgorICAgIDxkaXYgc3R5bGU9InRvcDogMjAw
cHg7IGxlZnQ6IDEwMHB4OyIgY2xhc3M9ImZpeGVkIHJlZCI+PC9kaXY+CisgICAgPGRpdiBjbGFz
cz0iY29tcG9zaXRlZCI+PGRpdiBpZD0iZml4ZWREaXYiIHN0eWxlPSJ0b3A6IDUwMHB4OyBsZWZ0
OjEwMHB4OyIgY2xhc3M9ImZpeGVkIGdyZWVuIj48L2Rpdj48L2Rpdj48L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119407</attachid>
            <date>2011-12-15 03:32:42 -0800</date>
            <delta_ts>2011-12-15 09:56:04 -0800</delta_ts>
            <desc>Updated change: RepaintAfterLayout -&gt; NeedsNormalRepaint (should make the enum values less confusing) + addressed Simon&apos;s comments.</desc>
            <filename>bug-74370-20111215123240.patch</filename>
            <type>text/plain</type>
            <size>22010</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmY5N2NjNzExNmNlM2Qz
NTA4ZjYxYTQ0ZDM5Nzk1ZTc1ZGEzZTUxYi4uNDUyY2M1NGU1ZTRmOTMwOTg5OTYwMDMxYmE2M2I1
Y2Q4OTU5MWI4NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDExLTEyLTE1ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEhhcmR3YXJl
LWJhY2tlZCByZW5kZXJMYXllciBjb3VsZCBhdm9pZCByZXBhaW50aW5nIGR1cmluZyBhIHBvc2l0
aW9uZWQgbW92ZW1lbnQgbGF5b3V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDM3MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4K
KworICAgICAgICBUZXN0czogY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1p
bi1jb21wb3NpdGVkLWxheWVyLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2Fic29s
dXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci5odG1sCisg
ICAgICAgICAgICAgICBjb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBv
c2l0ZWQtbGF5ZXIuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRp
b24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXIuaHRtbAorCisgICAgICAg
IFRvIGJlIGFibGUgdG8gcHJvcGVybHkgc2tpcCByZXBhaW50aW5nIGFmdGVyIGEgcG9zaXRpb25l
ZCBtb3ZlbWVudCBsYXlvdXQgb25seSwgd2UKKyAgICAgICAgbmVlZGVkIHRvIGFkZCBtb3JlIHN0
YXRlIHRvIHRoZSBjdXJyZW50IHxzZXROZWVkc0Z1bGxSZXBhaW50fCBtZXRob2QuIEFzIHBhcnQg
b2YgdGhhdAorICAgICAgICB3ZSByZWZhY3RvcmVkIHRoZSBjYWxsZXJzIGFuZCBpbnRlcm5hbCBm
aWVsZHMgdG8gYmV0dGVyIG1hdGNoIHRoZSBuZXcgbWVhbmluZy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICBFeHBsaWNpdGVseSBnYXZl
IHRoZSBSZXBhaW50U3RhdHVzIHRvIHNldFJlcGFpbnRTdGF0dXMuCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJl
bmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhp
c0xheWVyKToKKyAgICAgICAgVXBkYXRlZCB0aG9zZSBmdW5jdGlvbiBhZnRlciB0aGUgcmVuYW1p
bmdzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlv
bnMpOgorICAgICAgICBEaXR0by4gQWxzbyBhZGRlZCBhIHNob2xkUmVwYWludEFmdGVyTGF5b3V0
IGNoZWNrLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2hvdWxkUmVwYWludEFm
dGVyTGF5b3V0KToKKyAgICAgICAgSGVhcnQgb2YgdGhlIG9wdGltaXphdGlvbiwgaWYgd2UganVz
dCBkaWQgYSBwb3NpdGlvbmVkIG1vdmVtZW50IGxheW91dCBvZiBjb21wb3NpdGVkIFJlbmRlckxh
eWVyLAorICAgICAgICB0aGVuIGRvbid0IHJlcGFpbnQuIEFsbCB0aGUgb3RoZXIgY2FzZXMgc2hv
dWxkIHN0aWxsIHRyaWdnZXIgYSByZXBhaW50LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0UmVwYWludFN0YXR1
cyk6CisgICAgICAgIFJlbmFtZWQgc2V0TmVlZHNGdWxsUmVwYWludCB0byBzZXRSZXBhaW50U3Rh
dHVzLiBBbHNvIGFkZGVkIGEgbmV3IGVudW0gUmVwYWludFN0YXR1cy4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQpOgorICAgICAgICBVcGRhdGVkIGFmdGVyIHRoZSBy
ZW5hbWluZ3MuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVk
c0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KToKKyAgICAgICAgTmV3IG1l
dGhvZCB0aGF0IHBhc3MgYSBuZXcgdmFsdWUgdG8gdGhlIFJlbmRlckxheWVyLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0OjpzZXROZWVkc1Bvc2l0aW9uZWRNb3ZlbWVudExheW91dCk6CisgICAgICAgIFN3aXRjaGVk
IHRoZSBjYWxsIHRvIHRoZSBkZWRpY2F0ZWQgbWV0aG9kLgorCiAyMDExLTEyLTE1ICBIYWppbWUg
TW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4IGF0dGVtcHQgZm9yIENocm9taXVtIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDkyMTNkYjNhNmMwOWUzNzY5
YzIwMWFhNjM1YWQ1ZGFhMjQyYzhkMDguLmY5OTc5YTIzOTZkMzg5NjAwODA5ZTA3ZmRhMGEwNDU4
Zjk3ZGI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHls
CiAgICAgICAgICAgICBzZXRIYXNMYXllcih0cnVlKTsKICAgICAgICAgICAgIG1fbGF5ZXItPmlu
c2VydE9ubHlUaGlzTGF5ZXIoKTsKICAgICAgICAgICAgIGlmIChwYXJlbnQoKSAmJiAhbmVlZHNM
YXlvdXQoKSAmJiBjb250YWluaW5nQmxvY2soKSkgewotICAgICAgICAgICAgICAgIG1fbGF5ZXIt
PnNldE5lZWRzRnVsbFJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICBtX2xheWVyLT5zZXRSZXBh
aW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwogICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlz
IG9ubHkgb25lIGxheWVyIHRvIHVwZGF0ZSwgaXQgaXMgbm90IHdvcnRoIHVzaW5nIHxjYWNoZWRP
ZmZzZXR8IHNpbmNlCiAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBzdXJlIHRoZSB2YWx1
ZSB3aWxsIGJlIHVzZWQuCiAgICAgICAgICAgICAgICAgbV9sYXllci0+dXBkYXRlTGF5ZXJQb3Np
dGlvbnMoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5
OTcwYzA3M2ZmNTQ5MDllMjgyNjVhMjdlZTc1NjhiZmNjZjMxMDdiLi40MjY2ZDA3NmQ5NWRhMjRj
NDA5OWU0NTBkMTdiNDI3NjhmMDA4OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlcmVyKQogICAgICwgbV91c2VkVHJhbnNwYXJlbmN5
KGZhbHNlKQogICAgICwgbV9wYWludGluZ0luc2lkZVJlZmxlY3Rpb24oZmFsc2UpCiAgICAgLCBt
X2luT3ZlcmZsb3dSZWxheW91dChmYWxzZSkKLSAgICAsIG1fbmVlZHNGdWxsUmVwYWludChmYWxz
ZSkKKyAgICAsIG1fcmVwYWludFN0YXR1cyhOZWVkc05vcm1hbFJlcGFpbnQpCiAgICAgLCBtX292
ZXJmbG93U3RhdHVzRGlydHkodHJ1ZSkKICAgICAsIG1fdmlzaWJsZUNvbnRlbnRTdGF0dXNEaXJ0
eSh0cnVlKQogICAgICwgbV9oYXNWaXNpYmxlQ29udGVudChmYWxzZSkKQEAgLTM2MywxOCArMzYz
LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKExheW91dFBvaW50
KiBvZmZzZXRGcm9tUm9vdCwgVXBkYXRlTGF5ZXJQCiAgICAgICAgIC8vIGFzIHRoZSB2YWx1ZSBu
b3QgdXNpbmcgdGhlIGNhY2hlZCBvZmZzZXQsIGJ1dCB3ZSBjYW4ndCBkdWUgdG8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDQ4CiAgICAgICAgIGlmIChmbGFncyAm
IENoZWNrRm9yUmVwYWludCkgewogICAgICAgICAgICAgaWYgKHZpZXcgJiYgIXZpZXctPnByaW50
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9uZWVkc0Z1bGxSZXBhaW50KSB7CisgICAg
ICAgICAgICAgICAgaWYgKG1fcmVwYWludFN0YXR1cyAmIE5lZWRzRnVsbFJlcGFpbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludFVzaW5nQ29udGFpbmVyKHJlcGFp
bnRDb250YWluZXIsIG9sZFJlcGFpbnRSZWN0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
cmVwYWludFJlY3QgIT0gb2xkUmVwYWludFJlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlcigpLT5yZXBhaW50VXNpbmdDb250YWluZXIocmVwYWludENvbnRhaW5lciwgbV9yZXBh
aW50UmVjdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChzaG91bGRSZXBhaW50QWZ0ZXJMYXlvdXQoKSkKICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQocmVwYWludENvbnRhaW5lciwgb2xk
UmVwYWludFJlY3QsIG9sZE91dGxpbmVCb3gsICZtX3JlcGFpbnRSZWN0LCAmbV9vdXRsaW5lQm94
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBjbGVhclJl
cGFpbnRSZWN0cygpOwogCi0gICAgbV9uZWVkc0Z1bGxSZXBhaW50ID0gZmFsc2U7CisgICAgbV9y
ZXBhaW50U3RhdHVzID0gTmVlZHNOb3JtYWxSZXBhaW50OwogCiAgICAgLy8gR28gYWhlYWQgYW5k
IHVwZGF0ZSB0aGUgcmVmbGVjdGlvbidzIHBvc2l0aW9uIGFuZCBzaXplLgogICAgIGlmIChtX3Jl
ZmxlY3Rpb24pCkBAIC04ODUsNiArODg1LDIxIEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgUmVuZGVy
TGF5ZXIqIGNvbXBvc2l0aW5nQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKICAg
ICByZXR1cm4gbGF5ZXItPmlzTm9ybWFsRmxvd09ubHkoKSA/IGxheWVyLT5wYXJlbnQoKSA6IGxh
eWVyLT5zdGFja2luZ0NvbnRleHQoKTsKIH0KIAoraW5saW5lIGJvb2wgUmVuZGVyTGF5ZXI6OnNo
b3VsZFJlcGFpbnRBZnRlckxheW91dCgpIGNvbnN0Cit7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIGlmIChtX3JlcGFpbnRTdGF0dXMgPT0gTmVlZHNOb3JtYWxSZXBhaW50
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIENvbXBvc2l0ZWQgbGF5ZXJzIHRoYXQg
d2VyZSBtb3ZlZCBkdXJpbmcgYSBwb3NpdGlvbmVkIG1vdmVtZW50IG9ubHkKKyAgICAvLyBsYXlv
dXQsIGRvbid0IG5lZWQgdG8gYmUgcmVwYWludGVkLiBUaGV5IGp1c3QgbmVlZCB0byBiZSByZWNv
bXBvc2l0ZWQuCisgICAgQVNTRVJUKG1fcmVwYWludFN0YXR1cyA9PSBOZWVkc0Z1bGxSZXBhaW50
Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KTsKKyAgICByZXR1cm4gIWlzQ29tcG9zaXRlZCgp
OworI2Vsc2UKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorfQorCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdDb21w
b3NpdGluZ0xheWVyKGJvb2wgaW5jbHVkZVNlbGYpIGNvbnN0CiB7CkBAIC0xMTY3LDcgKzExODIs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZW1vdmVPbmx5VGhpc0xheWVyKCkKICAgICAgICAgUmVu
ZGVyTGF5ZXIqIG5leHQgPSBjdXJyZW50LT5uZXh0U2libGluZygpOwogICAgICAgICByZW1vdmVD
aGlsZChjdXJyZW50KTsKICAgICAgICAgcGFyZW50LT5hZGRDaGlsZChjdXJyZW50LCBuZXh0U2li
KTsKLSAgICAgICAgY3VycmVudC0+c2V0TmVlZHNGdWxsUmVwYWludCgpOworICAgICAgICBjdXJy
ZW50LT5zZXRSZXBhaW50U3RhdHVzKE5lZWRzRnVsbFJlcGFpbnQpOwogICAgICAgICBMYXlvdXRQ
b2ludCBvZmZzZXRGcm9tUm9vdCA9IG9mZnNldEZyb21Sb290QmVmb3JlTW92ZTsKICAgICAgICAg
Ly8gdXBkYXRlTGF5ZXJQb3NpdGlvbnMgZGVwZW5kcyBvbiBoYXNMYXllcigpIGFscmVhZHkgYmVp
bmcgZmFsc2UgZm9yIHByb3BlciBsYXlvdXQuCiAgICAgICAgIEFTU0VSVCghcmVuZGVyZXIoKS0+
aGFzTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDk3
ZTRlNDJkMGI3ZWYwYTExMmJlMjYyNDdhMTk3ZTM3YTI1ODVhM2QuLjIzMDBhZDRkOTIxZWFlODUx
MDVkNDA2YjAzZGFkMjMzNjMwODFkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCkBAIC03Myw2ICs3MywxMiBAQCBjbGFzcyBSZW5kZXJMYXllckNvbXBvc2l0b3I7CiAK
IGVudW0gQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHsgSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRp
dXMsIERvTm90SW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMgfTsKIAorZW51bSBSZXBhaW50U3Rh
dHVzIHsKKyAgICBOZWVkc05vcm1hbFJlcGFpbnQgPSAwLAorICAgIE5lZWRzRnVsbFJlcGFpbnQg
PSAxIDw8IDAsCisgICAgTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91
dCA9IDEgPDwgMQorfTsKKwogY2xhc3MgQ2xpcFJlY3QgewogcHVibGljOgogICAgIENsaXBSZWN0
KCkKQEAgLTQ4Myw4ICs0ODksOCBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFVw
ZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxGbGFnczsKICAgICB2b2lkIHVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGwoVXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRlclNjcm9sbEZsYWdz
ID0gTm9GbGFnKTsKLSAgICB2b2lkIHNldE5lZWRzRnVsbFJlcGFpbnQoYm9vbCBmID0gdHJ1ZSkg
eyBtX25lZWRzRnVsbFJlcGFpbnQgPSBmOyB9Ci0gICAgCisgICAgdm9pZCBzZXRSZXBhaW50U3Rh
dHVzKFJlcGFpbnRTdGF0dXMgc3RhdHVzKSB7IG1fcmVwYWludFN0YXR1cyA9IHN0YXR1czsgfQor
CiAgICAgTGF5b3V0VW5pdCBzdGF0aWNJbmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGljSW5saW5lUG9zaXRpb247IH0KICAgICBMYXlvdXRVbml0IHN0YXRpY0Jsb2NrUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRpY0Jsb2NrUG9zaXRpb247IH0KICAgIApAQCAtNTUz
LDYgKzU1OSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIEJvcmRlclJhZGl1c0Ns
aXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKICAgICB2b2lkIHJlc3Rv
cmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0
LCBjb25zdCBDbGlwUmVjdCYpOwogCisgICAgYm9vbCBzaG91bGRSZXBhaW50QWZ0ZXJMYXlvdXQo
KSBjb25zdDsKKwogICAgIC8vIFRoZSBub3JtYWwgb3BlcmF0b3IgbmV3IGlzIGRpc2FsbG93ZWQg
b24gYWxsIHJlbmRlciBvYmplY3RzLgogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpIHRo
cm93KCk7CiAKQEAgLTc0MCw3ICs3NDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBibGVuZCkuCiAgICAgYm9vbCBtX3BhaW50aW5nSW5zaWRlUmVm
bGVjdGlvbiA6IDE7ICAvLyBBIHN0YXRlIGJpdCB0cmFja2luZyBpZiB3ZSBhcmUgcGFpbnRpbmcg
aW5zaWRlIGEgcmVwbGljYS4KICAgICBib29sIG1faW5PdmVyZmxvd1JlbGF5b3V0IDogMTsKLSAg
ICBib29sIG1fbmVlZHNGdWxsUmVwYWludCA6IDE7CisgICAgdW5zaWduZWQgbV9yZXBhaW50U3Rh
dHVzIDogMjsgLy8gUmVwYWludFN0YXR1cwogCiAgICAgYm9vbCBtX292ZXJmbG93U3RhdHVzRGly
dHkgOiAxOwogICAgIGJvb2wgbV9ob3Jpem9udGFsT3ZlcmZsb3cgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCBhNzEwMmUxN2MzZjI3MzIzMzI3Njky
MGFlNWU4NjgyMTFmZWY3NzBiLi40ZTFiZjdhODNkYjIyNWNhNzE2OGEzNWEyOTQ2MTIwNGQ2MjM1
OTY5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNzEw
LDcgKzcxMCwxMyBAQCB2b2lkIFJlbmRlck9iamVjdDo6aW52YWxpZGF0ZUNvbnRhaW5lclByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoKQogdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxs
UmVwYWludCgpCiB7CiAgICAgQVNTRVJUKGhhc0xheWVyKCkpOwotICAgIHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNldE5lZWRzRnVsbFJlcGFpbnQodHJ1ZSk7CisgICAg
dG9SZW5kZXJCb3hNb2RlbE9iamVjdCh0aGlzKS0+bGF5ZXIoKS0+c2V0UmVwYWludFN0YXR1cyhO
ZWVkc0Z1bGxSZXBhaW50KTsKK30KKwordm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNG
dWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91dCgpCit7CisgICAgQVNTRVJUKGhh
c0xheWVyKCkpOworICAgIHRvUmVuZGVyQm94TW9kZWxPYmplY3QodGhpcyktPmxheWVyKCktPnNl
dFJlcGFpbnRTdGF0dXMoTmVlZHNGdWxsUmVwYWludEZvclBvc2l0aW9uZWRNb3ZlbWVudExheW91
dCk7CiB9CiAKIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5pbmdCbG9jaygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNGVlYmY2ZmI0
NWRkMmRmNDg2NGY1OWU5MTkyOTAyZTY0MGI2OTMyOC4uZjQ5ZjRiMzJiNGMxMTBhN2QwZDUxNzYy
NTM4MTM1NDE5NTM4OGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aApAQCAtMjQ2LDYgKzI0Niw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBhZGRB
YnNvbHV0ZVJlY3RGb3JMYXllcihMYXlvdXRSZWN0JiByZXN1bHQpOwogICAgIHZvaWQgc2V0TGF5
ZXJOZWVkc0Z1bGxSZXBhaW50KCk7CisgICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFpbnRG
b3JQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKTsKIAogcHVibGljOgogI2lmbmRlZiBOREVCVUcK
QEAgLTEwMDcsNyArMTAwOCw3IEBAIGlubGluZSB2b2lkIFJlbmRlck9iamVjdDo6c2V0TmVlZHNQ
b3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKQogICAgIGlmICghYWxyZWFkeU5lZWRlZExheW91dCkg
ewogICAgICAgICBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dCgpOwogICAgICAgICBpZiAo
aGFzTGF5ZXIoKSkKLSAgICAgICAgICAgIHNldExheWVyTmVlZHNGdWxsUmVwYWludCgpOworICAg
ICAgICAgICAgc2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRpb25lZE1vdmVtZW50TGF5
b3V0KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWU3YzBmMDlmZGZjMWY0MGE0ZjAyNmFmMGZkZGYz
YmRjNzg3MjFjNC4uNjQ4OGRhNDdmMDljMTAyZWE4MWY0YmIzZTdiZGQzZDY4MmQ4NjVhMyAxMDA3
NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTE1ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZm
cmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIEhhcmR3YXJlLWJhY2tlZCByZW5kZXJMYXllciBj
b3VsZCBhdm9pZCByZXBhaW50aW5nIGR1cmluZyBhIHBvc2l0aW9uZWQgbW92ZW1lbnQgbGF5b3V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM3MAor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBJIGRpZCBub3Qg
ZmluZCBhbnkgdGVzdCBjb3ZlcmluZyBwb3NpdGlvbmVkIG1vdmVtZW50IGxheW91dCB3aXRoIGNv
bXBvc2l0ZWQgbGF5ZXJzCisgICAgICAgIHNvIEkgYWRkZWQgc29tZSB0ZXN0aW5nLgorCisgICAg
ICAgICogY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVk
LWxheWVyLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvYWJzb2x1
dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1j
b21wb3NpdGVkLWxheWVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29s
dXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNo
YW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGNvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21w
b3NpdGVkLXBhcmVudC1sYXllci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9m
aXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGlu
Zy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29t
cG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBjb21w
b3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1s
YXllci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2ZpeGVkLXBv
c2l0aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWw6IEFkZGVk
LgorCiAyMDExLTEyLTE1ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgcmV2ZXJ0IG9mIHIxMDI2OTYgKFtOYXZpZ2F0aW9uIFRpbWlu
Z10gVXNlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIGluc3RlYWQgb2YgY3VycmVudFRp
bWUoKSkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3Np
dGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDE4ZjA4YzEzMzNiZGRhYWJmMTY3ZjBhMDgx
NGY2YzcxZjNiNTZmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAyODYxCnpjbWVBU0BOPyhvbEh5
YHVWQnEhaWEweX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbjAxYQp6V0hX
PUxsd15+e1IxNVBZbGhoPTBxZU4yIVF9Ymo/Vj4yVTVMeFR5NnBQWGMxO00odSQ7dXVtZj1rMU15
b1FFOSoKelNSQ2dVLWdCQ2Blc1ZeSCR8fEs5PkJpfTRiX0AoOWApKUhjRngrIVhVfVFNTEJGNW4w
R3Mra1pnd2QyaCQ2V0FjCnp5WF56ZGJHNiZsWkh+b2t3cTwwdlI8VkpCQSZINWJLfHlWbEc0dWk8
SiNDdmcxSCt5IV9SJEMmT35zPSpjcitKYApmPF51OV4hOGRsMWVCUlpvPGhNQmkrckpFK3U2ezEt
b0QhTTwjOWpaUAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxh
eWVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0
aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJkYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtaW4t
Y29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNv
bXBvc2l0ZWQtbGF5ZXIuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBv
c2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5YTVl
ZGRhOGY2Zjg1YjBlNDAzM2Y2OTBlZGZlNzY0MDQ0NGQyNmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBv
c2l0ZWQtbGF5ZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6IGhpZGRlbjsg
fQorICAgICAgICBkaXYgeyBoZWlnaHQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IH0KKyAgICAgICAg
LmZpeGVkIHsgcG9zaXRpb246IGZpeGVkOyB9CisgICAgICAgIC5hYnNvbHV0ZSB7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgfQorICAgICAgICAuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsg
fQorICAgICAgICAucmVkIHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgIC5jb21w
b3NpdGVkIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0KKyAgICA8L3N0eWxl
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQodHJ1ZSk7CisgICAgICAgIGZ1bmN0aW9uIG1vdmVBYnNvbHV0ZURpdigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhYnNvbHV0ZURp
dicpLnN0eWxlLnRvcCA9ICc3MDBweCc7CisgICAgICAgIH0KKyAgICAgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBtb3ZlQWJzb2x1dGVEaXYsIGZhbHNlKTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJoZWlnaHQ6MjAwMHB4OyI+CisgICAgPCEtLSBZb3Ug
c2hvdWxkIHNlZSAxIGdyZWVuIHJlY3RhbmdsZSBpbiB0aGUgb3V0cHV0IGFuZCBubyByZWQuIC0t
PgorICAgIDxkaXYgc3R5bGU9InRvcDogMjAwcHg7IGxlZnQ6IDEwMHB4OyIgY2xhc3M9ImZpeGVk
IHJlZCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYWJzb2x1dGVEaXYiIHN0eWxlPSJ0b3A6IDUwMHB4
OyBsZWZ0OjEwMHB4OyIgY2xhc3M9ImFic29sdXRlIGdyZWVuIGNvbXBvc2l0ZWQiPjwvZGl2Pjwv
ZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCA1MDApOworICAg
IDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50
LWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fic29sdXRlLXBv
c2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBlY3RlZC5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODAxOGYwOGMxMzMzYmRkYWFiZjE2N2YwYTA4MTRmNmM3MWYzYjU2ZgpHSVQg
YmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2MQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZ
VjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4wMWEKeldIVz1MbHdefntSMTVQWWxoaD0w
cWVOMiFRfWJqP1Y+MlU1THhUeTZwUFhjMTtNKHUkO3V1bWY9azFNeW9RRTkqCnpTUkNnVS1nQkNg
ZXNWXkgkfHxLOT5CaX00Yl9AKDlgKSlIY0Z4KyFYVX1RTUxCRjVuMEdzK2taZ3dkMmgkNldBYwp6
eVheemRiRzYmbFpIfm9rd3E8MHZSPFZKQkEmSDViS3x5VmxHNHVpPEojQ3ZnMUgreSFfUiRDJk9+
cz0qY3IrSmAKZjxedTleIThkbDFlQlJabzxoTUJpK3JKRSt1NnsxLW9EIU08IzlqWlAKCmxpdGVy
YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2Fi
c29sdXRlLXBvc2l0aW9uLWNoYW5nZWQtd2l0aC1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFu
Z2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdp
dGgtY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hh
bmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLXdpdGgtY29tcG9zaXRlZC1wYXJlbnQt
bGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2M1ZTRlZmM1NDA4ZTA2OGQ1OTNjN2RhMDQ4YzgzYmUw
Y2JkZDQxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvYWJzb2x1
dGUtcG9zaXRpb24tY2hhbmdlZC13aXRoLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OiBoaWRkZW47IH0KKyAgICAgICAgYm9keSB7IG1h
cmdpbjogMHB4OyB9CisgICAgICAgIGRpdiB7IGhlaWdodDogMTAwcHg7IHdpZHRoOiAxMDBweDsg
fQorICAgICAgICAuZml4ZWQgeyBwb3NpdGlvbjogZml4ZWQ7IH0KKyAgICAgICAgLmFic29sdXRl
IHsgcG9zaXRpb246IGFic29sdXRlOyB9CisgICAgICAgIC5ncmVlbiB7IGJhY2tncm91bmQtY29s
b3I6IGdyZWVuOyB9CisgICAgICAgIC5yZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAg
ICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsgfQor
ICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsKKyAgICAgICAgZnVuY3Rpb24gbW92ZUFic29s
dXRlRGl2KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2Fic29sdXRlRGl2Jykuc3R5bGUudG9wID0gJzcwMHB4JzsKKyAgICAgICAgfQorICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG1vdmVBYnNvbHV0ZURpdiwgZmFsc2UpOwor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9ImhlaWdodDoyMDAwcHg7Ij4KKyAg
ICA8IS0tIFlvdSBzaG91bGQgc2VlIDEgZ3JlZW4gcmVjdGFuZ2xlIGluIHRoZSBvdXRwdXQgYW5k
IG5vIHJlZC4gLS0+CisgICAgPGRpdiBzdHlsZT0idG9wOiAyMDBweDsgbGVmdDogMTAwcHg7IiBj
bGFzcz0iZml4ZWQgcmVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48ZGl2
IGlkPSJhYnNvbHV0ZURpdiIgc3R5bGU9InRvcDogNTAwcHg7IGxlZnQ6MTAwcHg7IiBjbGFzcz0i
YWJzb2x1dGUgZ3JlZW4iPjwvZGl2PjwvZGl2PjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5zY3JvbGxUbygwLCA1MDApOworICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hh
bmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3Rl
ZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODAxOGYwOGMxMzMzYmRkYWFiZjE2N2YwYTA4MTRmNmM3MWYzYjU2
ZgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMjg2MQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+
eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG4wMWEKeldIVz1MbHdefntSMTVQ
WWxoaD0wcWVOMiFRfWJqP1Y+MlU1THhUeTZwUFhjMTtNKHUkO3V1bWY9azFNeW9RRTkqCnpTUkNn
VS1nQkNgZXNWXkgkfHxLOT5CaX00Yl9AKDlgKSlIY0Z4KyFYVX1RTUxCRjVuMEdzK2taZ3dkMmgk
NldBYwp6eVheemRiRzYmbFpIfm9rd3E8MHZSPFZKQkEmSDViS3x5VmxHNHVpPEojQ3ZnMUgreSFf
UiRDJk9+cz0qY3IrSmAKZjxedTleIThkbDFlQlJabzxoTUJpK3JKRSt1NnsxLW9EIU08IzlqWlAK
CmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL2ZpeGVkLXBvc2l0aW9uLWNoYW5nZWQtaW4tY29tcG9zaXRlZC1sYXllci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNv
bXBvc2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5Njky
N2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0
ZWQtbGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU2NmNmY2FiYWI1MTc2ZDYwZDg0NjIyMThhZDMx
ZTkwMWYxYWI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4
ZWQtcG9zaXRpb24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgaHRtbCB7IG92ZXJmbG93OiBoaWRkZW47IH0KKyAgICAgICAgZGl2IHsgaGVpZ2h0OiAxMDBw
eDsgd2lkdGg6IDEwMHB4OyB9CisgICAgICAgIC5maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsgfQor
ICAgICAgICAuZ3JlZW4geyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorICAgICAgICAucmVk
IHsgYmFja2dyb3VuZC1jb2xvcjogcmVkOyB9CisgICAgICAgIC5jb21wb3NpdGVkIHsgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQodHJ1
ZSk7CisgICAgICAgIGZ1bmN0aW9uIG1vdmVGaXhlZERpdigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXhlZERpdicpLnN0eWxlLnRvcCA9ICcyMDBw
eCc7CisgICAgICAgIH0KKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBt
b3ZlRml4ZWREaXYsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxl
PSJoZWlnaHQ6MjAwMHB4OyI+CisgICAgPCEtLSBZb3Ugc2hvdWxkIHNlZSAxIGdyZWVuIHJlY3Rh
bmdsZSBpbiB0aGUgb3V0cHV0IGFuZCBubyByZWQuIC0tPgorICAgIDxkaXYgc3R5bGU9InRvcDog
MjAwcHg7IGxlZnQ6IDEwMHB4OyIgY2xhc3M9ImZpeGVkIHJlZCI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iZml4ZWREaXYiIHN0eWxlPSJ0b3A6IDUwMHB4OyBsZWZ0OjEwMHB4OyIgY2xhc3M9ImZpeGVk
IGdyZWVuIGNvbXBvc2l0ZWQiPjwvZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRo
aW4tY29tcG9zaXRlZC1wYXJlbnQtbGF5ZXItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvZml4ZWQtcG9zaXRpb24tY2hhbmdlZC13aXRoaW4tY29tcG9zaXRlZC1wYXJlbnQt
bGF5ZXItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMThmMDhjMTMzM2JkZGFhYmYxNjdmMGEw
ODE0ZjZjNzFmM2I1NmYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDI4NjEKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RuMDFhCnpX
SFc9TGx3Xn57UjE1UFlsaGg9MHFlTjIhUX1iaj9WPjJVNUx4VHk2cFBYYzE7TSh1JDt1dW1mPWsx
TXlvUUU5Kgp6U1JDZ1UtZ0JDYGVzVl5IJHx8Szk+Qml9NGJfQCg5YCkpSGNGeCshWFV9UU1MQkY1
bjBHcytrWmd3ZDJoJDZXQWMKenlYXnpkYkc2JmxaSH5va3dxPDB2UjxWSkJBJkg1Ykt8eVZsRzR1
aTxKI0N2ZzFIK3khX1IkQyZPfnM9KmNyK0pgCmY8XnU5XiE4ZGwxZUJSWm88aE1CaStySkUrdTZ7
MS1vRCFNPCM5alpQCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVk
LXBhcmVudC1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhl
ZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1sYXllci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJk
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVkLXBvc2l0
aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxIEBACisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ZpeGVk
LXBvc2l0aW9uLWNoYW5nZWQtd2l0aGluLWNvbXBvc2l0ZWQtcGFyZW50LWxheWVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21w
b3NpdGVkLXBhcmVudC1sYXllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjNDYyOTFiZWVhOWZlOWY4YmM5
YjllMDVkY2M3ZTAyMWIzNzZlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9maXhlZC1wb3NpdGlvbi1jaGFuZ2VkLXdpdGhpbi1jb21wb3NpdGVkLXBhcmVudC1s
YXllci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzogaGlkZGVuOyB9CisgICAg
ICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAgICAgICBkaXYgeyBoZWlnaHQ6IDEwMHB4OyB3
aWR0aDogMTAwcHg7IH0KKyAgICAgICAgLmZpeGVkIHsgcG9zaXRpb246IGZpeGVkOyB9CisgICAg
ICAgIC5ncmVlbiB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyB9CisgICAgICAgIC5yZWQgeyBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7IH0KKyAgICAgICAgLmNvbXBvc2l0ZWQgeyAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWigwKTsgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCh0cnVlKTsK
KyAgICAgICAgZnVuY3Rpb24gbW92ZUZpeGVkRGl2KCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpeGVkRGl2Jykuc3R5bGUudG9wID0gJzIwMHB4JzsK
KyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG1vdmVG
aXhlZERpdiwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Imhl
aWdodDoyMDAwcHg7Ij4KKyAgICA8IS0tIFlvdSBzaG91bGQgc2VlIDEgZ3JlZW4gcmVjdGFuZ2xl
IGluIHRoZSBvdXRwdXQgYW5kIG5vIHJlZC4gLS0+CisgICAgPGRpdiBzdHlsZT0idG9wOiAyMDBw
eDsgbGVmdDogMTAwcHg7IiBjbGFzcz0iZml4ZWQgcmVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNz
PSJjb21wb3NpdGVkIj48ZGl2IGlkPSJmaXhlZERpdiIgc3R5bGU9InRvcDogNTAwcHg7IGxlZnQ6
MTAwcHg7IiBjbGFzcz0iZml4ZWQgZ3JlZW4iPjwvZGl2PjwvZGl2PjwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>