<?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>215661</bug_id>
          
          <creation_ts>2020-08-19 14:17:03 -0700</creation_ts>
          <short_desc>Simple text codepath ignores y-component of glyph advances</short_desc>
          <delta_ts>2021-08-06 18:37:16 -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>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>206208</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1681470</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-19 14:17:03 -0700</bug_when>
    <thetext>It has:

float Font::platformWidthForGlyph(Glyph glyph) const
{
    CGSize advance = CGSizeZero;
    ... populate advance ...
    return advance.width + [unrelated stuff];
}

and

float width = font-&gt;widthForGlyph(glyph);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683135</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-26 14:18:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/67828756&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779403</commentid>
    <comment_count>2</comment_count>
      <attachid>434191</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-25 21:28:09 -0700</bug_when>
    <thetext>Created attachment 434191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779678</commentid>
    <comment_count>3</comment_count>
      <attachid>434269</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-26 21:33:55 -0700</bug_when>
    <thetext>Created attachment 434269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779752</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-27 09:04:13 -0700</bug_when>
    <thetext>WebCore\platform\graphics\win\SimpleFontDataCGWin.cpp(121,16): error C3861: &apos;makeGyphBufferAdvance&apos;: identifier not found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779772</commentid>
    <comment_count>5</comment_count>
      <attachid>434295</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-27 10:14:54 -0700</bug_when>
    <thetext>Created attachment 434295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779817</commentid>
    <comment_count>6</comment_count>
      <attachid>434295</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-27 12:53:34 -0700</bug_when>
    <thetext>Comment on attachment 434295
Patch

We might not want to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779818</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-07-27 13:03:19 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #6)
&gt; We might not want to do this.

y?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779823</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-27 13:21:16 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; (In reply to Myles C. Maxfield from comment #6)
&gt; &gt; We might not want to do this.
&gt; 
&gt; y?

Because this data comes from the hmtx and vmtx tables in the font, but the data contained inside those tables is one-dimensional. This means that the y-components of these advances is always 0 (or almost always 0, if CoreText has some corner case somewhere which might set something in some circumstance to nonzero).

These advances are retained inside caches, and it would be kind of unfortunate to double the size of our caches just so we can store a bunch of 0 values.

So, I need to determine if CTFontGetAdvancesForCharacters() will ever return a nonzero value for the Y-components. If it does, I should rework this patch to only store the nonzero values in our caches (maybe by using a unique_ptr which is usually null or something). If it doesn&apos;t, then we should just straight up not do this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780331</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-29 01:11:10 -0700</bug_when>
    <thetext>There’s a chance that bitmap fonts might actually be capable of having nonzero y advances. I’m making a test font to see. https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bdat.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1782630</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-06 18:36:43 -0700</bug_when>
    <thetext>I believe I&apos;ve proved that CoreText will always report 0 for one of the two fields when you ask it for advances. So, it looks like this bug is unnecessary.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434191</attachid>
            <date>2021-07-25 21:28:09 -0700</date>
            <delta_ts>2021-07-26 21:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215661-20210725212808.patch</filename>
            <type>text/plain</type>
            <size>22529</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU5YWQzYzA2YzU0YmNk
OWRmM2M0OGFmMTgzYTFjODliYTY4ZTdjMS4uNTQwNTI3NDYzZjk4YmE4NDQ0ZDNhNjQ0ZjliZjIz
NDBkNGYyMjk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTA3LTI1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIHRl
eHQgY29kZXBhdGggaWdub3JlcyB5LWNvbXBvbmVudCBvZiBnbHlwaCBhZHZhbmNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjYxCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82NzgyODc1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIHRoZSBuZXh0IHN0ZXAgZm9yIGRlbGV0aW5nIHRo
ZSBjb21wbGV4IHRleHQgY29kZXBhdGguIFRoZSBmYXN0IHRleHQgY29kZXBhdGggbmVlZHMgdG8g
YmUKKyAgICAgICAgZW5yaWNoZWQgdG8gaGFuZGxlIGdseXBocyB3aXRoIHktYWR2YW5jZXMuIFRo
aXMgcGF0Y2ggaXMgZmFpcmx5IG1lY2hhbmljYWwsIGFuZCBqdXN0IHR1cm5zCisgICAgICAgIHBs
YXRmb3JtV2lkdGhGb3JHbHlwaCgpIGludG8gcGxhdGZvcm1BZHZhbmNlRm9yR2x5cGgoKS4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnQ6OmluaXRDaGFyV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnBsYXRmb3JtR2x5
cGhJbml0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpGb250Ojpib3VuZHNGb3JHbHlwaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250OjphZHZhbmNlRm9yR2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6d2lk
dGhGb3JHbHlwaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9y
U2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvZmZzZXRUb01pZGRsZU9mR2x5
cGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAg
ICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJB
ZHZhbmNlPj46OnVua25vd25NZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmlj
c01hcDxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+Ojp1bmtub3duTWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlOjpHbHlwaE1ldHJpY3NNYXA8ZmxvYXQ+Ojp1bmtub3duTWV0cmljcyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pjo6dW5rbm93
bk1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3Rl
clRyZWF0ZWRBc1NwYWNlOjpPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3Jt
cyk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0Zm9ybUFkdmFuY2VGb3JHbHlwaCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGggY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFkdmFuY2VXaWR0aEZvckdseXBoKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTE9wZXJhdG9yOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OmxheW91dEJsb2NrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpwYWludCk6CisKIDIwMjEtMDctMjQgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZSBQYXldIERv
IG5vdCBhZGQgY291cG9uIGNvZGUgYEFwcGxlUGF5RXJyb3JDb2RlYCB2YWx1ZXMgZm9yIHN5c3Rl
bXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggNDQ5MzJk
ZWZjZDk4NjNlNjBmMjBjYTlkMTc2MmE3OTY1MzBiMWZiOC4uN2FjMTU4MDIyOTBjYTY1NTBiMzli
NDAzZWQ1N2E2MzhhMTE0MjAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC04NDEsNyArODQx
LDcgQEAgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRS
dW4oY29uc3QgRm9udCYgZm9udCwgY29uc3QgVUMKIAogICAgIC8vIFN5bnRoZXNpemUgYSBydW4g
b2YgbWlzc2luZyBnbHlwaHMuCiAgICAgbV9nbHlwaHMuZmlsbCgwLCBtX2dseXBoQ291bnQpOwot
ICAgIG1fYmFzZUFkdmFuY2VzLmZpbGwoRmxvYXRTaXplKG1fZm9udC53aWR0aEZvckdseXBoKDAp
LCAwKSwgbV9nbHlwaENvdW50KTsKKyAgICBtX2Jhc2VBZHZhbmNlcy5maWxsKHNpemUobV9mb250
LmFkdmFuY2VGb3JHbHlwaCgwKSksIG1fZ2x5cGhDb3VudCk7CiB9CiAKIENvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKGNvbnN0IFZlY3RvcjxGbG9h
dFNpemU+JiBhZHZhbmNlcywgY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBvcmlnaW5zLCBjb25z
dCBWZWN0b3I8R2x5cGg+JiBnbHlwaHMsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHN0cmluZ0lu
ZGljZXMsIEZsb2F0U2l6ZSBpbml0aWFsQWR2YW5jZSwgY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
VUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCB1bnNpZ25lZCBzdHJp
bmdMZW5ndGgsIHVuc2lnbmVkIGluZGV4QmVnaW4sIHVuc2lnbmVkIGluZGV4RW5kLCBib29sIGx0
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggMTdhMzdh
ZjhiYmZkODc5ZDVhODQ0MzhjZTRlMzk5M2M0N2Y3OTEzZi4uNWI5MTBmNDAzYmM3MDc4NDdjNzQ0
ZDA3NDc2Y2NiNTdkZjhiMzQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEZvbnQ6OmluaXRDaGFyV2lkdGhzKCkK
ICAgICBpZiAobV9hdmdDaGFyV2lkdGggPD0gMC5mICYmIGdseXBoUGFnZVplcm8pIHsKICAgICAg
ICAgR2x5cGggZGlnaXRaZXJvR2x5cGggPSBnbHlwaFBhZ2VaZXJvLT5nbHlwaERhdGFGb3JDaGFy
YWN0ZXIoJzAnKS5nbHlwaDsKICAgICAgICAgaWYgKGRpZ2l0WmVyb0dseXBoKQotICAgICAgICAg
ICAgbV9hdmdDaGFyV2lkdGggPSB3aWR0aEZvckdseXBoKGRpZ2l0WmVyb0dseXBoKTsKKyAgICAg
ICAgICAgIG1fYXZnQ2hhcldpZHRoID0gd2lkdGgoYWR2YW5jZUZvckdseXBoKGRpZ2l0WmVyb0ds
eXBoKSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgY2FuJ3QgcmV0cmlldmUgdGhlIHdpZHRoIG9m
IGEgJzAnLCBmYWxsIGJhY2sgdG8gdGhlIHggaGVpZ2h0LgpAQCAtMTU3LDE0ICsxNTcsMTQgQEAg
dm9pZCBGb250OjpwbGF0Zm9ybUdseXBoSW5pdCgpCiAgICAgaWYgKG1femVyb1dpZHRoU3BhY2VH
bHlwaCA9PSBtX3NwYWNlR2x5cGgpCiAgICAgICAgIG1femVyb1dpZHRoU3BhY2VHbHlwaCA9IDA7
CiAKLSAgICBmbG9hdCB3aWR0aCA9IHdpZHRoRm9yR2x5cGgobV9zcGFjZUdseXBoKTsKLSAgICBt
X3NwYWNlV2lkdGggPSB3aWR0aDsKLSAgICBtX2ZvbnRNZXRyaWNzLnNldFplcm9XaWR0aCh3aWR0
aEZvckdseXBoKG1femVyb0dseXBoKSk7CisgICAgZmxvYXQgc3BhY2VXaWR0aCA9IHdpZHRoKGFk
dmFuY2VGb3JHbHlwaChtX3NwYWNlR2x5cGgpKTsKKyAgICBtX3NwYWNlV2lkdGggPSBzcGFjZVdp
ZHRoOworICAgIG1fZm9udE1ldHJpY3Muc2V0WmVyb1dpZHRoKHdpZHRoKGFkdmFuY2VGb3JHbHlw
aChtX3plcm9HbHlwaCkpKTsKICAgICBhdXRvIGFtb3VudFRvQWRqdXN0TGluZUdhcCA9IHN0ZDo6
bWluKG1fZm9udE1ldHJpY3MuZmxvYXRMaW5lR2FwKCksIDAuMGYpOwogICAgIG1fZm9udE1ldHJp
Y3Muc2V0TGluZUdhcChtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZUdhcCgpIC0gYW1vdW50VG9BZGp1
c3RMaW5lR2FwKTsKICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVTcGFjaW5nKG1fZm9udE1ldHJp
Y3MuZmxvYXRMaW5lU3BhY2luZygpIC0gYW1vdW50VG9BZGp1c3RMaW5lR2FwKTsKICAgICBkZXRl
cm1pbmVQaXRjaCgpOwotICAgIG1fYWRqdXN0ZWRTcGFjZVdpZHRoID0gbV90cmVhdEFzRml4ZWRQ
aXRjaCA/IGNlaWxmKHdpZHRoKSA6IHJvdW5kZih3aWR0aCk7CisgICAgbV9hZGp1c3RlZFNwYWNl
V2lkdGggPSBtX3RyZWF0QXNGaXhlZFBpdGNoID8gY2VpbGYoc3BhY2VXaWR0aCkgOiByb3VuZGYo
c3BhY2VXaWR0aCk7CiB9CiAKIEZvbnQ6On5Gb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaAppbmRleCA0N2E3ZTEyZjliYzY4OTIwY2E3MTRlOTI0NzllNTllZjNlZWU4
ZDMyLi42NmU3NzEzMGNiM2MxOGNlY2VlOTE1NTM5OTBkZmUzNjMzYjk4ODRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0xNDYsMTAgKzE0NiwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRBdmdDaGFyV2lkdGgoZmxvYXQgYXZnQ2hhcldpZHRoKSB7IG1fYXZn
Q2hhcldpZHRoID0gYXZnQ2hhcldpZHRoOyB9CiAKICAgICBGbG9hdFJlY3QgYm91bmRzRm9yR2x5
cGgoR2x5cGgpIGNvbnN0OwotICAgIGZsb2F0IHdpZHRoRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owor
ICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlRm9yR2x5cGgoR2x5cGgpIGNvbnN0OwogICAg
IGNvbnN0IFBhdGgmIHBhdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7IC8vIERvbid0IHN0b3JlIHRo
ZSByZXN1bHQgb2YgdGhpcyEgVGhlIGhhc2ggbWFwIGlzIGZyZWUgdG8gcmVoYXNoIGF0IGFueSBw
b2ludCwgbGVhdmluZyB0aGlzIHJlZmVyZW5jZSBkYW5nbGluZy4KICAgICBGbG9hdFJlY3QgcGxh
dGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCkgY29uc3Q7Ci0gICAgZmxvYXQgcGxhdGZvcm1XaWR0
aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgcGxhdGZvcm1B
ZHZhbmNlRm9yR2x5cGgoR2x5cGgpIGNvbnN0OwogICAgIFBhdGggcGxhdGZvcm1QYXRoRm9yR2x5
cGgoR2x5cGgpIGNvbnN0OwogCiAgICAgZmxvYXQgc3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BhY2VXaWR0aDsgfQpAQCAtMjg3LDggKzI4Nyw4IEBAIHByaXZhdGU6CiAKICAgICBtdXRh
YmxlIFJlZlB0cjxHbHlwaFBhZ2U+IG1fZ2x5cGhQYWdlWmVybzsKICAgICBtdXRhYmxlIEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxHbHlwaFBhZ2U+PiBtX2dseXBoUGFnZXM7Ci0gICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD4+IG1fZ2x5cGhUb0Jv
dW5kc01hcDsKLSAgICBtdXRhYmxlIEdseXBoTWV0cmljc01hcDxmbG9hdD4gbV9nbHlwaFRvV2lk
dGhNYXA7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzTWFwPHN0ZDo6
b3B0aW9uYWw8RmxvYXRSZWN0Pj4+IG1fZ2x5cGhUb0JvdW5kc01hcDsKKyAgICBtdXRhYmxlIEds
eXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4+IG1fZ2x5cGhU
b1dpZHRoTWFwOwogICAgIG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0aW9uYWw8UGF0
aD4+IG1fZ2x5cGhQYXRoTWFwOwogICAgIG11dGFibGUgQml0VmVjdG9yIG1fY29kZVBvaW50U3Vw
cG9ydDsKIApAQCAtMzY5LDQ2ICszNjksNDYgQEAgQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgRm9u
dDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgaWYgKGlzWmVyb1dpZHRo
U3BhY2VHbHlwaChnbHlwaCkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAotICAgIEZs
b2F0UmVjdCBib3VuZHM7CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKICAg
ICBpZiAobV9nbHlwaFRvQm91bmRzTWFwKSB7CiAgICAgICAgIGJvdW5kcyA9IG1fZ2x5cGhUb0Jv
dW5kc01hcC0+bWV0cmljc0ZvckdseXBoKGdseXBoKTsKLSAgICAgICAgaWYgKGJvdW5kcy53aWR0
aCgpICE9IGNHbHlwaFNpemVVbmtub3duKQotICAgICAgICAgICAgcmV0dXJuIGJvdW5kczsKKyAg
ICAgICAgaWYgKGJvdW5kcy5oYXNfdmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybiBib3VuZHMu
dmFsdWUoKTsKICAgICB9CiAKICAgICBib3VuZHMgPSBwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKGds
eXBoKTsKICAgICBpZiAoIW1fZ2x5cGhUb0JvdW5kc01hcCkKLSAgICAgICAgbV9nbHlwaFRvQm91
bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4oKTsKLSAgICBt
X2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgYm91bmRzKTsKLSAg
ICByZXR1cm4gYm91bmRzOworICAgICAgICBtX2dseXBoVG9Cb3VuZHNNYXAgPSBtYWtlVW5pcXVl
PEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+PigpOworICAgIG1fZ2x5
cGhUb0JvdW5kc01hcC0+c2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBib3VuZHMudmFsdWUoKSk7
CisgICAgcmV0dXJuIGJvdW5kcy52YWx1ZSgpOwogfQogCi1BTFdBWVNfSU5MSU5FIGZsb2F0IEZv
bnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CitBTFdBWVNfSU5MSU5FIEdseXBo
QnVmZmVyQWR2YW5jZSBGb250OjphZHZhbmNlRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7
CiAgICAgLy8gVGhlIG9wdGltaXphdGlvbiBvZiByZXR1cm5pbmcgMCBmb3IgdGhlIHplcm8td2lk
dGgtc3BhY2UgZ2x5cGggaXMgaW5jb3JyZWN0IGZvciB0aGUgTGFzdFJlc29ydCBmb250LAogICAg
IC8vIHVzZWQgaW4gcGxhY2Ugb2YgdGhlIGFjdHVhbCBmb250IHdoZW4gaXNMb2FkaW5nKCkgaXMg
dHJ1ZSBvbiBib3RoIG1hY09TIGFuZCBpT1MuCiAgICAgLy8gVGhlIHplcm8td2lkdGgtc3BhY2Ug
Z2x5cGggaW4gdGhhdCBmb250IGRvZXMgbm90IGhhdmUgYSB3aWR0aCBvZiB6ZXJvIGFuZCwgZnVy
dGhlciwgdGhhdCBnbHlwaCBpcyB1c2VkCiAgICAgLy8gZm9yIG1hbnkgb3RoZXIgY2hhcmFjdGVy
cyBhbmQgbXVzdCBub3QgYmUgemVybyB3aWR0aCB3aGVuIHVzZWQgZm9yIHRoZW0uCiAgICAgaWYg
KGlzWmVyb1dpZHRoU3BhY2VHbHlwaChnbHlwaCkgJiYgIWlzSW50ZXJzdGl0aWFsKCkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOwog
Ci0gICAgZmxvYXQgd2lkdGggPSBtX2dseXBoVG9XaWR0aE1hcC5tZXRyaWNzRm9yR2x5cGgoZ2x5
cGgpOwotICAgIGlmICh3aWR0aCAhPSBjR2x5cGhTaXplVW5rbm93bikKLSAgICAgICAgcmV0dXJu
IHdpZHRoOworICAgIGF1dG8gYWR2YW5jZSA9IG1fZ2x5cGhUb1dpZHRoTWFwLm1ldHJpY3NGb3JH
bHlwaChnbHlwaCk7CisgICAgaWYgKGFkdmFuY2UpCisgICAgICAgIHJldHVybiBhZHZhbmNlLnZh
bHVlKCk7CiAKICNpZiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwpCiAgICAgaWYgKG1fdmVydGlj
YWxEYXRhKSB7CiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpIHx8IFVTRShDQUlSTykKLSAg
ICAgICAgd2lkdGggPSBtX3ZlcnRpY2FsRGF0YS0+YWR2YW5jZUhlaWdodCh0aGlzLCBnbHlwaCkg
KyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisgICAgICAgIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZm
ZXJBZHZhbmNlKG1fdmVydGljYWxEYXRhLT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKSArIG1f
c3ludGhldGljQm9sZE9mZnNldCwgMCk7CiAjZWxzZQotICAgICAgICB3aWR0aCA9IG1fdmVydGlj
YWxEYXRhLT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKTsKKyAgICAgICAgYWR2YW5jZSA9IG1h
a2VHbHlwaEJ1ZmZlckFkdmFuY2UobV92ZXJ0aWNhbERhdGEtPmFkdmFuY2VIZWlnaHQodGhpcywg
Z2x5cGgpLCAwKTsKICNlbmRpZgogICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIHdpZHRoID0g
cGxhdGZvcm1XaWR0aEZvckdseXBoKGdseXBoKTsKKyAgICAgICAgYWR2YW5jZSA9IHBsYXRmb3Jt
QWR2YW5jZUZvckdseXBoKGdseXBoKTsKIAotICAgIG1fZ2x5cGhUb1dpZHRoTWFwLnNldE1ldHJp
Y3NGb3JHbHlwaChnbHlwaCwgd2lkdGgpOwotICAgIHJldHVybiB3aWR0aDsKKyAgICBtX2dseXBo
VG9XaWR0aE1hcC5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIGFkdmFuY2UpOworICAgIHJldHVy
biBhZHZhbmNlLnZhbHVlKCk7CiB9CiAKIHVzaW5nIEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCA9
IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4+OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IGFj
NTRlNjgxMzk5Mjg0ZWQ4YmY4YTExYzc2YWIxMWZkZmNmZDEzZmUuLjA1ZGVmYWNiNjc3MDUzYmVh
MTIwMWJhMTg3MDNhYTVhMjUxMmI0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTMxNCw4ICszMTQsOCBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0KFN0cmluZ1ZpZXcgdGV4dCwgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aQogICAgIGF1dG8mIGZvbnQgPSBwcmltYXJ5Rm9udCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgYXV0byBn
bHlwaCA9IGdseXBoRGF0YUZvckNoYXJhY3Rlcih0ZXh0W2ldLCBmYWxzZSkuZ2x5cGg7Ci0gICAg
ICAgIGF1dG8gZ2x5cGhXaWR0aCA9IGZvbnQud2lkdGhGb3JHbHlwaChnbHlwaCk7Ci0gICAgICAg
IHJ1bldpZHRoICs9IGdseXBoV2lkdGg7CisgICAgICAgIGF1dG8gZ2x5cGhXaWR0aCA9IGZvbnQu
YWR2YW5jZUZvckdseXBoKGdseXBoKTsKKyAgICAgICAgcnVuV2lkdGggKz0gV2ViQ29yZTo6d2lk
dGgoZ2x5cGhXaWR0aCk7CiAgICAgICAgIGdseXBoQnVmZmVyLmFkZChnbHlwaCwgZm9udCwgZ2x5
cGhXaWR0aCwgaSk7CiAgICAgfQogCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBpbmxpbmUgc3RhdGlj
IGZsb2F0IG9mZnNldFRvTWlkZGxlT2ZHbHlwaChjb25zdCBGb250JiBmb250RGF0YSwgR2x5cGgg
Z2x5cGgpCiAgICAgICAgIHJldHVybiBib3VuZHMueCgpICsgYm91bmRzLndpZHRoKCkgLyAyOwog
ICAgIH0KICAgICAvLyBGSVhNRTogVXNlIGdseXBoIGJvdW5kcyBvbmNlIHRoZXkgbWFrZSBzZW5z
ZSBmb3IgdmVydGljYWwgZm9udHMuCi0gICAgcmV0dXJuIGZvbnREYXRhLndpZHRoRm9yR2x5cGgo
Z2x5cGgpIC8gMjsKKyAgICByZXR1cm4gd2lkdGgoZm9udERhdGEuYWR2YW5jZUZvckdseXBoKGds
eXBoKSkgLyAyOwogfQogCiBpbmxpbmUgc3RhdGljIGZsb2F0IG9mZnNldFRvTWlkZGxlT2ZHbHlw
aEF0SW5kZXgoY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFw
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApp
bmRleCA0NDNjNjNhYmQxNzBjOTA3YWI3M2I4NTYzMjNiZjJmOTQ2MTY1NzE1Li4zMzMwNjEwNWI3
Yzg4ODk4NWRjNDBlNzQzZjJiYTMyOGQxNzAzMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtMzYsOCArMzYsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IGZsb2F0IGNHbHlwaFNpemVVbmtub3duID0g
LTE7Ci0KIHRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIEdseXBoTWV0cmljc01hcCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDUsMTQgKzEwMywxNCBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEds
eXBoTWV0cmljc1BhZ2U+Pj4gbV9wYWdlczsKIH07CiAKLXRlbXBsYXRlPD4gaW5saW5lIGZsb2F0
IEdseXBoTWV0cmljc01hcDxmbG9hdD46OnVua25vd25NZXRyaWNzKCkKK3RlbXBsYXRlPD4gaW5s
aW5lIHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPiBHbHlwaE1ldHJpY3NNYXA8c3Rk
OjpvcHRpb25hbDxHbHlwaEJ1ZmZlckFkdmFuY2U+Pjo6dW5rbm93bk1ldHJpY3MoKQogewotICAg
IHJldHVybiBjR2x5cGhTaXplVW5rbm93bjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBGbG9hdFJlY3QgR2x5cGhNZXRyaWNzTWFwPEZsb2F0UmVjdD46
OnVua25vd25NZXRyaWNzKCkKK3RlbXBsYXRlPD4gaW5saW5lIHN0ZDo6b3B0aW9uYWw8RmxvYXRS
ZWN0PiBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+Pjo6dW5rbm93bk1l
dHJpY3MoKQogewotICAgIHJldHVybiBGbG9hdFJlY3QoMCwgMCwgY0dseXBoU2l6ZVVua25vd24s
IGNHbHlwaFNpemVVbmtub3duKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxzdGQ6Om9w
dGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1ldHJpY3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBiN2NjMGZiNTI1ZjY4NTI3
YzkxY2UxYWJkNjNlMjQ0NzQ0ZWYzN2JiLi5kM2UxMjliMDQxMzBlMmVlNjllOTMwYzhkOWM4MDcx
YTZhN2U5NzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcApAQCAtNjEsNyArNjEsNyBAQCBXaWR0aEl0ZXJhdG9yOjpXaWR0aEl0
ZXJhdG9yKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hT
ZQogfQogCiBzdHJ1Y3QgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNl
IHsKLSAgICBleHBsaWNpdCBPcmlnaW5hbEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3Bh
Y2UoR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgc3RyaW5nT2Zmc2V0LCBib29sIGlzU3BhY2UsIGZs
b2F0IGFkdmFuY2VCZWZvcmUsIGZsb2F0IGFkdmFuY2VBdCkKKyAgICBleHBsaWNpdCBPcmlnaW5h
bEFkdmFuY2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3BhY2UoR2x5cGhCdWZmZXJTdHJpbmdPZmZz
ZXQgc3RyaW5nT2Zmc2V0LCBib29sIGlzU3BhY2UsIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNl
QmVmb3JlLCBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUF0KQogICAgICAgICA6IHN0cmluZ09m
ZnNldChzdHJpbmdPZmZzZXQpCiAgICAgICAgICwgY2hhcmFjdGVySXNTcGFjZShpc1NwYWNlKQog
ICAgICAgICAsIGFkdmFuY2VCZWZvcmVDaGFyYWN0ZXIoYWR2YW5jZUJlZm9yZSkKQEAgLTcxLDgg
KzcxLDggQEAgc3RydWN0IE9yaWdpbmFsQWR2YW5jZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFj
ZSB7CiAKICAgICBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBzdHJpbmdPZmZzZXQ7CiAgICAgYm9v
bCBjaGFyYWN0ZXJJc1NwYWNlOwotICAgIGZsb2F0IGFkdmFuY2VCZWZvcmVDaGFyYWN0ZXI7Ci0g
ICAgZmxvYXQgYWR2YW5jZUF0Q2hhcmFjdGVyOworICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlQmVmb3JlQ2hhcmFjdGVyOworICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlQXRDaGFy
YWN0ZXI7CiB9OwogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTb2Z0QmFua0Vtb2ppKFVDaGFyMzIg
Y29kZXBvaW50KQpAQCAtMTQ1LDggKzE0NSw4IEBAIGlubGluZSBmbG9hdCBXaWR0aEl0ZXJhdG9y
OjphcHBseUZvbnRUcmFuc2Zvcm1zKEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc3QgYXV0byYgb3JpZ2luYWxBZHZhbmNl
cyA9ICppdGVyYXRvcjsKICAgICAgICAgaWYgKGkgJiYgIW9yaWdpbmFsQWR2YW5jZXMuY2hhcmFj
dGVySXNTcGFjZSkKLSAgICAgICAgICAgIHNldFdpZHRoKCpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhp
IC0gMSksIG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUJlZm9yZUNoYXJhY3Rlcik7Ci0gICAgICAg
IHNldFdpZHRoKCpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpKSwgb3JpZ2luYWxBZHZhbmNlcy5hZHZh
bmNlQXRDaGFyYWN0ZXIpOworICAgICAgICAgICAgKmdseXBoQnVmZmVyLmFkdmFuY2VzKGkgLSAx
KSA9IG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUJlZm9yZUNoYXJhY3RlcjsKKyAgICAgICAgKmds
eXBoQnVmZmVyLmFkdmFuY2VzKGkpID0gb3JpZ2luYWxBZHZhbmNlcy5hZHZhbmNlQXRDaGFyYWN0
ZXI7CiAgICAgfQogICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jbGVhcigpOwogCkBAIC0y
MjUsOCArMjI1LDggQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFs
KFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKIAogICAgIGF1dG8gY3VycmVu
dENoYXJhY3RlckluZGV4ID0gdGV4dEl0ZXJhdG9yLmN1cnJlbnRJbmRleCgpOwogICAgIFVDaGFy
MzIgY2hhcmFjdGVyID0gMDsKLSAgICBmbG9hdCB3aWR0aCA9IDA7Ci0gICAgZmxvYXQgcHJldmlv
dXNXaWR0aCA9IDA7CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UgPSBtYWtlR2x5cGhC
dWZmZXJBZHZhbmNlKCk7CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIHByZXZpb3VzQWR2YW5jZSA9
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKICAgICB1bnNpZ25lZCBjbHVzdGVyTGVuZ3RoID0g
MDsKICAgICBDaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNl
OwogICAgIGZsb2F0IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlID0gMDsKQEAgLTI1NiwyNCArMjU2
LDI0IEBAIGlubGluZSB2b2lkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRl
cmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGhCdWZmCiAgICAgICAgIH0KICAgICAgICAgY29uc3Qg
Rm9udCYgZm9udCA9IGdseXBoRGF0YS5mb250ID8gKmdseXBoRGF0YS5mb250IDogcHJpbWFyeUZv
bnQ7CiAKLSAgICAgICAgcHJldmlvdXNXaWR0aCA9IHdpZHRoOwotICAgICAgICB3aWR0aCA9IGZv
bnQud2lkdGhGb3JHbHlwaChnbHlwaCk7CisgICAgICAgIHByZXZpb3VzQWR2YW5jZSA9IGFkdmFu
Y2U7CisgICAgICAgIGFkdmFuY2UgPSBmb250LmFkdmFuY2VGb3JHbHlwaChnbHlwaCk7CiAKICAg
ICAgICAgaWYgKCZmb250ICE9IGxhc3RGb250RGF0YSkgewogICAgICAgICAgICAgY29tbWl0Q3Vy
cmVudEZvbnRSYW5nZShnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0
ZXJJbmRleCwgKmxhc3RGb250RGF0YSwgcHJpbWFyeUZvbnQsIGNoYXJhY3Rlciwgd2lkdGhPZkN1
cnJlbnRGb250UmFuZ2UsIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZSk7CiAgICAgICAgICAgICBs
YXN0R2x5cGhDb3VudCA9IGdseXBoQnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGxhc3RGb250
RGF0YSA9ICZmb250OwotICAgICAgICAgICAgd2lkdGhPZkN1cnJlbnRGb250UmFuZ2UgPSB3aWR0
aDsKKyAgICAgICAgICAgIHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlID0gd2lkdGgoYWR2YW5jZSk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgd2lkdGhPZkN1cnJlbnRGb250UmFuZ2UgKz0g
d2lkdGg7CisgICAgICAgICAgICB3aWR0aE9mQ3VycmVudEZvbnRSYW5nZSArPSB3aWR0aChhZHZh
bmNlKTsKIAogICAgICAgICBhdXRvIHRyYW5zZm9ybXNUeXBlID0gc2hvdWxkQXBwbHlGb250VHJh
bnNmb3JtcyhnbHlwaEJ1ZmZlciwgbGFzdEdseXBoQ291bnQsIGN1cnJlbnRDaGFyYWN0ZXJJbmRl
eCk7CiAgICAgICAgIGlmICh0cmFuc2Zvcm1zVHlwZSAhPSBUcmFuc2Zvcm1zVHlwZTo6Tm9uZSAm
JiBGb250Q2FzY2FkZTo6dHJlYXRBc1NwYWNlKGNoYXJhY3RlcikpIHsKICAgICAgICAgICAgIGNo
YXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jb25zdHJ1Y3RBbmRBcHBlbmQoCiAgICAgICAgICAgICAg
ICAgY3VycmVudENoYXJhY3RlckluZGV4LAogICAgICAgICAgICAgICAgIGNoYXJhY3RlciA9PSAn
ICcsCi0gICAgICAgICAgICAgICAgcHJldmlvdXNXaWR0aCwKLSAgICAgICAgICAgICAgICB3aWR0
aCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNBZHZhbmNlLAorICAgICAgICAgICAgICAgIGFk
dmFuY2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fYWNjb3VudEZvckdseXBoQm91bmRz
KSB7CkBAIC0yODUsNyArMjg1LDcgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5j
ZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAgICAgICAg
aWYgKG1fZm9yVGV4dEVtcGhhc2lzICYmICFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2ZVRleHRFbXBo
YXNpcyhjaGFyYWN0ZXIpKQogICAgICAgICAgICAgZ2x5cGggPSAwOwogCi0gICAgICAgIGdseXBo
QnVmZmVyLmFkZChnbHlwaCwgZm9udCwgd2lkdGgsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCk7Cisg
ICAgICAgIGdseXBoQnVmZmVyLmFkZChnbHlwaCwgZm9udCwgYWR2YW5jZSwgY3VycmVudENoYXJh
Y3RlckluZGV4KTsKICNpZiBVU0UoQ1RGT05UU0hBUEVHTFlQSFMpCiAgICAgICAgIC8vIFRoZXNl
IDAgZ2x5cGhzIGFyZSBuZWVkZWQgYnkgc2hhcGVycyBpZiB0aGUgc291cmNlIHRleHQgaGFzIHN1
cnJvZ2F0ZSBwYWlycy4KICAgICAgICAgLy8gSG93ZXZlciwgQ1RGb250VHJhbnNmb3JtR2x5cGhz
KCkgY2FuJ3QgZGVsZXRlIHRoZXNlIDAgZ2x5cGhzIGZyb20gdGhlIHNoYXBlZCB0ZXh0LApAQCAt
Mjk5LDEyICsyOTksMTIgQEAgaW5saW5lIHZvaWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVy
bmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yLCBHbHlwaEJ1ZmYKICAgICAgICAgdGV4dEl0
ZXJhdG9yLmFkdmFuY2UoYWR2YW5jZUxlbmd0aCk7CiAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJ
bmRleCA9IHRleHRJdGVyYXRvci5jdXJyZW50SW5kZXgoKTsKIAotICAgICAgICBtX3J1bldpZHRo
U29GYXIgKz0gd2lkdGg7CisgICAgICAgIG1fcnVuV2lkdGhTb0ZhciArPSB3aWR0aChhZHZhbmNl
KTsKIAogICAgICAgICBpZiAobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpIHsKICAgICAgICAgICAg
IG1fbWF4R2x5cGhCb3VuZGluZ0JveFkgPSBzdGQ6Om1heChtX21heEdseXBoQm91bmRpbmdCb3hZ
LCBib3VuZHMubWF4WSgpKTsKICAgICAgICAgICAgIG1fbWluR2x5cGhCb3VuZGluZ0JveFkgPSBz
dGQ6Om1pbihtX21pbkdseXBoQm91bmRpbmdCb3hZLCBib3VuZHMueSgpKTsKLSAgICAgICAgICAg
IG1fbGFzdEdseXBoT3ZlcmZsb3cgPSBzdGQ6Om1heDxmbG9hdD4oMCwgYm91bmRzLm1heFgoKSAt
IHdpZHRoKTsKKyAgICAgICAgICAgIG1fbGFzdEdseXBoT3ZlcmZsb3cgPSBzdGQ6Om1heDxmbG9h
dD4oMCwgYm91bmRzLm1heFgoKSAtIHdpZHRoKGFkdmFuY2UpKTsKICAgICAgICAgfQogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXggMjlhMDdjNzZhZjBhZGExNDI3NmEwMTU1YjM3NzE3
MWM0YjNiMzk4OS4uOTViY2FhZTk0YmY3MzE5Nzk5OTZhNmRmZmUxYjgzOTVkY2ZmZDMwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENv
cmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250Q29yZVRleHQuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24u
aCIKKyNpbmNsdWRlICJHbHlwaEJ1ZmZlck1lbWJlcnMuaCIKICNpbmNsdWRlICJPcGVuVHlwZUNH
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRl
eHQuaD4KQEAgLTU2Miw3ICs1NjMsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6cGxhdGZvcm1DcmVh
dGVTY2FsZWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNjYWxlRgogICAgIHJl
dHVybiBjcmVhdGVEZXJpdmF0aXZlRm9udChzY2FsZWRGb250LmdldCgpLCBzaXplLCBtX3BsYXRm
b3JtRGF0YS5vcmllbnRhdGlvbigpLCBmb250VHJhaXRzLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0
aWNCb2xkKCksIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY09ibGlxdWUoKSk7CiB9CiAKLWZsb2F0
IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK0dseXBoQnVm
ZmVyQWR2YW5jZSBGb250OjpwbGF0Zm9ybUFkdmFuY2VGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29u
c3QKIHsKICAgICBDR1NpemUgYWR2YW5jZSA9IENHU2l6ZVplcm87CiAKQEAgLTU3OSw3ICs1ODAs
OSBAQCBmbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0
CiAgICAgICAgICAgICBDVEZvbnRHZXRBZHZhbmNlc0ZvckdseXBocyhtX3BsYXRmb3JtRGF0YS5j
dEZvbnQoKSwgb3JpZW50YXRpb24sICZnbHlwaCwgJmFkdmFuY2UsIDEpOwogICAgICAgICB9CiAg
ICAgfQotICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0Owor
CisgICAgYWR2YW5jZS53aWR0aCArPSBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisgICAgcmV0dXJu
IGFkdmFuY2U7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9NYXRoT3BlcmF0b3IuY3BwCmluZGV4IDFkMjg3NzY2NjIxZWMzZGVlNDQ5YjgwNGUzNjM4
NWE2M2JiN2U5ZTEuLmJjODg4NmM5MDcyZjUyMjUxZTZlZDAyYTJkYjVlOWY1Mzk3ZjdlZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAK
QEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGdldEFzY2VudEFuZERlc2NlbnRG
b3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEsIExheW91dFVuaXQKIAogc3RhdGljIGlubGlu
ZSBmbG9hdCBhZHZhbmNlV2lkdGhGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEpCiB7Ci0g
ICAgcmV0dXJuIGRhdGEuZm9udCA/IGRhdGEuZm9udC0+d2lkdGhGb3JHbHlwaChkYXRhLmdseXBo
KSA6IDA7CisgICAgcmV0dXJuIGRhdGEuZm9udCA/IHdpZHRoKGRhdGEuZm9udC0+YWR2YW5jZUZv
ckdseXBoKGRhdGEuZ2x5cGgpKSA6IDA7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGhhcmRjb2RlZCBk
YXRhIGNhbiBiZSByZW1vdmVkIHdoZW4gT3BlblR5cGUgTUFUSCBmb250IGFyZSB3aWRlbHkgYXZh
aWxhYmxlIChodHRwOi8vd2tidWcvMTU2ODM3KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggZmY0MWM1
MDgxMGM2Yzk5MDA5NjQ2MjIxNjAxNTA1MzVkMDBjOTI1ZC4uMTgwMjRjMjM1ZGQ0NWY3MDE5NTZm
OTBhNGNhMjYzNjU5MmVmZmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpCiAgICAgICAgIGlmIChpc0ludmlzaWJsZU9wZXJhdG9yKCkpIHsKICAgICAgICAgICAgIC8v
IEluIHNvbWUgZm9udHMsIGdseXBocyBmb3IgaW52aXNpYmxlIG9wZXJhdG9ycyBoYXZlIG5vbnpl
cm8gd2lkdGguIENvbnNlcXVlbnRseSwgd2Ugc3VidHJhY3QgdGhhdCB3aWR0aCBoZXJlIHRvIGF2
b2lkIHdpZGUgZ2Fwcy4KICAgICAgICAgICAgIEdseXBoRGF0YSBkYXRhID0gc3R5bGUoKS5mb250
Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3Rlcih0ZXh0Q29udGVudCgpLCBmYWxzZSk7Ci0g
ICAgICAgICAgICBmbG9hdCBnbHlwaFdpZHRoID0gZGF0YS5mb250ID8gZGF0YS5mb250LT53aWR0
aEZvckdseXBoKGRhdGEuZ2x5cGgpIDogMDsKKyAgICAgICAgICAgIGZsb2F0IGdseXBoV2lkdGgg
PSBkYXRhLmZvbnQgPyBXZWJDb3JlOjp3aWR0aChkYXRhLmZvbnQtPmFkdmFuY2VGb3JHbHlwaChk
YXRhLmdseXBoKSkgOiAwOwogICAgICAgICAgICAgQVNTRVJUKGdseXBoV2lkdGggPD0gcHJlZmVy
cmVkV2lkdGgpOwogICAgICAgICAgICAgcHJlZmVycmVkV2lkdGggLT0gZ2x5cGhXaWR0aDsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcAppbmRleCA3Y2M5YjdkNDE2MjQ5NTQwMGE1ODVjMTQ1YzQyNzRiZTQ3
MzBlNzIzLi40NDQxN2VkNjQwOGQwMTMxOGM1YTIyZjg3MjNmNzAyMTQxODU1ODAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcApAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2ludCkg
ewogICAgICAgICBhdXRvIG1hdGhWYXJpYW50R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCku
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwgbV9t
YXRoVmFyaWFudElzTWlycm9yZWQpOwogICAgICAgICBpZiAobWF0aFZhcmlhbnRHbHlwaC5mb250
KSB7Ci0gICAgICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoID0gbWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1h
dGhWYXJpYW50R2x5cGguZ2x5cGgpOworICAgICAgICAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGggPSBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IFdlYkNvcmU6OndpZHRoKG1hdGhW
YXJpYW50R2x5cGguZm9udC0+YWR2YW5jZUZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgp
KTsKICAgICAgICAgICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTFRva2VuOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQgcGFnZUxvZ2ljYQogICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQogICAgICAgICBjaGlsZC0+
bGF5b3V0SWZOZWVkZWQoKTsKIAotICAgIHNldExvZ2ljYWxXaWR0aChMYXlvdXRVbml0KG1hdGhW
YXJpYW50R2x5cGguZm9udC0+d2lkdGhGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKSkp
OworICAgIHNldExvZ2ljYWxXaWR0aChMYXlvdXRVbml0KFdlYkNvcmU6OndpZHRoKG1hdGhWYXJp
YW50R2x5cGguZm9udC0+YWR2YW5jZUZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKSkp
OwogICAgIHNldExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdChtYXRoVmFyaWFudEdseXBoLmZvbnQt
PmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLmhlaWdodCgpKSk7CiAKICAg
ICB1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lk
IFJlbmRlck1hdGhNTFRva2VuOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKIAogICAgIExheW91dFVuaXQgZ2x5cGhBc2NlbnQgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgo
bWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSk7CiAgICAgLy8gRklYTUU6IElmIHdlJ3JlIGp1
c3QgZHJhd2luZyBhIHNpbmdsZSBnbHlwaCwgd2h5IGRvIHdlIG5lZWQgdG8gY29tcHV0ZSBhbiBh
ZHZhbmNlPwotICAgIGF1dG8gYWR2YW5jZSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UobWF0aFZh
cmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKTsK
KyAgICBhdXRvIGFkdmFuY2UgPSBtYXRoVmFyaWFudEdseXBoLmZvbnQtPmFkdmFuY2VGb3JHbHlw
aChtYXRoVmFyaWFudEdseXBoLmdseXBoKTsKICAgICBpbmZvLmNvbnRleHQoKS5kcmF3R2x5cGhz
KCptYXRoVmFyaWFudEdseXBoLmZvbnQsICZtYXRoVmFyaWFudEdseXBoLmdseXBoLCAmYWR2YW5j
ZSwgMSwgcGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMF9sdSwgZ2x5cGhB
c2NlbnQpLCBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290
aGluZygpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434269</attachid>
            <date>2021-07-26 21:33:55 -0700</date>
            <delta_ts>2021-07-27 10:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215661-20210726213354.patch</filename>
            <type>text/plain</type>
            <size>27211</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdkY2Q5ZDNkNDg4MWRi
NTQ2N2U0ZGExZjlkMWRkOTJiMjE4NThiNC4uZWNlNjRlNDgxZTJmMGFlODY3MmRkOTJkNWEwNjNl
OTI2ZWUzMTc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTA3LTI2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIHRl
eHQgY29kZXBhdGggaWdub3JlcyB5LWNvbXBvbmVudCBvZiBnbHlwaCBhZHZhbmNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgbmV4
dCBzdGVwIGZvciBkZWxldGluZyB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLiBUaGUgZmFzdCB0
ZXh0IGNvZGVwYXRoIG5lZWRzIHRvIGJlCisgICAgICAgIGVucmljaGVkIHRvIGhhbmRsZSBnbHlw
aHMgd2l0aCB5LWFkdmFuY2VzLiBUaGlzIHBhdGNoIGlzIGZhaXJseSBtZWNoYW5pY2FsLCBhbmQg
anVzdCB0dXJucworICAgICAgICBwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoKSBpbnRvIHBsYXRmb3Jt
QWR2YW5jZUZvckdseXBoKCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVu
OjpDb21wbGV4VGV4dFJ1bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Ojppbml0Q2hhcldpZHRocyk6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpwbGF0Zm9ybUdseXBoSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YWR2YW5jZUZvckdseXBoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OndpZHRoRm9yR2x5cGggY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6b2Zmc2V0VG9NaWRkbGVPZkdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxzdGQ6
Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4+Ojp1bmtub3duTWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlOjpHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+Pjo6dW5r
bm93bk1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPGZsb2F0Pjo6
dW5rbm93bk1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNz
TWFwPEZsb2F0UmVjdD46OnVua25vd25NZXRyaWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdp
bmFsQWR2YW5jZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFjZTo6T3JpZ2luYWxBZHZhbmNlc0Zv
ckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0
b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRv
cjo6YWR2YW5jZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1BZHZhbmNlRm9y
R2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1XaWR0aEZvckds
eXBoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1BZHZh
bmNlRm9yR2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1XaWR0
aEZvckdseXBoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0
Zm9ybUFkdmFuY2VGb3JHbHlwaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0
Zm9ybVdpZHRoRm9yR2x5cGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OnBsYXRmb3JtQWR2YW5jZUZvckdseXBoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2
YW5jZVdpZHRoRm9yR2x5cGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFRva2VuOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxUb2tlbjo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MVG9rZW46OnBhaW50KToKKwogMjAyMS0wNy0yNiAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRkIHJlc291
cmNlIHVzZSBjb3VudGVyIGluZnJhc3RydWN0dXJlIHRvIFJlbW90ZVJlc291cmNlQ2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCmluZGV4IDQ0OTMyZGVmY2Q5ODYzZTYwZjIwY2E5ZDE3NjJhNzk2NTMw
YjFmYjguLjdhYzE1ODAyMjkwY2E2NTUwYjM5YjQwM2VkNTdhNjM4YTExNDIwMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRD
b250cm9sbGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6
Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVD
CiAKICAgICAvLyBTeW50aGVzaXplIGEgcnVuIG9mIG1pc3NpbmcgZ2x5cGhzLgogICAgIG1fZ2x5
cGhzLmZpbGwoMCwgbV9nbHlwaENvdW50KTsKLSAgICBtX2Jhc2VBZHZhbmNlcy5maWxsKEZsb2F0
U2l6ZShtX2ZvbnQud2lkdGhGb3JHbHlwaCgwKSwgMCksIG1fZ2x5cGhDb3VudCk7CisgICAgbV9i
YXNlQWR2YW5jZXMuZmlsbChzaXplKG1fZm9udC5hZHZhbmNlRm9yR2x5cGgoMCkpLCBtX2dseXBo
Q291bnQpOwogfQogCiBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21w
bGV4VGV4dFJ1bihjb25zdCBWZWN0b3I8RmxvYXRTaXplPiYgYWR2YW5jZXMsIGNvbnN0IFZlY3Rv
cjxGbG9hdFBvaW50PiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPEdseXBoPiYgZ2x5cGhzLCBjb25z
dCBWZWN0b3I8dW5zaWduZWQ+JiBzdHJpbmdJbmRpY2VzLCBGbG9hdFNpemUgaW5pdGlhbEFkdmFu
Y2UsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBz
dHJpbmdMb2NhdGlvbiwgdW5zaWduZWQgc3RyaW5nTGVuZ3RoLCB1bnNpZ25lZCBpbmRleEJlZ2lu
LCB1bnNpZ25lZCBpbmRleEVuZCwgYm9vbCBsdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuY3BwCmluZGV4IDE3YTM3YWY4YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNjNDdm
NzkxM2YuLjViOTEwZjQwM2JjNzA3ODQ3Yzc0NGQwNzQ3NmNjYjU3ZGY4YjM0NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBGb250Ojppbml0Q2hhcldpZHRocygpCiAgICAgaWYgKG1fYXZnQ2hhcldpZHRoIDw9IDAu
ZiAmJiBnbHlwaFBhZ2VaZXJvKSB7CiAgICAgICAgIEdseXBoIGRpZ2l0WmVyb0dseXBoID0gZ2x5
cGhQYWdlWmVyby0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKCcwJykuZ2x5cGg7CiAgICAgICAgIGlm
IChkaWdpdFplcm9HbHlwaCkKLSAgICAgICAgICAgIG1fYXZnQ2hhcldpZHRoID0gd2lkdGhGb3JH
bHlwaChkaWdpdFplcm9HbHlwaCk7CisgICAgICAgICAgICBtX2F2Z0NoYXJXaWR0aCA9IHdpZHRo
KGFkdmFuY2VGb3JHbHlwaChkaWdpdFplcm9HbHlwaCkpOwogICAgIH0KIAogICAgIC8vIElmIHdl
IGNhbid0IHJldHJpZXZlIHRoZSB3aWR0aCBvZiBhICcwJywgZmFsbCBiYWNrIHRvIHRoZSB4IGhl
aWdodC4KQEAgLTE1NywxNCArMTU3LDE0IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1HbHlwaEluaXQo
KQogICAgIGlmIChtX3plcm9XaWR0aFNwYWNlR2x5cGggPT0gbV9zcGFjZUdseXBoKQogICAgICAg
ICBtX3plcm9XaWR0aFNwYWNlR2x5cGggPSAwOwogCi0gICAgZmxvYXQgd2lkdGggPSB3aWR0aEZv
ckdseXBoKG1fc3BhY2VHbHlwaCk7Ci0gICAgbV9zcGFjZVdpZHRoID0gd2lkdGg7Ci0gICAgbV9m
b250TWV0cmljcy5zZXRaZXJvV2lkdGgod2lkdGhGb3JHbHlwaChtX3plcm9HbHlwaCkpOworICAg
IGZsb2F0IHNwYWNlV2lkdGggPSB3aWR0aChhZHZhbmNlRm9yR2x5cGgobV9zcGFjZUdseXBoKSk7
CisgICAgbV9zcGFjZVdpZHRoID0gc3BhY2VXaWR0aDsKKyAgICBtX2ZvbnRNZXRyaWNzLnNldFpl
cm9XaWR0aCh3aWR0aChhZHZhbmNlRm9yR2x5cGgobV96ZXJvR2x5cGgpKSk7CiAgICAgYXV0byBh
bW91bnRUb0FkanVzdExpbmVHYXAgPSBzdGQ6Om1pbihtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZUdh
cCgpLCAwLjBmKTsKICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAobV9mb250TWV0cmljcy5m
bG9hdExpbmVHYXAoKSAtIGFtb3VudFRvQWRqdXN0TGluZUdhcCk7CiAgICAgbV9mb250TWV0cmlj
cy5zZXRMaW5lU3BhY2luZyhtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZVNwYWNpbmcoKSAtIGFtb3Vu
dFRvQWRqdXN0TGluZUdhcCk7CiAgICAgZGV0ZXJtaW5lUGl0Y2goKTsKLSAgICBtX2FkanVzdGVk
U3BhY2VXaWR0aCA9IG1fdHJlYXRBc0ZpeGVkUGl0Y2ggPyBjZWlsZih3aWR0aCkgOiByb3VuZGYo
d2lkdGgpOworICAgIG1fYWRqdXN0ZWRTcGFjZVdpZHRoID0gbV90cmVhdEFzRml4ZWRQaXRjaCA/
IGNlaWxmKHNwYWNlV2lkdGgpIDogcm91bmRmKHNwYWNlV2lkdGgpOwogfQogCiBGb250Ojp+Rm9u
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNDdhN2UxMmY5
YmM2ODkyMGNhNzE0ZTkyNDc5ZTU5ZWYzZWVlOGQzMi4uNjZlNzcxMzBjYjNjMThjZWNlZTkxNTUz
OTkwZGZlMzYzM2I5ODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aApAQCAtMTQ2LDEwICsxNDYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXZnQ2hhcldpZHRo
KGZsb2F0IGF2Z0NoYXJXaWR0aCkgeyBtX2F2Z0NoYXJXaWR0aCA9IGF2Z0NoYXJXaWR0aDsgfQog
CiAgICAgRmxvYXRSZWN0IGJvdW5kc0ZvckdseXBoKEdseXBoKSBjb25zdDsKLSAgICBmbG9hdCB3
aWR0aEZvckdseXBoKEdseXBoKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5j
ZUZvckdseXBoKEdseXBoKSBjb25zdDsKICAgICBjb25zdCBQYXRoJiBwYXRoRm9yR2x5cGgoR2x5
cGgpIGNvbnN0OyAvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBoYXNoIG1h
cCBpcyBmcmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZlcmVuY2Ug
ZGFuZ2xpbmcuCiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNv
bnN0OwotICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAg
R2x5cGhCdWZmZXJBZHZhbmNlIHBsYXRmb3JtQWR2YW5jZUZvckdseXBoKEdseXBoKSBjb25zdDsK
ICAgICBQYXRoIHBsYXRmb3JtUGF0aEZvckdseXBoKEdseXBoKSBjb25zdDsKIAogICAgIGZsb2F0
IHNwYWNlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlV2lkdGg7IH0KQEAgLTI4Nyw4ICsy
ODcsOCBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBSZWZQdHI8R2x5cGhQYWdlPiBtX2dseXBo
UGFnZVplcm87CiAgICAgbXV0YWJsZSBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8R2x5cGhQYWdl
Pj4gbV9nbHlwaFBhZ2VzOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmlj
c01hcDxGbG9hdFJlY3Q+PiBtX2dseXBoVG9Cb3VuZHNNYXA7Ci0gICAgbXV0YWJsZSBHbHlwaE1l
dHJpY3NNYXA8ZmxvYXQ+IG1fZ2x5cGhUb1dpZHRoTWFwOworICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+PiBtX2dseXBo
VG9Cb3VuZHNNYXA7CisgICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxH
bHlwaEJ1ZmZlckFkdmFuY2U+PiBtX2dseXBoVG9XaWR0aE1hcDsKICAgICBtdXRhYmxlIEdseXBo
TWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPFBhdGg+PiBtX2dseXBoUGF0aE1hcDsKICAgICBtdXRh
YmxlIEJpdFZlY3RvciBtX2NvZGVQb2ludFN1cHBvcnQ7CiAKQEAgLTM2OSw0NiArMzY5LDQ2IEBA
IEFMV0FZU19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBo
KSBjb25zdAogICAgIGlmIChpc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgpKQogICAgICAgICBy
ZXR1cm4gRmxvYXRSZWN0KCk7CiAKLSAgICBGbG9hdFJlY3QgYm91bmRzOworICAgIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBib3VuZHM7CiAgICAgaWYgKG1fZ2x5cGhUb0JvdW5kc01hcCkgewog
ICAgICAgICBib3VuZHMgPSBtX2dseXBoVG9Cb3VuZHNNYXAtPm1ldHJpY3NGb3JHbHlwaChnbHlw
aCk7Ci0gICAgICAgIGlmIChib3VuZHMud2lkdGgoKSAhPSBjR2x5cGhTaXplVW5rbm93bikKLSAg
ICAgICAgICAgIHJldHVybiBib3VuZHM7CisgICAgICAgIGlmIChib3VuZHMuaGFzX3ZhbHVlKCkp
CisgICAgICAgICAgICByZXR1cm4gYm91bmRzLnZhbHVlKCk7CiAgICAgfQogCiAgICAgYm91bmRz
ID0gcGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3Vu
ZHNNYXApCi0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRy
aWNzTWFwPEZsb2F0UmVjdD4+KCk7Ci0gICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNz
Rm9yR2x5cGgoZ2x5cGgsIGJvdW5kcyk7Ci0gICAgcmV0dXJuIGJvdW5kczsKKyAgICAgICAgbV9n
bHlwaFRvQm91bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25h
bDxGbG9hdFJlY3Q+Pj4oKTsKKyAgICBtX2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJpY3NGb3JH
bHlwaChnbHlwaCwgYm91bmRzLnZhbHVlKCkpOworICAgIHJldHVybiBib3VuZHMudmFsdWUoKTsK
IH0KIAotQUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBo
KSBjb25zdAorQUxXQVlTX0lOTElORSBHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YWR2YW5jZUZv
ckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogewogICAgIC8vIFRoZSBvcHRpbWl6YXRpb24gb2Yg
cmV0dXJuaW5nIDAgZm9yIHRoZSB6ZXJvLXdpZHRoLXNwYWNlIGdseXBoIGlzIGluY29ycmVjdCBm
b3IgdGhlIExhc3RSZXNvcnQgZm9udCwKICAgICAvLyB1c2VkIGluIHBsYWNlIG9mIHRoZSBhY3R1
YWwgZm9udCB3aGVuIGlzTG9hZGluZygpIGlzIHRydWUgb24gYm90aCBtYWNPUyBhbmQgaU9TLgog
ICAgIC8vIFRoZSB6ZXJvLXdpZHRoLXNwYWNlIGdseXBoIGluIHRoYXQgZm9udCBkb2VzIG5vdCBo
YXZlIGEgd2lkdGggb2YgemVybyBhbmQsIGZ1cnRoZXIsIHRoYXQgZ2x5cGggaXMgdXNlZAogICAg
IC8vIGZvciBtYW55IG90aGVyIGNoYXJhY3RlcnMgYW5kIG11c3Qgbm90IGJlIHplcm8gd2lkdGgg
d2hlbiB1c2VkIGZvciB0aGVtLgogICAgIGlmIChpc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgp
ICYmICFpc0ludGVyc3RpdGlhbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKTsKIAotICAgIGZsb2F0IHdpZHRoID0gbV9nbHlwaFRv
V2lkdGhNYXAubWV0cmljc0ZvckdseXBoKGdseXBoKTsKLSAgICBpZiAod2lkdGggIT0gY0dseXBo
U2l6ZVVua25vd24pCi0gICAgICAgIHJldHVybiB3aWR0aDsKKyAgICBhdXRvIGFkdmFuY2UgPSBt
X2dseXBoVG9XaWR0aE1hcC5tZXRyaWNzRm9yR2x5cGgoZ2x5cGgpOworICAgIGlmIChhZHZhbmNl
KQorICAgICAgICByZXR1cm4gYWR2YW5jZS52YWx1ZSgpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBF
X1ZFUlRJQ0FMKQogICAgIGlmIChtX3ZlcnRpY2FsRGF0YSkgewogI2lmIFVTRShDRykgfHwgVVNF
KERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgICAgIHdpZHRoID0gbV92ZXJ0aWNhbERhdGEt
PmFkdmFuY2VIZWlnaHQodGhpcywgZ2x5cGgpICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAg
ICAgICBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShtX3ZlcnRpY2FsRGF0YS0+YWR2
YW5jZUhlaWdodCh0aGlzLCBnbHlwaCkgKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQsIDApOwogI2Vs
c2UKLSAgICAgICAgd2lkdGggPSBtX3ZlcnRpY2FsRGF0YS0+YWR2YW5jZUhlaWdodCh0aGlzLCBn
bHlwaCk7CisgICAgICAgIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKG1fdmVydGlj
YWxEYXRhLT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKSwgMCk7CiAjZW5kaWYKICAgICB9IGVs
c2UKICNlbmRpZgotICAgICAgICB3aWR0aCA9IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChnbHlwaCk7
CisgICAgICAgIGFkdmFuY2UgPSBwbGF0Zm9ybUFkdmFuY2VGb3JHbHlwaChnbHlwaCk7CiAKLSAg
ICBtX2dseXBoVG9XaWR0aE1hcC5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIHdpZHRoKTsKLSAg
ICByZXR1cm4gd2lkdGg7CisgICAgbV9nbHlwaFRvV2lkdGhNYXAuc2V0TWV0cmljc0ZvckdseXBo
KGdseXBoLCBhZHZhbmNlKTsKKyAgICByZXR1cm4gYWR2YW5jZS52YWx1ZSgpOwogfQogCiB1c2lu
ZyBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgUmVmPEZvbnQ+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCBhYzU0ZTY4MTM5OTI4NGVkOGJmOGExMWM3NmFiMTFm
ZGZjZmQxM2ZlLi4wNWRlZmFjYjY3NzA1M2JlYTEyMDFiYTE4NzAzYWE1YTI1MTJiNDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMTQsOCArMzE0LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChT
dHJpbmdWaWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGkKICAgICBhdXRvJiBmb250
ID0gcHJpbWFyeUZvbnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dC5sZW5n
dGgoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gZ2x5cGggPSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIo
dGV4dFtpXSwgZmFsc2UpLmdseXBoOwotICAgICAgICBhdXRvIGdseXBoV2lkdGggPSBmb250Lndp
ZHRoRm9yR2x5cGgoZ2x5cGgpOwotICAgICAgICBydW5XaWR0aCArPSBnbHlwaFdpZHRoOworICAg
ICAgICBhdXRvIGdseXBoV2lkdGggPSBmb250LmFkdmFuY2VGb3JHbHlwaChnbHlwaCk7CisgICAg
ICAgIHJ1bldpZHRoICs9IFdlYkNvcmU6OndpZHRoKGdseXBoV2lkdGgpOwogICAgICAgICBnbHlw
aEJ1ZmZlci5hZGQoZ2x5cGgsIGZvbnQsIGdseXBoV2lkdGgsIGkpOwogICAgIH0KIApAQCAtMTM2
NCw3ICsxMzY0LDcgQEAgaW5saW5lIHN0YXRpYyBmbG9hdCBvZmZzZXRUb01pZGRsZU9mR2x5cGgo
Y29uc3QgRm9udCYgZm9udERhdGEsIEdseXBoIGdseXBoKQogICAgICAgICByZXR1cm4gYm91bmRz
LngoKSArIGJvdW5kcy53aWR0aCgpIC8gMjsKICAgICB9CiAgICAgLy8gRklYTUU6IFVzZSBnbHlw
aCBib3VuZHMgb25jZSB0aGV5IG1ha2Ugc2Vuc2UgZm9yIHZlcnRpY2FsIGZvbnRzLgotICAgIHJl
dHVybiBmb250RGF0YS53aWR0aEZvckdseXBoKGdseXBoKSAvIDI7CisgICAgcmV0dXJuIHdpZHRo
KGZvbnREYXRhLmFkdmFuY2VGb3JHbHlwaChnbHlwaCkpIC8gMjsKIH0KIAogaW5saW5lIHN0YXRp
YyBmbG9hdCBvZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGNvbnN0IEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggNDQzYzYzYWJkMTcwYzkwN2FiNzNiODU2
MzIzYmYyZjk0NjE2NTcxNS4uMzMzMDYxMDViN2M4ODg5ODVkYzQwZTc0M2YyYmEzMjhkMTcwMzJh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRy
aWNzTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRy
aWNzTWFwLmgKQEAgLTM2LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25z
dCBmbG9hdCBjR2x5cGhTaXplVW5rbm93biA9IC0xOwotCiB0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFz
cyBHbHlwaE1ldHJpY3NNYXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgpAQCAtMTA1LDE0ICsxMDMsMTQgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFz
aE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+IG1fcGFnZXM7CiB9
OwogCi10ZW1wbGF0ZTw+IGlubGluZSBmbG9hdCBHbHlwaE1ldHJpY3NNYXA8ZmxvYXQ+Ojp1bmtu
b3duTWV0cmljcygpCit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVy
QWR2YW5jZT4gR2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNl
Pj46OnVua25vd25NZXRyaWNzKCkKIHsKLSAgICByZXR1cm4gY0dseXBoU2l6ZVVua25vd247Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0
IEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCit0ZW1wbGF0ZTw+
IGlubGluZSBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gR2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0Pj46OnVua25vd25NZXRyaWNzKCkKIHsKLSAgICByZXR1cm4gRmxvYXRS
ZWN0KDAsIDAsIGNHbHlwaFNpemVVbmtub3duLCBjR2x5cGhTaXplVW5rbm93bik7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgc3RkOjpvcHRpb25hbDxQ
YXRoPiBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxQYXRoPj46OnVua25vd25NZXRyaWNz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHAKaW5kZXggYjdjYzBmYjUyNWY2ODUyN2M5MWNlMWFiZDYzZTI0NDc0NGVmMzdiYi4uZDNl
MTI5YjA0MTMwZTJlZTY5ZTkzMGM4ZDljODA3MWE2YTdlOTc5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UKIH0KIAogc3RydWN0IE9yaWdpbmFsQWR2YW5j
ZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFjZSB7Ci0gICAgZXhwbGljaXQgT3JpZ2luYWxBZHZh
bmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0
cmluZ09mZnNldCwgYm9vbCBpc1NwYWNlLCBmbG9hdCBhZHZhbmNlQmVmb3JlLCBmbG9hdCBhZHZh
bmNlQXQpCisgICAgZXhwbGljaXQgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRB
c1NwYWNlKEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0cmluZ09mZnNldCwgYm9vbCBpc1NwYWNl
LCBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUJlZm9yZSwgR2x5cGhCdWZmZXJBZHZhbmNlIGFk
dmFuY2VBdCkKICAgICAgICAgOiBzdHJpbmdPZmZzZXQoc3RyaW5nT2Zmc2V0KQogICAgICAgICAs
IGNoYXJhY3RlcklzU3BhY2UoaXNTcGFjZSkKICAgICAgICAgLCBhZHZhbmNlQmVmb3JlQ2hhcmFj
dGVyKGFkdmFuY2VCZWZvcmUpCkBAIC03MSw4ICs3MSw4IEBAIHN0cnVjdCBPcmlnaW5hbEFkdmFu
Y2VzRm9yQ2hhcmFjdGVyVHJlYXRlZEFzU3BhY2UgewogCiAgICAgR2x5cGhCdWZmZXJTdHJpbmdP
ZmZzZXQgc3RyaW5nT2Zmc2V0OwogICAgIGJvb2wgY2hhcmFjdGVySXNTcGFjZTsKLSAgICBmbG9h
dCBhZHZhbmNlQmVmb3JlQ2hhcmFjdGVyOwotICAgIGZsb2F0IGFkdmFuY2VBdENoYXJhY3RlcjsK
KyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUJlZm9yZUNoYXJhY3RlcjsKKyAgICBHbHlw
aEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUF0Q2hhcmFjdGVyOwogfTsKIAogc3RhdGljIGlubGluZSBi
b29sIGlzU29mdEJhbmtFbW9qaShVQ2hhcjMyIGNvZGVwb2ludCkKQEAgLTE0NSw4ICsxNDUsOCBA
QCBpbmxpbmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1
ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGNvbnN0IGF1dG8mIG9yaWdpbmFsQWR2YW5jZXMgPSAqaXRlcmF0b3I7CiAgICAgICAgIGlmIChp
ICYmICFvcmlnaW5hbEFkdmFuY2VzLmNoYXJhY3RlcklzU3BhY2UpCi0gICAgICAgICAgICBzZXRX
aWR0aCgqZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFu
Y2VCZWZvcmVDaGFyYWN0ZXIpOwotICAgICAgICBzZXRXaWR0aCgqZ2x5cGhCdWZmZXIuYWR2YW5j
ZXMoaSksIG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVyKTsKKyAgICAgICAgICAg
ICpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpIC0gMSkgPSBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VC
ZWZvcmVDaGFyYWN0ZXI7CisgICAgICAgICpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpKSA9IG9yaWdp
bmFsQWR2YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVyOwogICAgIH0KICAgICBjaGFyYWN0ZXJzVHJl
YXRlZEFzU3BhY2UuY2xlYXIoKTsKIApAQCAtMjI1LDggKzIyNSw4IEBAIGlubGluZSB2b2lkIFdp
ZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwg
R2x5cGhCdWZmCiAKICAgICBhdXRvIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA9IHRleHRJdGVyYXRv
ci5jdXJyZW50SW5kZXgoKTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IDA7Ci0gICAgZmxvYXQg
d2lkdGggPSAwOwotICAgIGZsb2F0IHByZXZpb3VzV2lkdGggPSAwOworICAgIEdseXBoQnVmZmVy
QWR2YW5jZSBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOworICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBwcmV2aW91c0FkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKCk7CiAg
ICAgdW5zaWduZWQgY2x1c3Rlckxlbmd0aCA9IDA7CiAgICAgQ2hhcmFjdGVyc1RyZWF0ZWRBc1Nw
YWNlIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZTsKICAgICBmbG9hdCB3aWR0aE9mQ3VycmVudEZv
bnRSYW5nZSA9IDA7CkBAIC0yNTYsMjQgKzI1NiwyNCBAQCBpbmxpbmUgdm9pZCBXaWR0aEl0ZXJh
dG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoQnVm
ZgogICAgICAgICB9CiAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBnbHlwaERhdGEuZm9udCA/
ICpnbHlwaERhdGEuZm9udCA6IHByaW1hcnlGb250OwogCi0gICAgICAgIHByZXZpb3VzV2lkdGgg
PSB3aWR0aDsKLSAgICAgICAgd2lkdGggPSBmb250LndpZHRoRm9yR2x5cGgoZ2x5cGgpOworICAg
ICAgICBwcmV2aW91c0FkdmFuY2UgPSBhZHZhbmNlOworICAgICAgICBhZHZhbmNlID0gZm9udC5h
ZHZhbmNlRm9yR2x5cGgoZ2x5cGgpOwogCiAgICAgICAgIGlmICgmZm9udCAhPSBsYXN0Rm9udERh
dGEpIHsKICAgICAgICAgICAgIGNvbW1pdEN1cnJlbnRGb250UmFuZ2UoZ2x5cGhCdWZmZXIsIGxh
c3RHbHlwaENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsICpsYXN0Rm9udERhdGEsIHByaW1h
cnlGb250LCBjaGFyYWN0ZXIsIHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlLCBjaGFyYWN0ZXJzVHJl
YXRlZEFzU3BhY2UpOwogICAgICAgICAgICAgbGFzdEdseXBoQ291bnQgPSBnbHlwaEJ1ZmZlci5z
aXplKCk7CiAgICAgICAgICAgICBsYXN0Rm9udERhdGEgPSAmZm9udDsKLSAgICAgICAgICAgIHdp
ZHRoT2ZDdXJyZW50Rm9udFJhbmdlID0gd2lkdGg7CisgICAgICAgICAgICB3aWR0aE9mQ3VycmVu
dEZvbnRSYW5nZSA9IHdpZHRoKGFkdmFuY2UpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlICs9IHdpZHRoOworICAgICAgICAgICAgd2lkdGhPZkN1
cnJlbnRGb250UmFuZ2UgKz0gd2lkdGgoYWR2YW5jZSk7CiAKICAgICAgICAgYXV0byB0cmFuc2Zv
cm1zVHlwZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlw
aENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOwogICAgICAgICBpZiAodHJhbnNmb3Jtc1R5
cGUgIT0gVHJhbnNmb3Jtc1R5cGU6Ok5vbmUgJiYgRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShj
aGFyYWN0ZXIpKSB7CiAgICAgICAgICAgICBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UuY29uc3Ry
dWN0QW5kQXBwZW5kKAogICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwKICAg
ICAgICAgICAgICAgICBjaGFyYWN0ZXIgPT0gJyAnLAotICAgICAgICAgICAgICAgIHByZXZpb3Vz
V2lkdGgsCi0gICAgICAgICAgICAgICAgd2lkdGgpOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
QWR2YW5jZSwKKyAgICAgICAgICAgICAgICBhZHZhbmNlKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtX2FjY291bnRGb3JHbHlwaEJvdW5kcykgewpAQCAtMjg1LDcgKzI4NSw3IEBAIGlubGlu
ZSB2b2lkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJ
dGVyYXRvciwgR2x5cGhCdWZmCiAgICAgICAgIGlmIChtX2ZvclRleHRFbXBoYXNpcyAmJiAhRm9u
dENhc2NhZGU6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoY2hhcmFjdGVyKSkKICAgICAgICAgICAg
IGdseXBoID0gMDsKIAotICAgICAgICBnbHlwaEJ1ZmZlci5hZGQoZ2x5cGgsIGZvbnQsIHdpZHRo
LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOworICAgICAgICBnbHlwaEJ1ZmZlci5hZGQoZ2x5cGgs
IGZvbnQsIGFkdmFuY2UsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCk7CiAjaWYgVVNFKENURk9OVFNI
QVBFR0xZUEhTKQogICAgICAgICAvLyBUaGVzZSAwIGdseXBocyBhcmUgbmVlZGVkIGJ5IHNoYXBl
cnMgaWYgdGhlIHNvdXJjZSB0ZXh0IGhhcyBzdXJyb2dhdGUgcGFpcnMuCiAgICAgICAgIC8vIEhv
d2V2ZXIsIENURm9udFRyYW5zZm9ybUdseXBocygpIGNhbid0IGRlbGV0ZSB0aGVzZSAwIGdseXBo
cyBmcm9tIHRoZSBzaGFwZWQgdGV4dCwKQEAgLTI5OSwxMiArMjk5LDEyIEBAIGlubGluZSB2b2lk
IFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRv
ciwgR2x5cGhCdWZmCiAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGFkdmFuY2VMZW5ndGgp
OwogICAgICAgICBjdXJyZW50Q2hhcmFjdGVySW5kZXggPSB0ZXh0SXRlcmF0b3IuY3VycmVudElu
ZGV4KCk7CiAKLSAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoOworICAgICAgICBtX3J1
bldpZHRoU29GYXIgKz0gd2lkdGgoYWR2YW5jZSk7CiAKICAgICAgICAgaWYgKG1fYWNjb3VudEZv
ckdseXBoQm91bmRzKSB7CiAgICAgICAgICAgICBtX21heEdseXBoQm91bmRpbmdCb3hZID0gc3Rk
OjptYXgobV9tYXhHbHlwaEJvdW5kaW5nQm94WSwgYm91bmRzLm1heFkoKSk7CiAgICAgICAgICAg
ICBtX21pbkdseXBoQm91bmRpbmdCb3hZID0gc3RkOjptaW4obV9taW5HbHlwaEJvdW5kaW5nQm94
WSwgYm91bmRzLnkoKSk7Ci0gICAgICAgICAgICBtX2xhc3RHbHlwaE92ZXJmbG93ID0gc3RkOjpt
YXg8ZmxvYXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aCk7CisgICAgICAgICAgICBtX2xhc3RH
bHlwaE92ZXJmbG93ID0gc3RkOjptYXg8ZmxvYXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aChh
ZHZhbmNlKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IGE3YWYwY2ViNTI0OTA0
MDQxZWUxMmQ1MWY4OWM2ZGYxNmNiMzYwMzcuLjUzYmRlNTQ3NDJmZjA1ZmU3MGZiMDRkYzE3NTVi
MTVlOWY2NzM5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMTA3LDE5ICsxMDcsMjUgQEAgRmxvYXRSZWN0IEZv
bnQ6OnBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJu
IEZsb2F0UmVjdCgpOwogfQogCi1mbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5
cGggZ2x5cGgpIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6cGxhdGZvcm1BZHZhbmNl
Rm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5z
aXplKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVy
QWR2YW5jZSgpOwogCiAgICAgaWYgKGNhaXJvX3NjYWxlZF9mb250X3N0YXR1cyhtX3BsYXRmb3Jt
RGF0YS5zY2FsZWRGb250KCkpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQotICAgICAgICByZXR1
cm4gbV9zcGFjZVdpZHRoOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSht
X3NwYWNlV2lkdGgpOwogCiAgICAgY2Fpcm9fZ2x5cGhfdCBjYWlyb0dseXBoID0geyBnbHlwaCwg
MCwgMCB9OwogICAgIGNhaXJvX3RleHRfZXh0ZW50c190IGV4dGVudHM7CiAgICAgY2Fpcm9fc2Nh
bGVkX2ZvbnRfZ2x5cGhfZXh0ZW50cyhtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCksICZjYWly
b0dseXBoLCAxLCAmZXh0ZW50cyk7Ci0gICAgZmxvYXQgd2lkdGggPSBwbGF0Zm9ybURhdGEoKS5v
cmllbnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IGV4dGVudHMueF9h
ZHZhbmNlIDogLWV4dGVudHMueV9hZHZhbmNlOwotICAgIHJldHVybiB3aWR0aCA/IHdpZHRoIDog
bV9zcGFjZVdpZHRoOworICAgIGlmIChwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEZv
bnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCkgeworICAgICAgICBpZiAoZXh0ZW50cy54X2FkdmFu
Y2UpCisgICAgICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShleHRlbnRzLnhf
YWR2YW5jZSwgZXh0ZW50cy55X2FkdmFuY2UpOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVm
ZmVyQWR2YW5jZShtX3NwYWNlV2lkdGgsIDApOworICAgIH0KKyAgICBpZiAoZXh0ZW50cy55X2Fk
dmFuY2UpCisgICAgICAgIHJldHVybiBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKC1leHRlbnRzLnlf
YWR2YW5jZSwgZXh0ZW50cy54X2FkdmFuY2UpOworICAgIHJldHVybiBtYWtlR2x5cGhCdWZmZXJB
ZHZhbmNlKG1fc3BhY2VXaWR0aCwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRD
b3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9G
b250Q29yZVRleHQuY3BwCmluZGV4IDI5YTA3Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIz
YjM5ODkuLjk1YmNhYWU5NGJmNzMxOTc5OTk2YTZkZmZlMWI4Mzk1ZGNmZmQzMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dENvcmVUZXh0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgog
I2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisj
aW5jbHVkZSAiR2x5cGhCdWZmZXJNZW1iZXJzLmgiCiAjaW5jbHVkZSAiT3BlblR5cGVDRy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CkBAIC01NjIsNyArNTYzLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2Nh
bGVkRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzY2FsZUYKICAgICByZXR1cm4g
Y3JlYXRlRGVyaXZhdGl2ZUZvbnQoc2NhbGVkRm9udC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9ybURh
dGEub3JpZW50YXRpb24oKSwgZm9udFRyYWl0cywgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9s
ZCgpLCBtX3BsYXRmb3JtRGF0YS5zeW50aGV0aWNPYmxpcXVlKCkpOwogfQogCi1mbG9hdCBGb250
OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CitHbHlwaEJ1ZmZlckFk
dmFuY2UgRm9udDo6cGxhdGZvcm1BZHZhbmNlRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7
CiAgICAgQ0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwogCkBAIC01NzksNyArNTgwLDkgQEAg
ZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAg
ICAgICAgICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250
KCksIG9yaWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gYWR2YW5jZS53aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKKworICAg
IGFkdmFuY2Uud2lkdGggKz0gbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgIHJldHVybiBhZHZh
bmNlOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAppbmRleCA2MGQzMzAyY2Iy
ZjhkNWMxYTQyMDc0MmRlYTU4MzJkNDRhNTliYTA4Li5mOTljYjM5YzUxMGVlNTcwNjcxMTA3M2Ni
NzM4OGM1Yzc1YTM1MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCkBAIC0xMTIsMTMgKzEx
MiwxMyBAQCB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgpCiAgICAgbV9mb250TWV0cmljcy5zZXRV
bml0c1BlckVtKHVuaXRzUGVyRW0pOwogfQogCi1mbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9y
R2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6cGxhdGZv
cm1BZHZhbmNlRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAgaWYgKCFwbGF0Zm9y
bURhdGEoKS5zaXplKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbWFrZUds
eXBoQnVmZmVyQWR2YW5jZSgpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1EYXRhLnVzZUdESSgpKQot
ICAgICAgICByZXR1cm4gd2lkdGhGb3JHRElHbHlwaChnbHlwaCk7CisgICAgICAgIHJldHVybiBt
YWtlR3lwaEJ1ZmZlckFkdmFuY2Uod2lkdGhGb3JHRElHbHlwaChnbHlwaCkpOwogCiAgICAgQ0dG
b250UmVmIGZvbnQgPSBtX3BsYXRmb3JtRGF0YS5jZ0ZvbnQoKTsKICAgICBmbG9hdCBwb2ludFNp
emUgPSBtX3BsYXRmb3JtRGF0YS5zaXplKCk7CkBAIC0xMjgsNyArMTI4LDkgQEAgZmxvYXQgRm9u
dDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIGJvb2wgaXNQ
cmludGVyRm9udCA9IGZhbHNlOwogICAgIEZvbnRDYXNjYWRlOjpnZXRQbGF0Zm9ybUdseXBoQWR2
YW5jZXMoZm9udCwgbSwgbV9wbGF0Zm9ybURhdGEuaXNTeXN0ZW1Gb250KCksIGlzUHJpbnRlckZv
bnQsIGdseXBoLCBhZHZhbmNlKTsKIAotICAgIHJldHVybiBhZHZhbmNlLndpZHRoICsgbV9zeW50
aGV0aWNCb2xkT2Zmc2V0OworICAgIGFkdmFuY2Uud2lkdGggKz0gbV9zeW50aGV0aWNCb2xkT2Zm
c2V0OworCisgICAgcmV0dXJuIGFkdmFuY2U7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YURpcmVjdDJELmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YURpcmVj
dDJELmNwcAppbmRleCA4YWFlOWVhZWViYTJiOTNmMmM0N2U3YWFkNzI4OTFhNjc5MDRjMDk3Li5k
ZTA5YjIyZGU4YjJkNDQ1NWQ5OWNhZWFkNGRmNTA5NTM0ODRmNzFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFEaXJlY3QyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnRE
YXRhRGlyZWN0MkQuY3BwCkBAIC0xNzcsMTMgKzE3NywxMyBAQCBGbG9hdFJlY3QgRm9udDo6cGxh
dGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICByZXR1cm4gYm91bmRp
bmdCb3g7CiB9CiAKLWZsb2F0IEZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlw
aCkgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5jZSBGb250OjpwbGF0Zm9ybUFkdmFuY2VGb3JHbHlw
aChHbHlwaCBnbHlwaCkgY29uc3QKIHsKICAgICBpZiAoIXBsYXRmb3JtRGF0YSgpLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtYWtlR2x5cGhCdWZmZXJBZHZhbmNl
KCk7CiAKICAgICBpZiAobV9wbGF0Zm9ybURhdGEudXNlR0RJKCkpCi0gICAgICAgIHJldHVybiB3
aWR0aEZvckdESUdseXBoKGdseXBoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VHbHlwaEJ1ZmZlckFk
dmFuY2Uod2lkdGhGb3JHRElHbHlwaChnbHlwaCkpOwogCiAgICAgYXV0byBmb250ID0gbV9wbGF0
Zm9ybURhdGEuZHdGb250KCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZm9udCk7CkBAIC0yMDQsNyAr
MjA0LDcgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBj
b25zdAogICAgIHVuc2lnbmVkIHVuaXRzUGVyRW0gPSBtX2ZvbnRNZXRyaWNzLnVuaXRzUGVyRW0o
KTsKICAgICBmbG9hdCB3aWR0aCA9IHNjYWxlRW1Ub1VuaXRzKHdpZHRoSW5FbSwgdW5pdHNQZXJF
bSkgKiBwb2ludFNpemU7CiAKLSAgICByZXR1cm4gd2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZz
ZXQ7CisgICAgcmV0dXJuIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2Uod2lkdGggKyBtX3N5bnRoZXRp
Y0JvbGRPZmZzZXQsIG1ldHJpY3MuYWR2YW5jZUhlaWdodCk7CiB9CiAKIFBhdGggRm9udDo6cGxh
dGZvcm1QYXRoRm9yR2x5cGgoR2x5cGgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5kZXggMWQyODc3NjY2MjFlYzNkZWU0NDli
ODA0ZTM2Mzg1YTYzYmI3ZTllMS4uYmM4ODg2YzkwNzJmNTIyNTFlNmVkMDJhMmRiNWU5ZjUzOTdm
N2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3Bl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJh
dG9yLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0QXNjZW50QW5k
RGVzY2VudEZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSwgTGF5b3V0VW5pdAogCiBzdGF0
aWMgaW5saW5lIGZsb2F0IGFkdmFuY2VXaWR0aEZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0
YSkKIHsKLSAgICByZXR1cm4gZGF0YS5mb250ID8gZGF0YS5mb250LT53aWR0aEZvckdseXBoKGRh
dGEuZ2x5cGgpIDogMDsKKyAgICByZXR1cm4gZGF0YS5mb250ID8gd2lkdGgoZGF0YS5mb250LT5h
ZHZhbmNlRm9yR2x5cGgoZGF0YS5nbHlwaCkpIDogMDsKIH0KIAogLy8gRklYTUU6IFRoaXMgaGFy
ZGNvZGVkIGRhdGEgY2FuIGJlIHJlbW92ZWQgd2hlbiBPcGVuVHlwZSBNQVRIIGZvbnQgYXJlIHdp
ZGVseSBhdmFpbGFibGUgKGh0dHA6Ly93a2J1Zy8xNTY4MzcpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRl
eCBmZjQxYzUwODEwYzZjOTkwMDk2NDYyMjE2MDE1MDUzNWQwMGM5MjVkLi4xODAyNGMyMzVkZDQ1
ZjcwMTk1NmY5MGE0Y2EyNjM2NTkyZWZmY2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMTk4LDcg
KzE5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkKICAgICAgICAgaWYgKGlzSW52aXNpYmxlT3BlcmF0b3IoKSkgewogICAgICAg
ICAgICAgLy8gSW4gc29tZSBmb250cywgZ2x5cGhzIGZvciBpbnZpc2libGUgb3BlcmF0b3JzIGhh
dmUgbm9uemVybyB3aWR0aC4gQ29uc2VxdWVudGx5LCB3ZSBzdWJ0cmFjdCB0aGF0IHdpZHRoIGhl
cmUgdG8gYXZvaWQgd2lkZSBnYXBzLgogICAgICAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKHRleHRDb250ZW50KCksIGZh
bHNlKTsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoV2lkdGggPSBkYXRhLmZvbnQgPyBkYXRhLmZv
bnQtPndpZHRoRm9yR2x5cGgoZGF0YS5nbHlwaCkgOiAwOworICAgICAgICAgICAgZmxvYXQgZ2x5
cGhXaWR0aCA9IGRhdGEuZm9udCA/IFdlYkNvcmU6OndpZHRoKGRhdGEuZm9udC0+YWR2YW5jZUZv
ckdseXBoKGRhdGEuZ2x5cGgpKSA6IDA7CiAgICAgICAgICAgICBBU1NFUlQoZ2x5cGhXaWR0aCA8
PSBwcmVmZXJyZWRXaWR0aCk7CiAgICAgICAgICAgICBwcmVmZXJyZWRXaWR0aCAtPSBnbHlwaFdp
ZHRoOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDdjYzliN2Q0MTYyNDk1NDAwYTU4NWMxNDVj
NDI3NGJlNDczMGU3MjMuLjQ0NDE3ZWQ2NDA4ZDAxMzE4YzVhMjJmODcyM2Y3MDIxNDE4NTU4MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIGlmIChtX21hdGhWYXJpYW50Q29k
ZVBvaW50KSB7CiAgICAgICAgIGF1dG8gbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENh
c2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV9tYXRoVmFyaWFudENvZGVQb2ludC52YWx1
ZSgpLCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCk7CiAgICAgICAgIGlmIChtYXRoVmFyaWFudEds
eXBoLmZvbnQpIHsKLSAgICAgICAgICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbV9t
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9y
R2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCk7CisgICAgICAgICAgICBtX21heFByZWZlcnJl
ZExvZ2ljYWxXaWR0aCA9IG1fbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gV2ViQ29yZTo6d2lk
dGgobWF0aFZhcmlhbnRHbHlwaC5mb250LT5hZHZhbmNlRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlw
aC5nbHlwaCkpOwogICAgICAgICAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZh
bHNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTgzLDcgKzU4Myw3IEBA
IHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgTGF5b3V0VW5pdCBwYWdlTG9naWNhCiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hp
bGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCiAgICAgICAg
IGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgc2V0TG9naWNhbFdpZHRoKExheW91dFVu
aXQobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZvckdseXBoKG1hdGhWYXJpYW50R2x5cGgu
Z2x5cGgpKSk7CisgICAgc2V0TG9naWNhbFdpZHRoKExheW91dFVuaXQoV2ViQ29yZTo6d2lkdGgo
bWF0aFZhcmlhbnRHbHlwaC5mb250LT5hZHZhbmNlRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5n
bHlwaCkpKSk7CiAgICAgc2V0TG9naWNhbEhlaWdodChMYXlvdXRVbml0KG1hdGhWYXJpYW50R2x5
cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkuaGVpZ2h0KCkp
KTsKIAogICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwpAQCAtNjA4LDcgKzYwOCw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgTGF5b3V0VW5pdCBnbHlwaEFzY2VudCA9
IHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNG
b3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKTsKICAgICAvLyBGSVhNRTogSWYg
d2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBoLCB3aHkgZG8gd2UgbmVlZCB0byBjb21w
dXRlIGFuIGFkdmFuY2U/Ci0gICAgYXV0byBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5j
ZShtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5n
bHlwaCkpOworICAgIGF1dG8gYWR2YW5jZSA9IG1hdGhWYXJpYW50R2x5cGguZm9udC0+YWR2YW5j
ZUZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpOwogICAgIGluZm8uY29udGV4dCgpLmRy
YXdHbHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9udCwgJm1hdGhWYXJpYW50R2x5cGguZ2x5cGgs
ICZhZHZhbmNlLCAxLCBwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1
LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9udENhc2NhZGUoKS5mb250RGVzY3JpcHRpb24oKS5m
b250U21vb3RoaW5nKCkpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434295</attachid>
            <date>2021-07-27 10:14:54 -0700</date>
            <delta_ts>2021-07-27 14:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215661-20210727101453.patch</filename>
            <type>text/plain</type>
            <size>27406</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2ODY2YmY2ODQ3NmYy
MDczZDIxNjE3NjQ3NWM4NTdlMTczYWEzYy4uMWQ2ODY5MmIyYjhhMzFlMGU3OTIzMDdkM2E5YjUx
ZGNjMjViOWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTA3LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIHRl
eHQgY29kZXBhdGggaWdub3JlcyB5LWNvbXBvbmVudCBvZiBnbHlwaCBhZHZhbmNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NjYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgbmV4
dCBzdGVwIGZvciBkZWxldGluZyB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLiBUaGUgZmFzdCB0
ZXh0IGNvZGVwYXRoIG5lZWRzIHRvIGJlCisgICAgICAgIGVucmljaGVkIHRvIGhhbmRsZSBnbHlw
aHMgd2l0aCB5LWFkdmFuY2VzLiBUaGlzIHBhdGNoIGlzIGZhaXJseSBtZWNoYW5pY2FsLCBhbmQg
anVzdCB0dXJucworICAgICAgICBwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoKSBpbnRvIHBsYXRmb3Jt
QWR2YW5jZUZvckdseXBoKCkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVu
OjpDb21wbGV4VGV4dFJ1bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Ojppbml0Q2hhcldpZHRocyk6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpwbGF0Zm9ybUdseXBoSW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6Ym91bmRzRm9yR2x5cGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6YWR2YW5jZUZvckdseXBoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OndpZHRoRm9yR2x5cGggY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6b2Zmc2V0VG9NaWRkbGVPZkdseXBoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxzdGQ6
Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4+Ojp1bmtub3duTWV0cmljcyk6CisgICAgICAg
IChXZWJDb3JlOjpHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+Pjo6dW5r
bm93bk1ldHJpY3MpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNzTWFwPGZsb2F0Pjo6
dW5rbm93bk1ldHJpY3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhNZXRyaWNz
TWFwPEZsb2F0UmVjdD46OnVua25vd25NZXRyaWNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdp
bmFsQWR2YW5jZXNGb3JDaGFyYWN0ZXJUcmVhdGVkQXNTcGFjZTo6T3JpZ2luYWxBZHZhbmNlc0Zv
ckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0
b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRv
cjo6YWR2YW5jZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1BZHZhbmNlRm9y
R2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1XaWR0aEZvckds
eXBoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9Gb250Q29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1BZHZh
bmNlRm9yR2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6cGxhdGZvcm1XaWR0
aEZvckdseXBoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0
Zm9ybUFkdmFuY2VGb3JHbHlwaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0
Zm9ybVdpZHRoRm9yR2x5cGggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OnBsYXRmb3JtQWR2YW5jZUZvckdseXBoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnQ6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2
YW5jZVdpZHRoRm9yR2x5cGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6
OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TFRva2VuOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNYXRoTUxUb2tlbjo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MVG9rZW46OnBhaW50KToKKwogMjAyMS0wNy0yNiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWd1bGF0ZSB0aGUgV2ViUGFnZSBSZW5kZXJp
bmdVcGRhdGVzIGZyb20gdGhlIFdlYlByb2Nlc3MgdG8gdGhlIEdQVVByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCmluZGV4IDQ0OTMyZGVmY2Q5ODYzZTYwZjIwY2E5ZDE3NjJhNzk2NTMwYjFmYjgu
LjdhYzE1ODAyMjkwY2E2NTUwYjM5YjQwM2VkNTdhNjM4YTExNDIwMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcApAQCAtODQxLDcgKzg0MSw3IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVDCiAKICAg
ICAvLyBTeW50aGVzaXplIGEgcnVuIG9mIG1pc3NpbmcgZ2x5cGhzLgogICAgIG1fZ2x5cGhzLmZp
bGwoMCwgbV9nbHlwaENvdW50KTsKLSAgICBtX2Jhc2VBZHZhbmNlcy5maWxsKEZsb2F0U2l6ZSht
X2ZvbnQud2lkdGhGb3JHbHlwaCgwKSwgMCksIG1fZ2x5cGhDb3VudCk7CisgICAgbV9iYXNlQWR2
YW5jZXMuZmlsbChzaXplKG1fZm9udC5hZHZhbmNlRm9yR2x5cGgoMCkpLCBtX2dseXBoQ291bnQp
OwogfQogCiBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4
dFJ1bihjb25zdCBWZWN0b3I8RmxvYXRTaXplPiYgYWR2YW5jZXMsIGNvbnN0IFZlY3RvcjxGbG9h
dFBvaW50PiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPEdseXBoPiYgZ2x5cGhzLCBjb25zdCBWZWN0
b3I8dW5zaWduZWQ+JiBzdHJpbmdJbmRpY2VzLCBGbG9hdFNpemUgaW5pdGlhbEFkdmFuY2UsIGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdHJpbmdM
b2NhdGlvbiwgdW5zaWduZWQgc3RyaW5nTGVuZ3RoLCB1bnNpZ25lZCBpbmRleEJlZ2luLCB1bnNp
Z25lZCBpbmRleEVuZCwgYm9vbCBsdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnQuY3BwCmluZGV4IDE3YTM3YWY4YmJmZDg3OWQ1YTg0NDM4Y2U0ZTM5OTNjNDdmNzkxM2Yu
LjViOTEwZjQwM2JjNzA3ODQ3Yzc0NGQwNzQ3NmNjYjU3ZGY4YjM0NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBG
b250Ojppbml0Q2hhcldpZHRocygpCiAgICAgaWYgKG1fYXZnQ2hhcldpZHRoIDw9IDAuZiAmJiBn
bHlwaFBhZ2VaZXJvKSB7CiAgICAgICAgIEdseXBoIGRpZ2l0WmVyb0dseXBoID0gZ2x5cGhQYWdl
WmVyby0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKCcwJykuZ2x5cGg7CiAgICAgICAgIGlmIChkaWdp
dFplcm9HbHlwaCkKLSAgICAgICAgICAgIG1fYXZnQ2hhcldpZHRoID0gd2lkdGhGb3JHbHlwaChk
aWdpdFplcm9HbHlwaCk7CisgICAgICAgICAgICBtX2F2Z0NoYXJXaWR0aCA9IHdpZHRoKGFkdmFu
Y2VGb3JHbHlwaChkaWdpdFplcm9HbHlwaCkpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGNhbid0
IHJldHJpZXZlIHRoZSB3aWR0aCBvZiBhICcwJywgZmFsbCBiYWNrIHRvIHRoZSB4IGhlaWdodC4K
QEAgLTE1NywxNCArMTU3LDE0IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1HbHlwaEluaXQoKQogICAg
IGlmIChtX3plcm9XaWR0aFNwYWNlR2x5cGggPT0gbV9zcGFjZUdseXBoKQogICAgICAgICBtX3pl
cm9XaWR0aFNwYWNlR2x5cGggPSAwOwogCi0gICAgZmxvYXQgd2lkdGggPSB3aWR0aEZvckdseXBo
KG1fc3BhY2VHbHlwaCk7Ci0gICAgbV9zcGFjZVdpZHRoID0gd2lkdGg7Ci0gICAgbV9mb250TWV0
cmljcy5zZXRaZXJvV2lkdGgod2lkdGhGb3JHbHlwaChtX3plcm9HbHlwaCkpOworICAgIGZsb2F0
IHNwYWNlV2lkdGggPSB3aWR0aChhZHZhbmNlRm9yR2x5cGgobV9zcGFjZUdseXBoKSk7CisgICAg
bV9zcGFjZVdpZHRoID0gc3BhY2VXaWR0aDsKKyAgICBtX2ZvbnRNZXRyaWNzLnNldFplcm9XaWR0
aCh3aWR0aChhZHZhbmNlRm9yR2x5cGgobV96ZXJvR2x5cGgpKSk7CiAgICAgYXV0byBhbW91bnRU
b0FkanVzdExpbmVHYXAgPSBzdGQ6Om1pbihtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZUdhcCgpLCAw
LjBmKTsKICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAobV9mb250TWV0cmljcy5mbG9hdExp
bmVHYXAoKSAtIGFtb3VudFRvQWRqdXN0TGluZUdhcCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRM
aW5lU3BhY2luZyhtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZVNwYWNpbmcoKSAtIGFtb3VudFRvQWRq
dXN0TGluZUdhcCk7CiAgICAgZGV0ZXJtaW5lUGl0Y2goKTsKLSAgICBtX2FkanVzdGVkU3BhY2VX
aWR0aCA9IG1fdHJlYXRBc0ZpeGVkUGl0Y2ggPyBjZWlsZih3aWR0aCkgOiByb3VuZGYod2lkdGgp
OworICAgIG1fYWRqdXN0ZWRTcGFjZVdpZHRoID0gbV90cmVhdEFzRml4ZWRQaXRjaCA/IGNlaWxm
KHNwYWNlV2lkdGgpIDogcm91bmRmKHNwYWNlV2lkdGgpOwogfQogCiBGb250Ojp+Rm9udCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNDdhN2UxMmY5YmM2ODky
MGNhNzE0ZTkyNDc5ZTU5ZWYzZWVlOGQzMi4uNjZlNzcxMzBjYjNjMThjZWNlZTkxNTUzOTkwZGZl
MzYzM2I5ODg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAt
MTQ2LDEwICsxNDYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXZnQ2hhcldpZHRoKGZsb2F0
IGF2Z0NoYXJXaWR0aCkgeyBtX2F2Z0NoYXJXaWR0aCA9IGF2Z0NoYXJXaWR0aDsgfQogCiAgICAg
RmxvYXRSZWN0IGJvdW5kc0ZvckdseXBoKEdseXBoKSBjb25zdDsKLSAgICBmbG9hdCB3aWR0aEZv
ckdseXBoKEdseXBoKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUZvckds
eXBoKEdseXBoKSBjb25zdDsKICAgICBjb25zdCBQYXRoJiBwYXRoRm9yR2x5cGgoR2x5cGgpIGNv
bnN0OyAvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBoYXNoIG1hcCBpcyBm
cmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZlcmVuY2UgZGFuZ2xp
bmcuCiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owot
ICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgR2x5cGhC
dWZmZXJBZHZhbmNlIHBsYXRmb3JtQWR2YW5jZUZvckdseXBoKEdseXBoKSBjb25zdDsKICAgICBQ
YXRoIHBsYXRmb3JtUGF0aEZvckdseXBoKEdseXBoKSBjb25zdDsKIAogICAgIGZsb2F0IHNwYWNl
V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3NwYWNlV2lkdGg7IH0KQEAgLTI4Nyw4ICsyODcsOCBA
QCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBSZWZQdHI8R2x5cGhQYWdlPiBtX2dseXBoUGFnZVpl
cm87CiAgICAgbXV0YWJsZSBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8R2x5cGhQYWdlPj4gbV9n
bHlwaFBhZ2VzOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc01hcDxG
bG9hdFJlY3Q+PiBtX2dseXBoVG9Cb3VuZHNNYXA7Ci0gICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NN
YXA8ZmxvYXQ+IG1fZ2x5cGhUb1dpZHRoTWFwOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4+PiBtX2dseXBoVG9Cb3Vu
ZHNNYXA7CisgICAgbXV0YWJsZSBHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxHbHlwaEJ1
ZmZlckFkdmFuY2U+PiBtX2dseXBoVG9XaWR0aE1hcDsKICAgICBtdXRhYmxlIEdseXBoTWV0cmlj
c01hcDxzdGQ6Om9wdGlvbmFsPFBhdGg+PiBtX2dseXBoUGF0aE1hcDsKICAgICBtdXRhYmxlIEJp
dFZlY3RvciBtX2NvZGVQb2ludFN1cHBvcnQ7CiAKQEAgLTM2OSw0NiArMzY5LDQ2IEBAIEFMV0FZ
U19JTkxJTkUgRmxvYXRSZWN0IEZvbnQ6OmJvdW5kc0ZvckdseXBoKEdseXBoIGdseXBoKSBjb25z
dAogICAgIGlmIChpc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgpKQogICAgICAgICByZXR1cm4g
RmxvYXRSZWN0KCk7CiAKLSAgICBGbG9hdFJlY3QgYm91bmRzOworICAgIHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0PiBib3VuZHM7CiAgICAgaWYgKG1fZ2x5cGhUb0JvdW5kc01hcCkgewogICAgICAg
ICBib3VuZHMgPSBtX2dseXBoVG9Cb3VuZHNNYXAtPm1ldHJpY3NGb3JHbHlwaChnbHlwaCk7Ci0g
ICAgICAgIGlmIChib3VuZHMud2lkdGgoKSAhPSBjR2x5cGhTaXplVW5rbm93bikKLSAgICAgICAg
ICAgIHJldHVybiBib3VuZHM7CisgICAgICAgIGlmIChib3VuZHMuaGFzX3ZhbHVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gYm91bmRzLnZhbHVlKCk7CiAgICAgfQogCiAgICAgYm91bmRzID0gcGxh
dGZvcm1Cb3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgaWYgKCFtX2dseXBoVG9Cb3VuZHNNYXAp
Ci0gICAgICAgIG1fZ2x5cGhUb0JvdW5kc01hcCA9IG1ha2VVbmlxdWU8R2x5cGhNZXRyaWNzTWFw
PEZsb2F0UmVjdD4+KCk7Ci0gICAgbV9nbHlwaFRvQm91bmRzTWFwLT5zZXRNZXRyaWNzRm9yR2x5
cGgoZ2x5cGgsIGJvdW5kcyk7Ci0gICAgcmV0dXJuIGJvdW5kczsKKyAgICAgICAgbV9nbHlwaFRv
Qm91bmRzTWFwID0gbWFrZVVuaXF1ZTxHbHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+Pj4oKTsKKyAgICBtX2dseXBoVG9Cb3VuZHNNYXAtPnNldE1ldHJpY3NGb3JHbHlwaChn
bHlwaCwgYm91bmRzLnZhbHVlKCkpOworICAgIHJldHVybiBib3VuZHMudmFsdWUoKTsKIH0KIAot
QUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25z
dAorQUxXQVlTX0lOTElORSBHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YWR2YW5jZUZvckdseXBo
KEdseXBoIGdseXBoKSBjb25zdAogewogICAgIC8vIFRoZSBvcHRpbWl6YXRpb24gb2YgcmV0dXJu
aW5nIDAgZm9yIHRoZSB6ZXJvLXdpZHRoLXNwYWNlIGdseXBoIGlzIGluY29ycmVjdCBmb3IgdGhl
IExhc3RSZXNvcnQgZm9udCwKICAgICAvLyB1c2VkIGluIHBsYWNlIG9mIHRoZSBhY3R1YWwgZm9u
dCB3aGVuIGlzTG9hZGluZygpIGlzIHRydWUgb24gYm90aCBtYWNPUyBhbmQgaU9TLgogICAgIC8v
IFRoZSB6ZXJvLXdpZHRoLXNwYWNlIGdseXBoIGluIHRoYXQgZm9udCBkb2VzIG5vdCBoYXZlIGEg
d2lkdGggb2YgemVybyBhbmQsIGZ1cnRoZXIsIHRoYXQgZ2x5cGggaXMgdXNlZAogICAgIC8vIGZv
ciBtYW55IG90aGVyIGNoYXJhY3RlcnMgYW5kIG11c3Qgbm90IGJlIHplcm8gd2lkdGggd2hlbiB1
c2VkIGZvciB0aGVtLgogICAgIGlmIChpc1plcm9XaWR0aFNwYWNlR2x5cGgoZ2x5cGgpICYmICFp
c0ludGVyc3RpdGlhbCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1ha2VH
bHlwaEJ1ZmZlckFkdmFuY2UoKTsKIAotICAgIGZsb2F0IHdpZHRoID0gbV9nbHlwaFRvV2lkdGhN
YXAubWV0cmljc0ZvckdseXBoKGdseXBoKTsKLSAgICBpZiAod2lkdGggIT0gY0dseXBoU2l6ZVVu
a25vd24pCi0gICAgICAgIHJldHVybiB3aWR0aDsKKyAgICBhdXRvIGFkdmFuY2UgPSBtX2dseXBo
VG9XaWR0aE1hcC5tZXRyaWNzRm9yR2x5cGgoZ2x5cGgpOworICAgIGlmIChhZHZhbmNlKQorICAg
ICAgICByZXR1cm4gYWR2YW5jZS52YWx1ZSgpOwogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJ
Q0FMKQogICAgIGlmIChtX3ZlcnRpY2FsRGF0YSkgewogI2lmIFVTRShDRykgfHwgVVNFKERJUkVD
VDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgICAgIHdpZHRoID0gbV92ZXJ0aWNhbERhdGEtPmFkdmFu
Y2VIZWlnaHQodGhpcywgZ2x5cGgpICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgICAgICBh
ZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShtX3ZlcnRpY2FsRGF0YS0+YWR2YW5jZUhl
aWdodCh0aGlzLCBnbHlwaCkgKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQsIDApOwogI2Vsc2UKLSAg
ICAgICAgd2lkdGggPSBtX3ZlcnRpY2FsRGF0YS0+YWR2YW5jZUhlaWdodCh0aGlzLCBnbHlwaCk7
CisgICAgICAgIGFkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKG1fdmVydGljYWxEYXRh
LT5hZHZhbmNlSGVpZ2h0KHRoaXMsIGdseXBoKSwgMCk7CiAjZW5kaWYKICAgICB9IGVsc2UKICNl
bmRpZgotICAgICAgICB3aWR0aCA9IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChnbHlwaCk7CisgICAg
ICAgIGFkdmFuY2UgPSBwbGF0Zm9ybUFkdmFuY2VGb3JHbHlwaChnbHlwaCk7CiAKLSAgICBtX2ds
eXBoVG9XaWR0aE1hcC5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5cGgsIHdpZHRoKTsKLSAgICByZXR1
cm4gd2lkdGg7CisgICAgbV9nbHlwaFRvV2lkdGhNYXAuc2V0TWV0cmljc0ZvckdseXBoKGdseXBo
LCBhZHZhbmNlKTsKKyAgICByZXR1cm4gYWR2YW5jZS52YWx1ZSgpOwogfQogCiB1c2luZyBGb250
UmVuZGVyaW5nUmVzb3VyY2VNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgUmVmPEZvbnQ+PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcAppbmRleCBhYzU0ZTY4MTM5OTI4NGVkOGJmOGExMWM3NmFiMTFmZGZjZmQx
M2ZlLi4wNWRlZmFjYjY3NzA1M2JlYTEyMDFiYTE4NzAzYWE1YTI1MTJiNDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMTQs
OCArMzE0LDggQEAgZmxvYXQgRm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dChTdHJpbmdW
aWV3IHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGkKICAgICBhdXRvJiBmb250ID0gcHJp
bWFyeUZvbnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dC5sZW5ndGgoKTsg
KytpKSB7CiAgICAgICAgIGF1dG8gZ2x5cGggPSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIodGV4dFtp
XSwgZmFsc2UpLmdseXBoOwotICAgICAgICBhdXRvIGdseXBoV2lkdGggPSBmb250LndpZHRoRm9y
R2x5cGgoZ2x5cGgpOwotICAgICAgICBydW5XaWR0aCArPSBnbHlwaFdpZHRoOworICAgICAgICBh
dXRvIGdseXBoV2lkdGggPSBmb250LmFkdmFuY2VGb3JHbHlwaChnbHlwaCk7CisgICAgICAgIHJ1
bldpZHRoICs9IFdlYkNvcmU6OndpZHRoKGdseXBoV2lkdGgpOwogICAgICAgICBnbHlwaEJ1ZmZl
ci5hZGQoZ2x5cGgsIGZvbnQsIGdseXBoV2lkdGgsIGkpOwogICAgIH0KIApAQCAtMTM2NCw3ICsx
MzY0LDcgQEAgaW5saW5lIHN0YXRpYyBmbG9hdCBvZmZzZXRUb01pZGRsZU9mR2x5cGgoY29uc3Qg
Rm9udCYgZm9udERhdGEsIEdseXBoIGdseXBoKQogICAgICAgICByZXR1cm4gYm91bmRzLngoKSAr
IGJvdW5kcy53aWR0aCgpIC8gMjsKICAgICB9CiAgICAgLy8gRklYTUU6IFVzZSBnbHlwaCBib3Vu
ZHMgb25jZSB0aGV5IG1ha2Ugc2Vuc2UgZm9yIHZlcnRpY2FsIGZvbnRzLgotICAgIHJldHVybiBm
b250RGF0YS53aWR0aEZvckdseXBoKGdseXBoKSAvIDI7CisgICAgcmV0dXJuIHdpZHRoKGZvbnRE
YXRhLmFkdmFuY2VGb3JHbHlwaChnbHlwaCkpIC8gMjsKIH0KIAogaW5saW5lIHN0YXRpYyBmbG9h
dCBvZmZzZXRUb01pZGRsZU9mR2x5cGhBdEluZGV4KGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwgdW5zaWduZWQgaSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dseXBoTWV0cmljc01hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2x5cGhNZXRyaWNzTWFwLmgKaW5kZXggNDQzYzYzYWJkMTcwYzkwN2FiNzNiODU2MzIzYmYy
Zjk0NjE2NTcxNS4uMzMzMDYxMDViN2M4ODg5ODVkYzQwZTc0M2YyYmEzMjhkMTcwMzJhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFw
LmgKQEAgLTM2LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBmbG9h
dCBjR2x5cGhTaXplVW5rbm93biA9IC0xOwotCiB0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBHbHlw
aE1ldHJpY3NNYXAgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
MTA1LDE0ICsxMDMsMTQgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxp
bnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+IG1fcGFnZXM7CiB9OwogCi10
ZW1wbGF0ZTw+IGlubGluZSBmbG9hdCBHbHlwaE1ldHJpY3NNYXA8ZmxvYXQ+Ojp1bmtub3duTWV0
cmljcygpCit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5j
ZT4gR2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0aW9uYWw8R2x5cGhCdWZmZXJBZHZhbmNlPj46OnVu
a25vd25NZXRyaWNzKCkKIHsKLSAgICByZXR1cm4gY0dseXBoU2l6ZVVua25vd247CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEdseXBo
TWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCit0ZW1wbGF0ZTw+IGlubGlu
ZSBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gR2x5cGhNZXRyaWNzTWFwPHN0ZDo6b3B0aW9uYWw8
RmxvYXRSZWN0Pj46OnVua25vd25NZXRyaWNzKCkKIHsKLSAgICByZXR1cm4gRmxvYXRSZWN0KDAs
IDAsIGNHbHlwaFNpemVVbmtub3duLCBjR2x5cGhTaXplVW5rbm93bik7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgc3RkOjpvcHRpb25hbDxQYXRoPiBH
bHlwaE1ldHJpY3NNYXA8c3RkOjpvcHRpb25hbDxQYXRoPj46OnVua25vd25NZXRyaWNzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAK
aW5kZXggYjdjYzBmYjUyNWY2ODUyN2M5MWNlMWFiZDYzZTI0NDc0NGVmMzdiYi4uZDNlMTI5YjA0
MTMwZTJlZTY5ZTkzMGM4ZDljODA3MWE2YTdlOTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
V2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBIYXNoU2UKIH0KIAogc3RydWN0IE9yaWdpbmFsQWR2YW5jZXNGb3JD
aGFyYWN0ZXJUcmVhdGVkQXNTcGFjZSB7Ci0gICAgZXhwbGljaXQgT3JpZ2luYWxBZHZhbmNlc0Zv
ckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNlKEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0cmluZ09m
ZnNldCwgYm9vbCBpc1NwYWNlLCBmbG9hdCBhZHZhbmNlQmVmb3JlLCBmbG9hdCBhZHZhbmNlQXQp
CisgICAgZXhwbGljaXQgT3JpZ2luYWxBZHZhbmNlc0ZvckNoYXJhY3RlclRyZWF0ZWRBc1NwYWNl
KEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0cmluZ09mZnNldCwgYm9vbCBpc1NwYWNlLCBHbHlw
aEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUJlZm9yZSwgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2VB
dCkKICAgICAgICAgOiBzdHJpbmdPZmZzZXQoc3RyaW5nT2Zmc2V0KQogICAgICAgICAsIGNoYXJh
Y3RlcklzU3BhY2UoaXNTcGFjZSkKICAgICAgICAgLCBhZHZhbmNlQmVmb3JlQ2hhcmFjdGVyKGFk
dmFuY2VCZWZvcmUpCkBAIC03MSw4ICs3MSw4IEBAIHN0cnVjdCBPcmlnaW5hbEFkdmFuY2VzRm9y
Q2hhcmFjdGVyVHJlYXRlZEFzU3BhY2UgewogCiAgICAgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQg
c3RyaW5nT2Zmc2V0OwogICAgIGJvb2wgY2hhcmFjdGVySXNTcGFjZTsKLSAgICBmbG9hdCBhZHZh
bmNlQmVmb3JlQ2hhcmFjdGVyOwotICAgIGZsb2F0IGFkdmFuY2VBdENoYXJhY3RlcjsKKyAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUJlZm9yZUNoYXJhY3RlcjsKKyAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UgYWR2YW5jZUF0Q2hhcmFjdGVyOwogfTsKIAogc3RhdGljIGlubGluZSBib29sIGlz
U29mdEJhbmtFbW9qaShVQ2hhcjMyIGNvZGVwb2ludCkKQEAgLTE0NSw4ICsxNDUsOCBAQCBpbmxp
bmUgZmxvYXQgV2lkdGhJdGVyYXRvcjo6YXBwbHlGb250VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsIHVuc2lnbgogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0
IGF1dG8mIG9yaWdpbmFsQWR2YW5jZXMgPSAqaXRlcmF0b3I7CiAgICAgICAgIGlmIChpICYmICFv
cmlnaW5hbEFkdmFuY2VzLmNoYXJhY3RlcklzU3BhY2UpCi0gICAgICAgICAgICBzZXRXaWR0aCgq
Z2x5cGhCdWZmZXIuYWR2YW5jZXMoaSAtIDEpLCBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VCZWZv
cmVDaGFyYWN0ZXIpOwotICAgICAgICBzZXRXaWR0aCgqZ2x5cGhCdWZmZXIuYWR2YW5jZXMoaSks
IG9yaWdpbmFsQWR2YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgICpnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhpIC0gMSkgPSBvcmlnaW5hbEFkdmFuY2VzLmFkdmFuY2VCZWZvcmVD
aGFyYWN0ZXI7CisgICAgICAgICpnbHlwaEJ1ZmZlci5hZHZhbmNlcyhpKSA9IG9yaWdpbmFsQWR2
YW5jZXMuYWR2YW5jZUF0Q2hhcmFjdGVyOwogICAgIH0KICAgICBjaGFyYWN0ZXJzVHJlYXRlZEFz
U3BhY2UuY2xlYXIoKTsKIApAQCAtMjI1LDggKzIyNSw4IEBAIGlubGluZSB2b2lkIFdpZHRoSXRl
cmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5cGhC
dWZmCiAKICAgICBhdXRvIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCA9IHRleHRJdGVyYXRvci5jdXJy
ZW50SW5kZXgoKTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IDA7Ci0gICAgZmxvYXQgd2lkdGgg
PSAwOwotICAgIGZsb2F0IHByZXZpb3VzV2lkdGggPSAwOworICAgIEdseXBoQnVmZmVyQWR2YW5j
ZSBhZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOworICAgIEdseXBoQnVmZmVyQWR2
YW5jZSBwcmV2aW91c0FkdmFuY2UgPSBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKCk7CiAgICAgdW5z
aWduZWQgY2x1c3Rlckxlbmd0aCA9IDA7CiAgICAgQ2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlIGNo
YXJhY3RlcnNUcmVhdGVkQXNTcGFjZTsKICAgICBmbG9hdCB3aWR0aE9mQ3VycmVudEZvbnRSYW5n
ZSA9IDA7CkBAIC0yNTYsMjQgKzI1NiwyNCBAQCBpbmxpbmUgdm9pZCBXaWR0aEl0ZXJhdG9yOjph
ZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IsIEdseXBoQnVmZgogICAg
ICAgICB9CiAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBnbHlwaERhdGEuZm9udCA/ICpnbHlw
aERhdGEuZm9udCA6IHByaW1hcnlGb250OwogCi0gICAgICAgIHByZXZpb3VzV2lkdGggPSB3aWR0
aDsKLSAgICAgICAgd2lkdGggPSBmb250LndpZHRoRm9yR2x5cGgoZ2x5cGgpOworICAgICAgICBw
cmV2aW91c0FkdmFuY2UgPSBhZHZhbmNlOworICAgICAgICBhZHZhbmNlID0gZm9udC5hZHZhbmNl
Rm9yR2x5cGgoZ2x5cGgpOwogCiAgICAgICAgIGlmICgmZm9udCAhPSBsYXN0Rm9udERhdGEpIHsK
ICAgICAgICAgICAgIGNvbW1pdEN1cnJlbnRGb250UmFuZ2UoZ2x5cGhCdWZmZXIsIGxhc3RHbHlw
aENvdW50LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgsICpsYXN0Rm9udERhdGEsIHByaW1hcnlGb250
LCBjaGFyYWN0ZXIsIHdpZHRoT2ZDdXJyZW50Rm9udFJhbmdlLCBjaGFyYWN0ZXJzVHJlYXRlZEFz
U3BhY2UpOwogICAgICAgICAgICAgbGFzdEdseXBoQ291bnQgPSBnbHlwaEJ1ZmZlci5zaXplKCk7
CiAgICAgICAgICAgICBsYXN0Rm9udERhdGEgPSAmZm9udDsKLSAgICAgICAgICAgIHdpZHRoT2ZD
dXJyZW50Rm9udFJhbmdlID0gd2lkdGg7CisgICAgICAgICAgICB3aWR0aE9mQ3VycmVudEZvbnRS
YW5nZSA9IHdpZHRoKGFkdmFuY2UpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHdpZHRo
T2ZDdXJyZW50Rm9udFJhbmdlICs9IHdpZHRoOworICAgICAgICAgICAgd2lkdGhPZkN1cnJlbnRG
b250UmFuZ2UgKz0gd2lkdGgoYWR2YW5jZSk7CiAKICAgICAgICAgYXV0byB0cmFuc2Zvcm1zVHlw
ZSA9IHNob3VsZEFwcGx5Rm9udFRyYW5zZm9ybXMoZ2x5cGhCdWZmZXIsIGxhc3RHbHlwaENvdW50
LCBjdXJyZW50Q2hhcmFjdGVySW5kZXgpOwogICAgICAgICBpZiAodHJhbnNmb3Jtc1R5cGUgIT0g
VHJhbnNmb3Jtc1R5cGU6Ok5vbmUgJiYgRm9udENhc2NhZGU6OnRyZWF0QXNTcGFjZShjaGFyYWN0
ZXIpKSB7CiAgICAgICAgICAgICBjaGFyYWN0ZXJzVHJlYXRlZEFzU3BhY2UuY29uc3RydWN0QW5k
QXBwZW5kKAogICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCwKICAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXIgPT0gJyAnLAotICAgICAgICAgICAgICAgIHByZXZpb3VzV2lkdGgs
Ci0gICAgICAgICAgICAgICAgd2lkdGgpOworICAgICAgICAgICAgICAgIHByZXZpb3VzQWR2YW5j
ZSwKKyAgICAgICAgICAgICAgICBhZHZhbmNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICht
X2FjY291bnRGb3JHbHlwaEJvdW5kcykgewpAQCAtMjg1LDcgKzI4NSw3IEBAIGlubGluZSB2b2lk
IFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRv
ciwgR2x5cGhCdWZmCiAgICAgICAgIGlmIChtX2ZvclRleHRFbXBoYXNpcyAmJiAhRm9udENhc2Nh
ZGU6OmNhblJlY2VpdmVUZXh0RW1waGFzaXMoY2hhcmFjdGVyKSkKICAgICAgICAgICAgIGdseXBo
ID0gMDsKIAotICAgICAgICBnbHlwaEJ1ZmZlci5hZGQoZ2x5cGgsIGZvbnQsIHdpZHRoLCBjdXJy
ZW50Q2hhcmFjdGVySW5kZXgpOworICAgICAgICBnbHlwaEJ1ZmZlci5hZGQoZ2x5cGgsIGZvbnQs
IGFkdmFuY2UsIGN1cnJlbnRDaGFyYWN0ZXJJbmRleCk7CiAjaWYgVVNFKENURk9OVFNIQVBFR0xZ
UEhTKQogICAgICAgICAvLyBUaGVzZSAwIGdseXBocyBhcmUgbmVlZGVkIGJ5IHNoYXBlcnMgaWYg
dGhlIHNvdXJjZSB0ZXh0IGhhcyBzdXJyb2dhdGUgcGFpcnMuCiAgICAgICAgIC8vIEhvd2V2ZXIs
IENURm9udFRyYW5zZm9ybUdseXBocygpIGNhbid0IGRlbGV0ZSB0aGVzZSAwIGdseXBocyBmcm9t
IHRoZSBzaGFwZWQgdGV4dCwKQEAgLTI5OSwxMiArMjk5LDEyIEBAIGlubGluZSB2b2lkIFdpZHRo
SXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciwgR2x5
cGhCdWZmCiAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGFkdmFuY2VMZW5ndGgpOwogICAg
ICAgICBjdXJyZW50Q2hhcmFjdGVySW5kZXggPSB0ZXh0SXRlcmF0b3IuY3VycmVudEluZGV4KCk7
CiAKLSAgICAgICAgbV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoOworICAgICAgICBtX3J1bldpZHRo
U29GYXIgKz0gd2lkdGgoYWR2YW5jZSk7CiAKICAgICAgICAgaWYgKG1fYWNjb3VudEZvckdseXBo
Qm91bmRzKSB7CiAgICAgICAgICAgICBtX21heEdseXBoQm91bmRpbmdCb3hZID0gc3RkOjptYXgo
bV9tYXhHbHlwaEJvdW5kaW5nQm94WSwgYm91bmRzLm1heFkoKSk7CiAgICAgICAgICAgICBtX21p
bkdseXBoQm91bmRpbmdCb3hZID0gc3RkOjptaW4obV9taW5HbHlwaEJvdW5kaW5nQm94WSwgYm91
bmRzLnkoKSk7Ci0gICAgICAgICAgICBtX2xhc3RHbHlwaE92ZXJmbG93ID0gc3RkOjptYXg8Zmxv
YXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aCk7CisgICAgICAgICAgICBtX2xhc3RHbHlwaE92
ZXJmbG93ID0gc3RkOjptYXg8ZmxvYXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aChhZHZhbmNl
KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IGE3YWYwY2ViNTI0OTA0MDQxZWUx
MmQ1MWY4OWM2ZGYxNmNiMzYwMzcuLjUzYmRlNTQ3NDJmZjA1ZmU3MGZiMDRkYzE3NTViMTVlOWY2
NzM5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcApAQCAtMTA3LDE5ICsxMDcsMjUgQEAgRmxvYXRSZWN0IEZvbnQ6OnBs
YXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0
UmVjdCgpOwogfQogCi1mbG9hdCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6cGxhdGZvcm1BZHZhbmNlRm9yR2x5
cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtRGF0YS5zaXplKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5j
ZSgpOwogCiAgICAgaWYgKGNhaXJvX3NjYWxlZF9mb250X3N0YXR1cyhtX3BsYXRmb3JtRGF0YS5z
Y2FsZWRGb250KCkpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQotICAgICAgICByZXR1cm4gbV9z
cGFjZVdpZHRoOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShtX3NwYWNl
V2lkdGgpOwogCiAgICAgY2Fpcm9fZ2x5cGhfdCBjYWlyb0dseXBoID0geyBnbHlwaCwgMCwgMCB9
OwogICAgIGNhaXJvX3RleHRfZXh0ZW50c190IGV4dGVudHM7CiAgICAgY2Fpcm9fc2NhbGVkX2Zv
bnRfZ2x5cGhfZXh0ZW50cyhtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCksICZjYWlyb0dseXBo
LCAxLCAmZXh0ZW50cyk7Ci0gICAgZmxvYXQgd2lkdGggPSBwbGF0Zm9ybURhdGEoKS5vcmllbnRh
dGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6SG9yaXpvbnRhbCA/IGV4dGVudHMueF9hZHZhbmNl
IDogLWV4dGVudHMueV9hZHZhbmNlOwotICAgIHJldHVybiB3aWR0aCA/IHdpZHRoIDogbV9zcGFj
ZVdpZHRoOworICAgIGlmIChwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IEZvbnRPcmll
bnRhdGlvbjo6SG9yaXpvbnRhbCkgeworICAgICAgICBpZiAoZXh0ZW50cy54X2FkdmFuY2UpCisg
ICAgICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShleHRlbnRzLnhfYWR2YW5j
ZSwgZXh0ZW50cy55X2FkdmFuY2UpOworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2
YW5jZShtX3NwYWNlV2lkdGgsIDApOworICAgIH0KKyAgICBpZiAoZXh0ZW50cy55X2FkdmFuY2Up
CisgICAgICAgIHJldHVybiBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKC1leHRlbnRzLnlfYWR2YW5j
ZSwgZXh0ZW50cy54X2FkdmFuY2UpOworICAgIHJldHVybiBtYWtlR2x5cGhCdWZmZXJBZHZhbmNl
KG1fc3BhY2VXaWR0aCwgMCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29y
ZVRleHQuY3BwCmluZGV4IDI5YTA3Yzc2YWYwYWRhMTQyNzZhMDE1NWIzNzcxNzFjNGIzYjM5ODku
Ljk1YmNhYWU5NGJmNzMxOTc5OTk2YTZkZmZlMWI4Mzk1ZGNmZmQzMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVU
ZXh0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1
ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVk
ZSAiR2x5cGhCdWZmZXJNZW1iZXJzLmgiCiAjaW5jbHVkZSAiT3BlblR5cGVDRy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CkBAIC01
NjIsNyArNTYzLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnBsYXRmb3JtQ3JlYXRlU2NhbGVkRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBmbG9hdCBzY2FsZUYKICAgICByZXR1cm4gY3JlYXRl
RGVyaXZhdGl2ZUZvbnQoc2NhbGVkRm9udC5nZXQoKSwgc2l6ZSwgbV9wbGF0Zm9ybURhdGEub3Jp
ZW50YXRpb24oKSwgZm9udFRyYWl0cywgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpLCBt
X3BsYXRmb3JtRGF0YS5zeW50aGV0aWNPYmxpcXVlKCkpOwogfQogCi1mbG9hdCBGb250OjpwbGF0
Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CitHbHlwaEJ1ZmZlckFkdmFuY2Ug
Rm9udDo6cGxhdGZvcm1BZHZhbmNlRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CiB7CiAgICAg
Q0dTaXplIGFkdmFuY2UgPSBDR1NpemVaZXJvOwogCkBAIC01NzksNyArNTgwLDkgQEAgZmxvYXQg
Rm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgICAgICAg
ICAgQ1RGb250R2V0QWR2YW5jZXNGb3JHbHlwaHMobV9wbGF0Zm9ybURhdGEuY3RGb250KCksIG9y
aWVudGF0aW9uLCAmZ2x5cGgsICZhZHZhbmNlLCAxKTsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gYWR2YW5jZS53aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKKworICAgIGFkdmFu
Y2Uud2lkdGggKz0gbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgIHJldHVybiBhZHZhbmNlOwog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YUNHV2luLmNwcAppbmRleCA2MGQzMzAyY2IyZjhkNWMx
YTQyMDc0MmRlYTU4MzJkNDRhNTliYTA4Li4zMTkxZDJmNTE2NDcwYmRlMGRmMTQ4ZWIyYWVmMjkx
ZmM4OTFmZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2ltcGxlRm9udERhdGFDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhQ0dXaW4uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRl
ICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJHbHlwaEJ1ZmZlck1lbWJlcnMuaCIKICNp
bmNsdWRlICJHbHlwaFBhZ2UuaCIKICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJPcGVu
VHlwZUNHLmgiCkBAIC0xMTIsMTMgKzExMywxMyBAQCB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgp
CiAgICAgbV9mb250TWV0cmljcy5zZXRVbml0c1BlckVtKHVuaXRzUGVyRW0pOwogfQogCi1mbG9h
dCBGb250OjpwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNvbnN0CitHbHlwaEJ1
ZmZlckFkdmFuY2UgRm9udDo6cGxhdGZvcm1BZHZhbmNlRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNv
bnN0CiB7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEoKS5zaXplKCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOwogCiAgICAgaWYgKG1f
cGxhdGZvcm1EYXRhLnVzZUdESSgpKQotICAgICAgICByZXR1cm4gd2lkdGhGb3JHRElHbHlwaChn
bHlwaCk7CisgICAgICAgIHJldHVybiBtYWtlR3lwaEJ1ZmZlckFkdmFuY2Uod2lkdGhGb3JHRElH
bHlwaChnbHlwaCkpOwogCiAgICAgQ0dGb250UmVmIGZvbnQgPSBtX3BsYXRmb3JtRGF0YS5jZ0Zv
bnQoKTsKICAgICBmbG9hdCBwb2ludFNpemUgPSBtX3BsYXRmb3JtRGF0YS5zaXplKCk7CkBAIC0x
MjgsNyArMTI5LDkgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0aEZvckdseXBoKEdseXBoIGds
eXBoKSBjb25zdAogICAgIGJvb2wgaXNQcmludGVyRm9udCA9IGZhbHNlOwogICAgIEZvbnRDYXNj
YWRlOjpnZXRQbGF0Zm9ybUdseXBoQWR2YW5jZXMoZm9udCwgbSwgbV9wbGF0Zm9ybURhdGEuaXNT
eXN0ZW1Gb250KCksIGlzUHJpbnRlckZvbnQsIGdseXBoLCBhZHZhbmNlKTsKIAotICAgIHJldHVy
biBhZHZhbmNlLndpZHRoICsgbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworICAgIGFkdmFuY2Uud2lk
dGggKz0gbV9zeW50aGV0aWNCb2xkT2Zmc2V0OworCisgICAgcmV0dXJuIGFkdmFuY2U7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1w
bGVGb250RGF0YURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9TaW1wbGVGb250RGF0YURpcmVjdDJELmNwcAppbmRleCA4YWFlOWVhZWViYTJiOTNmMmM0
N2U3YWFkNzI4OTFhNjc5MDRjMDk3Li5kZTA5YjIyZGU4YjJkNDQ1NWQ5OWNhZWFkNGRmNTA5NTM0
ODRmNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
U2ltcGxlRm9udERhdGFEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhRGlyZWN0MkQuY3BwCkBAIC0xNzcsMTMgKzE3Nywx
MyBAQCBGbG9hdFJlY3QgRm9udDo6cGxhdGZvcm1Cb3VuZHNGb3JHbHlwaChHbHlwaCBnbHlwaCkg
Y29uc3QKICAgICByZXR1cm4gYm91bmRpbmdCb3g7CiB9CiAKLWZsb2F0IEZvbnQ6OnBsYXRmb3Jt
V2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK0dseXBoQnVmZmVyQWR2YW5jZSBGb250
OjpwbGF0Zm9ybUFkdmFuY2VGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKIHsKICAgICBpZiAo
IXBsYXRmb3JtRGF0YSgpLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBtYWtlR2x5cGhCdWZmZXJBZHZhbmNlKCk7CiAKICAgICBpZiAobV9wbGF0Zm9ybURhdGEudXNl
R0RJKCkpCi0gICAgICAgIHJldHVybiB3aWR0aEZvckdESUdseXBoKGdseXBoKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2Uod2lkdGhGb3JHRElHbHlwaChnbHlwaCkpOwog
CiAgICAgYXV0byBmb250ID0gbV9wbGF0Zm9ybURhdGEuZHdGb250KCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoZm9udCk7CkBAIC0yMDQsNyArMjA0LDcgQEAgZmxvYXQgRm9udDo6cGxhdGZvcm1XaWR0
aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogICAgIHVuc2lnbmVkIHVuaXRzUGVyRW0gPSBt
X2ZvbnRNZXRyaWNzLnVuaXRzUGVyRW0oKTsKICAgICBmbG9hdCB3aWR0aCA9IHNjYWxlRW1Ub1Vu
aXRzKHdpZHRoSW5FbSwgdW5pdHNQZXJFbSkgKiBwb2ludFNpemU7CiAKLSAgICByZXR1cm4gd2lk
dGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQ7CisgICAgcmV0dXJuIG1ha2VHbHlwaEJ1ZmZlckFk
dmFuY2Uod2lkdGggKyBtX3N5bnRoZXRpY0JvbGRPZmZzZXQsIG1ldHJpY3MuYWR2YW5jZUhlaWdo
dCk7CiB9CiAKIFBhdGggRm9udDo6cGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5k
ZXggMWQyODc3NjY2MjFlYzNkZWU0NDliODA0ZTM2Mzg1YTYzYmI3ZTllMS4uYmM4ODg2YzkwNzJm
NTIyNTFlNmVkMDJhMmRiNWU5ZjUzOTdmN2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9yLmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZ2V0QXNjZW50QW5kRGVzY2VudEZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYg
ZGF0YSwgTGF5b3V0VW5pdAogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGFkdmFuY2VXaWR0aEZvckds
eXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gZGF0YS5mb250ID8gZGF0
YS5mb250LT53aWR0aEZvckdseXBoKGRhdGEuZ2x5cGgpIDogMDsKKyAgICByZXR1cm4gZGF0YS5m
b250ID8gd2lkdGgoZGF0YS5mb250LT5hZHZhbmNlRm9yR2x5cGgoZGF0YS5nbHlwaCkpIDogMDsK
IH0KIAogLy8gRklYTUU6IFRoaXMgaGFyZGNvZGVkIGRhdGEgY2FuIGJlIHJlbW92ZWQgd2hlbiBP
cGVuVHlwZSBNQVRIIGZvbnQgYXJlIHdpZGVseSBhdmFpbGFibGUgKGh0dHA6Ly93a2J1Zy8xNTY4
MzcpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCBmZjQxYzUwODEwYzZjOTkwMDk2NDYyMjE2MDE1MDUz
NWQwMGM5MjVkLi4xODAyNGMyMzVkZDQ1ZjcwMTk1NmY5MGE0Y2EyNjM2NTkyZWZmY2E5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgaWYgKGlzSW52aXNp
YmxlT3BlcmF0b3IoKSkgewogICAgICAgICAgICAgLy8gSW4gc29tZSBmb250cywgZ2x5cGhzIGZv
ciBpbnZpc2libGUgb3BlcmF0b3JzIGhhdmUgbm9uemVybyB3aWR0aC4gQ29uc2VxdWVudGx5LCB3
ZSBzdWJ0cmFjdCB0aGF0IHdpZHRoIGhlcmUgdG8gYXZvaWQgd2lkZSBnYXBzLgogICAgICAgICAg
ICAgR2x5cGhEYXRhIGRhdGEgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKHRleHRDb250ZW50KCksIGZhbHNlKTsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoV2lk
dGggPSBkYXRhLmZvbnQgPyBkYXRhLmZvbnQtPndpZHRoRm9yR2x5cGgoZGF0YS5nbHlwaCkgOiAw
OworICAgICAgICAgICAgZmxvYXQgZ2x5cGhXaWR0aCA9IGRhdGEuZm9udCA/IFdlYkNvcmU6Ondp
ZHRoKGRhdGEuZm9udC0+YWR2YW5jZUZvckdseXBoKGRhdGEuZ2x5cGgpKSA6IDA7CiAgICAgICAg
ICAgICBBU1NFUlQoZ2x5cGhXaWR0aCA8PSBwcmVmZXJyZWRXaWR0aCk7CiAgICAgICAgICAgICBw
cmVmZXJyZWRXaWR0aCAtPSBnbHlwaFdpZHRoOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDdj
YzliN2Q0MTYyNDk1NDAwYTU4NWMxNDVjNDI3NGJlNDczMGU3MjMuLjQ0NDE3ZWQ2NDA4ZDAxMzE4
YzVhMjJmODcyM2Y3MDIxNDE4NTU4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01MDYsNyArNTA2LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQog
ICAgIGlmIChtX21hdGhWYXJpYW50Q29kZVBvaW50KSB7CiAgICAgICAgIGF1dG8gbWF0aFZhcmlh
bnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JDaGFyYWN0ZXIobV9t
YXRoVmFyaWFudENvZGVQb2ludC52YWx1ZSgpLCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCk7CiAg
ICAgICAgIGlmIChtYXRoVmFyaWFudEdseXBoLmZvbnQpIHsKLSAgICAgICAgICAgIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBtYXRoVmFy
aWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCk7Cisg
ICAgICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoID0gV2ViQ29yZTo6d2lkdGgobWF0aFZhcmlhbnRHbHlwaC5mb250LT5hZHZhbmNl
Rm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOwogICAgICAgICAgICAgc2V0UHJlZmVy
cmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhCiAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nQm94KCkpCiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAg
c2V0TG9naWNhbFdpZHRoKExheW91dFVuaXQobWF0aFZhcmlhbnRHbHlwaC5mb250LT53aWR0aEZv
ckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpKSk7CisgICAgc2V0TG9naWNhbFdpZHRoKExh
eW91dFVuaXQoV2ViQ29yZTo6d2lkdGgobWF0aFZhcmlhbnRHbHlwaC5mb250LT5hZHZhbmNlRm9y
R2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpKSk7CiAgICAgc2V0TG9naWNhbEhlaWdodChM
YXlvdXRVbml0KG1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlh
bnRHbHlwaC5nbHlwaCkuaGVpZ2h0KCkpKTsKIAogICAgIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCgpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnBhaW50
KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAg
TGF5b3V0VW5pdCBnbHlwaEFzY2VudCA9IHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZh
cmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55
KCkpKTsKICAgICAvLyBGSVhNRTogSWYgd2UncmUganVzdCBkcmF3aW5nIGEgc2luZ2xlIGdseXBo
LCB3aHkgZG8gd2UgbmVlZCB0byBjb21wdXRlIGFuIGFkdmFuY2U/Ci0gICAgYXV0byBhZHZhbmNl
ID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZShtYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9y
R2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkpOworICAgIGF1dG8gYWR2YW5jZSA9IG1hdGhW
YXJpYW50R2x5cGguZm9udC0+YWR2YW5jZUZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgp
OwogICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoKm1hdGhWYXJpYW50R2x5cGguZm9udCwg
Jm1hdGhWYXJpYW50R2x5cGguZ2x5cGgsICZhZHZhbmNlLCAxLCBwYWludE9mZnNldCArIGxvY2F0
aW9uKCkgKyBMYXlvdXRQb2ludCgwX2x1LCBnbHlwaEFzY2VudCksIHN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5mb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpOwogfQogCg==
</data>
<flag name="commit-queue"
          id="456763"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>