<?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>117534</bug_id>
          
          <creation_ts>2013-06-12 02:55:20 -0700</creation_ts>
          <short_desc>[CSS3-Text] Add rendering support for text-justify: inter-character/distribute, 8 bit characters</short_desc>
          <delta_ts>2022-07-13 14:52:31 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>229084</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99945</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongwoo Joshua Im (dwim)">dw.im</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ntim</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>899486</commentid>
    <comment_count>0</comment_count>
    <who name="Dongwoo Joshua Im (dwim)">dw.im</who>
    <bug_when>2013-06-12 02:55:20 -0700</bug_when>
    <thetext>I will implement the rendering part of text-justify, and proper test cases.
Spec URL - http://www.w3.org/TR/css3-text/#text-justify</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053827</commentid>
    <comment_count>1</comment_count>
      <attachid>242934</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-12-09 09:55:27 -0800</bug_when>
    <thetext>Created attachment 242934
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053836</commentid>
    <comment_count>2</comment_count>
      <attachid>242937</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-12-09 10:20:41 -0800</bug_when>
    <thetext>Created attachment 242937
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221914</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:22:17 -0700</bug_when>
    <thetext>Seems like something Myles should be reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222049</commentid>
    <comment_count>4</comment_count>
      <attachid>242937</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-08-22 17:52:01 -0700</bug_when>
    <thetext>Comment on attachment 242937
patch

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

This is a good start, but it seems that the patch is incomplete.

&gt; LayoutTests/fast/css3-text/css3-text-justify/text-justify-8bits.html:20
&gt; +    &lt;b&gt;text-justify: auto&lt;/b&gt;

We have a fair amount of smarts with regard to &quot;ruby&quot; interaction with justification (we try to include ruby bases when computing justification expansions). I think we should add some tests which test the interaction between ruby and the text-justify property.

The interaction of ruby and justification is important in e-book readers based off WebKit. It is common for CJK books to be both justified and have ruby.

Speaking of that, we should also add some tests for CJK text with these new justification values to make sure they work as intended.

&gt; Source/WebCore/platform/graphics/Font.cpp:971
&gt; +#if !ENABLE(CSS3_TEXT)

This is yucky. I think we should keep the type declared even without ENABLE(CSS3_TEXT), use a default argument here, and unify the two functions. Then, we can disable the feature by consulting CSS3_TEXT in the parser (if it&apos;s undefined, pretend its always &quot;auto&quot;).

I don&apos;t see any parsing in this patch.... do we currently parse the property, but then do nothing with it?

&gt; Source/WebCore/platform/graphics/Font.cpp:1075
&gt;      if (stringView.is8Bit())

Please add { }

&gt; Source/WebCore/platform/graphics/Font.cpp:1079
&gt; +        return expansionOpportunityCountInternal(stringView.characters8(), stringView.length(), direction, isAfterExpansion, textJustify);

Only for 8-bit strings? What about 8-bit strings which have been promoted to 16-bit?

&gt; Source/WebCore/platform/graphics/TextRun.h:45
&gt; +enum TextJustify {

We should probably make sure this property opts us out of simple line layout. (Or make sure it&apos;s supported correctly).

&gt; Source/WebCore/platform/graphics/TextRun.h:266
&gt; +    TextJustify m_textJustify;

TextRuns are ephemeral, so I don&apos;t think the space saving is worth guarding this behind the CSS3_TEXT flag. Ultimately, I want to remove the CSS3_TEXT flag entirely.

&gt; Source/WebCore/platform/graphics/WidthIterator.cpp:237
&gt; +            bool isExpansionOpportunity = Font::treatAsSpace(character) || m_run.textJustify() == TextJustifyDistribute;

See my comment below about updating expansionLocation() (this time in WidthIterator.cpp) to know about these new properties.

&gt; Source/WebCore/platform/graphics/mac/ComplexTextController.cpp:150
&gt; +        unsigned expansionOpportunityCount = Font::expansionOpportunityCount(m_run.text(), m_run.ltr() ? LTR : RTL, isAfterExpansion, m_run.textJustify());

I don&apos;t think this is complete. Certainly, correctly handling text-justify will affect the expansion opportunity count (and thereby the expansions per opportunity), but I think the expansionLocation() function also needs to be educated about these new expansion locations.

&gt; Source/WebCore/rendering/style/RenderStyle.h:88
&gt; +#include &quot;TextRun.h&quot;

Why is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222745</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2016-08-24 11:21:18 -0700</bug_when>
    <thetext>Hey Myles,

Thanks for looking into the patch. I&apos;ll reset the assignee to default, because we&apos;ve shifted priorities, so I don&apos;t have time to update or rework it. It would be nice if anyone could pick the topic up!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1883360</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-13 14:52:27 -0700</bug_when>
    <thetext>It looks like this work was finally completed in Bug 229084.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1883361</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-13 14:52:31 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 229084 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242934</attachid>
            <date>2014-12-09 09:55:27 -0800</date>
            <delta_ts>2014-12-09 10:20:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>distribute.patch</filename>
            <type>text/plain</type>
            <size>21462</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMDg2NWM3Li5iY2JmOTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMTIt
MDkgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJl
bmRlcmluZyBzdXBwb3J0IGZvciB0aGUgdGV4dC1qdXN0aWZ5OiBkaXN0cmlidXRlIHByb3BlcnR5
IGZvciA4IGJpdCBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTc1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1qdXN0aWZ5L3RleHQtanVz
dGlmeS04Yml0cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4
dC9jc3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbDogQWRkZWQuCisKIDIw
MTQtMTItMDggIEFuZHJ6ZWogQmFkb3dza2kgIDxhLmJhZG93c2tpQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIENoYW5nZSBleHBlY3RhdGlvbnMgZm9yIHR3byBhY2Nlc3NpYmlsaXR5IGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1qdXN0aWZ5L3RleHQtanVzdGlmeS04Yml0cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0aWZ5LThiaXRzLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyYjgwZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1q
dXN0aWZ5L3RleHQtanVzdGlmeS04Yml0cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDIgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy50ZXN0IHsKKyAgICB0
ZXh0LWFsaWduOiBqdXN0aWZ5OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBib3JkZXI6IHNvbGlk
IDFweCBibGFjazsKKyAgICBtYXJnaW4tYm90dG9tOiAyMHB4OworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjBweDsiPgorVGVzdCBhbGwg
b2YgdGhlIHZhbHVlcyBvZiB0ZXh0LWp1c3RpZnkgZm9yIDhiaXQgY2hhcmFjdGVycy48YnIvPgor
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgdmFsdWVzIGZvciB0ZXh0LWp1c3RpZnkg
cHJvcGVydHkgd29ya3MgcHJvcGVybHkgZm9yIDhiaXQgY2hhcmFjdGVycy48YnIvPgorPC9kaXY+
CisKKzxkaXY+CisgICAgPGI+dGV4dC1qdXN0aWZ5OiBhdXRvPC9iPgorICAgIDxkaXYgY2xhc3M9
InRlc3QiPgorICAgICAgICBYWFhYIFhYWCBYWCBYIFhYIFhYWCBYWFhYPGJyLz5YWFhYWFgKKyAg
ICA8L2Rpdj4KKworICAgIDxiPnRleHQtanVzdGlmeTogbm9uZTwvYj4KKyAgICA8ZGl2IGNsYXNz
PSJ0ZXN0IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgIFhYWFggWFhYIFhYIFgg
WFggWFhYIFhYWFg8YnIvPlhYWFhYWAorICAgIDwvZGl2PgorCisgICAgPGI+dGV4dC1qdXN0aWZ5
OiBpbnRlci13b3JkPC9iPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPgorICAgICAgICBYWFhYIFhY
WCBYWCBYIFhYIFhYWCBYWFhYPGJyLz5YWFhYWFgKKyAgICA8L2Rpdj4KKworICAgIDxiPnRleHQt
anVzdGlmeTogZGlzdHJpYnV0ZTwvYj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij4KKyAgICBYPGRp
diBzdHlsZT0iZmxvYXQ6IHJpZ2h0Ij5YPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3Nz
My10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0aWZ5LThiaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NzczMtdGV4dC9jc3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjNhYzkyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0
aWZ5LThiaXRzLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorLnRlc3QgeworICAgIHRleHQtYWxpZ246IGp1c3RpZnk7CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IGJsYWNrOworICAgIG1hcmdpbi1i
b3R0b206IDIwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJt
YXJnaW4tYm90dG9tOiAyMHB4OyI+CitUZXN0IGFsbCBvZiB0aGUgdmFsdWVzIG9mIHRleHQtanVz
dGlmeSBmb3IgOGJpdCBjaGFyYWN0ZXJzLjxici8+CitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYWxs
IG9mIHRoZSB2YWx1ZXMgZm9yIHRleHQtanVzdGlmeSBwcm9wZXJ0eSB3b3JrcyBwcm9wZXJseSBm
b3IgOGJpdCBjaGFyYWN0ZXJzLjxici8+Cis8L2Rpdj4KKworPGRpdj4KKyAgICA8Yj50ZXh0LWp1
c3RpZnk6IGF1dG88L2I+CisgICAgPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJraXQtdGV4
dC1qdXN0aWZ5OiBhdXRvIj4KKyAgICAgICAgWFhYWCBYWFggWFggWCBYWCBYWFggWFhYWDxici8+
WFhYWFhYCisgICAgPC9kaXY+CisKKyAgICA8Yj50ZXh0LWp1c3RpZnk6IG5vbmU8L2I+CisgICAg
PGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1qdXN0aWZ5OiBub25lIj4KKyAg
ICAgICAgWFhYWCBYWFggWFggWCBYWCBYWFggWFhYWDxici8+WFhYWFhYCisgICAgPC9kaXY+CisK
KyAgICA8Yj50ZXh0LWp1c3RpZnk6IGludGVyLXdvcmQ8L2I+CisgICAgPGRpdiBjbGFzcz0idGVz
dCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1qdXN0aWZ5OiBpbnRlci13b3JkOyI+CisgICAgICAgIFhY
WFggWFhYIFhYIFggWFggWFhYIFhYWFg8YnIvPlhYWFhYWAorICAgIDwvZGl2PgorCisgICAgPGI+
dGV4dC1qdXN0aWZ5OiBkaXN0cmlidXRlPC9iPgorICAgIDxkaXYgY2xhc3M9InRlc3QiIHN0eWxl
PSItd2Via2l0LXRleHQtanVzdGlmeTogZGlzdHJpYnV0ZSI+CisgICAgICAgIFhYCisgICAgPC9k
aXY+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ1ZTNmNGQuLjI3
ZWJjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0xMi0wOSAgWm9sdGFuIEhv
cnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgcmVuZGVyaW5nIHN1cHBv
cnQgZm9yIHRoZSB0ZXh0LWp1c3RpZnk6IGRpc3RyaWJ1dGUgcHJvcGVydHkgZm9yIDggYml0IGNo
YXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNzUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyByZW5kZXJpbmcgc3VwcG9ydCBmb3IgLXdlYmtpdC10ZXh0LWp1c3Rp
Znk6IGRpc3RyaWJ1dGUuIENTUzNfVEVYVCBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0
IGFuZCBhbHNvIHRoZSB0ZXh0LWp1c3RpZnkgdGVzdHMgYXJlIHNraXBwZWQuCisKKyAgICAgICAg
QmxpbmsgZXF1aXZhbGVudDogRG9uZ3dvbyBKb3NodWEgSW0sIGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMjU1MzIzMDA0LyAKKworICAgICAgICBUZXN0OiBmYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbAorCisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXRUZXh0SnVzdGlmeSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UnVuOjp0ZXh0SnVzdGlmeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0
aEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRl
cm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBs
ZXhUZXh0Q29udHJvbGxlcik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxNC0x
Mi0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDEwNDJiMzMuLjhmNjVjODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAt
NTUsNiArNTUsMTAgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDU1MzX1RFWFQpCisjaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKHNob3J0IGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCmluZGV4IDM5MjMwYzguLmEyZTI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC05NjgsNiArOTY4LDcgQEAgYm9vbCBGb250Ojpp
c0NKS0lkZW9ncmFwaE9yU3ltYm9sKFVDaGFyMzIgYykKICAgICByZXR1cm4gaXNDSktJZGVvZ3Jh
cGgoYyk7CiB9CiAKKyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKIHVuc2lnbmVkIEZvbnQ6OmV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNp
b24pCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwpAQCAtOTkwLDYgKzk5MSwzMCBAQCB1bnNp
Z25lZCBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdAogICAgIH0KICAgICByZXR1cm4gY291bnQ7CiB9CisjZWxzZQor
dW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwg
Ym9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkpCit7
CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGlmICh0ZXh0SnVzdGlmeSA9PSBUZXh0SnVz
dGlmeURpc3RyaWJ1dGUpCisgICAgICAgIGNvdW50ID0gbGVuZ3RoIC0gMTsKKyAgICBlbHNlIHsK
KyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJlYXRBc1Nw
YWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGxl
bmd0aDsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UoY2hh
cmFjdGVyc1tpIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGludCBsYXN0Q2hhcmFjdGVyID0gKGRpcmVjdGlv
biA9PSBMVFIpID8gbGVuZ3RoIC0gMSA6IDA7CisgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRyZWF0
QXNTcGFjZShjaGFyYWN0ZXJzW2xhc3RDaGFyYWN0ZXJdKTsKKyAgICByZXR1cm4gY291bnQ7Cit9
CisjZW5kaWYKIAogdW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVy
bmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbikKIHsKQEAgLTEwNDEsMTAgKzEwNjYs
MTkgQEAgdW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QKICAgICByZXR1cm4gY291bnQ7CiB9CiAKKyNp
ZiAhRU5BQkxFKENTUzNfVEVYVCkKIHVuc2lnbmVkIEZvbnQ6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNpb24pCisjZWxzZQordW5zaWduZWQgRm9udDo6ZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3Rp
ZnkgdGV4dEp1c3RpZnkpCisjZW5kaWYKIHsKICAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkK
KyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgcmV0dXJuIGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnRJbnRlcm5hbChzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVu
Z3RoKCksIGRpcmVjdGlvbiwgaXNBZnRlckV4cGFuc2lvbik7CisjZWxzZQorICAgICAgICByZXR1
cm4gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKHN0cmluZ1ZpZXcuY2hhcmFjdGVy
czgoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgZGlyZWN0aW9uLCBpc0FmdGVyRXhwYW5zaW9uLCB0
ZXh0SnVzdGlmeSk7CisjZW5kaWYKKwogICAgIHJldHVybiBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50SW50ZXJuYWwoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgo
KSwgZGlyZWN0aW9uLCBpc0FmdGVyRXhwYW5zaW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDFlOGE4OTQuLmU5YjcyMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
CisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyNpbmNsdWRlICJUZXh0UnVuLmgiCisjZW5kaWYKKwog
Ly8gIlgxMS9YLmgiIGRlZmluZXMgQ29tcGxleCB0byAwIGFuZCBjb25mbGljdHMKIC8vIHdpdGgg
Q29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLgogI2lmZGVmIENvbXBsZXgKQEAgLTIwNCw3
ICsyMDgsMTEgQEAgcHVibGljOgogICAgIC8vIEJFV0FSRTogSWYgaXNBZnRlckV4cGFuc2lvbiBp
cyB0cnVlIGFmdGVyIHRoaXMgZnVuY3Rpb24gY2FsbCwgdGhlbiB0aGUgcmV0dXJuZWQgdmFsdWUg
aW5jbHVkZXMgYSB0cmFpbGluZyBvcHBvcnR1bml0eQogICAgIC8vIHdoaWNoIG1heSBvciBtYXkg
bm90IGFjdHVhbGx5IGJlIHByZXNlbnQuIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoKSBjb21wZW5zYXRlcwogICAgIC8vIGZvciB0aGlz
IGJ5IGRlY3JlbWVudGluZyB0aGUgcmV0dXJuZWQgdmFsdWUgaWYgaXNBZnRlckV4cGFuc2lvbiBp
cyB0cnVlIGF0IHRoZSBlbmQgb2YgYSBsaW5lLgorI2lmICFFTkFCTEUoQ1NTM19URVhUKQogICAg
IHN0YXRpYyB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1Zp
ZXcmLCBUZXh0RGlyZWN0aW9uLCBib29sJiBpc0FmdGVyRXhwYW5zaW9uKTsKKyNlbHNlCisgICAg
c3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoY29uc3QgU3RyaW5nVmll
dyYsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNpb24sIFRleHRKdXN0aWZ5KTsK
KyNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hvdWxkVXNlU21v
b3RoaW5nKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZFVzZVNt
b290aGluZygpOwpAQCAtMjQyLDcgKzI1MCwxMSBAQCBwcml2YXRlOgogICAgIGludCBvZmZzZXRG
b3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwg
Ym9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rp
b25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlv
blJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogCisjaWYgIUVOQUJMRShDU1MzX1RFWFQp
CiAgICAgc3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChj
b25zdCBMQ2hhciosIHNpemVfdCBsZW5ndGgsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJF
eHBhbnNpb24pOworI2Vsc2UKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudEludGVybmFsKGNvbnN0IExDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlv
biwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3RpZnkpOworI2VuZGlmCiAg
ICAgc3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25z
dCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBh
bnNpb24pOwogCiAgICAgZnJpZW5kIHN0cnVjdCBXaWR0aEl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAppbmRleCBjOTI3Nzk2Li4zOTQzMzVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcApAQCAt
MzcsNiArMzcsNyBAQCBzdHJ1Y3QgRXhwZWN0ZWRUZXh0UnVuU2l6ZSB7CiAgICAgZmxvYXQgZmxv
YXQyOwogICAgIGZsb2F0IGZsb2F0MzsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiA5OworICAg
IFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5OwogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRl
eHRSdW4pID09IHNpemVvZihFeHBlY3RlZFRleHRSdW5TaXplKSwgVGV4dFJ1bl9pc19ub3Rfb2Zf
ZXhwZWN0ZWRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UZXh0UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVu
LmgKaW5kZXggMzAzNGI5OS4uODEzMmIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RleHRSdW4uaApAQCAtNDEsNiArNDEsMTUgQEAgY2xhc3MgU2ltcGxlRm9udERhdGE7
CiBzdHJ1Y3QgR2x5cGhEYXRhOwogc3RydWN0IFdpZHRoSXRlcmF0b3I7CiAKKyNpZiBFTkFCTEUo
Q1NTM19URVhUKQorZW51bSBUZXh0SnVzdGlmeSB7CisgICAgVGV4dEp1c3RpZnlBdXRvLAorICAg
IFRleHRKdXN0aWZ5Tm9uZSwKKyAgICBUZXh0SnVzdGlmeUludGVyV29yZCwKKyAgICBUZXh0SnVz
dGlmeURpc3RyaWJ1dGUKK307CisjZW5kaWYKKwogY2xhc3MgVGV4dFJ1biB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03Niw2ICs4NSw5IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX2FwcGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBSdW5Sb3VuZGluZykg
JiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQogICAgICAgICAsIG1fYXBwbHlXb3JkUm91bmRpbmco
KHJvdW5kaW5nSGFja3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykK
ICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQorI2lmIEVOQUJMRShDU1MzX1RFWFQp
CisgICAgICAgICwgbV90ZXh0SnVzdGlmeShUZXh0SnVzdGlmeUF1dG8pCisjZW5kaWYKICAgICB7
CiAgICAgfQogCkBAIC05NCw2ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hcHBseVJ1
blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRp
bmdIYWNrcykKICAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYg
V29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9kaXNh
YmxlU3BhY2luZyhmYWxzZSkKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgICAgICAsIG1fdGV4
dEp1c3RpZnkoVGV4dEp1c3RpZnlBdXRvKQorI2VuZGlmCiAgICAgewogICAgIH0KICAgICAKQEAg
LTExMiw2ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hcHBseVJ1blJvdW5kaW5nKChy
b3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykKICAg
ICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgV29yZFJvdW5kaW5n
KSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9kaXNhYmxlU3BhY2luZyhm
YWxzZSkKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgICAgICAsIG1fdGV4dEp1c3RpZnkoVGV4
dEp1c3RpZnlBdXRvKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMTMwLDYgKzE0OCw5IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2FwcGx5UnVuUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBS
dW5Sb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tzKQogICAgICAgICAsIG1fYXBwbHlX
b3JkUm91bmRpbmcoKHJvdW5kaW5nSGFja3MgJiBXb3JkUm91bmRpbmcpICYmIHNfYWxsb3dzUm91
bmRpbmdIYWNrcykKICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQorI2lmIEVOQUJM
RShDU1MzX1RFWFQpCisgICAgICAgICwgbV90ZXh0SnVzdGlmeShUZXh0SnVzdGlmeUF1dG8pCisj
ZW5kaWYKICAgICB7CiAgICAgfQogCkBAIC0xOTIsNiArMjEzLDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChib29sIHNjYW4pIHsgbV9jaGFyYWN0ZXJT
Y2FuRm9yQ29kZVBhdGggPSBzY2FuOyB9CiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0OyB9CiAKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgIHZvaWQgc2V0VGV4
dEp1c3RpZnkoVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkpIHsgbV90ZXh0SnVzdGlmeSA9IHRleHRK
dXN0aWZ5OyB9CisgICAgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkoKSBjb25zdCB7IHJldHVybiBt
X3RleHRKdXN0aWZ5OyB9CisjZW5kaWYKKwogICAgIGNsYXNzIFJlbmRlcmluZ0NvbnRleHQgOiBw
dWJsaWMgUmVmQ291bnRlZDxSZW5kZXJpbmdDb250ZXh0PiB7CiAgICAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIH5SZW5kZXJpbmdDb250ZXh0KCkgeyB9CkBAIC0yMzYsNiArMjYyLDkgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2FwcGx5UnVuUm91bmRpbmcgOiAxOwogICAgIHVuc2lnbmVk
IG1fYXBwbHlXb3JkUm91bmRpbmcgOiAxOwogICAgIHVuc2lnbmVkIG1fZGlzYWJsZVNwYWNpbmcg
OiAxOworI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgVGV4dEp1c3RpZnkgbV90ZXh0SnVzdGlm
eTsKKyNlbmRpZgogfTsKIAogaW5saW5lIHZvaWQgVGV4dFJ1bjo6c2V0VGFiU2l6ZShib29sIGFs
bG93LCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBmMmM3YzA1Li4wNzE2NGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAt
NTcsNyArNTcsMTEgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250KiBm
b250LCBjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QKICAgICAgICAgbV9leHBhbnNp
b25QZXJPcHBvcnR1bml0eSA9IDA7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgaXNBZnRlckV4
cGFuc2lvbiA9IG1faXNBZnRlckV4cGFuc2lvbjsKKyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKICAg
ICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnQ6OmV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwg
aXNBZnRlckV4cGFuc2lvbik7CisjZWxzZQorICAgICAgICB1bnNpZ25lZCBleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50ID0gRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0
KCksIG1fcnVuLmx0cigpID8gTFRSIDogUlRMLCBpc0FmdGVyRXhwYW5zaW9uLCBtX3J1bi50ZXh0
SnVzdGlmeSgpKTsKKyNlbmRpZgogICAgICAgICBpZiAoaXNBZnRlckV4cGFuc2lvbiAmJiAhbV9y
dW4uYWxsb3dzVHJhaWxpbmdFeHBhbnNpb24oKSkKICAgICAgICAgICAgIGV4cGFuc2lvbk9wcG9y
dHVuaXR5Q291bnQtLTsKIApAQCAtMjI3LDEyICsyMzEsMTYgQEAgaW5saW5lIHVuc2lnbmVkIFdp
ZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwg
R2x5cGgKICAgICAgICAgICAgICAgICB3aWR0aCArPSBtX2ZvbnQtPmxldHRlclNwYWNpbmcoKTsK
IAogICAgICAgICAgICAgc3RhdGljIGJvb2wgZXhwYW5kQXJvdW5kSWRlb2dyYXBocyA9IEZvbnQ6
OmNhbkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7Ci0gICAgICAgICAgICBi
b29sIHRyZWF0QXNTcGFjZSA9IEZvbnQ6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpOwotICAgICAg
ICAgICAgaWYgKHRyZWF0QXNTcGFjZSB8fCAoZXhwYW5kQXJvdW5kSWRlb2dyYXBocyAmJiBGb250
Ojppc0NKS0lkZW9ncmFwaE9yU3ltYm9sKGNoYXJhY3RlcikpKSB7CisjaWYgIUVOQUJMRShDU1Mz
X1RFWFQpCisgICAgICAgICAgICBib29sIGlzRXhwYW5zaW9uT3Bwb3J0dW5pdHkgPSBGb250Ojp0
cmVhdEFzU3BhY2UoY2hhcmFjdGVyKTsKKyNlbHNlCisgICAgICAgICAgICBib29sIGlzRXhwYW5z
aW9uT3Bwb3J0dW5pdHkgPSBGb250Ojp0cmVhdEFzU3BhY2UoY2hhcmFjdGVyKSB8fCBtX3J1bi50
ZXh0SnVzdGlmeSgpID09IFRleHRKdXN0aWZ5RGlzdHJpYnV0ZTsKKyNlbmRpZgorICAgICAgICAg
ICAgaWYgKGlzRXhwYW5zaW9uT3Bwb3J0dW5pdHkgfHwgKGV4cGFuZEFyb3VuZElkZW9ncmFwaHMg
JiYgRm9udDo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSkgewogICAgICAgICAg
ICAgICAgIC8vIERpc3RyaWJ1dGUgdGhlIHJ1bidzIHRvdGFsIGV4cGFuc2lvbiBldmVubHkgb3Zl
ciBhbGwgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgaW4gdGhlIHJ1bi4KICAgICAgICAgICAgICAg
ICBpZiAobV9leHBhbnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcHJldmlvdXNF
eHBhbnNpb24gPSBtX2V4cGFuc2lvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF0cmVhdEFz
U3BhY2UgJiYgIW1faXNBZnRlckV4cGFuc2lvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzRXhwYW5zaW9uT3Bwb3J0dW5pdHkgJiYgIW1faXNBZnRlckV4cGFuc2lvbikgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gVGFrZSB0aGUgZXhwYW5zaW9uIG9wcG9ydHVuaXR5IGJlZm9y
ZSB0aGlzIGlkZW9ncmFwaC4KICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhwYW5zaW9uIC09
IG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBleHBhbnNpb25BdFRoaXNPcHBvcnR1bml0eSA9ICFtX3J1bi5hcHBseVdvcmRSb3VuZGluZygp
ID8gbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSA6IHJvdW5kZihwcmV2aW91c0V4cGFuc2lvbikg
LSByb3VuZGYobV9leHBhbnNpb24pOwpAQCAtMjU5LDcgKzI2Nyw3IEBAIGlubGluZSB1bnNpZ25l
ZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0
b3IsIEdseXBoCiAKICAgICAgICAgICAgICAgICAvLyBBY2NvdW50IGZvciB3b3JkIHNwYWNpbmcu
CiAgICAgICAgICAgICAgICAgLy8gV2UgYXBwbHkgYWRkaXRpb25hbCBzcGFjZSBiZXR3ZWVuICJ3
b3JkcyIgYnkgYWRkaW5nIHdpZHRoIHRvIHRoZSBzcGFjZSBjaGFyYWN0ZXIuCi0gICAgICAgICAg
ICAgICAgaWYgKHRyZWF0QXNTcGFjZSAmJiAoY2hhcmFjdGVyICE9ICdcdCcgfHwgIW1fcnVuLmFs
bG93VGFicygpKSAmJiAoY3VycmVudENoYXJhY3RlciB8fCBjaGFyYWN0ZXIgPT0gbm9CcmVha1Nw
YWNlKSAmJiBtX2ZvbnQtPndvcmRTcGFjaW5nKCkpCisgICAgICAgICAgICAgICAgaWYgKGlzRXhw
YW5zaW9uT3Bwb3J0dW5pdHkgJiYgKGNoYXJhY3RlciAhPSAnXHQnIHx8ICFtX3J1bi5hbGxvd1Rh
YnMoKSkgJiYgKGN1cnJlbnRDaGFyYWN0ZXIgfHwgY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSkg
JiYgbV9mb250LT53b3JkU3BhY2luZygpKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCArPSBt
X2ZvbnQtPndvcmRTcGFjaW5nKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICBtX2lzQWZ0ZXJFeHBhbnNpb24gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
aW5kZXggNWViZDQzZS4uNzVlOWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKQEAg
LTE0NCw3ICsxNDQsMTEgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dENvbnRy
b2xsZXIoY29uc3QgRm9udCogZm9udCwgY29uc3QgVGV4dFJ1biYgcnUKICAgICAgICAgbV9leHBh
bnNpb25QZXJPcHBvcnR1bml0eSA9IDA7CiAgICAgZWxzZSB7CiAgICAgICAgIGJvb2wgaXNBZnRl
ckV4cGFuc2lvbiA9IG1fYWZ0ZXJFeHBhbnNpb247CisjaWYgIUVOQUJMRShDU1MzX1RFWFQpCiAg
ICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSBGb250OjpleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBMVFIgOiBSVEws
IGlzQWZ0ZXJFeHBhbnNpb24pOworI2Vsc2UKKyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bw
b3J0dW5pdHlDb3VudCA9IEZvbnQ6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4
dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgaXNBZnRlckV4cGFuc2lvbiwgbV9ydW4udGV4
dEp1c3RpZnkoKSk7CisjZW5kaWYKICAgICAgICAgaWYgKGlzQWZ0ZXJFeHBhbnNpb24gJiYgIW1f
cnVuLmFsbG93c1RyYWlsaW5nRXhwYW5zaW9uKCkpCiAgICAgICAgICAgICBleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50LS07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAppbmRleCAwYzAxY2E5Li5kZjA5NWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZVRleHRCb3guY3BwCkBAIC0xMzg4LDYgKzEzODgsOSBAQCBUZXh0UnVuIElubGluZVRl
eHRCb3g6OmNvbnN0cnVjdFRleHRSdW4oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBG
b250JiBmbwogCiAgICAgVGV4dFJ1biBydW4oc3RyaW5nLCB0ZXh0UG9zKCksIGV4cGFuc2lvbigp
LCBleHBhbnNpb25CZWhhdmlvcigpLCBkaXJlY3Rpb24oKSwgZGlyT3ZlcnJpZGUoKSB8fCBzdHls
ZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9yZGVyLCAhcmVuZGVyZXIoKS5jYW5Vc2VTaW1wbGVG
b250Q29kZVBhdGgoKSk7CiAgICAgcnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVT
cGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOworI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgcnVu
LnNldFRleHRKdXN0aWZ5KHN0eWxlLnRleHRKdXN0aWZ5KCkpOworI2VuZGlmCiAgICAgaWYgKGZv
bnQucHJpbWFyeUZvbnQoKS0+aXNTVkdGb250KCkpCiAgICAgICAgIHJ1bi5zZXRSZW5kZXJpbmdD
b250ZXh0KFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUocmVuZGVyZXIoKSkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCmluZGV4IDAzYWZjMTUuLjk3Nzc1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC03MDcsNyArNzA3LDkgQEAgQmlk
aVJ1biogUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRpb25zRm9y
U2VnbWVudChSb290SW5saW5lQm8KICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTY+IGV4cGFuc2lvbk9wcG9ydHVuaXRpZXM7CiAgICAgUmVu
ZGVyT2JqZWN0KiBwcmV2aW91c09iamVjdCA9IG51bGxwdHI7Ci0KKyNpZiBFTkFCTEUoQ1NTM19U
RVhUKQorICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5ID0gc3R5bGUoKS50ZXh0SnVzdGlmeSgp
OworI2VuZGlmCiAgICAgQmlkaVJ1biogcnVuID0gZmlyc3RSdW47CiAgICAgZm9yICg7IHJ1bjsg
cnVuID0gcnVuLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKCFydW4tPmJveCgpIHx8IHJ1bi0+cmVu
ZGVyZXIoKS5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBydW4tPmJveCgpLT5pc0xpbmVCcmVh
aygpKSB7CkBAIC03MjAsNyArNzIyLDExIEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJvCiAgICAg
ICAgICAgICBpZiAodGV4dEFsaWduID09IEpVU1RJRlkgJiYgcnVuICE9IHRyYWlsaW5nU3BhY2VS
dW4pIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWZ0ZXJFeHBhbnNpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGRvd25jYXN0PElubGluZVRleHRCb3g+KCpydW4tPmJveCgpKS5zZXRDYW5IYXZl
TGVhZGluZ0V4cGFuc2lvbih0cnVlKTsKKyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBvcHBvcnR1bml0aWVzSW5SdW4gPSBGb250OjpleHBhbnNpb25PcHBv
cnR1bml0eUNvdW50KHJlbmRlclRleHQuc3RyaW5nVmlldyhydW4tPm1fc3RhcnQsIHJ1bi0+bV9z
dG9wKSwgcnVuLT5ib3goKS0+ZGlyZWN0aW9uKCksIGlzQWZ0ZXJFeHBhbnNpb24pOworI2Vsc2UK
KyAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcHBvcnR1bml0aWVzSW5SdW4gPSBGb250OjpleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50KHJlbmRlclRleHQuc3RyaW5nVmlldyhydW4tPm1fc3RhcnQs
IHJ1bi0+bV9zdG9wKSwgcnVuLT5ib3goKS0+ZGlyZWN0aW9uKCksIGlzQWZ0ZXJFeHBhbnNpb24s
IHRleHRKdXN0aWZ5KTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGV4cGFuc2lvbk9wcG9ydHVu
aXRpZXMuYXBwZW5kKG9wcG9ydHVuaXRpZXNJblJ1bik7CiAgICAgICAgICAgICAgICAgZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudCArPSBvcHBvcnR1bml0aWVzSW5SdW47CiAgICAgICAgICAgICB9
CkBAIC03NDQsNyArNzUwLDExIEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlu
bGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJvCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW5saW5lVGV4dEJveD4oKmxlYWZDaGlsZCkuc2V0
Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBl
bmNvdW50ZXJlZEp1c3RpZmllZFJ1YnkgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byYgcmVuZGVyVGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KGxlYWZDaGlsZC0+cmVuZGVy
ZXIoKSk7CisjaWYgIUVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBvcHBvcnR1bml0aWVzSW5SdW4gPSBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50KHJlbmRlclRleHQuc3RyaW5nVmlldygpLCBsZWFmQ2hpbGQtPmRpcmVjdGlvbigpLCBpc0Fm
dGVyRXhwYW5zaW9uKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBv
cHBvcnR1bml0aWVzSW5SdW4gPSBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KHJlbmRl
clRleHQuc3RyaW5nVmlldygpLCBsZWFmQ2hpbGQtPmRpcmVjdGlvbigpLCBpc0FmdGVyRXhwYW5z
aW9uLCB0ZXh0SnVzdGlmeSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFu
c2lvbk9wcG9ydHVuaXRpZXMuYXBwZW5kKG9wcG9ydHVuaXRpZXNJblJ1bik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ICs9IG9wcG9ydHVuaXRpZXNJ
blJ1bjsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkYWRhNDE3Li4zN2JmMjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODQsNiArODQsMTAgQEAK
ICNpbmNsdWRlICJTdHlsZURhc2hib2FyZFJlZ2lvbi5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
Q1NTM19URVhUKQorI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElP
U19URVhUX0FVVE9TSVpJTkcpCiAjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZUNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKaW5kZXggNTgyZjlhOS4uNDFlZTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKQEAgLTQ0Niwx
MCArNDQ2LDYgQEAgZW51bSBUZXh0RGVjb3JhdGlvblN0eWxlIHsKIGVudW0gVGV4dEFsaWduTGFz
dCB7CiAgICAgVGV4dEFsaWduTGFzdEF1dG8sIFRleHRBbGlnbkxhc3RTdGFydCwgVGV4dEFsaWdu
TGFzdEVuZCwgVGV4dEFsaWduTGFzdExlZnQsIFRleHRBbGlnbkxhc3RSaWdodCwgVGV4dEFsaWdu
TGFzdENlbnRlciwgVGV4dEFsaWduTGFzdEp1c3RpZnkKIH07Ci0KLWVudW0gVGV4dEp1c3RpZnkg
ewotICAgIFRleHRKdXN0aWZ5QXV0bywgVGV4dEp1c3RpZnlOb25lLCBUZXh0SnVzdGlmeUludGVy
V29yZCwgVGV4dEp1c3RpZnlEaXN0cmlidXRlCi19OwogI2VuZGlmIC8vIENTUzNfVEVYVAogCiBl
bnVtIFRleHREZWNvcmF0aW9uU2tpcEl0ZW1zIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242937</attachid>
            <date>2014-12-09 10:20:41 -0800</date>
            <delta_ts>2016-08-22 17:52:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>distribute.patch</filename>
            <type>text/plain</type>
            <size>21493</size>
            <attacher name="Zoltan Horvath">zoltan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMDg2NWM3Li5iY2JmOTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMTIt
MDkgIFpvbHRhbiBIb3J2YXRoICA8em9sdGFuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJl
bmRlcmluZyBzdXBwb3J0IGZvciB0aGUgdGV4dC1qdXN0aWZ5OiBkaXN0cmlidXRlIHByb3BlcnR5
IGZvciA4IGJpdCBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTc1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1qdXN0aWZ5L3RleHQtanVz
dGlmeS04Yml0cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4
dC9jc3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbDogQWRkZWQuCisKIDIw
MTQtMTItMDggIEFuZHJ6ZWogQmFkb3dza2kgIDxhLmJhZG93c2tpQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIENoYW5nZSBleHBlY3RhdGlvbnMgZm9yIHR3byBhY2Nlc3NpYmlsaXR5IGxh
eW91dCB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1qdXN0aWZ5L3RleHQtanVzdGlmeS04Yml0cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0aWZ5LThiaXRzLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyYjgwZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1q
dXN0aWZ5L3RleHQtanVzdGlmeS04Yml0cy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDIgQEAK
KzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy50ZXN0IHsKKyAgICB0
ZXh0LWFsaWduOiBqdXN0aWZ5OworICAgIHdpZHRoOiAxNTBweDsKKyAgICBib3JkZXI6IHNvbGlk
IDFweCBibGFjazsKKyAgICBtYXJnaW4tYm90dG9tOiAyMHB4OworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMjBweDsiPgorVGVzdCBhbGwg
b2YgdGhlIHZhbHVlcyBvZiB0ZXh0LWp1c3RpZnkgZm9yIDhiaXQgY2hhcmFjdGVycy48YnIvPgor
VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGFsbCBvZiB0aGUgdmFsdWVzIGZvciB0ZXh0LWp1c3RpZnkg
cHJvcGVydHkgd29ya3MgcHJvcGVybHkgZm9yIDhiaXQgY2hhcmFjdGVycy48YnIvPgorPC9kaXY+
CisKKzxkaXY+CisgICAgPGI+dGV4dC1qdXN0aWZ5OiBhdXRvPC9iPgorICAgIDxkaXYgY2xhc3M9
InRlc3QiPgorICAgICAgICBYWFhYIFhYWCBYWCBYIFhYIFhYWCBYWFhYPGJyLz5YWFhYWFgKKyAg
ICA8L2Rpdj4KKworICAgIDxiPnRleHQtanVzdGlmeTogbm9uZTwvYj4KKyAgICA8ZGl2IGNsYXNz
PSJ0ZXN0IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgIFhYWFggWFhYIFhYIFgg
WFggWFhYIFhYWFg8YnIvPlhYWFhYWAorICAgIDwvZGl2PgorCisgICAgPGI+dGV4dC1qdXN0aWZ5
OiBpbnRlci13b3JkPC9iPgorICAgIDxkaXYgY2xhc3M9InRlc3QiPgorICAgICAgICBYWFhYIFhY
WCBYWCBYIFhYIFhYWCBYWFhYPGJyLz5YWFhYWFgKKyAgICA8L2Rpdj4KKworICAgIDxiPnRleHQt
anVzdGlmeTogZGlzdHJpYnV0ZTwvYj4KKyAgICA8ZGl2IGNsYXNzPSJ0ZXN0Ij4KKyAgICBYPGRp
diBzdHlsZT0iZmxvYXQ6IHJpZ2h0Ij5YPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3Nz
My10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0aWZ5LThiaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2NzczMtdGV4dC9jc3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjNhYzkyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWp1c3RpZnkvdGV4dC1qdXN0
aWZ5LThiaXRzLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorLnRlc3QgeworICAgIHRleHQtYWxpZ246IGp1c3RpZnk7CisgICAg
d2lkdGg6IDE1MHB4OworICAgIGJvcmRlcjogc29saWQgMXB4IGJsYWNrOworICAgIG1hcmdpbi1i
b3R0b206IDIwcHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJt
YXJnaW4tYm90dG9tOiAyMHB4OyI+CitUZXN0IGFsbCBvZiB0aGUgdmFsdWVzIG9mIHRleHQtanVz
dGlmeSBmb3IgOGJpdCBjaGFyYWN0ZXJzLjxici8+CitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgYWxs
IG9mIHRoZSB2YWx1ZXMgZm9yIHRleHQtanVzdGlmeSBwcm9wZXJ0eSB3b3JrcyBwcm9wZXJseSBm
b3IgOGJpdCBjaGFyYWN0ZXJzLjxici8+Cis8L2Rpdj4KKworPGRpdj4KKyAgICA8Yj50ZXh0LWp1
c3RpZnk6IGF1dG88L2I+CisgICAgPGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJraXQtdGV4
dC1qdXN0aWZ5OiBhdXRvIj4KKyAgICAgICAgWFhYWCBYWFggWFggWCBYWCBYWFggWFhYWDxici8+
WFhYWFhYCisgICAgPC9kaXY+CisKKyAgICA8Yj50ZXh0LWp1c3RpZnk6IG5vbmU8L2I+CisgICAg
PGRpdiBjbGFzcz0idGVzdCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1qdXN0aWZ5OiBub25lIj4KKyAg
ICAgICAgWFhYWCBYWFggWFggWCBYWCBYWFggWFhYWDxici8+WFhYWFhYCisgICAgPC9kaXY+CisK
KyAgICA8Yj50ZXh0LWp1c3RpZnk6IGludGVyLXdvcmQ8L2I+CisgICAgPGRpdiBjbGFzcz0idGVz
dCIgc3R5bGU9Ii13ZWJraXQtdGV4dC1qdXN0aWZ5OiBpbnRlci13b3JkOyI+CisgICAgICAgIFhY
WFggWFhYIFhYIFggWFggWFhYIFhYWFg8YnIvPlhYWFhYWAorICAgIDwvZGl2PgorCisgICAgPGI+
dGV4dC1qdXN0aWZ5OiBkaXN0cmlidXRlPC9iPgorICAgIDxkaXYgY2xhc3M9InRlc3QiIHN0eWxl
PSItd2Via2l0LXRleHQtanVzdGlmeTogZGlzdHJpYnV0ZSI+CisgICAgICAgIFhYCisgICAgPC9k
aXY+Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ1ZTNmNGQuLjI3
ZWJjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNC0xMi0wOSAgWm9sdGFuIEhv
cnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgcmVuZGVyaW5nIHN1cHBv
cnQgZm9yIHRoZSB0ZXh0LWp1c3RpZnk6IGRpc3RyaWJ1dGUgcHJvcGVydHkgZm9yIDggYml0IGNo
YXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNzUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyByZW5kZXJpbmcgc3VwcG9ydCBmb3IgLXdlYmtpdC10ZXh0LWp1c3Rp
Znk6IGRpc3RyaWJ1dGUuIENTUzNfVEVYVCBpcworICAgICAgICBkaXNhYmxlZCBieSBkZWZhdWx0
IGFuZCBhbHNvIHRoZSB0ZXh0LWp1c3RpZnkgdGVzdHMgYXJlIHNraXBwZWQuCisKKyAgICAgICAg
QmxpbmsgZXF1aXZhbGVudDogRG9uZ3dvbyBKb3NodWEgSW0sIGh0dHBzOi8vY29kZXJldmlldy5j
aHJvbWl1bS5vcmcvMjU1MzIzMDA0LyAKKworICAgICAgICBUZXN0OiBmYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtanVzdGlmeS90ZXh0LWp1c3RpZnktOGJpdHMuaHRtbAorCisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpleHBhbnNpb25PcHBvcnR1
bml0eUNvdW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6VGV4dFJ1bik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpzZXRUZXh0SnVzdGlmeSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0UnVuOjp0ZXh0SnVzdGlmeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpXaWR0
aEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRl
cm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBs
ZXhUZXh0Q29udHJvbGxlcik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bik6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNG
b3JTZWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKwogMjAxNC0x
Mi0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBSZXNvdXJjZUhhbmRsZTo6bG9hZHNCbG9ja2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCmluZGV4IDEwNDJiMzMuLjhmNjVjODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaApAQCAt
NTUsNiArNTUsMTAgQEAKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDU1MzX1RFWFQpCisjaW5jbHVkZSAiVGV4dFJ1bi5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU1ByaW1pdGl2ZVZhbHVlKHNob3J0IGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCmluZGV4IDM5MjMwYzguLmEyZTI4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC05NjgsNiArOTY4LDcgQEAgYm9vbCBGb250Ojpp
c0NKS0lkZW9ncmFwaE9yU3ltYm9sKFVDaGFyMzIgYykKICAgICByZXR1cm4gaXNDSktJZGVvZ3Jh
cGgoYyk7CiB9CiAKKyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKIHVuc2lnbmVkIEZvbnQ6OmV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNp
b24pCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwpAQCAtOTkwLDYgKzk5MSwzMCBAQCB1bnNp
Z25lZCBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwoY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdAogICAgIH0KICAgICByZXR1cm4gY291bnQ7CiB9CisjZWxzZQor
dW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwg
Ym9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkpCit7
CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGlmICh0ZXh0SnVzdGlmeSA9PSBUZXh0SnVz
dGlmeURpc3RyaWJ1dGUpCisgICAgICAgIGNvdW50ID0gbGVuZ3RoIC0gMTsKKyAgICBlbHNlIHsK
KyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJlYXRBc1Nw
YWNlKGNoYXJhY3RlcnNbaV0pKQorICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGxl
bmd0aDsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UoY2hh
cmFjdGVyc1tpIC0gMV0pKQorICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIGludCBsYXN0Q2hhcmFjdGVyID0gKGRpcmVjdGlv
biA9PSBMVFIpID8gbGVuZ3RoIC0gMSA6IDA7CisgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRyZWF0
QXNTcGFjZShjaGFyYWN0ZXJzW2xhc3RDaGFyYWN0ZXJdKTsKKyAgICByZXR1cm4gY291bnQ7Cit9
CisjZW5kaWYKIAogdW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVy
bmFsKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbikKIHsKQEAgLTEwNDEsMTAgKzEwNjYs
MTkgQEAgdW5zaWduZWQgRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QKICAgICByZXR1cm4gY291bnQ7CiB9CiAKKyNp
ZiAhRU5BQkxFKENTUzNfVEVYVCkKIHVuc2lnbmVkIEZvbnQ6OmV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNpb24pCisjZWxzZQordW5zaWduZWQgRm9udDo6ZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3Rp
ZnkgdGV4dEp1c3RpZnkpCisjZW5kaWYKIHsKICAgICBpZiAoc3RyaW5nVmlldy5pczhCaXQoKSkK
KyNpZiAhRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgcmV0dXJuIGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnRJbnRlcm5hbChzdHJpbmdWaWV3LmNoYXJhY3RlcnM4KCksIHN0cmluZ1ZpZXcubGVu
Z3RoKCksIGRpcmVjdGlvbiwgaXNBZnRlckV4cGFuc2lvbik7CisjZWxzZQorICAgICAgICByZXR1
cm4gZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudEludGVybmFsKHN0cmluZ1ZpZXcuY2hhcmFjdGVy
czgoKSwgc3RyaW5nVmlldy5sZW5ndGgoKSwgZGlyZWN0aW9uLCBpc0FmdGVyRXhwYW5zaW9uLCB0
ZXh0SnVzdGlmeSk7CisjZW5kaWYKKwogICAgIHJldHVybiBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50SW50ZXJuYWwoc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nVmlldy5sZW5ndGgo
KSwgZGlyZWN0aW9uLCBpc0FmdGVyRXhwYW5zaW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IDFlOGE4OTQuLmU5YjcyMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
CisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyNpbmNsdWRlICJUZXh0UnVuLmgiCisjZW5kaWYKKwog
Ly8gIlgxMS9YLmgiIGRlZmluZXMgQ29tcGxleCB0byAwIGFuZCBjb25mbGljdHMKIC8vIHdpdGgg
Q29tcGxleCB2YWx1ZSBpbiBDb2RlUGF0aCBlbnVtLgogI2lmZGVmIENvbXBsZXgKQEAgLTIwNCw3
ICsyMDgsMTEgQEAgcHVibGljOgogICAgIC8vIEJFV0FSRTogSWYgaXNBZnRlckV4cGFuc2lvbiBp
cyB0cnVlIGFmdGVyIHRoaXMgZnVuY3Rpb24gY2FsbCwgdGhlbiB0aGUgcmV0dXJuZWQgdmFsdWUg
aW5jbHVkZXMgYSB0cmFpbGluZyBvcHBvcnR1bml0eQogICAgIC8vIHdoaWNoIG1heSBvciBtYXkg
bm90IGFjdHVhbGx5IGJlIHByZXNlbnQuIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoKSBjb21wZW5zYXRlcwogICAgIC8vIGZvciB0aGlz
IGJ5IGRlY3JlbWVudGluZyB0aGUgcmV0dXJuZWQgdmFsdWUgaWYgaXNBZnRlckV4cGFuc2lvbiBp
cyB0cnVlIGF0IHRoZSBlbmQgb2YgYSBsaW5lLgorI2lmICFFTkFCTEUoQ1NTM19URVhUKQogICAg
IHN0YXRpYyB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KGNvbnN0IFN0cmluZ1Zp
ZXcmLCBUZXh0RGlyZWN0aW9uLCBib29sJiBpc0FmdGVyRXhwYW5zaW9uKTsKKyNlbHNlCisgICAg
c3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQoY29uc3QgU3RyaW5nVmll
dyYsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBhbnNpb24sIFRleHRKdXN0aWZ5KTsK
KyNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hvdWxkVXNlU21v
b3RoaW5nKGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZFVzZVNt
b290aGluZygpOwpAQCAtMjQyLDcgKzI1MCwxMSBAQCBwcml2YXRlOgogICAgIGludCBvZmZzZXRG
b3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwg
Ym9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rp
b25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlv
blJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogCisjaWYgIUVOQUJMRShDU1MzX1RFWFQp
CiAgICAgc3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChj
b25zdCBMQ2hhciosIHNpemVfdCBsZW5ndGgsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJF
eHBhbnNpb24pOworI2Vsc2UKKyAgICBzdGF0aWMgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudEludGVybmFsKGNvbnN0IExDaGFyKiwgc2l6ZV90IGxlbmd0aCwgVGV4dERpcmVjdGlv
biwgYm9vbCYgaXNBZnRlckV4cGFuc2lvbiwgY29uc3QgVGV4dEp1c3RpZnkpOworI2VuZGlmCiAg
ICAgc3RhdGljIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnRJbnRlcm5hbChjb25z
dCBVQ2hhciosIHNpemVfdCBsZW5ndGgsIFRleHREaXJlY3Rpb24sIGJvb2wmIGlzQWZ0ZXJFeHBh
bnNpb24pOwogCiAgICAgZnJpZW5kIHN0cnVjdCBXaWR0aEl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcAppbmRleCBjOTI3Nzk2Li43NjlmMDgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmNwcApAQCAt
MzcsNiArMzcsOSBAQCBzdHJ1Y3QgRXhwZWN0ZWRUZXh0UnVuU2l6ZSB7CiAgICAgZmxvYXQgZmxv
YXQyOwogICAgIGZsb2F0IGZsb2F0MzsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHMgOiA5OworI2lm
IEVOQUJMRShDU1MzX1RFWFQpCisgICAgVGV4dEp1c3RpZnkgdGV4dEp1c3RpZnk7CisjZW5kaWYK
IH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihUZXh0UnVuKSA9PSBzaXplb2YoRXhwZWN0ZWRU
ZXh0UnVuU2l6ZSksIFRleHRSdW5faXNfbm90X29mX2V4cGVjdGVkX3NpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IDMwMzRiOTkuLjgxMzJiMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTQxLDYg
KzQxLDE1IEBAIGNsYXNzIFNpbXBsZUZvbnREYXRhOwogc3RydWN0IEdseXBoRGF0YTsKIHN0cnVj
dCBXaWR0aEl0ZXJhdG9yOwogCisjaWYgRU5BQkxFKENTUzNfVEVYVCkKK2VudW0gVGV4dEp1c3Rp
ZnkgeworICAgIFRleHRKdXN0aWZ5QXV0bywKKyAgICBUZXh0SnVzdGlmeU5vbmUsCisgICAgVGV4
dEp1c3RpZnlJbnRlcldvcmQsCisgICAgVGV4dEp1c3RpZnlEaXN0cmlidXRlCit9OworI2VuZGlm
CisKIGNsYXNzIFRleHRSdW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpAQCAtNzYsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hcHBseVJ1blJvdW5kaW5n
KChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91bmRpbmdIYWNrcykK
ICAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgV29yZFJvdW5k
aW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9kaXNhYmxlU3BhY2lu
ZyhmYWxzZSkKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgICAgICAsIG1fdGV4dEp1c3RpZnko
VGV4dEp1c3RpZnlBdXRvKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtOTQsNiArMTA2LDkg
QEAgcHVibGljOgogICAgICAgICAsIG1fYXBwbHlSdW5Sb3VuZGluZygocm91bmRpbmdIYWNrcyAm
IFJ1blJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9hcHBs
eVdvcmRSb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGluZykgJiYgc19hbGxvd3NS
b3VuZGluZ0hhY2tzKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCisjaWYgRU5B
QkxFKENTUzNfVEVYVCkKKyAgICAgICAgLCBtX3RleHRKdXN0aWZ5KFRleHRKdXN0aWZ5QXV0bykK
KyNlbmRpZgogICAgIHsKICAgICB9CiAgICAgCkBAIC0xMTIsNiArMTI3LDkgQEAgcHVibGljOgog
ICAgICAgICAsIG1fYXBwbHlSdW5Sb3VuZGluZygocm91bmRpbmdIYWNrcyAmIFJ1blJvdW5kaW5n
KSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9hcHBseVdvcmRSb3VuZGlu
Zygocm91bmRpbmdIYWNrcyAmIFdvcmRSb3VuZGluZykgJiYgc19hbGxvd3NSb3VuZGluZ0hhY2tz
KQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCisjaWYgRU5BQkxFKENTUzNfVEVY
VCkKKyAgICAgICAgLCBtX3RleHRKdXN0aWZ5KFRleHRKdXN0aWZ5QXV0bykKKyNlbmRpZgogICAg
IHsKICAgICB9CiAKQEAgLTEzMCw2ICsxNDgsOSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hcHBs
eVJ1blJvdW5kaW5nKChyb3VuZGluZ0hhY2tzICYgUnVuUm91bmRpbmcpICYmIHNfYWxsb3dzUm91
bmRpbmdIYWNrcykKICAgICAgICAgLCBtX2FwcGx5V29yZFJvdW5kaW5nKChyb3VuZGluZ0hhY2tz
ICYgV29yZFJvdW5kaW5nKSAmJiBzX2FsbG93c1JvdW5kaW5nSGFja3MpCiAgICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgICAgICAsIG1f
dGV4dEp1c3RpZnkoVGV4dEp1c3RpZnlBdXRvKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAt
MTkyLDYgKzIxMywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDaGFyYWN0ZXJTY2FuRm9yQ29k
ZVBhdGgoYm9vbCBzY2FuKSB7IG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gc2NhbjsgfQog
ICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCisjaWYgRU5B
QkxFKENTUzNfVEVYVCkKKyAgICB2b2lkIHNldFRleHRKdXN0aWZ5KFRleHRKdXN0aWZ5IHRleHRK
dXN0aWZ5KSB7IG1fdGV4dEp1c3RpZnkgPSB0ZXh0SnVzdGlmeTsgfQorICAgIFRleHRKdXN0aWZ5
IHRleHRKdXN0aWZ5KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SnVzdGlmeTsgfQorI2VuZGlmCisK
ICAgICBjbGFzcyBSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyaW5n
Q29udGV4dD4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+UmVuZGVyaW5nQ29udGV4
dCgpIHsgfQpAQCAtMjM2LDYgKzI2Miw5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9hcHBs
eVJ1blJvdW5kaW5nIDogMTsKICAgICB1bnNpZ25lZCBtX2FwcGx5V29yZFJvdW5kaW5nIDogMTsK
ICAgICB1bnNpZ25lZCBtX2Rpc2FibGVTcGFjaW5nIDogMTsKKyNpZiBFTkFCTEUoQ1NTM19URVhU
KQorICAgIFRleHRKdXN0aWZ5IG1fdGV4dEp1c3RpZnk7CisjZW5kaWYKIH07CiAKIGlubGluZSB2
b2lkIFRleHRSdW46OnNldFRhYlNpemUoYm9vbCBhbGxvdywgdW5zaWduZWQgc2l6ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5k
ZXggZjJjN2MwNS4uMDcxNjRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTU3LDcgKzU3LDExIEBAIFdpZHRoSXRlcmF0
b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udCogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBI
YXNoU2V0PGNvbnN0CiAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHkgPSAwOwogICAg
IGVsc2UgewogICAgICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSBtX2lzQWZ0ZXJFeHBhbnNp
b247CisjaWYgIUVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9w
cG9ydHVuaXR5Q291bnQgPSBGb250OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRl
eHQoKSwgbV9ydW4ubHRyKCkgPyBMVFIgOiBSVEwsIGlzQWZ0ZXJFeHBhbnNpb24pOworI2Vsc2UK
KyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnQ6OmV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJU
TCwgaXNBZnRlckV4cGFuc2lvbiwgbV9ydW4udGV4dEp1c3RpZnkoKSk7CisjZW5kaWYKICAgICAg
ICAgaWYgKGlzQWZ0ZXJFeHBhbnNpb24gJiYgIW1fcnVuLmFsbG93c1RyYWlsaW5nRXhwYW5zaW9u
KCkpCiAgICAgICAgICAgICBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LS07CiAKQEAgLTIyNywx
MiArMjMxLDE2IEBAIGlubGluZSB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJu
YWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoCiAgICAgICAgICAgICAgICAgd2lk
dGggKz0gbV9mb250LT5sZXR0ZXJTcGFjaW5nKCk7CiAKICAgICAgICAgICAgIHN0YXRpYyBib29s
IGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgPSBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhz
SW5Db21wbGV4VGV4dCgpOwotICAgICAgICAgICAgYm9vbCB0cmVhdEFzU3BhY2UgPSBGb250Ojp0
cmVhdEFzU3BhY2UoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UgfHwg
KGV4cGFuZEFyb3VuZElkZW9ncmFwaHMgJiYgRm9udDo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChj
aGFyYWN0ZXIpKSkgeworI2lmICFFTkFCTEUoQ1NTM19URVhUKQorICAgICAgICAgICAgYm9vbCBp
c0V4cGFuc2lvbk9wcG9ydHVuaXR5ID0gRm9udDo6dHJlYXRBc1NwYWNlKGNoYXJhY3Rlcik7Cisj
ZWxzZQorICAgICAgICAgICAgYm9vbCBpc0V4cGFuc2lvbk9wcG9ydHVuaXR5ID0gRm9udDo6dHJl
YXRBc1NwYWNlKGNoYXJhY3RlcikgfHwgbV9ydW4udGV4dEp1c3RpZnkoKSA9PSBUZXh0SnVzdGlm
eURpc3RyaWJ1dGU7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChpc0V4cGFuc2lvbk9wcG9ydHVu
aXR5IHx8IChleHBhbmRBcm91bmRJZGVvZ3JhcGhzICYmIEZvbnQ6OmlzQ0pLSWRlb2dyYXBoT3JT
eW1ib2woY2hhcmFjdGVyKSkpIHsKICAgICAgICAgICAgICAgICAvLyBEaXN0cmlidXRlIHRoZSBy
dW4ncyB0b3RhbCBleHBhbnNpb24gZXZlbmx5IG92ZXIgYWxsIGV4cGFuc2lvbiBvcHBvcnR1bml0
aWVzIGluIHRoZSBydW4uCiAgICAgICAgICAgICAgICAgaWYgKG1fZXhwYW5zaW9uKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHByZXZpb3VzRXhwYW5zaW9uID0gbV9leHBhbnNpb247Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghdHJlYXRBc1NwYWNlICYmICFtX2lzQWZ0ZXJFeHBhbnNp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0V4cGFuc2lvbk9wcG9ydHVuaXR5ICYm
ICFtX2lzQWZ0ZXJFeHBhbnNpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRha2Ug
dGhlIGV4cGFuc2lvbiBvcHBvcnR1bml0eSBiZWZvcmUgdGhpcyBpZGVvZ3JhcGguCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2V4cGFuc2lvbiAtPSBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5
OwogICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXhwYW5zaW9uQXRUaGlzT3Bwb3J0dW5p
dHkgPSAhbV9ydW4uYXBwbHlXb3JkUm91bmRpbmcoKSA/IG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5p
dHkgOiByb3VuZGYocHJldmlvdXNFeHBhbnNpb24pIC0gcm91bmRmKG1fZXhwYW5zaW9uKTsKQEAg
LTI1OSw3ICsyNjcsNyBAQCBpbmxpbmUgdW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUlu
dGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaAogCiAgICAgICAgICAgICAg
ICAgLy8gQWNjb3VudCBmb3Igd29yZCBzcGFjaW5nLgogICAgICAgICAgICAgICAgIC8vIFdlIGFw
cGx5IGFkZGl0aW9uYWwgc3BhY2UgYmV0d2VlbiAid29yZHMiIGJ5IGFkZGluZyB3aWR0aCB0byB0
aGUgc3BhY2UgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UgJiYg
KGNoYXJhY3RlciAhPSAnXHQnIHx8ICFtX3J1bi5hbGxvd1RhYnMoKSkgJiYgKGN1cnJlbnRDaGFy
YWN0ZXIgfHwgY2hhcmFjdGVyID09IG5vQnJlYWtTcGFjZSkgJiYgbV9mb250LT53b3JkU3BhY2lu
ZygpKQorICAgICAgICAgICAgICAgIGlmIChpc0V4cGFuc2lvbk9wcG9ydHVuaXR5ICYmIChjaGFy
YWN0ZXIgIT0gJ1x0JyB8fCAhbV9ydW4uYWxsb3dUYWJzKCkpICYmIChjdXJyZW50Q2hhcmFjdGVy
IHx8IGNoYXJhY3RlciA9PSBub0JyZWFrU3BhY2UpICYmIG1fZm9udC0+d29yZFNwYWNpbmcoKSkK
ICAgICAgICAgICAgICAgICAgICAgd2lkdGggKz0gbV9mb250LT53b3JkU3BhY2luZygpOwogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9pc0FmdGVyRXhwYW5zaW9uID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IDVlYmQ0M2UuLjc1ZTlmMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDExIEBAIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVyKGNvbnN0IEZvbnQqIGZvbnQsIGNv
bnN0IFRleHRSdW4mIHJ1CiAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHkgPSAwOwog
ICAgIGVsc2UgewogICAgICAgICBib29sIGlzQWZ0ZXJFeHBhbnNpb24gPSBtX2FmdGVyRXhwYW5z
aW9uOworI2lmICFFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICB1bnNpZ25lZCBleHBhbnNpb25P
cHBvcnR1bml0eUNvdW50ID0gRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50
ZXh0KCksIG1fcnVuLmx0cigpID8gTFRSIDogUlRMLCBpc0FmdGVyRXhwYW5zaW9uKTsKKyNlbHNl
CisgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSBGb250OjpleHBh
bnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBMVFIgOiBS
VEwsIGlzQWZ0ZXJFeHBhbnNpb24sIG1fcnVuLnRleHRKdXN0aWZ5KCkpOworI2VuZGlmCiAgICAg
ICAgIGlmIChpc0FmdGVyRXhwYW5zaW9uICYmICFtX3J1bi5hbGxvd3NUcmFpbGluZ0V4cGFuc2lv
bigpKQogICAgICAgICAgICAgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudC0tOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMGMwMWNhOS4uZGYwOTVk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMTM4
OCw2ICsxMzg4LDkgQEAgVGV4dFJ1biBJbmxpbmVUZXh0Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udCYgZm8KIAogICAgIFRleHRSdW4gcnVu
KHN0cmluZywgdGV4dFBvcygpLCBleHBhbnNpb24oKSwgZXhwYW5zaW9uQmVoYXZpb3IoKSwgZGly
ZWN0aW9uKCksIGRpck92ZXJyaWRlKCkgfHwgc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxP
cmRlciwgIXJlbmRlcmVyKCkuY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkpOwogICAgIHJ1bi5z
ZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsK
KyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgIHJ1bi5zZXRUZXh0SnVzdGlmeShzdHlsZS50ZXh0
SnVzdGlmeSgpKTsKKyNlbmRpZgogICAgIGlmIChmb250LnByaW1hcnlGb250KCktPmlzU1ZHRm9u
dCgpKQogICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlKHJlbmRlcmVyKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCAwM2FmYzE1Li45Nzc3NWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcApAQCAtNzA3LDcgKzcwNyw5IEBAIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6Y29t
cHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0ZvclNlZ21lbnQoUm9vdElubGluZUJvCiAgICAg
Ym9vbCBpc0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICBWZWN0b3I8dW5zaWduZWQsIDE2PiBl
eHBhbnNpb25PcHBvcnR1bml0aWVzOwogICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNPYmplY3Qg
PSBudWxscHRyOwotCisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyAgICBUZXh0SnVzdGlmeSB0ZXh0
SnVzdGlmeSA9IHN0eWxlKCkudGV4dEp1c3RpZnkoKTsKKyNlbmRpZgogICAgIEJpZGlSdW4qIHJ1
biA9IGZpcnN0UnVuOwogICAgIGZvciAoOyBydW47IHJ1biA9IHJ1bi0+bmV4dCgpKSB7CiAgICAg
ICAgIGlmICghcnVuLT5ib3goKSB8fCBydW4tPnJlbmRlcmVyKCkuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkgfHwgcnVuLT5ib3goKS0+aXNMaW5lQnJlYWsoKSkgewpAQCAtNzIwLDcgKzcyMiwxMSBA
QCBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlv
bnNGb3JTZWdtZW50KFJvb3RJbmxpbmVCbwogICAgICAgICAgICAgaWYgKHRleHRBbGlnbiA9PSBK
VVNUSUZZICYmIHJ1biAhPSB0cmFpbGluZ1NwYWNlUnVuKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFpc0FmdGVyRXhwYW5zaW9uKQogICAgICAgICAgICAgICAgICAgICBkb3duY2FzdDxJbmxpbmVU
ZXh0Qm94PigqcnVuLT5ib3goKSkuc2V0Q2FuSGF2ZUxlYWRpbmdFeHBhbnNpb24odHJ1ZSk7Cisj
aWYgIUVOQUJMRShDU1MzX1RFWFQpCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bwb3J0dW5p
dGllc0luUnVuID0gRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChyZW5kZXJUZXh0LnN0
cmluZ1ZpZXcocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCksIHJ1bi0+Ym94KCktPmRpcmVjdGlv
bigpLCBpc0FmdGVyRXhwYW5zaW9uKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgdW5zaWduZWQg
b3Bwb3J0dW5pdGllc0luUnVuID0gRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChyZW5k
ZXJUZXh0LnN0cmluZ1ZpZXcocnVuLT5tX3N0YXJ0LCBydW4tPm1fc3RvcCksIHJ1bi0+Ym94KCkt
PmRpcmVjdGlvbigpLCBpc0FmdGVyRXhwYW5zaW9uLCB0ZXh0SnVzdGlmeSk7CisjZW5kaWYKICAg
ICAgICAgICAgICAgICBleHBhbnNpb25PcHBvcnR1bml0aWVzLmFwcGVuZChvcHBvcnR1bml0aWVz
SW5SdW4pOwogICAgICAgICAgICAgICAgIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgKz0gb3Bw
b3J0dW5pdGllc0luUnVuOwogICAgICAgICAgICAgfQpAQCAtNzQ0LDcgKzc1MCwxMSBAQCBCaWRp
UnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JT
ZWdtZW50KFJvb3RJbmxpbmVCbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0
PElubGluZVRleHRCb3g+KCpsZWFmQ2hpbGQpLnNldENhbkhhdmVMZWFkaW5nRXhwYW5zaW9uKHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5jb3VudGVyZWRKdXN0aWZpZWRSdWJ5ID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHJlbmRlclRleHQgPSBkb3duY2Fz
dDxSZW5kZXJUZXh0PihsZWFmQ2hpbGQtPnJlbmRlcmVyKCkpOworI2lmICFFTkFCTEUoQ1NTM19U
RVhUKQogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bwb3J0dW5pdGllc0luUnVu
ID0gRm9udDo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChyZW5kZXJUZXh0LnN0cmluZ1ZpZXco
KSwgbGVhZkNoaWxkLT5kaXJlY3Rpb24oKSwgaXNBZnRlckV4cGFuc2lvbik7CisjZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bwb3J0dW5pdGllc0luUnVuID0gRm9udDo6
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChyZW5kZXJUZXh0LnN0cmluZ1ZpZXcoKSwgbGVhZkNo
aWxkLT5kaXJlY3Rpb24oKSwgaXNBZnRlckV4cGFuc2lvbiwgdGV4dEp1c3RpZnkpOworI2VuZGlm
CiAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb25PcHBvcnR1bml0aWVzLmFwcGVuZChv
cHBvcnR1bml0aWVzSW5SdW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5zaW9uT3Bw
b3J0dW5pdHlDb3VudCArPSBvcHBvcnR1bml0aWVzSW5SdW47CiAgICAgICAgICAgICAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
ZGFkYTQxNy4uMzdiZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKQEAgLTg0LDYgKzg0LDEwIEBACiAjaW5jbHVkZSAiU3R5bGVEYXNoYm9hcmRS
ZWdpb24uaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKENTUzNfVEVYVCkKKyNpbmNsdWRlICJUZXh0
UnVuLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogI2luY2x1
ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCmluZGV4IDU4MmY5YTku
LjQxZWU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCkBAIC00NDYsMTAgKzQ0Niw2IEBAIGVudW0gVGV4dERlY29y
YXRpb25TdHlsZSB7CiBlbnVtIFRleHRBbGlnbkxhc3QgewogICAgIFRleHRBbGlnbkxhc3RBdXRv
LCBUZXh0QWxpZ25MYXN0U3RhcnQsIFRleHRBbGlnbkxhc3RFbmQsIFRleHRBbGlnbkxhc3RMZWZ0
LCBUZXh0QWxpZ25MYXN0UmlnaHQsIFRleHRBbGlnbkxhc3RDZW50ZXIsIFRleHRBbGlnbkxhc3RK
dXN0aWZ5CiB9OwotCi1lbnVtIFRleHRKdXN0aWZ5IHsKLSAgICBUZXh0SnVzdGlmeUF1dG8sIFRl
eHRKdXN0aWZ5Tm9uZSwgVGV4dEp1c3RpZnlJbnRlcldvcmQsIFRleHRKdXN0aWZ5RGlzdHJpYnV0
ZQotfTsKICNlbmRpZiAvLyBDU1MzX1RFWFQKIAogZW51bSBUZXh0RGVjb3JhdGlvblNraXBJdGVt
cyB7Cg==
</data>
<flag name="review"
          id="267799"
          type_id="1"
          status="-"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>