<?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>127588</bug_id>
          
          <creation_ts>2014-01-24 14:41:32 -0800</creation_ts>
          <short_desc>[CSS Shapes] Image valued shape can fail</short_desc>
          <delta_ts>2014-01-31 11:57:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971762</commentid>
    <comment_count>0</comment_count>
      <attachid>222157</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-01-24 14:41:32 -0800</bug_when>
    <thetext>Created attachment 222157
Test case.

If an image shape&apos;s implicit scale,translation causes the origin of the image to be offset more than shape-margin in the negative Y direction, the RasterShapeIntervals() class will fail in an ASSERT:

ASSERTION FAILED: static_cast&lt;int&gt;(y + m_shapeMargin) &gt;= 0 &amp;&amp; y + m_shapeMargin &lt; m_intervalLists.size()
/Users/hansmuller/webkit/Source/WebCore/rendering/shapes/RasterShape.h(65) : IntShapeIntervals &amp;WebCore::RasterShapeIntervals::intervalsAt(int)

The attached test case demonstrates the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973220</commentid>
    <comment_count>1</comment_count>
      <attachid>222531</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-01-28 16:40:46 -0800</bug_when>
    <thetext>Created attachment 222531
Patch

Correct the handling of image valued shapes that extend into or beyond the margin box. This can happen when object-fit causes one dimension of the shape to be greater than the corresponding margin box dimension.

Made some simplifications in RasterShapeIntervals::computeShapeMarginIntervals() by making the shapeMargin parameter an int, removing some unnecessary variables.

Revised the RasterShapeIntervals class. It&apos;s now a just a list of size() interval-lists, with valid indices: -offset() &lt;= y &lt; size() - offset(), or minY() to maxY(). If margin-top and shape-margin are specified, then offset() is the larger of shape-margin and margin-top. Similarly size() is the vertical size of the margin-box or the content-box expanded by shape-margin, whichever is larger. See computeShapeMarginIntervals().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973456</commentid>
    <comment_count>2</comment_count>
      <attachid>222531</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-01-29 13:40:07 -0800</bug_when>
    <thetext>Comment on attachment 222531
Patch

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

r-

Seems muddled with regards to vertical writing.

&gt; Source/WebCore/rendering/shapes/ShapeInfo.cpp:75
&gt; +static LayoutRect getShapeImageMarginRect(const RenderBox&amp; renderBox, const LayoutSize&amp; shapeSize)
&gt; +{
&gt; +    LayoutPoint marginBoxOrigin(-renderBox.marginLogicalLeft() - renderBox.borderAndPaddingLogicalLeft(), -renderBox.marginTop() - renderBox.borderTop() - renderBox.paddingTop());
&gt; +    LayoutSize marginBoxSizeDelta(renderBox.marginLogicalWidth() + renderBox.borderAndPaddingLogicalWidth(), renderBox.marginLogicalHeight() + renderBox.borderAndPaddingLogicalHeight());
&gt; +    return LayoutRect(marginBoxOrigin, shapeSize + marginBoxSizeDelta);
&gt; +}

This looks wrong with vertical writing. You&apos;re mixing physical and logical margins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973488</commentid>
    <comment_count>3</comment_count>
      <attachid>222598</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-01-29 15:24:46 -0800</bug_when>
    <thetext>Created attachment 222598
Patch

Yes, what I&apos;d written was inconsistent.  Sorry about that. 

I&apos;m now using the {padding,border,margin}Before() methods to compute the vertical coordinate of the margin rect.  Hopefully I&apos;ve got that right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974357</commentid>
    <comment_count>4</comment_count>
      <attachid>222598</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-01-31 10:48:29 -0800</bug_when>
    <thetext>Comment on attachment 222598
Patch

It would be nice to have a vertical writing mode test too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974359</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-31 10:49:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/15958369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974385</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2014-01-31 11:25:57 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 222598 [details])
&gt; It would be nice to have a vertical writing mode test too.

Good point.  I will add some writing mode depend tests in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974401</commentid>
    <comment_count>7</comment_count>
      <attachid>222598</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 11:57:13 -0800</bug_when>
    <thetext>Comment on attachment 222598
Patch

Clearing flags on attachment: 222598

Committed r163186: &lt;http://trac.webkit.org/changeset/163186&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974402</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 11:57:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>222157</attachid>
            <date>2014-01-24 14:41:32 -0800</date>
            <delta_ts>2014-01-24 14:41:32 -0800</delta_ts>
            <desc>Test case.</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>918</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+Ci8qIApUaGUgYXNwZWN0LXJhdGlvIHByZXNlcnZpbmcgb2Jq
ZWN0LWZpdDpjb3ZlciBwcm9wZXJ0eSBjYXVzZXMgdGhlIDEweDEwMCBpbWFnZSB0byBiZSBzY2Fs
ZWQgdG8gMTAweDEwMDAgYW5kIHRoZW4gY2VudGVyZWQuClRoZSBzaGFwZS1vdXRzaWRlIGlzIGNs
aXBwZWQgdG8gdGhlIGltYWdlLXNoYXBlJ3MgbWFyZ2luLWJveCwgd2hpY2ggbWVhbnMgdGhhdCBt
b3N0IG9mIHRoZSBzY2FsZWQgaW1hZ2Ugd2lsbCBiZSBjbGlwcGVkIGF3YXkuCiovCiNpbWFnZS1z
aGFwZSB7CiAgICBmbG9hdDogbGVmdDsKICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJk
YXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2Zycgd2lkdGg9JzEwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHdpZHRoPScxMCcgaGVpZ2h0
PScxMDAnIGZpbGw9J2JsdWUnLz48L3N2Zz4iKTsKICAgIHdpZHRoOiAxMDBweDsKICAgIGhlaWdo
dDogMjAwcHg7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsKfQoKI2NvbnRlbnQgewogICAgZm9udDog
NTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRp
YWxpYXNlZDsKICAgIGNvbG9yOiBncmVlbjsKfQo8L3N0eWxlPgo8ZGl2IGlkPSJjb250ZW50Ij4K
ICA8aW1nIGlkPSJpbWFnZS1zaGFwZSIKICAgIHNyYz0iZGF0YTppbWFnZS9zdmcreG1sO3V0Zjgs
PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMHB4JyBoZWln
aHQ9JzEwMHB4Jz48cmVjdCB3aWR0aD0nMTAnIGhlaWdodD0nMTAwJyBmaWxsPSdibHVlJy8+PC9z
dmc+Ij4KICA8L2ltZz4KICBYPGJyPlg8YnI+WDxicj5YPGJyPlgKPC9kaXY+CjwvYm9keT4KPC9o
dG1sPgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222531</attachid>
            <date>2014-01-28 16:40:46 -0800</date>
            <delta_ts>2014-01-29 15:24:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>21600</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMjg3ZTU0Li5lZTA3M2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDEt
MjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIEltYWdlIHZhbHVlZCBzaGFwZSBjYW4gZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgc2hhcGUtb3V0c2lkZSBsYXlvdXQgZm9yIGlt
YWdlIHZhbHVlZCBzaGFwZXMgd2hlcmUgb2JqZWN0LWZpdCBjYXVzZXMKKyAgICAgICAgdGhlIGlt
YWdlIHRvIGV4dGVuZCBpbnRvIG9yIGJleW9uZCB0aGUgaW1hZ2UgZWxlbWVudCdzIG1hcmdpbiBi
b3guCisKKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1v
dXRzaWRlLWltYWdlLWZpdC0wMDUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdl
LWZpdC0wMDYuaHRtbDogQWRkZWQuCisKIDIwMTQtMDEtMjggIENhcmxvcyBBbGJlcnRvIExvcGV6
IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWlt
YWdlLWZpdC0wMDUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41NDM5ZTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyNpbWFnZS1z
aGFwZSB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MjAwcHg7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cit9CisKKyNjb250ZW50IHsKKyAgICBmb250
OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPGRpdiBpZD0iY29u
dGVudCI+CisgIDxpbWcgaWQ9ImltYWdlLXNoYXBlIgorICAgIHNyYz0iZGF0YTppbWFnZS9zdmcr
eG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScx
MHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB3aWR0aD0nMTAnIGhlaWdodD0nMTAwJyBmaWxsPSdi
bHVlJy8+PC9zdmc+Ij4KKyAgPC9pbWc+CisgIFg8YnI+WDxicj5YPGJyPlg8YnI+WAorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVz
L3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lk
ZS1pbWFnZS1maXQtMDA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjViOTY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiAKK1RoZSBhc3BlY3QtcmF0aW8g
cHJlc2VydmluZyBvYmplY3QtZml0OmNvdmVyIHByb3BlcnR5IGNhdXNlcyB0aGUgMTB4MTAwIGlt
YWdlIHRvIGJlIHNjYWxlZCB0byAxMDB4MTAwMCBhbmQgdGhlbiBjZW50ZXJlZC4KK1RoZSBzaGFw
ZS1vdXRzaWRlIGlzIGNsaXBwZWQgdG8gdGhlIGltYWdlLXNoYXBlJ3MgbWFyZ2luLWJveCwgd2hp
Y2ggbWVhbnMgdGhhdCBtb3N0IG9mIHRoZSBzY2FsZWQgaW1hZ2Ugd2lsbCBiZSBjbGlwcGVkIGF3
YXkuCisqLworI2ltYWdlLXNoYXBlIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICAtd2Via2l0LXNo
YXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVj
dCB3aWR0aD0nMTAnIGhlaWdodD0nMTAwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgd2lk
dGg6IDEwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgbWFyZ2luLXJpZ2h0OiA1MHB4OyAv
KiBleHBvc2Ugc2hhcGUtb3V0c2lkZSBwcm9wZXJ0eSBmYWlsdXJlcyAqLworICAgIG9iamVjdC1m
aXQ6IGNvdmVyOworfQorCisjY29udGVudCB7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgY29s
b3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICA8aW1nIGlkPSJp
bWFnZS1zaGFwZSIKKyAgICBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTBweCcgaGVpZ2h0PScxMDBweCc+
PHJlY3Qgd2lkdGg9JzEwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiI+CisgIDwv
aW1nPgorICBYPGJyPlg8YnI+WDxicj5YPGJyPlgKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0
LTAwNi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFi
M2I2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogCitUaGUgYXNwZWN0
LXJhdGlvIHByZXNlcnZpbmcgb2JqZWN0LWZpdDpjb3ZlciBwcm9wZXJ0eSBjYXVzZXMgdGhlIDEw
eDEwMCBpbWFnZSB0byBiZSBzY2FsZWQgdG8gMTAweDEwMDAgYW5kIHRoZW4gY2VudGVyZWQuCitU
aGUgc2hhcGUtb3V0c2lkZSBpcyBjbGlwcGVkIHRvIHRoZSBpbWFnZS1zaGFwZSdzIG1hcmdpbi1i
b3gsIHdoaWNoIG1lYW5zIHRoYXQgbW9zdCBvZiB0aGUgc2NhbGVkIGltYWdlIHdpbGwgYmUgY2xp
cHBlZCBhd2F5LgorKi8KKyNpbWFnZS1zaGFwZSB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lk
dGg6IDEwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cisg
ICAgbWFyZ2luLXRvcDogNTBweDsKKyAgICBtYXJnaW4tYm90dG9tOiA1MHB4OworfQorCisjY29u
dGVudCB7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgLXdlYmtpdC1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHls
ZT4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICA8aW1nIGlkPSJpbWFnZS1zaGFwZSIKKyAgICBzcmM9
ImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnJyB3aWR0aD0nMTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3Qgd2lkdGg9JzEwJyBoZWln
aHQ9JzEwMCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiI+CisgIDwvaW1nPgorICBYPGJyPlg8YnI+WDxi
cj5YPGJyPlg8YnI+WDxicj5YCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0
c2lkZS1pbWFnZS1maXQtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjIzNjFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1p
bWFnZS1maXQtMDA2Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KKy8qIAorVGhlIGFzcGVjdC1yYXRpbyBwcmVzZXJ2aW5nIG9iamVjdC1maXQ6Y292ZXIgcHJv
cGVydHkgY2F1c2VzIHRoZSAxMHgxMDAgaW1hZ2UgdG8gYmUgc2NhbGVkIHRvIDEwMHgxMDAwIGFu
ZCB0aGVuIGNlbnRlcmVkLgorVGhlIHNoYXBlLW91dHNpZGUgaXMgY2xpcHBlZCB0byB0aGUgaW1h
Z2Utc2hhcGUncyBtYXJnaW4tYm94LCB3aGljaCBtZWFucyB0aGF0IG1vc3Qgb2YgdGhlIHNjYWxl
ZCBpbWFnZSB3aWxsIGJlIGNsaXBwZWQgYXdheS4KKyovCisjaW1hZ2Utc2hhcGUgeworICAgIGZs
b2F0OiBsZWZ0OworICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9
JzEwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHdpZHRoPScxMCcgaGVpZ2h0PScxMDAnIGZpbGw9
J2JsdWUnLz48L3N2Zz4iKTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICBvYmplY3QtZml0OiBjb3ZlcjsKKyAgICBtYXJnaW4tcmlnaHQ6IDUwcHg7IC8qIGV4cG9z
ZSBzaGFwZS1vdXRzaWRlIHByb3BlcnR5IGZhaWx1cmVzICovCisgICAgbWFyZ2luLXRvcDogNTBw
eDsgICAgIC8qIGV4cG9zZSAxMDB4NTAgc3RyaXBzIG9mIHRoZSBzaGFwZSBhYm92ZSBhbmQgYmVs
b3cgdGhlIFNWRyBpbWFnZSAqLworICAgIG1hcmdpbi1ib3R0b206IDUwcHg7Cit9CisKKyNjb250
ZW50IHsKKyAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAtd2Via2l0LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxl
PgorPGRpdiBpZD0iY29udGVudCI+CisgIDxpbWcgaWQ9ImltYWdlLXNoYXBlIgorICAgIHNyYz0i
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnIHdpZHRoPScxMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB3aWR0aD0nMTAnIGhlaWdo
dD0nMTAwJyBmaWxsPSdibHVlJy8+PC9zdmc+Ij4KKyAgPC9pbWc+CisgIFg8YnI+WDxicj5YPGJy
Plg8YnI+WDxicj5YPGJyPlgKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjUwMzM3My4uYjQ0NmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTAx
LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
cGVzXSBJbWFnZSB2YWx1ZWQgc2hhcGUgY2FuIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzU4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3QgdGhlIGhhbmRsaW5nIG9mIGltYWdlIHZh
bHVlZCBzaGFwZXMgdGhhdCBleHRlbmQgaW50byBvciBiZXlvbmQgdGhlCisgICAgICAgIG1hcmdp
biBib3guIFRoaXMgY2FuIGhhcHBlbiB3aGVuIG9iamVjdC1maXQgY2F1c2VzIG9uZSBkaW1lbnNp
b24gb2YgdGhlIHNoYXBlCisgICAgICAgIHRvIGJlIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9u
ZGluZyBtYXJnaW4gYm94IGRpbWVuc2lvbi4KKworICAgICAgICBNYWRlIHNvbWUgc2ltcGxpZmlj
YXRpb25zIGluIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZh
bHMoKQorICAgICAgICBieSBtYWtpbmcgdGhlIHNoYXBlTWFyZ2luIHBhcmFtZXRlciBhbiBpbnQs
IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgdmFyaWFibGVzLgorCisgICAgICAgIFJldmlzZWQg
dGhlIFJhc3RlclNoYXBlSW50ZXJ2YWxzIGNsYXNzLiBJdCdzIG5vdyBhIGp1c3QgYSBsaXN0IG9m
IHNpemUoKSBpbnRlcnZhbC1saXN0cywKKyAgICAgICAgd2l0aCB2YWxpZCBpbmRpY2VzOiAtb2Zm
c2V0KCkgPD0geSA8IHNpemUoKSAtIG9mZnNldCgpLCBvciBtaW5ZKCkgdG8gbWF4WSgpLiBJZiBt
YXJnaW4tdG9wCisgICAgICAgIGFuZCBzaGFwZS1tYXJnaW4gYXJlIHNwZWNpZmllZCwgdGhlbiBv
ZmZzZXQoKSBpcyB0aGUgbGFyZ2VyIG9mIHNoYXBlLW1hcmdpbiBhbmQgbWFyZ2luLXRvcC4KKyAg
ICAgICAgU2ltaWxhcmx5IHNpemUoKSBpcyB0aGUgdmVydGljYWwgc2l6ZSBvZiB0aGUgbWFyZ2lu
LWJveCBvciB0aGUgY29udGVudC1ib3ggZXhwYW5kZWQgYnkKKyAgICAgICAgc2hhcGUtbWFyZ2lu
LCB3aGljaGV2ZXIgaXMgbGFyZ2VyLiBTZWUgY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKCku
CisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBl
LW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjptaW5ZKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
SW50ZXJ2YWxzOjptYXhZKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxz
OjppbnRlcnZhbHNBdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHA6CisKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYXBlSW1hZ2VSZXBsYWNlZFJlY3Qp
OgorICAgICAgICBUaGUgcmVjdCB0aGF0IHRoZSBpbWFnZSB3aWxsIGJlIGRyYXduIGludG8uIFRo
aXMgcmVjdCBjYW4gaW1wbHkgaW1hZ2UKKyAgICAgICAgc2NhbGluZyBhbmQgdHJhbnNsYXRpb24u
CisKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYXBlSW1hZ2VNYXJnaW5SZWN0KToKKyAgICAgICAg
VGhlIG1hcmdpbiByZWN0IHJlbGF0aXZlIHRvbyB0aGUgKDAsMCBvcmlnaW4pIHNoYXBlIGNvbnRl
bnQgcmVjdC4KKworICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbmZvPFJlbmRlclR5cGU+Ojpjb21w
dXRlZFNoYXBlKToKKwogMjAxNC0wMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcAppbmRleCBlNmEzMGU5Li5kOTIxMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMjE3LDI1ICsyMTcsMjMgQEAgdm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIs
IEludFNoYXBlSW50ZXJ2YWwKIAogLy8gQ3VycmVudGx5IGxpbWl0ZWQgdG8gY29tcHV0aW5nIHRo
ZSBtYXJnaW4gYm91bmRhcnkgZm9yIHNoYXBlLW91dHNpZGUgZm9yIGZsb2F0cywgc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCiAKLVBhc3NPd25QdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVN
YXJnaW5JbnRlcnZhbHModW5zaWduZWQgc2hhcGVNYXJnaW4pIGNvbnN0CitQYXNzT3duUHRyPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFy
Z2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKLSAgICBPd25QdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFs
cyhzaXplKCksIHNoYXBlTWFyZ2luKSk7CisgICAgaW50IG1hcmdpbkludGVydmFsc1NpemUgPSAo
b2Zmc2V0KCkgPiBzaGFwZU1hcmdpbikgPyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIg
KyBzaGFwZU1hcmdpbiAqIDI7CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1
bHQgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMobWFyZ2luSW50ZXJ2YWxzU2l6
ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSkpOwogICAgIE1hcmdpbkludGVydmFs
R2VuZXJhdG9yIG1hcmdpbkludGVydmFsR2VuZXJhdG9yKHNoYXBlTWFyZ2luKTsKIAotICAgIGlu
dCBtaW5ZID0gYm91bmRzKCkueSgpOwotICAgIGludCBtYXhZID0gYm91bmRzKCkubWF4WSgpOwot
Ci0gICAgZm9yIChpbnQgeSA9IG1pblk7IHkgPCBtYXhZOyArK3kpIHsKKyAgICBmb3IgKGludCB5
ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKICAgICAgICAgY29u
c3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWxBdFkgPSBsaW1pdEludGVydmFsQXQoeSk7CiAg
ICAgICAgIGlmIChpbnRlcnZhbEF0WS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5zZXQoeSwgaW50ZXJ2YWxBdFkpOwot
ICAgICAgICBpbnQgbWFyZ2luWTAgPSB5IC0gY2xhbXBUb0ludGVnZXIoc2hhcGVNYXJnaW4pOwot
ICAgICAgICBpbnQgbWFyZ2luWTEgPSB5ICsgY2xhbXBUb0ludGVnZXIoc2hhcGVNYXJnaW4pOwor
ICAgICAgICBpbnQgbWFyZ2luWTAgPSBzdGQ6Om1heChtaW5ZKCksIHkgLSBzaGFwZU1hcmdpbik7
CisgICAgICAgIGludCBtYXJnaW5ZMSA9IHN0ZDo6bWluKG1heFkoKSwgeSArIHNoYXBlTWFyZ2lu
KTsKIAogICAgICAgICBmb3IgKGludCBtYXJnaW5ZID0geSAtIDE7IG1hcmdpblkgPj0gbWFyZ2lu
WTA7IC0tbWFyZ2luWSkgewotICAgICAgICAgICAgaWYgKG1hcmdpblkgPiBtaW5ZICYmIGxpbWl0
SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkpCisgICAgICAgICAgICBp
ZiAobWFyZ2luWSA+IGJvdW5kcygpLnkoKSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2luWSkuY29u
dGFpbnMoaW50ZXJ2YWxBdFkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
cmVzdWx0LT51bml0ZU1hcmdpbkludGVydmFsKG1hcmdpblksIG1hcmdpbkludGVydmFsR2VuZXJh
dG9yLmludGVydmFsQXQobWFyZ2luWSkpOwogICAgICAgICB9CkBAIC0yNDMsNyArMjQxLDcgQEAg
UGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNv
bXB1dGVTaGFwZU1hcmdpbkludGVydmEKICAgICAgICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVy
dmFsKHksIG1hcmdpbkludGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQoeSkpOwogCiAgICAgICAg
IGZvciAoaW50IG1hcmdpblkgPSB5ICsgMTsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsgKyttYXJnaW5Z
KSB7Ci0gICAgICAgICAgICBpZiAobWFyZ2luWSA8IG1heFkgJiYgbGltaXRJbnRlcnZhbEF0KG1h
cmdpblkpLmNvbnRhaW5zKGludGVydmFsQXRZKSkKKyAgICAgICAgICAgIGlmIChtYXJnaW5ZIDwg
Ym91bmRzKCkubWF4WSgpICYmIGxpbWl0SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRl
cnZhbEF0WSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICByZXN1bHQtPnVu
aXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2
YWxBdChtYXJnaW5ZKSk7CiAgICAgICAgIH0KQEAgLTI3NSw5ICsyNzMsMTEgQEAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAog
ICAgIGlmICghc2hhcGVNYXJnaW4oKSkKICAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKIAot
ICAgIHVuc2lnbmVkIG1hcmdpbkJvdW5kYXJ5UmFkaXVzID0gc3RkOjptaW4oY2xhbXBUb1Vuc2ln
bmVkKGNlaWwoc2hhcGVNYXJnaW4oKSkpLCBzdGQ6Om1heDx1bnNpZ25lZD4obV9pbWFnZVNpemUu
d2lkdGgoKSwgbV9pbWFnZVNpemUuaGVpZ2h0KCkpKTsKLSAgICBpZiAoIW1fbWFyZ2luSW50ZXJ2
YWxzKQorICAgIGludCBtYXJnaW5Cb3VuZGFyeVJhZGl1cyA9IHN0ZDo6bWluKGNsYW1wVG9JbnRl
Z2VyKGNlaWwoc2hhcGVNYXJnaW4oKSkpLCBzdGQ6Om1heChtX2ltYWdlU2l6ZS53aWR0aCgpLCBt
X2ltYWdlU2l6ZS5oZWlnaHQoKSkpOworICAgIGlmICghbV9tYXJnaW5JbnRlcnZhbHMpIHsKKyAg
ICAgICAgQVNTRVJUKG1hcmdpbkJvdW5kYXJ5UmFkaXVzID49IDApOwogICAgICAgICBtX21hcmdp
bkludGVydmFscyA9IG1faW50ZXJ2YWxzLT5jb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMobWFy
Z2luQm91bmRhcnlSYWRpdXMpOworICAgIH0KIAogICAgIHJldHVybiAqbV9tYXJnaW5JbnRlcnZh
bHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgK
aW5kZXggYzA0ZWYxNS4uZTEwZjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNDAsMTAgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgewogcHVibGljOgotICAgIFJhc3RlclNo
YXBlSW50ZXJ2YWxzKHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIHNoYXBlTWFyZ2luID0gMCkKLSAg
ICAgICAgOiBtX3NoYXBlTWFyZ2luKHNoYXBlTWFyZ2luKQorICAgIFJhc3RlclNoYXBlSW50ZXJ2
YWxzKHVuc2lnbmVkIHNpemUsIGludCBvZmZzZXQgPSAwKQorICAgICAgICA6IG1fb2Zmc2V0KG9m
ZnNldCkKICAgICB7Ci0gICAgICAgIG1faW50ZXJ2YWxMaXN0cy5yZXNpemUoc2l6ZSArIHNoYXBl
TWFyZ2luICogMik7CisgICAgICAgIG1faW50ZXJ2YWxMaXN0cy5yZXNpemUoc2l6ZSk7CiAgICAg
fQogCiAgICAgY29uc3QgSW50UmVjdCYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7
IH0KQEAgLTUzLDIzICs1MywyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRJbmNsdWRlZEludGVy
dmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAg
ICAgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRl
cnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxZKGlu
dCBtaW5ZLCBjb25zdCBJbnRTaXplJiBtaW5TaXplLCBMYXlvdXRVbml0JiByZXN1bHQpIGNvbnN0
OwotICAgIFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGNvbXB1dGVTaGFwZU1hcmdp
bkludGVydmFscyh1bnNpZ25lZCBzaGFwZU1hcmdpbikgY29uc3Q7CisgICAgUGFzc093blB0cjxS
YXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFw
ZU1hcmdpbikgY29uc3Q7CiAKICAgICB2b2lkIGJ1aWxkQm91bmRzUGF0aChQYXRoJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsTGlz
dHMuc2l6ZSgpOyB9CisgICAgaW50IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CisgICAgaW50IG1pblkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZzZXQ7IH0KKyAgICBpbnQgbWF4
WSgpIGNvbnN0IHsgcmV0dXJuIC1tX29mZnNldCArIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0K
IAogICAgIEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHNBdChpbnQgeSkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHkgKyBtX3NoYXBlTWFyZ2luKSA+PSAwICYmIHkg
KyBtX3NoYXBlTWFyZ2luIDwgbV9pbnRlcnZhbExpc3RzLnNpemUoKSk7Ci0gICAgICAgIHJldHVy
biBtX2ludGVydmFsTGlzdHNbeSArIG1fc2hhcGVNYXJnaW5dOworICAgICAgICBBU1NFUlQoeSAr
IG1fb2Zmc2V0ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBt
X2ludGVydmFsTGlzdHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5
ICsgbV9vZmZzZXRdOwogICAgIH0KIAogICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRl
cnZhbHNBdChpbnQgeSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxp
bnQ+KHkgKyBtX3NoYXBlTWFyZ2luKSA+PSAwICYmIHkgKyBtX3NoYXBlTWFyZ2luIDwgbV9pbnRl
cnZhbExpc3RzLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeSArIG1f
c2hhcGVNYXJnaW5dOworICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFsTGlzdHMuc2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5ICsgbV9vZmZzZXRdOwogICAgIH0KIAog
ICAgIEludFNoYXBlSW50ZXJ2YWwgbGltaXRJbnRlcnZhbEF0KGludCB5KSBjb25zdApAQCAtODMs
NyArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwg
Y29uc3QgSW50U2hhcGVJbnRlcnZhbCYpOwogICAgIEludFJlY3QgbV9ib3VuZHM7CiAgICAgVmVj
dG9yPEludFNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsTGlzdHM7Ci0gICAgdW5zaWduZWQgbV9z
aGFwZU1hcmdpbjsKKyAgICBpbnQgbV9vZmZzZXQ7CiB9OwogCiBjbGFzcyBSYXN0ZXJTaGFwZSA6
IHB1YmxpYyBTaGFwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CmluZGV4IDAxMjMyNDkuLmM5MTA2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCkBAIC0yNTEsMzYgKzI1MSwzOCBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0
UwogICAgIHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hhcGU+IFNo
YXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGltYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6
ZSYsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGlu
ZykKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHls
ZUltYWdlJiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGlt
YWdlUiwgY29uc3QgTGF5b3V0UmVjdCYgbWFyZ2luUiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQogewogICAgIEFTU0VSVChzdHlsZUltYWdl
LmNhY2hlZEltYWdlKCkpOwogICAgIEFTU0VSVChzdHlsZUltYWdlLmNhY2hlZEltYWdlKCktPmhh
c0ltYWdlKCkpOwogCi0gICAgSW50UmVjdCB0b1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlt
YWdlUmVjdCk7Ci0gICAgSW50U2l6ZSBidWZmZXJTaXplID0gdG9SZWN0LnNpemUoKTsKLSAgICBJ
bnRTaXplIHJhc3RlclNpemUgPSBJbnRTaXplKHRvUmVjdC5tYXhYKCksIHRvUmVjdC5tYXhZKCkp
OwotICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIo
bmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKHJhc3RlclNpemUuaGVpZ2h0KCkpKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShidWZmZXJTaXplKTsKKyAgICBJbnRSZWN0IGltYWdlUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QoaW1hZ2VSKTsKKyAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0
KG1hcmdpblIpOworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0g
YWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKG1hcmdpblJlY3QuaGVpZ2h0KCksIC1t
YXJnaW5SZWN0LnkoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCkpOwogCiAgICAgaWYg
KGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2Uoc3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRSZWN0KEludFBvaW50KCksIGJ1ZmZlclNpemUpKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2Uoc3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsK
IAotICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1
ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgYnVmZmVy
U2l6ZSkpOworICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBp
bWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0g
cGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQg
PSAzOyAvLyBFYWNoIHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3Qg
YWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKIAotICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlclNpemUud2lkdGgoKSAqIGJ1ZmZlclNpemUuaGVpZ2h0
KCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7IC8vIHNhbml0eSBjaGVjawotICAgICAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBidWZmZXJTaXplLmhlaWdodCgpOyArK3kpIHsKKyAgICAg
ICAgaW50IG1pbkJ1ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0LnkoKSAtIGltYWdlUmVj
dC55KCkpOworICAgICAgICBpbnQgbWF4QnVmZmVyWSA9IHN0ZDo6bWluKGltYWdlUmVjdC5oZWln
aHQoKSwgbWFyZ2luUmVjdC5tYXhZKCkgLSBpbWFnZVJlY3QueSgpKTsKKworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlUmVjdC53aWR0aCgpICogaW1hZ2VSZWN0LmhlaWdo
dCgpICogNCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgeyAvLyBzYW5pdHkgY2hlY2sKKyAgICAgICAg
ICAgIGZvciAoaW50IHkgPSBtaW5CdWZmZXJZOyB5IDwgbWF4QnVmZmVyWTsgKyt5KSB7CiAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOwotICAgICAgICAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgYnVmZmVyU2l6ZS53aWR0aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkg
eworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VSZWN0LndpZHRoKCk7
ICsreCwgcGl4ZWxBcnJheU9mZnNldCArPSA0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgYWxwaGEgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQXJyYXlPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBib29sIGFscGhhQWJvdmVUaHJlc2hvbGQgPSBhbHBoYSA+IGFscGhhUGl4ZWxU
aHJlc2hvbGQ7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFggPT0gLTEgJiYgYWxwaGFB
Ym92ZVRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0geDsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFhbHBoYUFib3Zl
VGhyZXNob2xkIHx8IHggPT0gYnVmZmVyU2l6ZS53aWR0aCgpIC0gMSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVydmFscy0+YXBwZW5kSW50ZXJ2YWwoeSArIHRvUmVjdC55KCksIHN0
YXJ0WCArIHRvUmVjdC54KCksIHggKyB0b1JlY3QueCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFhbHBoYUFib3ZlVGhyZXNob2xkIHx8IHggPT0g
aW1hZ2VSZWN0LndpZHRoKCkgLSAxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2
YWxzLT5hcHBlbmRJbnRlcnZhbCh5ICsgaW1hZ2VSZWN0LnkoKSwgc3RhcnRYICsgaW1hZ2VSZWN0
LngoKSwgeCArIGltYWdlUmVjdC54KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRY
ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yODgs
NyArMjkwLDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGNv
bnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVy
U2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSwgcmFzdGVyU2l6ZSkpOworICAgIE93blB0cjxSYXN0
ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxz
LnJlbGVhc2UoKSwgbWFyZ2luUmVjdC5zaXplKCkpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0
aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0
VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKICAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0g
ZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuaAppbmRleCBhYjcxZDU1Li44Mzg1M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hh
cGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0
aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4g
Y3JlYXRlUmFzdGVyU2hhcGUoY29uc3QgU3R5bGVJbWFnZSYsIGZsb2F0IHRocmVzaG9sZCwgY29u
c3QgTGF5b3V0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6
ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlUmFzdGVyU2hhcGUoY29uc3QgU3R5bGVJbWFnZSYs
IGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgZHJhd1JlY3QsIGNvbnN0IExheW91
dFJlY3QmIGNsaXBSZWN0LCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRp
bmcpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVMYXlvdXRCb3hTaGFwZShj
b25zdCBSb3VuZGVkUmVjdCYsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IDVlMmFmOTIuLjc1ZWU2ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgYm9vbCBjaGVja1NoYXBlSW1hZ2VPcmlnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBD
YWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMg
TGF5b3V0UmVjdCBnZXRTaGFwZUltYWdlUmVjdChjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdl
LCBjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCkKK3N0YXRpYyBMYXlvdXRSZWN0IGdldFNoYXBl
SW1hZ2VSZXBsYWNlZFJlY3QoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIGNvbnN0IFN0eWxl
SW1hZ2UmIHN0eWxlSW1hZ2UpCiB7CiAgICAgaWYgKHJlbmRlckJveC5pc1JlbmRlckltYWdlKCkp
IHsKICAgICAgICAgY29uc3QgUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlID0gKnRvUmVuZGVySW1h
Z2UoJnJlbmRlckJveCk7CkBAIC02Nyw2ICs2NywxMyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBnZXRT
aGFwZUltYWdlUmVjdChjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdlLCBjb25zdCBSZW5kZXJC
bwogICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KCksIHN0eWxlSW1hZ2UuY2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKS0+c2l6ZSgpKTsKIH0KIAorc3RhdGljIExheW91dFJlY3QgZ2V0U2hh
cGVJbWFnZU1hcmdpblJlY3QoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIGNvbnN0IExheW91
dFNpemUmIHNoYXBlU2l6ZSkKK3sKKyAgICBMYXlvdXRQb2ludCBtYXJnaW5Cb3hPcmlnaW4oLXJl
bmRlckJveC5tYXJnaW5Mb2dpY2FsTGVmdCgpIC0gcmVuZGVyQm94LmJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsTGVmdCgpLCAtcmVuZGVyQm94Lm1hcmdpblRvcCgpIC0gcmVuZGVyQm94LmJvcmRlclRv
cCgpIC0gcmVuZGVyQm94LnBhZGRpbmdUb3AoKSk7CisgICAgTGF5b3V0U2l6ZSBtYXJnaW5Cb3hT
aXplRGVsdGEocmVuZGVyQm94Lm1hcmdpbkxvZ2ljYWxXaWR0aCgpICsgcmVuZGVyQm94LmJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgcmVuZGVyQm94Lm1hcmdpbkxvZ2ljYWxIZWlnaHQo
KSArIHJlbmRlckJveC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKKyAgICByZXR1
cm4gTGF5b3V0UmVjdChtYXJnaW5Cb3hPcmlnaW4sIHNoYXBlU2l6ZSArIG1hcmdpbkJveFNpemVE
ZWx0YSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIFJlbmRlclR5cGU+CiBjb25zdCBTaGFwZSYgU2hh
cGVJbmZvPFJlbmRlclR5cGU+Ojpjb21wdXRlZFNoYXBlKCkgY29uc3QKIHsKQEAgLTg4LDcgKzk1
LDkgQEAgY29uc3QgU2hhcGUmIFNoYXBlSW5mbzxSZW5kZXJUeXBlPjo6Y29tcHV0ZWRTaGFwZSgp
IGNvbnN0CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZTogewogICAgICAgICBBU1NFUlQoc2hh
cGVWYWx1ZS0+aW1hZ2UoKSk7CiAgICAgICAgIGNvbnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2Ug
PSAqKHNoYXBlVmFsdWUtPmltYWdlKCkpOwotICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0
ZVJhc3RlclNoYXBlKHN0eWxlSW1hZ2UsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGdldFNoYXBlSW1h
Z2VSZWN0KHN0eWxlSW1hZ2UsIG1fcmVuZGVyZXIpLCBtX3NoYXBlTG9naWNhbFNpemUsIHdyaXRp
bmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBpbWFn
ZVJlY3QgPSBnZXRTaGFwZUltYWdlUmVwbGFjZWRSZWN0KG1fcmVuZGVyZXIsIHN0eWxlSW1hZ2Up
OworICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SZWN0ID0gZ2V0U2hhcGVJbWFnZU1h
cmdpblJlY3QobV9yZW5kZXJlciwgbV9zaGFwZUxvZ2ljYWxTaXplKTsKKyAgICAgICAgbV9zaGFw
ZSA9IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShzdHlsZUltYWdlLCBzaGFwZUltYWdlVGhyZXNo
b2xkLCBpbWFnZVJlY3QsIG1hcmdpblJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpCb3g6IHsK
</data>
<flag name="review"
          id="246573"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222598</attachid>
            <date>2014-01-29 15:24:46 -0800</date>
            <delta_ts>2014-01-31 11:57:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>21609</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMjg3ZTU0Li5lZTA3M2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDEt
MjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFw
ZXNdIEltYWdlIHZhbHVlZCBzaGFwZSBjYW4gZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgc2hhcGUtb3V0c2lkZSBsYXlvdXQgZm9yIGlt
YWdlIHZhbHVlZCBzaGFwZXMgd2hlcmUgb2JqZWN0LWZpdCBjYXVzZXMKKyAgICAgICAgdGhlIGlt
YWdlIHRvIGV4dGVuZCBpbnRvIG9yIGJleW9uZCB0aGUgaW1hZ2UgZWxlbWVudCdzIG1hcmdpbiBi
b3guCisKKyAgICAgICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1v
dXRzaWRlLWltYWdlLWZpdC0wMDUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRz
L3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdl
LWZpdC0wMDYuaHRtbDogQWRkZWQuCisKIDIwMTQtMDEtMjggIENhcmxvcyBBbGJlcnRvIExvcGV6
IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWlt
YWdlLWZpdC0wMDUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41NDM5ZTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1pbWFnZS1maXQtMDA1LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyNpbWFnZS1z
aGFwZSB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGhlaWdodDog
MjAwcHg7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cit9CisKKyNjb250ZW50IHsKKyAgICBmb250
OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBh
bnRpYWxpYXNlZDsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPGRpdiBpZD0iY29u
dGVudCI+CisgIDxpbWcgaWQ9ImltYWdlLXNoYXBlIgorICAgIHNyYz0iZGF0YTppbWFnZS9zdmcr
eG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScx
MHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB3aWR0aD0nMTAnIGhlaWdodD0nMTAwJyBmaWxsPSdi
bHVlJy8+PC9zdmc+Ij4KKyAgPC9pbWc+CisgIFg8YnI+WDxicj5YPGJyPlg8YnI+WAorPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVz
L3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lk
ZS1pbWFnZS1maXQtMDA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjViOTY2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiAKK1RoZSBhc3BlY3QtcmF0aW8g
cHJlc2VydmluZyBvYmplY3QtZml0OmNvdmVyIHByb3BlcnR5IGNhdXNlcyB0aGUgMTB4MTAwIGlt
YWdlIHRvIGJlIHNjYWxlZCB0byAxMDB4MTAwMCBhbmQgdGhlbiBjZW50ZXJlZC4KK1RoZSBzaGFw
ZS1vdXRzaWRlIGlzIGNsaXBwZWQgdG8gdGhlIGltYWdlLXNoYXBlJ3MgbWFyZ2luLWJveCwgd2hp
Y2ggbWVhbnMgdGhhdCBtb3N0IG9mIHRoZSBzY2FsZWQgaW1hZ2Ugd2lsbCBiZSBjbGlwcGVkIGF3
YXkuCisqLworI2ltYWdlLXNoYXBlIHsKKyAgICBmbG9hdDogbGVmdDsKKyAgICAtd2Via2l0LXNo
YXBlLW91dHNpZGU6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVj
dCB3aWR0aD0nMTAnIGhlaWdodD0nMTAwJyBmaWxsPSdibHVlJy8+PC9zdmc+Iik7CisgICAgd2lk
dGg6IDEwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgbWFyZ2luLXJpZ2h0OiA1MHB4OyAv
KiBleHBvc2Ugc2hhcGUtb3V0c2lkZSBwcm9wZXJ0eSBmYWlsdXJlcyAqLworICAgIG9iamVjdC1m
aXQ6IGNvdmVyOworfQorCisjY29udGVudCB7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgY29s
b3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICA8aW1nIGlkPSJp
bWFnZS1zaGFwZSIKKyAgICBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTBweCcgaGVpZ2h0PScxMDBweCc+
PHJlY3Qgd2lkdGg9JzEwJyBoZWlnaHQ9JzEwMCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiI+CisgIDwv
aW1nPgorICBYPGJyPlg8YnI+WDxicj5YPGJyPlgKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1vdXRzaWRlLWZsb2F0
cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBlLW91dHNpZGUtaW1hZ2UtZml0
LTAwNi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFi
M2I2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogCitUaGUgYXNwZWN0
LXJhdGlvIHByZXNlcnZpbmcgb2JqZWN0LWZpdDpjb3ZlciBwcm9wZXJ0eSBjYXVzZXMgdGhlIDEw
eDEwMCBpbWFnZSB0byBiZSBzY2FsZWQgdG8gMTAweDEwMDAgYW5kIHRoZW4gY2VudGVyZWQuCitU
aGUgc2hhcGUtb3V0c2lkZSBpcyBjbGlwcGVkIHRvIHRoZSBpbWFnZS1zaGFwZSdzIG1hcmdpbi1i
b3gsIHdoaWNoIG1lYW5zIHRoYXQgbW9zdCBvZiB0aGUgc2NhbGVkIGltYWdlIHdpbGwgYmUgY2xp
cHBlZCBhd2F5LgorKi8KKyNpbWFnZS1zaGFwZSB7CisgICAgZmxvYXQ6IGxlZnQ7CisgICAgd2lk
dGg6IDEwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgb2JqZWN0LWZpdDogY292ZXI7Cisg
ICAgbWFyZ2luLXRvcDogNTBweDsKKyAgICBtYXJnaW4tYm90dG9tOiA1MHB4OworfQorCisjY29u
dGVudCB7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgLXdlYmtpdC1m
b250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHls
ZT4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorICA8aW1nIGlkPSJpbWFnZS1zaGFwZSIKKyAgICBzcmM9
ImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnJyB3aWR0aD0nMTBweCcgaGVpZ2h0PScxMDBweCc+PHJlY3Qgd2lkdGg9JzEwJyBoZWln
aHQ9JzEwMCcgZmlsbD0nYmx1ZScvPjwvc3ZnPiI+CisgIDwvaW1nPgorICBYPGJyPlg8YnI+WDxi
cj5YPGJyPlg8YnI+WDxicj5YCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0
c2lkZS1pbWFnZS1maXQtMDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1v
dXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjIzNjFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtb3V0c2lkZS1mbG9hdHMvc2hhcGUtb3V0c2lkZS1p
bWFnZS1maXQtMDA2Lmh0bWwKQEAgLTAsMCArMSwzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KKy8qIAorVGhlIGFzcGVjdC1yYXRpbyBwcmVzZXJ2aW5nIG9iamVjdC1maXQ6Y292ZXIgcHJv
cGVydHkgY2F1c2VzIHRoZSAxMHgxMDAgaW1hZ2UgdG8gYmUgc2NhbGVkIHRvIDEwMHgxMDAwIGFu
ZCB0aGVuIGNlbnRlcmVkLgorVGhlIHNoYXBlLW91dHNpZGUgaXMgY2xpcHBlZCB0byB0aGUgaW1h
Z2Utc2hhcGUncyBtYXJnaW4tYm94LCB3aGljaCBtZWFucyB0aGF0IG1vc3Qgb2YgdGhlIHNjYWxl
ZCBpbWFnZSB3aWxsIGJlIGNsaXBwZWQgYXdheS4KKyovCisjaW1hZ2Utc2hhcGUgeworICAgIGZs
b2F0OiBsZWZ0OworICAgIC13ZWJraXQtc2hhcGUtb3V0c2lkZTogdXJsKCJkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9
JzEwcHgnIGhlaWdodD0nMTAwcHgnPjxyZWN0IHdpZHRoPScxMCcgaGVpZ2h0PScxMDAnIGZpbGw9
J2JsdWUnLz48L3N2Zz4iKTsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICBvYmplY3QtZml0OiBjb3ZlcjsKKyAgICBtYXJnaW4tcmlnaHQ6IDUwcHg7IC8qIGV4cG9z
ZSBzaGFwZS1vdXRzaWRlIHByb3BlcnR5IGZhaWx1cmVzICovCisgICAgbWFyZ2luLXRvcDogNTBw
eDsgICAgIC8qIGV4cG9zZSAxMDB4NTAgc3RyaXBzIG9mIHRoZSBzaGFwZSBhYm92ZSBhbmQgYmVs
b3cgdGhlIFNWRyBpbWFnZSAqLworICAgIG1hcmdpbi1ib3R0b206IDUwcHg7Cit9CisKKyNjb250
ZW50IHsKKyAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAtd2Via2l0LWZv
bnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxl
PgorPGRpdiBpZD0iY29udGVudCI+CisgIDxpbWcgaWQ9ImltYWdlLXNoYXBlIgorICAgIHNyYz0i
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnIHdpZHRoPScxMHB4JyBoZWlnaHQ9JzEwMHB4Jz48cmVjdCB3aWR0aD0nMTAnIGhlaWdo
dD0nMTAwJyBmaWxsPSdibHVlJy8+PC9zdmc+Ij4KKyAgPC9pbWc+CisgIFg8YnI+WDxicj5YPGJy
Plg8YnI+WDxicj5YPGJyPlgKKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNjUwMzM3My4uYjQ0NmZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE0LTAx
LTI4ICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
cGVzXSBJbWFnZSB2YWx1ZWQgc2hhcGUgY2FuIGZhaWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzU4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcnJlY3QgdGhlIGhhbmRsaW5nIG9mIGltYWdlIHZh
bHVlZCBzaGFwZXMgdGhhdCBleHRlbmQgaW50byBvciBiZXlvbmQgdGhlCisgICAgICAgIG1hcmdp
biBib3guIFRoaXMgY2FuIGhhcHBlbiB3aGVuIG9iamVjdC1maXQgY2F1c2VzIG9uZSBkaW1lbnNp
b24gb2YgdGhlIHNoYXBlCisgICAgICAgIHRvIGJlIGdyZWF0ZXIgdGhhbiB0aGUgY29ycmVzcG9u
ZGluZyBtYXJnaW4gYm94IGRpbWVuc2lvbi4KKworICAgICAgICBNYWRlIHNvbWUgc2ltcGxpZmlj
YXRpb25zIGluIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZh
bHMoKQorICAgICAgICBieSBtYWtpbmcgdGhlIHNoYXBlTWFyZ2luIHBhcmFtZXRlciBhbiBpbnQs
IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgdmFyaWFibGVzLgorCisgICAgICAgIFJldmlzZWQg
dGhlIFJhc3RlclNoYXBlSW50ZXJ2YWxzIGNsYXNzLiBJdCdzIG5vdyBhIGp1c3QgYSBsaXN0IG9m
IHNpemUoKSBpbnRlcnZhbC1saXN0cywKKyAgICAgICAgd2l0aCB2YWxpZCBpbmRpY2VzOiAtb2Zm
c2V0KCkgPD0geSA8IHNpemUoKSAtIG9mZnNldCgpLCBvciBtaW5ZKCkgdG8gbWF4WSgpLiBJZiBt
YXJnaW4tdG9wCisgICAgICAgIGFuZCBzaGFwZS1tYXJnaW4gYXJlIHNwZWNpZmllZCwgdGhlbiBv
ZmZzZXQoKSBpcyB0aGUgbGFyZ2VyIG9mIHNoYXBlLW1hcmdpbiBhbmQgbWFyZ2luLXRvcC4KKyAg
ICAgICAgU2ltaWxhcmx5IHNpemUoKSBpcyB0aGUgdmVydGljYWwgc2l6ZSBvZiB0aGUgbWFyZ2lu
LWJveCBvciB0aGUgY29udGVudC1ib3ggZXhwYW5kZWQgYnkKKyAgICAgICAgc2hhcGUtbWFyZ2lu
LCB3aGljaGV2ZXIgaXMgbGFyZ2VyLiBTZWUgY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKCku
CisKKyAgICAgICAgVGVzdHM6IGZhc3Qvc2hhcGVzL3NoYXBlLW91dHNpZGUtZmxvYXRzL3NoYXBl
LW91dHNpZGUtaW1hZ2UtZml0LTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYXBlcy9z
aGFwZS1vdXRzaWRlLWZsb2F0cy9zaGFwZS1vdXRzaWRlLWltYWdlLWZpdC0wMDYuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjptaW5ZKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
SW50ZXJ2YWxzOjptYXhZKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxz
OjppbnRlcnZhbHNBdCk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHA6CisKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYXBlSW1hZ2VSZXBsYWNlZFJlY3Qp
OgorICAgICAgICBUaGUgcmVjdCB0aGF0IHRoZSBpbWFnZSB3aWxsIGJlIGRyYXduIGludG8uIFRo
aXMgcmVjdCBjYW4gaW1wbHkgaW1hZ2UKKyAgICAgICAgc2NhbGluZyBhbmQgdHJhbnNsYXRpb24u
CisKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYXBlSW1hZ2VNYXJnaW5SZWN0KToKKyAgICAgICAg
VGhlIG1hcmdpbiByZWN0IHJlbGF0aXZlIHRvbyB0aGUgKDAsMCBvcmlnaW4pIHNoYXBlIGNvbnRl
bnQgcmVjdC4KKworICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbmZvPFJlbmRlclR5cGU+Ojpjb21w
dXRlZFNoYXBlKToKKwogMjAxNC0wMS0yOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgRG9jdW1lbnQ6OnRvcERvY3VtZW50KCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcAppbmRleCBlNmEzMGU5Li5kOTIxMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMjE3LDI1ICsyMTcsMjMgQEAgdm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIs
IEludFNoYXBlSW50ZXJ2YWwKIAogLy8gQ3VycmVudGx5IGxpbWl0ZWQgdG8gY29tcHV0aW5nIHRo
ZSBtYXJnaW4gYm91bmRhcnkgZm9yIHNoYXBlLW91dHNpZGUgZm9yIGZsb2F0cywgc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCiAKLVBhc3NPd25QdHI8
UmFzdGVyU2hhcGVJbnRlcnZhbHM+IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpjb21wdXRlU2hhcGVN
YXJnaW5JbnRlcnZhbHModW5zaWduZWQgc2hhcGVNYXJnaW4pIGNvbnN0CitQYXNzT3duUHRyPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPiBSYXN0ZXJTaGFwZUludGVydmFsczo6Y29tcHV0ZVNoYXBlTWFy
Z2luSW50ZXJ2YWxzKGludCBzaGFwZU1hcmdpbikgY29uc3QKIHsKLSAgICBPd25QdHI8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFs
cyhzaXplKCksIHNoYXBlTWFyZ2luKSk7CisgICAgaW50IG1hcmdpbkludGVydmFsc1NpemUgPSAo
b2Zmc2V0KCkgPiBzaGFwZU1hcmdpbikgPyBzaXplKCkgOiBzaXplKCkgLSBvZmZzZXQoKSAqIDIg
KyBzaGFwZU1hcmdpbiAqIDI7CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiByZXN1
bHQgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMobWFyZ2luSW50ZXJ2YWxzU2l6
ZSwgc3RkOjptYXgoc2hhcGVNYXJnaW4sIG9mZnNldCgpKSkpOwogICAgIE1hcmdpbkludGVydmFs
R2VuZXJhdG9yIG1hcmdpbkludGVydmFsR2VuZXJhdG9yKHNoYXBlTWFyZ2luKTsKIAotICAgIGlu
dCBtaW5ZID0gYm91bmRzKCkueSgpOwotICAgIGludCBtYXhZID0gYm91bmRzKCkubWF4WSgpOwot
Ci0gICAgZm9yIChpbnQgeSA9IG1pblk7IHkgPCBtYXhZOyArK3kpIHsKKyAgICBmb3IgKGludCB5
ID0gYm91bmRzKCkueSgpOyB5IDwgYm91bmRzKCkubWF4WSgpOyArK3kpIHsKICAgICAgICAgY29u
c3QgSW50U2hhcGVJbnRlcnZhbCYgaW50ZXJ2YWxBdFkgPSBsaW1pdEludGVydmFsQXQoeSk7CiAg
ICAgICAgIGlmIChpbnRlcnZhbEF0WS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBtYXJnaW5JbnRlcnZhbEdlbmVyYXRvci5zZXQoeSwgaW50ZXJ2YWxBdFkpOwot
ICAgICAgICBpbnQgbWFyZ2luWTAgPSB5IC0gY2xhbXBUb0ludGVnZXIoc2hhcGVNYXJnaW4pOwot
ICAgICAgICBpbnQgbWFyZ2luWTEgPSB5ICsgY2xhbXBUb0ludGVnZXIoc2hhcGVNYXJnaW4pOwor
ICAgICAgICBpbnQgbWFyZ2luWTAgPSBzdGQ6Om1heChtaW5ZKCksIHkgLSBzaGFwZU1hcmdpbik7
CisgICAgICAgIGludCBtYXJnaW5ZMSA9IHN0ZDo6bWluKG1heFkoKSwgeSArIHNoYXBlTWFyZ2lu
KTsKIAogICAgICAgICBmb3IgKGludCBtYXJnaW5ZID0geSAtIDE7IG1hcmdpblkgPj0gbWFyZ2lu
WTA7IC0tbWFyZ2luWSkgewotICAgICAgICAgICAgaWYgKG1hcmdpblkgPiBtaW5ZICYmIGxpbWl0
SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRlcnZhbEF0WSkpCisgICAgICAgICAgICBp
ZiAobWFyZ2luWSA+IGJvdW5kcygpLnkoKSAmJiBsaW1pdEludGVydmFsQXQobWFyZ2luWSkuY29u
dGFpbnMoaW50ZXJ2YWxBdFkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
cmVzdWx0LT51bml0ZU1hcmdpbkludGVydmFsKG1hcmdpblksIG1hcmdpbkludGVydmFsR2VuZXJh
dG9yLmludGVydmFsQXQobWFyZ2luWSkpOwogICAgICAgICB9CkBAIC0yNDMsNyArMjQxLDcgQEAg
UGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmNv
bXB1dGVTaGFwZU1hcmdpbkludGVydmEKICAgICAgICAgcmVzdWx0LT51bml0ZU1hcmdpbkludGVy
dmFsKHksIG1hcmdpbkludGVydmFsR2VuZXJhdG9yLmludGVydmFsQXQoeSkpOwogCiAgICAgICAg
IGZvciAoaW50IG1hcmdpblkgPSB5ICsgMTsgbWFyZ2luWSA8PSBtYXJnaW5ZMTsgKyttYXJnaW5Z
KSB7Ci0gICAgICAgICAgICBpZiAobWFyZ2luWSA8IG1heFkgJiYgbGltaXRJbnRlcnZhbEF0KG1h
cmdpblkpLmNvbnRhaW5zKGludGVydmFsQXRZKSkKKyAgICAgICAgICAgIGlmIChtYXJnaW5ZIDwg
Ym91bmRzKCkubWF4WSgpICYmIGxpbWl0SW50ZXJ2YWxBdChtYXJnaW5ZKS5jb250YWlucyhpbnRl
cnZhbEF0WSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICByZXN1bHQtPnVu
aXRlTWFyZ2luSW50ZXJ2YWwobWFyZ2luWSwgbWFyZ2luSW50ZXJ2YWxHZW5lcmF0b3IuaW50ZXJ2
YWxBdChtYXJnaW5ZKSk7CiAgICAgICAgIH0KQEAgLTI3NSw5ICsyNzMsMTEgQEAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAog
ICAgIGlmICghc2hhcGVNYXJnaW4oKSkKICAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKIAot
ICAgIHVuc2lnbmVkIG1hcmdpbkJvdW5kYXJ5UmFkaXVzID0gc3RkOjptaW4oY2xhbXBUb1Vuc2ln
bmVkKGNlaWwoc2hhcGVNYXJnaW4oKSkpLCBzdGQ6Om1heDx1bnNpZ25lZD4obV9pbWFnZVNpemUu
d2lkdGgoKSwgbV9pbWFnZVNpemUuaGVpZ2h0KCkpKTsKLSAgICBpZiAoIW1fbWFyZ2luSW50ZXJ2
YWxzKQorICAgIGludCBtYXJnaW5Cb3VuZGFyeVJhZGl1cyA9IHN0ZDo6bWluKGNsYW1wVG9JbnRl
Z2VyKGNlaWwoc2hhcGVNYXJnaW4oKSkpLCBzdGQ6Om1heChtX2ltYWdlU2l6ZS53aWR0aCgpLCBt
X2ltYWdlU2l6ZS5oZWlnaHQoKSkpOworICAgIGlmICghbV9tYXJnaW5JbnRlcnZhbHMpIHsKKyAg
ICAgICAgQVNTRVJUKG1hcmdpbkJvdW5kYXJ5UmFkaXVzID49IDApOwogICAgICAgICBtX21hcmdp
bkludGVydmFscyA9IG1faW50ZXJ2YWxzLT5jb21wdXRlU2hhcGVNYXJnaW5JbnRlcnZhbHMobWFy
Z2luQm91bmRhcnlSYWRpdXMpOworICAgIH0KIAogICAgIHJldHVybiAqbV9tYXJnaW5JbnRlcnZh
bHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgK
aW5kZXggYzA0ZWYxNS4uZTEwZjcwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtNDAsMTAgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgewogcHVibGljOgotICAgIFJhc3RlclNo
YXBlSW50ZXJ2YWxzKHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIHNoYXBlTWFyZ2luID0gMCkKLSAg
ICAgICAgOiBtX3NoYXBlTWFyZ2luKHNoYXBlTWFyZ2luKQorICAgIFJhc3RlclNoYXBlSW50ZXJ2
YWxzKHVuc2lnbmVkIHNpemUsIGludCBvZmZzZXQgPSAwKQorICAgICAgICA6IG1fb2Zmc2V0KG9m
ZnNldCkKICAgICB7Ci0gICAgICAgIG1faW50ZXJ2YWxMaXN0cy5yZXNpemUoc2l6ZSArIHNoYXBl
TWFyZ2luICogMik7CisgICAgICAgIG1faW50ZXJ2YWxMaXN0cy5yZXNpemUoc2l6ZSk7CiAgICAg
fQogCiAgICAgY29uc3QgSW50UmVjdCYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7
IH0KQEAgLTUzLDIzICs1MywyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRJbmNsdWRlZEludGVy
dmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRlcnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAg
ICAgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgSW50U2hhcGVJbnRl
cnZhbHMmIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxZKGlu
dCBtaW5ZLCBjb25zdCBJbnRTaXplJiBtaW5TaXplLCBMYXlvdXRVbml0JiByZXN1bHQpIGNvbnN0
OwotICAgIFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGNvbXB1dGVTaGFwZU1hcmdp
bkludGVydmFscyh1bnNpZ25lZCBzaGFwZU1hcmdpbikgY29uc3Q7CisgICAgUGFzc093blB0cjxS
YXN0ZXJTaGFwZUludGVydmFscz4gY29tcHV0ZVNoYXBlTWFyZ2luSW50ZXJ2YWxzKGludCBzaGFw
ZU1hcmdpbikgY29uc3Q7CiAKICAgICB2b2lkIGJ1aWxkQm91bmRzUGF0aChQYXRoJikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgaW50IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ludGVydmFsTGlz
dHMuc2l6ZSgpOyB9CisgICAgaW50IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CisgICAgaW50IG1pblkoKSBjb25zdCB7IHJldHVybiAtbV9vZmZzZXQ7IH0KKyAgICBpbnQgbWF4
WSgpIGNvbnN0IHsgcmV0dXJuIC1tX29mZnNldCArIG1faW50ZXJ2YWxMaXN0cy5zaXplKCk7IH0K
IAogICAgIEludFNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHNBdChpbnQgeSkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KHkgKyBtX3NoYXBlTWFyZ2luKSA+PSAwICYmIHkg
KyBtX3NoYXBlTWFyZ2luIDwgbV9pbnRlcnZhbExpc3RzLnNpemUoKSk7Ci0gICAgICAgIHJldHVy
biBtX2ludGVydmFsTGlzdHNbeSArIG1fc2hhcGVNYXJnaW5dOworICAgICAgICBBU1NFUlQoeSAr
IG1fb2Zmc2V0ID49IDAgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBt
X2ludGVydmFsTGlzdHMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5
ICsgbV9vZmZzZXRdOwogICAgIH0KIAogICAgIGNvbnN0IEludFNoYXBlSW50ZXJ2YWxzJiBpbnRl
cnZhbHNBdChpbnQgeSkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxp
bnQ+KHkgKyBtX3NoYXBlTWFyZ2luKSA+PSAwICYmIHkgKyBtX3NoYXBlTWFyZ2luIDwgbV9pbnRl
cnZhbExpc3RzLnNpemUoKSk7Ci0gICAgICAgIHJldHVybiBtX2ludGVydmFsTGlzdHNbeSArIG1f
c2hhcGVNYXJnaW5dOworICAgICAgICBBU1NFUlQoeSArIG1fb2Zmc2V0ID49IDAgJiYgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHkgKyBtX29mZnNldCkgPCBtX2ludGVydmFsTGlzdHMuc2l6ZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1faW50ZXJ2YWxMaXN0c1t5ICsgbV9vZmZzZXRdOwogICAgIH0KIAog
ICAgIEludFNoYXBlSW50ZXJ2YWwgbGltaXRJbnRlcnZhbEF0KGludCB5KSBjb25zdApAQCAtODMs
NyArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5pdGVNYXJnaW5JbnRlcnZhbChpbnQgeSwg
Y29uc3QgSW50U2hhcGVJbnRlcnZhbCYpOwogICAgIEludFJlY3QgbV9ib3VuZHM7CiAgICAgVmVj
dG9yPEludFNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsTGlzdHM7Ci0gICAgdW5zaWduZWQgbV9z
aGFwZU1hcmdpbjsKKyAgICBpbnQgbV9vZmZzZXQ7CiB9OwogCiBjbGFzcyBSYXN0ZXJTaGFwZSA6
IHB1YmxpYyBTaGFwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CmluZGV4IDAxMjMyNDkuLmM5MTA2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCkBAIC0yNTEsMzYgKzI1MSwzOCBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0
UwogICAgIHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NPd25QdHI8U2hhcGU+IFNo
YXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGltYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6
ZSYsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGlu
ZykKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShjb25zdCBTdHls
ZUltYWdlJiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFJlY3QmIGlt
YWdlUiwgY29uc3QgTGF5b3V0UmVjdCYgbWFyZ2luUiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQogewogICAgIEFTU0VSVChzdHlsZUltYWdl
LmNhY2hlZEltYWdlKCkpOwogICAgIEFTU0VSVChzdHlsZUltYWdlLmNhY2hlZEltYWdlKCktPmhh
c0ltYWdlKCkpOwogCi0gICAgSW50UmVjdCB0b1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGlt
YWdlUmVjdCk7Ci0gICAgSW50U2l6ZSBidWZmZXJTaXplID0gdG9SZWN0LnNpemUoKTsKLSAgICBJ
bnRTaXplIHJhc3RlclNpemUgPSBJbnRTaXplKHRvUmVjdC5tYXhYKCksIHRvUmVjdC5tYXhZKCkp
OwotICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIo
bmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKHJhc3RlclNpemUuaGVpZ2h0KCkpKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShidWZmZXJTaXplKTsKKyAgICBJbnRSZWN0IGltYWdlUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QoaW1hZ2VSKTsKKyAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0
KG1hcmdpblIpOworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0g
YWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKG1hcmdpblJlY3QuaGVpZ2h0KCksIC1t
YXJnaW5SZWN0LnkoKSkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCkpOwogCiAgICAgaWYg
KGltYWdlQnVmZmVyKSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2Uoc3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBJbnRSZWN0KEludFBvaW50KCksIGJ1ZmZlclNpemUpKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2Uoc3R5bGVJbWFnZS5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsK
IAotICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1
ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgYnVmZmVy
U2l6ZSkpOworICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBp
bWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0g
cGl4ZWxBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlPZmZzZXQg
PSAzOyAvLyBFYWNoIHBpeGVsIGlzIGZvdXIgYnl0ZXM6IFJHQkEuCiAgICAgICAgIHVpbnQ4X3Qg
YWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKIAotICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlclNpemUud2lkdGgoKSAqIGJ1ZmZlclNpemUuaGVpZ2h0
KCkgKiA0KSA9PSBwaXhlbEFycmF5TGVuZ3RoKSB7IC8vIHNhbml0eSBjaGVjawotICAgICAgICAg
ICAgZm9yIChpbnQgeSA9IDA7IHkgPCBidWZmZXJTaXplLmhlaWdodCgpOyArK3kpIHsKKyAgICAg
ICAgaW50IG1pbkJ1ZmZlclkgPSBzdGQ6Om1heCgwLCBtYXJnaW5SZWN0LnkoKSAtIGltYWdlUmVj
dC55KCkpOworICAgICAgICBpbnQgbWF4QnVmZmVyWSA9IHN0ZDo6bWluKGltYWdlUmVjdC5oZWln
aHQoKSwgbWFyZ2luUmVjdC5tYXhZKCkgLSBpbWFnZVJlY3QueSgpKTsKKworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlUmVjdC53aWR0aCgpICogaW1hZ2VSZWN0LmhlaWdo
dCgpICogNCkgPT0gcGl4ZWxBcnJheUxlbmd0aCkgeyAvLyBzYW5pdHkgY2hlY2sKKyAgICAgICAg
ICAgIGZvciAoaW50IHkgPSBtaW5CdWZmZXJZOyB5IDwgbWF4QnVmZmVyWTsgKyt5KSB7CiAgICAg
ICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOwotICAgICAgICAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgYnVmZmVyU2l6ZS53aWR0aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkg
eworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VSZWN0LndpZHRoKCk7
ICsreCwgcGl4ZWxBcnJheU9mZnNldCArPSA0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgYWxwaGEgPSBwaXhlbEFycmF5LT5pdGVtKHBpeGVsQXJyYXlPZmZzZXQpOwogICAgICAgICAg
ICAgICAgICAgICBib29sIGFscGhhQWJvdmVUaHJlc2hvbGQgPSBhbHBoYSA+IGFscGhhUGl4ZWxU
aHJlc2hvbGQ7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFggPT0gLTEgJiYgYWxwaGFB
Ym92ZVRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0geDsKLSAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFhbHBoYUFib3Zl
VGhyZXNob2xkIHx8IHggPT0gYnVmZmVyU2l6ZS53aWR0aCgpIC0gMSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVydmFscy0+YXBwZW5kSW50ZXJ2YWwoeSArIHRvUmVjdC55KCksIHN0
YXJ0WCArIHRvUmVjdC54KCksIHggKyB0b1JlY3QueCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKCFhbHBoYUFib3ZlVGhyZXNob2xkIHx8IHggPT0g
aW1hZ2VSZWN0LndpZHRoKCkgLSAxKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2
YWxzLT5hcHBlbmRJbnRlcnZhbCh5ICsgaW1hZ2VSZWN0LnkoKSwgc3RhcnRYICsgaW1hZ2VSZWN0
LngoKSwgeCArIGltYWdlUmVjdC54KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRY
ID0gLTE7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yODgs
NyArMjkwLDcgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKGNv
bnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UsIGZsb2F0IHQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVy
U2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSwgcmFzdGVyU2l6ZSkpOworICAgIE93blB0cjxSYXN0
ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxz
LnJlbGVhc2UoKSwgbWFyZ2luUmVjdC5zaXplKCkpKTsKICAgICByYXN0ZXJTaGFwZS0+bV93cml0
aW5nTW9kZSA9IHdyaXRpbmdNb2RlOwogICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0
VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKICAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0g
ZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuaAppbmRleCBhYjcxZDU1Li44Mzg1M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hh
cGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0
aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKLSAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4g
Y3JlYXRlUmFzdGVyU2hhcGUoY29uc3QgU3R5bGVJbWFnZSYsIGZsb2F0IHRocmVzaG9sZCwgY29u
c3QgTGF5b3V0UmVjdCYgaW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6
ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlUmFzdGVyU2hhcGUoY29uc3QgU3R5bGVJbWFnZSYs
IGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0UmVjdCYgZHJhd1JlY3QsIGNvbnN0IExheW91
dFJlY3QmIGNsaXBSZWN0LCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRp
bmcpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVMYXlvdXRCb3hTaGFwZShj
b25zdCBSb3VuZGVkUmVjdCYsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IDVlMmFmOTIuLjYxM2QzYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgYm9vbCBjaGVja1NoYXBlSW1hZ2VPcmlnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBD
YWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMg
TGF5b3V0UmVjdCBnZXRTaGFwZUltYWdlUmVjdChjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdl
LCBjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCkKK3N0YXRpYyBMYXlvdXRSZWN0IGdldFNoYXBl
SW1hZ2VSZXBsYWNlZFJlY3QoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIGNvbnN0IFN0eWxl
SW1hZ2UmIHN0eWxlSW1hZ2UpCiB7CiAgICAgaWYgKHJlbmRlckJveC5pc1JlbmRlckltYWdlKCkp
IHsKICAgICAgICAgY29uc3QgUmVuZGVySW1hZ2UmIHJlbmRlckltYWdlID0gKnRvUmVuZGVySW1h
Z2UoJnJlbmRlckJveCk7CkBAIC02Nyw2ICs2NywxMyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBnZXRT
aGFwZUltYWdlUmVjdChjb25zdCBTdHlsZUltYWdlJiBzdHlsZUltYWdlLCBjb25zdCBSZW5kZXJC
bwogICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KCksIHN0eWxlSW1hZ2UuY2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKS0+c2l6ZSgpKTsKIH0KIAorc3RhdGljIExheW91dFJlY3QgZ2V0U2hh
cGVJbWFnZU1hcmdpblJlY3QoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIGNvbnN0IExheW91
dFNpemUmIHNoYXBlU2l6ZSkKK3sKKyAgICBMYXlvdXRQb2ludCBtYXJnaW5Cb3hPcmlnaW4oLXJl
bmRlckJveC5tYXJnaW5Mb2dpY2FsTGVmdCgpIC0gcmVuZGVyQm94LmJvcmRlckFuZFBhZGRpbmdM
b2dpY2FsTGVmdCgpLCAtcmVuZGVyQm94Lm1hcmdpbkJlZm9yZSgpIC0gcmVuZGVyQm94LmJvcmRl
ckJlZm9yZSgpIC0gcmVuZGVyQm94LnBhZGRpbmdCZWZvcmUoKSk7CisgICAgTGF5b3V0U2l6ZSBt
YXJnaW5Cb3hTaXplRGVsdGEocmVuZGVyQm94Lm1hcmdpbkxvZ2ljYWxXaWR0aCgpICsgcmVuZGVy
Qm94LmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSwgcmVuZGVyQm94Lm1hcmdpbkxvZ2lj
YWxIZWlnaHQoKSArIHJlbmRlckJveC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsK
KyAgICByZXR1cm4gTGF5b3V0UmVjdChtYXJnaW5Cb3hPcmlnaW4sIHNoYXBlU2l6ZSArIG1hcmdp
bkJveFNpemVEZWx0YSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIFJlbmRlclR5cGU+CiBjb25zdCBT
aGFwZSYgU2hhcGVJbmZvPFJlbmRlclR5cGU+Ojpjb21wdXRlZFNoYXBlKCkgY29uc3QKIHsKQEAg
LTg4LDcgKzk1LDkgQEAgY29uc3QgU2hhcGUmIFNoYXBlSW5mbzxSZW5kZXJUeXBlPjo6Y29tcHV0
ZWRTaGFwZSgpIGNvbnN0CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZTogewogICAgICAgICBB
U1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2UoKSk7CiAgICAgICAgIGNvbnN0IFN0eWxlSW1hZ2UmIHN0
eWxlSW1hZ2UgPSAqKHNoYXBlVmFsdWUtPmltYWdlKCkpOwotICAgICAgICBtX3NoYXBlID0gU2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKHN0eWxlSW1hZ2UsIHNoYXBlSW1hZ2VUaHJlc2hvbGQsIGdl
dFNoYXBlSW1hZ2VSZWN0KHN0eWxlSW1hZ2UsIG1fcmVuZGVyZXIpLCBtX3NoYXBlTG9naWNhbFNp
emUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBpbWFnZVJlY3QgPSBnZXRTaGFwZUltYWdlUmVwbGFjZWRSZWN0KG1fcmVuZGVyZXIsIHN0
eWxlSW1hZ2UpOworICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBtYXJnaW5SZWN0ID0gZ2V0U2hh
cGVJbWFnZU1hcmdpblJlY3QobV9yZW5kZXJlciwgbV9zaGFwZUxvZ2ljYWxTaXplKTsKKyAgICAg
ICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShzdHlsZUltYWdlLCBzaGFwZUlt
YWdlVGhyZXNob2xkLCBpbWFnZVJlY3QsIG1hcmdpblJlY3QsIHdyaXRpbmdNb2RlLCBtYXJnaW4s
IHBhZGRpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpC
b3g6IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>