<?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>28355</bug_id>
          
          <creation_ts>2009-08-16 05:25:24 -0700</creation_ts>
          <short_desc>Replace MAX()/MIN() macros with type-safe std::max()/min() templates</short_desc>
          <delta_ts>2009-08-16 15:57:58 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140553</commentid>
    <comment_count>0</comment_count>
      <attachid>34925</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-08-16 05:25:24 -0700</bug_when>
    <thetext>Created attachment 34925
Patch v1

Reviewed by NOBODY (OOPS!).

WebCore:

* accessibility/mac/AccessibilityObjectWrapper.mm:
(AXAttributeStringSetSpelling): Changed MIN() to min().
* platform/graphics/mac/FontMacATSUI.mm:
(WebCore::Font::selectionRectForComplexText): Changed MAX() to
max() and MIN() to min().
(WebCore::Font::floatWidthForComplexText): Ditto.
* platform/graphics/mac/SimpleFontDataMac.mm: Added using
std::max statment.
(WebCore::SimpleFontData::platformInit): Changed MAX() to max().
* platform/text/mac/TextCodecMac.cpp:
(WebCore::TextCodecMac::decode): Changed MIN() to min().

WebKit/mac:

* Plugins/WebBaseNetscapePluginStream.mm: Added using std::min
statement.
(WebNetscapePluginStream::deliverData): Changed MIN() to min().
Changed C-style cast to a static_cast.
* Plugins/WebNetscapePluginView.mm: Added using std::min
statement.
(-[WebNetscapePluginView _postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:]):
Changed MIN() to min().  Changed C-style cast to a static_cast.
* WebView/WebHTMLView.mm: Added using std::max statement.
(-[WebHTMLView _dragImageForURL:withLabel:]): Changed MAX() to
max().
(-[WebHTMLView _scaleFactorForPrintOperation:]): Ditto.
* WebView/WebTextCompletionController.mm: Added using std::max
and using std::min statements.
(-[WebTextCompletionController _placePopupWindow:]): Changed
type of maxWidth variable from float to CGFloat to prevent a
type mismatch on x86_64.  Changed MAX() to max() and MIN() to
min().  Added static_cast for a constant value since CGFloat is
defined as a float on i386 and as a double on x86_64.
---
 10 files changed, 70 insertions(+), 16 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140568</commentid>
    <comment_count>1</comment_count>
      <attachid>34925</attachid>
    <who name="">mitz</who>
    <bug_when>2009-08-16 10:10:15 -0700</bug_when>
    <thetext>Comment on attachment 34925
Patch v1

&gt; +        &lt;http://webkit.org/b/00000&gt; Replace MAX()/MIN() macros with type-safe std::max()/min() templates

Presumably this will transform into this bug’s URL?

&gt; +        * platform/graphics/mac/SimpleFontDataMac.mm: Added using
&gt; +        std::max statment.

Typo: statment.

In new files, it is common to just add “using namespace std;”.

&gt; +        &lt;http://webkit.org/b/00000&gt; Replace MAX()/MIN() macros with type-safe std::max()/min() templates

URL…

&gt; +            deliveryBytes = static_cast&lt;int32&gt;(min(static_cast&lt;NSUInteger&gt;(deliveryBytes), [subdata length]));

This is an odd combination of casts. You can do “min&lt;int32&gt;(deliveryBytes, [subdata length])” instead.

&gt; -                    dataLength = MIN((unsigned)[contentLength intValue], dataLength);
&gt; +                    dataLength = min(static_cast&lt;unsigned&gt;([contentLength intValue]), dataLength);

I prefer min&lt;unsigned&gt;(…).

&gt; -            imageSize.width = MAX(MAX_DRAG_LABEL_WIDTH + DRAG_LABEL_BORDER_X * 2.0f, MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP);
&gt; +            imageSize.width = max(MAX_DRAG_LABEL_WIDTH + DRAG_LABEL_BORDER_X * 2.0f, MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP);

While you’re here, you may just drop the “.0f”.

&gt; -            imageSize.width = MAX(labelSize.width + DRAG_LABEL_BORDER_X * 2.0f, urlStringSize.width + DRAG_LABEL_BORDER_X * 2.0f);
&gt; +            imageSize.width = max(labelSize.width + DRAG_LABEL_BORDER_X * 2.0f, urlStringSize.width + DRAG_LABEL_BORDER_X * 2.0f);

Ditto.

&gt; +        maxWidth = min(static_cast&lt;CGFloat&gt;(400), windowFrame.size.width);

Can be done as min&lt;CGFloat&gt;(…).

r=me but please consider at least changing to “using namespace std;”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140613</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-08-16 15:53:06 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; (From update of attachment 34925 [details])
&gt; &gt; +        &lt;http://webkit.org/b/00000&gt; Replace MAX()/MIN() macros with type-safe std::max()/min() templates
&gt; 
&gt; Presumably this will transform into this bug’s URL?

Yes.  I&apos;m currently doing it manually, but one day bugzilla-tool will do the replacement automatically.  I already updated the ChangeLogs after creating this bug.

&gt; &gt; +        * platform/graphics/mac/SimpleFontDataMac.mm: Added using
&gt; &gt; +        std::max statment.
&gt; 
&gt; Typo: statment.

Fixed.

&gt; In new files, it is common to just add “using namespace std;”.

Fixed.  I filed:  &lt;http://webkit.org/b/28370&gt;.

&gt; &gt; +        &lt;http://webkit.org/b/00000&gt; Replace MAX()/MIN() macros with type-safe std::max()/min() templates
&gt; 
&gt; URL…

Already fixed.

&gt; &gt; +            deliveryBytes = static_cast&lt;int32&gt;(min(static_cast&lt;NSUInteger&gt;(deliveryBytes), [subdata length]));
&gt; 
&gt; This is an odd combination of casts. You can do “min&lt;int32&gt;(deliveryBytes,
&gt; [subdata length])” instead.

I was keeping the original behavior of the statement.  Fixed.

&gt; &gt; -                    dataLength = MIN((unsigned)[contentLength intValue], dataLength);
&gt; &gt; +                    dataLength = min(static_cast&lt;unsigned&gt;([contentLength intValue]), dataLength);
&gt; 
&gt; I prefer min&lt;unsigned&gt;(…).

Fixed.

&gt; &gt; -            imageSize.width = MAX(MAX_DRAG_LABEL_WIDTH + DRAG_LABEL_BORDER_X * 2.0f, MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP);
&gt; &gt; +            imageSize.width = max(MAX_DRAG_LABEL_WIDTH + DRAG_LABEL_BORDER_X * 2.0f, MIN_DRAG_LABEL_WIDTH_BEFORE_CLIP);
&gt; 
&gt; While you’re here, you may just drop the “.0f”.

Fixed.

&gt; &gt; -            imageSize.width = MAX(labelSize.width + DRAG_LABEL_BORDER_X * 2.0f, urlStringSize.width + DRAG_LABEL_BORDER_X * 2.0f);
&gt; &gt; +            imageSize.width = max(labelSize.width + DRAG_LABEL_BORDER_X * 2.0f, urlStringSize.width + DRAG_LABEL_BORDER_X * 2.0f);
&gt; 
&gt; Ditto.

Fixed.

&gt; &gt; +        maxWidth = min(static_cast&lt;CGFloat&gt;(400), windowFrame.size.width);
&gt; 
&gt; Can be done as min&lt;CGFloat&gt;(…).

Fixed.

&gt; r=me but please consider at least changing to “using namespace std;”.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140616</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-08-16 15:57:58 -0700</bug_when>
    <thetext>$ git svn dcommit
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/accessibility/mac/AccessibilityObjectWrapper.mm
	M	WebCore/platform/graphics/mac/FontMacATSUI.mm
	M	WebCore/platform/graphics/mac/SimpleFontDataMac.mm
	M	WebCore/platform/text/mac/TextCodecMac.cpp
	M	WebKit/mac/ChangeLog
	M	WebKit/mac/Plugins/WebBaseNetscapePluginStream.mm
	M	WebKit/mac/Plugins/WebNetscapePluginView.mm
	M	WebKit/mac/WebView/WebHTMLView.mm
	M	WebKit/mac/WebView/WebTextCompletionController.mm
Committed r47341

&lt;http://trac.webkit.org/changeset/47341&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34925</attachid>
            <date>2009-08-16 05:25:24 -0700</date>
            <delta_ts>2009-08-16 10:10:14 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>20090816052524.patch</filename>
            <type>text/plain</type>
            <size>13482</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzgxNTE0My4uYTY0ZmRmOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOC0xNiAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzAw
MDAwPiBSZXBsYWNlIE1BWCgpL01JTigpIG1hY3JvcyB3aXRoIHR5cGUtc2FmZSBzdGQ6Om1heCgp
L21pbigpIHRlbXBsYXRlcworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW06CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKTogQ2hhbmdlZCBNSU4o
KSB0byBtaW4oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hY0FUU1VJ
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0
KTogQ2hhbmdlZCBNQVgoKSB0bworICAgICAgICBtYXgoKSBhbmQgTUlOKCkgdG8gbWluKCkuCisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQpOiBEaXR0by4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW06IEFk
ZGVkIHVzaW5nCisgICAgICAgIHN0ZDo6bWF4IHN0YXRtZW50LgorICAgICAgICAoV2ViQ29yZTo6
U2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCk6IENoYW5nZWQgTUFYKCkgdG8gbWF4KCkuCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb2RlY01hYzo6ZGVjb2RlKTogQ2hhbmdlZCBNSU4oKSB0byBtaW4oKS4KKwog
MjAwOS0wOC0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCA3NzQwNmY1Li43
NWNlZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0KQEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0
dHJTdHJpbmcsCiAgICAgICAgIAogICAgICAgICAvLyBhZGQgbWlzc3BlbGxpbmcgYXR0cmlidXRl
IGZvciB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBtYXJrZXIgYW5kIHRoZSByYW5nZQogICAgICAg
ICBpbnQgclN0YXJ0ID0gcmFuZ2UubG9jYXRpb24gKyAobWFya2VyLnN0YXJ0T2Zmc2V0IC0gb2Zm
c2V0KTsKLSAgICAgICAgaW50IHJMZW5ndGggPSBNSU4obWFya2VyLmVuZE9mZnNldCwgZW5kT2Zm
c2V0KSAtIG1hcmtlci5zdGFydE9mZnNldDsKKyAgICAgICAgaW50IHJMZW5ndGggPSBtaW4obWFy
a2VyLmVuZE9mZnNldCwgZW5kT2Zmc2V0KSAtIG1hcmtlci5zdGFydE9mZnNldDsKICAgICAgICAg
TlNSYW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2UoclN0YXJ0LCByTGVuZ3RoKTsKICAgICAg
ICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBz
cGVsbFJhbmdlKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9Gb250TWFjQVRTVUkubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjQVRTVUkubW0KaW5kZXggMDUxYWJiNy4uMzVjNDBiZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hY0FUU1VJLm1tCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWNBVFNVSS5tbQpAQCAtNTA0LDggKzUwNCw4IEBAIEZs
b2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBJbnRQb2ludCYKICAgICAgICAgZmlyc3RHbHlwaEJvdW5kcyA9IHplcm9UcmFw
ZXpvaWQ7CiAgICAgfQogICAgIAotICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gTUlOKEZpeGVkVG9G
bG9hdChmaXJzdEdseXBoQm91bmRzLmxvd2VyTGVmdC54KSwgRml4ZWRUb0Zsb2F0KGZpcnN0R2x5
cGhCb3VuZHMudXBwZXJMZWZ0LngpKTsKLSAgICBmbG9hdCBhZnRlcldpZHRoID0gTUFYKEZpeGVk
VG9GbG9hdChmaXJzdEdseXBoQm91bmRzLmxvd2VyUmlnaHQueCksIEZpeGVkVG9GbG9hdChmaXJz
dEdseXBoQm91bmRzLnVwcGVyUmlnaHQueCkpOworICAgIGZsb2F0IGJlZm9yZVdpZHRoID0gbWlu
KEZpeGVkVG9GbG9hdChmaXJzdEdseXBoQm91bmRzLmxvd2VyTGVmdC54KSwgRml4ZWRUb0Zsb2F0
KGZpcnN0R2x5cGhCb3VuZHMudXBwZXJMZWZ0LngpKTsKKyAgICBmbG9hdCBhZnRlcldpZHRoID0g
bWF4KEZpeGVkVG9GbG9hdChmaXJzdEdseXBoQm91bmRzLmxvd2VyUmlnaHQueCksIEZpeGVkVG9G
bG9hdChmaXJzdEdseXBoQm91bmRzLnVwcGVyUmlnaHQueCkpOwogICAgIAogICAgIEZsb2F0UmVj
dCByZWN0KHBvaW50LngoKSArIGZsb29yZihiZWZvcmVXaWR0aCksIHBvaW50LnkoKSwgcm91bmRm
KGFmdGVyV2lkdGgpIC0gZmxvb3JmKGJlZm9yZVdpZHRoKSwgaCk7CiAKQEAgLTU5MSw4ICs1OTEs
OCBAQCBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbgogICAgIGlmIChhY3R1YWxOdW1Cb3VuZHMgIT0g
MSkKICAgICAgICAgTE9HX0VSUk9SKCJ1bmV4cGVjdGVkIHJlc3VsdCBmcm9tIEFUU1VHZXRHbHlw
aEJvdW5kcygpOiBhY3R1YWxOdW1Cb3VuZHMoJWQpICE9IDEiLCBhY3R1YWxOdW1Cb3VuZHMpOwog
Ci0gICAgcmV0dXJuIE1BWChGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy51cHBlclJpZ2h0
LngpLCBGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy5sb3dlclJpZ2h0LngpKSAtCi0gICAg
ICAgICAgIE1JTihGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy51cHBlckxlZnQueCksIEZp
eGVkVG9GbG9hdChmaXJzdEdseXBoQm91bmRzLmxvd2VyTGVmdC54KSk7CisgICAgcmV0dXJuIG1h
eChGaXhlZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy51cHBlclJpZ2h0LngpLCBGaXhlZFRvRmxv
YXQoZmlyc3RHbHlwaEJvdW5kcy5sb3dlclJpZ2h0LngpKSAtCisgICAgICAgICAgIG1pbihGaXhl
ZFRvRmxvYXQoZmlyc3RHbHlwaEJvdW5kcy51cHBlckxlZnQueCksIEZpeGVkVG9GbG9hdChmaXJz
dEdseXBoQm91bmRzLmxvd2VyTGVmdC54KSk7CiB9CiAKIGludCBGb250OjpvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IHgsIGJvb2wgLyppbmNs
dWRlUGFydGlhbEdseXBocyovKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQppbmRleCBjZGRlN2NmLi41ZjMwYzUzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5t
bQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5t
bQpAQCAtNTAsNiArNTAsOCBAQAogLSAoQk9PTClfaXNGYWtlRml4ZWRQaXRjaDsKIEBlbmQKIAor
dXNpbmcgc3RkOjptYXg7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgCiBjb25zdCBmbG9hdCBz
bWFsbENhcHNGb250U2l6ZU11bHRpcGxpZXIgPSAwLjdmOwpAQCAtMjY5LDcgKzI3MSw3IEBAIHZv
aWQgU2ltcGxlRm9udERhdGE6OnBsYXRmb3JtSW5pdCgpCiAgICAgICAgIC8vIGFuZCB3ZWIgcGFn
ZXMgdGhhdCBmb29saXNobHkgdXNlIHRoaXMgbWV0cmljIGZvciB3aWR0aCB3aWxsIGJlIGxhaWQg
b3V0CiAgICAgICAgIC8vIHBvb3JseSBpZiB3ZSByZXR1cm4gYW4gYWNjdXJhdGUgaGVpZ2h0LiBD
bGFzc2ljIGNhc2UgaXMgVGltZXMgMTMgcG9pbnQsCiAgICAgICAgIC8vIHdoaWNoIGhhcyBhbiAi
eCIgdGhhdCBpcyA3eDYgcGl4ZWxzLgotICAgICAgICBtX3hIZWlnaHQgPSBNQVgoTlNNYXhYKHhC
b3gpLCBOU01heFkoeEJveCkpOworICAgICAgICBtX3hIZWlnaHQgPSBtYXgoTlNNYXhYKHhCb3gp
LCBOU01heFkoeEJveCkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3hIZWlnaHQgPSBbbV9wbGF0
Zm9ybURhdGEuZm9udCgpIHhIZWlnaHRdOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9U
ZXh0Q29kZWNNYWMuY3BwCmluZGV4IDkzYjlkYTIuLjZlODFlYzAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBPU1N0YXR1
cyBUZXh0Q29kZWNNYWM6OmRlY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dEJ1ZmZlciwg
aW50IGlucHV0QnVmZmVyTAogICAgICAgICAvLyBGaXJzdCwgZmlsbCB0aGUgcGFydGlhbCBjaGFy
YWN0ZXIgYnVmZmVyIHdpdGggYXMgbWFueSBieXRlcyBhcyBhcmUgYXZhaWxhYmxlLgogICAgICAg
ICBBU1NFUlQobV9udW1CdWZmZXJlZEJ5dGVzIDwgc2l6ZW9mKG1fYnVmZmVyZWRCeXRlcykpOwog
ICAgICAgICBjb25zdCBpbnQgc3BhY2VJbkJ1ZmZlciA9IHNpemVvZihtX2J1ZmZlcmVkQnl0ZXMp
IC0gbV9udW1CdWZmZXJlZEJ5dGVzOwotICAgICAgICBjb25zdCBpbnQgYnl0ZXNUb1B1dEluQnVm
ZmVyID0gTUlOKHNwYWNlSW5CdWZmZXIsIGlucHV0QnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgY29u
c3QgaW50IGJ5dGVzVG9QdXRJbkJ1ZmZlciA9IG1pbihzcGFjZUluQnVmZmVyLCBpbnB1dEJ1ZmZl
ckxlbmd0aCk7CiAgICAgICAgIEFTU0VSVChieXRlc1RvUHV0SW5CdWZmZXIgIT0gMCk7CiAgICAg
ICAgIG1lbWNweShtX2J1ZmZlcmVkQnl0ZXMgKyBtX251bUJ1ZmZlcmVkQnl0ZXMsIGlucHV0QnVm
ZmVyLCBieXRlc1RvUHV0SW5CdWZmZXIpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZjODVhNDEuLjg1MzBjNmUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDktMDgtMTYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KKworICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8wMDAwMD4gUmVwbGFjZSBNQVgo
KS9NSU4oKSBtYWNyb3Mgd2l0aCB0eXBlLXNhZmUgc3RkOjptYXgoKS9taW4oKSB0ZW1wbGF0ZXMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdp
bnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOiBBZGRlZCB1c2luZyBzdGQ6Om1pbgor
ICAgICAgICBzdGF0ZW1lbnQuCisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVs
aXZlckRhdGEpOiBDaGFuZ2VkIE1JTigpIHRvIG1pbigpLgorICAgICAgICBDaGFuZ2VkIEMtc3R5
bGUgY2FzdCB0byBhIHN0YXRpY19jYXN0LgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tOiBBZGRlZCB1c2luZyBzdGQ6Om1pbgorICAgICAgICBzdGF0ZW1lbnQuCisg
ICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBfcG9zdFVSTDp0YXJnZXQ6bGVuOmJ1Zjpm
aWxlOm5vdGlmeURhdGE6c2VuZE5vdGlmaWNhdGlvbjphbGxvd0hlYWRlcnM6XSk6CisgICAgICAg
IENoYW5nZWQgTUlOKCkgdG8gbWluKCkuICBDaGFuZ2VkIEMtc3R5bGUgY2FzdCB0byBhIHN0YXRp
Y19jYXN0LgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06IEFkZGVkIHVzaW5nIHN0
ZDo6bWF4IHN0YXRlbWVudC4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2RyYWdJbWFnZUZvclVS
TDp3aXRoTGFiZWw6XSk6IENoYW5nZWQgTUFYKCkgdG8KKyAgICAgICAgbWF4KCkuCisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IF9zY2FsZUZhY3RvckZvclByaW50T3BlcmF0aW9uOl0pOiBEaXR0by4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbTogQWRkZWQg
dXNpbmcgc3RkOjptYXgKKyAgICAgICAgYW5kIHVzaW5nIHN0ZDo6bWluIHN0YXRlbWVudHMuCisg
ICAgICAgICgtW1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlciBfcGxhY2VQb3B1cFdpbmRvdzpd
KTogQ2hhbmdlZAorICAgICAgICB0eXBlIG9mIG1heFdpZHRoIHZhcmlhYmxlIGZyb20gZmxvYXQg
dG8gQ0dGbG9hdCB0byBwcmV2ZW50IGEKKyAgICAgICAgdHlwZSBtaXNtYXRjaCBvbiB4ODZfNjQu
ICBDaGFuZ2VkIE1BWCgpIHRvIG1heCgpIGFuZCBNSU4oKSB0bworICAgICAgICBtaW4oKS4gIEFk
ZGVkIHN0YXRpY19jYXN0IGZvciBhIGNvbnN0YW50IHZhbHVlIHNpbmNlIENHRmxvYXQgaXMKKyAg
ICAgICAgZGVmaW5lZCBhcyBhIGZsb2F0IG9uIGkzODYgYW5kIGFzIGEgZG91YmxlIG9uIHg4Nl82
NC4KKwogMjAwOS0wOC0xNSAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nv
bi5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IGE1YThhMmQu
LjNjNjI3MjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0KKysrIGIvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbQpAQCAtNTAsNiArNTAsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAordXNpbmcgc3RkOjptaW47CisKICNkZWZpbmUgV0VCX1JFQVNPTl9OT05FIC0xCiAKIHN0
YXRpYyBOU1N0cmluZyAqQ2FyYm9uUGF0aEZyb21QT1NJWFBhdGgoTlNTdHJpbmcgKnBvc2l4UGF0
aCk7CkBAIC01MjIsNyArNTI0LDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVs
aXZlckRhdGEoKQogICAgICAgICAgICAgICAgIG1fZGVsaXZlckRhdGFUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGRlbGl2ZXJ5Qnl0ZXMgPSBNSU4oZGVsaXZlcnlCeXRlcywgdG90YWxCeXRlcyAtIHRvdGFsQnl0
ZXNEZWxpdmVyZWQpOworICAgICAgICAgICAgZGVsaXZlcnlCeXRlcyA9IG1pbihkZWxpdmVyeUJ5
dGVzLCB0b3RhbEJ5dGVzIC0gdG90YWxCeXRlc0RlbGl2ZXJlZCk7CiAgICAgICAgICAgICBOU0Rh
dGEgKnN1YmRhdGEgPSBbbV9kZWxpdmVyeURhdGEuZ2V0KCkgc3ViZGF0YVdpdGhSYW5nZTpOU01h
a2VSYW5nZSh0b3RhbEJ5dGVzRGVsaXZlcmVkLCBkZWxpdmVyeUJ5dGVzKV07CiAgICAgICAgICAg
ICBQbHVnaW5TdG9wRGVmZXJyZXIgZGVmZXJyZXIobV9wbHVnaW5WaWV3LmdldCgpKTsKICAgICAg
ICAgICAgIGRlbGl2ZXJ5Qnl0ZXMgPSBtX3BsdWdpbkZ1bmNzLT53cml0ZShtX3BsdWdpbiwgJm1f
c3RyZWFtLCBtX29mZnNldCwgW3N1YmRhdGEgbGVuZ3RoXSwgKHZvaWQgKilbc3ViZGF0YSBieXRl
c10pOwpAQCAtNTMxLDcgKzUzMyw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRl
bGl2ZXJEYXRhKCkKICAgICAgICAgICAgICAgICBjYW5jZWxMb2FkQW5kRGVzdHJveVN0cmVhbVdp
dGhFcnJvcihwbHVnaW5DYW5jZWxsZWRDb25uZWN0aW9uRXJyb3IoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVsaXZlcnlCeXRlcyA9IE1J
TigodW5zaWduZWQpZGVsaXZlcnlCeXRlcywgW3N1YmRhdGEgbGVuZ3RoXSk7CisgICAgICAgICAg
ICBkZWxpdmVyeUJ5dGVzID0gc3RhdGljX2Nhc3Q8aW50MzI+KG1pbihzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihkZWxpdmVyeUJ5dGVzKSwgW3N1YmRhdGEgbGVuZ3RoXSkpOwogICAgICAgICAgICAg
bV9vZmZzZXQgKz0gZGVsaXZlcnlCeXRlczsKICAgICAgICAgICAgIHRvdGFsQnl0ZXNEZWxpdmVy
ZWQgKz0gZGVsaXZlcnlCeXRlczsKICAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiTlBQX1dyaXRl
IHJlc3BvbnNlVVJMPSVAIGJ5dGVzPSVkIHRvdGFsLWRlbGl2ZXJlZD0lZC8lZCIsIG1fcmVzcG9u
c2VVUkwuZ2V0KCksIGRlbGl2ZXJ5Qnl0ZXMsIG1fb2Zmc2V0LCBtX3N0cmVhbS5lbmQpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMjRjNTk0NC4u
ODNmZGI3YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQorKysgYi9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CkBAIC03OSw2ICs3OSw3IEBACiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogCiB1c2lu
ZyBzdGQ6Om1heDsKK3VzaW5nIHN0ZDo6bWluOwogCiAjZGVmaW5lIExvZ2luV2luZG93RGlkU3dp
dGNoRnJvbVVzZXJOb3RpZmljYXRpb24gICAgQCJXZWJMb2dpbldpbmRvd0RpZFN3aXRjaEZyb21V
c2VyTm90aWZpY2F0aW9uIgogI2RlZmluZSBMb2dpbldpbmRvd0RpZFN3aXRjaFRvVXNlck5vdGlm
aWNhdGlvbiAgICAgIEAiV2ViTG9naW5XaW5kb3dEaWRTd2l0Y2hUb1VzZXJOb3RpZmljYXRpb24i
CkBAIC0xNzk0LDcgKzE3OTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0
IE5TUmVjdCYgbnIsIE5QUmVjdCYgbnByKQogICAgICAgICAgICAgICAgIE5TU3RyaW5nICpjb250
ZW50TGVuZ3RoID0gW2hlYWRlciBvYmplY3RGb3JLZXk6QCJDb250ZW50LUxlbmd0aCJdOwogCiAg
ICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRMZW5ndGggIT0gbmlsKQotICAgICAgICAgICAgICAg
ICAgICBkYXRhTGVuZ3RoID0gTUlOKCh1bnNpZ25lZClbY29udGVudExlbmd0aCBpbnRWYWx1ZV0s
IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gbWluKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihbY29udGVudExlbmd0aCBpbnRWYWx1ZV0pLCBkYXRhTGVuZ3RoKTsK
ICAgICAgICAgICAgICAgICBbaGVhZGVyIHJlbW92ZU9iamVjdEZvcktleTpAIkNvbnRlbnQtTGVu
Z3RoIl07CiAKICAgICAgICAgICAgICAgICBpZiAoW2hlYWRlciBjb3VudF0gPiAwKSB7CmRpZmYg
LS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggZDU4Yzc2NS4uYTViNmEzMiAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTI2LDYgKzEyNiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAK
K3VzaW5nIHN0ZDo6bWF4OworCiBAaW50ZXJmYWNlIE5TV2luZG93IChCb3JkZXJWaWV3QWNjZXNz
KQogLSAoTlNWaWV3Kilfd2ViX2JvcmRlclZpZXc7CiBAZW5kCkBAIC0xNjQ5LDEwICsxNjUxLDEw
IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVNb3VzZW92ZXJUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRp
bWVyUmVmIHRpbWVyLCB2b2lkICppbmZvKQogICAgICAgICB1cmxTdHJpbmdTaXplLmhlaWdodCA9
IFt1cmxGb250IGFzY2VuZGVyXSAtIFt1cmxGb250IGRlc2NlbmRlcl07CiAgICAgICAgIGltYWdl
U2l6ZS5oZWlnaHQgKz0gdXJsU3RyaW5nU2l6ZS5oZWlnaHQ7CiAgICAgICAgIGlmICh1cmxTdHJp
bmdTaXplLndpZHRoID4gTUFYX0RSQUdfTEFCRUxfV0lEVEgpIHsKLSAgICAgICAgICAgIGltYWdl
U2l6ZS53aWR0aCA9IE1BWChNQVhfRFJBR19MQUJFTF9XSURUSCArIERSQUdfTEFCRUxfQk9SREVS
X1ggKiAyLjBmLCBNSU5fRFJBR19MQUJFTF9XSURUSF9CRUZPUkVfQ0xJUCk7CisgICAgICAgICAg
ICBpbWFnZVNpemUud2lkdGggPSBtYXgoTUFYX0RSQUdfTEFCRUxfV0lEVEggKyBEUkFHX0xBQkVM
X0JPUkRFUl9YICogMi4wZiwgTUlOX0RSQUdfTEFCRUxfV0lEVEhfQkVGT1JFX0NMSVApOwogICAg
ICAgICAgICAgY2xpcFVSTFN0cmluZyA9IFlFUzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGltYWdlU2l6ZS53aWR0aCA9IE1BWChsYWJlbFNpemUud2lkdGggKyBEUkFHX0xBQkVMX0JP
UkRFUl9YICogMi4wZiwgdXJsU3RyaW5nU2l6ZS53aWR0aCArIERSQUdfTEFCRUxfQk9SREVSX1gg
KiAyLjBmKTsKKyAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCA9IG1heChsYWJlbFNpemUud2lk
dGggKyBEUkFHX0xBQkVMX0JPUkRFUl9YICogMi4wZiwgdXJsU3RyaW5nU2l6ZS53aWR0aCArIERS
QUdfTEFCRUxfQk9SREVSX1ggKiAyLjBmKTsKICAgICAgICAgfQogICAgIH0KICAgICBOU0ltYWdl
ICpkcmFnSW1hZ2UgPSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6IGltYWdlU2l6ZV0g
YXV0b3JlbGVhc2VdOwpAQCAtMzc1MCw3ICszNzUyLDcgQEAgc3RhdGljIEJPT0wgaXNJblBhc3N3
b3JkRmllbGQoRnJhbWUqIGNvcmVGcmFtZSkKICAgICBmbG9hdCBtYXhTaHJpbmtUb0ZpdFNjYWxl
RmFjdG9yID0gMS4wZiAvIFByaW50aW5nTWF4aW11bVNocmlua0ZhY3RvcjsKICAgICBmbG9hdCBz
aHJpbmtUb0ZpdFNjYWxlRmFjdG9yID0gW3NlbGYgX2F2YWlsYWJsZVBhcGVyV2lkdGhGb3JQcmlu
dE9wZXJhdGlvbjpwcmludE9wZXJhdGlvbl0vdmlld1dpZHRoOwogICAgIGZsb2F0IHNocmlua1Rv
QXZvaWRPcnBoYW4gPSBfcHJpdmF0ZS0+YXZvaWRpbmdQcmludE9ycGhhbiA/ICgxLjBmIC8gUHJp
bnRpbmdPcnBoYW5TaHJpbmtBZGp1c3RtZW50KSA6IDEuMGY7Ci0gICAgcmV0dXJuIHVzZXJTY2Fs
ZUZhY3RvciAqIE1BWChtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yLCBzaHJpbmtUb0ZpdFNjYWxl
RmFjdG9yKSAqIHNocmlua1RvQXZvaWRPcnBoYW47CisgICAgcmV0dXJuIHVzZXJTY2FsZUZhY3Rv
ciAqIG1heChtYXhTaHJpbmtUb0ZpdFNjYWxlRmFjdG9yLCBzaHJpbmtUb0ZpdFNjYWxlRmFjdG9y
KSAqIHNocmlua1RvQXZvaWRPcnBoYW47CiB9CiAKIC8vIEZJWE1FIDM0OTEzNDQ6IFRoaXMgaXMg
YSBzZWNyZXQgQXBwS2l0LWludGVybmFsIG1ldGhvZCB0aGF0IHdlIG5lZWQgdG8gb3ZlcnJpZGUg
aW4gb3JkZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJUZXh0Q29tcGxldGlv
bkNvbnRyb2xsZXIubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVGV4dENvbXBsZXRpb25Db250
cm9sbGVyLm1tCmluZGV4IGY3YzE3MmYuLjIxZjI2NTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJUZXh0Q29tcGxldGlvbkNvbnRyb2xsZXIubW0KKysrIGIvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlRleHRDb21wbGV0aW9uQ29udHJvbGxlci5tbQpAQCAtNDAsNiArNDAsOSBAQAog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAordXNpbmcgc3RkOjptYXg7Cit1c2luZyBzdGQ6
Om1pbjsKKwogLy8gVGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBjb21wbGV0ZTogb3BlcmF0aW9uLgog
Ly8gSXQgY291bnRzIG9uIGl0cyBob3N0IHZpZXcgdG8gY2FsbCBlbmRSZXZlcnRpbmdDaGFuZ2U6
IHdoZW5ldmVyIHRoZSBjdXJyZW50IGNvbXBsZXRpb24gbmVlZHMgdG8gYmUgYWJvcnRlZC4KIApA
QCAtMTMxLDcgKzEzNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHdpbmRvd0Zy
YW1lLnNpemUuaGVpZ2h0ID0gbnVtYmVyVG9TaG93ICogW190YWJsZVZpZXcgcm93SGVpZ2h0XSAr
IChudW1iZXJUb1Nob3cgKyAxKSAqIFtfdGFibGVWaWV3IGludGVyY2VsbFNwYWNpbmddLmhlaWdo
dDsKICAgICB3aW5kb3dGcmFtZS5vcmlnaW4ueSAtPSB3aW5kb3dGcmFtZS5zaXplLmhlaWdodDsK
ICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6W05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOjEyLjBmXSwgTlNGb250
QXR0cmlidXRlTmFtZSwgbmlsXTsKLSAgICBmbG9hdCBtYXhXaWR0aCA9IDAuMGY7CisgICAgQ0dG
bG9hdCBtYXhXaWR0aCA9IDA7CiAgICAgaW50IG1heEluZGV4ID0gLTE7CiAgICAgaW50IGk7CiAg
ICAgZm9yIChpID0gMDsgaSA8IG51bWJlclRvU2hvdzsgaSsrKSB7CkBAIC0xNDYsOCArMTQ5LDgg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIG1heFdpZHRoID0gY2VpbGYoW05T
U2Nyb2xsVmlldyBmcmFtZVNpemVGb3JDb250ZW50U2l6ZTpOU01ha2VTaXplKG1heFdpZHRoLCAx
MDAuMGYpIGhhc0hvcml6b250YWxTY3JvbGxlcjpOTyBoYXNWZXJ0aWNhbFNjcm9sbGVyOllFUyBi
b3JkZXJUeXBlOk5TTm9Cb3JkZXJdLndpZHRoKTsKICAgICAgICAgbWF4V2lkdGggPSBjZWlsZihb
TlNXaW5kb3cgZnJhbWVSZWN0Rm9yQ29udGVudFJlY3Q6TlNNYWtlUmVjdCgwLjBmLCAwLjBmLCBt
YXhXaWR0aCwgMTAwLjBmKSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFza10uc2l6ZS53
aWR0aCk7CiAgICAgICAgIG1heFdpZHRoICs9IDUuMGY7Ci0gICAgICAgIHdpbmRvd0ZyYW1lLnNp
emUud2lkdGggPSBNQVgobWF4V2lkdGgsIHdpbmRvd0ZyYW1lLnNpemUud2lkdGgpOwotICAgICAg
ICBtYXhXaWR0aCA9IE1JTig0MDAuMGYsIHdpbmRvd0ZyYW1lLnNpemUud2lkdGgpOworICAgICAg
ICB3aW5kb3dGcmFtZS5zaXplLndpZHRoID0gbWF4KG1heFdpZHRoLCB3aW5kb3dGcmFtZS5zaXpl
LndpZHRoKTsKKyAgICAgICAgbWF4V2lkdGggPSBtaW4oc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oNDAw
KSwgd2luZG93RnJhbWUuc2l6ZS53aWR0aCk7CiAgICAgfQogICAgIFtfcG9wdXBXaW5kb3cgc2V0
RnJhbWU6d2luZG93RnJhbWUgZGlzcGxheTpOT107
</data>
<flag name="review"
          id="19106"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>