<?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>132222</bug_id>
          
          <creation_ts>2014-04-26 17:37:10 -0700</creation_ts>
          <short_desc>Don&apos;t snapshot plugins that are overlaid with images.</short_desc>
          <delta_ts>2014-04-29 16: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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roger Fong">roger_fong</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger_fong</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1004359</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-26 17:37:10 -0700</bug_when>
    <thetext>There seem to many cases where sites essentially do their own form of snapshotting by overlaying an image ontop of a plugin.
When the image is clicked the plugin tries to play, but cannot since it is snapshotted and must be restarted itself.
This fix is so that in the case where an image is roughly overlaid on top of a plugin, the plugin is set to be active.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004360</commentid>
    <comment_count>1</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-26 17:38:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/16653536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004362</commentid>
    <comment_count>2</comment_count>
      <attachid>230248</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-26 18:17:40 -0700</bug_when>
    <thetext>Created attachment 230248
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004363</commentid>
    <comment_count>3</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-26 18:21:04 -0700</bug_when>
    <thetext>I&apos;m not quite sure whether the autoplay should be restricted to only a plugin that meets all the other requirements of a dominant plugin.

That might make more sense but it causes sites like http://www.nytimes.com/projects/2012/snow-fall/?forceredirect=yes to break.
Scroll down a bit and you&apos;ll see a video that is definitely not the dominant plugin, but does have an image overlaid on top of the plugin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004477</commentid>
    <comment_count>4</comment_count>
      <attachid>230248</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-04-27 20:34:13 -0700</bug_when>
    <thetext>Comment on attachment 230248
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4383
&gt; +            

Remove.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4386
&gt; +            

Remove.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4394
&gt; +            inflatedPluginRect.scale(overlappingImageBoundsScale);

Is this correct? This scales both the position and size from the corner, not out from the center.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4402
&gt; +                    continue;

I think the check should be reversed to avoid the awkward else clause

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4407
&gt; +            

Remove.

&gt; LayoutTests/plugins/snapshotting/autoplay-plugin-blocked-by-image.html:13
&gt; +&lt;img src=&quot;../resources/apple.gif&quot; width=&quot;600&quot; height=&quot;600&quot; style=&quot;position:relative; top:-600px;&quot;&gt;

Can we add some more test cases here to handle images that are within the percentages? What happens with transforms? absolute positioned image? Or taking markup inspired by some of the websites we’ve seen issues with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004636</commentid>
    <comment_count>5</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-28 10:29:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4394
&gt; &gt; +            inflatedPluginRect.scale(overlappingImageBoundsScale);
&gt; 
&gt; Is this correct? This scales both the position and size from the corner, not out from the center.

O right, need to translate the rect too.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4402
&gt; &gt; +                    continue;
&gt; 
&gt; I think the check should be reversed to avoid the awkward else clause
&gt; 
ok

&gt; &gt; LayoutTests/plugins/snapshotting/autoplay-plugin-blocked-by-image.html:13
&gt; &gt; +&lt;img src=&quot;../resources/apple.gif&quot; width=&quot;600&quot; height=&quot;600&quot; style=&quot;position:relative; top:-600px;&quot;&gt;
&gt; 
&gt; Can we add some more test cases here to handle images that are within the percentages? What happens with transforms? absolute positioned image? Or taking markup inspired by some of the websites we’ve seen issues with?

Sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004835</commentid>
    <comment_count>6</comment_count>
      <attachid>230351</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-28 19:28:43 -0700</bug_when>
    <thetext>Created attachment 230351
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004967</commentid>
    <comment_count>7</comment_count>
      <attachid>230351</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-29 09:13:59 -0700</bug_when>
    <thetext>Comment on attachment 230351
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4388
&gt; -
&gt; +            

Please don’t add this whitespace.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4391
&gt; -
&gt; +            

Please don’t add this whitespace.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4392
&gt;              Element* element = hitTestResult.innerElement();

If this is guaranteed to be non-null, then it should be an Element&amp; rather than an Element*. If it’s not guaranteed to be non-null, then we need a check for null.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4393
&gt; +            IntRect elementRectRelativeToView = element-&gt;clientRect();

Shouldn’t we be doing this with a function that returns a LayoutRect?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4398
&gt; +            LayoutUnit xOffset = (inflatedPluginRect.width() - plugInRectRelativeToTopDocument.width()) / 2.0;

I don’t think that / 2.0 is a good idea here. I think that means we’ll convert to floating point and back to layout units but we’d rather just do the math as layout units instead.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4406
&gt; +            bool isImageHidingPlugin = isHTMLImageElement(element)
&gt; +                &amp;&amp; inflatedPluginRect.contains(elementRectRelativeToTopDocument)
&gt; +                &amp;&amp; elementRectRelativeToTopDocument.width() &gt; pluginRenderBox.width() * minimumOverlappingImageToPluginDimensionScale
&gt; +                &amp;&amp; elementRectRelativeToTopDocument.height() &gt; pluginRenderBox.height() * minimumOverlappingImageToPluginDimensionScale;

We always compute this, but we only use it inside an if statement. I suggest moving the computation inside the if statement.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4415
&gt; +            

Please don’t add this whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004980</commentid>
    <comment_count>8</comment_count>
      <attachid>230351</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-04-29 09:30:21 -0700</bug_when>
    <thetext>Comment on attachment 230351
patch

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

It would be nice to include some logging so that it is easy to see what’s happening if we turn the channel on.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4388
&gt; +            

Please remove the extraneous whitespace sprinkled throughout this patch.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4401
&gt; +            inflatedPluginRect.setY(inflatedPluginRect.y() - yOffset);

Isn’t this what inflate() is for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004981</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2014-04-29 09:31:12 -0700</bug_when>
    <thetext>whoops, i didn’t realize that affected the r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005054</commentid>
    <comment_count>10</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-29 12:25:59 -0700</bug_when>
    <thetext>
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4393
&gt; &gt; +            IntRect elementRectRelativeToView = element-&gt;clientRect();
&gt; 
&gt; Shouldn’t we be doing this with a function that returns a LayoutRect?
&gt; 

Said function does not exist yet. I talked to smfr about it and he said that clientRect needs to be converted from using IntRects to LayoutRects, which seems to be a separate bug, which I may attempt to fix or give to zalan to fix :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005068</commentid>
    <comment_count>11</comment_count>
      <attachid>230404</attachid>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-29 12:48:08 -0700</bug_when>
    <thetext>Created attachment 230404
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1005154</commentid>
    <comment_count>12</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2014-04-29 15:12:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; whoops, i didn’t realize that affected the r+.

Given this, 

committed http://trac.webkit.org/changeset/167960,

with fixes applied.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230248</attachid>
            <date>2014-04-26 18:17:40 -0700</date>
            <delta_ts>2014-04-28 19:28:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9084</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTI2ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkg
aW1hZ2VzIHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IHBsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBBZGQgZXhwb3J0cyBuZWVkZWQgYnkgV0sy
LgorCiAyMDE0LTA0LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTSU9OIChyMTY0MTMzKTogU2VsZWN0aW9uIGRvZXNuJ3QgcGFpbnQgd2hlbiBzY3Jv
bGxpbmcgc29tZSBwYWdlcwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2Nzg0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03
Nyw2ICs3Nyw4IEBAIF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLTlNfOEludFBvaW4KIF9f
Wk43V2ViQ29yZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKIF9fWk43V2ViQ29yZTEw
SlNEb2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmUxMExheW91dFJlY3RDMUVSS05TXzlGbG9h
dFJlY3RFCitfX1pON1dlYkNvcmUxMExheW91dFJlY3Q1c2NhbGVFZgorX19aTks3V2ViQ29yZTEw
TGF5b3V0UmVjdDhjb250YWluc0VSS1MwXwogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50NmNyZWF0
ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVF
UktOU18xOFBsYXRmb3JtTW91c2VFdmVudEVpTlM1X0lOU180Tm9kZUVFRQogX19aTjdXZWJDb3Jl
MTBNb3VzZUV2ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJkTlMxXzEwUGFzc1Jl
ZlB0cklOU185RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5T
NV9JTlNfMTJEYXRhVHJhbnNmZXJFRUViCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxNHdyaXRl
UGxhaW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNtYXJ0UmVwbGFjZU9wdGlvbkUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg0OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI2ICBSb2dlciBGb25nICA8
cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkgaW1hZ2Vz
IHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1p
bmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICBJZiB0aGUgaW1hZ2Ugb24gdG9w
IG9mIHRoZSBwbHVnaW4gaXMgc2ltaWxhcmx5IHNpemVkIGFuZCBzaW1pbGFybHkgcG9zaXRpb25l
ZCBhcyB0aGUgcGx1Z2luIHJlY3QsCisgICAgICAgIHNldCB0aGUgcGx1Z2luIHRvIGF1dG9wbGF5
LiBUaGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIHByZXZpb3VzIHNuYXBzaG90IGNoZWNrcyBoYXZl
IHBhc3NlZCBhcyB3ZWxsLgorCiAyMDE0LTA0LTI2ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZW5hbWUgYSBidW5kbGUgZm9ybSBkZWxlZ2F0ZSBt
ZXRob2QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDE2Nzg0OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMwNSw2ICs0MzA1LDggQEAgc3Rh
dGljIGludCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5pbQogc3RhdGljIGludCBwcmltYXJ5
U25hcHNob3R0ZWRQbHVnSW5NaW5pbXVtSGVpZ2h0ID0gMzAwOwogc3RhdGljIHVuc2lnbmVkIG1h
eFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbkRldGVjdGlvbkF0dGVtcHRzID0gMjsKIHN0YXRpYyBp
bnQgZGVmZXJyZWRQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5EZXRlY3Rpb25EZWxheSA9IDM7Citz
dGF0aWMgaW50IG92ZXJsYXBwaW5nSW1hZ2VCb3VuZHNTY2FsZSA9IDEuMTsKK3N0YXRpYyBpbnQg
bWluaW11bU92ZXJsYXBwaW5nSW1hZ2VUb1BsdWdpbkRpbWVuc2lvblNjYWxlID0gLjk7CiAKICNp
ZiBFTkFCTEUoUFJJTUFSWV9TTkFQU0hPVFRFRF9QTFVHSU5fSEVVUklTVElDKQogdm9pZCBXZWJQ
YWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKCkKQEAgLTQz
NjYsNiArNDM2OCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRl
CiAgICAgICAgICAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50LmRpc3BsYXlTdGF0ZSgpID09IEhU
TUxQbHVnSW5FbGVtZW50OjpQbGF5aW5nKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCisg
ICAgICAgICAgICBhdXRvIHBsdWdpblJlbmRlcmVyID0gcGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRl
cmVyKCk7CisgICAgICAgICAgICBpZiAoIXBsdWdpblJlbmRlcmVyIHx8ICFwbHVnaW5SZW5kZXJl
ci0+aXNCb3goKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8m
IHBsdWdpblJlbmRlckJveCA9IHRvUmVuZGVyQm94KCpwbHVnaW5SZW5kZXJlcik7CisgICAgICAg
ICAgICAKICAgICAgICAgICAgIEludFJlY3QgcGx1Z0luUmVjdFJlbGF0aXZlVG9WaWV3ID0gcGx1
Z0luSW1hZ2VFbGVtZW50LmNsaWVudFJlY3QoKTsKICAgICAgICAgICAgIGlmIChwbHVnSW5SZWN0
UmVsYXRpdmVUb1ZpZXcuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NDM3MywyMiArNDM4MCwzMiBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hv
dHRlCiAgICAgICAgICAgICBJbnRSZWN0IHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQo
cGx1Z0luUmVjdFJlbGF0aXZlVG9WaWV3LmxvY2F0aW9uKCkgKyBzY3JvbGxPZmZzZXQsIHBsdWdJ
blJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCFwbHVnSW5SZWN0
UmVsYXRpdmVUb1RvcERvY3VtZW50LmludGVyc2VjdHMoc2VhcmNoUmVjdCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgSGl0VGVzdFJlc3Vs
dCBoaXRUZXN0UmVzdWx0KHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCkp
OwogICAgICAgICAgICAgbWFpblJlbmRlclZpZXcuaGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVz
dWx0KTsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gaGl0
VGVzdFJlc3VsdC5pbm5lckVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChlbGVtZW50ICE9ICZw
bHVnSW5JbWFnZUVsZW1lbnQpCisgICAgICAgICAgICBhdXRvIGVsZW1lbnRSZW5kZXJlciA9IGVs
ZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBpZiAoIWVsZW1lbnRSZW5kZXJlciB8fCAh
ZWxlbWVudFJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICBhdXRvIHJlbmRlcmVyID0gcGx1Z0luSW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7
Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IHRvUmVu
ZGVyQm94KCpyZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAocmVuZGVyQm94LmNvbnRlbnRXaWR0
aCgpIDwgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bVdpZHRoIHx8IHJlbmRlckJveC5j
b250ZW50SGVpZ2h0KCkgPCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5pbXVtSGVpZ2h0KQor
ICAgICAgICAgICAgYXV0byYgZWxlbWVudFJlbmRlckJveCA9IHRvUmVuZGVyQm94KCplbGVtZW50
UmVuZGVyZXIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMYXlvdXRSZWN0IGluZmxhdGVk
UGx1Z2luUmVjdCA9IGVsZW1lbnRSZW5kZXJCb3guY29udGVudEJveFJlY3QoKTsKKyAgICAgICAg
ICAgIGluZmxhdGVkUGx1Z2luUmVjdC5zY2FsZShvdmVybGFwcGluZ0ltYWdlQm91bmRzU2NhbGUp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBib29sIGlzSW1hZ2VIaWRpbmdQbHVnaW4gPSBp
c0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgaW5mbGF0ZWRQbHVnaW5SZWN0LmNvbnRhaW5z
KGVsZW1lbnRSZW5kZXJCb3guY29udGVudEJveFJlY3QoKSkgJiYgZWxlbWVudFJlbmRlckJveC53
aWR0aCgpID4gcGx1Z2luUmVuZGVyQm94LndpZHRoKCkgKiBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFn
ZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUgJiYgZWxlbWVudFJlbmRlckJveC5oZWlnaHQoKSA+IHBs
dWdpblJlbmRlckJveC5oZWlnaHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5E
aW1lbnNpb25TY2FsZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0g
JnBsdWdJbkltYWdlRWxlbWVudCkgeworICAgICAgICAgICAgICAgIGlmIChpc0ltYWdlSGlkaW5n
UGx1Z2luKQorICAgICAgICAgICAgICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQucmVzdGFydFNu
YXBzaG90dGVkUGx1Z0luKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKHBsdWdpblJlbmRlckJveC5jb250ZW50V2lkdGgoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBs
dWdJbk1pbmltdW1XaWR0aCB8fCBwbHVnaW5SZW5kZXJCb3guY29udGVudEhlaWdodCgpIDwgcHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhlaWdodCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50QXJlYSA9IHJlbmRlckJveC5j
b250ZW50V2lkdGgoKSAqIHJlbmRlckJveC5jb250ZW50SGVpZ2h0KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEFyZWEgPSBwbHVnaW5SZW5kZXJCb3guY29u
dGVudFdpZHRoKCkgKiBwbHVnaW5SZW5kZXJCb3guY29udGVudEhlaWdodCgpOwogICAgICAgICAg
ICAgaWYgKGNvbnRlbnRBcmVhID4gY2FuZGlkYXRlUGx1Z0luQXJlYSAqIHByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJblNlYXJjaEJ1Y2tldFNpemUpIHsKICAgICAgICAgICAgICAgICBjYW5kaWRhdGVQ
bHVnSW4gPSAmcGx1Z0luSW1hZ2VFbGVtZW50OwogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVBs
dWdJbkFyZWEgPSBjb250ZW50QXJlYTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg0OCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0
LTA0LTI2ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1
Z2lucyBoaWRkZW4gYnkgaW1hZ2VzIHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzE2NjUzNTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0
bWw6IEFkZGVkLgorCiAyMDE0LTA0LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMTY0MTMzKTogU2VsZWN0aW9uIGRvZXNuJ3QgcGFpbnQg
d2hlbiBzY3JvbGxpbmcgc29tZSBwYWdlcwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFn
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACitsYXllciBhdCAoMCww
KSBzaXplIDc4NXgxMjU0CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDc4NXgxMjU0CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDc4NXgxMjU0CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4MTIz
OAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU4OHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDU4ODogIlRoaXMgdGVzdCdzIGRvbWluYW50IHBsdWdpbiBzaG91bGQg
cGxheSBhdXRvbWF0aWNhbGx5IGV2ZW4gaWYgYW4gaW1hZ2UgaXMgb24gdG9wIG9mIHRoZSBwbHVn
aW4uIgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzY5eDEy
MDQKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MDAsNTg2KSBzaXplIDR4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoNjAwLDU4Nikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDgsNDIpIHNpemUgNjAw
eDYwMAorICBSZW5kZXJFbWJlZGRlZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNpemUgNjAweDYw
MAorbGF5ZXIgYXQgKDgsNDYpIHNpemUgNjAweDYwMAorICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAo
MCw2MDQpIHNpemUgNjAweDYwMApJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1i
eS1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hv
dHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8cD5UaGlzIHRlc3QncyBkb21pbmFudCBwbHVnaW4gc2hvdWxk
IHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlmIGFuIGltYWdlIGlzIG9uIHRvcCBvZiB0aGUgcGx1
Z2luLjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Cisg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRl
bXB0cygxKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwg
MTAwMCk7Cit9Cis8L3NjcmlwdD4KKzxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2Yi
IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgorPGltZyBzcmM9Ii4uL3Jlc291cmNl
cy9hcHBsZS5naWYiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246cmVs
YXRpdmU7IHRvcDotNjAwcHg7Ij4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230351</attachid>
            <date>2014-04-28 19:28:43 -0700</date>
            <delta_ts>2014-04-29 12:48:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imageoverlaypatch.patch</filename>
            <type>text/plain</type>
            <size>16286</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTI4ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkg
aW1hZ2VzIHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IHBsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBBZGQgZXhwb3J0cyBuZWVkZWQgYnkgV0sy
LgorCiAyMDE0LTA0LTI3ICBQcmF2ZWVuIFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gLmVuZGVkIHNob3VsZG4ndCBiZSBwYXJ0IG9mIE1l
ZGlhU3RyZWFtIElETApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2Nzg2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2
ICs3Nyw4IEBAIF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLTlNfOEludFBvaW4KIF9fWk43
V2ViQ29yZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKIF9fWk43V2ViQ29yZTEwSlNE
b2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmUxMExheW91dFJlY3RDMUVSS05TXzlGbG9hdFJl
Y3RFCitfX1pON1dlYkNvcmUxMExheW91dFJlY3Q1c2NhbGVFZgorX19aTks3V2ViQ29yZTEwTGF5
b3V0UmVjdDhjb250YWluc0VSS1MwXwogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50NmNyZWF0ZUVS
S04zV1RGMTJBdG9taWNTdHJpbmdFTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVFUktO
U18xOFBsYXRmb3JtTW91c2VFdmVudEVpTlM1X0lOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlMTBN
b3VzZUV2ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJkTlMxXzEwUGFzc1JlZlB0
cklOU185RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9J
TlNfMTJEYXRhVHJhbnNmZXJFRUViCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxNHdyaXRlUGxh
aW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNtYXJ0UmVwbGFjZU9wdGlvbkUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE2Nzg2OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI4ICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkgaW1hZ2VzIHNo
b3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICBJZiB0aGUgaW1hZ2Ugb24gdG9wIG9m
IHRoZSBwbHVnaW4gaXMgc2ltaWxhcmx5IHNpemVkIGFuZCBzaW1pbGFybHkgcG9zaXRpb25lZCBh
cyB0aGUgcGx1Z2luIHJlY3QsCisgICAgICAgIHNldCB0aGUgcGx1Z2luIHRvIGF1dG9wbGF5LiBU
aGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIHByZXZpb3VzIHNuYXBzaG90IGNoZWNrcyBoYXZlIHBh
c3NlZCBhcyB3ZWxsLgorCiAyMDE0LTA0LTI3ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBUb3VjaEV2ZW50IGlzIG5vdCBoYW5kbGVkIGFmdGVyIHJlbGVh
c2luZyBhbnkgcG9pbnQgYW1vbmcgdG91Y2hlZCBwb2ludHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjc4NjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzMTEsNiArNDMxMSw4IEBAIHN0YXRpYyBpbnQgcHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luTWluaW0KIHN0YXRpYyBpbnQgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhl
aWdodCA9IDMwMDsKIHN0YXRpYyB1bnNpZ25lZCBtYXhQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5E
ZXRlY3Rpb25BdHRlbXB0cyA9IDI7CiBzdGF0aWMgaW50IGRlZmVycmVkUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luRGV0ZWN0aW9uRGVsYXkgPSAzOworc3RhdGljIGZsb2F0IG92ZXJsYXBwaW5nSW1h
Z2VCb3VuZHNTY2FsZSA9IDEuMTsKK3N0YXRpYyBmbG9hdCBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFn
ZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUgPSAuOTsKIAogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCiB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQoKQpAQCAtNDM3Miw2ICs0Mzc0LDEwIEBAIHZvaWQg
V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGUKICAgICAgICAgICAgIGlmIChwbHVn
SW5JbWFnZUVsZW1lbnQuZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlp
bmcpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgIGF1dG8gcGx1Z2lu
UmVuZGVyZXIgPSBwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlm
ICghcGx1Z2luUmVuZGVyZXIgfHwgIXBsdWdpblJlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byYgcGx1Z2luUmVuZGVyQm94ID0gdG9S
ZW5kZXJCb3goKnBsdWdpblJlbmRlcmVyKTsKICAgICAgICAgICAgIEludFJlY3QgcGx1Z0luUmVj
dFJlbGF0aXZlVG9WaWV3ID0gcGx1Z0luSW1hZ2VFbGVtZW50LmNsaWVudFJlY3QoKTsKICAgICAg
ICAgICAgIGlmIChwbHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtNDM3OSwyMiArNDM4NSwzNSBAQCB2b2lkIFdlYlBhZ2U6OmRl
dGVybWluZVByaW1hcnlTbmFwc2hvdHRlCiAgICAgICAgICAgICBJbnRSZWN0IHBsdWdJblJlY3RS
ZWxhdGl2ZVRvVG9wRG9jdW1lbnQocGx1Z0luUmVjdFJlbGF0aXZlVG9WaWV3LmxvY2F0aW9uKCkg
KyBzY3JvbGxPZmZzZXQsIHBsdWdJblJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwogICAgICAg
ICAgICAgaWYgKCFwbHVnSW5SZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LmludGVyc2VjdHMoc2Vh
cmNoUmVjdCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0KHBsdWdJblJlY3RSZWxhdGl2ZVRv
VG9wRG9jdW1lbnQuY2VudGVyKCkpOwogICAgICAgICAgICAgbWFpblJlbmRlclZpZXcuaGl0VGVz
dChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0KTsKLQorICAgICAgICAgICAgCiAgICAgICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gaGl0VGVzdFJlc3VsdC5pbm5lckVsZW1lbnQoKTsKLSAgICAgICAg
ICAgIGlmIChlbGVtZW50ICE9ICZwbHVnSW5JbWFnZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBwbHVnSW5JbWFnZUVsZW1l
bnQucmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5p
c0JveCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byYgcmVu
ZGVyQm94ID0gdG9SZW5kZXJCb3goKnJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJC
b3guY29udGVudFdpZHRoKCkgPCBwcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5NaW5pbXVtV2lkdGgg
fHwgcmVuZGVyQm94LmNvbnRlbnRIZWlnaHQoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1p
bmltdW1IZWlnaHQpCisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Zp
ZXcgPSBlbGVtZW50LT5jbGllbnRSZWN0KCk7CisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRS
ZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KGVsZW1lbnRSZWN0UmVsYXRpdmVUb1ZpZXcubG9jYXRp
b24oKSArIHNjcm9sbE9mZnNldCwgZWxlbWVudFJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBMYXlvdXRSZWN0IGluZmxhdGVkUGx1Z2luUmVjdCA9
IHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQ7CisgICAgICAgICAgICBpbmZsYXRlZFBs
dWdpblJlY3Quc2NhbGUob3ZlcmxhcHBpbmdJbWFnZUJvdW5kc1NjYWxlKTsKKyAgICAgICAgICAg
IExheW91dFVuaXQgeE9mZnNldCA9IChpbmZsYXRlZFBsdWdpblJlY3Qud2lkdGgoKSAtIHBsdWdJ
blJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQud2lkdGgoKSkgLyAyLjA7CisgICAgICAgICAgICBM
YXlvdXRVbml0IHlPZmZzZXQgPSAoaW5mbGF0ZWRQbHVnaW5SZWN0LmhlaWdodCgpIC0gcGx1Z0lu
UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWlnaHQoKSkgLyAyLjA7CisgICAgICAgICAgICBp
bmZsYXRlZFBsdWdpblJlY3Quc2V0WChpbmZsYXRlZFBsdWdpblJlY3QueCgpIC0geE9mZnNldCk7
CisgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3Quc2V0WShpbmZsYXRlZFBsdWdpblJlY3Qu
eSgpIC0geU9mZnNldCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2wgaXNJbWFnZUhp
ZGluZ1BsdWdpbiA9IGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAg
ICYmIGluZmxhdGVkUGx1Z2luUmVjdC5jb250YWlucyhlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BE
b2N1bWVudCkKKyAgICAgICAgICAgICAgICAmJiBlbGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1
bWVudC53aWR0aCgpID4gcGx1Z2luUmVuZGVyQm94LndpZHRoKCkgKiBtaW5pbXVtT3ZlcmxhcHBp
bmdJbWFnZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUKKyAgICAgICAgICAgICAgICAmJiBlbGVtZW50
UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC5oZWlnaHQoKSA+IHBsdWdpblJlbmRlckJveC5oZWln
aHQoKSAqIG1pbmltdW1PdmVybGFwcGluZ0ltYWdlVG9QbHVnaW5EaW1lbnNpb25TY2FsZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT0gJnBsdWdJbkltYWdlRWxlbWVu
dCkgeworICAgICAgICAgICAgICAgIGlmICghaXNJbWFnZUhpZGluZ1BsdWdpbikKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50
LnJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHBsdWdpblJlbmRlckJveC5jb250ZW50V2lkdGgoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBs
dWdJbk1pbmltdW1XaWR0aCB8fCBwbHVnaW5SZW5kZXJCb3guY29udGVudEhlaWdodCgpIDwgcHJp
bWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhlaWdodCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50QXJlYSA9IHJlbmRlckJveC5j
b250ZW50V2lkdGgoKSAqIHJlbmRlckJveC5jb250ZW50SGVpZ2h0KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEFyZWEgPSBwbHVnaW5SZW5kZXJCb3guY29u
dGVudFdpZHRoKCkgKiBwbHVnaW5SZW5kZXJCb3guY29udGVudEhlaWdodCgpOwogICAgICAgICAg
ICAgaWYgKGNvbnRlbnRBcmVhID4gY2FuZGlkYXRlUGx1Z0luQXJlYSAqIHByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJblNlYXJjaEJ1Y2tldFNpemUpIHsKICAgICAgICAgICAgICAgICBjYW5kaWRhdGVQ
bHVnSW4gPSAmcGx1Z0luSW1hZ2VFbGVtZW50OwogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVBs
dWdJbkFyZWEgPSBjb250ZW50QXJlYTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzkyMCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE0
LTA0LTI4ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1
Z2lucyBoaWRkZW4gYnkgaW1hZ2VzIHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzE2NjUzNTM2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1v
c3RseS1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1
aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9z
dGx5LWJsb2NrZWQtYnktaW1hZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9zbmFw
c2hvdHRpbmcvc25hcHNob3QtcGx1Z2luLW5vdC1xdWl0ZS1ibG9ja2VkLWJ5LWltYWdlLmh0bWw6
IEFkZGVkLgorCiAyMDE0LTA0LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIENTUyBKSVQ6IGJhY2t0cmFja2luZyB3aXRoIGN1cnJlbnQgLyBwYXJl
bnQgZWxlbWVudCBmb3IgY2hpbGQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1
Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA3ODV4MTI1NAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA3ODV4MTI1NAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3
ODV4MTI1NAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDEyMzgKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2MjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA2MjM6ICJUaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVnaW4gc2hvdWxk
IHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlmIGFuIGltYWdlIGlzIG9uIHRvcCBvZiB0aGUgcGx1
Z2luLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDM0KSBzaXplIDc2OXgx
MjA0CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjAwLDU4Nikgc2l6ZSA0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDYwMCw1ODYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKK2xheWVyIGF0ICg4LDQyKSBzaXplIDYw
MHg2MDAKKyAgUmVuZGVyRW1iZWRkZWRPYmplY3Qge0VNQkVEfSBhdCAoMCwwKSBzaXplIDYwMHg2
MDAKK2xheWVyIGF0ICg4LDQ2KSBzaXplIDYwMHg2MDAKKyAgUmVuZGVySW1hZ2Uge0lNR30gYXQg
KDAsNjA0KSBzaXplIDYwMHg2MDAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2VkLWJ5LWlt
YWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1i
eS1pbWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxv
Y2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjUwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6
ZSA3ODV4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg2NTAKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgNzg1eDY1MAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzY5eDYzNAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDYzNXgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDYzNTogIlRoaXMgdGVzdHMgdGhhdCBhIGRvbWlu
YW50IHBsdWdpbiBzaG91bGQgcGxheSBhdXRvbWF0aWNhbGx5IGlmIGFuIGltYWdlIGlzIG1vc3Rs
eSBvbiB0b3Agb2YgdGhlIHBsdWdpbi4iCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBh
dCAoMCwzNCkgc2l6ZSA3Njl4NjAwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDB4MAorbGF5ZXIgYXQgKDgsNDIpIHNpemUgNjAweDYwMAorICBSZW5kZXJFbWJlZGRl
ZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNpemUgNjAweDYwMAorbGF5ZXIgYXQgKDAsMjApIHNp
emUgNjAweDYwMAorICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMCwyMCkgc2l6ZSA2MDB4NjAwCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3Nu
YXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90
dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2Ut
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgNzg1eDIyMTQKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgNzg1eDIyMTQKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgNzg1eDIyMTQKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXgy
MTk4CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MzYKKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzE5eDM2CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzE5OiAiVGhpcyB0ZXN0cyB0aGF0IGEgcGx1Z2luIHNob3VsZCBi
ZSBzbmFwc2hvdHRlZCBpZiBpdCBpcyBwYXJ0aWFsbHkgY292ZXJlZCBieSBhbiBpbWFnZSBidXQg
bm90IGVub3VnaCB0byBiZSBjb25zaWRlcmVkIgorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4
KSB3aWR0aCA1OTogImJsb2NraW5nLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw1Mikg
c2l6ZSA3Njl4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzUz
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzUzOiAiSXQgYWRkaXRpb25h
bGx5IHRlc3RzIHRoYXQgd2UgdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4iCisgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw4Nikgc2l6ZSA3Njl4MjExMgorICAgICAgICBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiB7RU1CRUR9IGF0ICgwLDApIHNpemUgNjAweDYwMAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYwMCw1ODYpIHNpemUgNHgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICg2MDAsNTg2KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICg2MDAsMTE5MCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDYw
MCwxMTkwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ge0VN
QkVEfSBhdCAoMCwxMjA4KSBzaXplIDYwMHg2MDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICg2MDAsMTc5NCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDYwMCwxNzk0
KSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MHgwCitsYXllciBhdCAoOCw5NCkgc2l6ZSA2MDB4NjAwCisgIFJlbmRlckJsb2NrIChyZWxhdGl2
ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDYwMHg2MDAKK2xheWVyIGF0ICgxMyw5
OSkgc2l6ZSA1OTB4NTkwCisgIFJlbmRlckZsZXhpYmxlQm94IHtESVZ9IGF0ICg1LDUpIHNpemUg
NTkweDU5MCBbYmdjb2xvcj0jRkZGRkZGQkZdCisgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIy
NSwyNzcpIHNpemUgMTQweDM2CitsYXllciBhdCAoMjM5LDM3Nikgc2l6ZSAxMzl4MTgKKyAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMzl4MTgKKyAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxMzl4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEz
OTogIlNuYXBzaG90dGVkIFBsdWctSW4iCitsYXllciBhdCAoMjM5LDM5NCkgc2l6ZSAxMzl4MTgK
KyAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgMTM5eDE4IFtjb2xvcj0jNDQ0NDQ0
XQorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDk0eDE4CisgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA5NDogIkNsaWNrIHRvIHJlc3RhcnQiCitsYXllciBhdCAoOCwx
NzMpIHNpemUgNjAweDYwMAorICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMCw2MDQpIHNpemUgNjAw
eDYwMAorbGF5ZXIgYXQgKDgsMTMwMikgc2l6ZSA2MDB4NjAwCisgIFJlbmRlckJsb2NrIChyZWxh
dGl2ZSBwb3NpdGlvbmVkKSB7RElWfSBhdCAoMCwwKSBzaXplIDYwMHg2MDAKK2xheWVyIGF0ICgx
MywxMzA3KSBzaXplIDU5MHg1OTAKKyAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDUsNSkg
c2l6ZSA1OTB4NTkwIFtiZ2NvbG9yPSNGRkZGRkZCRl0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMjI1LDI3Nykgc2l6ZSAxNDB4MzYKK2xheWVyIGF0ICgyMzksMTU4NCkgc2l6ZSAxMzl4MTgK
KyAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSAxMzl4MTgKKyAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMzl4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDEzOTogIlNuYXBzaG90dGVkIFBsdWctSW4iCitsYXllciBhdCAoMjM5LDE2MDIpIHNpemUg
MTM5eDE4CisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDEzOXgxOCBbY29sb3I9
IzQ0NDQ0NF0KKyAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA5NHgxOAorICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggOTQ6ICJDbGljayB0byByZXN0YXJ0IgorbGF5ZXIg
YXQgKDgsMTkwNikgc2l6ZSAzMDB4MzAwCisgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDE4MTIp
IHNpemUgMzAweDMwMApJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0
b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFn
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
YXV0b3BsYXktcGx1Z2luLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEzIEBACis8cD5UaGlzIHRlc3RzIHRoYXQgYSBkb21pbmFudCBwbHVnaW4gc2hvdWxk
IHBsYXkgYXV0b21hdGljYWxseSBldmVuIGlmIGFuIGltYWdlIGlzIG9uIHRvcCBvZiB0aGUgcGx1
Z2luLjwvcD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7Cisg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRl
bXB0cygwKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwg
MTAwMCk7Cit9Cis8L3NjcmlwdD4KKzxlbWJlZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2Yi
IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48L2VtYmVkPgorPGltZyBzcmM9Ii4uL3Jlc291cmNl
cy9hcHBsZS5naWYiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246cmVs
YXRpdmU7IHRvcDotNjAwcHg7Ij4KSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0
aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHktYmxvY2tlZC1ieS1pbWFnZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1t
b3N0bHktYmxvY2tlZC1ieS1pbWFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2VkLWJ5LWlt
YWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPHA+VGhpcyB0ZXN0cyB0
aGF0IGEgZG9taW5hbnQgcGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgaWYgYW4gaW1h
Z2UgaXMgbW9zdGx5IG9uIHRvcCBvZiB0aGUgcGx1Z2luLjwvcD4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFBsdWdJ
blNuYXBzaG90dGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRNYXhpbXVtUGx1Z0luU25hcHNob3RBdHRlbXB0cygwKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSwgMTAwMCk7Cit9Cis8L3NjcmlwdD4KKzxlbWJl
ZCBzcmM9Ii4uL3Jlc291cmNlcy9saW5lcy5zd2YiIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48
L2VtYmVkPgorPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hcHBsZS5naWYiIHdpZHRoPSI2MDAiIGhl
aWdodD0iNjAwIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IHRvcDoyMHB4OyBsZWZ0OjBweCI+
CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4t
bm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbHVnaW5zL3NuYXBzaG90dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQt
YnktaW1hZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNo
b3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKKzxwPlRoaXMgdGVzdHMgdGhhdCBhIHBsdWdp
biBzaG91bGQgYmUgc25hcHNob3R0ZWQgaWYgaXQgaXMgcGFydGlhbGx5IGNvdmVyZWQgYnkgYW4g
aW1hZ2UgYnV0IG5vdCBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBibG9ja2luZy48L3A+Cis8cD4g
SXQgYWRkaXRpb25hbGx5IHRlc3RzIHRoYXQgd2UgdGFrZSB0cmFuc2Zvcm1zIGludG8gYWNjb3Vu
dC4gPC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVt
cHRzKDApOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAx
MDAwKTsKK30KKzwvc2NyaXB0PgorPGVtYmVkIHNyYz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIg
d2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2Vz
L2FwcGxlLmdpZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjpyZWxh
dGl2ZTsgdG9wOi01MjVweDsgbGVmdDowcHgiPgorPGVtYmVkIHNyYz0iLi4vcmVzb3VyY2VzL2xp
bmVzLnN3ZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Cis8aW1nIHNyYz0iLi4v
cmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIzMDAiIHN0eWxlPSItd2Vi
a2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwMHB4LC0yMDBweCkiPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230404</attachid>
            <date>2014-04-29 12:48:08 -0700</date>
            <delta_ts>2014-04-29 16:43:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>imageoverlaypatch.patch</filename>
            <type>text/plain</type>
            <size>16054</size>
            <attacher name="Roger Fong">roger_fong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Nzg2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTA0LTI4ICBSb2dlciBG
b25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkg
aW1hZ2VzIHNob3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IHBsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0
bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBBZGQgZXhwb3J0cyBuZWVkZWQgYnkgV0sy
LgorCiAyMDE0LTA0LTI3ICBQcmF2ZWVuIFIgSmFkaGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gLmVuZGVkIHNob3VsZG4ndCBiZSBwYXJ0IG9mIE1l
ZGlhU3RyZWFtIElETApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2Nzg2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2
ICs3Nyw4IEBAIF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLTlNfOEludFBvaW4KIF9fWk43
V2ViQ29yZTEwRm9udEdseXBoczE1cmVsZWFzZUZvbnREYXRhRXYKIF9fWk43V2ViQ29yZTEwSlNE
b2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmUxMExheW91dFJlY3RDMUVSS05TXzlGbG9hdFJl
Y3RFCitfX1pON1dlYkNvcmUxMExheW91dFJlY3Q1c2NhbGVFZgorX19aTks3V2ViQ29yZTEwTGF5
b3V0UmVjdDhjb250YWluc0VSS1MwXwogX19aTjdXZWJDb3JlMTBNb3VzZUV2ZW50NmNyZWF0ZUVS
S04zV1RGMTJBdG9taWNTdHJpbmdFTlMxXzEwUGFzc1JlZlB0cklOU185RE9NV2luZG93RUVFUktO
U18xOFBsYXRmb3JtTW91c2VFdmVudEVpTlM1X0lOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlMTBN
b3VzZUV2ZW50NmNyZWF0ZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFYmJkTlMxXzEwUGFzc1JlZlB0
cklOU185RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9J
TlNfMTJEYXRhVHJhbnNmZXJFRUViCiBfX1pON1dlYkNvcmUxMFBhc3RlYm9hcmQxNHdyaXRlUGxh
aW5UZXh0RVJLTjNXVEY2U3RyaW5nRU5TMF8xOFNtYXJ0UmVwbGFjZU9wdGlvbkUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE2Nzg2OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTI4ICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGx1Z2lucyBoaWRkZW4gYnkgaW1hZ2VzIHNo
b3VsZCBhdXRvcGxheS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMjIyMi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NjUzNTM2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICBJZiB0aGUgaW1hZ2Ugb24gdG9wIG9m
IHRoZSBwbHVnaW4gaXMgc2ltaWxhcmx5IHNpemVkIGFuZCBzaW1pbGFybHkgcG9zaXRpb25lZCBh
cyB0aGUgcGx1Z2luIHJlY3QsCisgICAgICAgIHNldCB0aGUgcGx1Z2luIHRvIGF1dG9wbGF5LiBU
aGlzIGlzIGFzc3VtaW5nIHRoYXQgdGhlIHByZXZpb3VzIHNuYXBzaG90IGNoZWNrcyBoYXZlIHBh
c3NlZCBhcyB3ZWxsLgorCiAyMDE0LTA0LTI3ICBFdW5taSBMZWUgIDxldW5taTE1LmxlZUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBUb3VjaEV2ZW50IGlzIG5vdCBoYW5kbGVkIGFmdGVyIHJlbGVh
c2luZyBhbnkgcG9pbnQgYW1vbmcgdG91Y2hlZCBwb2ludHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNjc4NjgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzMTEsNiArNDMxMSw4IEBAIHN0YXRpYyBpbnQgcHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luTWluaW0KIHN0YXRpYyBpbnQgcHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luTWluaW11bUhl
aWdodCA9IDMwMDsKIHN0YXRpYyB1bnNpZ25lZCBtYXhQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5E
ZXRlY3Rpb25BdHRlbXB0cyA9IDI7CiBzdGF0aWMgaW50IGRlZmVycmVkUHJpbWFyeVNuYXBzaG90
dGVkUGx1Z0luRGV0ZWN0aW9uRGVsYXkgPSAzOworc3RhdGljIGZsb2F0IG92ZXJsYXBwaW5nSW1h
Z2VCb3VuZHNTY2FsZSA9IDEuMTsKK3N0YXRpYyBmbG9hdCBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFn
ZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUgPSAuOTsKIAogI2lmIEVOQUJMRShQUklNQVJZX1NOQVBT
SE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMpCiB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlT
bmFwc2hvdHRlZFBsdWdJblRpbWVyRmlyZWQoKQpAQCAtNDM3Miw2ICs0Mzc0LDEwIEBAIHZvaWQg
V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGUKICAgICAgICAgICAgIGlmIChwbHVn
SW5JbWFnZUVsZW1lbnQuZGlzcGxheVN0YXRlKCkgPT0gSFRNTFBsdWdJbkVsZW1lbnQ6OlBsYXlp
bmcpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgIGF1dG8gcGx1Z2lu
UmVuZGVyZXIgPSBwbHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlm
ICghcGx1Z2luUmVuZGVyZXIgfHwgIXBsdWdpblJlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byYgcGx1Z2luUmVuZGVyQm94ID0gdG9S
ZW5kZXJCb3goKnBsdWdpblJlbmRlcmVyKTsKICAgICAgICAgICAgIEludFJlY3QgcGx1Z0luUmVj
dFJlbGF0aXZlVG9WaWV3ID0gcGx1Z0luSW1hZ2VFbGVtZW50LmNsaWVudFJlY3QoKTsKICAgICAg
ICAgICAgIGlmIChwbHVnSW5SZWN0UmVsYXRpdmVUb1ZpZXcuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtNDM4NCwxNyArNDM5MCwzMCBAQCB2b2lkIFdlYlBhZ2U6OmRl
dGVybWluZVByaW1hcnlTbmFwc2hvdHRlCiAgICAgICAgICAgICBtYWluUmVuZGVyVmlldy5oaXRU
ZXN0KHJlcXVlc3QsIGhpdFRlc3RSZXN1bHQpOwogCiAgICAgICAgICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gaGl0VGVzdFJlc3VsdC5pbm5lckVsZW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChlbGVt
ZW50ICE9ICZwbHVnSW5JbWFnZUVsZW1lbnQpCisgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBw
bHVnSW5JbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXIg
fHwgIXJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgYXV0byYgcmVuZGVyQm94ID0gdG9SZW5kZXJCb3goKnJlbmRlcmVyKTsKLSAgICAgICAg
ICAgIGlmIChyZW5kZXJCb3guY29udGVudFdpZHRoKCkgPCBwcmltYXJ5U25hcHNob3R0ZWRQbHVn
SW5NaW5pbXVtV2lkdGggfHwgcmVuZGVyQm94LmNvbnRlbnRIZWlnaHQoKSA8IHByaW1hcnlTbmFw
c2hvdHRlZFBsdWdJbk1pbmltdW1IZWlnaHQpCisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRS
ZWN0UmVsYXRpdmVUb1ZpZXcgPSBlbGVtZW50LT5jbGllbnRSZWN0KCk7CisgICAgICAgICAgICBJ
bnRSZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KGVsZW1lbnRSZWN0UmVsYXRp
dmVUb1ZpZXcubG9jYXRpb24oKSArIHNjcm9sbE9mZnNldCwgZWxlbWVudFJlY3RSZWxhdGl2ZVRv
Vmlldy5zaXplKCkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCB4T2Zmc2V0ID0gKHBsdWdJblJl
Y3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQud2lkdGgoKSAqIG92ZXJsYXBwaW5nSW1hZ2VCb3VuZHNT
Y2FsZSAtIHBsdWdJblJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQud2lkdGgoKSkgLyBMYXlvdXRV
bml0KDIpOworICAgICAgICAgICAgTGF5b3V0VW5pdCB5T2Zmc2V0ID0gKHBsdWdJblJlY3RSZWxh
dGl2ZVRvVG9wRG9jdW1lbnQuaGVpZ2h0KCkgKiBvdmVybGFwcGluZ0ltYWdlQm91bmRzU2NhbGUg
LSBwbHVnSW5SZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50LmhlaWdodCgpKSAvIExheW91dFVuaXQo
Mik7CisgICAgICAgICAgICBMYXlvdXRSZWN0IGluZmxhdGVkUGx1Z2luUmVjdCA9IHBsdWdJblJl
Y3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQ7CisgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3Qu
aW5mbGF0ZVgoeE9mZnNldCk7CisgICAgICAgICAgICBpbmZsYXRlZFBsdWdpblJlY3QuaW5mbGF0
ZVkoeU9mZnNldCk7CisKKyAgICAgICAgICAgIGlmIChlbGVtZW50ICE9ICZwbHVnSW5JbWFnZUVs
ZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShpc0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICAgICAgJiYgaW5mbGF0ZWRQbHVnaW5SZWN0LmNvbnRhaW5zKGVs
ZW1lbnRSZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAmJiBl
bGVtZW50UmVjdFJlbGF0aXZlVG9Ub3BEb2N1bWVudC53aWR0aCgpID4gcGx1Z2luUmVuZGVyQm94
LndpZHRoKCkgKiBtaW5pbXVtT3ZlcmxhcHBpbmdJbWFnZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUK
KyAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudFJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQu
aGVpZ2h0KCkgPiBwbHVnaW5SZW5kZXJCb3guaGVpZ2h0KCkgKiBtaW5pbXVtT3ZlcmxhcHBpbmdJ
bWFnZVRvUGx1Z2luRGltZW5zaW9uU2NhbGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBMT0coUGx1Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rp
b246IFBsdWctaW4gaXMgaGlkZGVuIGJ5IGFuIGltYWdlIHRoYXQgaXMgcm91Z2hseSBhbGlnbmVk
IHdpdGggaXQsIGF1dG9wbGF5aW5nIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgaXQncyBh
Y3R1YWxseSB0aGUgcHJpbWFyeSBwbHVnLWluLiIpOworICAgICAgICAgICAgICAgIHBsdWdJbklt
YWdlRWxlbWVudC5yZXN0YXJ0U25hcHNob3R0ZWRQbHVnSW4oKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChwbHVnaW5SZW5kZXJCb3guY29udGVudFdpZHRoKCkgPCBwcmltYXJ5U25h
cHNob3R0ZWRQbHVnSW5NaW5pbXVtV2lkdGggfHwgcGx1Z2luUmVuZGVyQm94LmNvbnRlbnRIZWln
aHQoKSA8IHByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbk1pbmltdW1IZWlnaHQpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEFyZWEgPSBy
ZW5kZXJCb3guY29udGVudFdpZHRoKCkgKiByZW5kZXJCb3guY29udGVudEhlaWdodCgpOworICAg
ICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50QXJlYSA9IHBsdWdpblJlbmRlckJveC5jb250ZW50
V2lkdGgoKSAqIHBsdWdpblJlbmRlckJveC5jb250ZW50SGVpZ2h0KCk7CiAgICAgICAgICAgICBp
ZiAoY29udGVudEFyZWEgPiBjYW5kaWRhdGVQbHVnSW5BcmVhICogcHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luU2VhcmNoQnVja2V0U2l6ZSkgewogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVBsdWdJ
biA9ICZwbHVnSW5JbWFnZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlUGx1Z0lu
QXJlYSA9IGNvbnRlbnRBcmVhOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3OTIwKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDQt
MjggIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KKworICAgICAgICBQbHVnaW5z
IGhpZGRlbiBieSBpbWFnZXMgc2hvdWxkIGF1dG9wbGF5LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyMjIyLgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTY2NTM1MzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBs
dWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5
LWJsb2NrZWQtYnktaW1hZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUt
YmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMv
c25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1tb3N0bHkt
YmxvY2tlZC1ieS1pbWFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbHVnaW5zL3NuYXBzaG90
dGluZy9zbmFwc2hvdC1wbHVnaW4tbm90LXF1aXRlLWJsb2NrZWQtYnktaW1hZ2UuaHRtbDogQWRk
ZWQuCisKIDIwMTQtMDQtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgQ1NTIEpJVDogYmFja3RyYWNraW5nIHdpdGggY3VycmVudCAvIHBhcmVudCBl
bGVtZW50IGZvciBjaGlsZApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
c25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACitsYXllciBhdCAoMCwwKSBzaXplIDc4
NXgxMjU0CisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDc4NXgxMjU0CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXgx
MjU0CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4MTIzOAorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDYyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDYyMzogIlRoaXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxh
eSBhdXRvbWF0aWNhbGx5IGV2ZW4gaWYgYW4gaW1hZ2UgaXMgb24gdG9wIG9mIHRoZSBwbHVnaW4u
IgorICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzY5eDEyMDQK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg2MDAsNTg2KSBzaXplIDR4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoNjAwLDU4Nikgd2lkdGggNDogIiAiCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorbGF5ZXIgYXQgKDgsNDIpIHNpemUgNjAweDYw
MAorICBSZW5kZXJFbWJlZGRlZE9iamVjdCB7RU1CRUR9IGF0ICgwLDApIHNpemUgNjAweDYwMAor
bGF5ZXIgYXQgKDgsNDYpIHNpemUgNjAweDYwMAorICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMCw2
MDQpIHNpemUgNjAweDYwMApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2Ut
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2VkLWJ5LWlt
YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2Vk
LWJ5LWltYWdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACits
YXllciBhdCAoMCwwKSBzaXplIDc4NXg2NTAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4
NXg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDY1MAorICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA3ODV4NjUwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6
ZSA3Njl4NjM0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTgKKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjM1eDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjM1OiAiVGhpcyB0ZXN0cyB0aGF0IGEgZG9taW5hbnQg
cGx1Z2luIHNob3VsZCBwbGF5IGF1dG9tYXRpY2FsbHkgaWYgYW4gaW1hZ2UgaXMgbW9zdGx5IG9u
IHRvcCBvZiB0aGUgcGx1Z2luLiIKKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgw
LDM0KSBzaXplIDc2OXg2MDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCitsYXllciBhdCAoOCw0Mikgc2l6ZSA2MDB4NjAwCisgIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0IHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSA2MDB4NjAwCitsYXllciBhdCAoMCwyMCkgc2l6ZSA2
MDB4NjAwCisgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDIwKSBzaXplIDYwMHg2MDAKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbmFwc2hvdHRpbmcvc25hcHNo
b3QtcGx1Z2luLW5vdC1xdWl0ZS1ibG9ja2VkLWJ5LWltYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25hcHNob3R0aW5n
L3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc25h
cHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1pbWFnZS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA3ODV4MjIxNAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA3ODV4MjIxNAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA3ODV4MjIxNAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDIxOTgK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgzNgorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA3MTl4MzYKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA3MTk6ICJUaGlzIHRlc3RzIHRoYXQgYSBwbHVnaW4gc2hvdWxkIGJlIHNu
YXBzaG90dGVkIGlmIGl0IGlzIHBhcnRpYWxseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIGJ1dCBub3Qg
ZW5vdWdoIHRvIGJlIGNvbnNpZGVyZWQiCisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTgpIHdp
ZHRoIDU5OiAiYmxvY2tpbmcuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDUyKSBzaXpl
IDc2OXgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNTN4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNTM6ICJJdCBhZGRpdGlvbmFsbHkg
dGVzdHMgdGhhdCB3ZSB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiIKKyAgICAgIFJlbmRl
ckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDg2KSBzaXplIDc2OXgyMTEyCisgICAgICAgIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luIHtFTUJFRH0gYXQgKDAsMCkgc2l6ZSA2MDB4NjAwCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNjAwLDU4Nikgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDYwMCw1ODYpIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDYwMCwxMTkwKSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjAwLDEx
OTApIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiB7RU1CRUR9
IGF0ICgwLDEyMDgpIHNpemUgNjAweDYwMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDYwMCwxNzk0KSBzaXplIDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjAwLDE3OTQpIHdp
ZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAK
K2xheWVyIGF0ICg4LDk0KSBzaXplIDYwMHg2MDAKKyAgUmVuZGVyQmxvY2sgKHJlbGF0aXZlIHBv
c2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgNjAweDYwMAorbGF5ZXIgYXQgKDEzLDk5KSBz
aXplIDU5MHg1OTAKKyAgUmVuZGVyRmxleGlibGVCb3gge0RJVn0gYXQgKDUsNSkgc2l6ZSA1OTB4
NTkwIFtiZ2NvbG9yPSNGRkZGRkZCRl0KKyAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMjI1LDI3
Nykgc2l6ZSAxNDB4MzYKK2xheWVyIGF0ICgyMzksMzc2KSBzaXplIDEzOXgxOAorICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDEzOXgxOAorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDEzOXgxOAorICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTM5OiAi
U25hcHNob3R0ZWQgUGx1Zy1JbiIKK2xheWVyIGF0ICgyMzksMzk0KSBzaXplIDEzOXgxOAorICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSAxMzl4MTggW2NvbG9yPSM0NDQ0NDRdCisg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgOTR4MTgKKyAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDk0OiAiQ2xpY2sgdG8gcmVzdGFydCIKK2xheWVyIGF0ICg4LDE3Mykg
c2l6ZSA2MDB4NjAwCisgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDYwNCkgc2l6ZSA2MDB4NjAw
CitsYXllciBhdCAoOCwxMzAyKSBzaXplIDYwMHg2MDAKKyAgUmVuZGVyQmxvY2sgKHJlbGF0aXZl
IHBvc2l0aW9uZWQpIHtESVZ9IGF0ICgwLDApIHNpemUgNjAweDYwMAorbGF5ZXIgYXQgKDEzLDEz
MDcpIHNpemUgNTkweDU5MAorICBSZW5kZXJGbGV4aWJsZUJveCB7RElWfSBhdCAoNSw1KSBzaXpl
IDU5MHg1OTAgW2JnY29sb3I9I0ZGRkZGRkJGXQorICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgy
MjUsMjc3KSBzaXplIDE0MHgzNgorbGF5ZXIgYXQgKDIzOSwxNTg0KSBzaXplIDEzOXgxOAorICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDEzOXgxOAorICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDEzOXgxOAorICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTM5OiAiU25hcHNob3R0ZWQgUGx1Zy1JbiIKK2xheWVyIGF0ICgyMzksMTYwMikgc2l6ZSAxMzl4
MTgKKyAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgMTM5eDE4IFtjb2xvcj0jNDQ0
NDQ0XQorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDk0eDE4CisgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA5NDogIkNsaWNrIHRvIHJlc3RhcnQiCitsYXllciBhdCAo
OCwxOTA2KSBzaXplIDMwMHgzMDAKKyAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDAsMTgxMikgc2l6
ZSAzMDB4MzAwCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRvcGxh
eS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsdWdpbnMvc25hcHNob3R0aW5nL2F1dG9wbGF5LXBsdWdpbi1ibG9ja2VkLWJ5LWltYWdlLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL3NuYXBzaG90dGluZy9hdXRv
cGxheS1wbHVnaW4tYmxvY2tlZC1ieS1pbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTMgQEAKKzxwPlRoaXMgdGVzdHMgdGhhdCBhIGRvbWluYW50IHBsdWdpbiBzaG91bGQgcGxh
eSBhdXRvbWF0aWNhbGx5IGV2ZW4gaWYgYW4gaW1hZ2UgaXMgb24gdG9wIG9mIHRoZSBwbHVnaW4u
PC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRz
KDApOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMDAw
KTsKK30KKzwvc2NyaXB0PgorPGVtYmVkIHNyYz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lk
dGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1iZWQ+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2Fw
cGxlLmdpZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2
ZTsgdG9wOi02MDBweDsiPgpJbmRleDogTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcv
YXV0b3BsYXktcGx1Z2luLW1vc3RseS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRpbmcvYXV0b3BsYXktcGx1Z2luLW1vc3Rs
eS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVn
aW5zL3NuYXBzaG90dGluZy9hdXRvcGxheS1wbHVnaW4tbW9zdGx5LWJsb2NrZWQtYnktaW1hZ2Uu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8cD5UaGlzIHRlc3RzIHRoYXQg
YSBkb21pbmFudCBwbHVnaW4gc2hvdWxkIHBsYXkgYXV0b21hdGljYWxseSBpZiBhbiBpbWFnZSBp
cyBtb3N0bHkgb24gdG9wIG9mIHRoZSBwbHVnaW4uPC9wPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0UGx1Z0luU25h
cHNob3R0aW5nRW5hYmxlZCh0cnVlKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dE1heGltdW1QbHVnSW5TbmFwc2hvdEF0dGVtcHRzKDApOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMDAwKTsKK30KKzwvc2NyaXB0PgorPGVtYmVkIHNy
Yz0iLi4vcmVzb3VyY2VzL2xpbmVzLnN3ZiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDAiPjwvZW1i
ZWQ+Cis8aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FwcGxlLmdpZiIgd2lkdGg9IjYwMCIgaGVpZ2h0
PSI2MDAiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjIwcHg7IGxlZnQ6MHB4Ij4KSW5k
ZXg6IExheW91dFRlc3RzL3BsdWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3Qt
cXVpdGUtYmxvY2tlZC1ieS1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
dWdpbnMvc25hcHNob3R0aW5nL3NuYXBzaG90LXBsdWdpbi1ub3QtcXVpdGUtYmxvY2tlZC1ieS1p
bWFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9zbmFwc2hvdHRp
bmcvc25hcHNob3QtcGx1Z2luLW5vdC1xdWl0ZS1ibG9ja2VkLWJ5LWltYWdlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorPHA+VGhpcyB0ZXN0cyB0aGF0IGEgcGx1Z2luIHNo
b3VsZCBiZSBzbmFwc2hvdHRlZCBpZiBpdCBpcyBwYXJ0aWFsbHkgY292ZXJlZCBieSBhbiBpbWFn
ZSBidXQgbm90IGVub3VnaCB0byBiZSBjb25zaWRlcmVkIGJsb2NraW5nLjwvcD4KKzxwPiBJdCBh
ZGRpdGlvbmFsbHkgdGVzdHMgdGhhdCB3ZSB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LiA8
L3A+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKHRydWUpOworICAgIHdp
bmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TWF4aW11bVBsdWdJblNuYXBzaG90QXR0ZW1wdHMo
MCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDEwMDAp
OworfQorPC9zY3JpcHQ+Cis8ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMuc3dmIiB3aWR0
aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KKzxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYXBw
bGUuZ2lmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZl
OyB0b3A6LTUyNXB4OyBsZWZ0OjBweCI+Cis8ZW1iZWQgc3JjPSIuLi9yZXNvdXJjZXMvbGluZXMu
c3dmIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCI+PC9lbWJlZD4KKzxpbWcgc3JjPSIuLi9yZXNv
dXJjZXMvYXBwbGUuZ2lmIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgc3R5bGU9Ii13ZWJraXQt
dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAwcHgsLTIwMHB4KSI+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>