<?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>147807</bug_id>
          
          <creation_ts>2015-08-07 23:39:24 -0700</creation_ts>
          <short_desc>Migrate fontWithFamilySpecialCase() to Core Text</short_desc>
          <delta_ts>2015-08-07 23:40:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116011</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-07 23:39:24 -0700</bug_when>
    <thetext>Migrate fontWithFamilySpecialCase() to Core Text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116012</commentid>
    <comment_count>1</comment_count>
      <attachid>258564</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-07 23:40:58 -0700</bug_when>
    <thetext>Created attachment 258564
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258564</attachid>
            <date>2015-08-07 23:40:58 -0700</date>
            <delta_ts>2015-08-07 23:40:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147807-20150807234047.patch</filename>
            <type>text/plain</type>
            <size>29030</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODUyY2IyM2U5Nzc0ZDgw
MWYyOTVkZTI5NzdmMWI2YTUwNGEwZDYyNC4uZjQwNDE0MzMwZWExZDA5MmU1ODAwYjE5ODc3MDA1
OGUyZWNjMDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACisyMDE1LTA4LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBm
b250V2l0aEZhbWlseVNwZWNpYWxDYXNlKCkgdG8gQ29yZSBUZXh0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphcHBlbmRSYXdUcnVlVHlwZUZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9D
VFdlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpmb250V2l0aEZhbWlseVNwZWNpYWxDYXNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6dG9OU0ZvbnRUcmFpdHMpOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dFdpdGhGYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpjcmVhdGVGb250UGxh
dGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnRvTlNGb250V2VpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UpOiBEZWxldGVkLgor
CiAyMDE1LTA4LTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW09TIFhdIFJlbW92ZSBkZWFkIGNvZGUgZnJvbSBGb250Q2FjaGU6OmNyZWF0ZUZv
bnRQbGF0Zm9ybURhdGEoKQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ3ODA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA0YjFiNzg0OWY0ZWU0ZDQ4MWI2NTRkNmUzMDVmZjM3Yjc0
OGI0NWM3Li44N2VkNjZiNzA2NzI4MzM0M2Q0MjNhYTcxZjJkMGQxYzRmYjk3OWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
NTQsNiArOTU0LDcgQEAKIAkJMUMzOTY5RDAxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNv
cmVUZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi87IH07
CiAJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3JlVGV4dFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM1RTk4MEYxQTAyQ0VGQTAwMkRC
NTVGIC8qIENvcmVUZXh0U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUM2NDY2MjgxQTEyQzQyMDAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2NDY2MjcxQTEy
QzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTFDNzc3MjcwMUI3NUQ0QjIwMDBCOTI2MiAvKiBGb250Q2Fj
aGVDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUM3NzcyNkYxQjc1RDRCMjAwMEI5MjYyIC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi87IH07
CiAJCTFDODFCOTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFCOTVCMEU5NzMzMDgwMDI2NkUwNyAv
KiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCAqLzsgfTsKIAkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03Nzc1LDggKzc3NzYsOCBA
QAogCQkxNERDMEQwQjA5RkVDRkE0MDA3QjAyMzUgLyogTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0REMwRDM1
MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
REMwRDM2MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNERD
RjNCMDFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5LmNw
cDsgcGF0aCA9IEpTQ291bnRRdWV1aW5nU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxNERDRjNCMTFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJh
dGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU0NvdW50UXVldWluZ1N0
cmF0ZWd5Lmg7IHBhdGggPSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTE0RENGM0IwMUI2QkUyMDgwMDYyRDRDMiAvKiBKU0NvdW50UXVldWlu
Z1N0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ291
bnRRdWV1aW5nU3RyYXRlZ3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNERD
RjNCMTFCNkJFMjA4MDA2MkQ0QzIgLyogSlNDb3VudFF1ZXVpbmdTdHJhdGVneS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NvdW50UXVldWluZ1N0cmF0ZWd5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTgzNkQyMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNEU4Mzc4MzA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RTgzNzhEMDlGODVENEYwMEI4NUFFNCAvKiBKU0V2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTIwLDYgKzgxMjEsNyBAQAogCQkxQzM5NjlDRjFCNzQy
MTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRleHRTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUM3NzcyNkYxQjc1
RDRCMjAwMEI5MjYyIC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvbnRDYWNoZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMTI2MCw2ICsyMTI2Miw3IEBACiAJCUI1MzIwRDY4MTIyQTI0
RTkwMDJEMTQ0MCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUM3NzcyNkYxQjc1RDRCMjAwMEI5MjYyIC8qIEZvbnRDYWNoZUNvcmVUZXh0
LmggKi8sCiAJCQkJMUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0
LmNwcCAqLywKIAkJCQlCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2Nv
YS5tbSAqLywKIAkJCQk3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1tICov
LApAQCAtMjc0ODEsNiArMjc0ODQsNyBAQAogCQkJCUUxRjFFODMwMEMzQzJCQjkwMDZEQjM5MSAv
KiBYU0xURXh0ZW5zaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5RUQwODI0NUU1OTAw
MUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1MTJFMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTFD
Nzc3MjcwMUI3NUQ0QjIwMDBCOTI2MiAvKiBGb250Q2FjaGVDb3JlVGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NDE2RkU2MTg4MTBFRjgwMDA5RkM1RiAvKiBZb3VU
dWJlRW1iZWRTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3NjIyLDcgKzI3NjI2
LDYgQEAKIAkJCQlBMTFFOEMwNjFCMUUyOEZBMDAwM0E3QzcgLyogbW92ZUN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA3MUIxRTI4RkUwMDAzQTdDNyAvKiBub3J0aEVhc3RT
b3V0aFdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlBMTFFOEMwODFC
MUUyOTAyMDAwM0E3QzcgLyogbm9ydGhTb3V0aFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2Vz
ICovLAotCQkJCTE0OEI1MDAwMUI2OTA0QzUwMEM5NTRFNCAvKiBDb3VudFF1ZXVpbmdTdHJhdGVn
eS5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUExMUU4QzA5MUIxRTI5MDcwMDAzQTdDNyAvKiBu
b3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQlC
RThDNzUzMTEwNjgxMzI0MDAxRTkzRjUgLyogU3BlbGxpbmdEb3QucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQkwMUU2QzJFNDExOTRCMjgyMDA1MDgyMUMgLyogU3BlbGxpbmdEb3RAMngucG5nIGlu
IFJlc291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBkNjgwNjZhZTYyYmE2
ODk0MWI2Mzg0YzU1NDYwMTk1ZTk5YTYwMGRiLi5lYjE4ZWFlYWM4Y2M5MTA3Mjk5NjI3OGM1ZDBi
NzA1OTY1NWM1ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0yMywxMSArMjMsMjMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIkZvbnRDYWNoZS5oIgorI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZvbnRDYWNoZUNvcmVUZXh0LmgiCisKKyNpbmNsdWRlICJDb3JlVGV4dFNQSS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRSYXdUcnVl
VHlwZUZlYXR1cmUoQ0ZNdXRhYmxlQXJyYXlSZWYgZmVhdHVyZXMsIGludCB0eXBlLCBpbnQgc2Vs
ZWN0b3IpCit7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiB0eXBlTnVtYmVyID0gYWRvcHRD
RihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
dHlwZSkpOworICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc2VsZWN0b3JOdW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUs
ICZzZWxlY3RvcikpOworICAgIENGVHlwZVJlZiBmZWF0dXJlS2V5c1tdID0geyBrQ1RGb250RmVh
dHVyZVR5cGVJZGVudGlmaWVyS2V5LCBrQ1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktl
eSB9OworICAgIENGVHlwZVJlZiBmZWF0dXJlVmFsdWVzW10gPSB7IHR5cGVOdW1iZXIuZ2V0KCks
IHNlbGVjdG9yTnVtYmVyLmdldCgpIH07CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
ZmVhdHVyZSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZlYXR1cmVLZXlzLCBmZWF0dXJlVmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZlYXR1cmVLZXlz
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOworICAgIENGQXJyYXlBcHBlbmRWYWx1ZShmZWF0dXJlcywgZmVhdHVyZS5n
ZXQoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRUcnVlVHlwZUZlYXR1cmUoQ0ZN
dXRhYmxlQXJyYXlSZWYsIGNvbnN0IEZvbnRGZWF0dXJlJikKIHsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG1hcCBPcGVuVHlwZSBmZWF0dXJlIHN0cmluZ3MgdG8gdGhlIFRydWVUeXBlIGZlYXR1
cmUgdHlwZSBpZGVudGlmaWVycyBsaXN0ZWQgaW4gPENvcmVUZXh0L1NGTlRMYXlvdXRUeXBlcy5o
Pi4KQEAgLTY1LDQgKzc3LDcyIEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IGFwcGx5Rm9udEZlYXR1
cmVTZXR0aW5ncyhDVEZvbnRSZWYgb3JpZ2luYWxGb250LCBjb25zdCBGb250CiAgICAgcmV0dXJu
IGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKG9yaWdpbmFsRm9udCwgQ1RG
b250R2V0U2l6ZShvcmlnaW5hbEZvbnQpLCBudWxscHRyLCBkZXNjcmlwdG9yLmdldCgpKSk7CiB9
CiAKK3N0YXRpYyBDR0Zsb2F0IHRvQ1RXZWlnaHQoRm9udFdlaWdodCB3ZWlnaHQpCit7CisgICAg
dWludDE2X3QgcmF3V2VpZ2h0ID0gKHN0YXRpY19jYXN0PHVpbnQxNl90Pih3ZWlnaHQpICsgMSkg
KiAxMDA7CisgICAgaWYgKDQwMCA8IHJhd1dlaWdodCAmJiByYXdXZWlnaHQgPD0gNTAwKQorICAg
ICAgICByYXdXZWlnaHQgPSAocmF3V2VpZ2h0IC0gNDAwKSAqIDEuMyArIDQwMDsKKyAgICBlbHNl
IGlmICg1MDAgPCByYXdXZWlnaHQgJiYgcmF3V2VpZ2h0IDwgNjAwKQorICAgICAgICByYXdXZWln
aHQgPSAocmF3V2VpZ2h0IC0gNTAwKSAqIC43ICsgNTAwOworCisgICAgc3RhdGljIGNvbnN0IGZs
b2F0IGtTY2FsZVtdID0geworLyogICAgMCAqLyAtMS4wICwKKy8qICAxMDAgKi8gLTAuNyAsCisv
KiAgMjAwICovIC0wLjUgLAorLyogIDMwMCAqLyAtMC4yMywKKy8qICA0MDAgKi8gIDAuMCAsIC8v
ICJub3JtYWwiCisvKiAgNTAwICovICAwLjIgLAorLy8gIDAuMjQsIC8vIGtDVEZvbnRUcmFpdEJv
bGQKKy8qICA2MDAgKi8gIDAuMyAsCisvKiAgNzAwICovICAwLjQgLCAvLyAiYm9sZCIsIGtTdGFu
ZGFyZEJvbGRXZWlnaHRUcmFpdAorLyogIDgwMCAqLyAgMC42ICwKKy8qICA5MDAgKi8gIDAuOCAs
CisvKiAxMDAwICovICAxLjAKKyAgICB9OworCisgICAgYXV0byBsb3dlckluZGV4ID0gcmF3V2Vp
Z2h0IC8gMTAwOworICAgIGF1dG8gdXBwZXJJbmRleCA9IHN0ZDo6bWluKGxvd2VySW5kZXggKyAx
LCAxMCk7CisgICAgYXV0byBmcmFjdGlvbiA9IChyYXdXZWlnaHQgLSBsb3dlckluZGV4ICogMTAw
KSAvICh1cHBlckluZGV4ICogMTAwIC0gbG93ZXJJbmRleCAqIDEwMCk7CisgICAgcmV0dXJuIHN0
ZDo6Zm1hKGZyYWN0aW9uLCBrU2NhbGVbdXBwZXJJbmRleF0gLSBrU2NhbGVbbG93ZXJJbmRleF0s
IGtTY2FsZVtsb3dlckluZGV4XSk7Cit9CisKK1JldGFpblB0cjxDVEZvbnRSZWY+IGZvbnRXaXRo
RmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIEZvbnRXZWlnaHQg
d2VpZ2h0LCBDVEZvbnRTeW1ib2xpY1RyYWl0cyBkZXNpcmVkVHJhaXRzLCBmbG9hdCBzaXplKQor
eworICAgIGJvb2wgc3lzdGVtRm9udCA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAi
LXdlYmtpdC1zeXN0ZW0tZm9udCIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAi
LWFwcGxlLXN5c3RlbSIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZmFtaWx5LCAiLWFwcGxl
LXN5c3RlbS1mb250Iik7CisgICAgYm9vbCBtb25vc3BhY2VkTnVtYmVycyA9IGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoZmFtaWx5LCAiLWFwcGxlLXN5c3RlbS1tb25vc3BhY2VkLW51bWJlcnMiKTsK
KworICAgIGlmIChzeXN0ZW1Gb250IHx8IG1vbm9zcGFjZWROdW1iZXJzKSB7CisgICAgICAgIENH
RmxvYXQgd2VpZ2h0RmxvYXQgPSB0b0NUV2VpZ2h0KHdlaWdodCk7CisgICAgICAgIFJldGFpblB0
cjxDRk51bWJlclJlZj4gd2VpZ2h0TnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDR0Zsb2F0VHlwZSwgJndlaWdodEZsb2F0KSk7Cisg
ICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gZGVzaXJlZFRyYWl0c051bWJlciA9IGFkb3B0
Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDMyVHlw
ZSwgJmRlc2lyZWRUcmFpdHMpKTsKKyAgICAgICAgQ0ZUeXBlUmVmIHRyYWl0c0tleXNbXSA9IHsg
a0NURm9udFdlaWdodFRyYWl0LCBrQ1RGb250U3ltYm9saWNUcmFpdCB9OworICAgICAgICBDRlR5
cGVSZWYgdHJhaXRzVmFsdWVzW10gPSB7IHdlaWdodE51bWJlci5nZXQoKSwgZGVzaXJlZFRyYWl0
c051bWJlci5nZXQoKSB9OworICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiB0cmFp
dHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0cmFp
dHNLZXlzLCB0cmFpdHNWYWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhaXRzS2V5cyksICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKKworICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhdHRyaWJ1dGVzOwor
ICAgICAgICBpZiAobW9ub3NwYWNlZE51bWJlcnMpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxD
Rk11dGFibGVBcnJheVJlZj4gZmVhdHVyZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICAg
ICAgICAgIGFwcGVuZFJhd1RydWVUeXBlRmVhdHVyZShmZWF0dXJlcy5nZXQoKSwga051bWJlclNw
YWNpbmdUeXBlLCBrTW9ub3NwYWNlZE51bWJlcnNTZWxlY3Rvcik7CisgICAgICAgICAgICBDRlR5
cGVSZWYgYXR0cmlidXRlc0tleXNbXSA9IHsga0NURm9udFRyYWl0c0F0dHJpYnV0ZSwga0NURm9u
dEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OworICAgICAgICAgICAgQ0ZUeXBlUmVmIGF0dHJp
YnV0ZXNWYWx1ZXNbXSA9IHsgdHJhaXRzLmdldCgpLCBmZWF0dXJlcy5nZXQoKSB9OworICAgICAg
ICAgICAgYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGF0dHJpYnV0ZXNLZXlzLCBhdHRyaWJ1dGVzVmFsdWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHRyYWl0c0tleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlSZWYgdHJhaXRzUHRyID0gdHJhaXRzLmdldCgpOworICAgICAgICAgICAg
YXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChjb25zdCB2b2lkKiopJmtDVEZvbnRUcmFpdHNBdHRyaWJ1dGUsIChjb25zdCB2b2lkKiop
JnRyYWl0c1B0ciwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICB9CisKKyAgICAgICAgUmV0YWluUHRy
PENURm9udERlc2NyaXB0b3JSZWY+IHJlc3VsdERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVGb3JVSVR5cGUoa0NURm9udFVJRm9udFN5c3RlbSwgc2l6ZSwgbnVsbHB0
cikpOworICAgICAgICByZXN1bHREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKHJlc3VsdERlc2NyaXB0b3IuZ2V0KCksIGF0dHJpYnV0
ZXMuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnRE
ZXNjcmlwdG9yKHJlc3VsdERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsKKyAgICB9
CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtbWVudSIp
KQorICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3Io
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlRm9yVUlUeXBlKGtDVEZvbnRVSUZvbnRNZW51
SXRlbSwgc2l6ZSwgbnVsbHB0cikpLmdldCgpLCBzaXplLCBudWxscHRyKSk7CisKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBwbGUtc3RhdHVzLWJhciIpKQorICAg
ICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoYWRvcHRD
RihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlRm9yVUlUeXBlKGtDVEZvbnRVSUZvbnRTeXN0ZW0sIHNp
emUsIG51bGxwdHIpKS5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOworCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlNWYxZTYwMzg5Y2Ew
NGViZmQyZmY1YzUzYjVkMTEwZGE5OTE5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5oCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRDYWNoZUNvcmVUZXh0X2gKKyNkZWZp
bmUgRm9udENhY2hlQ29yZVRleHRfaAorCisjaW5jbHVkZSAiRm9udENhY2hlLmgiCisKKyNpbmNs
dWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFp
blB0cjxDVEZvbnRSZWY+IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHksIEZvbnRXZWlnaHQsIENURm9udFN5bWJvbGljVHJhaXRzLCBmbG9hdCBzaXpl
KTsKKworfQorCisjZW5kaWYgLyogRm9udENhY2hlQ29yZVRleHRfaCAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KaW5kZXgg
MTU4ZmJiMGRiNWYxYmUxODY3NGYwMDQ2NDVhYzM4NzgzMjE5N2JiYS4uMGIyNTNlMjA4Yjc1ZTlk
OTg4Yjc0YmZlZjgwMjk4MTVmZDBiMjMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCkBAIC0zNSw2ICszNSw3IEBACiAj
aW1wb3J0ICJDb3JlR3JhcGhpY3NTUEkuaCIKICNpbXBvcnQgIkNvcmVUZXh0U1BJLmgiCiAjaW1w
b3J0ICJGb250LmgiCisjaW1wb3J0ICJGb250Q2FjaGVDb3JlVGV4dC5oIgogI2ltcG9ydCAiRm9u
dENhc2NhZGUuaCIKICNpbXBvcnQgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbXBvcnQgIk5TRm9u
dFNQSS5oIgpAQCAtMTU5LDYgKzE2MCwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtZW1iZXJE
ZXNpcmVkRmFtaWx5VG9BdmFpbGFibGVGYW1pbHlNYXBwaW5nKGNvbnN0IEF0b21pY1N0cgogICAg
IGZhbWlseU1hcHBpbmcuYWRkKHN0ZDo6bWFrZV9wYWlyKGRlc2lyZWRGYW1pbHksIGRlc2lyZWRU
cmFpdHMpLCB2YWx1ZSk7CiB9CiAKK3N0YXRpYyBOU0ZvbnRUcmFpdE1hc2sgdG9OU0ZvbnRUcmFp
dHMoQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzKQoreworICAgIHJldHVybiAodHJhaXRzICYg
a0NURm9udEl0YWxpY1RyYWl0ID8gTlNGb250SXRhbGljVHJhaXQgOiAwKSB8ICh0cmFpdHMgJiBr
Q1RGb250Qm9sZFRyYWl0ID8gTlNGb250Qm9sZFRyYWl0IDogMCk7Cit9CisKICNlbHNlCiAKIHN0
YXRpYyB1aW50MTZfdCB0b0NvcmVUZXh0Rm9udFdlaWdodChGb250V2VpZ2h0IGZvbnRXZWlnaHQp
CkBAIC0yMDksNjUgKzIxNSwxMyBAQCBzdGF0aWMgaW50IHRvQXBwS2l0Rm9udFdlaWdodChGb250
V2VpZ2h0IGZvbnRXZWlnaHQpCiAgICAgcmV0dXJuIGFwcEtpdEZvbnRXZWlnaHRzW2ZvbnRXZWln
aHRdOwogfQogCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAK
LXN0YXRpYyBDR0Zsb2F0IHRvTlNGb250V2VpZ2h0KEZvbnRXZWlnaHQgZm9udFdlaWdodCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBuc0ZvbnRXZWlnaHRzW10gPSB7Ci0gICAgICAgIE5T
Rm9udFdlaWdodFVsdHJhTGlnaHQsCi0gICAgICAgIE5TRm9udFdlaWdodFRoaW4sCi0gICAgICAg
IE5TRm9udFdlaWdodExpZ2h0LAotICAgICAgICBOU0ZvbnRXZWlnaHRSZWd1bGFyLAotICAgICAg
ICBOU0ZvbnRXZWlnaHRNZWRpdW0sCi0gICAgICAgIE5TRm9udFdlaWdodFNlbWlib2xkLAotICAg
ICAgICBOU0ZvbnRXZWlnaHRCb2xkLAotICAgICAgICBOU0ZvbnRXZWlnaHRIZWF2eSwKLSAgICAg
ICAgTlNGb250V2VpZ2h0QmxhY2sKLSAgICB9OwotICAgIEFTU0VSVChmb250V2VpZ2h0ID49IDAg
JiYgZm9udFdlaWdodCA8PSA4KTsKLSAgICByZXR1cm4gbnNGb250V2VpZ2h0c1tmb250V2VpZ2h0
XTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgT3B0aW9uYWw8TlNGb250Kj4gZm9udFdpdGhGYW1pbHlT
cGVjaWFsQ2FzZShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgRm9udFdlaWdodCB3ZWlnaHQs
IE5TRm9udFRyYWl0TWFzayBkZXNpcmVkVHJhaXRzLCBmbG9hdCBzaXplKQotewotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi13ZWJraXQtc3lzdGVtLWZvbnQiKQotICAg
ICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zeXN0ZW0iKQot
ICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1zeXN0ZW0t
Zm9udCIpKSB7Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAK
LSAgICAgICAgTlNGb250ICpyZXN1bHQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6c2l6ZSB3
ZWlnaHQ6dG9OU0ZvbnRXZWlnaHQod2VpZ2h0KV07Ci0jZWxzZQotICAgICAgICBOU0ZvbnQgKnJl
c3VsdCA9ICh3ZWlnaHQgPj0gRm9udFdlaWdodDYwMCkgPyBbTlNGb250IGJvbGRTeXN0ZW1Gb250
T2ZTaXplOnNpemVdIDogW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotI2VuZGlmCi0g
ICAgICAgIGlmIChkZXNpcmVkVHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250
OnJlc3VsdCB0b0hhdmVUcmFpdDpkZXNpcmVkVHJhaXRzXTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShmYW1pbHksICItYXBw
bGUtc3lzdGVtLW1vbm9zcGFjZWQtbnVtYmVycyIpKSB7Ci0gICAgICAgIE5TQXJyYXkgKmZlYXR1
cmVBcnJheSA9IEBbIEB7IE5TRm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSA6IEAoa051bWJl
clNwYWNpbmdUeXBlKSwKLSAgICAgICAgICAgIE5TRm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZp
ZXJLZXkgOiBAKGtNb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yKSB9IF07Ci0KLSAgICAgICAgTlNG
b250KiBzeXN0ZW1Gb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOnNpemVdOwotICAgICAg
ICBOU0ZvbnREZXNjcmlwdG9yKiBkZXNjID0gW3N5c3RlbUZvbnQuZm9udERlc2NyaXB0b3IgZm9u
dERlc2NyaXB0b3JCeUFkZGluZ0F0dHJpYnV0ZXM6QHsgTlNGb250RmVhdHVyZVNldHRpbmdzQXR0
cmlidXRlIDogZmVhdHVyZUFycmF5IH1dOwotICAgICAgICByZXR1cm4gW05TRm9udCBmb250V2l0
aERlc2NyaXB0b3I6ZGVzYyBzaXplOnNpemVdOwotICAgIH0KLQotICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKGZhbWlseSwgIi1hcHBsZS1tZW51IikpCi0gICAgICAgIHJldHVybiBbTlNG
b250IG1lbnVGb250T2ZTaXplOnNpemVdOwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoZmFtaWx5LCAiLWFwcGxlLXN0YXR1cy1iYXIiKSkKLSAgICAgICAgcmV0dXJuIFtOU0ZvbnQg
bGFiZWxGb250T2ZTaXplOnNpemVdOwotCi0gICAgcmV0dXJuIE9wdGlvbmFsPE5TRm9udCo+KE51
bGxvcHQpOwotfQotCiAvLyBGYW1pbHkgbmFtZSBpcyBzb21ld2hhdCBvZiBhIG1pc25vbWVyIGhl
cmUuIFdlIGZpcnN0IGF0dGVtcHQgdG8gZmluZCBhbiBleGFjdCBtYXRjaAogLy8gY29tcGFyaW5n
IHRoZSBkZXNpcmVkRmFtaWx5IHRvIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgdGhlIGluc3RhbGxl
ZCBmb250cy4gSWYgdGhhdCBmYWlscwogLy8gd2UgdGhlbiBkbyBhIHNlYXJjaCBiYXNlZCBvbiB0
aGUgZmFtaWx5IG5hbWVzIG9mIHRoZSBpbnN0YWxsZWQgZm9udHMuCi1zdGF0aWMgTlNGb250ICpm
b250V2l0aEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgTlNGb250VHJhaXRNYXNr
IGRlc2lyZWRUcmFpdHMsIEZvbnRXZWlnaHQgd2VpZ2h0LCBjb25zdCBGb250RmVhdHVyZVNldHRp
bmdzKiBmZWF0dXJlU2V0dGluZ3MsIGZsb2F0IHNpemUpCitzdGF0aWMgUmV0YWluUHRyPENURm9u
dFJlZj4gZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIENURm9udFN5
bWJvbGljVHJhaXRzIGRlc2lyZWRUcmFpdHMsIEZvbnRXZWlnaHQgd2VpZ2h0LCBjb25zdCBGb250
RmVhdHVyZVNldHRpbmdzKiBmZWF0dXJlU2V0dGluZ3MsIGZsb2F0IHNpemUpCiB7Ci0gICAgaWYg
KGNvbnN0IGF1dG8mIHNwZWNpYWxDYXNlID0gZm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShmYW1p
bHksIHdlaWdodCwgZGVzaXJlZFRyYWl0cywgc2l6ZSkpCi0gICAgICAgIHJldHVybiBzcGVjaWFs
Q2FzZS52YWx1ZSgpOworICAgIGlmIChSZXRhaW5QdHI8Q1RGb250UmVmPiBzcGVjaWFsQ2FzZSA9
IGZvbnRXaXRoRmFtaWx5U3BlY2lhbENhc2UoZmFtaWx5LCB3ZWlnaHQsIGRlc2lyZWRUcmFpdHMs
IHNpemUpKQorICAgICAgICByZXR1cm4gc3BlY2lhbENhc2U7CiAKICAgICBOU0ZvbnRNYW5hZ2Vy
ICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKICAgICBO
U1N0cmluZyAqYXZhaWxhYmxlRmFtaWx5OwpAQCAtMjc4LDE4ICsyMzIsMTUgQEAgc3RhdGljIE5T
Rm9udCAqZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHksIE5TRm9udFRy
YWl0TWFzayBkZXNpcmUKIAogICAgIGNvbnN0IGF1dG8mIHdoaXRlbGlzdCA9IGZvbnRXaGl0ZWxp
c3QoKTsKICAgICBpZiAod2hpdGVsaXN0LnNpemUoKSAmJiAhd2hpdGVsaXN0LmNvbnRhaW5zKGZh
bWlseS5sb3dlcigpKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBDVEZvbnRTeW1ib2xpY1Ry
YWl0cyByZXF1ZXN0ZWRUcmFpdHMgPSAwOwotICAgIGlmIChkZXNpcmVkVHJhaXRzICYgTlNGb250
SXRhbGljVHJhaXQpCi0gICAgICAgIHJlcXVlc3RlZFRyYWl0cyB8PSBrQ1RGb250SXRhbGljVHJh
aXQ7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmICh3ZWlnaHQgPj0gRm9udFdlaWdo
dDYwMCkKLSAgICAgICAgcmVxdWVzdGVkVHJhaXRzIHw9IGtDVEZvbnRCb2xkVHJhaXQ7CisgICAg
ICAgIGRlc2lyZWRUcmFpdHMgfD0ga0NURm9udEJvbGRUcmFpdDsKIAogICAgIE5TU3RyaW5nICpk
ZXNpcmVkRmFtaWx5ID0gZmFtaWx5OwotICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGZvdW5kRm9u
dCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlRm9yQ1NTKChDRlN0cmluZ1JlZilkZXNpcmVkRmFtaWx5
LCB0b0NvcmVUZXh0Rm9udFdlaWdodCh3ZWlnaHQpLCByZXF1ZXN0ZWRUcmFpdHMsIHNpemUpKTsK
KyAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb3VuZEZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZUZvckNTUygoQ0ZTdHJpbmdSZWYpZGVzaXJlZEZhbWlseSwgdG9Db3JlVGV4dEZvbnRXZWlnaHQo
d2VpZ2h0KSwgZGVzaXJlZFRyYWl0cywgc2l6ZSkpOwogICAgIGZvdW5kRm9udCA9IGFwcGx5Rm9u
dEZlYXR1cmVTZXR0aW5ncyhmb3VuZEZvbnQuZ2V0KCksIGZlYXR1cmVTZXR0aW5ncyk7CiAgICAg
aWYgKCFmb3VuZEZvbnQpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGZvbnQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlJldGFpbihmb3VuZEZvbnQuZ2V0
KCkpKTsKICAgICBhdmFpbGFibGVGYW1pbHkgPSBbZm9udCBmYW1pbHlOYW1lXTsKICAgICBjaG9z
ZW5XZWlnaHQgPSBbZm9udE1hbmFnZXIgd2VpZ2h0T2ZGb250OmZvbnRdOwpAQCAtMjk4LDExICsy
NDksMTEgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmUKIAogICAgIFVOVVNFRF9QQVJBTShmZWF0
dXJlU2V0dGluZ3MpOwogCi0gICAgTlNGb250VHJhaXRNYXNrIGRlc2lyZWRUcmFpdHNGb3JOYW1l
TWF0Y2ggPSBkZXNpcmVkVHJhaXRzIHwgKHdlaWdodCA+PSBGb250V2VpZ2h0NjAwID8gTlNCb2xk
Rm9udE1hc2sgOiAwKTsKKyAgICBOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlZFRyYWl0c0Zvck5hbWVN
YXRjaCA9IHRvTlNGb250VHJhaXRzKGRlc2lyZWRUcmFpdHMpIHwgKHdlaWdodCA+PSBGb250V2Vp
Z2h0NjAwID8gTlNCb2xkRm9udE1hc2sgOiAwKTsKICAgICBpZiAoaGFzRGVzaXJlZEZhbWlseVRv
QXZhaWxhYmxlRmFtaWx5TWFwcGluZyhmYW1pbHksIGRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2gs
IGF2YWlsYWJsZUZhbWlseSkpIHsKICAgICAgICAgaWYgKCFhdmFpbGFibGVGYW1pbHkpIHsKICAg
ICAgICAgICAgIC8vIFdlIGFscmVhZHkga25vdyB0aGUgZGVzaXJlZCBmb250IGZhbWlseSBkb2Vz
IG5vdCBtYXAgdG8gYW55IGF2YWlsYWJsZSBmb250IGZhbWlseS4KLSAgICAgICAgICAgIHJldHVy
biBuaWw7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzI3LDExICsyNzgsMTEgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoY29uc3Qg
QXRvbWljU3RyaW5nJiBmYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmUKICAgICAgICAgICAg
ICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIE9zYWthLU1vbm8uIEFjY29yZGluZyB0byA8cmRhcjov
L3Byb2JsZW0vMzk5OTQ2Nz4sIHdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAgLy8gdHJl
YXQgT3Nha2EtTW9ubyBhcyBmaXhlZCBwaXRjaC4KICAgICAgICAgICAgICAgICAgICAgaWYgKFtk
ZXNpcmVkRmFtaWx5IGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJPc2FrYS1Nb25vIl0gPT0gTlNP
cmRlcmVkU2FtZSAmJiAhZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuYW1lTWF0Y2hlZEZvbnQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKENURm9udFJlZiluYW1lTWF0Y2hlZEZvbnQ7CiAKICAgICAgICAgICAgICAgICAg
ICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6bmFt
ZU1hdGNoZWRGb250XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCh0cmFpdHMgJiBkZXNpcmVk
VHJhaXRzRm9yTmFtZU1hdGNoKSA9PSBkZXNpcmVkVHJhaXRzRm9yTmFtZU1hdGNoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFtmb250TWFuYWdlciBjb252ZXJ0Rm9udDpuYW1lTWF0
Y2hlZEZvbnQgdG9IYXZlVHJhaXQ6ZGVzaXJlZFRyYWl0c0Zvck5hbWVNYXRjaF07CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKENURm9udFJlZilbZm9udE1hbmFnZXIgY29udmVydEZv
bnQ6bmFtZU1hdGNoZWRGb250IHRvSGF2ZVRyYWl0OmRlc2lyZWRUcmFpdHNGb3JOYW1lTWF0Y2hd
OwogCiAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZhbWlseSA9IFtuYW1lTWF0Y2hlZEZv
bnQgZmFtaWx5TmFtZV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQxLDcgKzI5
Miw3IEBAIHN0YXRpYyBOU0ZvbnQgKmZvbnRXaXRoRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5LCBOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlCiAKICAgICAgICAgcmVtZW1iZXJEZXNpcmVk
RmFtaWx5VG9BdmFpbGFibGVGYW1pbHlNYXBwaW5nKGZhbWlseSwgZGVzaXJlZFRyYWl0c0Zvck5h
bWVNYXRjaCwgYXZhaWxhYmxlRmFtaWx5KTsKICAgICAgICAgaWYgKCFhdmFpbGFibGVGYW1pbHkp
Ci0gICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgLy8gRm91bmQgYSBmYW1pbHksIG5vdyBmaWd1cmUgb3V0IHdoYXQgd2VpZ2h0
IGFuZCB0cmFpdHMgdG8gdXNlLgpAQCAtMzYwLDkgKzMxMSw5IEBAIHN0YXRpYyBOU0ZvbnQgKmZv
bnRXaXRoRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBOU0ZvbnRUcmFpdE1hc2sg
ZGVzaXJlCiAKICAgICAgICAgQk9PTCBuZXdXaW5uZXI7CiAgICAgICAgIGlmICghY2hvc2VGb250
KQotICAgICAgICAgICAgbmV3V2lubmVyID0gYWNjZXB0YWJsZUNob2ljZShkZXNpcmVkVHJhaXRz
LCBmb250VHJhaXRzKTsKKyAgICAgICAgICAgIG5ld1dpbm5lciA9IGFjY2VwdGFibGVDaG9pY2Uo
dG9OU0ZvbnRUcmFpdHMoZGVzaXJlZFRyYWl0cyksIGZvbnRUcmFpdHMpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBuZXdXaW5uZXIgPSBiZXR0ZXJDaG9pY2UoZGVzaXJlZFRyYWl0cywgYXBw
S2l0RGVzaXJlZFdlaWdodCwgY2hvc2VuVHJhaXRzLCBjaG9zZW5XZWlnaHQsIGZvbnRUcmFpdHMs
IGZvbnRXZWlnaHQpOworICAgICAgICAgICAgbmV3V2lubmVyID0gYmV0dGVyQ2hvaWNlKHRvTlNG
b250VHJhaXRzKGRlc2lyZWRUcmFpdHMpLCBhcHBLaXREZXNpcmVkV2VpZ2h0LCBjaG9zZW5UcmFp
dHMsIGNob3NlbldlaWdodCwgZm9udFRyYWl0cywgZm9udFdlaWdodCk7CiAKICAgICAgICAgaWYg
KG5ld1dpbm5lcikgewogICAgICAgICAgICAgY2hvc2VGb250ID0gWUVTOwpAQCAtMzcwLDMzICsz
MjEsMzMgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5n
JiBmYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmUKICAgICAgICAgICAgIGNob3NlblRyYWl0
cyA9IGZvbnRUcmFpdHM7CiAgICAgICAgICAgICBjaG9zZW5GdWxsTmFtZSA9IGZvbnRGdWxsTmFt
ZTsKIAotICAgICAgICAgICAgaWYgKGNob3NlbldlaWdodCA9PSBhcHBLaXREZXNpcmVkV2VpZ2h0
ICYmIChjaG9zZW5UcmFpdHMgJiBJTVBPUlRBTlRfRk9OVF9UUkFJVFMpID09IChkZXNpcmVkVHJh
aXRzICYgSU1QT1JUQU5UX0ZPTlRfVFJBSVRTKSkKKyAgICAgICAgICAgIGlmIChjaG9zZW5XZWln
aHQgPT0gYXBwS2l0RGVzaXJlZFdlaWdodCAmJiAoY2hvc2VuVHJhaXRzICYgSU1QT1JUQU5UX0ZP
TlRfVFJBSVRTKSA9PSAodG9OU0ZvbnRUcmFpdHMoZGVzaXJlZFRyYWl0cykgJiBJTVBPUlRBTlRf
Rk9OVF9UUkFJVFMpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCFjaG9zZUZvbnQpCi0gICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhOYW1lOmNob3NlbkZ1bGxO
YW1lIHNpemU6c2l6ZV07CiAKICAgICBpZiAoIWZvbnQpCi0gICAgICAgIHJldHVybiBuaWw7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgTlNGb250VHJhaXRNYXNrIGFjdHVhbFRyYWl0
cyA9IDA7Ci0gICAgaWYgKGRlc2lyZWRUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCkKKyAgICBp
ZiAoZGVzaXJlZFRyYWl0cyAmIGtDVEZvbnRJdGFsaWNUcmFpdCkKICAgICAgICAgYWN0dWFsVHJh
aXRzID0gW2ZvbnRNYW5hZ2VyIHRyYWl0c09mRm9udDpmb250XTsKICAgICBpbnQgYWN0dWFsV2Vp
Z2h0ID0gW2ZvbnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XTsKIAogICAgIGJvb2wgc3ludGhl
dGljQm9sZCA9IHRvQXBwS2l0Rm9udFdlaWdodCh3ZWlnaHQpID49IDcgJiYgYWN0dWFsV2VpZ2h0
IDwgNzsKLSAgICBib29sIHN5bnRoZXRpY09ibGlxdWUgPSAoZGVzaXJlZFRyYWl0cyAmIE5TRm9u
dEl0YWxpY1RyYWl0KSAmJiAhKGFjdHVhbFRyYWl0cyAmIE5TRm9udEl0YWxpY1RyYWl0KTsKKyAg
ICBib29sIHN5bnRoZXRpY09ibGlxdWUgPSAoZGVzaXJlZFRyYWl0cyAmIGtDVEZvbnRJdGFsaWNU
cmFpdCkgJiYgIShhY3R1YWxUcmFpdHMgJiBOU0ZvbnRJdGFsaWNUcmFpdCk7CiAKICAgICAvLyBU
aGVyZSBhcmUgc29tZSBtYWxmb3JtZWQgZm9udHMgdGhhdCB3aWxsIGJlIGNvcnJlY3RseSByZXR1
cm5lZCBieSAtZm9udFdpdGhGYW1pbHk6dHJhaXRzOndlaWdodDpzaXplOiBhcyBhIG1hdGNoIGZv
ciBhIHBhcnRpY3VsYXIgdHJhaXQsCiAgICAgLy8gdGhvdWdoIC1bTlNGb250TWFuYWdlciB0cmFp
dHNPZkZvbnQ6XSBpbmNvcnJlY3RseSBjbGFpbXMgdGhlIGZvbnQgZG9lcyBub3QgaGF2ZSB0aGUg
c3BlY2lmaWVkIHRyYWl0LiBUaGlzIGNvdWxkIHJlc3VsdCBpbiBhcHBseWluZyAKICAgICAvLyBz
eW50aGV0aWMgYm9sZCBvbiB0b3Agb2YgYW4gYWxyZWFkeS1ib2xkIGZvbnQsIGFzIHJlcG9ydGVk
IGluIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTQ2Pi4gVG8gd29y
ayBhcm91bmQgdGhpcwogICAgIC8vIHByb2JsZW0sIGlmIHdlIGdvdCBhbiBhcHBhcmVudCBleGFj
dCBtYXRjaCwgYnV0IHRoZSByZXF1ZXN0ZWQgdHJhaXRzIGFyZW4ndCBwcmVzZW50IGluIHRoZSBt
YXRjaGVkIGZvbnQsIHdlJ2xsIHRyeSB0byBnZXQgYSBmb250IGZyb20gCiAgICAgLy8gdGhlIHNh
bWUgZmFtaWx5IHdpdGhvdXQgdGhvc2UgdHJhaXRzICh0byBhcHBseSB0aGUgc3ludGhldGljIHRy
YWl0cyB0byBsYXRlcikuCi0gICAgTlNGb250VHJhaXRNYXNrIG5vblN5bnRoZXRpY1RyYWl0cyA9
IGRlc2lyZWRUcmFpdHM7CisgICAgTlNGb250VHJhaXRNYXNrIG5vblN5bnRoZXRpY1RyYWl0cyA9
IHRvTlNGb250VHJhaXRzKGRlc2lyZWRUcmFpdHMpOwogCiAgICAgaWYgKHN5bnRoZXRpY0JvbGQp
CiAgICAgICAgIG5vblN5bnRoZXRpY1RyYWl0cyAmPSB+TlNCb2xkRm9udE1hc2s7CkBAIC00MDQs
NyArMzU1LDcgQEAgc3RhdGljIE5TRm9udCAqZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHksIE5TRm9udFRyYWl0TWFzayBkZXNpcmUKICAgICBpZiAoc3ludGhldGljT2Js
aXF1ZSkKICAgICAgICAgbm9uU3ludGhldGljVHJhaXRzICY9IH5OU0l0YWxpY0ZvbnRNYXNrOwog
Ci0gICAgaWYgKG5vblN5bnRoZXRpY1RyYWl0cyAhPSBkZXNpcmVkVHJhaXRzKSB7CisgICAgaWYg
KG5vblN5bnRoZXRpY1RyYWl0cyAhPSB0b05TRm9udFRyYWl0cyhkZXNpcmVkVHJhaXRzKSkgewog
ICAgICAgICBOU0ZvbnQgKmZvbnRXaXRob3V0U3ludGhldGljVHJhaXRzID0gW2ZvbnRNYW5hZ2Vy
IGZvbnRXaXRoRmFtaWx5OmF2YWlsYWJsZUZhbWlseSB0cmFpdHM6bm9uU3ludGhldGljVHJhaXRz
IHdlaWdodDpjaG9zZW5XZWlnaHQgc2l6ZTpzaXplXTsKICAgICAgICAgaWYgKGZvbnRXaXRob3V0
U3ludGhldGljVHJhaXRzKQogICAgICAgICAgICAgZm9udCA9IGZvbnRXaXRob3V0U3ludGhldGlj
VHJhaXRzOwpAQCAtNDEyLDcgKzM2Myw3IEBAIHN0YXRpYyBOU0ZvbnQgKmZvbnRXaXRoRmFtaWx5
KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBOU0ZvbnRUcmFpdE1hc2sgZGVzaXJlCiAKICNl
bmRpZgogCi0gICAgcmV0dXJuIGZvbnQ7CisgICAgcmV0dXJuIChDVEZvbnRSZWYpZm9udDsKIH0K
IAogLy8gVGhlICJ2b2lkKiIgcGFyYW1ldGVyIG1ha2VzIHRoZSBmdW5jdGlvbiBtYXRjaCB0aGUg
cHJvdG90eXBlIGZvciBjYWxsYmFja3MgZnJvbSBjYWxsT25NYWluVGhyZWFkLgpAQCAtNjc2LDEx
ICs2MjcsMTEgQEAgdm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9yPHVuc2lnbmUKIAogc3RkOjp1bmlxdWVfcHRyPEZv
bnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1p
bHkpCiB7Ci0gICAgTlNGb250VHJhaXRNYXNrIHRyYWl0cyA9IGZvbnREZXNjcmlwdGlvbi5pdGFs
aWMoKSA/IE5TRm9udEl0YWxpY1RyYWl0IDogMDsKKyAgICBDVEZvbnRTeW1ib2xpY1RyYWl0cyB0
cmFpdHMgPSBmb250RGVzY3JpcHRpb24uaXRhbGljKCkgPyBrQ1RGb250SXRhbGljVHJhaXQgOiAw
OwogICAgIGZsb2F0IHNpemUgPSBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKTsK
IAotICAgIE5TRm9udCAqbnNGb250ID0gZm9udFdpdGhGYW1pbHkoZmFtaWx5LCB0cmFpdHMsIGZv
bnREZXNjcmlwdGlvbi53ZWlnaHQoKSwgZm9udERlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygp
LCBzaXplKTsKLSAgICBpZiAoIW5zRm9udCkgeworICAgIFJldGFpblB0cjxDVEZvbnRSZWY+IGN0
Rm9udCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgdHJhaXRzLCBmb250RGVzY3JpcHRpb24ud2Vp
Z2h0KCksIGZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3MoKSwgc2l6ZSk7CisgICAgaWYg
KCFjdEZvbnQpIHsKICAgICAgICAgaWYgKCFzaG91bGRBdXRvQWN0aXZhdGVGb250SWZOZWVkZWQo
ZmFtaWx5KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02ODgsMjIgKzYzOSwy
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVG
b250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogICAgICAgICAvLyBJZ25vcmUgdGhlIHJlc3Vs
dCBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIG91ciBvd24gYWxnb3JpdGhtIHRvIGFjdHVhbGx5IGZp
bmQgdGhlIGZvbnQuCiAgICAgICAgIFtOU0ZvbnQgZm9udFdpdGhOYW1lOmZhbWlseSBzaXplOnNp
emVdOwogCi0gICAgICAgIG5zRm9udCA9IGZvbnRXaXRoRmFtaWx5KGZhbWlseSwgdHJhaXRzLCBm
b250RGVzY3JpcHRpb24ud2VpZ2h0KCksIGZvbnREZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGluZ3Mo
KSwgc2l6ZSk7Ci0gICAgICAgIGlmICghbnNGb250KQorICAgICAgICBjdEZvbnQgPSBmb250V2l0
aEZhbWlseShmYW1pbHksIHRyYWl0cywgZm9udERlc2NyaXB0aW9uLndlaWdodCgpLCBmb250RGVz
Y3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCksIHNpemUpOworICAgICAgICBpZiAoIWN0Rm9udCkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIE5TRm9udE1hbmFnZXIg
KmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOwotICAgIE5T
Rm9udFRyYWl0TWFzayBhY3R1YWxUcmFpdHMgPSAwOworICAgIENURm9udFN5bWJvbGljVHJhaXRz
IGFjdHVhbFRyYWl0cyA9IDA7CiAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSkKLSAg
ICAgICAgYWN0dWFsVHJhaXRzID0gW2ZvbnRNYW5hZ2VyIHRyYWl0c09mRm9udDpuc0ZvbnRdOwot
ICAgIE5TSW50ZWdlciBhY3R1YWxXZWlnaHQgPSBbZm9udE1hbmFnZXIgd2VpZ2h0T2ZGb250Om5z
Rm9udF07CisgICAgICAgIGFjdHVhbFRyYWl0cyA9IENURm9udEdldFN5bWJvbGljVHJhaXRzKGN0
Rm9udC5nZXQoKSk7CisgICAgTlNJbnRlZ2VyIGFjdHVhbFdlaWdodCA9IFtmb250TWFuYWdlciB3
ZWlnaHRPZkZvbnQ6KE5TRm9udCopY3RGb250LmdldCgpXTsKIAotICAgIE5TRm9udCAqcGxhdGZv
cm1Gb250ID0gW25zRm9udCBwcmludGVyRm9udF07CiAgICAgYm9vbCBzeW50aGV0aWNCb2xkID0g
KGZvbnREZXNjcmlwdGlvbi5mb250U3ludGhlc2lzKCkgJiBGb250U3ludGhlc2lzV2VpZ2h0KSAm
JiBpc0FwcEtpdEZvbnRXZWlnaHRCb2xkKHRvQXBwS2l0Rm9udFdlaWdodChmb250RGVzY3JpcHRp
b24ud2VpZ2h0KCkpKSAmJiAhaXNBcHBLaXRGb250V2VpZ2h0Qm9sZChhY3R1YWxXZWlnaHQpOwot
ICAgIGJvb2wgc3ludGhldGljT2JsaXF1ZSA9IChmb250RGVzY3JpcHRpb24uZm9udFN5bnRoZXNp
cygpICYgRm9udFN5bnRoZXNpc1N0eWxlKSAmJiAodHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQp
ICYmICEoYWN0dWFsVHJhaXRzICYgTlNGb250SXRhbGljVHJhaXQpOworICAgIGJvb2wgc3ludGhl
dGljT2JsaXF1ZSA9IChmb250RGVzY3JpcHRpb24uZm9udFN5bnRoZXNpcygpICYgRm9udFN5bnRo
ZXNpc1N0eWxlKSAmJiAodHJhaXRzICYga0NURm9udEl0YWxpY1RyYWl0KSAmJiAhKGFjdHVhbFRy
YWl0cyAmIGtDVEZvbnRJdGFsaWNUcmFpdCk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxGb250UGxhdGZvcm1EYXRhPihyZWludGVycHJldF9jYXN0PENURm9udFJlZj4ocGxhdGZvcm1G
b250KSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oY3RGb250LmdldCgpLCBz
aXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3Jp
ZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>