<?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>215051</bug_id>
          
          <creation_ts>2020-08-01 00:08:26 -0700</creation_ts>
          <short_desc>Unconditionally record string offsets in the fast text codepath</short_desc>
          <delta_ts>2020-08-09 00:06:57 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206208</blocked>
    
    <blocked>214769</blocked>
    
    <blocked>215059</blocked>
    
    <blocked>215302</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1677088</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-01 00:08:26 -0700</bug_when>
    <thetext>Unconditionally record string offsets in the fast text codepath</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677089</commentid>
    <comment_count>1</comment_count>
      <attachid>405770</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-01 00:16:52 -0700</bug_when>
    <thetext>Created attachment 405770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677093</commentid>
    <comment_count>2</comment_count>
      <attachid>405773</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-01 00:36:44 -0700</bug_when>
    <thetext>Created attachment 405773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677099</commentid>
    <comment_count>3</comment_count>
      <attachid>405776</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-01 00:48:24 -0700</bug_when>
    <thetext>Created attachment 405776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677197</commentid>
    <comment_count>4</comment_count>
      <attachid>405776</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-01 21:03:09 -0700</bug_when>
    <thetext>Comment on attachment 405776
Patch

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

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:1266
&gt; -        ASSERT_WITH_SECURITY_IMPLICATION(offsetInString &lt; textRun.length());
&gt; +        RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(offsetInString &lt; static_cast&lt;GlyphBufferStringOffset&gt;(textRun.length()));

Changing this to a RELEASE_ASSERT makes it unnecessary to have it inside an if statement that checks the same thing. Just put this outside the if and don’t check this in the if.

&gt; Source/WebCore/platform/graphics/FontCascade.cpp:1273
&gt; +        U16_NEXT(textRun.characters16(), offsetInString, static_cast&lt;GlyphBufferStringOffset&gt;(textRun.length()), baseCharacter);

Can we put static_cast&lt;GlyphBufferStringOffset&gt;(textRun.length()) in a local variable? The long expression makes it hard to see what is going on. And we could probably convert without a cast if we used a local. And we use it twice, once here and once in the assertion.

Also, seems like this should be U16_GET, not U16_NEXT. We don’t want to bump offsetInString. And if we did, we’d have to do it in the 8-bit case above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677565</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-03 21:50:04 -0700</bug_when>
    <thetext>Committed r265241: &lt;https://trac.webkit.org/changeset/265241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677566</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-03 21:51:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66507427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678950</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-08 23:40:08 -0700</bug_when>
    <thetext>Committed r265414: &lt;https://trac.webkit.org/changeset/265414&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405770</attachid>
            <date>2020-08-01 00:16:52 -0700</date>
            <delta_ts>2020-08-01 00:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215051-20200801001651.patch</filename>
            <type>text/plain</type>
            <size>18193</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQzMzUzZmU1ZThjOTRh
NWQ1ZmNkOTgzNTc4YWNmOTQzYTIzM2M5Mi4uZjQzMGYwN2UxNGU3N2Q2NDkxNmYzNDM5ZDk5YWYx
YzRkNWU0YTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA4LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5jb25kaXRp
b25hbGx5IHJlY29yZCBzdHJpbmcgb2Zmc2V0cyBpbiB0aGUgZmFzdCB0ZXh0IGNvZGVwYXRoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGlu
IHByZXBhcmF0aW9uIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0NzY5CisgICAgICAgIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MjA4LgorCisgICAgICAgIFRoZSBzb2x1dGlvbiBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OSByZXF1aXJlcyBhcHBseWluZworICAgICAgICBs
ZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0IHNoYXBpbmcuIFRvZGF5LCB3ZSBhcHBseSBsZXR0ZXIt
c3BhY2luZyBiZWZvcmUgdGV4dAorICAgICAgICBzaGFwaW5nLCB3aGljaCBpcyB3cm9uZy4gSG93
ZXZlciwgaWYgd2Ugd2FudCB0byBhcHBseSBsZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0CisgICAg
ICAgIHNoYXBpbmcsIHdlIHdpbGwgbmVlZCBhIHdheSBvZiBtYXBwaW5nIGJhY2sgd2hpY2ggc2hh
cGVkIGdseXBocyBjb3JyZXNwb25kIHRvCisgICAgICAgIHdoaWNoIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZywgc28gd2UgY2FuIGFwcGx5IGxldHRlci1zcGFjaW5nIHRvIHRoZSBjb3JyZWN0Cisg
ICAgICAgIGdseXBocy4gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIHJlY29yZCBzdHJpbmcgb2Zmc2V0
cyBhbnkgdGltZSBsZXR0ZXItc3BhY2luZyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCAod2hpY2gg
aXMgYWxsIHRoZSB0aW1lIC0gbGV0dGVyIHNwYWNpbmcgY2FuIGJlIGFwcGxpZWQgb24gYW55IGVs
ZW1lbnQpLgorCisgICAgICAgIFRoaXMgYWxzbyBoZWxwcyBvbiB0aGUgcGF0aCB0b3dhcmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OS4KKyAgICAgICAgV2hl
biB3ZSBtb3ZlIG9mZiB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLCB3ZSB3aWxsIG5lZWQgdGhl
c2Ugc3RyaW5nIG9mZnNldHMKKyAgICAgICAgdG8gY2FsY3VsYXRlIHRoaW5ncyBsaWtlIHdoYXQg
dGhlIHRleHQgcmFuZ2Ugb2YgYSBzZWxlY3Rpb24gaXMgd2hlbiB0aGUgdXNlciBoYXMKKyAgICAg
ICAgc2VsZWN0ZWQgc29tZSBnbHlwaHMgb24gdGhlIHBhZ2UuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLiBUaGUgYWRkaXRpb25hbCBz
dHJpbmcgb2Zmc2V0cworICAgICAgICBhcmUgdW51c2VkIChmb3Igbm93KS4gQSBzdWJzZXF1ZW50
IHBhdGNoIHdpbGwgc3RhcnQgdXNpbmcgdGhlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpsYXlv
dXRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFz
aXNNYXJrcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0Q29tcGxleFRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNX
aXRoUmVjdCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVm
ZmVyOjpmb250cyk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6b2Zmc2V0c0luU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpmb250cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6b2Zmc2V0c0luU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpnbHlwaEF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdseXBoQnVmZmVyOjphZHZhbmNlQXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5
cGhCdWZmZXI6OnN0cmluZ09mZnNldEF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
QnVmZmVyOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OnJlbW92ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6bWFrZUhvbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R2x5cGhCdWZmZXI6OmV4cGFuZExhc3RBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoQnVmZmVyOjpzaHJpbmspOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OnN3YXAp
OgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6OnNhdmVPZmZzZXRzSW5TdHJpbmcpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6Om9mZnNldEluU3RyaW5nIGNv
bnN0KTogRGVsZXRlZC4KKwogMjAyMC0wNy0zMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHRleHQgbGF5b3V0IGNvZGUgYSBiaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApp
bmRleCA2ODgwNzI2MDNjMDEzMWYyYjZiZTUwY2ZlMDdmMzMyNjc3ZWM4ODRhLi41NzVjZWNhNGUx
OTBhY2UwMGMwZDU3MGNmZDc4NDNjYjZhNmExY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI4NSwxMiArMjg1LDEyIEBAIHZvaWQgRm9udENhc2NhZGU6OnVwZGF0ZShS
ZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29uc3QKICAgICBtX3JlcXVpcmVz
U2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKTsKIH0KIAotR2x5cGhCdWZmZXIgRm9u
dENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgc2hv
dWxkU2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29u
c3QKK0dseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRo
VG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEZv
clRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKICAgICBpZiAoY29k
ZVBhdGhUb1VzZSAhPSBDb21wbGV4KQotICAgICAgICByZXR1cm4gbGF5b3V0U2ltcGxlVGV4dChy
dW4sIGZyb20sIHRvLCBzaG91bGRTYXZlT2Zmc2V0cywgZm9yVGV4dEVtcGhhc2lzKTsKKyAgICAg
ICAgcmV0dXJuIGxheW91dFNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZm9yVGV4dEVtcGhhc2lz
KTsKIAotICAgIHJldHVybiBsYXlvdXRDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBzaG91bGRT
YXZlT2Zmc2V0cywgZm9yVGV4dEVtcGhhc2lzKTsKKyAgICByZXR1cm4gbGF5b3V0Q29tcGxleFRl
eHQocnVuLCBmcm9tLCB0bywgZm9yVGV4dEVtcGhhc2lzKTsKIH0KIAogZmxvYXQgRm9udENhc2Nh
ZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSBjb25zdApAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAKICAg
ICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKIAotICAg
IGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBy
dW4sIGZyb20sIGRlc3RpbmF0aW9uLCBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBo
YXNpc09yTm90OjpGb3JUZXh0RW1waGFzaXMpOworICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlv
dXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBG
b3JUZXh0RW1waGFzaXNPck5vdDo6Rm9yVGV4dEVtcGhhc2lzKTsKIAogICAgIGlmIChnbHlwaEJ1
ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyNTksMTEgKzEyNTksMTEgQEAg
c3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBUZXh0
UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHkKICAgICAvLyBzbyB3ZSB3YW50IHRvIGRyYXcgdGhyb3Vn
aCBDSksgY2hhcmFjdGVycyAob24gYSBjaGFyYWN0ZXItYnktY2hhcmFjdGVyIGJhc2lzKS4KICAg
ICAvLyBGSVhNRTogVGhlIENTUyBzcGVjIHNheXMgdGhpcyBzaG91bGQgaW5zdGVhZCBiZSBkb25l
IGJ5IHRoZSB1c2VyLWFnZW50IHN0eWxlc2hlZXQgdXNpbmcgdGhlIGxhbmc9IGF0dHJpYnV0ZS4K
ICAgICBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXI7Ci0gICAgdW5zaWduZWQgb2Zmc2V0SW5TdHJpbmcg
PSBnbHlwaEJ1ZmZlci5vZmZzZXRJblN0cmluZyhpbmRleCk7CisgICAgYXV0byBvZmZzZXRJblN0
cmluZyA9IGdseXBoQnVmZmVyLnN0cmluZ09mZnNldEF0KGluZGV4KTsKIAotICAgIGlmIChvZmZz
ZXRJblN0cmluZyA9PSBHbHlwaEJ1ZmZlcjo6bm9PZmZzZXQgfHwgb2Zmc2V0SW5TdHJpbmcgPj0g
dGV4dFJ1bi5sZW5ndGgoKSkgeworICAgIGlmIChvZmZzZXRJblN0cmluZyA9PSBHbHlwaEJ1ZmZl
cjo6bm9PZmZzZXQgfHwgb2Zmc2V0SW5TdHJpbmcgPj0gc3RhdGljX2Nhc3Q8R2x5cGhCdWZmZXJT
dHJpbmdPZmZzZXQ+KHRleHRSdW4ubGVuZ3RoKCkpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgbm8g
aWRlYSB3aGljaCBjaGFyYWN0ZXIgc3Bhd25lZCB0aGlzIGdseXBoLiBCYWlsLgotICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvZmZzZXRJblN0cmluZyA8IHRleHRSdW4u
bGVuZ3RoKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKG9mZnNldEluU3RyaW5nIDwgc3RhdGljX2Nhc3Q8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+
KHRleHRSdW4ubGVuZ3RoKCkpKTsKICAgICAgICAgcmV0dXJuIEdseXBoVW5kZXJsaW5lVHlwZTo6
RHJhd092ZXJHbHlwaDsKICAgICB9CiAgICAgCkBAIC0xMzY5LDExICsxMzY5LDkgQEAgaW50IEZv
bnRDYXNjYWRlOjplbXBoYXNpc01hcmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29u
c3QKICAgICByZXR1cm4gbWFya0ZvbnREYXRhLT5mb250TWV0cmljcygpLmhlaWdodCgpOwogfQog
Ci1HbHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBTaG91bGRTYXZlT2Zmc2V0cyBzaG91
bGRTYXZlT2Zmc2V0cywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25z
dAorR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3Qg
Zm9yVGV4dEVtcGhhc2lzKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwot
ICAgIGlmIChzaG91bGRTYXZlT2Zmc2V0cyA9PSBTaG91bGRTYXZlT2Zmc2V0czo6WWVzKQotICAg
ICAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zmc2V0c0luU3RyaW5nKCk7CiAKICAgICBXaWR0aEl0ZXJh
dG9yIGl0KHRoaXMsIHJ1biwgMCwgZmFsc2UsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgLy8gRklY
TUU6IFVzaW5nIHNlcGFyYXRlIGdseXBoIGJ1ZmZlcnMgZm9yIHRoZSBwcmVmaXggYW5kIHRoZSBz
dWZmaXggaXMgaW5jb3JyZWN0IHdoZW4ga2VybmluZyBvcgpAQCAtMTQwMywxMSArMTQwMSw5IEBA
IEdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwgdW5zaWduZWQgZnJvbSwgdW5zCiAgICAgcmV0dXJuIGdseXBoQnVmZmVyOwogfQogCi1H
bHlwaEJ1ZmZlciBGb250Q2FzY2FkZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgc2hvdWxk
U2F2ZU9mZnNldHMsIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QK
K0dseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBm
b3JUZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0g
ICAgaWYgKHNob3VsZFNhdmVPZmZzZXRzID09IFNob3VsZFNhdmVPZmZzZXRzOjpZZXMpCi0gICAg
ICAgIGdseXBoQnVmZmVyLnNhdmVPZmZzZXRzSW5TdHJpbmcoKTsKIAogICAgIENvbXBsZXhUZXh0
Q29udHJvbGxlciBjb250cm9sbGVyKCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0RW1waGFz
aXMpOwogICAgIEdseXBoQnVmZmVyIGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNzc3LDcgKzE3NzMs
NyBAQCBEYXNoQXJyYXkgRm9udENhc2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVj
dChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRz
KCkpCiAgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKIAotICAgIGF1dG8gZ2x5cGhCdWZmZXIg
PSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biksIHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBTaG91bGRT
YXZlT2Zmc2V0czo6WWVzKTsKKyAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2Rl
UGF0aChydW4pLCBydW4sIDAsIHJ1bi5sZW5ndGgoKSk7CiAKICAgICBpZiAoIWdseXBoQnVmZmVy
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIERhc2hBcnJheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKaW5kZXggOTU5ZDhmMzMxOTM5Nzc5MTA2
ZjhhNjk2MDUyNjk1NTMzYzg2NWM1ZC4uNzdjYjE2YWI0OTBiNTFiZmU0NTM3MzU2MmNkNmY0NDI2
ZWZmMWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yMDMsMTMgKzIwMyw5IEBAIHB1YmxpYzoKICNl
bmRpZgogcHJpdmF0ZToKICAgICBlbnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4
dEVtcGhhc2lzLCBGb3JUZXh0RW1waGFzaXMgfTsKLSAgICBlbnVtIGNsYXNzIFNob3VsZFNhdmVP
ZmZzZXRzIDogdWludDhfdCB7Ci0gICAgICAgIFllcywKLSAgICAgICAgTm8KLSAgICB9OwogCi0g
ICAgR2x5cGhCdWZmZXIgbGF5b3V0VGV4dChDb2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBTaG91bGRTYXZlT2Zmc2V0cyA9IFNob3VsZFNhdmVPZmZz
ZXRzOjpObywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0
OwotICAgIEdseXBoQnVmZmVyIGxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBTaG91bGRTYXZlT2Zmc2V0cyA9IFNob3VsZFNhdmVPZmZz
ZXRzOjpObywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0
OworICAgIEdseXBoQnVmZmVyIGxheW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1
bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JU
ZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEdseXBoQnVmZmVyIGxheW91dFNpbXBsZVRleHQoY29u
c3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNP
ck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3R2x5cGhCdWZm
ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JiwgQ3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxl
VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMg
PSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpAQCAtMjIxLDcgKzIxNyw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgY2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0
KCk7CiAgICAgc3RhdGljIGJvb2wgY2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRl
eHQoKTsKIAotICAgIEdseXBoQnVmZmVyIGxheW91dENvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4m
LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRT
YXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lz
KSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90
Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yQ29tcGxleFRl
eHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0g
MCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25G
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNv
bXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCBlNDViNjgxZjEyMzczYzMwMzhjZjhiNmI3
YmEzMTM0NDViYzUzNGM4Li41YjVkNzQ2Y2EzNjY4OTQwNzVkYWRlNzQ5ODg0ZGZmZmM5NDBhODE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5LCAyMDExLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDA4IFRvcmNoIE1vYmlsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiR2x5cGguaCIKICNpbmNs
dWRlIDxjbGltaXRzPgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKICNpZiBVU0UoQ0cpCkBAIC01MSw2ICs1Miw3IEBAIHR5cGVkZWYgR2x5cGggR2x5cGhCdWZm
ZXJHbHlwaDsKIC8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2YgRmxvYXRTaXplIHNvIHRoYXQg
dGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCiAvLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIENH
Q29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQogI2lmIFVTRShDRykK
Kwogc3RydWN0IEdseXBoQnVmZmVyQWR2YW5jZSA6IENHU2l6ZSB7CiBwdWJsaWM6CiAgICAgR2x5
cGhCdWZmZXJBZHZhbmNlKCkgOiBDR1NpemUoQ0dTaXplWmVybykgeyB9CkBAIC0xMDAsOSArMTAy
LDE1IEBAIE9wdGlvbmFsPEdseXBoQnVmZmVyQWR2YW5jZT4gR2x5cGhCdWZmZXJBZHZhbmNlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAgIHJldHVybiBHbHlwaEJ1ZmZlckFkdmFuY2Uo
Q0dTaXplTWFrZSgqd2lkdGgsICpoZWlnaHQpKTsKIH0KKwordXNpbmcgR2x5cGhCdWZmZXJTdHJp
bmdPZmZzZXQgPSBDRkluZGV4OworCiAjZWxzZQotdHlwZWRlZiBGbG9hdFNpemUgR2x5cGhCdWZm
ZXJBZHZhbmNlOwotI2VuZGlmCisKK3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6
ZTsKK3VzaW5nIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0ID0gQ0ZJbmRleDsKKworI2VuZGlmIC8v
ICNpZiBVU0UoQ0cpCiAKIGlubGluZSBGbG9hdFNpemUgdG9GbG9hdFNpemUoY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlJiBhKQogewpAQCAtMTE5LDQ5ICsxMjcsNDEgQEAgcHVibGljOgogICAgICAg
ICBtX2ZvbnRzLmNsZWFyKCk7CiAgICAgICAgIG1fZ2x5cGhzLmNsZWFyKCk7CiAgICAgICAgIG1f
YWR2YW5jZXMuY2xlYXIoKTsKLSAgICAgICAgaWYgKG1fb2Zmc2V0c0luU3RyaW5nKQotICAgICAg
ICAgICAgbV9vZmZzZXRzSW5TdHJpbmctPmNsZWFyKCk7CisgICAgICAgIG1fb2Zmc2V0c0luU3Ry
aW5nLmNsZWFyKCk7CiAgICAgfQogCisgICAgY29uc3QgRm9udCoqIGZvbnRzKHVuc2lnbmVkIGZy
b20pIHsgcmV0dXJuIG1fZm9udHMuZGF0YSgpICsgZnJvbTsgfQogICAgIEdseXBoQnVmZmVyR2x5
cGgqIGdseXBocyh1bnNpZ25lZCBmcm9tKSB7IHJldHVybiBtX2dseXBocy5kYXRhKCkgKyBmcm9t
OyB9CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcyh1bnNpZ25lZCBmcm9tKSB7IHJl
dHVybiBtX2FkdmFuY2VzLmRhdGEoKSArIGZyb207IH0KKyAgICBHbHlwaEJ1ZmZlclN0cmluZ09m
ZnNldCogb2Zmc2V0c0luU3RyaW5nKHVuc2lnbmVkIGZyb20pIHsgcmV0dXJuIG1fb2Zmc2V0c0lu
U3RyaW5nLmRhdGEoKSArIGZyb207IH0KKyAgICBjb25zdCBGb250KiBjb25zdCAqIGZvbnRzKHVu
c2lnbmVkIGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fZm9udHMuZGF0YSgpICsgZnJvbTsgfQogICAg
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyh1bnNpZ25lZCBmcm9tKSBjb25zdCB7IHJl
dHVybiBtX2dseXBocy5kYXRhKCkgKyBmcm9tOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJBZHZh
bmNlKiBhZHZhbmNlcyh1bnNpZ25lZCBmcm9tKSBjb25zdCB7IHJldHVybiBtX2FkdmFuY2VzLmRh
dGEoKSArIGZyb207IH0KKyAgICBjb25zdCBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCogb2Zmc2V0
c0luU3RyaW5nKHVuc2lnbmVkIGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0c0luU3RyaW5n
LmRhdGEoKSArIGZyb207IH0KIAogICAgIGNvbnN0IEZvbnQqIGZvbnRBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9mb250c1tpbmRleF07IH0KKyAgICBHbHlwaCBnbHlwaEF0KHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2dseXBoc1tpbmRleF07IH0KKyAgICBHbHlw
aEJ1ZmZlckFkdmFuY2UgYWR2YW5jZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2FkdmFuY2VzW2luZGV4XTsgfQorICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IHN0cmluZ09m
ZnNldEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX29mZnNldHNJblN0cmluZ1tp
bmRleF07IH0KIAogICAgIHZvaWQgc2V0SW5pdGlhbEFkdmFuY2UoR2x5cGhCdWZmZXJBZHZhbmNl
IGluaXRpYWxBZHZhbmNlKSB7IG1faW5pdGlhbEFkdmFuY2UgPSBpbml0aWFsQWR2YW5jZTsgfQog
ICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgaW5pdGlhbEFkdmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYWxBZHZhbmNlOyB9CiAgICAgCi0gICAgR2x5cGggZ2x5cGhBdCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2dseXBoc1tpbmRleF07Ci0g
ICAgfQotCi0gICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2VBdCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2FkdmFuY2VzW2luZGV4XTsKLSAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG5vT2Zmc2V0ID0gVUlOVF9NQVg7Ci0gICAg
dm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IEZvbnQqIGZvbnQsIGZsb2F0IHdpZHRoLCB1bnNp
Z25lZCBvZmZzZXRJblN0cmluZyA9IG5vT2Zmc2V0KQorICAgIHN0YXRpYyBjb25zdGV4cHIgR2x5
cGhCdWZmZXJTdHJpbmdPZmZzZXQgbm9PZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0Pjo6bWF4KCk7CisgICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNv
bnN0IEZvbnQqIGZvbnQsIGZsb2F0IHdpZHRoLCBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBvZmZz
ZXRJblN0cmluZyA9IG5vT2Zmc2V0KQogICAgIHsKICAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNl
IGFkdmFuY2U7CiAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgod2lkdGgpOwogICAgICAgICBhZHZh
bmNlLnNldEhlaWdodCgwKTsKLQogICAgICAgICBhZGQoZ2x5cGgsIGZvbnQsIGFkdmFuY2UsIG9m
ZnNldEluU3RyaW5nKTsKICAgICB9CiAKLSAgICB2b2lkIGFkZChHbHlwaCBnbHlwaCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFuY2UsIHVuc2lnbmVkIG9mZnNldElu
U3RyaW5nKQorICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBGb250KiBmb250LCBHbHlw
aEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSwgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgb2Zmc2V0SW5T
dHJpbmcpCiAgICAgewogICAgICAgICBtX2ZvbnRzLmFwcGVuZChmb250KTsKICAgICAgICAgbV9n
bHlwaHMuYXBwZW5kKGdseXBoKTsKLQogICAgICAgICBtX2FkdmFuY2VzLmFwcGVuZChhZHZhbmNl
KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChvZmZzZXRJblN0cmluZyAhPSBub09mZnNldCAmJiBt
X29mZnNldHNJblN0cmluZykKLSAgICAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLT5hcHBlbmQo
b2Zmc2V0SW5TdHJpbmcpOworICAgICAgICBtX29mZnNldHNJblN0cmluZy5hcHBlbmQob2Zmc2V0
SW5TdHJpbmcpOwogICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIGxvY2F0aW9uLCB1
bnNpZ25lZCBsZW5ndGgpCkBAIC0xNjksOCArMTY5LDcgQEAgcHVibGljOgogICAgICAgICBtX2Zv
bnRzLnJlbW92ZShsb2NhdGlvbiwgbGVuZ3RoKTsKICAgICAgICAgbV9nbHlwaHMucmVtb3ZlKGxv
Y2F0aW9uLCBsZW5ndGgpOwogICAgICAgICBtX2FkdmFuY2VzLnJlbW92ZShsb2NhdGlvbiwgbGVu
Z3RoKTsKLSAgICAgICAgaWYgKG1fb2Zmc2V0c0luU3RyaW5nKQotICAgICAgICAgICAgbV9vZmZz
ZXRzSW5TdHJpbmctPnJlbW92ZShsb2NhdGlvbiwgbGVuZ3RoKTsKKyAgICAgICAgbV9vZmZzZXRz
SW5TdHJpbmcucmVtb3ZlKGxvY2F0aW9uLCBsZW5ndGgpOwogICAgIH0KIAogICAgIHZvaWQgbWFr
ZUhvbGUodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udCogZm9u
dCkKQEAgLTE4MCw4ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9udHMuaW5zZXJ0VmVj
dG9yKGxvY2F0aW9uLCBWZWN0b3I8Y29uc3QgRm9udCo+KGxlbmd0aCwgZm9udCkpOwogICAgICAg
ICBtX2dseXBocy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBo
PihsZW5ndGgsIDB4RkZGRikpOwogICAgICAgICBtX2FkdmFuY2VzLmluc2VydFZlY3Rvcihsb2Nh
dGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZT4obGVuZ3RoLCBHbHlwaEJ1ZmZlckFkdmFu
Y2UoMCwgMCkpKTsKLSAgICAgICAgaWYgKG1fb2Zmc2V0c0luU3RyaW5nKQotICAgICAgICAgICAg
bV9vZmZzZXRzSW5TdHJpbmctPmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPHVuc2lnbmVk
PihsZW5ndGgsIDApKTsKKyAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuaW5zZXJ0VmVjdG9yKGxv
Y2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+KGxlbmd0aCwgMCkpOwogICAg
IH0KIAogICAgIHZvaWQgcmV2ZXJzZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpCkBA
IC0yMDQsNDggKzIwMiw0MCBAQCBwdWJsaWM6CiAgICAgICAgIGxhc3RBZHZhbmNlLnNldFdpZHRo
KGxhc3RBZHZhbmNlLndpZHRoKCkgKyBleHBhbnNpb24ud2lkdGgoKSk7CiAgICAgICAgIGxhc3RB
ZHZhbmNlLnNldEhlaWdodChsYXN0QWR2YW5jZS5oZWlnaHQoKSArIGV4cGFuc2lvbi5oZWlnaHQo
KSk7CiAgICAgfQotICAgIAotICAgIHZvaWQgc2F2ZU9mZnNldHNJblN0cmluZygpCi0gICAgewot
ICAgICAgICBtX29mZnNldHNJblN0cmluZy5yZXNldChuZXcgVmVjdG9yPHVuc2lnbmVkLCAyMDQ4
PigpKTsKLSAgICB9Ci0KLSAgICBpbnQgb2Zmc2V0SW5TdHJpbmcodW5zaWduZWQgaW5kZXgpIGNv
bnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9vZmZzZXRzSW5TdHJpbmcpOwotICAgICAgICBy
ZXR1cm4gKCptX29mZnNldHNJblN0cmluZylbaW5kZXhdOwotICAgIH0KIAogICAgIHZvaWQgc2hy
aW5rKHVuc2lnbmVkIHRydW5jYXRpb25Qb2ludCkKICAgICB7CiAgICAgICAgIG1fZm9udHMuc2hy
aW5rKHRydW5jYXRpb25Qb2ludCk7CiAgICAgICAgIG1fZ2x5cGhzLnNocmluayh0cnVuY2F0aW9u
UG9pbnQpOwogICAgICAgICBtX2FkdmFuY2VzLnNocmluayh0cnVuY2F0aW9uUG9pbnQpOwotICAg
ICAgICBpZiAobV9vZmZzZXRzSW5TdHJpbmcpCi0gICAgICAgICAgICBtX29mZnNldHNJblN0cmlu
Zy0+c2hyaW5rKHRydW5jYXRpb25Qb2ludCk7CisgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLnNo
cmluayh0cnVuY2F0aW9uUG9pbnQpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkIHN3YXAo
dW5zaWduZWQgaW5kZXgxLCB1bnNpZ25lZCBpbmRleDIpCiAgICAgewotICAgICAgICBjb25zdCBG
b250KiBmID0gbV9mb250c1tpbmRleDFdOworICAgICAgICBjb25zdCBGb250KiBmb250ID0gbV9m
b250c1tpbmRleDFdOwogICAgICAgICBtX2ZvbnRzW2luZGV4MV0gPSBtX2ZvbnRzW2luZGV4Ml07
Ci0gICAgICAgIG1fZm9udHNbaW5kZXgyXSA9IGY7CisgICAgICAgIG1fZm9udHNbaW5kZXgyXSA9
IGZvbnQ7CiAKLSAgICAgICAgR2x5cGhCdWZmZXJHbHlwaCBnID0gbV9nbHlwaHNbaW5kZXgxXTsK
KyAgICAgICAgR2x5cGhCdWZmZXJHbHlwaCBnbHlwaCA9IG1fZ2x5cGhzW2luZGV4MV07CiAgICAg
ICAgIG1fZ2x5cGhzW2luZGV4MV0gPSBtX2dseXBoc1tpbmRleDJdOwotICAgICAgICBtX2dseXBo
c1tpbmRleDJdID0gZzsKKyAgICAgICAgbV9nbHlwaHNbaW5kZXgyXSA9IGdseXBoOwogCi0gICAg
ICAgIEdseXBoQnVmZmVyQWR2YW5jZSBzID0gbV9hZHZhbmNlc1tpbmRleDFdOworICAgICAgICBH
bHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZSA9IG1fYWR2YW5jZXNbaW5kZXgxXTsKICAgICAgICAg
bV9hZHZhbmNlc1tpbmRleDFdID0gbV9hZHZhbmNlc1tpbmRleDJdOwotICAgICAgICBtX2FkdmFu
Y2VzW2luZGV4Ml0gPSBzOworICAgICAgICBtX2FkdmFuY2VzW2luZGV4Ml0gPSBhZHZhbmNlOwor
CisgICAgICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IG9mZnNldCA9IG1fb2Zmc2V0c0luU3Ry
aW5nW2luZGV4MV07CisgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nW2luZGV4MV0gPSBtX29mZnNl
dHNJblN0cmluZ1tpbmRleDJdOworICAgICAgICBtX29mZnNldHNJblN0cmluZ1tpbmRleDJdID0g
b2Zmc2V0OwogICAgIH0KIAotICAgIFZlY3Rvcjxjb25zdCBGb250KiwgMjA0OD4gbV9mb250czsK
LSAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMjA0OD4gbV9nbHlwaHM7Ci0gICAgVmVjdG9y
PEdseXBoQnVmZmVyQWR2YW5jZSwgMjA0OD4gbV9hZHZhbmNlczsKKyAgICBWZWN0b3I8Y29uc3Qg
Rm9udCosIDEwMjQ+IG1fZm9udHM7CisgICAgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEwMjQ+
IG1fZ2x5cGhzOworICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEwMjQ+IG1fYWR2YW5j
ZXM7CisgICAgVmVjdG9yPEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0LCAxMDI0PiBtX29mZnNldHNJ
blN0cmluZzsKICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgbV9pbml0aWFsQWR2YW5jZTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2lnbmVkLCAyMDQ4Pj4gbV9vZmZzZXRzSW5TdHJpbmc7
CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405773</attachid>
            <date>2020-08-01 00:36:44 -0700</date>
            <delta_ts>2020-08-01 00:48:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215051-20200801003643.patch</filename>
            <type>text/plain</type>
            <size>18684</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQzMzUzZmU1ZThjOTRh
NWQ1ZmNkOTgzNTc4YWNmOTQzYTIzM2M5Mi4uOGNhNzY2YjJkN2RiMWYwMTI1Y2MzZWU3NTQ5MDll
ODZiYzdjNTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA4LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5jb25kaXRp
b25hbGx5IHJlY29yZCBzdHJpbmcgb2Zmc2V0cyBpbiB0aGUgZmFzdCB0ZXh0IGNvZGVwYXRoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGlu
IHByZXBhcmF0aW9uIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0NzY5CisgICAgICAgIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MjA4LgorCisgICAgICAgIFRoZSBzb2x1dGlvbiBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OSByZXF1aXJlcyBhcHBseWluZworICAgICAgICBs
ZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0IHNoYXBpbmcuIFRvZGF5LCB3ZSBhcHBseSBsZXR0ZXIt
c3BhY2luZyBiZWZvcmUgdGV4dAorICAgICAgICBzaGFwaW5nLCB3aGljaCBpcyB3cm9uZy4gSG93
ZXZlciwgaWYgd2Ugd2FudCB0byBhcHBseSBsZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0CisgICAg
ICAgIHNoYXBpbmcsIHdlIHdpbGwgbmVlZCBhIHdheSBvZiBtYXBwaW5nIGJhY2sgd2hpY2ggc2hh
cGVkIGdseXBocyBjb3JyZXNwb25kIHRvCisgICAgICAgIHdoaWNoIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZywgc28gd2UgY2FuIGFwcGx5IGxldHRlci1zcGFjaW5nIHRvIHRoZSBjb3JyZWN0Cisg
ICAgICAgIGdseXBocy4gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIHJlY29yZCBzdHJpbmcgb2Zmc2V0
cyBhbnkgdGltZSBsZXR0ZXItc3BhY2luZyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCAod2hpY2gg
aXMgYWxsIHRoZSB0aW1lIC0gbGV0dGVyIHNwYWNpbmcgY2FuIGJlIGFwcGxpZWQgb24gYW55IGVs
ZW1lbnQpLgorCisgICAgICAgIFRoaXMgYWxzbyBoZWxwcyBvbiB0aGUgcGF0aCB0b3dhcmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OS4KKyAgICAgICAgV2hl
biB3ZSBtb3ZlIG9mZiB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLCB3ZSB3aWxsIG5lZWQgdGhl
c2Ugc3RyaW5nIG9mZnNldHMKKyAgICAgICAgdG8gY2FsY3VsYXRlIHRoaW5ncyBsaWtlIHdoYXQg
dGhlIHRleHQgcmFuZ2Ugb2YgYSBzZWxlY3Rpb24gaXMgd2hlbiB0aGUgdXNlciBoYXMKKyAgICAg
ICAgc2VsZWN0ZWQgc29tZSBnbHlwaHMgb24gdGhlIHBhZ2UuCisKKyAgICAgICAgVGhlcmUgaXMg
bm8gcGVyZm9ybWFuY2UgY2hhbmdlIGJlY2F1c2UgdGhlc2Ugc3RyaW5nIG9mZnNldHMgd2VyZSBh
bHJlYWR5IGJlaW5nCisgICAgICAgIGNhbGN1bGF0ZWQ7IHRoZSBkaWZmZXJlbmNlIGlzIGp1c3Qg
dGhhdCB3ZSdyZSBzdG9yaW5nIHRoZW0gbm93LiBBbHNvLCB3ZSB3ZXJlCisgICAgICAgIGJlaW5n
IHdpbGRseSBpbmVmZmljaWVudCB3aXRoIHRoZSBtZW1iZXJzIG9mIEdseXBoQnVmZmVyLCBnaXZp
bmcgdGhlbSBpbmxpbmUKKyAgICAgICAgc2l6ZXMgb2YgMjA0OC4gSSBtZWFzdXJlZCB0aGUgbWVk
aWFuIGFuZCBtZWFuIG9mIHRoZXNlIHN0cmluZ3MgaW4gb3VyIFBhZ2UgTG9hZAorICAgICAgICBU
ZXN0IHRvIGJlIDYgYW5kIDcuNC4gU28sIEkgY3V0IGRvd24gdGhlIGlubGluZSBzaXplcyBkb3du
IHRvIDEwMjQsIHNvIG5vdyB3ZSdyZQorICAgICAgICB1c2luZyBsZXNzIG1lbW9yeSB0aGFuIHdl
IHdlcmUgYmVmb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4gVGhlIGFkZGl0aW9uYWwgc3RyaW5nIG9mZnNldHMKKyAgICAgICAg
YXJlIHVudXNlZCAoZm9yIG5vdykuIEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsIHN0YXJ0IHVzaW5n
IHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Zm9udHMpOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXI6Om9mZnNldHNJblN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpHbHlwaEJ1ZmZlcjo6Zm9udHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZm
ZXI6Om9mZnNldHNJblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZl
cjo6Z2x5cGhBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWR2YW5j
ZUF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRB
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhC
dWZmZXI6Om1ha2VIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpleHBhbmRM
YXN0QWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c2hyaW5rKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpzd2FwKToKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoQnVmZmVyOjpzYXZlT2Zmc2V0c0luU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdseXBoQnVmZmVyOjpvZmZzZXRJblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAt
MDctMzEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cCB0ZXh0IGxheW91dCBjb2RlIGEgYml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNjg4MDcyNjAzYzAxMzFmMmI2
YmU1MGNmZTA3ZjMzMjY3N2VjODg0YS4uNTc1Y2VjYTRlMTkwYWNlMDBjMGQ1NzBjZmQ3ODQzY2I2
YTZhMWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yODUsMTIgKzI4
NSwxMiBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBm
b250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVxdWly
ZXNTaGFwaW5nKCk7CiB9CiAKLUdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENv
ZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIFNob3VsZFNhdmVPZmZzZXRzIHNob3VsZFNhdmVPZmZzZXRzLCBGb3JUZXh0
RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2Fz
Y2FkZTo6bGF5b3V0VGV4dChDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBy
dW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JU
ZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkK
LSAgICAgICAgcmV0dXJuIGxheW91dFNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgc2hvdWxkU2F2
ZU9mZnNldHMsIGZvclRleHRFbXBoYXNpcyk7CisgICAgICAgIHJldHVybiBsYXlvdXRTaW1wbGVU
ZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNpcyk7CiAKLSAgICByZXR1cm4gbGF5b3V0
Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgc2hvdWxkU2F2ZU9mZnNldHMsIGZvclRleHRFbXBo
YXNpcyk7CisgICAgcmV0dXJuIGxheW91dENvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRl
eHRFbXBoYXNpcyk7CiB9CiAKIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKQEAgLTMxNCw3ICszMTQs
NyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogCiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24g
PSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAKLSAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5
b3V0VGV4dChjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwg
U2hvdWxkU2F2ZU9mZnNldHM6Ok5vLCBGb3JUZXh0RW1waGFzaXNPck5vdDo6Rm9yVGV4dEVtcGhh
c2lzKTsKKyAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2RlUGF0aChydW4sIGZy
b20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgRm9yVGV4dEVtcGhhc2lzT3JOb3Q6OkZv
clRleHRFbXBoYXNpcyk7CiAKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMjU5LDExICsxMjU5LDExIEBAIHN0YXRpYyBHbHlwaFVuZGVybGluZVR5
cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5
CiAgICAgLy8gc28gd2Ugd2FudCB0byBkcmF3IHRocm91Z2ggQ0pLIGNoYXJhY3RlcnMgKG9uIGEg
Y2hhcmFjdGVyLWJ5LWNoYXJhY3RlciBiYXNpcykuCiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc3Bl
YyBzYXlzIHRoaXMgc2hvdWxkIGluc3RlYWQgYmUgZG9uZSBieSB0aGUgdXNlci1hZ2VudCBzdHls
ZXNoZWV0IHVzaW5nIHRoZSBsYW5nPSBhdHRyaWJ1dGUuCiAgICAgVUNoYXIzMiBiYXNlQ2hhcmFj
dGVyOwotICAgIHVuc2lnbmVkIG9mZnNldEluU3RyaW5nID0gZ2x5cGhCdWZmZXIub2Zmc2V0SW5T
dHJpbmcoaW5kZXgpOworICAgIGF1dG8gb2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1ZmZlci5zdHJp
bmdPZmZzZXRBdChpbmRleCk7CiAKLSAgICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5cGhCdWZm
ZXI6Om5vT2Zmc2V0IHx8IG9mZnNldEluU3RyaW5nID49IHRleHRSdW4ubGVuZ3RoKCkpIHsKKyAg
ICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5cGhCdWZmZXI6Om5vT2Zmc2V0IHx8IG9mZnNldElu
U3RyaW5nID49IHN0YXRpY19jYXN0PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pih0ZXh0UnVuLmxl
bmd0aCgpKSkgewogICAgICAgICAvLyBXZSBoYXZlIG5vIGlkZWEgd2hpY2ggY2hhcmFjdGVyIHNw
YXduZWQgdGhpcyBnbHlwaC4gQmFpbC4KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ob2Zmc2V0SW5TdHJpbmcgPCB0ZXh0UnVuLmxlbmd0aCgpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvZmZzZXRJblN0cmluZyA8IHN0
YXRpY19jYXN0PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pih0ZXh0UnVuLmxlbmd0aCgpKSk7CiAg
ICAgICAgIHJldHVybiBHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CiAgICAgfQog
ICAgIApAQCAtMTM2OSwxMSArMTM2OSw5IEBAIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJr
SGVpZ2h0KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CiAgICAgcmV0dXJuIG1hcmtGb250
RGF0YS0+Zm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKIH0KIAotR2x5cGhCdWZmZXIgRm9udENhc2Nh
ZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRF
bXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK0dseXBoQnVmZmVyIEZvbnRDYXNj
YWRlOjpsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QK
IHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBpZiAoc2hvdWxkU2F2ZU9mZnNl
dHMgPT0gU2hvdWxkU2F2ZU9mZnNldHM6OlllcykKLSAgICAgICAgZ2x5cGhCdWZmZXIuc2F2ZU9m
ZnNldHNJblN0cmluZygpOwogCiAgICAgV2lkdGhJdGVyYXRvciBpdCh0aGlzLCBydW4sIDAsIGZh
bHNlLCBmb3JUZXh0RW1waGFzaXMpOwogICAgIC8vIEZJWE1FOiBVc2luZyBzZXBhcmF0ZSBnbHlw
aCBidWZmZXJzIGZvciB0aGUgcHJlZml4IGFuZCB0aGUgc3VmZml4IGlzIGluY29ycmVjdCB3aGVu
IGtlcm5pbmcgb3IKQEAgLTE0MDMsMTEgKzE0MDEsOSBAQCBHbHlwaEJ1ZmZlciBGb250Q2FzY2Fk
ZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20sIHVu
cwogICAgIHJldHVybiBnbHlwaEJ1ZmZlcjsKIH0KIAotR2x5cGhCdWZmZXIgRm9udENhc2NhZGU6
OmxheW91dENvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8sIFNob3VsZFNhdmVPZmZzZXRzIHNob3VsZFNhdmVPZmZzZXRzLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2FzY2Fk
ZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAog
ewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGlmIChzaG91bGRTYXZlT2Zmc2V0
cyA9PSBTaG91bGRTYXZlT2Zmc2V0czo6WWVzKQotICAgICAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zm
c2V0c0luU3RyaW5nKCk7CiAKICAgICBDb21wbGV4VGV4dENvbnRyb2xsZXIgY29udHJvbGxlcigq
dGhpcywgcnVuLCBmYWxzZSwgMCwgZm9yVGV4dEVtcGhhc2lzKTsKICAgICBHbHlwaEJ1ZmZlciBk
dW1teUdseXBoQnVmZmVyOwpAQCAtMTc3Nyw3ICsxNzczLDcgQEAgRGFzaEFycmF5IEZvbnRDYXNj
YWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdAogICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm4gRGFz
aEFycmF5KCk7CiAKLSAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2RlUGF0aChy
dW4pLCBydW4sIDAsIHJ1bi5sZW5ndGgoKSwgU2hvdWxkU2F2ZU9mZnNldHM6Olllcyk7CisgICAg
YXV0byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuKSwgcnVuLCAwLCBydW4u
bGVuZ3RoKCkpOwogCiAgICAgaWYgKCFnbHlwaEJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVy
biBEYXNoQXJyYXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5oCmluZGV4IDk1OWQ4ZjMzMTkzOTc3OTEwNmY4YTY5NjA1MjY5NTUzM2M4NjVjNWQu
Ljc3Y2IxNmFiNDkwYjUxYmZlNDUzNzM1NjJjZDZmNDQyNmVmZjFhYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMiw3ICsyLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAwIEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgpAQCAtMjAzLDEzICsyMDMsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIHByaXZhdGU6CiAgICAgZW51
bSBGb3JUZXh0RW1waGFzaXNPck5vdCB7IE5vdEZvclRleHRFbXBoYXNpcywgRm9yVGV4dEVtcGhh
c2lzIH07Ci0gICAgZW51bSBjbGFzcyBTaG91bGRTYXZlT2Zmc2V0cyA6IHVpbnQ4X3QgewotICAg
ICAgICBZZXMsCi0gICAgICAgIE5vCi0gICAgfTsKIAotICAgIEdseXBoQnVmZmVyIGxheW91dFRl
eHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
U2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBoYXNp
c09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKLSAgICBHbHlwaEJ1ZmZlciBsYXlv
dXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywg
U2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRleHRFbXBoYXNp
c09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAgICBHbHlwaEJ1ZmZlciBsYXlv
dXRUZXh0KENvZGVQYXRoLCBjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQg
dG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAg
ICBHbHlwaEJ1ZmZlciBsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFz
aXMpIGNvbnN0OwogICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEdseXBoQnVmZmVyJiwgRmxvYXRQb2ludCYsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikg
Y29uc3Q7CiAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29u
c3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdDsKQEAgLTIyMSw3ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGNh
blJldHVybkZhbGxiYWNrRm9udHNGb3JDb21wbGV4VGV4dCgpOwogICAgIHN0YXRpYyBib29sIGNh
bkV4cGFuZEFyb3VuZElkZW9ncmFwaHNJbkNvbXBsZXhUZXh0KCk7CiAKLSAgICBHbHlwaEJ1ZmZl
ciBsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgdG8sIFNob3VsZFNhdmVPZmZzZXRzID0gU2hvdWxkU2F2ZU9mZnNldHM6Ok5vLCBGb3JUZXh0
RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7CisgICAgR2x5cGhCdWZm
ZXIgbGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2ln
bmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7
CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNo
U2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkg
Y29uc3Q7CiAgICAgaW50IG9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsK
ICAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8p
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVy
LmgKaW5kZXggZTQ1YjY4MWYxMjM3M2MzMDM4Y2Y4YjZiN2JhMzEzNDQ1YmM1MzRjOC4uOTBmN2Q0
NzhjMjkyMGI3MDZmMWRlYWI3MjExM2NiMWY4NzlkYTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUg
SW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkdseXBoLmgiCiAjaW5jbHVkZSA8Y2xpbWl0cz4KKyNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENHKQpAQCAtNTEs
NiArNTIsNyBAQCB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAvLyBDRyB1c2VzIENH
U2l6ZSBpbnN0ZWFkIG9mIEZsb2F0U2l6ZSBzbyB0aGF0IHRoZSByZXN1bHQgb2YgYWR2YW5jZXMo
KQogLy8gY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0byBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFk
dmFuY2VzIGluIEZvbnRNYWMubW0KICNpZiBVU0UoQ0cpCisKIHN0cnVjdCBHbHlwaEJ1ZmZlckFk
dmFuY2UgOiBDR1NpemUgewogcHVibGljOgogICAgIEdseXBoQnVmZmVyQWR2YW5jZSgpIDogQ0dT
aXplKENHU2l6ZVplcm8pIHsgfQpAQCAtMTAwLDkgKzEwMiwxNSBAQCBPcHRpb25hbDxHbHlwaEJ1
ZmZlckFkdmFuY2U+IEdseXBoQnVmZmVyQWR2YW5jZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAKICAgICByZXR1cm4gR2x5cGhCdWZmZXJBZHZhbmNlKENHU2l6ZU1ha2UoKndpZHRoLCAqaGVp
Z2h0KSk7CiB9CisKK3VzaW5nIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0ID0gQ0ZJbmRleDsKKwog
I2Vsc2UKLXR5cGVkZWYgRmxvYXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKLSNlbmRpZgorCit1
c2luZyBHbHlwaEJ1ZmZlckFkdmFuY2UgPSBGbG9hdFNpemU7Cit1c2luZyBHbHlwaEJ1ZmZlclN0
cmluZ09mZnNldCA9IHVuc2lnbmVkOworCisjZW5kaWYgLy8gI2lmIFVTRShDRykKIAogaW5saW5l
IEZsb2F0U2l6ZSB0b0Zsb2F0U2l6ZShjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UmIGEpCiB7CkBA
IC0xMTksNDkgKzEyNyw0MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9udHMuY2xlYXIoKTsKICAg
ICAgICAgbV9nbHlwaHMuY2xlYXIoKTsKICAgICAgICAgbV9hZHZhbmNlcy5jbGVhcigpOwotICAg
ICAgICBpZiAobV9vZmZzZXRzSW5TdHJpbmcpCi0gICAgICAgICAgICBtX29mZnNldHNJblN0cmlu
Zy0+Y2xlYXIoKTsKKyAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuY2xlYXIoKTsKICAgICB9CiAK
KyAgICBjb25zdCBGb250KiogZm9udHModW5zaWduZWQgZnJvbSkgeyByZXR1cm4gbV9mb250cy5k
YXRhKCkgKyBmcm9tOyB9CiAgICAgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzKHVuc2lnbmVkIGZy
b20pIHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSArIGZyb207IH0KICAgICBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzKHVuc2lnbmVkIGZyb20pIHsgcmV0dXJuIG1fYWR2YW5jZXMuZGF0YSgp
ICsgZnJvbTsgfQorICAgIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0KiBvZmZzZXRzSW5TdHJpbmco
dW5zaWduZWQgZnJvbSkgeyByZXR1cm4gbV9vZmZzZXRzSW5TdHJpbmcuZGF0YSgpICsgZnJvbTsg
fQorICAgIGNvbnN0IEZvbnQqIGNvbnN0ICogZm9udHModW5zaWduZWQgZnJvbSkgY29uc3QgeyBy
ZXR1cm4gbV9mb250cy5kYXRhKCkgKyBmcm9tOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzKHVuc2lnbmVkIGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzLmRhdGEoKSAr
IGZyb207IH0KICAgICBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzKHVuc2lnbmVk
IGZyb20pIGNvbnN0IHsgcmV0dXJuIG1fYWR2YW5jZXMuZGF0YSgpICsgZnJvbTsgfQorICAgIGNv
bnN0IEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0KiBvZmZzZXRzSW5TdHJpbmcodW5zaWduZWQgZnJv
bSkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRzSW5TdHJpbmcuZGF0YSgpICsgZnJvbTsgfQogCiAg
ICAgY29uc3QgRm9udCogZm9udEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Zv
bnRzW2luZGV4XTsgfQorICAgIEdseXBoIGdseXBoQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2x5cGhzW2luZGV4XTsgfQorICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNl
QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYWR2YW5jZXNbaW5kZXhdOyB9Cisg
ICAgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgc3RyaW5nT2Zmc2V0QXQodW5zaWduZWQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0c0luU3RyaW5nW2luZGV4XTsgfQogCiAgICAgdm9pZCBz
ZXRJbml0aWFsQWR2YW5jZShHbHlwaEJ1ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2UpIHsgbV9p
bml0aWFsQWR2YW5jZSA9IGluaXRpYWxBZHZhbmNlOyB9CiAgICAgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlJiBpbml0aWFsQWR2YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbEFkdmFuY2U7
IH0KICAgICAKLSAgICBHbHlwaCBnbHlwaEF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZ2x5cGhzW2luZGV4XTsKLSAgICB9Ci0KLSAgICBHbHlwaEJ1ZmZl
ckFkdmFuY2UgYWR2YW5jZUF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fYWR2YW5jZXNbaW5kZXhdOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbm9PZmZzZXQgPSBVSU5UX01BWDsKLSAgICB2b2lkIGFkZChHbHlwaCBnbHlwaCwg
Y29uc3QgRm9udCogZm9udCwgZmxvYXQgd2lkdGgsIHVuc2lnbmVkIG9mZnNldEluU3RyaW5nID0g
bm9PZmZzZXQpCisgICAgc3RhdGljIGNvbnN0ZXhwciBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBu
b09mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+Ojpt
YXgoKTsKKyAgICB2b2lkIGFkZChHbHlwaCBnbHlwaCwgY29uc3QgRm9udCogZm9udCwgZmxvYXQg
d2lkdGgsIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IG9mZnNldEluU3RyaW5nID0gbm9PZmZzZXQp
CiAgICAgewogICAgICAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgYWR2YW5jZTsKICAgICAgICAgYWR2
YW5jZS5zZXRXaWR0aCh3aWR0aCk7CiAgICAgICAgIGFkdmFuY2Uuc2V0SGVpZ2h0KDApOwotCiAg
ICAgICAgIGFkZChnbHlwaCwgZm9udCwgYWR2YW5jZSwgb2Zmc2V0SW5TdHJpbmcpOwogICAgIH0K
IAotICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBGb250KiBmb250LCBHbHlwaEJ1ZmZl
ckFkdmFuY2UgYWR2YW5jZSwgdW5zaWduZWQgb2Zmc2V0SW5TdHJpbmcpCisgICAgdm9pZCBhZGQo
R2x5cGggZ2x5cGgsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNl
LCBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBvZmZzZXRJblN0cmluZykKICAgICB7CiAgICAgICAg
IG1fZm9udHMuYXBwZW5kKGZvbnQpOwogICAgICAgICBtX2dseXBocy5hcHBlbmQoZ2x5cGgpOwot
CiAgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5kKGFkdmFuY2UpOwotICAgICAgICAKLSAgICAgICAg
aWYgKG9mZnNldEluU3RyaW5nICE9IG5vT2Zmc2V0ICYmIG1fb2Zmc2V0c0luU3RyaW5nKQotICAg
ICAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmctPmFwcGVuZChvZmZzZXRJblN0cmluZyk7CisgICAg
ICAgIG1fb2Zmc2V0c0luU3RyaW5nLmFwcGVuZChvZmZzZXRJblN0cmluZyk7CiAgICAgfQogCiAg
ICAgdm9pZCByZW1vdmUodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTE2
OSw4ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9udHMucmVtb3ZlKGxvY2F0aW9uLCBs
ZW5ndGgpOwogICAgICAgICBtX2dseXBocy5yZW1vdmUobG9jYXRpb24sIGxlbmd0aCk7CiAgICAg
ICAgIG1fYWR2YW5jZXMucmVtb3ZlKGxvY2F0aW9uLCBsZW5ndGgpOwotICAgICAgICBpZiAobV9v
ZmZzZXRzSW5TdHJpbmcpCi0gICAgICAgICAgICBtX29mZnNldHNJblN0cmluZy0+cmVtb3ZlKGxv
Y2F0aW9uLCBsZW5ndGgpOworICAgICAgICBtX29mZnNldHNJblN0cmluZy5yZW1vdmUobG9jYXRp
b24sIGxlbmd0aCk7CiAgICAgfQogCiAgICAgdm9pZCBtYWtlSG9sZSh1bnNpZ25lZCBsb2NhdGlv
biwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBGb250KiBmb250KQpAQCAtMTgwLDggKzE3OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9mb250cy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3Rvcjxj
b25zdCBGb250Kj4obGVuZ3RoLCBmb250KSk7CiAgICAgICAgIG1fZ2x5cGhzLmluc2VydFZlY3Rv
cihsb2NhdGlvbiwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGg+KGxlbmd0aCwgMHhGRkZGKSk7CiAg
ICAgICAgIG1fYWR2YW5jZXMuaW5zZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZm
ZXJBZHZhbmNlPihsZW5ndGgsIEdseXBoQnVmZmVyQWR2YW5jZSgwLCAwKSkpOwotICAgICAgICBp
ZiAobV9vZmZzZXRzSW5TdHJpbmcpCi0gICAgICAgICAgICBtX29mZnNldHNJblN0cmluZy0+aW5z
ZXJ0VmVjdG9yKGxvY2F0aW9uLCBWZWN0b3I8dW5zaWduZWQ+KGxlbmd0aCwgMCkpOworICAgICAg
ICBtX29mZnNldHNJblN0cmluZy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1
ZmZlclN0cmluZ09mZnNldD4obGVuZ3RoLCAwKSk7CiAgICAgfQogCiAgICAgdm9pZCByZXZlcnNl
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTIwNCw0OCArMjAyLDQwIEBAIHB1
YmxpYzoKICAgICAgICAgbGFzdEFkdmFuY2Uuc2V0V2lkdGgobGFzdEFkdmFuY2Uud2lkdGgoKSAr
IGV4cGFuc2lvbi53aWR0aCgpKTsKICAgICAgICAgbGFzdEFkdmFuY2Uuc2V0SGVpZ2h0KGxhc3RB
ZHZhbmNlLmhlaWdodCgpICsgZXhwYW5zaW9uLmhlaWdodCgpKTsKICAgICB9Ci0gICAgCi0gICAg
dm9pZCBzYXZlT2Zmc2V0c0luU3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIG1fb2Zmc2V0c0luU3Ry
aW5nLnJlc2V0KG5ldyBWZWN0b3I8dW5zaWduZWQsIDIwNDg+KCkpOwotICAgIH0KLQotICAgIGlu
dCBvZmZzZXRJblN0cmluZyh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX29mZnNldHNJblN0cmluZyk7Ci0gICAgICAgIHJldHVybiAoKm1fb2Zmc2V0c0luU3Ry
aW5nKVtpbmRleF07Ci0gICAgfQogCiAgICAgdm9pZCBzaHJpbmsodW5zaWduZWQgdHJ1bmNhdGlv
blBvaW50KQogICAgIHsKICAgICAgICAgbV9mb250cy5zaHJpbmsodHJ1bmNhdGlvblBvaW50KTsK
ICAgICAgICAgbV9nbHlwaHMuc2hyaW5rKHRydW5jYXRpb25Qb2ludCk7CiAgICAgICAgIG1fYWR2
YW5jZXMuc2hyaW5rKHRydW5jYXRpb25Qb2ludCk7Ci0gICAgICAgIGlmIChtX29mZnNldHNJblN0
cmluZykKLSAgICAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLT5zaHJpbmsodHJ1bmNhdGlvblBv
aW50KTsKKyAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuc2hyaW5rKHRydW5jYXRpb25Qb2ludCk7
CiAgICAgfQogCiBwcml2YXRlOgogICAgIHZvaWQgc3dhcCh1bnNpZ25lZCBpbmRleDEsIHVuc2ln
bmVkIGluZGV4MikKICAgICB7Ci0gICAgICAgIGNvbnN0IEZvbnQqIGYgPSBtX2ZvbnRzW2luZGV4
MV07CisgICAgICAgIGNvbnN0IEZvbnQqIGZvbnQgPSBtX2ZvbnRzW2luZGV4MV07CiAgICAgICAg
IG1fZm9udHNbaW5kZXgxXSA9IG1fZm9udHNbaW5kZXgyXTsKLSAgICAgICAgbV9mb250c1tpbmRl
eDJdID0gZjsKKyAgICAgICAgbV9mb250c1tpbmRleDJdID0gZm9udDsKIAotICAgICAgICBHbHlw
aEJ1ZmZlckdseXBoIGcgPSBtX2dseXBoc1tpbmRleDFdOworICAgICAgICBHbHlwaEJ1ZmZlckds
eXBoIGdseXBoID0gbV9nbHlwaHNbaW5kZXgxXTsKICAgICAgICAgbV9nbHlwaHNbaW5kZXgxXSA9
IG1fZ2x5cGhzW2luZGV4Ml07Ci0gICAgICAgIG1fZ2x5cGhzW2luZGV4Ml0gPSBnOworICAgICAg
ICBtX2dseXBoc1tpbmRleDJdID0gZ2x5cGg7CiAKLSAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNl
IHMgPSBtX2FkdmFuY2VzW2luZGV4MV07CisgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlID0gbV9hZHZhbmNlc1tpbmRleDFdOwogICAgICAgICBtX2FkdmFuY2VzW2luZGV4MV0gPSBt
X2FkdmFuY2VzW2luZGV4Ml07Ci0gICAgICAgIG1fYWR2YW5jZXNbaW5kZXgyXSA9IHM7CisgICAg
ICAgIG1fYWR2YW5jZXNbaW5kZXgyXSA9IGFkdmFuY2U7CisKKyAgICAgICAgR2x5cGhCdWZmZXJT
dHJpbmdPZmZzZXQgb2Zmc2V0ID0gbV9vZmZzZXRzSW5TdHJpbmdbaW5kZXgxXTsKKyAgICAgICAg
bV9vZmZzZXRzSW5TdHJpbmdbaW5kZXgxXSA9IG1fb2Zmc2V0c0luU3RyaW5nW2luZGV4Ml07Cisg
ICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nW2luZGV4Ml0gPSBvZmZzZXQ7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNvbnN0IEZvbnQqLCAyMDQ4PiBtX2ZvbnRzOwotICAgIFZlY3RvcjxHbHlwaEJ1ZmZl
ckdseXBoLCAyMDQ4PiBtX2dseXBoczsKLSAgICBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAy
MDQ4PiBtX2FkdmFuY2VzOworICAgIFZlY3Rvcjxjb25zdCBGb250KiwgMTAyND4gbV9mb250czsK
KyAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTAyND4gbV9nbHlwaHM7CisgICAgVmVjdG9y
PEdseXBoQnVmZmVyQWR2YW5jZSwgMTAyND4gbV9hZHZhbmNlczsKKyAgICBWZWN0b3I8R2x5cGhC
dWZmZXJTdHJpbmdPZmZzZXQsIDEwMjQ+IG1fb2Zmc2V0c0luU3RyaW5nOwogICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBtX2luaXRpYWxBZHZhbmNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
dW5zaWduZWQsIDIwNDg+PiBtX29mZnNldHNJblN0cmluZzsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405776</attachid>
            <date>2020-08-01 00:48:24 -0700</date>
            <delta_ts>2020-08-01 21:03:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215051-20200801004824.patch</filename>
            <type>text/plain</type>
            <size>19199</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQzMzUzZmU1ZThjOTRh
NWQ1ZmNkOTgzNTc4YWNmOTQzYTIzM2M5Mi4uOGNhNzY2YjJkN2RiMWYwMTI1Y2MzZWU3NTQ5MDll
ODZiYzdjNTA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA4LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVW5jb25kaXRp
b25hbGx5IHJlY29yZCBzdHJpbmcgb2Zmc2V0cyBpbiB0aGUgZmFzdCB0ZXh0IGNvZGVwYXRoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUwNTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGlu
IHByZXBhcmF0aW9uIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0NzY5CisgICAgICAgIGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA2MjA4LgorCisgICAgICAgIFRoZSBzb2x1dGlvbiBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OSByZXF1aXJlcyBhcHBseWluZworICAgICAgICBs
ZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0IHNoYXBpbmcuIFRvZGF5LCB3ZSBhcHBseSBsZXR0ZXIt
c3BhY2luZyBiZWZvcmUgdGV4dAorICAgICAgICBzaGFwaW5nLCB3aGljaCBpcyB3cm9uZy4gSG93
ZXZlciwgaWYgd2Ugd2FudCB0byBhcHBseSBsZXR0ZXItc3BhY2luZyBhZnRlciB0ZXh0CisgICAg
ICAgIHNoYXBpbmcsIHdlIHdpbGwgbmVlZCBhIHdheSBvZiBtYXBwaW5nIGJhY2sgd2hpY2ggc2hh
cGVkIGdseXBocyBjb3JyZXNwb25kIHRvCisgICAgICAgIHdoaWNoIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZywgc28gd2UgY2FuIGFwcGx5IGxldHRlci1zcGFjaW5nIHRvIHRoZSBjb3JyZWN0Cisg
ICAgICAgIGdseXBocy4gVGhlcmVmb3JlLCB3ZSBuZWVkIHRvIHJlY29yZCBzdHJpbmcgb2Zmc2V0
cyBhbnkgdGltZSBsZXR0ZXItc3BhY2luZyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCAod2hpY2gg
aXMgYWxsIHRoZSB0aW1lIC0gbGV0dGVyIHNwYWNpbmcgY2FuIGJlIGFwcGxpZWQgb24gYW55IGVs
ZW1lbnQpLgorCisgICAgICAgIFRoaXMgYWxzbyBoZWxwcyBvbiB0aGUgcGF0aCB0b3dhcmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc2OS4KKyAgICAgICAgV2hl
biB3ZSBtb3ZlIG9mZiB0aGUgY29tcGxleCB0ZXh0IGNvZGVwYXRoLCB3ZSB3aWxsIG5lZWQgdGhl
c2Ugc3RyaW5nIG9mZnNldHMKKyAgICAgICAgdG8gY2FsY3VsYXRlIHRoaW5ncyBsaWtlIHdoYXQg
dGhlIHRleHQgcmFuZ2Ugb2YgYSBzZWxlY3Rpb24gaXMgd2hlbiB0aGUgdXNlciBoYXMKKyAgICAg
ICAgc2VsZWN0ZWQgc29tZSBnbHlwaHMgb24gdGhlIHBhZ2UuCisKKyAgICAgICAgVGhlcmUgaXMg
bm8gcGVyZm9ybWFuY2UgY2hhbmdlIGJlY2F1c2UgdGhlc2Ugc3RyaW5nIG9mZnNldHMgd2VyZSBh
bHJlYWR5IGJlaW5nCisgICAgICAgIGNhbGN1bGF0ZWQ7IHRoZSBkaWZmZXJlbmNlIGlzIGp1c3Qg
dGhhdCB3ZSdyZSBzdG9yaW5nIHRoZW0gbm93LiBBbHNvLCB3ZSB3ZXJlCisgICAgICAgIGJlaW5n
IHdpbGRseSBpbmVmZmljaWVudCB3aXRoIHRoZSBtZW1iZXJzIG9mIEdseXBoQnVmZmVyLCBnaXZp
bmcgdGhlbSBpbmxpbmUKKyAgICAgICAgc2l6ZXMgb2YgMjA0OC4gSSBtZWFzdXJlZCB0aGUgbWVk
aWFuIGFuZCBtZWFuIG9mIHRoZXNlIHN0cmluZ3MgaW4gb3VyIFBhZ2UgTG9hZAorICAgICAgICBU
ZXN0IHRvIGJlIDYgYW5kIDcuNC4gU28sIEkgY3V0IGRvd24gdGhlIGlubGluZSBzaXplcyBkb3du
IHRvIDEwMjQsIHNvIG5vdyB3ZSdyZQorICAgICAgICB1c2luZyBsZXNzIG1lbW9yeSB0aGFuIHdl
IHdlcmUgYmVmb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5v
IGJlaGF2aW9yIGNoYW5nZS4gVGhlIGFkZGl0aW9uYWwgc3RyaW5nIG9mZnNldHMKKyAgICAgICAg
YXJlIHVudXNlZCAoZm9yIG5vdykuIEEgc3Vic2VxdWVudCBwYXRjaCB3aWxsIHN0YXJ0IHVzaW5n
IHRoZW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6bGF5b3V0VGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29tcHV0ZVVuZGVybGluZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmxheW91dFNpbXBsZVRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OmxheW91dENvbXBsZXhUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpj
bGVhcik6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6Zm9udHMpOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhCdWZmZXI6Om9mZnNldHNJblN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpHbHlwaEJ1ZmZlcjo6Zm9udHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZm
ZXI6Om9mZnNldHNJblN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZl
cjo6Z2x5cGhBdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWR2YW5j
ZUF0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpzdHJpbmdPZmZzZXRB
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoQnVmZmVyOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhC
dWZmZXI6Om1ha2VIb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpleHBhbmRM
YXN0QWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c2hyaW5rKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoQnVmZmVyOjpzd2FwKToKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoQnVmZmVyOjpzYXZlT2Zmc2V0c0luU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdseXBoQnVmZmVyOjpvZmZzZXRJblN0cmluZyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAt
MDctMzEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cCB0ZXh0IGxheW91dCBjb2RlIGEgYml0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNjg4MDcyNjAzYzAxMzFmMmI2
YmU1MGNmZTA3ZjMzMjY3N2VjODg0YS4uMmM4NGIwMWE5OWZhNzIzMjE0Zjc0NDgwOWMxMmU3ZDk4
ZmY5ZmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmNwcApAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAo
bXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yODUsMTIgKzI4
NSwxMiBAQCB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBm
b250U2VsZWN0b3IpIGNvbnN0CiAgICAgbV9yZXF1aXJlc1NoYXBpbmcgPSBjb21wdXRlUmVxdWly
ZXNTaGFwaW5nKCk7CiB9CiAKLUdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENv
ZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgdG8sIFNob3VsZFNhdmVPZmZzZXRzIHNob3VsZFNhdmVPZmZzZXRzLCBGb3JUZXh0
RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0CitHbHlwaEJ1ZmZlciBGb250Q2Fz
Y2FkZTo6bGF5b3V0VGV4dChDb2RlUGF0aCBjb2RlUGF0aFRvVXNlLCBjb25zdCBUZXh0UnVuJiBy
dW4sIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JU
ZXh0RW1waGFzaXMpIGNvbnN0CiB7CiAgICAgaWYgKGNvZGVQYXRoVG9Vc2UgIT0gQ29tcGxleCkK
LSAgICAgICAgcmV0dXJuIGxheW91dFNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgc2hvdWxkU2F2
ZU9mZnNldHMsIGZvclRleHRFbXBoYXNpcyk7CisgICAgICAgIHJldHVybiBsYXlvdXRTaW1wbGVU
ZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRleHRFbXBoYXNpcyk7CiAKLSAgICByZXR1cm4gbGF5b3V0
Q29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgc2hvdWxkU2F2ZU9mZnNldHMsIGZvclRleHRFbXBo
YXNpcyk7CisgICAgcmV0dXJuIGxheW91dENvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGZvclRl
eHRFbXBoYXNpcyk7CiB9CiAKIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKQEAgLTMxNCw3ICszMTQs
NyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogCiAgICAgdW5zaWduZWQgZGVzdGluYXRpb24g
PSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CiAKLSAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5
b3V0VGV4dChjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwg
U2hvdWxkU2F2ZU9mZnNldHM6Ok5vLCBGb3JUZXh0RW1waGFzaXNPck5vdDo6Rm9yVGV4dEVtcGhh
c2lzKTsKKyAgICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2RlUGF0aChydW4sIGZy
b20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5hdGlvbiwgRm9yVGV4dEVtcGhhc2lzT3JOb3Q6OkZv
clRleHRFbXBoYXNpcyk7CiAKICAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMjU5LDE4ICsxMjU5LDE4IEBAIHN0YXRpYyBHbHlwaFVuZGVybGluZVR5
cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5
CiAgICAgLy8gc28gd2Ugd2FudCB0byBkcmF3IHRocm91Z2ggQ0pLIGNoYXJhY3RlcnMgKG9uIGEg
Y2hhcmFjdGVyLWJ5LWNoYXJhY3RlciBiYXNpcykuCiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc3Bl
YyBzYXlzIHRoaXMgc2hvdWxkIGluc3RlYWQgYmUgZG9uZSBieSB0aGUgdXNlci1hZ2VudCBzdHls
ZXNoZWV0IHVzaW5nIHRoZSBsYW5nPSBhdHRyaWJ1dGUuCiAgICAgVUNoYXIzMiBiYXNlQ2hhcmFj
dGVyOwotICAgIHVuc2lnbmVkIG9mZnNldEluU3RyaW5nID0gZ2x5cGhCdWZmZXIub2Zmc2V0SW5T
dHJpbmcoaW5kZXgpOworICAgIGF1dG8gb2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1ZmZlci5zdHJp
bmdPZmZzZXRBdChpbmRleCk7CiAKLSAgICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5cGhCdWZm
ZXI6Om5vT2Zmc2V0IHx8IG9mZnNldEluU3RyaW5nID49IHRleHRSdW4ubGVuZ3RoKCkpIHsKKyAg
ICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5cGhCdWZmZXI6Om5vT2Zmc2V0IHx8IG9mZnNldElu
U3RyaW5nID49IHN0YXRpY19jYXN0PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pih0ZXh0UnVuLmxl
bmd0aCgpKSkgewogICAgICAgICAvLyBXZSBoYXZlIG5vIGlkZWEgd2hpY2ggY2hhcmFjdGVyIHNw
YXduZWQgdGhpcyBnbHlwaC4gQmFpbC4KLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ob2Zmc2V0SW5TdHJpbmcgPCB0ZXh0UnVuLmxlbmd0aCgpKTsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihvZmZzZXRJblN0cmluZyA8IHN0
YXRpY19jYXN0PEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0Pih0ZXh0UnVuLmxlbmd0aCgpKSk7CiAg
ICAgICAgIHJldHVybiBHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CiAgICAgfQog
ICAgIAogICAgIGlmICh0ZXh0UnVuLmlzOEJpdCgpKQogICAgICAgICBiYXNlQ2hhcmFjdGVyID0g
dGV4dFJ1bi5jaGFyYWN0ZXJzOCgpW29mZnNldEluU3RyaW5nXTsKICAgICBlbHNlCi0gICAgICAg
IFUxNl9ORVhUKHRleHRSdW4uY2hhcmFjdGVyczE2KCksIG9mZnNldEluU3RyaW5nLCB0ZXh0UnVu
Lmxlbmd0aCgpLCBiYXNlQ2hhcmFjdGVyKTsKKyAgICAgICAgVTE2X05FWFQodGV4dFJ1bi5jaGFy
YWN0ZXJzMTYoKSwgb2Zmc2V0SW5TdHJpbmcsIHN0YXRpY19jYXN0PEdseXBoQnVmZmVyU3RyaW5n
T2Zmc2V0Pih0ZXh0UnVuLmxlbmd0aCgpKSwgYmFzZUNoYXJhY3Rlcik7CiAgICAgCiAgICAgLy8g
dV9nZXRJbnRQcm9wZXJ0eVZhbHVlIHdpdGggVUNIQVJfSURFT0dSQVBISUMgZG9lc24ndCByZXR1
cm4gdHJ1ZSBmb3IgSmFwYW5lc2Ugb3IgS29yZWFuIGNvZGVwb2ludHMuCiAgICAgLy8gSW5zdGVh
ZCwgd2UgY2FuIHVzZSB0aGUgIlVuaWNvZGUgYWxsb2NhdGlvbiBibG9jayIgZm9yIHRoZSBjaGFy
YWN0ZXIuCkBAIC0xMzY5LDExICsxMzY5LDkgQEAgaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01h
cmtIZWlnaHQoY29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29uc3QKICAgICByZXR1cm4gbWFya0Zv
bnREYXRhLT5mb250TWV0cmljcygpLmhlaWdodCgpOwogfQogCi1HbHlwaEJ1ZmZlciBGb250Q2Fz
Y2FkZTo6bGF5b3V0U2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBTaG91bGRTYXZlT2Zmc2V0cyBzaG91bGRTYXZlT2Zmc2V0cywgRm9yVGV4
dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25zdAorR2x5cGhCdWZmZXIgRm9udENh
c2NhZGU6OmxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgZm9yVGV4dEVtcGhhc2lzKSBjb25z
dAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGlmIChzaG91bGRTYXZlT2Zm
c2V0cyA9PSBTaG91bGRTYXZlT2Zmc2V0czo6WWVzKQotICAgICAgICBnbHlwaEJ1ZmZlci5zYXZl
T2Zmc2V0c0luU3RyaW5nKCk7CiAKICAgICBXaWR0aEl0ZXJhdG9yIGl0KHRoaXMsIHJ1biwgMCwg
ZmFsc2UsIGZvclRleHRFbXBoYXNpcyk7CiAgICAgLy8gRklYTUU6IFVzaW5nIHNlcGFyYXRlIGds
eXBoIGJ1ZmZlcnMgZm9yIHRoZSBwcmVmaXggYW5kIHRoZSBzdWZmaXggaXMgaW5jb3JyZWN0IHdo
ZW4ga2VybmluZyBvcgpAQCAtMTQwMywxMSArMTQwMSw5IEBAIEdseXBoQnVmZmVyIEZvbnRDYXNj
YWRlOjpsYXlvdXRTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwg
dW5zCiAgICAgcmV0dXJuIGdseXBoQnVmZmVyOwogfQogCi1HbHlwaEJ1ZmZlciBGb250Q2FzY2Fk
ZTo6bGF5b3V0Q29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCB1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgc2hvdWxkU2F2ZU9mZnNldHMsIEZvclRleHRF
bXBoYXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKK0dseXBoQnVmZmVyIEZvbnRDYXNj
YWRlOjpsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCBmb3JUZXh0RW1waGFzaXMpIGNvbnN0
CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgaWYgKHNob3VsZFNhdmVPZmZz
ZXRzID09IFNob3VsZFNhdmVPZmZzZXRzOjpZZXMpCi0gICAgICAgIGdseXBoQnVmZmVyLnNhdmVP
ZmZzZXRzSW5TdHJpbmcoKTsKIAogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVy
KCp0aGlzLCBydW4sIGZhbHNlLCAwLCBmb3JUZXh0RW1waGFzaXMpOwogICAgIEdseXBoQnVmZmVy
IGR1bW15R2x5cGhCdWZmZXI7CkBAIC0xNzc3LDcgKzE3NzMsNyBAQCBEYXNoQXJyYXkgRm9udENh
c2NhZGU6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0CiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybiBE
YXNoQXJyYXkoKTsKIAotICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQYXRo
KHJ1biksIHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBTaG91bGRTYXZlT2Zmc2V0czo6WWVzKTsKKyAg
ICBhdXRvIGdseXBoQnVmZmVyID0gbGF5b3V0VGV4dChjb2RlUGF0aChydW4pLCBydW4sIDAsIHJ1
bi5sZW5ndGgoKSk7CiAKICAgICBpZiAoIWdseXBoQnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIERhc2hBcnJheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKaW5kZXggOTU5ZDhmMzMxOTM5Nzc5MTA2ZjhhNjk2MDUyNjk1NTMzYzg2NWM1
ZC4uNzdjYjE2YWI0OTBiNTFiZmU0NTM3MzU2MmNkNmY0NDI2ZWZmMWFiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCkBAIC0yLDcgKzIsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAwIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0yMDMsMTMgKzIwMyw5IEBAIHB1YmxpYzoKICNlbmRpZgogcHJpdmF0ZToKICAgICBl
bnVtIEZvclRleHRFbXBoYXNpc09yTm90IHsgTm90Rm9yVGV4dEVtcGhhc2lzLCBGb3JUZXh0RW1w
aGFzaXMgfTsKLSAgICBlbnVtIGNsYXNzIFNob3VsZFNhdmVPZmZzZXRzIDogdWludDhfdCB7Ci0g
ICAgICAgIFllcywKLSAgICAgICAgTm8KLSAgICB9OwogCi0gICAgR2x5cGhCdWZmZXIgbGF5b3V0
VGV4dChDb2RlUGF0aCwgY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv
LCBTaG91bGRTYXZlT2Zmc2V0cyA9IFNob3VsZFNhdmVPZmZzZXRzOjpObywgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIEdseXBoQnVmZmVyIGxh
eW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv
LCBTaG91bGRTYXZlT2Zmc2V0cyA9IFNob3VsZFNhdmVPZmZzZXRzOjpObywgRm9yVGV4dEVtcGhh
c2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OworICAgIEdseXBoQnVmZmVyIGxh
eW91dFRleHQoQ29kZVBhdGgsIGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCB0bywgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0Owor
ICAgIEdseXBoQnVmZmVyIGxheW91dFNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIHVuc2lnbmVk
IGZyb20sIHVuc2lnbmVkIHRvLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBo
YXNpcykgY29uc3Q7CiAgICAgdm9pZCBkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JiwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSBjb25zdDsKICAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwg
SGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9
IDApIGNvbnN0OwpAQCAtMjIxLDcgKzIxNyw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wg
Y2FuUmV0dXJuRmFsbGJhY2tGb250c0ZvckNvbXBsZXhUZXh0KCk7CiAgICAgc3RhdGljIGJvb2wg
Y2FuRXhwYW5kQXJvdW5kSWRlb2dyYXBoc0luQ29tcGxleFRleHQoKTsKIAotICAgIEdseXBoQnVm
ZmVyIGxheW91dENvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCB1bnNpZ25lZCBmcm9tLCB1bnNp
Z25lZCB0bywgU2hvdWxkU2F2ZU9mZnNldHMgPSBTaG91bGRTYXZlT2Zmc2V0czo6Tm8sIEZvclRl
eHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKKyAgICBHbHlwaEJ1
ZmZlciBsYXlvdXRDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8sIEZvclRleHRFbXBoYXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25z
dDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0
OwogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRS
dW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0
bykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZm
ZXIuaAppbmRleCBlNDViNjgxZjEyMzczYzMwMzhjZjhiNmI3YmEzMTM0NDViYzUzNGM4Li45MGY3
ZDQ3OGMyOTIwYjcwNmYxZGVhYjcyMTEzY2IxZjg3OWRhNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmls
ZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCiAjaW5jbHVkZSAiR2x5cGguaCIKICNpbmNsdWRlIDxjbGltaXRzPgorI2luY2x1
ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCkBAIC01
MSw2ICs1Miw3IEBAIHR5cGVkZWYgR2x5cGggR2x5cGhCdWZmZXJHbHlwaDsKIC8vIENHIHVzZXMg
Q0dTaXplIGluc3RlYWQgb2YgRmxvYXRTaXplIHNvIHRoYXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNl
cygpCiAvLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRo
QWR2YW5jZXMgaW4gRm9udE1hYy5tbQogI2lmIFVTRShDRykKKwogc3RydWN0IEdseXBoQnVmZmVy
QWR2YW5jZSA6IENHU2l6ZSB7CiBwdWJsaWM6CiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlKCkgOiBD
R1NpemUoQ0dTaXplWmVybykgeyB9CkBAIC0xMDAsOSArMTAyLDE1IEBAIE9wdGlvbmFsPEdseXBo
QnVmZmVyQWR2YW5jZT4gR2x5cGhCdWZmZXJBZHZhbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIAogICAgIHJldHVybiBHbHlwaEJ1ZmZlckFkdmFuY2UoQ0dTaXplTWFrZSgqd2lkdGgsICpo
ZWlnaHQpKTsKIH0KKwordXNpbmcgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgPSBDRkluZGV4Owor
CiAjZWxzZQotdHlwZWRlZiBGbG9hdFNpemUgR2x5cGhCdWZmZXJBZHZhbmNlOwotI2VuZGlmCisK
K3VzaW5nIEdseXBoQnVmZmVyQWR2YW5jZSA9IEZsb2F0U2l6ZTsKK3VzaW5nIEdseXBoQnVmZmVy
U3RyaW5nT2Zmc2V0ID0gdW5zaWduZWQ7CisKKyNlbmRpZiAvLyAjaWYgVVNFKENHKQogCiBpbmxp
bmUgRmxvYXRTaXplIHRvRmxvYXRTaXplKGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSYgYSkKIHsK
QEAgLTExOSw0OSArMTI3LDQxIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb250cy5jbGVhcigpOwog
ICAgICAgICBtX2dseXBocy5jbGVhcigpOwogICAgICAgICBtX2FkdmFuY2VzLmNsZWFyKCk7Ci0g
ICAgICAgIGlmIChtX29mZnNldHNJblN0cmluZykKLSAgICAgICAgICAgIG1fb2Zmc2V0c0luU3Ry
aW5nLT5jbGVhcigpOworICAgICAgICBtX29mZnNldHNJblN0cmluZy5jbGVhcigpOwogICAgIH0K
IAorICAgIGNvbnN0IEZvbnQqKiBmb250cyh1bnNpZ25lZCBmcm9tKSB7IHJldHVybiBtX2ZvbnRz
LmRhdGEoKSArIGZyb207IH0KICAgICBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHModW5zaWduZWQg
ZnJvbSkgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgpICsgZnJvbTsgfQogICAgIEdseXBoQnVmZmVy
QWR2YW5jZSogYWR2YW5jZXModW5zaWduZWQgZnJvbSkgeyByZXR1cm4gbV9hZHZhbmNlcy5kYXRh
KCkgKyBmcm9tOyB9CisgICAgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQqIG9mZnNldHNJblN0cmlu
Zyh1bnNpZ25lZCBmcm9tKSB7IHJldHVybiBtX29mZnNldHNJblN0cmluZy5kYXRhKCkgKyBmcm9t
OyB9CisgICAgY29uc3QgRm9udCogY29uc3QgKiBmb250cyh1bnNpZ25lZCBmcm9tKSBjb25zdCB7
IHJldHVybiBtX2ZvbnRzLmRhdGEoKSArIGZyb207IH0KICAgICBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHModW5zaWduZWQgZnJvbSkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHMuZGF0YSgp
ICsgZnJvbTsgfQogICAgIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXModW5zaWdu
ZWQgZnJvbSkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlcy5kYXRhKCkgKyBmcm9tOyB9CisgICAg
Y29uc3QgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQqIG9mZnNldHNJblN0cmluZyh1bnNpZ25lZCBm
cm9tKSBjb25zdCB7IHJldHVybiBtX29mZnNldHNJblN0cmluZy5kYXRhKCkgKyBmcm9tOyB9CiAK
ICAgICBjb25zdCBGb250KiBmb250QXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udHNbaW5kZXhdOyB9CisgICAgR2x5cGggZ2x5cGhBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV9nbHlwaHNbaW5kZXhdOyB9CisgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFu
Y2VBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07IH0K
KyAgICBHbHlwaEJ1ZmZlclN0cmluZ09mZnNldCBzdHJpbmdPZmZzZXRBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXRzSW5TdHJpbmdbaW5kZXhdOyB9CiAKICAgICB2b2lk
IHNldEluaXRpYWxBZHZhbmNlKEdseXBoQnVmZmVyQWR2YW5jZSBpbml0aWFsQWR2YW5jZSkgeyBt
X2luaXRpYWxBZHZhbmNlID0gaW5pdGlhbEFkdmFuY2U7IH0KICAgICBjb25zdCBHbHlwaEJ1ZmZl
ckFkdmFuY2UmIGluaXRpYWxBZHZhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsQWR2YW5j
ZTsgfQogICAgIAotICAgIEdseXBoIGdseXBoQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9nbHlwaHNbaW5kZXhdOwotICAgIH0KLQotICAgIEdseXBoQnVm
ZmVyQWR2YW5jZSBhZHZhbmNlQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9hZHZhbmNlc1tpbmRleF07Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBub09mZnNldCA9IFVJTlRfTUFYOwotICAgIHZvaWQgYWRkKEdseXBoIGdseXBo
LCBjb25zdCBGb250KiBmb250LCBmbG9hdCB3aWR0aCwgdW5zaWduZWQgb2Zmc2V0SW5TdHJpbmcg
PSBub09mZnNldCkKKyAgICBzdGF0aWMgY29uc3RleHByIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0
IG5vT2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czxHbHlwaEJ1ZmZlclN0cmluZ09mZnNldD46
Om1heCgpOworICAgIHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBGb250KiBmb250LCBmbG9h
dCB3aWR0aCwgR2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQgb2Zmc2V0SW5TdHJpbmcgPSBub09mZnNl
dCkKICAgICB7CiAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlOwogICAgICAgICBh
ZHZhbmNlLnNldFdpZHRoKHdpZHRoKTsKICAgICAgICAgYWR2YW5jZS5zZXRIZWlnaHQoMCk7Ci0K
ICAgICAgICAgYWRkKGdseXBoLCBmb250LCBhZHZhbmNlLCBvZmZzZXRJblN0cmluZyk7CiAgICAg
fQogCi0gICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyQWR2YW5jZSBhZHZhbmNlLCB1bnNpZ25lZCBvZmZzZXRJblN0cmluZykKKyAgICB2b2lkIGFk
ZChHbHlwaCBnbHlwaCwgY29uc3QgRm9udCogZm9udCwgR2x5cGhCdWZmZXJBZHZhbmNlIGFkdmFu
Y2UsIEdseXBoQnVmZmVyU3RyaW5nT2Zmc2V0IG9mZnNldEluU3RyaW5nKQogICAgIHsKICAgICAg
ICAgbV9mb250cy5hcHBlbmQoZm9udCk7CiAgICAgICAgIG1fZ2x5cGhzLmFwcGVuZChnbHlwaCk7
Ci0KICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQoYWR2YW5jZSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAob2Zmc2V0SW5TdHJpbmcgIT0gbm9PZmZzZXQgJiYgbV9vZmZzZXRzSW5TdHJpbmcpCi0g
ICAgICAgICAgICBtX29mZnNldHNJblN0cmluZy0+YXBwZW5kKG9mZnNldEluU3RyaW5nKTsKKyAg
ICAgICAgbV9vZmZzZXRzSW5TdHJpbmcuYXBwZW5kKG9mZnNldEluU3RyaW5nKTsKICAgICB9CiAK
ICAgICB2b2lkIHJlbW92ZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQpAQCAt
MTY5LDggKzE2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mb250cy5yZW1vdmUobG9jYXRpb24s
IGxlbmd0aCk7CiAgICAgICAgIG1fZ2x5cGhzLnJlbW92ZShsb2NhdGlvbiwgbGVuZ3RoKTsKICAg
ICAgICAgbV9hZHZhbmNlcy5yZW1vdmUobG9jYXRpb24sIGxlbmd0aCk7Ci0gICAgICAgIGlmICht
X29mZnNldHNJblN0cmluZykKLSAgICAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLT5yZW1vdmUo
bG9jYXRpb24sIGxlbmd0aCk7CisgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLnJlbW92ZShsb2Nh
dGlvbiwgbGVuZ3RoKTsKICAgICB9CiAKICAgICB2b2lkIG1ha2VIb2xlKHVuc2lnbmVkIGxvY2F0
aW9uLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnQqIGZvbnQpCkBAIC0xODAsOCArMTc5LDcg
QEAgcHVibGljOgogICAgICAgICBtX2ZvbnRzLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9y
PGNvbnN0IEZvbnQqPihsZW5ndGgsIGZvbnQpKTsKICAgICAgICAgbV9nbHlwaHMuaW5zZXJ0VmVj
dG9yKGxvY2F0aW9uLCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaD4obGVuZ3RoLCAweEZGRkYpKTsK
ICAgICAgICAgbV9hZHZhbmNlcy5pbnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3RvcjxHbHlwaEJ1
ZmZlckFkdmFuY2U+KGxlbmd0aCwgR2x5cGhCdWZmZXJBZHZhbmNlKDAsIDApKSk7Ci0gICAgICAg
IGlmIChtX29mZnNldHNJblN0cmluZykKLSAgICAgICAgICAgIG1fb2Zmc2V0c0luU3RyaW5nLT5p
bnNlcnRWZWN0b3IobG9jYXRpb24sIFZlY3Rvcjx1bnNpZ25lZD4obGVuZ3RoLCAwKSk7CisgICAg
ICAgIG1fb2Zmc2V0c0luU3RyaW5nLmluc2VydFZlY3Rvcihsb2NhdGlvbiwgVmVjdG9yPEdseXBo
QnVmZmVyU3RyaW5nT2Zmc2V0PihsZW5ndGgsIDApKTsKICAgICB9CiAKICAgICB2b2lkIHJldmVy
c2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMjA0LDQ4ICsyMDIsNDAgQEAg
cHVibGljOgogICAgICAgICBsYXN0QWR2YW5jZS5zZXRXaWR0aChsYXN0QWR2YW5jZS53aWR0aCgp
ICsgZXhwYW5zaW9uLndpZHRoKCkpOwogICAgICAgICBsYXN0QWR2YW5jZS5zZXRIZWlnaHQobGFz
dEFkdmFuY2UuaGVpZ2h0KCkgKyBleHBhbnNpb24uaGVpZ2h0KCkpOwogICAgIH0KLSAgICAKLSAg
ICB2b2lkIHNhdmVPZmZzZXRzSW5TdHJpbmcoKQotICAgIHsKLSAgICAgICAgbV9vZmZzZXRzSW5T
dHJpbmcucmVzZXQobmV3IFZlY3Rvcjx1bnNpZ25lZCwgMjA0OD4oKSk7Ci0gICAgfQotCi0gICAg
aW50IG9mZnNldEluU3RyaW5nKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fb2Zmc2V0c0luU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuICgqbV9vZmZzZXRzSW5T
dHJpbmcpW2luZGV4XTsKLSAgICB9CiAKICAgICB2b2lkIHNocmluayh1bnNpZ25lZCB0cnVuY2F0
aW9uUG9pbnQpCiAgICAgewogICAgICAgICBtX2ZvbnRzLnNocmluayh0cnVuY2F0aW9uUG9pbnQp
OwogICAgICAgICBtX2dseXBocy5zaHJpbmsodHJ1bmNhdGlvblBvaW50KTsKICAgICAgICAgbV9h
ZHZhbmNlcy5zaHJpbmsodHJ1bmNhdGlvblBvaW50KTsKLSAgICAgICAgaWYgKG1fb2Zmc2V0c0lu
U3RyaW5nKQotICAgICAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmctPnNocmluayh0cnVuY2F0aW9u
UG9pbnQpOworICAgICAgICBtX29mZnNldHNJblN0cmluZy5zaHJpbmsodHJ1bmNhdGlvblBvaW50
KTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzd2FwKHVuc2lnbmVkIGluZGV4MSwgdW5z
aWduZWQgaW5kZXgyKQogICAgIHsKLSAgICAgICAgY29uc3QgRm9udCogZiA9IG1fZm9udHNbaW5k
ZXgxXTsKKyAgICAgICAgY29uc3QgRm9udCogZm9udCA9IG1fZm9udHNbaW5kZXgxXTsKICAgICAg
ICAgbV9mb250c1tpbmRleDFdID0gbV9mb250c1tpbmRleDJdOwotICAgICAgICBtX2ZvbnRzW2lu
ZGV4Ml0gPSBmOworICAgICAgICBtX2ZvbnRzW2luZGV4Ml0gPSBmb250OwogCi0gICAgICAgIEds
eXBoQnVmZmVyR2x5cGggZyA9IG1fZ2x5cGhzW2luZGV4MV07CisgICAgICAgIEdseXBoQnVmZmVy
R2x5cGggZ2x5cGggPSBtX2dseXBoc1tpbmRleDFdOwogICAgICAgICBtX2dseXBoc1tpbmRleDFd
ID0gbV9nbHlwaHNbaW5kZXgyXTsKLSAgICAgICAgbV9nbHlwaHNbaW5kZXgyXSA9IGc7CisgICAg
ICAgIG1fZ2x5cGhzW2luZGV4Ml0gPSBnbHlwaDsKIAotICAgICAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgcyA9IG1fYWR2YW5jZXNbaW5kZXgxXTsKKyAgICAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGFk
dmFuY2UgPSBtX2FkdmFuY2VzW2luZGV4MV07CiAgICAgICAgIG1fYWR2YW5jZXNbaW5kZXgxXSA9
IG1fYWR2YW5jZXNbaW5kZXgyXTsKLSAgICAgICAgbV9hZHZhbmNlc1tpbmRleDJdID0gczsKKyAg
ICAgICAgbV9hZHZhbmNlc1tpbmRleDJdID0gYWR2YW5jZTsKKworICAgICAgICBHbHlwaEJ1ZmZl
clN0cmluZ09mZnNldCBvZmZzZXQgPSBtX29mZnNldHNJblN0cmluZ1tpbmRleDFdOworICAgICAg
ICBtX29mZnNldHNJblN0cmluZ1tpbmRleDFdID0gbV9vZmZzZXRzSW5TdHJpbmdbaW5kZXgyXTsK
KyAgICAgICAgbV9vZmZzZXRzSW5TdHJpbmdbaW5kZXgyXSA9IG9mZnNldDsKICAgICB9CiAKLSAg
ICBWZWN0b3I8Y29uc3QgRm9udCosIDIwNDg+IG1fZm9udHM7Ci0gICAgVmVjdG9yPEdseXBoQnVm
ZmVyR2x5cGgsIDIwNDg+IG1fZ2x5cGhzOwotICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2Us
IDIwNDg+IG1fYWR2YW5jZXM7CisgICAgVmVjdG9yPGNvbnN0IEZvbnQqLCAxMDI0PiBtX2ZvbnRz
OworICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMDI0PiBtX2dseXBoczsKKyAgICBWZWN0
b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMDI0PiBtX2FkdmFuY2VzOworICAgIFZlY3RvcjxHbHlw
aEJ1ZmZlclN0cmluZ09mZnNldCwgMTAyND4gbV9vZmZzZXRzSW5TdHJpbmc7CiAgICAgR2x5cGhC
dWZmZXJBZHZhbmNlIG1faW5pdGlhbEFkdmFuY2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjx1bnNpZ25lZCwgMjA0OD4+IG1fb2Zmc2V0c0luU3RyaW5nOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="421176"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>