<?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>207243</bug_id>
          
          <creation_ts>2020-02-04 17:47:27 -0800</creation_ts>
          <short_desc>Produce text shaping microbenchmark</short_desc>
          <delta_ts>2021-08-20 15:59:10 -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>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>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614879</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-04 17:47:27 -0800</bug_when>
    <thetext>Produce text shaping microbenchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614880</commentid>
    <comment_count>1</comment_count>
      <attachid>389754</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-04 17:47:55 -0800</bug_when>
    <thetext>Created attachment 389754
Produce benchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615771</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-02-06 13:41:02 -0800</bug_when>
    <thetext>The layout-test run had ~10 millions lines of output with these patch in https://ews-build.webkit.org/#/builders/24/builds/9979, https://ews-build.webkit.org/#/builders/24/builds/9964

Please check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615777</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-06 13:50:41 -0800</bug_when>
    <thetext>So this text rendering benchmark is executed by looking at EWS logs? Neat :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615784</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-02-06 14:00:12 -0800</bug_when>
    <thetext>I didn&apos;t mean to trigger EWS, whoops.

Feel free to delete the logs.

I was just using this bug as a WIP place to store my code for a while (in case my laptop gets thrown in a lake or something).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785713</commentid>
    <comment_count>5</comment_count>
      <attachid>435946</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-20 00:01:45 -0700</bug_when>
    <thetext>Created attachment 435946
V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786033</commentid>
    <comment_count>6</comment_count>
      <attachid>436039</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-20 15:59:10 -0700</bug_when>
    <thetext>Created attachment 436039
V2</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389754</attachid>
            <date>2020-02-04 17:47:55 -0800</date>
            <delta_ts>2020-02-04 17:47:55 -0800</delta_ts>
            <desc>Produce benchmark</desc>
            <filename>bug-207243-20200204174754.patch</filename>
            <type>text/plain</type>
            <size>25782</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNmNGYxNTAyYjcxM2I5
ZWYyZTc0NjUyYmQ4MGFlOTI0Nzc3ODllNy4uZTQyNDA2MTEwY2I1MGU0MzM5YzkyM2ZhZWNhYmYz
NDg3MjFhODhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAyLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvZHVjZSB0
ZXh0IHNoYXBpbmcgbWljcm9iZW5jaG1hcmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzI0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udDo6YXBwbHlUcmFuc2Zvcm1zIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRS
YW5nZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0
Zm9ybURhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmN0
Rm9udCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250
cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMgY29uc3QpOgorCiAyMDIw
LTAyLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGVJbmRleApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9XZWJDb3JlLnhjc2NoZW1lIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNz
aGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCmluZGV4IDE1ODJlMWEzYzU2ZGY5
ZTc4MjAwZDk5YTk5ODY4MDU5MWI0Y2RmMGIuLjkzMzM1ZjUxMWMwNmFiZjMxN2RmZTc4M2Q5OGUx
MjE5OGViMjM1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViQ29yZS54Y3NjaGVtZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNvcmUueGNz
Y2hlbWUKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgIDwvVGVzdGFibGVzPgogICAgPC9UZXN0QWN0
aW9uPgogICAgPExhdW5jaEFjdGlvbgotICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIkRlYnVn
IgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCiAgICAgICBzZWxlY3RlZERl
YnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uRGVidWdnZXIuTExE
QiIKICAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91
bmRhdGlvbi5MYXVuY2hlci5MTERCIgogICAgICAgbGF1bmNoU3R5bGUgPSAiMCIKQEAgLTQwLDYg
KzQwLDExIEBACiAgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAgICAgICBk
ZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0aW9uU2lt
dWxhdGlvbiA9ICJZRVMiPgorICAgICAgPFBhdGhSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVE
ZWJ1Z2dpbmdNb2RlID0gIjAiCisgICAgICAgICBCdW5kbGVJZGVudGlmaWVyID0gIm9yZy53ZWJr
aXQuTWluaUJyb3dzZXIiCisgICAgICAgICBGaWxlUGF0aCA9ICIvVXNlcnMvbW1heGZpZWxkL0J1
aWxkL1Byb2R1Y3RzL0RlYnVnL01pbmlCcm93c2VyLmFwcCI+CisgICAgICA8L1BhdGhSdW5uYWJs
ZT4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29u
ZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IGM4M2Y4
MzUyMTg3MzIzY2IyNmVlNmIyMDA1YTg1M2E2NWI3N2Y1M2MuLjk1NDE0ZDNhOTIwYjY1MDZjN2Ix
YzQwOTEyYTdmOGRjNDdiMDQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEzNjIs
NiArMTM2MiwyMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZQogCiAgICAgYXV0byBbc3ludGhl
dGljQm9sZCwgc3ludGhldGljT2JsaXF1ZV0gPSBjb21wdXRlTmVjZXNzYXJ5U3ludGhlc2lzKGZv
bnQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbikuYm9sZE9ibGlxdWVQYWlyKCk7CiAKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHJlZmVyZW5jZVVSTCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZVUkxS
ZWY+KENURm9udENvcHlBdHRyaWJ1dGUoZm9udC5nZXQoKSwga0NURm9udFJlZmVyZW5jZVVSTEF0
dHJpYnV0ZSkpKTsKKyAgICBDRlN0cmluZ1JlZiByZWZlcmVuY2VVUkxTdHJpbmcgPSBDRlVSTEdl
dFN0cmluZyhyZWZlcmVuY2VVUkwuZ2V0KCkpOworICAgIGNoYXIgYnVmZmVyWzEwMjRdOworICAg
IEJvb2xlYW4gc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZyhyZWZlcmVuY2VVUkxTdHJpbmcs
IGJ1ZmZlciwgMTAyNCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzdWNjZXNzID09IFRSVUUpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJD
RlVSTFJlZiB1cmxfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIgPSBDRlVSTENyZWF0ZVdpdGhT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIoXCIiLCBidWZmZXIsICJcIiksIE5VTEwp
OyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJD
RlR5cGVSZWYga2V5c18iLCAodWludDY0X3QpZm9udC5nZXQoKSwgIltdID0ge2tDVEZvbnRVUkxB
dHRyaWJ1dGV9OyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtl
U3RyaW5nKCJDRlR5cGVSZWYgdmFsdWVzXyIsICh1aW50NjRfdClmb250LmdldCgpLCAiW10gPSB7
dXJsXyIsICh1aW50NjRfdClmb250LmdldCgpLCAifTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlf
IiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga2V5c18iLCAodWludDY0X3QpZm9udC5nZXQoKSwgIiwgdmFsdWVzXyIsICh1
aW50NjRfdClmb250LmdldCgpLCAiLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICBXVEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZSZWxlYXNlKHVybF8iLCAodWludDY0
X3QpZm9udC5nZXQoKSwgIik7IikudXRmOCgpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCIl
cyIsIG1ha2VTdHJpbmcoIkNURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3JfIiwgKHVp
bnQ2NF90KWZvbnQuZ2V0KCksICIgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0
ZXMoZGljdGlvbmFyeV8iLCAodWludDY0X3QpZm9udC5nZXQoKSwgIik7IikudXRmOCgpLmRhdGEo
KSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNGUmVsZWFzZShkaWN0aW9u
YXJ5XyIsICh1aW50NjRfdClmb250LmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ1RGb250UmVmIGZvbnRfIiwgKHVpbnQ2NF90
KWZvbnQuZ2V0KCksICIgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2Ny
aXB0b3JfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIsICIsIHNpemUsICIsIE5VTEwpOyIpLnV0
ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlJlbGVh
c2UoZm9udERlc2NyaXB0b3JfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIpOyIpLnV0ZjgoKS5k
YXRhKCkpOworCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oZm9udC5n
ZXQoKSwgc2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERl
c2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCkpOwogfQogCkBAIC0xNDg0LDEwICsxNDk5LDI4
IEBAIFJlZlB0cjxGb250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhj
b25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBsYXN0UmVzb3J0RmFsbGJhY2tGb250KGRlc2NyaXB0aW9uKTsKIAorICAgIGF1dG8gcHJl
dmlvdXMgPSBmYWxsYmFja0RlZHVwU2V0KCkuc2l6ZSgpOwogICAgIC8vIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoKSByZXF1aXJlcyB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgRm9u
dCBvYmplY3RzIHdoaWNoIHJlZmVyIHRvIHRoZSBzYW1lIHRoaW5nLiBUaGlzIGlzIGVuZm9yY2Vk
IGluCiAgICAgLy8gRm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKCksIHdoZXJlIG91ciBl
cXVhbGl0eSBjaGVjayBpcyBiYXNlZCBvbiBoYXNoaW5nIHRoZSBGb250UGxhdGZvcm1EYXRhLCB3
aG9zZSBoYXNoIGluY2x1ZGVzIHRoZSByYXcgQ29yZVRleHQKICAgICAvLyBmb250IHBvaW50ZXIu
CiAgICAgQ1RGb250UmVmIHN1YnN0aXR1dGVGb250ID0gZmFsbGJhY2tEZWR1cFNldCgpLmFkZChy
ZXN1bHQpLml0ZXJhdG9yLT5nZXQoKTsKKyAgICBhdXRvIG5leHQgPSBmYWxsYmFja0RlZHVwU2V0
KCkuc2l6ZSgpOworICAgIGlmIChuZXh0ICE9IHByZXZpb3VzKSB7CisgICAgICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gcmVmZXJlbmNlVVJMID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlVSTFJlZj4o
Q1RGb250Q29weUF0dHJpYnV0ZShzdWJzdGl0dXRlRm9udCwga0NURm9udFJlZmVyZW5jZVVSTEF0
dHJpYnV0ZSkpKTsKKyAgICAgICAgQ0ZTdHJpbmdSZWYgcmVmZXJlbmNlVVJMU3RyaW5nID0gQ0ZV
UkxHZXRTdHJpbmcocmVmZXJlbmNlVVJMLmdldCgpKTsKKyAgICAgICAgY2hhciBidWZmZXJbMTAy
NF07CisgICAgICAgIEJvb2xlYW4gc3VjY2VzcyA9IENGU3RyaW5nR2V0Q1N0cmluZyhyZWZlcmVu
Y2VVUkxTdHJpbmcsIGJ1ZmZlciwgMTAyNCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3VjY2VzcyA9PSBUUlVFKTsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIG1ha2VTdHJpbmcoIkNGVVJMUmVmIHVybF8iLCAodWludDY0X3Qpc3Vic3RpdHV0ZUZv
bnQsICIgPSBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIo
XCIiLCBidWZmZXIsICJcIiksIE5VTEwpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZM
b2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZUeXBlUmVmIGtleXNfIiwgKHVpbnQ2NF90KXN1
YnN0aXR1dGVGb250LCAiW10gPSB7a0NURm9udFVSTEF0dHJpYnV0ZX07IikudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlR5cGVSZWYgdmFs
dWVzXyIsICh1aW50NjRfdClzdWJzdGl0dXRlRm9udCwgIltdID0ge3VybF8iLCAodWludDY0X3Qp
c3Vic3RpdHV0ZUZvbnQsICJ9OyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlfIiwgKHVpbnQ2
NF90KXN1YnN0aXR1dGVGb250LCAiID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGtleXNfIiwgKHVpbnQ2NF90KXN1YnN0aXR1dGVGb250LCAiLCB2YWx1ZXNfIiwgKHVp
bnQ2NF90KXN1YnN0aXR1dGVGb250LCAiLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsiKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNGUmVsZWFzZSh1cmxfIiwg
KHVpbnQ2NF90KXN1YnN0aXR1dGVGb250LCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNURm9udERlc2NyaXB0b3JSZWYgZm9udERl
c2NyaXB0b3JfIiwgKHVpbnQ2NF90KXN1YnN0aXR1dGVGb250LCAiID0gQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGRpY3Rpb25hcnlfIiwgKHVpbnQ2NF90KXN1YnN0aXR1dGVG
b250LCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1h
a2VTdHJpbmcoIkNGUmVsZWFzZShkaWN0aW9uYXJ5XyIsICh1aW50NjRfdClzdWJzdGl0dXRlRm9u
dCwgIik7IikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtl
U3RyaW5nKCJDVEZvbnRSZWYgZm9udF8iLCAodWludDY0X3Qpc3Vic3RpdHV0ZUZvbnQsICIgPSBD
VEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3JfIiwgKHVpbnQ2NF90
KXN1YnN0aXR1dGVGb250LCAiLCAiLCBDVEZvbnRHZXRTaXplKHN1YnN0aXR1dGVGb250KSwgIiwg
TlVMTCk7IikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtl
U3RyaW5nKCJDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JfIiwgKHVpbnQ2NF90KXN1YnN0aXR1dGVG
b250LCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CiAKICAgICBhdXRvIFtzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50aGVzaXMoc3Vic3Rp
dHV0ZUZvbnQsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCA9PSBJc0ZvclBsYXRmb3Jt
Rm9udDo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCmluZGV4IDVhMzM1MmI1ODkwZmNj
Y2YyY2U5YTRjYThhYzliYmQ3ZDRmMzI3ODkuLjQwNjY4OTA1ZDExZDU3ZGEyNjc0YTYyNDZiMTlm
N2FmNzUxMjc3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q29jb2EubW0KQEAgLTU0Nyw2ICs1NDcsMzggQEAgdm9pZCBGb250OjphcHBs
eVRyYW5zZm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdJ
bmRleCwgYm8KIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IEdseXBoQnVmZmVyIGluaXRpYWwg
YWR2YW5jZS4KICAgICBDVEZvbnRUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMgPSAoZW5hYmxlS2Vy
bmluZyA/IGtDVEZvbnRUcmFuc2Zvcm1BcHBseVBvc2l0aW9uaW5nIDogMCkgfCAocmVxdWlyZXNT
aGFwaW5nID8ga0NURm9udFRyYW5zZm9ybUFwcGx5U2hhcGluZyA6IDApOworICAgIHN0YXRpYyBp
bnQgaW52b2NhdGlvbiA9IGFyYzRyYW5kb21fdW5pZm9ybSgyMTQ3MjgzNjQ4KTsKKyAgICB7Cisg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIkNH
R2x5cGggZ2x5cGhzXyIsIGludm9jYXRpb24sICJbXSA9IHsiKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0luZGV4OyArK2kp
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgoaW50KWdseXBoQnVmZmVyLmdseXBocyhiZWdp
bm5pbmdJbmRleClbaV0sICIsICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgifTsiKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICB9CisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJDR1NpemUgc2l6ZXNfIiwgaW52b2NhdGlvbiwgIltdID0geyIpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVn
aW5uaW5nSW5kZXg7ICsraSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ7IiwgZ2x5cGhC
dWZmZXIuYWR2YW5jZXMoYmVnaW5uaW5nSW5kZXgpW2ldLndpZHRoKCksICIsIiwgZ2x5cGhCdWZm
ZXIuYWR2YW5jZXMoYmVnaW5uaW5nSW5kZXgpW2ldLmhlaWdodCgpLCAifSwgIik7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCJ9OyIpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIiwgYnVpbGRl
ci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoImNvbnN0IENURm9udFRy
YW5zZm9ybU9wdGlvbnMgb3B0aW9uc18iLCBpbnZvY2F0aW9uLCAiID0gIik7CisgICAgICAgIGlm
IChlbmFibGVLZXJuaW5nICYmIHJlcXVpcmVzU2hhcGluZykKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCJrQ1RGb250VHJhbnNmb3JtQXBwbHlQb3NpdGlvbmluZyB8IGtDVEZvbnRUcmFuc2Zv
cm1BcHBseVNoYXBpbmc7Iik7CisgICAgICAgIGVsc2UgaWYgKGVuYWJsZUtlcm5pbmcpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgia0NURm9udFRyYW5zZm9ybUFwcGx5UG9zaXRpb25pbmc7
Iik7CisgICAgICAgIGVsc2UgaWYgKHJlcXVpcmVzU2hhcGluZykKKyAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCJrQ1RGb250VHJhbnNmb3JtQXBwbHlTaGFwaW5nOyIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiMDsiKTsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisgICAgV1RG
TG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoInNoYXBlKGN0Rm9udF8iLCAodWludDY0X3QpbV9w
bGF0Zm9ybURhdGEuY3RGb250KCksICIsIGdseXBoc18iLCBpbnZvY2F0aW9uLCAiLCBzaXplc18i
LCBpbnZvY2F0aW9uLCAiLCAiLCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdJbmRleCwg
Iiwgb3B0aW9uc18iLCBpbnZvY2F0aW9uLCAiLCBDRlNUUihcIiIgKyBsb2NhbGUuc3RyaW5nKCks
ICJcIikpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICsraW52b2NhdGlvbjsKICNpZiBIQVZFKENU
Rk9OVFRSQU5TRk9STUdMWVBIU1dJVEhMQU5HVUFHRSkKICAgICBhdXRvIGhhbmRsZXIgPSBeKENG
UmFuZ2UgcmFuZ2UsIENHR2x5cGgqKiBuZXdHbHlwaHNQb2ludGVyLCBDR1NpemUqKiBuZXdBZHZh
bmNlc1BvaW50ZXIpIHsKICAgICAgICAgcmFuZ2UubG9jYXRpb24gPSBzdGQ6Om1pbihzdGQ6Om1h
eChyYW5nZS5sb2NhdGlvbiwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oMCkpLCBzdGF0aWNfY2FzdDxD
RkluZGV4PihnbHlwaEJ1ZmZlci5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNw
ZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKaW5kZXggYzI0ODUyOTQ0YzIyMzRlMzBlZTUzNTI0OTQw
MDFhYzgxOWQyYzhhNi4uNzc3ZWQwODg1MGZmY2UzY2NkODAwODQzYTliYWNhZThlZTI3OWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZh
bWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAKQEAg
LTExMiw2ICsxMTIsMTggQEAgRm9udFJhbmdlcyBGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVU
ZXh0Ojpmb250UmFuZ2VzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm8KIAogICAgICAgICBhdXRv
IFtzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlXSA9IGNvbXB1dGVOZWNlc3NhcnlTeW50
aGVzaXMoZm9udEZvclN5bnRoZXNpc0NvbXB1dGF0aW9uLmdldCgpLCBmb250RGVzY3JpcHRpb24p
LmJvbGRPYmxpcXVlUGFpcigpOwogCisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGV4
dFN0eWxlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ1RGb250Q29weUF0dHJp
YnV0ZShmb250LmdldCgpLCBrQ1RGb250RGVzY3JpcHRvclRleHRTdHlsZUF0dHJpYnV0ZSkpKTsK
KyAgICAgICAgY2hhciBidWZmZXJbMTAyNF07CisgICAgICAgIEJvb2xlYW4gc3VjY2VzcyA9IENG
U3RyaW5nR2V0Q1N0cmluZyh0ZXh0U3R5bGUuZ2V0KCksIGJ1ZmZlciwgMTAyNCwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3VjY2VzcyA9PSBUUlVFKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNGVHlwZVJlZiBrZXlzXyIs
ICh1aW50NjRfdClmb250LmdldCgpLCAiW10gPSB7a0NURm9udERlc2NyaXB0b3JUZXh0U3R5bGVB
dHRyaWJ1dGV9OyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIiwg
bWFrZVN0cmluZygiQ0ZUeXBlUmVmIHZhbHVlc18iLCAodWludDY0X3QpZm9udC5nZXQoKSwgIltd
ID0ge0NGU1RSKFwiIiwgYnVmZmVyLCAiXCIpfTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
XyIsICh1aW50NjRfdClmb250LmdldCgpLCAiID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtleXNfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIsIHZhbHVlc18iLCAo
dWludDY0X3QpZm9udC5nZXQoKSwgIiwgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7IikudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDVEZvbnREZXNjcmlwdG9yUmVm
IGZvbnREZXNjcmlwdG9yXyIsICh1aW50NjRfdClmb250LmdldCgpLCAiID0gQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGRpY3Rpb25hcnlfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0
KCksICIpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIiwgbWFr
ZVN0cmluZygiQ0ZSZWxlYXNlKGRpY3Rpb25hcnlfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIp
OyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmlu
ZygiQ1RGb250UmVmIGZvbnRfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0KCksICIgPSBDVEZvbnRDcmVh
dGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3JfIiwgKHVpbnQ2NF90KWZvbnQuZ2V0
KCksICIsICIsIHNpemUsICIsIE5VTEwpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZM
b2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yXyIsICh1
aW50NjRfdClmb250LmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKKwogICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihmb250LmdldCgpLCBzaXplLCBmYWxzZSwg
c3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZvbnREZXNj
cmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2Rl
KCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udFBsYXRmb3JtRGF0YUNvY29h
Lm1tCmluZGV4IDQ4ODllMTNlZTkzOWUyOTljYzVhZjAyNTM4Y2Q4OTY5M2E1ZTk0OTMuLjYyZjBk
OWRjNmYzMmVjYjFiZWFlODNmMjQ2YzY4MjVmZDk4OThmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRQbGF0Zm9ybURhdGFDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250UGxhdGZvcm1E
YXRhQ29jb2EubW0KQEAgLTE3MCw2ICsxNzAsOCBAQCBDVEZvbnRSZWYgRm9udFBsYXRmb3JtRGF0
YTo6Y3RGb250KCkgY29uc3QKICAgICAgICAgICAgIG1fY3RGb250ID0gbmV3Rm9udDsKICAgICB9
CiAKKyAgICBXVEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ1RGb250UmVmIGN0Rm9udF8i
LCAodWludDY0X3QpbV9jdEZvbnQuZ2V0KCksICIgPSBjcmVhdGVNb2RpZmllZENURm9udChmb250
XyIsICh1aW50NjRfdCltX2ZvbnQuZ2V0KCksICIpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdU
RkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlJlbGVhc2UoZm9udF8iLCAodWludDY0X3Qp
bV9mb250LmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gbV9jdEZvbnQu
Z2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRl
eCBmM2I1YzEzMmM4OTFkNTNmNmRhYjdkMTEwYWVlYmNjNDkxNGJjMmY5Li5iMzQxODBhZWE5NTAy
YTRkNGQxOTAxYTE3N2U4YzU2Yjg3ZWY1ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlckNvcmVUZXh0Lm1tCkBAIC0xMTgsNiArMTE4LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBj
cCwKIAogICAgIGJvb2wgaXNTeXN0ZW1GYWxsYmFjayA9IGZhbHNlOwogCisgICAgV1RGTG9nQWx3
YXlzKCJ7Iik7CiAgICAgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyID0gMDsKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBzdHJpbmdBdHRyaWJ1dGVzOwogICAgIGlmIChmb250ID09IEZvbnQ6
OnN5c3RlbUZhbGxiYWNrKCkpIHsKQEAgLTEzMSw2ICsxMzIsNyBAQCB2b2lkIENvbXBsZXhUZXh0
Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNo
YXIqIGNwLAogICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBmb250LT5nZXRDRlN0cmlu
Z0F0dHJpYnV0ZXMobV9mb250LmVuYWJsZUtlcm5pbmcoKSwgZm9udC0+cGxhdGZvcm1EYXRhKCku
b3JpZW50YXRpb24oKSwgbV9mb250LmZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpKS5nZXQoKSkp
OwogICAgICAgICAvLyBXZSBkb24ndCBrbm93IHdoaWNoIGZvbnQgc2hvdWxkIGJlIHVzZWQgdG8g
cmVuZGVyIHRoaXMgZ3JhcGhlbWUgY2x1c3Rlciwgc28gZW5hYmxlIENvcmVUZXh0J3MgZmFsbGJh
Y2sgbWVjaGFuaXNtIGJ5IHVzaW5nIHRoZSBDVEZvbnQgd2hpY2ggZG9lc24ndCBoYXZlIENvcmVU
ZXh0J3MgZmFsbGJhY2sgZGlzYWJsZWQuCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNv
bnN0X2Nhc3Q8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4oc3RyaW5nQXR0cmlidXRlcy5nZXQoKSks
IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250LT5wbGF0Zm9ybURhdGEoKS5mb250KCkpOworICAg
ICAgICAvLyBMSVRIRVJVTTogVGhpcyBtaWdodCBiZSBpbXBvcnRhbnQuCiAgICAgfSBlbHNlCiAg
ICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBmb250LT5nZXRDRlN0cmluZ0F0dHJpYnV0ZXMobV9m
b250LmVuYWJsZUtlcm5pbmcoKSwgZm9udC0+cGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSwg
bV9mb250LmZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpKTsKIApAQCAtMTUwLDYgKzE1MiwxMCBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNo
YXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICBJR05PUkVfTlVMTF9DSEVDS19XQVJO
SU5HU19CRUdJTgogICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVy
ID0gYWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9u
cygmcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMsIDAsICZpbmZvLCBtX3J1bi5sdHIoKSA/IGx0
clR5cGVzZXR0ZXJPcHRpb25zIDogcnRsVHlwZXNldHRlck9wdGlvbnMpKTsKICAgICAgICAgSUdO
T1JFX05VTExfQ0hFQ0tfV0FSTklOR1NfRU5ECisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBt
YWtlU3RyaW5nKCJDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZ18iLCAodWlu
dDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwgIiA9IENGQXR0cmlidXRlZFN0cmluZ0NyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRlNUUihcIiIsIFN0cmluZyhjcCwgbGVuZ3RoKSwgIlwi
KSwgZGljdGlvbmFyeV8iLCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwgIik7Iiku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJD
RlJlbGVhc2UoZGljdGlvbmFyeV8iLCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwg
Iik7IikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3Ry
aW5nKCJDRlJlbGVhc2UoQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmdBbmRP
cHRpb25zKGF0dHJpYnV0ZWRTdHJpbmdfIiwgKHVpbnQ2NF90KXN0cmluZ0F0dHJpYnV0ZXMuZ2V0
KCksICIsICIsIG1fcnVuLmx0cigpID8gImx0clR5cGVzZXR0ZXJPcHRpb25zIiA6ICJydGxUeXBl
c2V0dGVyT3B0aW9ucyIsICIpKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNGUmVsZWFzZShhdHRyaWJ1dGVkU3RyaW5nXyIsICh1aW50
NjRfdClzdHJpbmdBdHRyaWJ1dGVzLmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKIAogICAg
ICAgICBpZiAoIXR5cGVzZXR0ZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTksNyArMTY1
LDEyIEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5z
Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgIFByb3ZpZGVySW5mbyBpbmZv
ID0geyBjcCwgbGVuZ3RoLCBzdHJpbmdBdHRyaWJ1dGVzLmdldCgpIH07CiAKICAgICAgICAgbGlu
ZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aFVuaUNoYXJQcm92aWRlcigmcHJvdmlkZVN0cmlu
Z0FuZEF0dHJpYnV0ZXMsIG51bGxwdHIsICZpbmZvKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
JXMiLCBtYWtlU3RyaW5nKCJDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZ18i
LCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwgIiA9IENGQXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRlNUUihcIiIsIFN0cmluZyhjcCwgbGVuZ3Ro
KSwgIlwiKSwgZGljdGlvbmFyeV8iLCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwg
Iik7IikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3Ry
aW5nKCJDRlJlbGVhc2UoZGljdGlvbmFyeV8iLCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5n
ZXQoKSwgIik7IikudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBt
YWtlU3RyaW5nKCJDRlJlbGVhc2UoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0
cmlidXRlZFN0cmluZ18iLCAodWludDY0X3Qpc3RyaW5nQXR0cmlidXRlcy5nZXQoKSwgIikpOyIp
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygi
Q0ZSZWxlYXNlKGF0dHJpYnV0ZWRTdHJpbmdfIiwgKHVpbnQ2NF90KXN0cmluZ0F0dHJpYnV0ZXMu
Z2V0KCksICIpOyIpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIn0i
KTsKIAogICAgIGlmICghbGluZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9y
bURhdGEuY3BwCmluZGV4IDIxOWE5OTViOGE0YzU1ZmNiMTljNWU4MTRhZmQ4M2Q0ZTRjODIxOGIu
LjkxZGQ1YzI5NTlmNDQ4NzRiMThkMTJiNDc0ZWE4MjAyYzFhNzNjNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKQEAgLTQ4LDYgKzQ4LDEwIEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mCiAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRl
V2l0aEZvbnREZXNjcmlwdG9yKG1vZGlmaWVkRm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51
bGxwdHIpKTsKICAgICBmb250ID0gcHJlcGFyZVBsYXRmb3JtRm9udChmb250LmdldCgpLCBmb250
RGVzY3JpcHRpb24sICZmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7CiAg
ICAgQVNTRVJUKGZvbnQpOworCisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNU
Rm9udFJlZiBmb250XyIsICh1aW50NjRfdClmb250LmdldCgpLCAiID0gQ1RGb250Q3JlYXRlV2l0
aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3JfIiwgKHVpbnQ2NF90KW1fZm9udERlc2NyaXB0b3Iu
Z2V0KCksICIsICIsIHNpemUsICIsIE5VTEwpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxv
Z0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlJlbGVhc2UoZGVzY3JpcHRvcl8iLCAodWludDY0
X3QpbV9mb250RGVzY3JpcHRvci5nZXQoKSwgIik7IikudXRmOCgpLmRhdGEoKSk7CisKICAgICBy
ZXR1cm4gRm9udFBsYXRmb3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9y
aWVudGF0aW9uLCB3aWR0aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9k
ZSgpKTsKIH0KIApAQCAtNTUsOSArNTksMjIgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21Q
bGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmUKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBidWZmZXJEYXRhID0gYnVmZmVyLmNyZWF0ZUNGRGF0
YSgpOwogCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJzdGF0aWMgY29uc3QgdWludDhfdCByYXdEYXRhXyIsICh1aW50NjRfdCli
dWZmZXJEYXRhLmdldCgpLCAiW10gPSB7Iik7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QqIHB0ciA9
IENGRGF0YUdldEJ5dGVQdHIoYnVmZmVyRGF0YS5nZXQoKSk7CisgICAgICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IENGRGF0YUdldExlbmd0aChidWZmZXJEYXRhLmdldCgpKTsgKytpKQorICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoKGludClwdHJbaV0sICIsICIpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgifTsiKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlcyIsIGJ1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1h
a2VTdHJpbmcoIkNGRGF0YVJlZiBkYXRhXyIsICh1aW50NjRfdClidWZmZXJEYXRhLmdldCgpLCAi
ID0gQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJhd0RhdGFfIiwgKHVpbnQ2NF90
KWJ1ZmZlckRhdGEuZ2V0KCksICIsIHNpemVvZihyYXdEYXRhXyIsICh1aW50NjRfdClidWZmZXJE
YXRhLmdldCgpLCAiKSk7IikudXRmOCgpLmRhdGEoKSk7CisKICAgICBSZXRhaW5QdHI8Q1RGb250
RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3I7CiAjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKQogICAgIGF1dG8gYXJyYXkgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250
RGVzY3JpcHRvcnNGcm9tRGF0YShidWZmZXJEYXRhLmdldCgpKSk7CisgICAgV1RGTG9nQWx3YXlz
KCIlcyIsIG1ha2VTdHJpbmcoIkNGQXJyYXlSZWYgYXJyYXlfIiwgKHVpbnQ2NF90KWFycmF5Lmdl
dCgpLCAiID0gQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yc0Zyb21EYXRhKGRhdGFf
IiwgKHVpbnQ2NF90KWJ1ZmZlckRhdGEuZ2V0KCksICIpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAg
IFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlJlbGVhc2UoZGF0YV8iLCAodWludDY0
X3QpYnVmZmVyRGF0YS5nZXQoKSwgIik7IikudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFhcnJh
eSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBsZW5ndGggPSBDRkFycmF5R2V0
Q291bnQoYXJyYXkuZ2V0KCkpOwpAQCAtNjksMTQgKzg2LDE5IEBAIHN0ZDo6dW5pcXVlX3B0cjxG
b250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJl
ZEJ1ZmZlCiAgICAgICAgICAgICAgICAgYXV0byBjYW5kaWRhdGUgPSBzdGF0aWNfY2FzdDxDVEZv
bnREZXNjcmlwdG9yUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCBpKSk7
CiAgICAgICAgICAgICAgICAgYXV0byBwb3N0U2NyaXB0TmFtZSA9IGFkb3B0Q0Yoc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGNhbmRpZGF0ZSwg
a0NURm9udE5hbWVBdHRyaWJ1dGUpKSk7CiAgICAgICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29t
cGFyZShwb3N0U2NyaXB0TmFtZS5nZXQoKSwgZGVzaXJlZE5hbWUuZ2V0KCksIDApID09IGtDRkNv
bXBhcmVFcXVhbFRvKSB7CisgICAgICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBt
YWtlU3RyaW5nKCJDVEZvbnREZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3JfIiwgKHVpbnQ2NF90KWNh
bmRpZGF0ZSwgIiA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXJyYXlfIiwgKHVpbnQ2NF90KWFy
cmF5LmdldCgpLCAiLCAiLCBpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgZm9udERlc2NyaXB0b3IgPSBjYW5kaWRhdGU7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAoIWZvbnREZXNjcmlwdG9yKQorICAgIGlmICghZm9udERlc2NyaXB0b3IpIHsKICAg
ICAgICAgZm9udERlc2NyaXB0b3IgPSBzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCAwKSk7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDVEZvbnREZXNjcmlwdG9yUmVmIGRlc2NyaXB0b3JfIiwg
KHVpbnQ2NF90KWZvbnREZXNjcmlwdG9yLmdldCgpLCAiID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChhcnJheV8iLCAodWludDY0X3QpYXJyYXkuZ2V0KCksICIsIDApOyIpLnV0ZjgoKS5kYXRhKCkp
OworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIiVzIiwgbWFrZVN0cmluZygiQ0ZSZXRhaW4oZGVz
Y3JpcHRvcl8iLCAodWludDY0X3QpZm9udERlc2NyaXB0b3IuZ2V0KCksICIpOyIpLnV0ZjgoKS5k
YXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3RyaW5nKCJDRlJlbGVhc2UoYXJy
YXlfIiwgKHVpbnQ2NF90KWFycmF5LmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1JbkNvbGxlY3Rpb24pOwogICAgIGZvbnREZXNjcmlwdG9y
ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShidWZm
ZXJEYXRhLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKaW5kZXggODk0NTEy
NDZjOTQ4NjhmZmU2MmFmN2E3MTg4NDRmNmQ5NTg0NGQ1YS4uMzM5YTZjNjdmMjU5YTFjNWQ2Zjlh
NzE1YzE0ZWMyOTQ3NWYwZDk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAt
MzUsMTEgKzM1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IEZvbnQ6OmdldENGU3RyaW5nQXR0cmlidXRlcyhib29sIGVuYWJsZUtlcm5pbmcsIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKSBjb25z
dAogewogICAgIGF1dG8gYXR0cmlidXRlc0RpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgNCwgJmtDRkNvcHlTdHJpbmdEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIFN0cmluZ0J1aWxkZXIga2V5c0J1aWxkZXI7CisgICAga2V5c0J1aWxkZXIuYXBwZW5kKCJD
RlR5cGVSZWYga2V5c18iLCAodWludDY0X3QpYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCksICJb
XSA9IHsiKTsKKyAgICBTdHJpbmdCdWlsZGVyIHZhbHVlc0J1aWxkZXI7CisgICAgdmFsdWVzQnVp
bGRlci5hcHBlbmQoIkNGVHlwZVJlZiB2YWx1ZXNfIiwgKHVpbnQ2NF90KWF0dHJpYnV0ZXNEaWN0
aW9uYXJ5LmdldCgpLCAiW10gPSB7Iik7CisgICAgaW50IGNvdW50ID0gMDsKIAogICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RGb250QXR0cmli
dXRlTmFtZSwgcGxhdGZvcm1EYXRhKCkuY3RGb250KCkpOworICAgIGtleXNCdWlsZGVyLmFwcGVu
ZCgia0NURm9udEF0dHJpYnV0ZU5hbWUiKTsKKyAgICB2YWx1ZXNCdWlsZGVyLmFwcGVuZCgiY3RG
b250XyIsICh1aW50NjRfdClwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSk7CisgICAgKytjb3VudDsK
ICNpZiBIQVZFKENURk9OVFRSQU5TRk9STUdMWVBIU1dJVEhMQU5HVUFHRSkKLSAgICBpZiAoIWxv
Y2FsZS5pc0VtcHR5KCkpCisgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ1RMYW5ndWFn
ZUF0dHJpYnV0ZU5hbWUsIGxvY2FsZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
KyAgICAgICAga2V5c0J1aWxkZXIuYXBwZW5kKCIsIGtDVExhbmd1YWdlQXR0cmlidXRlTmFtZSIp
OworICAgICAgICB2YWx1ZXNCdWlsZGVyLmFwcGVuZCgiLCBDRlNUUihcIiIsIGxvY2FsZS5zdHJp
bmcoKSwgIlwiKSIpOworICAgICAgICArK2NvdW50OworICAgIH0KICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGxvY2FsZSk7CiAjZW5kaWYKQEAgLTQ3LDE0ICs1OSwzNCBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBGb250OjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoYm9vbCBlbmFibGVLZXJu
aW5nLCBGb250TwogICAgIENUUGFyYWdyYXBoU3R5bGVTZXRDb21wb3NpdGlvbkxhbmd1YWdlKHBh
cmFncmFwaFN0eWxlLmdldCgpLCBrQ1RDb21wb3NpdGlvbkxhbmd1YWdlTm9uZSk7CiAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCksIGtDVFBhcmFncmFw
aFN0eWxlQXR0cmlidXRlTmFtZSwgcGFyYWdyYXBoU3R5bGUuZ2V0KCkpOwogCisgICAgV1RGTG9n
QWx3YXlzKCIlcyIsIG1ha2VTdHJpbmcoIkNUUGFyYWdyYXBoU3R5bGVSZWYgcGFyYWdyYXBoU3R5
bGVfIiwgKHVpbnQ2NF90KWF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgpLCAiID0gQ1RQYXJhZ3Jh
cGhTdHlsZUNyZWF0ZShOVUxMLCAwKTsiKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dBbHdh
eXMoIiVzIiwgbWFrZVN0cmluZygiQ1RQYXJhZ3JhcGhTdHlsZVNldENvbXBvc2l0aW9uTGFuZ3Vh
Z2UocGFyYWdyYXBoU3R5bGVfIiwgKHVpbnQ2NF90KWF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmdldCgp
LCAiLCBrQ1RDb21wb3NpdGlvbkxhbmd1YWdlTm9uZSk7IikudXRmOCgpLmRhdGEoKSk7CisgICAg
a2V5c0J1aWxkZXIuYXBwZW5kKCIsIGtDVFBhcmFncmFwaFN0eWxlQXR0cmlidXRlTmFtZSIpOwor
ICAgIHZhbHVlc0J1aWxkZXIuYXBwZW5kKCIsIHBhcmFncmFwaFN0eWxlXyIsICh1aW50NjRfdClh
dHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSk7CisgICAgKytjb3VudDsKKwogICAgIGlmICghZW5h
YmxlS2VybmluZykgewogICAgICAgICBjb25zdCBmbG9hdCB6ZXJvID0gMDsKICAgICAgICAgc3Rh
dGljIENGTnVtYmVyUmVmIHplcm9LZXJuaW5nVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJGbG9hdFR5cGUsICZ6ZXJvKTsKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCksIGtDVEtlcm5BdHRyaWJ1
dGVOYW1lLCB6ZXJvS2VybmluZ1ZhbHVlKTsKKyAgICAgICAga2V5c0J1aWxkZXIuYXBwZW5kKCIs
IGtDVEtlcm5BdHRyaWJ1dGVOYW1lIik7CisgICAgICAgIHZhbHVlc0J1aWxkZXIuYXBwZW5kKCIs
IHplcm9LZXJuaW5nVmFsdWUiKTsKKyAgICAgICAgKytjb3VudDsKICAgICB9CiAKLSAgICBpZiAo
b3JpZW50YXRpb24gPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbCkKKyAgICBpZiAob3JpZW50
YXRpb24gPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgewogICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwga0NUVmVydGljYWxGb3Jtc0F0
dHJpYnV0ZU5hbWUsIGtDRkJvb2xlYW5UcnVlKTsKKyAgICAgICAga2V5c0J1aWxkZXIuYXBwZW5k
KCIsIGtDVFZlcnRpY2FsRm9ybXNBdHRyaWJ1dGVOYW1lIik7CisgICAgICAgIHZhbHVlc0J1aWxk
ZXIuYXBwZW5kKCIsIGtDRkJvb2xlYW5UcnVlIik7CisgICAgICAgICsrY291bnQ7CisgICAgfQor
CisgICAga2V5c0J1aWxkZXIuYXBwZW5kKCJ9OyIpOworICAgIHZhbHVlc0J1aWxkZXIuYXBwZW5k
KCJ9OyIpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBrZXlzQnVpbGRlci50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCB2YWx1ZXNCdWlsZGVyLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyIsIG1ha2VTdHJpbmco
IkNGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5XyIsICh1aW50NjRfdClhdHRyaWJ1dGVzRGljdGlv
bmFyeS5nZXQoKSwgIiA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
ZXlzXyIsICh1aW50NjRfdClhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwgIiwgdmFsdWVzXyIs
ICh1aW50NjRfdClhdHRyaWJ1dGVzRGljdGlvbmFyeS5nZXQoKSwgIiwgIiwgY291bnQsICIsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOyIpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxvZ0Fsd2F5cygiJXMiLCBtYWtlU3Ry
aW5nKCJDRlJlbGVhc2UocGFyYWdyYXBoU3R5bGVfIiwgKHVpbnQ2NF90KWF0dHJpYnV0ZXNEaWN0
aW9uYXJ5LmdldCgpLCAiKTsiKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBhdHRyaWJ1
dGVzRGljdGlvbmFyeTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435946</attachid>
            <date>2021-08-20 00:01:45 -0700</date>
            <delta_ts>2021-08-20 15:59:10 -0700</delta_ts>
            <desc>V2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11231</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGI5NWZlZjk1M2E1NWM3ZTQ1NWU2ZjI3MWY5N2Y5N2ViN2FkNDJjN2QKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgQXVnIDE5
IDIzOjU0OjUzIDIwMjEgLTA3MDAKCiAgICBMb2dnaW5nCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhj
c2NoZW1lIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCmluZGV4IDE1ODJlMWEzYzU2ZC4uZTUyNmI3MmI2ODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hlbWUKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCkBAIC00
MCw2ICs0MCwyMiBAQAogICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAg
ICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlv
blNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5h
YmxlRGVidWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL21tYXhm
aWVsZC9CdWlsZC9Qcm9kdWN0cy9EZWJ1Zy9NaW5pQnJvd3Nlci5hcHAiPgorICAgICAgPC9QYXRo
UnVubmFibGU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZXM+CisgICAgICAgICA8RW52aXJv
bm1lbnRWYXJpYWJsZQorICAgICAgICAgICAga2V5ID0gIk1hbGxvYyIKKyAgICAgICAgICAgIHZh
bHVlID0gIjEiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAgIDwvRW52
aXJvbm1lbnRWYXJpYWJsZT4KKyAgICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlCisgICAgICAg
ICAgICBrZXkgPSAiX19YUENfTWFsbG9jIgorICAgICAgICAgICAgdmFsdWUgPSAiMSIKKyAgICAg
ICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxl
PgorICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlcz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAg
PFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDc2NGVlZjdiYjJlMS4uOGY3MTgwZGYwMjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMDcsNiArMTA3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oU2VsZWN0aW9uKSBcCiAgICAgTShTZXJ2aWNlcykgXAogICAgIE0o
U2VydmljZVdvcmtlcikgXAorICAgIE0oU2hhcGluZykgXAogICAgIE0oU3BlbGxpbmdBbmRHcmFt
bWFyKSBcCiAgICAgTShTUUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFnZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hl
Q29yZVRleHQuY3BwCmluZGV4IGJlZGU1NDU2ZDdmZC4uNDY1NGVkNDMwMDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRm9udC5oIgogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250RmFtaWx5U3Bl
Y2lmaWNhdGlvbkNvcmVUZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lQ29jb2EuaCIKICNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5o
IgogI2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKQEAgLTEyNTIsNyArMTI1MywxNSBAQCBzdGF0
aWMgUmV0YWluUHRyPENURm9udFJlZj4gZm9udFdpdGhGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYg
ZmFtaWx5LCBjb25zdCBGb250RAogICAgIGZvbnRMb29rdXAucmVzdWx0ID0gZm9udFdpdGhGYW1p
bHlTcGVjaWFsQ2FzZShmYW1pbHksIGZvbnREZXNjcmlwdGlvbiwgc2l6ZSwgZm9udERlc2NyaXB0
aW9uLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwogICAgIGlmICghZm9udExvb2t1
cC5yZXN1bHQpCiAgICAgICAgIGZvbnRMb29rdXAgPSBwbGF0Zm9ybUZvbnRMb29rdXBXaXRoRmFt
aWx5KGZhbWlseSwgZm9udERlc2NyaXB0aW9uLmZvbnRTZWxlY3Rpb25SZXF1ZXN0KCksIHNpemUs
IGZvbnREZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKTsKLSAgICBy
ZXR1cm4gcHJlcGFyZVBsYXRmb3JtRm9udChmb250TG9va3VwLnJlc3VsdC5nZXQoKSwgZm9udERl
c2NyaXB0aW9uLCBmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcywgIWZvbnRM
b29rdXAuY3JlYXRlZEZyb21Qb3N0U2NyaXB0TmFtZSk7CisgICAgYXV0byByZXN1bHQgPSBwcmVw
YXJlUGxhdGZvcm1Gb250KGZvbnRMb29rdXAucmVzdWx0LmdldCgpLCBmb250RGVzY3JpcHRpb24s
IGZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzLCAhZm9udExvb2t1cC5jcmVh
dGVkRnJvbVBvc3RTY3JpcHROYW1lKTsKKworICAgIExPR19XSVRIX1NUUkVBTShTaGFwaW5nLAor
ICAgICAgICBzdHJlYW0gPDwgIiAgICBDVEZvbnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGZvbnRMb29rdXAucmVzdWx0LmdldCgpKSA8PCAiID0gQ1RGb250Q3JlYXRl
V2l0aE5hbWUoQ0ZTVFIoXCIiIDw8IFN0cmluZyhhZG9wdENGKENURm9udENvcHlQb3N0U2NyaXB0
TmFtZShmb250TG9va3VwLnJlc3VsdC5nZXQoKSkpLmdldCgpKSA8PCAiXCIpLCAiIDw8IHNpemUg
PDwgIiwgTlVMTCk7XG4iOworICAgICAgICBpZiAocmVzdWx0LmdldCgpICE9IGZvbnRMb29rdXAu
cmVzdWx0LmdldCgpKQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250UmVmIGZvbnQi
IDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQuZ2V0KCkpIDw8ICIgPSBwcmVw
YXJlRm9udChmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZm9udExvb2t1cC5y
ZXN1bHQuZ2V0KCkpIDw8ICIpO1xuIjsKKyAgICApOworCisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCmluZGV4IDI5YTA3Yzc2YWYw
YS4uNTEyYTUyYjY2Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1
ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJP
cGVuVHlwZUNHLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8Q29yZVRl
eHQvQ29yZVRleHQuaD4KQEAgLTYxNiw2ICs2MTcsNjAgQEAgdm9pZCBGb250OjphcHBseVRyYW5z
Zm9ybXMoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBiZWdpbm5pbmdHbHlwaElu
ZGUKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVn
aW5uaW5nR2x5cGhJbmRleDsgKytpKQogICAgICAgICBnbHlwaEJ1ZmZlci5vZmZzZXRzSW5TdHJp
bmcoYmVnaW5uaW5nR2x5cGhJbmRleClbaV0gLT0gYmVnaW5uaW5nU3RyaW5nSW5kZXg7CiAKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAgc3RhdGljIGludCBpID0gMDsKKwor
ICAgICAgICBtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKTsKKworICAgICAgICBzdHJlYW0gPDwgIiAg
ICB7XG4iOworICAgICAgICBzdHJlYW0gPDwgIiAgICAgICAgIHN0YXRpYyBDR0dseXBoIGdseXBo
cyIgPDwgaSA8PCAiWyIgPDwgMiAqIChnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlw
aEluZGV4KSA8PCAiXSA9IHsiOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbm5pbmdH
bHlwaEluZGV4OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChpKQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiLCAiOworICAgICAgICAgICAgc3RyZWFt
IDw8IGdseXBoQnVmZmVyLmdseXBoQXQoaSk7CisgICAgICAgIH0KKyAgICAgICAgc3RyZWFtIDw8
ICJ9O1xuIjsKKworICAgICAgICBzdHJlYW0gPDwgIiAgICAgICAgIHN0YXRpYyBDR1NpemUgYWR2
YW5jZXMiIDw8IGkgPDwgIlsiIDw8IDIgKiAoZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5n
R2x5cGhJbmRleCkgPDwgIl0gPSB7IjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW5u
aW5nR2x5cGhJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBhdXRvIGFkdmFuY2UgPSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoaSk7CisgICAgICAgICAgICBp
ZiAoaSkKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiwgIjsKKyAgICAgICAgICAgIHN0cmVh
bSA8PCAieyIgPDwgYWR2YW5jZS53aWR0aCA8PCAiLCAiIDw8IGFkdmFuY2UuaGVpZ2h0IDw8ICJ9
IjsKKyAgICAgICAgfQorICAgICAgICBzdHJlYW0gPDwgIn07XG4iOworCisgICAgICAgIHN0cmVh
bSA8PCAiICAgICAgICAgc3RhdGljIENHUG9pbnQgb3JpZ2lucyIgPDwgaSA8PCAiWyIgPDwgMiAq
IChnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KSA8PCAiXSA9IHsiOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbm5pbmdHbHlwaEluZGV4OyBpIDwgZ2x5cGhC
dWZmZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAgICAgICAg
IHN0cmVhbSA8PCAiLCAiOworICAgICAgICAgICAgc3RyZWFtIDw8ICJ7IiA8PCAwIDw8ICIsICIg
PDwgMCA8PCAifSI7CisgICAgICAgIH0KKyAgICAgICAgc3RyZWFtIDw8ICJ9O1xuIjsKKworICAg
ICAgICBzdHJlYW0gPDwgIiAgICAgICAgIHN0YXRpYyBDRkluZGV4IGluZGljZXMiIDw8IGkgPDwg
IlsiIDw8IDIgKiAoZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRleCkgPDwg
Il0gPSB7IjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW5uaW5nR2x5cGhJbmRleDsg
aSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBhdXRvIGluZGV4ID0g
Z2x5cGhCdWZmZXIudW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaSk7CisgICAgICAgICAgICBpZiAo
aSkKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiwgIjsKKyAgICAgICAgICAgIHN0cmVhbSA8
PCBpbmRleDsKKyAgICAgICAgfQorICAgICAgICBzdHJlYW0gPDwgIn07XG4iOworCisgICAgICAg
IHN0cmVhbSA8PCAiICAgICAgICAgc3RhdGljIFVuaUNoYXIgY2hhcmFjdGVycyIgPDwgaSA8PCAi
WyIgPDwgZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRleCA8PCAiXSA9IHsi
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBiZWdpbm5pbmdHbHlwaEluZGV4OyBpIDwgZ2x5
cGhCdWZmZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiLCAiOworICAgICAgICAgICAgc3RyZWFtIDw8IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4odXBjb252ZXJ0ZWRDaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAgfQorICAgICAg
ICBzdHJlYW0gPDwgIn07XG4iOworCisgICAgICAgIHN0cmVhbSA8PCAiICAgICAgICAgc2hhcGUo
Zm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fcGxhdGZvcm1EYXRhLmN0Rm9u
dCgpKSA8PCAiLCBnbHlwaHMiIDw8IGkgPDwgIiwgYWR2YW5jZXMiIDw8IGkgPDwgIiwgb3JpZ2lu
cyIgPDwgaSA8PCAiLCBpbmRpY2VzIiA8PCBpIDw8ICIsIGNoYXJhY3RlcnMiIDw8IGkgPDwgIiwg
IiA8PCBnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4IDw8ICIsICIgPDwg
MiAqIChnbHlwaEJ1ZmZlci5zaXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KSA8PCAiLCBrQ1RG
b250U2hhcGVXaXRoQ2x1c3RlckNvbXBvc2l0aW9uIHwgIiA8PCAoZW5hYmxlS2VybmluZyA/ICJr
Q1RGb250U2hhcGVXaXRoS2VybmluZyIgOiAiMCIpIDw8ICIgfCAiIDw8ICh0ZXh0RGlyZWN0aW9u
ID09IFRleHREaXJlY3Rpb246OlJUTCA/ICJrQ1RGb250U2hhcGVSaWdodFRvTGVmdCIgOiAiMCIp
IDw8ICIsIENGU1RSKFwiIiA8PCBsb2NhbGUgPDwgIlwiKSk7XG4iOworICAgICAgICBzdHJlYW0g
PDwgIiAgICB9XG4iOworCisgICAgICAgICsraTsKKyAgICApOworCiAgICAgQ1RGb250U2hhcGVH
bHlwaHMoCiAgICAgICAgIG1fcGxhdGZvcm1EYXRhLmN0Rm9udCgpLAogICAgICAgICBnbHlwaEJ1
ZmZlci5nbHlwaHMoYmVnaW5uaW5nR2x5cGhJbmRleCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRm
b3JtRGF0YUNvcmVUZXh0LmNwcAppbmRleCA2MTRjODAyZWRkNDguLmJhNWU0ZDJkZGNlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBs
YXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0yMyw2ICsyMyw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgog
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGVOdW1iZXJzLmg+CkBAIC0xMzIsNiArMTMzLDEwIEBAIENURm9udFJlZiBGb250UGxhdGZv
cm1EYXRhOjpjdEZvbnQoKSBjb25zdAogICAgICAgICAgICAgbV9jdEZvbnQgPSBuZXdGb250Owog
ICAgIH0KIAorICAgIExPR19XSVRIX1NUUkVBTShTaGFwaW5nLAorICAgICAgICBzdHJlYW0gPDwg
IiAgICBDVEZvbnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY3RG
b250LmdldCgpKSA8PCAiID0gcHJlcGFyZUNURm9udChmb250IiA8PCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obV9mb250LmdldCgpKSA8PCAiKTsiOworICAgICk7CisKICAgICByZXR1cm4g
bV9jdEZvbnQuZ2V0KCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApp
bmRleCBmMjVkYzIxYTI2NzguLmRmMjY4YmI3NTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZUNvcmVUZXh0Lmgi
CiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KQEAgLTQ2LDkgKzQ3LDE2IEBAIEZvbnRQbGF0Zm9ybURh
dGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVz
Y3JpcHRpb24mCiAgICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gZm9udERlc2NyaXB0
aW9uLm9yaWVudGF0aW9uKCk7CiAgICAgRm9udFdpZHRoVmFyaWFudCB3aWR0aFZhcmlhbnQgPSBm
b250RGVzY3JpcHRpb24ud2lkdGhWYXJpYW50KCk7CiAgICAgYXV0byBmb250ID0gYWRvcHRDRihD
VEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQo
KSwgc2l6ZSwgbnVsbHB0cikpOwotICAgIGZvbnQgPSBwcmVwYXJlUGxhdGZvcm1Gb250KGZvbnQu
Z2V0KCksIGZvbnREZXNjcmlwdGlvbiwgJmZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJp
bGl0aWVzKTsKLSAgICBBU1NFUlQoZm9udCk7Ci0gICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEo
Zm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lkdGhWYXJpYW50
LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9uRGF0YSk7Cisg
ICAgYXV0byBuZXdGb250ID0gcHJlcGFyZVBsYXRmb3JtRm9udChmb250LmdldCgpLCBmb250RGVz
Y3JpcHRpb24sICZmb250RmFjZUZlYXR1cmVzLCBmb250RmFjZUNhcGFiaWxpdGllcyk7CisgICAg
QVNTRVJUKG5ld0ZvbnQpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNoYXBpbmcsCisgICAgICAg
IHN0cmVhbSA8PCAiICAgIENURm9udFJlZiBmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oZm9udC5nZXQoKSkgPDwgIiA9IGNyZWF0ZUluTWVtb3J5Rm9udChkYXRhIiA8PCByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgPDwgIiwgc2l6ZSIgPDwgcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRoaXMpIDw8ICIsICIgPDwgc2l6ZSA8PCAiLCBpdGVtIiA8PCByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgPDwgIik7XG4iOworICAgICAgICBpZiAoZm9u
dC5nZXQoKSAhPSBuZXdGb250LmdldCgpKQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RG
b250UmVmIGZvbnQiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihuZXdGb250LmdldCgp
KSA8PCAiID0gcHJlcGFyZUZvbnQoZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGZvbnQuZ2V0KCkpIDw8ICIpO1xuIjsKKyAgICApOworCisgICAgcmV0dXJuIEZvbnRQbGF0Zm9y
bURhdGEobmV3Rm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCBvcmllbnRhdGlvbiwgd2lk
dGhWYXJpYW50LCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSwgJmNyZWF0aW9u
RGF0YSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJp
bmcmIGl0ZW1JbkNvbGxlY3Rpb24pCkBAIC03OCw3ICs4NiwyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFy
ZWRCdWZmZQogICAgICAgICBmb250RGVzY3JpcHRvciA9IHN0YXRpY19jYXN0PENURm9udERlc2Ny
aXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXJyYXkuZ2V0KCksIDApKTsKIAogICAg
IEZvbnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSBjcmVhdGlvbkRhdGEgPSB7IGJ1ZmZlciwg
aXRlbUluQ29sbGVjdGlvbiB9OwotICAgIHJldHVybiBtYWtlVW5pcXVlPEZvbnRDdXN0b21QbGF0
Zm9ybURhdGE+KGZvbnREZXNjcmlwdG9yLmdldCgpLCBXVEZNb3ZlKGNyZWF0aW9uRGF0YSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPihmb250
RGVzY3JpcHRvci5nZXQoKSwgV1RGTW92ZShjcmVhdGlvbkRhdGEpKTsKKworICAgIExPR19XSVRI
X1NUUkVBTShTaGFwaW5nLAorICAgICAgICBzdHJlYW0gPDwgIiAgICBzdGF0aWMgY29uc3QgdWlu
dDhfdCBkYXRhIiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVzdWx0LmdldCgpKSA8
PCAiWyIgPDwgYnVmZmVyLnNpemUoKSA8PCAiXSA9IHsiOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGJ1ZmZlci5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkpCisgICAg
ICAgICAgICAgICAgc3RyZWFtIDw8ICIsICI7CisgICAgICAgICAgICBzdHJlYW0gPDwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihidWZmZXIuZGF0YSgpW2ldKTsKKyAgICAgICAgfQorICAgICAg
ICBzdHJlYW0gPDwgIn07XG4iOworCisgICAgICAgIHN0cmVhbSA8PCAiICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2l6ZSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdC5nZXQo
KSkgPDwgIiA9ICIgPDwgYnVmZmVyLnNpemUoKSA8PCAiO1xuIjsKKworICAgICAgICBzdHJlYW0g
PDwgIiAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgaXRlbSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KHJlc3VsdC5nZXQoKSkgPDwgIiA9IENGU1RSKFwiIiA8PCBpdGVtSW5Db2xsZWN0aW9u
IDw8ICJcIik7XG4iOworICAgICk7CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBib29sIEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE6OnN1cHBvcnRzRm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436039</attachid>
            <date>2021-08-20 15:59:10 -0700</date>
            <delta_ts>2021-08-20 15:59:10 -0700</delta_ts>
            <desc>V2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>28386</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDM4NDVjNzI1NTM1NjQ0NmQzZTMyNjVmNTAyYTE2ZjA1MmRmZGViOGIKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgQXVnIDIw
IDE0OjMyOjQ4IDIwMjEgLTA3MDAKCiAgICBTaGFwaW5nIGJlbmNobWFyayBsb2dnaW5nCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCmluZGV4IDE1ODJlMWEz
YzU2ZC4uYTA1YzI2MjlhNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hlbWUKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJD
b3JlLnhjc2NoZW1lCkBAIC00MCw2ICs0MCwyMyBAQAogICAgICAgZGVidWdEb2N1bWVudFZlcnNp
b25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0gImludGVybmFsIgog
ICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAgIDxQYXRoUnVubmFi
bGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgQnVuZGxl
SWRlbnRpZmllciA9ICJvcmcud2Via2l0Lk1pbmlCcm93c2VyIgorICAgICAgICAgRmlsZVBhdGgg
PSAiL1VzZXJzL21tYXhmaWVsZC9CdWlsZC9Qcm9kdWN0cy9EZWJ1Zy9NaW5pQnJvd3Nlci5hcHAi
PgorICAgICAgPC9QYXRoUnVubmFibGU+CisgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZXM+Cisg
ICAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZQorICAgICAgICAgICAga2V5ID0gIk1hbGxvYyIK
KyAgICAgICAgICAgIHZhbHVlID0gIjEiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4K
KyAgICAgICAgIDwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAgICAgICAgIDxFbnZpcm9ubWVudFZh
cmlhYmxlCisgICAgICAgICAgICBrZXkgPSAiX19YUENfTWFsbG9jIgorICAgICAgICAgICAgdmFs
dWUgPSAiMSIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9FbnZp
cm9ubWVudFZhcmlhYmxlPgorICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlcz4KICAgIDwvTGF1
bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9
ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDc2NGVlZjdiYjJlMS4u
OGY3MTgwZGYwMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC0xMDcsNiArMTA3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oU2VsZWN0aW9uKSBcCiAgICAgTShTZXJ2
aWNlcykgXAogICAgIE0oU2VydmljZVdvcmtlcikgXAorICAgIE0oU2hhcGluZykgXAogICAgIE0o
U3BlbGxpbmdBbmRHcmFtbWFyKSBcCiAgICAgTShTUUxEYXRhYmFzZSkgXAogICAgIE0oU3RvcmFn
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IGJlZGU1NDU2ZDdmZC4uZWQ3Y2NjZWVh
ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKICNpbmNsdWRl
ICJGb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ29jb2EuaCIKICNpbmNsdWRlICJTeXN0ZW1Gb250RGF0
YWJhc2VDb3JlVGV4dC5oIgogI2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKQEAgLTQ3LDYgKzQ4
LDggQEAKICNkZWZpbmUgSEFTX0NPUkVfVEVYVF9XSURUSF9BVFRSSUJVVEUgKFBMQVRGT1JNKENP
Q09BKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpKQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CitIYXNoU2V0PENURm9udFJlZj4mIGtub3duRm9udHMoKTsKK0hhc2hT
ZXQ8Q1RGb250RGVzY3JpcHRvclJlZj4mIGtub3duRm9udERlc2NyaXB0b3JzKCk7CiAKIHN0YXRp
YyBpbmxpbmUgdm9pZCBhcHBlbmRUcnVlVHlwZUZlYXR1cmUoQ0ZNdXRhYmxlQXJyYXlSZWYgZmVh
dHVyZXMsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCiB7CkBAIC0xMjAzLDcgKzEyMDYsOSBAQCBz
dGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gZm9udFdpdGhGYW1pbHlTcGVjaWFsQ2FzZShjb25z
dCBBdG9tU3RyaW5nJiBmYW1pbHksCiAgICAgICAgIGF1dG8gY2FzY2FkZUxpc3QgPSBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY2FzY2FkZUxpc3QoZm9udERlc2NyaXB0
aW9uLCBmYW1pbHksICpzeXN0ZW1EZXNpZ24sIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKICAg
ICAgICAgaWYgKGNhc2NhZGVMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gY3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKGNhc2NhZGVM
aXN0WzBdLmdldCgpLCBzaXplLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gY3JlYXRlRm9udEZvckluc3RhbGxlZEZvbnRzKGNhc2NhZGVMaXN0WzBdLmdl
dCgpLCBzaXplLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CisgICAgICAgIAorICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIGlmIChmYW1pbHkuc3RhcnRzV2l0aCgiVUlDVEZv
bnRUZXh0U3R5bGUiKSkgewpAQCAtMTI1Miw3ICsxMjU3LDE2IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q1RGb250UmVmPiBmb250V2l0aEZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIGNvbnN0
IEZvbnRECiAgICAgZm9udExvb2t1cC5yZXN1bHQgPSBmb250V2l0aEZhbWlseVNwZWNpYWxDYXNl
KGZhbWlseSwgZm9udERlc2NyaXB0aW9uLCBzaXplLCBmb250RGVzY3JpcHRpb24uc2hvdWxkQWxs
b3dVc2VySW5zdGFsbGVkRm9udHMoKSk7CiAgICAgaWYgKCFmb250TG9va3VwLnJlc3VsdCkKICAg
ICAgICAgZm9udExvb2t1cCA9IHBsYXRmb3JtRm9udExvb2t1cFdpdGhGYW1pbHkoZmFtaWx5LCBm
b250RGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSwgc2l6ZSwgZm9udERlc2NyaXB0
aW9uLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpOwotICAgIHJldHVybiBwcmVwYXJl
UGxhdGZvcm1Gb250KGZvbnRMb29rdXAucmVzdWx0LmdldCgpLCBmb250RGVzY3JpcHRpb24sIGZv
bnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVzLCAhZm9udExvb2t1cC5jcmVhdGVk
RnJvbVBvc3RTY3JpcHROYW1lKTsKKyAgICBhdXRvIHJlc3VsdCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udExvb2t1cC5yZXN1bHQuZ2V0KCksIGZvbnREZXNjcmlwdGlvbiwgZm9udEZhY2VGZWF0
dXJlcywgZm9udEZhY2VDYXBhYmlsaXRpZXMsICFmb250TG9va3VwLmNyZWF0ZWRGcm9tUG9zdFNj
cmlwdE5hbWUpOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNoYXBpbmcsCisgICAgICAgIGlmIChm
b250TG9va3VwLnJlc3VsdC5nZXQoKSAmJiBrbm93bkZvbnRzKCkuYWRkKGZvbnRMb29rdXAucmVz
dWx0LmdldCgpKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250
UmVmIGZvbnQiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihmb250TG9va3VwLnJlc3Vs
dC5nZXQoKSkgPDwgIiA9IENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKFwiIiA8PCBTdHJpbmco
YWRvcHRDRihDVEZvbnRDb3B5UG9zdFNjcmlwdE5hbWUoZm9udExvb2t1cC5yZXN1bHQuZ2V0KCkp
KS5nZXQoKSkgPDwgIlwiKSwgIiA8PCBzaXplIDw8ICIsIE5VTEwpO1xuIjsKKyAgICAgICAgaWYg
KHJlc3VsdC5nZXQoKSAmJiBrbm93bkZvbnRzKCkuYWRkKHJlc3VsdC5nZXQoKSkuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiICAgIENURm9udFJlZiBmb250IiA8PCByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ocmVzdWx0LmdldCgpKSA8PCAiID0gcHJlcGFyZUZvbnQoZm9u
dCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvbnRMb29rdXAucmVzdWx0LmdldCgp
KSA8PCAiKTtcbiI7CisgICAgKTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC0xNDEzLDggKzE0MjcsMTUgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6
c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3IK
ICAgICBpZiAoIWZ1bGxOYW1lLmlzRW1wdHkoKSkKICAgICAgICAgbV9mb250TmFtZXNSZXF1aXJp
bmdTeXN0ZW1GYWxsYmFja0ZvclByZXdhcm1pbmcuYWRkKGZ1bGxOYW1lKTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gbG9va3VwRmFsbGJhY2tGb250KHBsYXRmb3JtRGF0YS5mb250KCksIGRlc2NyaXB0
aW9uLndlaWdodCgpLCBkZXNjcmlwdGlvbi5jb21wdXRlZExvY2FsZSgpLCBkZXNjcmlwdGlvbi5z
aG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwotICAg
IHJlc3VsdCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQocmVzdWx0LmdldCgpLCBkZXNjcmlwdGlvbiwg
bnVsbHB0ciwgeyB9KTsKKyAgICBhdXRvIHJlc3VsdDIgPSBsb29rdXBGYWxsYmFja0ZvbnQocGxh
dGZvcm1EYXRhLmZvbnQoKSwgZGVzY3JpcHRpb24ud2VpZ2h0KCksIGRlc2NyaXB0aW9uLmNvbXB1
dGVkTG9jYWxlKCksIGRlc2NyaXB0aW9uLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCks
IGNoYXJhY3RlcnMsIGxlbmd0aCk7CisgICAgYXV0byByZXN1bHQgPSBwcmVwYXJlUGxhdGZvcm1G
b250KHJlc3VsdDIuZ2V0KCksIGRlc2NyaXB0aW9uLCBudWxscHRyLCB7IH0pOworCisgICAgTE9H
X1dJVEhfU1RSRUFNKFNoYXBpbmcsCisgICAgICAgIGlmIChyZXN1bHQyLmdldCgpICYmIGtub3du
Rm9udHMoKS5hZGQocmVzdWx0Mi5nZXQoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHN0cmVh
bSA8PCAiICAgIENURm9udFJlZiBmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
cmVzdWx0Mi5nZXQoKSkgPDwgIiA9IENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKFwiIiA8PCBT
dHJpbmcoYWRvcHRDRihDVEZvbnRDb3B5UG9zdFNjcmlwdE5hbWUocmVzdWx0Mi5nZXQoKSkpLmdl
dCgpKSA8PCAiXCIpLCAiIDw8IENURm9udEdldFNpemUocmVzdWx0Mi5nZXQoKSkgPDwgIiwgTlVM
TCk7XG4iOworICAgICAgICBpZiAocmVzdWx0LmdldCgpICYmIGtub3duRm9udHMoKS5hZGQocmVz
dWx0LmdldCgpKS5pc05ld0VudHJ5KQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250
UmVmIGZvbnQiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQuZ2V0KCkpIDw8
ICIgPSBwcmVwYXJlRm9udChmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVz
dWx0Mi5nZXQoKSkgPDwgIik7XG4iOworICAgICk7CiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgcmV0dXJuIGxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZGVzY3JpcHRpb24pOwpAQCAtMTQ5Niw5
ICsxNTE3LDI3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IGNyZWF0ZUZvbnRGb3JJbnN0YWxsZWRG
b250cyhDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwCiAgICAgYWRkQXR0cmlidXRlc0Zv
ckluc3RhbGxlZEZvbnRzKGF0dHJpYnV0ZXMuZ2V0KCksIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KTsKICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0Q291bnQoYXR0cmlidXRlcy5nZXQoKSkpIHsKICAg
ICAgICAgYXV0byByZXN1bHRGb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgYXR0cmlidXRlcy5nZXQo
KSkpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0
b3IocmVzdWx0Rm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihyZXN1
bHRGb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOworICAgIAorICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAgICAgIEFTU0VSVChrbm93bkZvbnREZXNj
cmlwdG9ycygpLmNvbnRhaW5zKGZvbnREZXNjcmlwdG9yKSk7CisgICAgICAgICAgICBpZiAocmVz
dWx0LmdldCgpICYmIGtub3duRm9udHMoKS5hZGQocmVzdWx0LmdldCgpKS5pc05ld0VudHJ5KSB7
CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250UmVmIGZvbnQiIDw8IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQuZ2V0KCkpIDw8ICIgPSBDVEZvbnRDcmVhdGVX
aXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pihmb250RGVzY3JpcHRvcikgPDwgIiwgIiA8PCBzaXplIDw8ICIsIE5VTEwpO1xuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KLSAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9u
dERlc2NyaXB0b3IsIHNpemUsIG51bGxwdHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0Yo
Q1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCBzaXplLCBudWxs
cHRyKSk7CisgICAgCisgICAgTE9HX1dJVEhfU1RSRUFNKFNoYXBpbmcsCisgICAgICAgIEFTU0VS
VChrbm93bkZvbnREZXNjcmlwdG9ycygpLmNvbnRhaW5zKGZvbnREZXNjcmlwdG9yKSk7CisgICAg
ICAgIGlmIChyZXN1bHQuZ2V0KCkgJiYga25vd25Gb250cygpLmFkZChyZXN1bHQuZ2V0KCkpLmlz
TmV3RW50cnkpIHsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiICAgIENURm9udFJlZiBmb250IiA8
PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVzdWx0LmdldCgpKSA8PCAiID0gQ1RGb250
Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yIiA8PCByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oZm9udERlc2NyaXB0b3IpIDw8ICIsICIgPDwgc2l6ZSA8PCAiLCBOVUxM
KTtcbiI7CisgICAgICAgIH0KKyAgICApOworCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIGlzRm9udE1hdGNoaW5nVXNlckluc3RhbGxlZEZvbnRGYWxsYmFjayhD
VEZvbnRSZWYgZm9udCwgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMpCkBAIC0xNTIzLDcgKzE1NjIsMTYgQEAgUmV0YWluUHRyPENURm9udFJlZj4gY3JlYXRl
Rm9udEZvckluc3RhbGxlZEZvbnRzKENURm9udFJlZiBmb250LCBBbGxvd1VzZXJJbnN0YWwKICAg
ICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVkRm9udHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dV
c2VySW5zdGFsbGVkRm9udHMpOwogICAgIGlmIChDRkRpY3Rpb25hcnlHZXRDb3VudChhdHRyaWJ1
dGVzLmdldCgpKSkgewogICAgICAgICBhdXRvIG1vZGlmaWNhdGlvbiA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnQsIENU
Rm9udEdldFNpemUoZm9udCksIG51bGxwdHIsIG1vZGlmaWNhdGlvbi5nZXQoKSkpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZv
bnQsIENURm9udEdldFNpemUoZm9udCksIG51bGxwdHIsIG1vZGlmaWNhdGlvbi5nZXQoKSkpOwor
ICAgIAorICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAgICAgIEFTU0VS
VChrbm93bkZvbnRzKCkuY29udGFpbnMoZm9udCkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5n
ZXQoKSAmJiBrbm93bkZvbnRzKCkuYWRkKHJlc3VsdC5nZXQoKSkuaXNOZXdFbnRyeSkgeworICAg
ICAgICAgICAgICAgIHN0cmVhbSA8PCAiICAgIENURm9udFJlZiBmb250IiA8PCByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocmVzdWx0LmdldCgpKSA8PCAiID0gQ0ZSZXRhaW4oZm9udCIgPDwg
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvbnQpIDw8ICIpO1xuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICByZXR1
cm4gZm9udDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4
dC5jcHAKaW5kZXggMmJlMzliNzk0MzUxLi4wZWNlMDhlZjhiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9u
Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTM1LDYgKzM2LDggQEAKICNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CitIYXNoU2V0PENURm9udFJlZj4mIGtub3duRm9udHMoKTsKK0hhc2hTZXQ8
Q1RGb250RGVzY3JpcHRvclJlZj4mIGtub3duRm9udERlc2NyaXB0b3JzKCk7CiAKIHN0cnVjdCBG
b250RmFtaWx5U3BlY2lmaWNhdGlvbktleSB7CiAgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0
b3JSZWY+IGZvbnREZXNjcmlwdG9yOwpAQCAtOTcsMTEgKzEwMCwxOSBAQCBGb250UmFuZ2VzIEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQ6OmZvbnRSYW5nZXMoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmbwogCiAgICAgICAgIGF1dG8gZm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0
aEZvbnREZXNjcmlwdG9yKG1fZm9udERlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKTsK
IAotICAgICAgICBmb250ID0gcHJlcGFyZVBsYXRmb3JtRm9udChmb250LmdldCgpLCBmb250RGVz
Y3JpcHRpb24sIG51bGxwdHIsIHsgfSk7CisgICAgICAgIGF1dG8gbmV3Rm9udCA9IHByZXBhcmVQ
bGF0Zm9ybUZvbnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCBudWxscHRyLCB7IH0pOwog
Ci0gICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0
ZU5lY2Vzc2FyeVN5bnRoZXNpcyhmb250LmdldCgpLCBmb250RGVzY3JpcHRpb24sIFNob3VsZENv
bXB1dGVQaHlzaWNhbFRyYWl0czo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKyAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKFNoYXBpbmcsCisgICAgICAgICAgICBBU1NFUlQoa25vd25Gb250RGVzY3Jp
cHRvcnMoKS5jb250YWlucyhtX2ZvbnREZXNjcmlwdG9yLmdldCgpKSk7CisgICAgICAgICAgICBp
ZiAoZm9udCAmJiBrbm93bkZvbnRzKCkuYWRkKGZvbnQuZ2V0KCkpLmlzTmV3RW50cnkpCisgICAg
ICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250UmVmIGZvbnQiIDw8IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihmb250LmdldCgpKSA8PCAiID0gQ1RGb250Q3JlYXRlV2l0aEZvbnRE
ZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yIiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
bV9mb250RGVzY3JpcHRvci5nZXQoKSkgPDwgIiwgIiA8PCBzaXplIDw8ICIsIE5VTEwpO1xuIjsK
KyAgICAgICAgICAgIGlmIChuZXdGb250LmdldCgpICYmIGtub3duRm9udHMoKS5hZGQobmV3Rm9u
dC5nZXQoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiAgICBDVEZv
bnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG5ld0ZvbnQuZ2V0KCkp
IDw8ICIgPSBwcmVwYXJlRm9udChmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Zm9udC5nZXQoKSkgPDwgIik7XG4iOworICAgICAgICApOwogCi0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPEZvbnRQbGF0Zm9ybURhdGE+KGZvbnQuZ2V0KCksIHNpemUsIGZhbHNlLCBzeW50aGV0
aWNPYmxpcXVlLCBmb250RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKSwgZm9udERlc2NyaXB0aW9u
LndpZHRoVmFyaWFudCgpLCBmb250RGVzY3JpcHRpb24udGV4dFJlbmRlcmluZ01vZGUoKSk7Cisg
ICAgICAgIGF1dG8gW3N5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY09ibGlxdWVdID0gY29tcHV0ZU5l
Y2Vzc2FyeVN5bnRoZXNpcyhuZXdGb250LmdldCgpLCBmb250RGVzY3JpcHRpb24sIFNob3VsZENv
bXB1dGVQaHlzaWNhbFRyYWl0czo6WWVzKS5ib2xkT2JsaXF1ZVBhaXIoKTsKKworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxGb250UGxhdGZvcm1EYXRhPihuZXdGb250LmdldCgpLCBzaXplLCBm
YWxzZSwgc3ludGhldGljT2JsaXF1ZSwgZm9udERlc2NyaXB0aW9uLm9yaWVudGF0aW9uKCksIGZv
bnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJp
bmdNb2RlKCkpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVChmb250UGxh
dGZvcm1EYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcAppbmRl
eCBmM2U2ZmJjODgyYTAuLjJmMmJkOWY5M2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0LmNwcApAQCAtMjgsMTEgKzI4LDE0IEBACiAKICNpbmNsdWRlICJGb250Q2Fj
aGUuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ29jb2EuaCIKIAogI2luY2x1ZGUgPHd0Zi9j
Zi9UeXBlQ2FzdHNDRi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitIYXNoU2V0PENURm9udFJl
Zj4mIGtub3duRm9udHMoKTsKK0hhc2hTZXQ8Q1RGb250RGVzY3JpcHRvclJlZj4mIGtub3duRm9u
dERlc2NyaXB0b3JzKCk7CiAKIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0JiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkKIHsKQEAgLTU0LDEyICs1NywxNyBAQCBSZXRh
aW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y3JlYXRlU3lzdGVt
VUlGb250KGNvbnN0IENhc2NhZAogICAgICAgICBsb2NhbGUgPSBudWxscHRyOwogICAgIGF1dG8g
cmVzdWx0ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVVSUZvbnRGb3JMYW5ndWFnZShrQ1RGb250VUlG
b250U3lzdGVtLCBwYXJhbWV0ZXJzLnNpemUsIGxvY2FsZSkpOwogICAgIEFTU0VSVChyZXN1bHQp
OworICAgIExPR19XSVRIX1NUUkVBTShTaGFwaW5nLAorICAgICAgICBpZiAoa25vd25Gb250cygp
LmFkZChyZXN1bHQuZ2V0KCkpLmlzTmV3RW50cnkpCisgICAgICAgIHN0cmVhbSA8PCAiICAgIENU
Rm9udFJlZiBmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVzdWx0LmdldCgp
KSA8PCAiID0gQ1RGb250Q3JlYXRlVUlGb250Rm9yTGFuZ3VhZ2Uoa0NURm9udFVJRm9udFN5c3Rl
bSwgIiA8PCBwYXJhbWV0ZXJzLnNpemUgPDwgIiwgQ0ZTVFIoXCIiIDw8IFN0cmluZyhsb2NhbGUp
IDw8ICJcIikpO1xuIjsKKyAgICApOwogICAgIHJldHVybiBjcmVhdGVGb250QnlBcHBseWluZ1dl
aWdodFdpZHRoSXRhbGljc0FuZEZhbGxiYWNrQmVoYXZpb3IocmVzdWx0LmdldCgpLCBwYXJhbWV0
ZXJzLndlaWdodCwgcGFyYW1ldGVycy53aWR0aCwgcGFyYW1ldGVycy5pdGFsaWMsIHBhcmFtZXRl
cnMuc2l6ZSwgcGFyYW1ldGVycy5hbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiB9CiAKICNpZiBI
QVZFKERFU0lHTl9TWVNURU1fVUlfRk9OVFMpCiBSZXRhaW5QdHI8Q1RGb250UmVmPiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6Y3JlYXRlU3lzdGVtRGVzaWduRm9udChTeXN0ZW1Gb250S2lu
ZCBzeXN0ZW1Gb250S2luZCwgY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogeworICAgIGFzc2VydChmYWxzZSk7CiAgICAgQ0ZTdHJpbmdSZWYgZGVzaWduID0ga0NURm9u
dFVJRm9udERlc2lnbkRlZmF1bHQ7CiAgICAgc3dpdGNoIChzeXN0ZW1Gb250S2luZCkgewogICAg
IGNhc2UgU3lzdGVtRm9udEtpbmQ6OlVJU2VyaWY6CkBAIC05NCw3ICsxMDIsMTMgQEAgUmV0YWlu
UHRyPENURm9udFJlZj4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OmNyZWF0ZVRleHRTdHls
ZUZvbnQoY29uc3QgQ2FzY2EKICAgICAgICAgfCAocGFyYW1ldGVycy5pdGFsaWMgPyBrQ1RGb250
VHJhaXRJdGFsaWMgOiAwKTsKICAgICBpZiAodHJhaXRzKQogICAgICAgICBkZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhTeW1ib2xpY1RyYWl0cyhkZXNj
cmlwdG9yLmdldCgpLCB0cmFpdHMsIHRyYWl0cykpOwotICAgIHJldHVybiBjcmVhdGVGb250Rm9y
SW5zdGFsbGVkRm9udHMoZGVzY3JpcHRvci5nZXQoKSwgcGFyYW1ldGVycy5zaXplLCBwYXJhbWV0
ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2hhcGlu
ZywKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0KCkgJiYga25vd25Gb250RGVzY3JpcHRvcnMo
KS5hZGQoZGVzY3JpcHRvci5nZXQoKSkuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgc3RyZWFt
IDw8ICIgICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciIgPDwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGRlc2NyaXB0b3IuZ2V0KCkpIDw8ICIgPSBDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlV2l0aFRleHRTdHlsZShDRlNUUihcIiIgPDwgcGFyYW1ldGVycy5mb250TmFtZSA8
PCAiXCIpLCBDRlNUUihcIiIgPDwgU3RyaW5nKFJlbmRlclRoZW1lQ29jb2E6OnNpbmdsZXRvbigp
LmNvbnRlbnRTaXplQ2F0ZWdvcnkoKSkgPDwgIlwiKSwgQ0ZTVFIoXCIiIDw8IFN0cmluZyhsb2Nh
bGVTdHJpbmcuZ2V0KCkpIDw8ICJcIikpO1xuIjsKKyAgICAgICAgfQorICAgICk7CisgICAgYXV0
byByZXN1bHQgPSBjcmVhdGVGb250Rm9ySW5zdGFsbGVkRm9udHMoZGVzY3JpcHRvci5nZXQoKSwg
cGFyYW1ldGVycy5zaXplLCBwYXJhbWV0ZXJzLmFsbG93VXNlckluc3RhbGxlZEZvbnRzKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+PiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Y2FzY2FkZUxpc3QoY29uc3QgQ2FzY2Fk
ZUxpc3RQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTeXN0ZW1Gb250S2luZCBzeXN0ZW1Gb250S2lu
ZCkKQEAgLTE0OSw4ICsxNjMsMTcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OmNyZWF0ZUZvbnRCeUFwcGx5aW5nV2VpZ2h0V2lkdGgKICAgICBDRkRp
Y3Rpb25hcnlBZGRWYWx1ZShhdHRyaWJ1dGVzLmdldCgpLCBrQ1RGb250VHJhaXRzQXR0cmlidXRl
LCB0cmFpdHNEaWN0aW9uYXJ5LmdldCgpKTsKICAgICBhZGRBdHRyaWJ1dGVzRm9ySW5zdGFsbGVk
Rm9udHMoYXR0cmlidXRlcy5nZXQoKSwgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpOwogICAgIGF1
dG8gbW9kaWZpY2F0aW9uID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJp
YnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOwotICAgIGlmIChmb250KQotICAgICAgICByZXR1cm4g
YWRvcHRDRihDVEZvbnRDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udCwgc2l6ZSwgbnVsbHB0
ciwgbW9kaWZpY2F0aW9uLmdldCgpKSk7CisgICAgaWYgKGZvbnQpIHsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdENGKENURm9udENyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250LCBzaXpl
LCBudWxscHRyLCBtb2RpZmljYXRpb24uZ2V0KCkpKTsKKyAgICAgICAgCisgICAgICAgIExPR19X
SVRIX1NUUkVBTShTaGFwaW5nLAorICAgICAgICAgICAgaWYgKHJlc3VsdC5nZXQoKSAmJiBrbm93
bkZvbnRzKCkuYWRkKHJlc3VsdC5nZXQoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBz
dHJlYW0gPDwgIiAgICBDVEZvbnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHJlc3VsdC5nZXQoKSkgPDwgIiA9IGFwcGx5VHJhaXRzKGZvbnQiIDw8IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihmb250KSA8PCAiKTtcbiI7CisgICAgICAgICk7CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgYXNzZXJ0KGZhbHNlKTsKICAgICByZXR1cm4gYWRv
cHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobW9kaWZpY2F0aW9uLmdldCgpLCBz
aXplLCBudWxscHRyKSk7CiB9CiAKQEAgLTE3MiwxMCArMTk1LDM0IEBAIFZlY3RvcjxSZXRhaW5Q
dHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpjb21w
dXRlQ2FzY2FkCiAgICAgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gcmVz
dWx0OwogICAgIC8vIFdlYktpdCBoYW5kbGVzIHRoZSBjYXNjYWRlIGxpc3QsIGFuZCBXZWJLaXQg
MidzIElQQyBjb2RlIGRvZXNuJ3Qga25vdyBob3cgdG8gc2VyaWFsaXplIENvcmUgVGV4dCdzIGNh
c2NhZGUgbGlzdC4KICAgICByZXN1bHQuYXBwZW5kKHJlbW92ZUNhc2NhZGVMaXN0KGFkb3B0Q0Yo
Q1RGb250Q29weUZvbnREZXNjcmlwdG9yKGZvbnQpKS5nZXQoKSkpOworCisgICAgTE9HX1dJVEhf
U1RSRUFNKFNoYXBpbmcsCisgICAgICAgIEFTU0VSVChrbm93bkZvbnRzKCkuY29udGFpbnMoZm9u
dCkpOworICAgICAgICBpZiAocmVzdWx0WzBdLmdldCgpICYmIGtub3duRm9udERlc2NyaXB0b3Jz
KCkuYWRkKHJlc3VsdFswXS5nZXQoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHN0cmVhbSA8
PCAiICAgIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IiIDw8IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihyZXN1bHRbMF0uZ2V0KCkpIDw8ICIgPSBDVEZvbnRDb3B5Rm9udERl
c2NyaXB0b3IoZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvbnQpIDw8ICIp
O1xuIjsKKyAgICApOworCiAgICAgaWYgKGNhc2NhZGVMaXN0KSB7CisgICAgICAgIExPR19XSVRI
X1NUUkVBTShTaGFwaW5nLAorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ0ZUeXBlUmVmIGxv
Y2FsZUFycmF5RGF0YSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhc2NhZGVMaXN0
LmdldCgpKSA8PCAiWzFdID0ge0NGU1RSKFwiIiA8PCBTdHJpbmcobG9jYWxlKSA8PCAiXCIpfTtc
biI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAgICBDRkFycmF5UmVmIGxvY2FsZUFycmF5IiA8
PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FzY2FkZUxpc3QuZ2V0KCkpIDw8ICIgPSBD
RkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUFycmF5RGF0YSIgPDwgcmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhc2NhZGVMaXN0LmdldCgpKSA8PCAiLCAxLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKTtcbiI7CisgICAgICAgICAgICBzdHJlYW0gPDwgIiAgICBDRkFy
cmF5UmVmIGNhc2NhZGUiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYXNjYWRlTGlz
dC5nZXQoKSkgPDwgIiA9IENURm9udENvcHlEZWZhdWx0Q2FzY2FkZUxpc3RGb3JMYW5ndWFnZXMo
Zm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZvbnQpIDw8ICIsIGxvY2FsZUFy
cmF5IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FzY2FkZUxpc3QuZ2V0KCkpIDw8
ICIpO1xuIjsKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiICAgIENGUmVsZWFzZShsb2NhbGVBcnJh
eSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNhc2NhZGVMaXN0LmdldCgpKSA8PCAi
KTtcbiI7CisgICAgICAgICk7CisKICAgICAgICAgQ0ZJbmRleCBhcnJheUxlbmd0aCA9IENGQXJy
YXlHZXRDb3VudChjYXNjYWRlTGlzdC5nZXQoKSk7Ci0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IGFycmF5TGVuZ3RoOyArK2kpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0YXRp
Y19jYXN0PENURm9udERlc2NyaXB0b3JSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FzY2Fk
ZUxpc3QuZ2V0KCksIGkpKSk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFycmF5
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGF1dG8gZm9udERlc2NyaXB0b3IgPSBzdGF0aWNf
Y2FzdDxDVEZvbnREZXNjcmlwdG9yUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNhc2NhZGVM
aXN0LmdldCgpLCBpKSk7CisgICAgICAgICAgICBMT0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAg
ICAgICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0b3IgJiYga25vd25Gb250RGVzY3JpcHRvcnMo
KS5hZGQoZm9udERlc2NyaXB0b3IpLmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHN0
cmVhbSA8PCAiICAgIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IiIDw8IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihmb250RGVzY3JpcHRvcikgPDwgIiA9IENGUmV0YWluKENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoY2FzY2FkZSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGNhc2NhZGVMaXN0LmdldCgpKSA8PCAiLCAiIDw8IGkgPDwgIikpO1xuIjsKKyAgICAgICAg
ICAgICk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGZvbnREZXNjcmlwdG9yKTsKKyAgICAg
ICAgfQorCisgICAgICAgIExPR19XSVRIX1NUUkVBTShTaGFwaW5nLAorICAgICAgICAgICAgc3Ry
ZWFtIDw8ICIgICAgQ0ZSZWxlYXNlKGNhc2NhZGUiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihjYXNjYWRlTGlzdC5nZXQoKSkgPDwgIik7XG4iOworICAgICAgICApOwogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXggMTA3YWRmNjE2YTYw
Li5mYTA3Yjk5ZDFhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk9w
ZW5UeXBlQ0cuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxDb3JlVGV4
dC9Db3JlVGV4dC5oPgpAQCAtNTIsNiArNTMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitIYXNoU2V0PENURm9udFJlZj4mIGtub3duRm9udHMoKTsKK0hhc2hTZXQ8Q1RGb250UmVmPiYg
a25vd25Gb250cygpIHsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxDVEZvbnRS
ZWY+PiBzZXQ7CisgICAgcmV0dXJuIHNldC5nZXQoKTsKK30KKworSGFzaFNldDxDVEZvbnREZXNj
cmlwdG9yUmVmPiYga25vd25Gb250RGVzY3JpcHRvcnMoKTsKK0hhc2hTZXQ8Q1RGb250RGVzY3Jp
cHRvclJlZj4mIGtub3duRm9udERlc2NyaXB0b3JzKCkgeworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PENURm9udERlc2NyaXB0b3JSZWY+PiBzZXQ7CisgICAgcmV0dXJuIHNldC5n
ZXQoKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoQ0ZT
dHJpbmdSZWYgYSwgQ0ZTdHJpbmdSZWYgYikKIHsKICAgICByZXR1cm4gYSAmJiBDRlN0cmluZ0Nv
bXBhcmUoYSwgYiwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFs
VG87CkBAIC01NTksNiArNTcyLDE0IEBAIFJlZlB0cjxGb250PiBGb250OjpwbGF0Zm9ybUNyZWF0
ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGCiAgICAgUmV0
YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnRDb3B5Rm9udERlc2NyaXB0b3IobV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7CiAgICAgUmV0YWlu
UHRyPENURm9udFJlZj4gc2NhbGVkRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnRE
ZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiAKKyAgICBM
T0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAgQVNTRVJUKGtub3duRm9udHMoKS5jb250
YWlucyhtX3BsYXRmb3JtRGF0YS5mb250KCkpKTsKKyAgICAgICAgaWYgKHNjYWxlZEZvbnQuZ2V0
KCkgJiYga25vd25Gb250cygpLmFkZChzY2FsZWRGb250LmdldCgpKS5pc05ld0VudHJ5KSB7Cisg
ICAgICAgICAgICBzdHJlYW0gPDwgIiAgICBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlw
dG9yIiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oc2NhbGVkRm9udC5nZXQoKSkgPDwg
IiA9IENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250IiA8PCByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4obV9wbGF0Zm9ybURhdGEuZm9udCgpKSA8PCAiKTtcbiI7CisgICAgICAgICAgICBz
dHJlYW0gPDwgIiAgICBDVEZvbnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KHNjYWxlZEZvbnQuZ2V0KCkpIDw8ICIgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0
b3IoZm9udERlc2NyaXB0b3IiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzY2FsZWRG
b250LmdldCgpKSA8PCAiLCAiIDw8IHNpemUgPDwgIiwgTlVMTCk7XG4iOworICAgICAgICB9Cisg
ICAgKTsKKwogICAgIHJldHVybiBjcmVhdGVEZXJpdmF0aXZlRm9udChzY2FsZWRGb250LmdldCgp
LCBzaXplLCBtX3BsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpLCBmb250VHJhaXRzLCBtX3BsYXRm
b3JtRGF0YS5zeW50aGV0aWNCb2xkKCksIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY09ibGlxdWUo
KSk7CiB9CiAKQEAgLTYxNyw2ICs2MzgsNjAgQEAgR2x5cGhCdWZmZXJBZHZhbmNlIEZvbnQ6OmFw
cGx5VHJhbnNmb3JtcyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGJlZ2kKIAog
ICAgIGF1dG8gbnVtYmVyT2ZJbnB1dEdseXBocyA9IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lu
bmluZ0dseXBoSW5kZXg7CiAKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAg
c3RhdGljIGludCBpID0gMDsKKworICAgICAgICBtX3BsYXRmb3JtRGF0YS5jdEZvbnQoKTsKKwor
ICAgICAgICBzdHJlYW0gPDwgIiAgICB7XG4iOworICAgICAgICBzdHJlYW0gPDwgIiAgICAgICAg
IHN0YXRpYyBDR0dseXBoIGdseXBocyIgPDwgaSA8PCAiWyIgPDwgMiAqIChnbHlwaEJ1ZmZlci5z
aXplKCkgLSBiZWdpbm5pbmdHbHlwaEluZGV4KSA8PCAiXSA9IHsiOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBiZWdpbm5pbmdHbHlwaEluZGV4OyBpIDwgZ2x5cGhCdWZmZXIuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIGlmIChpID4gYmVnaW5uaW5nR2x5cGhJbmRleCkKKyAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgIiwgIjsKKyAgICAgICAgICAgIHN0cmVhbSA8PCBnbHlwaEJ1ZmZl
ci5nbHlwaEF0KGkpOworICAgICAgICB9CisgICAgICAgIHN0cmVhbSA8PCAifTtcbiI7CisKKyAg
ICAgICAgc3RyZWFtIDw8ICIgICAgICAgICBzdGF0aWMgQ0dTaXplIGFkdmFuY2VzIiA8PCBpIDw8
ICJbIiA8PCAyICogKGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXgpIDw8
ICJdID0geyI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJlZ2lubmluZ0dseXBoSW5kZXg7
IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byBhZHZhbmNl
ID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpOworICAgICAgICAgICAgaWYgKGkgPiBiZWdpbm5p
bmdHbHlwaEluZGV4KQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiLCAiOworICAgICAgICAg
ICAgc3RyZWFtIDw8ICJ7IiA8PCBhZHZhbmNlLndpZHRoIDw8ICIsICIgPDwgYWR2YW5jZS5oZWln
aHQgPDwgIn0iOworICAgICAgICB9CisgICAgICAgIHN0cmVhbSA8PCAifTtcbiI7CisKKyAgICAg
ICAgc3RyZWFtIDw8ICIgICAgICAgICBzdGF0aWMgQ0dQb2ludCBvcmlnaW5zIiA8PCBpIDw8ICJb
IiA8PCAyICogKGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXgpIDw8ICJd
ID0geyI7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJlZ2lubmluZ0dseXBoSW5kZXg7IGkg
PCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPiBiZWdpbm5p
bmdHbHlwaEluZGV4KQorICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiLCAiOworICAgICAgICAg
ICAgc3RyZWFtIDw8ICJ7IiA8PCAwIDw8ICIsICIgPDwgMCA8PCAifSI7CisgICAgICAgIH0KKyAg
ICAgICAgc3RyZWFtIDw8ICJ9O1xuIjsKKworICAgICAgICBzdHJlYW0gPDwgIiAgICAgICAgIHN0
YXRpYyBDRkluZGV4IGluZGljZXMiIDw8IGkgPDwgIlsiIDw8IDIgKiAoZ2x5cGhCdWZmZXIuc2l6
ZSgpIC0gYmVnaW5uaW5nR2x5cGhJbmRleCkgPDwgIl0gPSB7IjsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYmVnaW5uaW5nR2x5cGhJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBhdXRvIGluZGV4ID0gZ2x5cGhCdWZmZXIudW5jaGVja2VkU3RyaW5n
T2Zmc2V0QXQoaSk7CisgICAgICAgICAgICBpZiAoaSA+IGJlZ2lubmluZ0dseXBoSW5kZXgpCisg
ICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIsICI7CisgICAgICAgICAgICBzdHJlYW0gPDwgaW5k
ZXg7CisgICAgICAgIH0KKyAgICAgICAgc3RyZWFtIDw8ICJ9O1xuIjsKKworICAgICAgICBzdHJl
YW0gPDwgIiAgICAgICAgIHN0YXRpYyBVbmlDaGFyIGNoYXJhY3RlcnMiIDw8IGkgPDwgIlsiIDw8
IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBoSW5kZXggPDwgIl0gPSB7IjsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmVnaW5uaW5nR2x5cGhJbmRleDsgaSA8IGdseXBoQnVm
ZmVyLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA+IGJlZ2lubmluZ0dseXBoSW5k
ZXgpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIsICI7CisgICAgICAgICAgICBzdHJlYW0g
PDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1cGNvbnZlcnRlZENoYXJhY3RlcnNbaV0pOwor
ICAgICAgICB9CisgICAgICAgIHN0cmVhbSA8PCAifTtcbiI7CisKKyAgICAgICAgc3RyZWFtIDw8
ICIgICAgICAgICBzaGFwZShmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9w
bGF0Zm9ybURhdGEuY3RGb250KCkpIDw8ICIsIGdseXBocyIgPDwgaSA8PCAiLCBhZHZhbmNlcyIg
PDwgaSA8PCAiLCBvcmlnaW5zIiA8PCBpIDw8ICIsIGluZGljZXMiIDw8IGkgPDwgIiwgY2hhcmFj
dGVycyIgPDwgaSA8PCAiLCAiIDw8IGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBo
SW5kZXggPDwgIiwgIiA8PCAyICogKGdseXBoQnVmZmVyLnNpemUoKSAtIGJlZ2lubmluZ0dseXBo
SW5kZXgpIDw8ICIsIGtDVEZvbnRTaGFwZVdpdGhDbHVzdGVyQ29tcG9zaXRpb24gfCAiIDw8IChl
bmFibGVLZXJuaW5nID8gImtDVEZvbnRTaGFwZVdpdGhLZXJuaW5nIiA6ICIwIikgPDwgIiB8ICIg
PDwgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gImtDVEZvbnRTaGFwZVJp
Z2h0VG9MZWZ0IiA6ICIwIikgPDwgIiwgQ0ZTVFIoXCIiIDw8IGxvY2FsZSA8PCAiXCIpKTtcbiI7
CisgICAgICAgIHN0cmVhbSA8PCAiICAgIH1cbiI7CisKKyAgICAgICAgKytpOworICAgICk7CisK
ICAgICBhdXRvIGluaXRpYWxBZHZhbmNlID0gQ1RGb250U2hhcGVHbHlwaHMoCiAgICAgICAgIG1f
cGxhdGZvcm1EYXRhLmN0Rm9udCgpLAogICAgICAgICBnbHlwaEJ1ZmZlci5nbHlwaHMoYmVnaW5u
aW5nR2x5cGhJbmRleCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNw
cAppbmRleCA2MTRjODAyZWRkNDguLjMyNGIxMmVjZDE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250
UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVU
ZXh0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBA
IC0zNCw2ICszNSw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworSGFzaFNldDxD
VEZvbnRSZWY+JiBrbm93bkZvbnRzKCk7CiAKIEZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9y
bURhdGEoUmV0YWluUHRyPENURm9udFJlZj4mJiBmb250LCBmbG9hdCBzaXplLCBib29sIHN5bnRo
ZXRpY0JvbGQsIGJvb2wgc3ludGhldGljT2JsaXF1ZSwgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCwgVGV4dFJlbmRlcmluZ01vZGUgdGV4
dFJlbmRlcmluZ01vZGUsIENyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhKQogICAgIDogRm9udFBs
YXRmb3JtRGF0YShzaXplLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNPYmxpcXVlLCBvcmllbnRh
dGlvbiwgd2lkdGhWYXJpYW50LCB0ZXh0UmVuZGVyaW5nTW9kZSwgY3JlYXRpb25EYXRhKQpAQCAt
MTMyLDYgKzEzNCwxMiBAQCBDVEZvbnRSZWYgRm9udFBsYXRmb3JtRGF0YTo6Y3RGb250KCkgY29u
c3QKICAgICAgICAgICAgIG1fY3RGb250ID0gbmV3Rm9udDsKICAgICB9CiAKKyAgICBMT0dfV0lU
SF9TVFJFQU0oU2hhcGluZywKKyAgICAgICAgQVNTRVJUKGtub3duRm9udHMoKS5jb250YWlucyht
X2ZvbnQuZ2V0KCkpKTsKKyAgICAgICAgaWYgKG1fY3RGb250LmdldCgpICYmIGtub3duRm9udHMo
KS5hZGQobV9jdEZvbnQuZ2V0KCkpLmlzTmV3RW50cnkpCisgICAgICAgICAgICBzdHJlYW0gPDwg
IiAgICBDVEZvbnRSZWYgZm9udCIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fY3RG
b250LmdldCgpKSA8PCAiID0gcHJlcGFyZUNURm9udChmb250IiA8PCByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4obV9mb250LmdldCgpKSA8PCAiKTsiOworICAgICk7CisKICAgICByZXR1cm4g
bV9jdEZvbnQuZ2V0KCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApp
bmRleCBmMjVkYzIxYTI2NzguLmE0ZjAxNGI3ZWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZUNvcmVUZXh0Lmgi
CiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KQEAgLTMyLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxwYWwv
c3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK0hhc2hTZXQ8Q1RG
b250UmVmPiYga25vd25Gb250cygpOwogCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjp+Rm9udEN1
c3RvbVBsYXRmb3JtRGF0YSgpID0gZGVmYXVsdDsKIApAQCAtNDYsOSArNDgsMTcgQEAgRm9udFBs
YXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBmb250
RGVzY3JpcHRpb24ub3JpZW50YXRpb24oKTsKICAgICBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFy
aWFudCA9IGZvbnREZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKTsKICAgICBhdXRvIGZvbnQgPSBh
ZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihtb2RpZmllZEZvbnREZXNjcmlw
dG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7Ci0gICAgZm9udCA9IHByZXBhcmVQbGF0Zm9ybUZv
bnQoZm9udC5nZXQoKSwgZm9udERlc2NyaXB0aW9uLCAmZm9udEZhY2VGZWF0dXJlcywgZm9udEZh
Y2VDYXBhYmlsaXRpZXMpOwotICAgIEFTU0VSVChmb250KTsKLSAgICByZXR1cm4gRm9udFBsYXRm
b3JtRGF0YShmb250LmdldCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIG9yaWVudGF0aW9uLCB3aWR0
aFZhcmlhbnQsIGZvbnREZXNjcmlwdGlvbi50ZXh0UmVuZGVyaW5nTW9kZSgpLCAmY3JlYXRpb25E
YXRhKTsKKyAgICBhdXRvIG5ld0ZvbnQgPSBwcmVwYXJlUGxhdGZvcm1Gb250KGZvbnQuZ2V0KCks
IGZvbnREZXNjcmlwdGlvbiwgJmZvbnRGYWNlRmVhdHVyZXMsIGZvbnRGYWNlQ2FwYWJpbGl0aWVz
KTsKKyAgICBBU1NFUlQobmV3Rm9udCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2hhcGluZywK
KyAgICAgICAgaWYgKGZvbnQuZ2V0KCkgJiYga25vd25Gb250cygpLmFkZChmb250LmdldCgpKS5p
c05ld0VudHJ5KQorICAgICAgICAgICAgc3RyZWFtIDw8ICIgICAgQ1RGb250UmVmIGZvbnQiIDw8
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihmb250LmdldCgpKSA8PCAiID0gY3JlYXRlSW5N
ZW1vcnlGb250KGRhdGEiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSA8PCAi
LCBzaXplIiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykgPDwgIiwgIiA8PCBz
aXplIDw8ICIsIGl0ZW0iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSA8PCAi
KTtcbiI7CisgICAgICAgIGlmIChuZXdGb250LmdldCgpICYmIGtub3duRm9udHMoKS5hZGQobmV3
Rm9udC5nZXQoKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHN0cmVhbSA8PCAiICAgIENURm9u
dFJlZiBmb250IiA8PCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obmV3Rm9udC5nZXQoKSkg
PDwgIiA9IHByZXBhcmVGb250KGZvbnQiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihm
b250LmdldCgpKSA8PCAiKTtcbiI7CisgICAgKTsKKworICAgIHJldHVybiBGb250UGxhdGZvcm1E
YXRhKG5ld0ZvbnQuZ2V0KCksIHNpemUsIGJvbGQsIGl0YWxpYywgb3JpZW50YXRpb24sIHdpZHRo
VmFyaWFudCwgZm9udERlc2NyaXB0aW9uLnRleHRSZW5kZXJpbmdNb2RlKCksICZjcmVhdGlvbkRh
dGEpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBpdGVtSW5Db2xsZWN0aW9uKQpAQCAtNzgsNyArODgsMjMgQEAgc3RkOjp1bmlxdWVfcHRyPEZv
bnRDdXN0b21QbGF0Zm9ybURhdGE+IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVk
QnVmZmUKICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBzdGF0aWNfY2FzdDxDVEZvbnREZXNjcmlw
dG9yUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFycmF5LmdldCgpLCAwKSk7CiAKICAgICBG
b250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEgY3JlYXRpb25EYXRhID0geyBidWZmZXIsIGl0
ZW1JbkNvbGxlY3Rpb24gfTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxGb250Q3VzdG9tUGxhdGZv
cm1EYXRhPihmb250RGVzY3JpcHRvci5nZXQoKSwgV1RGTW92ZShjcmVhdGlvbkRhdGEpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1ha2VVbmlxdWU8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4oZm9udERl
c2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoY3JlYXRpb25EYXRhKSk7CisKKyAgICBMT0dfV0lUSF9T
VFJFQU0oU2hhcGluZywKKyAgICAgICAgc3RyZWFtIDw8ICIgICAgc3RhdGljIGNvbnN0IHVpbnQ4
X3QgZGF0YSIgPDwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHJlc3VsdC5nZXQoKSkgPDwg
IlsiIDw8IGJ1ZmZlci5zaXplKCkgPDwgIl0gPSB7IjsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBidWZmZXIuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpKQorICAgICAg
ICAgICAgICAgIHN0cmVhbSA8PCAiLCAiOworICAgICAgICAgICAgc3RyZWFtIDw8IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oYnVmZmVyLmRhdGEoKVtpXSk7CisgICAgICAgIH0KKyAgICAgICAg
c3RyZWFtIDw8ICJ9O1xuIjsKKworICAgICAgICBzdHJlYW0gPDwgIiAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHNpemUiIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXN1bHQuZ2V0KCkp
IDw8ICIgPSAiIDw8IGJ1ZmZlci5zaXplKCkgPDwgIjtcbiI7CisKKyAgICAgICAgc3RyZWFtIDw8
ICIgICAgc3RhdGljIENGU3RyaW5nUmVmIGl0ZW0iIDw8IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihyZXN1bHQuZ2V0KCkpIDw8ICIgPSBDRlNUUihcIiIgPDwgaXRlbUluQ29sbGVjdGlvbiA8
PCAiXCIpO1xuIjsKKyAgICApOworCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogYm9vbCBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpzdXBwb3J0c0Zvcm1hdChjb25zdCBTdHJpbmcmIGZvcm1hdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>