<?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>233975</bug_id>
          
          <creation_ts>2021-12-07 22:10:14 -0800</creation_ts>
          <short_desc>Make the useBackslashAsYenSignForFamily table thread safe</short_desc>
          <delta_ts>2022-07-21 01:20:15 -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>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Cameron McCormack (:heycam)">heycam</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mattwoodrow</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821382</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:10:14 -0800</bug_when>
    <thetext>Make the useBackslashAsYenSignForFamily table thread safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821383</commentid>
    <comment_count>1</comment_count>
      <attachid>446296</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:17:43 -0800</bug_when>
    <thetext>Created attachment 446296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821384</commentid>
    <comment_count>2</comment_count>
      <attachid>446297</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:18:09 -0800</bug_when>
    <thetext>Created attachment 446297
Patch with dependencies for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821988</commentid>
    <comment_count>3</comment_count>
      <attachid>446296</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-08 21:04:20 -0800</bug_when>
    <thetext>Comment on attachment 446296
Patch

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

&gt; Source/WebCore/platform/graphics/FontCache.cpp:398
&gt; +bool FontCache::useBackslashAsYenSignForFamily(const AtomString&amp; family)

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824247</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 22:11:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86506138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885447</commentid>
    <comment_count>5</comment_count>
      <attachid>461053</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-07-20 14:37:43 -0700</bug_when>
    <thetext>Created attachment 461053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885660</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-21 01:20:12 -0700</bug_when>
    <thetext>Committed 252687@main (6cc919dc34cf): &lt;https://commits.webkit.org/252687@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461053.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446296</attachid>
            <date>2021-12-07 22:17:43 -0800</date>
            <delta_ts>2021-12-08 21:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233975-20211208171741.patch</filename>
            <type>text/plain</type>
            <size>6752</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ3MTNlZWY4YjRlZjZl
NjQ0ZDBmNGZlYzQ3ZGI1YTRiNzcxZWY0OC4uNzJhMTBjYzUwZWRjZDBmZTJjYmJiMjEwODYzMzNm
MjhhODE2NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTEyLTA3ICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSB0aGUgdXNl
QmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5IHRhYmxlIHRocmVhZCBzYWZlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIE9mZnNjcmVlbkNhbnZh
cywgdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5IGNhbiBiZSBjYWxsZWQgZnJvbQorICAg
ICAgICB3b3JrZXIgdGhyZWFkcy4gVGhhdCBmdW5jdGlvbiBoYXMgYSBsYXppbHkgaW5pdGlhbGl6
ZWQgdGFibGUgb2YKKyAgICAgICAgQXRvbVN0cmluZ3Mgb2YgZm9udCBmYW1pbGllcyB0aGF0IHJl
cXVpcmUgdGhpcyBiZWhhdmlvci4gVG8gbWFrZSB0aGlzCisgICAgICAgIHRocmVhZCBzYWZlLCB0
aGlzIHBhdGNoIG1vdmVzIHRoZSBmdW5jdGlvbiB0byBGb250Q2FjaGUsIGZvciB3aGljaCB3ZQor
ICAgICAgICBoYXZlIGFuIGluc3RhbmNlIHBlciB3b3JrZXIgYWxyZWFkeS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OkZvbnRDYXNjYWRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjp1cGRhdGVGb250cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOiBEZWxldGVk
LgorCiAyMDIxLTEyLTAyICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSB0aGUgRm9udENhc2NhZGVDYWNoZSB0byBhIHNlcGFyYXRlIGZpbGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDdl
ZmVmOTcyMTAxY2NlNmU0NzY0YWI1ZGM5OGUxODAzY2RhYTczOGEuLjc0M2Q4ZjZhMTBkNjZmNWQ3
NGQ3MGEzZmQ1OWZjODYyYWUxYWIxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMzk1LDYgKzM5NSwyOCBAQCB2b2lkIEZvbnRDYWNo
ZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNoZXMoKQogICAgIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRo
cmVhZCgpLmludmFsaWRhdGUoKTsKIH0KIAorYm9vbCBGb250Q2FjaGU6OnVzZUJhY2tzbGFzaEFz
WWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCit7CisgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2ZhbWls
aWVzVXNpbmdCYWNrc2xhc2hBc1llblNpZ24uaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gYWRk
ID0gWyZdIChjb25zdCBjaGFyKiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXI+IHVu
aWNvZGVOYW1lKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gc3RybGVuKG5h
bWUpOworICAgICAgICAgICAgbV9mYW1pbGllc1VzaW5nQmFja3NsYXNoQXNZZW5TaWduLmFkZChB
dG9tU3RyaW5nIHsgbmFtZSwgbmFtZUxlbmd0aCwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwgfSk7CisgICAgICAgICAgICB1bnNpZ25lZCB1bmljb2RlTmFtZUxlbmd0aCA9IHVuaWNv
ZGVOYW1lLnNpemUoKTsKKyAgICAgICAgICAgIG1fZmFtaWxpZXNVc2luZ0JhY2tzbGFzaEFzWWVu
U2lnbi5hZGQoQXRvbVN0cmluZyB7IHVuaWNvZGVOYW1lLmJlZ2luKCksIHVuaWNvZGVOYW1lTGVu
Z3RoIH0pOworICAgICAgICB9OworICAgICAgICBhZGQoIk1TIFBHb3RoaWMiLCB7IDB4RkYyRCwg
MHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0p
OworICAgICAgICBhZGQoIk1TIFBNaW5jaG8iLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4
RkYzMCwgMHg2NjBFLCAweDY3MUQgfSk7CisgICAgICAgIGFkZCgiTVMgR290aGljIiwgeyAweEZG
MkQsIDB4RkYzMywgMHgwMDIwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUYgfSk7Cisg
ICAgICAgIGFkZCgiTVMgTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDY2MEUs
IDB4NjcxRCB9KTsKKyAgICAgICAgYWRkKCJNZWlyeW8iLCB7IDB4MzBFMSwgMHgzMEE0LCAweDMw
RUEsIDB4MzBBQSB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9mYW1pbGllc1VzaW5nQmFja3Ns
YXNoQXNZZW5TaWduLmNvbnRhaW5zKGZhbWlseSk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiAKIEZvbnRDYWNoZTo6UHJld2FybUluZm9ybWF0aW9uIEZvbnRDYWNoZTo6Y29sbGVjdFByZXdh
cm1JbmZvcm1hdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCmluZGV4IDg2OGE2OTBlZTZhYzc3NmZlYTRiMzNlMjI1NzIxZTQyOGI1OTkw
NjcuLjNhZDczYzc2YzhjODY0ODY4OWZlM2RkOGFjOTU2MjQ5OWQ1OGIzZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC00Niw2ICs0Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1BvaW50ZXJDb21w
YXJpc29uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhv
b2RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CkBAIC0xNjQsNiArMTY1LDggQEAg
cHVibGljOgogICAgIEZvbnRDYXNjYWRlQ2FjaGUmIGZvbnRDYXNjYWRlQ2FjaGUoKSB7IHJldHVy
biBtX2ZvbnRDYXNjYWRlQ2FjaGU7IH0KICAgICBTeXN0ZW1GYWxsYmFja0NhY2hlJiBzeXN0ZW1G
YWxsYmFja0NhY2hlKCkgeyByZXR1cm4gbV9zeXN0ZW1GYWxsYmFja0NhY2hlOyB9CiAKKyAgICBi
b29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1p
bHkpOworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHVyZ2VJbmFjdGl2ZUZv
bnREYXRhSWZOZWVkZWQoKTsKIApAQCAtMTg4LDYgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAgVW5p
cXVlUmVmPEZvbnREYXRhQ2FjaGVzPiBtX2ZvbnREYXRhQ2FjaGVzOwogICAgIEZvbnRDYXNjYWRl
Q2FjaGUgbV9mb250Q2FzY2FkZUNhY2hlOwogICAgIFN5c3RlbUZhbGxiYWNrQ2FjaGUgbV9zeXN0
ZW1GYWxsYmFja0NhY2hlOworICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aFNldDxBdG9tU3RyaW5nPiBtX2ZhbWlsaWVzVXNpbmdCYWNrc2xhc2hBc1llblNpZ247CiAKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2dlbmVyYXRpb24geyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA3YWY5Nzg2ZmVlMjM5
OGZiMDM4Y2I5YzQ4OTVhNzk3ZGM5N2UxYTJiLi5iM2MxNGZlMTJlYzNkYzZmNzZhNDMzN2JlZDM0
NjNmOTk4M2FlMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC00NiwyOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKLXN0YXRpYyBib29sIHVzZUJhY2tzbGFz
aEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHkpCi17Ci0gICAgaWYg
KGZhbWlseS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzdGF0aWMgY29u
c3QgYXV0byBzZXQgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewotICAgICAgICBNZW1vcnlDb21w
YWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gc2V0OwotICAgICAgICBh
dXRvIGFkZCA9IFsmc2V0XSAoY29uc3QgY2hhciogbmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0
PFVDaGFyPiB1bmljb2RlTmFtZSkgewotICAgICAgICAgICAgdW5zaWduZWQgbmFtZUxlbmd0aCA9
IHN0cmxlbihuYW1lKTsKLSAgICAgICAgICAgIHNldC5hZGQoQXRvbVN0cmluZyB7IG5hbWUsIG5h
bWVMZW5ndGgsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH0pOwotICAgICAgICAg
ICAgdW5zaWduZWQgdW5pY29kZU5hbWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXplKCk7Ci0gICAg
ICAgICAgICBzZXQuYWRkKEF0b21TdHJpbmcgeyB1bmljb2RlTmFtZS5iZWdpbigpLCB1bmljb2Rl
TmFtZUxlbmd0aCB9KTsKLSAgICAgICAgfTsKLSAgICAgICAgYWRkKCJNUyBQR290aGljIiwgeyAw
eEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4
MzBBRiB9KTsKLSAgICAgICAgYWRkKCJNUyBQTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgw
MDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEIH0pOwotICAgICAgICBhZGQoIk1TIEdvdGhpYyIs
IHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFG
IH0pOwotICAgICAgICBhZGQoIk1TIE1pbmNobyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwg
MHg2NjBFLCAweDY3MUQgfSk7Ci0gICAgICAgIGFkZCgiTWVpcnlvIiwgeyAweDMwRTEsIDB4MzBB
NCwgMHgzMEVBLCAweDMwQUEgfSk7Ci0gICAgICAgIHJldHVybiBzZXQ7Ci0gICAgfSgpKTsKLSAg
ICByZXR1cm4gc2V0LmdldCgpLmNvbnRhaW5zKGZhbWlseSk7Ci19Ci0KIEZvbnRDYXNjYWRlOjpD
b2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IENvZGVQYXRoOjpBdXRvOwogCiAvLyA9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtODIsNyArNjAsNyBAQCBGb250
Q2FzY2FkZTo6Rm9udENhc2NhZGUoRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmIGZkLCBmbG9hdCBs
ZXR0ZXJTcGFjaW5nLCBmbG9hdAogICAgIDogbV9mb250RGVzY3JpcHRpb24oV1RGTW92ZShmZCkp
CiAgICAgLCBtX2xldHRlclNwYWNpbmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNp
bmcod29yZFNwYWNpbmcpCi0gICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKHVzZUJhY2tz
bGFzaEFzWWVuU2lnbkZvckZhbWlseShtX2ZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpKSkK
KyAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2woRm9udENhY2hlOjpmb3JDdXJyZW50VGhy
ZWFkKCkudXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KG1fZm9udERlc2NyaXB0aW9uLmZp
cnN0RmFtaWx5KCkpKQogICAgICwgbV9lbmFibGVLZXJuaW5nKGNvbXB1dGVFbmFibGVLZXJuaW5n
KCkpCiAgICAgLCBtX3JlcXVpcmVzU2hhcGluZyhjb21wdXRlUmVxdWlyZXNTaGFwaW5nKCkpCiB7
CkBAIC0xNDcsNyArMTI1LDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6aXNDdXJyZW50KGNvbnN0IEZv
bnRTZWxlY3RvciYgZm9udFNlbGVjdG9yKSBjb25zdAogdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRl
Rm9udHMoUmVmPEZvbnRDYXNjYWRlRm9udHM+JiYgZm9udHMpIGNvbnN0CiB7CiAgICAgbV9mb250
cyA9IFdURk1vdmUoZm9udHMpOwotICAgIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgPSB1c2VC
YWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoZmlyc3RGYW1pbHkoKSk7CisgICAgbV91c2VCYWNr
c2xhc2hBc1llblN5bWJvbCA9IEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnVzZUJhY2tz
bGFzaEFzWWVuU2lnbkZvckZhbWlseShmaXJzdEZhbWlseSgpKTsKICAgICBtX2VuYWJsZUtlcm5p
bmcgPSBjb21wdXRlRW5hYmxlS2VybmluZygpOwogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29t
cHV0ZVJlcXVpcmVzU2hhcGluZygpOwogfQo=
</data>
<flag name="review"
          id="471657"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446297</attachid>
            <date>2021-12-07 22:18:09 -0800</date>
            <delta_ts>2021-12-07 23:01:28 -0800</delta_ts>
            <desc>Patch with dependencies for EWS</desc>
            <filename>bug-233975-20211208171807.patch</filename>
            <type>text/plain</type>
            <size>68817</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI1ZDM3MjAzNGI1MWMx
NTYwMzYwYzgwZWUzMzdhZjExYmZjMDY3Ni4uNzJhMTBjYzUwZWRjZDBmZTJjYmJiMjEwODYzMzNm
MjhhODE2NDgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMS0xMi0wNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgdGhlIHVz
ZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSB0YWJsZSB0aHJlYWQgc2FmZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBPZmZzY3JlZW5DYW52
YXMsIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSBjYW4gYmUgY2FsbGVkIGZyb20KKyAg
ICAgICAgd29ya2VyIHRocmVhZHMuIFRoYXQgZnVuY3Rpb24gaGFzIGEgbGF6aWx5IGluaXRpYWxp
emVkIHRhYmxlIG9mCisgICAgICAgIEF0b21TdHJpbmdzIG9mIGZvbnQgZmFtaWxpZXMgdGhhdCBy
ZXF1aXJlIHRoaXMgYmVoYXZpb3IuIFRvIG1ha2UgdGhpcworICAgICAgICB0aHJlYWQgc2FmZSwg
dGhpcyBwYXRjaCBtb3ZlcyB0aGUgZnVuY3Rpb24gdG8gRm9udENhY2hlLCBmb3Igd2hpY2ggd2UK
KyAgICAgICAgaGF2ZSBhbiBpbnN0YW5jZSBwZXIgd29ya2VyIGFscmVhZHkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpGb250Q2FzY2Fk
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dXBkYXRlRm9udHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KTogRGVsZXRl
ZC4KKworMjAyMS0xMi0wMiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgdGhlIEZvbnRDYXNjYWRlQ2FjaGUgdG8gYSBzZXBhcmF0ZSBmaWxlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb250Q2FzY2Fk
ZUNhY2hlIGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgdG8gaGFuZyBvZmYgRm9udENhY2hlIGluCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4NTguIFRv
IG1ha2UgRm9udENhY2hlLmgvCisgICAgICAgIEZvbnRDYWNoZS5jcHAgbGVzcyBidXN5LCB0aGlz
IHBhdGNoIG1vdmVzIHRoZSBGb250Q2FzY2FkZUNhY2hlIG91dCB0bworICAgICAgICBhIHNlcGFy
YXRlIGZpbGUuIFRvIG1ha2UgdGhlIGludGVyZmFjZSBvZiB0aGUgRm9udENhc2NhZGVDYWNoZSBt
b3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLCB0aGlzIHBhdGNoIGFsc28gd3JhcHMgaXQgdXAg
aW4gYSBjbGFzcyBhbmQgYWRkcyBzb21lCisgICAgICAgIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0
aCBpdC4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZWxlYXNlTm9uY3Jp
dGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3NCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OnVwZGF0ZUZvbnRDYXNjYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6aW52
YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5TmFtZTo6Rm9udEZhbWlseU5h
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhbWlseU5hbWU6OnN0cmluZyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphZGQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
b250Q2FjaGU6OmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYWNoZTo6Y2xlYXJXaWR0aENhY2hlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjptYWtlRm9udENhc2NhZGVDYWNoZUtleSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250Q2FjaGU6OnBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2FzY2Fk
ZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6cHJ1bmVTeXN0
ZW1GYWxsYmFja0ZvbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6
cmV0cmlldmVPckFkZENhY2hlZEZvbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9udENh
c2NhZGVDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0
YTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eVJhcmVEYXRhOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OnZhcmlhdGlvblNldHRpbmdzIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRh
Ojpmb250UGFsZXR0ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXlSYXJlRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Rm9udERlc2NyaXB0aW9uS2V5
UmFyZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6Rm9udERlc2NyaXB0aW9uS2V5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleTo6b3BlcmF0b3I9
PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6
Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2Ny
aXB0aW9uS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6Om1ha2VGbGFnc0tleSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OkRlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT46
Omhhc2gpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250
RGVzY3JpcHRpb25LZXk+OjplcXVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZUNhY2hlS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmVtcHR5VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmNvbnN0cnVjdERl
bGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hl
S2V5SGFzaFRyYWl0czo6aXNEZWxldGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFtaWx5TmFtZTo6c3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2g6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGU6OmNsZWFyV2lkdGhDYWNoZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZTo6cHJ1bmVVbnJlZmVyZW5jZWRFbnRyaWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlQ2FjaGU6OnBydW5lU3lzdGVtRmFsbGJhY2tGb250
cyk6CisgICAgICAgIChXZWJDb3JlOjptYWtlRm9udENhc2NhZGVDYWNoZUtleSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmguCisgICAgICAg
IChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpmZWF0dXJlU2V0dGluZ3MgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE6OnZhcmlh
dGlvblNldHRpbmdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktl
eVJhcmVEYXRhOjpmb250UGFsZXR0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXlSYXJlRGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNjcmlw
dGlvbktleTo6Rm9udERlc2NyaXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbktleTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb25LZXk6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERl
c2NyaXB0aW9uS2V5Ojppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6Om1ha2VGbGFnc0tleSk6CisgICAgICAgIChXVEY6
OkRlZmF1bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT46Omhhc2gpOgorICAgICAg
ICAoV1RGOjpEZWZhdWx0SGFzaDxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+OjplcXVhbCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6ZXF1YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmVtcHR5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHM6OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hlS2V5
SGFzaFRyYWl0czo6aXNEZWxldGVkVmFsdWUpOgorCisyMDIxLTEyLTAyICBDYW1lcm9uIE1jQ29y
bWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSB0aGUgU3lzdGVtRmFsbGJh
Y2tDYWNoZSB0byBGb250Q2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMzk3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdpdGggT2Zmc2NyZWVuQ2FudmFzLCB0aGUgU3lzdGVtRmFsbGJhY2tDYWNo
ZSBjYW4gYmUgdG91Y2hlZCBmcm9tCisgICAgICAgIHdvcmtlciB0aHJlYWRzLiBUaGlzIGNhY2hl
IGNvbnRhaW5zIEF0b21TdHJpbmdzLCB3aGljaCBhcmUgdGhyZWFkCisgICAgICAgIHNwZWNpZmlj
LgorCisgICAgICAgIE1vdmUgdGhlIFN5c3RlbUZhbGxiYWNrQ2FjaGUgY29kZSBmcm9tIGluc2lk
ZSBGb250Q2FjaGUuY3BwIHRvIHNlcGFyYXRlCisgICAgICAgIGZpbGVzLCB0byBhdm9pZCBGb250
Q2FjaGUuaCBmcm9tIGdldHRpbmcgdG9vIG5vaXN5LiBBbHNvIHRha2UgdGhlCisgICAgICAgIG9w
cG9ydHVuaXR5IHRvIHdyYXAgaXQgaW4gYSBjbGFzcyB0byBnaXZlIGl0IG1lYW5pbmdmdWwgbWV0
aG9kcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0NhY2hlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbUZhbGxi
YWNrQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUZhbGxiYWNrQ2Fj
aGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVtRmFsbGJhY2tDYWNoZTo6Zm9yQ3VycmVu
dFRocmVhZCk6CisgICAgICAgIE1vdmUgU3lzdGVtRmFsbGJhY2tDYWNoZSBmcm9tIGEgc2luZ2xl
dG9uIHRvIEZvbnRDYWNoZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnNldElzVXNlZEluU3lzdGVtRmFsbGJhY2tDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Ojppc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUgY29u
c3QpOgorICAgICAgICBOZXcgZnVuY3Rpb25zIHRvIG5vdGUgYSBGb250IGlzIGluIGEgU3lzdGVt
RmFsbGJhY2tDYWNoZSwgc2luY2UgdGhlCisgICAgICAgIG1ldGhvZCB0aGF0IGFkZHMgaXQgdG8g
YW5kIGNoZWNrcyBpdHMgcHJlc2VuY2UgaW4gdGhlIGNhY2hlIGlzIG5vIGxvbmdlcgorICAgICAg
ICBpbiBGb250LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Ojp+Rm9udCk6CisgICAgICAgIENhbGwgYSBuZXcgU3lzdGVtRmFs
bGJhY2tDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCBmdW5jdGlvbi4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6c3lzdGVtRmFs
bGJhY2tGb250Rm9yQ2hhcmFjdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnJl
bW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9TeXN0ZW1GYWxsYmFja0NhY2hlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTeXN0
ZW1GYWxsYmFja0NhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3lzdGVtRmFsbGJhY2tDYWNoZTo6cmVtb3ZlKToKKyAgICAgICAgTW92ZSBs
b29rdXAgYW5kIHJlbW92YWwgbWV0aG9kcyBmcm9tIEZvbnQgdG8gU3lzdGVtRmFsbGJhY2tDYWNo
ZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFj
dGVyRmFsbGJhY2tNYXBLZXlIYXNoOjpoYXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaDo6ZXF1YWwpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRmFsbGJhY2tN
YXBLZXlIYXNoVHJhaXRzOjppc0RlbGV0ZWRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlN5c3RlbUZhbGxiYWNrQ2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5OjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN5c3RlbUZhbGxiYWNrQ2FjaGU6OkNo
YXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaDo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpTeXN0
ZW1GYWxsYmFja0NhY2hlOjpDaGFyYWN0ZXJGYWxsYmFja01hcEtleUhhc2g6OmVxdWFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN5c3RlbUZhbGxiYWNrQ2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFw
S2V5SGFzaFRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN5c3RlbUZhbGxiYWNrQ2FjaGU6OkNoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaFRyYWl0czo6
aXNEZWxldGVkVmFsdWUpOgorICAgICAgICBNb3ZlIGV4aXN0aW5nIFN5c3RlbUZhbGxiYWNrQ2Fj
aGUgY29kZSBmcm9tIEZvbnQuY3BwIHRvIGEgbmV3IGZpbGUgYW5kCisgICAgICAgIHdyYXAgaXQg
aW4gYSBjbGFzcy4KKwogMjAyMS0xMi0wNyAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBleHBhbmRBcm91bmRJZGVvZ3JhcGhzIHN0YXRpYyB2
YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDUxZGY1YzMwYWI5ZmRjNDU3YzhlMGRiOWQ2
ZGNiYjY3YjNmNThmYjEuLjU0YzdiNDFlNDBjYjY2ZWJkZDhjNWNiNTU1MmFlMzJhMGQ4NjhjNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQyOCw2ICsxNDI4LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRCYXNlbGlu
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNo
ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENyZWF0aW9uQ29udGV4dC5oCkBAIC0xNTMzLDYgKzE1MzQsNyBAQCBzZXQoV2ViQ29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmgKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9UYWJTaXplLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IGVlMDBjOTc1NDZiYWViMTc3MzYzMzMyYjc5NDQ3ZWYxODU5MmEyNzMuLjM0OGQ4MWU3MzM1Zjky
OTExY2EwODQ4MTE5MjU0NzVlNzIzNjc5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMDEwLDYgKzIw
MTAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hl
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uY3BwCkBAIC0yMDcwLDYgKzIwNzEsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvU3Ry
aW5nVHJ1bmNhdG9yLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0
VHJhY2tSZXByZXNlbnRhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0ZUJh
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMzgxNWY5YzI0NjM3NThkZDU1YWYzZDQ4OWIxNDU0NWE2N2U1YzBmYi4uM2Qz
Njg4MmU2NDI3NDVkOTAzN2IyYjIxYmIyZmRkNGExNmQzMmNmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxMiw2ICsxMDEy
LDggQEAKIAkJMzFGQjFBNUQxMjBBNUQwNjAwREMwMkEwIC8qIERldmljZU1vdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUZCMUE1NTEy
MEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uRXZlbnQuaCAqLzsgfTsKIAkJMzFGQjFBNjYx
MjBBNUQzRjAwREMwMkEwIC8qIEpTRGV2aWNlTW90aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRkIxQTY0MTIwQTVEM0YwMERDMDJBMCAv
KiBKU0RldmljZU1vdGlvbkV2ZW50LmggKi87IH07CiAJCTMxRkU2REZBMTUwMDRDMkEwMDA0RUJD
NCAvKiBOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxRUMxREFDMTRGRjI2RUEwMEM5NDY2MiAvKiBO
b3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTggLyogU3lz
dGVtRmFsbGJhY2tDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzI4OTlGQjkyNzRCNDEwQzAwODU1QTlEIC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMkVB
RkI4RDI3NEM1RUE2MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3
IC8qIEZvbnRDYXNjYWRlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkzMzUwM0M5QTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzM1MDNDQTQxMDE3OUFE
NzAwM0I0N0UxIC8qIEpTTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzUwM0NBMDEwMTc5QUQ3MDAzQjQ3RTEgLyogSlNOb3RpZmlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkzM0QwMjEyRDEzMURCMzdCMDA0MDkxQTggLyogQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRUExMjcwRTEwRDAwREZC
QTcxIC8qIENvb2tpZVN0b3JhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtODM3Myw2ICs4Mzc1LDEwIEBACiAJCTMxRkIxQTU2MTIwQTVEMDYw
MERDMDJBMCAvKiBEZXZpY2VNb3Rpb25FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RGV2aWNlTW90aW9uRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUZC
MUE2MzEyMEE1RDNGMDBEQzAyQTAgLyogSlNEZXZpY2VNb3Rpb25FdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RldmljZU1vdGlvbkV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFGQjFBNjQxMjBBNUQzRjAwREMwMkEwIC8qIEpT
RGV2aWNlTW90aW9uRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
ZXZpY2VNb3Rpb25FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMjg5OUZC
NzI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFsbGJhY2tDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTeXN0ZW1GYWxsYmFja0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMzI4OTlGQjkyNzRCNDEwQzAwODU1QTlEIC8qIFN5c3RlbUZhbGxiYWNrQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3lzdGVtRmFsbGJhY2tDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyogRm9udENhc2NhZGVDYWNoZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FzY2FkZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8qIEZvbnRDYXNjYWRl
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhc2NhZGVDYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzFGRjY3REUxOTdCNTczOTNDNDZB
N0YgLyogUmVuZGVyTWF0aE1MUGFkZGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbmRlck1hdGhNTFBhZGRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MzFGRjY3REUxOTdCNTczOTNDNDZBQTcgLyogUmVuZGVyTWF0aE1MU3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWF0aE1MU3BhY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzMzRjcwNEUwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjM2LDYgKzI4NjQyLDggQEAKIAkJCQlCMkMzREE1MjBE
MDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAw
RUY2RjI2IC8qIEZvbnRDYXNjYWRlLmNwcCAqLywKIAkJCQlCMkMzREE1MDBEMDA2Q0Q2MDBFRjZG
MjYgLyogRm9udENhc2NhZGUuaCAqLywKKwkJCQkzMkQzMTA0RTI3NEM2ODdCMDAzM0FCMkYgLyog
Rm9udENhc2NhZGVDYWNoZS5jcHAgKi8sCisJCQkJMzJFQUZCOEIyNzRDNUVBNTAwNjUwNTU3IC8q
IEZvbnRDYXNjYWRlQ2FjaGUuaCAqLywKIAkJCQlFNEU4QjRGMDIxNkI4QjVGMDBCODgzNEQgLyog
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJRTRFOEI0RjIyMTZCOEI2MDAwQjg4
MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLywKIAkJCQlCMkMzREE1NjBEMDA2Q0Q2
MDBFRjZGMjYgLyogRm9udENhc2NhZGVGb250cy5jcHAgKi8sCkBAIC0yODgxMyw2ICsyODgyMSw4
IEBACiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAg
Ki8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICov
LAogCQkJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0
SXRlcmF0b3IuaCAqLywKKwkJCQkzMjg5OUZCNzI3NEI0MTBDMDA4NTVBOUQgLyogU3lzdGVtRmFs
bGJhY2tDYWNoZS5jcHAgKi8sCisJCQkJMzI4OTlGQjkyNzRCNDEwQzAwODU1QTlEIC8qIFN5c3Rl
bUZhbGxiYWNrQ2FjaGUuaCAqLywKIAkJCQkzQkI2QjgwRjIyQTdEMzExMDAzQTJBNjkgLyogVGFi
U2l6ZS5oICovLAogCQkJCTM3NkRDQ0UwMTNCNEY5NjYwMDJFQkVGQyAvKiBUZXh0UnVuLmNwcCAq
LywKIAkJCQlBODI0QjQ2NDBFMkVGMkVBMDA4MUE3QjcgLyogVGV4dFJ1bi5oICovLApAQCAtMzQy
NjQsNiArMzQyNzQsNyBAQAogCQkJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2Fj
aGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyNDU4RTYzMUZFODk3QjAwMDU5NDc1OSAvKiBGb250
Q2FjaGVDb3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjEwRDAwNkNENjAwRUY2
RjI2IC8qIEZvbnRDYXNjYWRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMkVBRkI4RDI3NEM1RUE2
MDA2NTA1NTcgLyogRm9udENhc2NhZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOEI0
RjUyMTZCOTU2NTAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQzNEQTY4MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FzY2FkZUZvbnRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQzI2NjcxQjI2RkE5MzJGMDAxMTcwNzMgLyogRm9udENyZWF0
aW9uQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzI5Nyw2ICszNzMwOCw3IEBACiAJCQkJ
NTE3QTUzNDYxRjUwQzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTgwODExNzE2RkNGOUNCMDBCODBEMDcgLyogU3luY2hyb25vdXNMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxNjkyREQ1MjNEMjNFMDgwMDZFODhGNyAvKiBTeXN0
ZW1CYXR0ZXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMjExMkUwRjI3NEI0N0NGMDA3MDQ3QTgg
LyogU3lzdGVtRmFsbGJhY2tDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFOEI0RUMyMTZC
NzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjAzQzA3NDE4ODQ2OTVFMDBBNUY4Q0EgLyogU3lzdGVtTWVtb3J5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0MwNDEzODI1NENCMzBEMDAyMUQwRTYgLyogU3lzdGVtU291bmREZWxl
Z2F0ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
bW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApp
bmRleCBiYmE5NWZhM2U2NzljYWZiMWIyOTE0ODA1N2RmMjdiY2IwNjgxMmM4Li43YjE0NTg2N2Qy
YzY4Zjg2YmMyYWZlMWE4MjU0ZGFmNWUzOTI0MDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5
UmVsZWFzZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRp
Y2FsTWVtb3J5KE1haW50YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKIAogICAg
IC8vIEZJWE1FOiBDbGVhciB0aGVzZSBmb250IGNhY2hlcyBpbiB3b3JrZXJzIHRvbz8KICAgICBG
b250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKLSAg
ICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5jbGVhcldpZHRoQ2FjaGVzKCk7CisgICAg
Rm9udENhc2NhZGVDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLmNsZWFyV2lkdGhDYWNoZXMoKTsK
IAogICAgIFRleHRQYWludGVyOjpjbGVhckdseXBoRGlzcGxheUxpc3RzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3NCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3NCYXNlLmNwcAppbmRleCA3ZjU0ZDg3NjhjYzJmYTM2NGU1NDQxY2U4ZDQw
ZGE4NTYwNzljNmZiLi44YTE4Njk3M2UwYmNkNDhhNDc4ODY3NGUxZTkyYTJkZDRmNDRmMWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5nc0Jhc2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRp
YyB2b2lkIGludmFsaWRhdGVBZnRlckdlbmVyaWNGYW1pbHlDaGFuZ2UoUGFnZSogcGFnZSkKIHsK
ICAgICAvLyBObyBuZWVkIHRvIGludmFsaWRhdGUgRm9udENhc2NhZGVDYWNoZXMgaW4gd29ya2Vy
IHRocmVhZHMsIHNpbmNlIHdvcmtlcnMKICAgICAvLyBkbyBub3QgcmVzcG9uZCB0byBjaGFuZ2Vz
IGluIFNldHRpbmdzIHZhbHVlcy4KLSAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5p
bnZhbGlkYXRlRm9udENhc2NhZGVDYWNoZSgpOworICAgIEZvbnRDYXNjYWRlQ2FjaGU6OmZvckN1
cnJlbnRUaHJlYWQoKS5pbnZhbGlkYXRlKCk7CiAKICAgICBpZiAocGFnZSkKICAgICAgICAgcGFn
ZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJhbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEw
M2ZiYWYyMWY1NzAuLjQwZjRiZjRhNWNjZWQwMjljMDhmMjgyZjYyYjY2Y2MyZGJmM2E4MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0xNzcsNyArMTc3
LDcgQEAgdm9pZCBGb250OjpwbGF0Zm9ybUdseXBoSW5pdCgpCiAKIEZvbnQ6On5Gb250KCkKIHsK
LSAgICByZW1vdmVGcm9tU3lzdGVtRmFsbGJhY2tDYWNoZSgpOworICAgIFN5c3RlbUZhbGxiYWNr
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5yZW1vdmUodGhpcyk7CiB9CiAKIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25z
dApAQCAtNTU2LDgzICs1NTYsOSBAQCBHbHlwaEJ1ZmZlckFkdmFuY2UgRm9udDo6YXBwbHlUcmFu
c2Zvcm1zKEdseXBoQnVmZmVyJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sLAogfQogI2VuZGlm
CiAKLXN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSB7Ci0gICAgQXRvbVN0cmluZyBsb2Nh
bGU7Ci0gICAgVUNoYXIzMiBjaGFyYWN0ZXIgeyAwIH07Ci0gICAgYm9vbCBpc0ZvclBsYXRmb3Jt
Rm9udCB7IGZhbHNlIH07Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJh
Y3RlckZhbGxiYWNrTWFwS2V5JiBhLCBjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgYikK
LXsKLSAgICByZXR1cm4gYS5sb2NhbGUgPT0gYi5sb2NhbGUgJiYgYS5jaGFyYWN0ZXIgPT0gYi5j
aGFyYWN0ZXIgJiYgYS5pc0ZvclBsYXRmb3JtRm9udCA9PSBiLmlzRm9yUGxhdGZvcm1Gb250Owot
fQotCi1zdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoIHsKLSAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYga2V5KSB7IHJldHVybiBj
b21wdXRlSGFzaChrZXkubG9jYWxlLCBrZXkuY2hhcmFjdGVyLCBrZXkuaXNGb3JQbGF0Zm9ybUZv
bnQpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBL
ZXkmIGEsIGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBiKSB7IHJldHVybiBhID09IGI7
IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7Ci19OwotCi1zdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzIDog
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENoYXJhY3RlckZhbGxiYWNrTWFwS2V5PiB7Ci0gICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBz
bG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsgeyB9
LCBVX1NFTlRJTkVMLCB7IH0gfTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5jaGFyYWN0ZXIg
PT0gVV9TRU5USU5FTDsgfQotfTsKLQotLy8gRm9udHMgYXJlIG5vdCByZWYnZCB0byBhdm9pZCBj
eWNsZXMuCi0vLyBGSVhNRTogQ29uc2lkZXIgY2hhbmdpbmcgdGhlc2UgbWFwcyB0byB1c2UgV2Vh
a1B0ciBpbnN0ZWFkIG9mIHJhdyBwb2ludGVycy4KLXVzaW5nIENoYXJhY3RlckZhbGxiYWNrTWFw
ID0gSGFzaE1hcDxDaGFyYWN0ZXJGYWxsYmFja01hcEtleSwgRm9udCosIENoYXJhY3RlckZhbGxi
YWNrTWFwS2V5SGFzaCwgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzPjsKLXVzaW5n
IFN5c3RlbUZhbGxiYWNrQ2FjaGUgPSBIYXNoTWFwPGNvbnN0IEZvbnQqLCBDaGFyYWN0ZXJGYWxs
YmFja01hcD47Ci0KLXN0YXRpYyBTeXN0ZW1GYWxsYmFja0NhY2hlJiBzeXN0ZW1GYWxsYmFja0Nh
Y2hlKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3lzdGVtRmFsbGJhY2tDYWNoZT4g
bWFwOwotICAgIHJldHVybiBtYXAuZ2V0KCk7Ci19Ci0KIFJlZlB0cjxGb250PiBGb250OjpzeXN0
ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9yUGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1G
b250KSBjb25zdAogewotICAgIGF1dG8gZm9udEFkZFJlc3VsdCA9IHN5c3RlbUZhbGxiYWNrQ2Fj
aGUoKS5hZGQodGhpcywgQ2hhcmFjdGVyRmFsbGJhY2tNYXAoKSk7Ci0KLSAgICBpZiAoIWNoYXJh
Y3RlcikgewotICAgICAgICBVQ2hhciBjb2RlVW5pdCA9IDA7Ci0gICAgICAgIHJldHVybiBGb250
Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVz
Y3JpcHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9y
ZWRGb250OjpObywgJmNvZGVVbml0LCAxKTsKLSAgICB9Ci0KLSAgICBhdXRvIGtleSA9IENoYXJh
Y3RlckZhbGxiYWNrTWFwS2V5IHsgZGVzY3JpcHRpb24uY29tcHV0ZWRMb2NhbGUoKSwgY2hhcmFj
dGVyLCBpc0ZvclBsYXRmb3JtRm9udCAhPSBJc0ZvclBsYXRmb3JtRm9udDo6Tm8gfTsKLSAgICBy
ZXR1cm4gZm9udEFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZW5zdXJlKFdURk1vdmUoa2V5KSwg
WyZdIHsKLSAgICAgICAgVUNoYXIgY29kZVVuaXRzWzJdOwotICAgICAgICB1bnNpZ25lZCBjb2Rl
VW5pdHNMZW5ndGg7Ci0gICAgICAgIGlmIChVX0lTX0JNUChjaGFyYWN0ZXIpKSB7Ci0gICAgICAg
ICAgICBjb2RlVW5pdHNbMF0gPSBGb250Q2FzY2FkZTo6bm9ybWFsaXplU3BhY2VzKGNoYXJhY3Rl
cik7Ci0gICAgICAgICAgICBjb2RlVW5pdHNMZW5ndGggPSAxOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgY29kZVVuaXRzWzBdID0gVTE2X0xFQUQoY2hhcmFjdGVyKTsKLSAgICAgICAg
ICAgIGNvZGVVbml0c1sxXSA9IFUxNl9UUkFJTChjaGFyYWN0ZXIpOwotICAgICAgICAgICAgY29k
ZVVuaXRzTGVuZ3RoID0gMjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGZvbnQgPSBGb250Q2Fj
aGU6OmZvckN1cnJlbnRUaHJlYWQoKS5zeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoZGVzY3Jp
cHRpb24sIHRoaXMsIGlzRm9yUGxhdGZvcm1Gb250LCBGb250Q2FjaGU6OlByZWZlckNvbG9yZWRG
b250OjpObywgY29kZVVuaXRzLCBjb2RlVW5pdHNMZW5ndGgpLmdldCgpOwotICAgICAgICBpZiAo
Zm9udCkKLSAgICAgICAgICAgIGZvbnQtPm1faXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hlID0g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZvbnQ7Ci0gICAgfSkuaXRlcmF0b3ItPnZhbHVlOwotfQot
Ci12b2lkIEZvbnQ6OnJlbW92ZUZyb21TeXN0ZW1GYWxsYmFja0NhY2hlKCkKLXsKLSAgICBzeXN0
ZW1GYWxsYmFja0NhY2hlKCkucmVtb3ZlKHRoaXMpOwotCi0gICAgaWYgKCFtX2lzVXNlZEluU3lz
dGVtRmFsbGJhY2tDYWNoZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvJiBjaGFy
YWN0ZXJNYXAgOiBzeXN0ZW1GYWxsYmFja0NhY2hlKCkudmFsdWVzKCkpIHsKLSAgICAgICAgVmVj
dG9yPENoYXJhY3RlckZhbGxiYWNrTWFwS2V5LCA1MTI+IHRvUmVtb3ZlOwotICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogY2hhcmFjdGVyTWFwKSB7Ci0gICAgICAgICAgICBpZiAoZW50cnkudmFs
dWUgPT0gdGhpcykKLSAgICAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoZW50cnkua2V5KTsK
LSAgICAgICAgfQotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IHRvUmVtb3ZlKQotICAgICAgICAg
ICAgY2hhcmFjdGVyTWFwLnJlbW92ZShrZXkpOwotICAgIH0KKyAgICByZXR1cm4gU3lzdGVtRmFs
bGJhY2tDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJh
Y3Rlcih0aGlzLCBjaGFyYWN0ZXIsIGRlc2NyaXB0aW9uLCBpc0ZvclBsYXRmb3JtRm9udCk7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoRlJFRVRZUEUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggNzQ0MjAwNGYwMGI1ZGJhMjdmM2MzMmU2Njdi
MzZiY2NmNzg1MTRjZC4uNmJmNmYzMDNiM2NiZmRiNWM5NGFiYzJmOWQ2MDBmYzRmMDUwMWE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMjA1LDYgKzIwNSw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgYXNjZW50Q29uc2lkZXJpbmdNYWNBc2NlbnRI
YWNrKGNvbnN0IFdDSEFSKiwgZmxvYXQgYXNjZW50LCBmbG9hdCBkZXNjZW50KTsKICNlbmRpZgog
CisgICAgdm9pZCBzZXRJc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGUoKSB7IG1faXNVc2VkSW5T
eXN0ZW1GYWxsYmFja0NhY2hlID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNVc2VkSW5TeXN0ZW1GYWxs
YmFja0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZWRJblN5c3RlbUZhbGxiYWNrQ2FjaGU7
IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50YXRpb25GYWxs
YmFjaywgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+KTsKIApAQCAt
MjE5LDggKzIyMiw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZvbnQ+IGNyZWF0ZVNjYWxlZEZv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0OwogICAg
IFJlZlB0cjxGb250PiBwbGF0Zm9ybUNyZWF0ZVNjYWxlZEZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgZmxvYXQgc2NhbGVGYWN0b3IpIGNvbnN0OwogCi0gICAgdm9pZCByZW1vdmVGcm9tU3lz
dGVtRmFsbGJhY2tDYWNoZSgpOwotICAgIAogICAgIHN0cnVjdCBEZXJpdmVkRm9udHM7CiAgICAg
RGVyaXZlZEZvbnRzJiBlbnN1cmVEZXJpdmVkRm9udERhdGEoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggYjI1ZTdkZmI5
N2ExMDI5OTdiMGZhZTMzZDc1MzgxNWY4OWEzMDNlZC4uNzQzZDhmNmExMGQ2NmY1ZDc0ZDcwYTNm
ZDU5ZmM4NjJhZTFhYjE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FjaGUuY3BwCkBAIC01MSwzNSArNTEsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZSgpID0gZGVmYXVsdDsKLQotaW5saW5l
IEZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQot
ICAgIDogbV9uYW1lIHsgbmFtZSB9Ci17Ci19Ci0KLWlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBG
b250RmFtaWx5TmFtZTo6c3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9uYW1lOwotfQot
Ci1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBu
YW1lKQotewotICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFj
dGVycyBpbiB0aGUgbmFtZSBpbnN0ZWFkIG9mIGhhc2hpbmcgYSBoYXNoLgotICAgIGlmICghbmFt
ZS5zdHJpbmcoKS5pc051bGwoKSkKLSAgICAgICAgYWRkKGhhc2hlciwgRm9udENhc2NhZGVEZXNj
cmlwdGlvbjo6ZmFtaWx5TmFtZUhhc2gobmFtZS5zdHJpbmcoKSkpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFt
ZSYgYikKLXsKLSAgICByZXR1cm4gKGEuc3RyaW5nKCkuaXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5p
c051bGwoKSkgPyBhLnN0cmluZygpID09IGIuc3RyaW5nKCkgOiBGb250Q2FzY2FkZURlc2NyaXB0
aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5nKCksIGIuc3RyaW5nKCkpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBjb25zdCBGb250
RmFtaWx5TmFtZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdHJ1Y3QgRm9u
dFBsYXRmb3JtRGF0YUNhY2hlS2V5IHsKICAgICBGb250RGVzY3JpcHRpb25LZXkgZGVzY3JpcHRp
b25LZXk7CiAgICAgRm9udEZhbWlseU5hbWUgZmFtaWx5OwpAQCAtMzEwLDggKzI4MSw4IEBAIHZv
aWQgRm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkK
IHsKICAgICBMT0coRm9udHMsICJGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSgldSki
LCBwdXJnZUNvdW50KTsKIAotICAgIHBydW5lVW5yZWZlcmVuY2VkRW50cmllc0Zyb21Gb250Q2Fz
Y2FkZUNhY2hlKCk7Ci0gICAgcHJ1bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCk7CisgICAgbV9mb250
Q2FzY2FkZUNhY2hlLnBydW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAgIG1fZm9udENhc2Nh
ZGVDYWNoZS5wcnVuZVN5c3RlbUZhbGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZm9udExvY2sgfTsKQEAgLTM1NCwzMCArMzI1
LDYgQEAgdm9pZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJn
ZUNvdW50KQogICAgIHBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKLWJvb2wg
b3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2Fk
ZUNhY2hlS2V5JiBiKQotewotICAgIHJldHVybiBhLmZvbnREZXNjcmlwdGlvbktleSA9PSBiLmZv
bnREZXNjcmlwdGlvbktleQotICAgICAgICAmJiBhLmZvbnRTZWxlY3RvcklkID09IGIuZm9udFNl
bGVjdG9ySWQKLSAgICAgICAgJiYgYS5mb250U2VsZWN0b3JWZXJzaW9uID09IGIuZm9udFNlbGVj
dG9yVmVyc2lvbgotICAgICAgICAmJiBhLmZhbWlsaWVzID09IGIuZmFtaWxpZXM7Ci19Ci0KLXVu
c2lnbmVkIEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2Fj
aGVLZXkmIGtleSkKLXsKLSAgICByZXR1cm4gY29tcHV0ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlv
bktleSwga2V5LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiwga2V5LmZh
bWlsaWVzKTsKLX0KLQotdm9pZCBGb250Q2FjaGU6OmludmFsaWRhdGVGb250Q2FzY2FkZUNhY2hl
KCkKLXsKLSAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuY2xlYXIoKTsKLX0KLQotdm9pZCBGb250Q2Fj
aGU6OmNsZWFyV2lkdGhDYWNoZXMoKQotewotICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX2ZvbnRD
YXNjYWRlQ2FjaGUudmFsdWVzKCkpCi0gICAgICAgIHZhbHVlLT5mb250cy5nZXQoKS53aWR0aENh
Y2hlKCkuY2xlYXIoKTsKLX0KLQogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKIFJlZlB0
cjxPcGVuVHlwZVZlcnRpY2FsRGF0YT4gRm9udENhY2hlOjp2ZXJ0aWNhbERhdGEoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKQogewpAQCAtMzg4LDU4ICszMzUsOSBAQCBSZWZQ
dHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+IEZvbnRDYWNoZTo6dmVydGljYWxEYXRhKGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmIHBsYQogfQogI2VuZGlmCiAKLXN0YXRpYyBGb250Q2FzY2FkZUNhY2hl
S2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
IGRlc2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcikKLXsKLSAgICBGb250Q2Fz
Y2FkZUNhY2hlS2V5IGtleTsKLSAgICBrZXkuZm9udERlc2NyaXB0aW9uS2V5ID0gRm9udERlc2Ny
aXB0aW9uS2V5KGRlc2NyaXB0aW9uKTsKLSAgICB1bnNpZ25lZCBmYW1pbHlDb3VudCA9IGRlc2Ny
aXB0aW9uLmZhbWlseUNvdW50KCk7Ci0gICAga2V5LmZhbWlsaWVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZmFtaWx5Q291bnQpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlD
b3VudDsgKytpKQotICAgICAgICBrZXkuZmFtaWxpZXMudW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0
aW9uLmZhbWlseUF0KGkpKTsKLSAgICBrZXkuZm9udFNlbGVjdG9ySWQgPSBmb250U2VsZWN0b3Ig
PyBmb250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAwOwotICAgIGtleS5mb250U2VsZWN0b3JWZXJz
aW9uID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVjdG9yLT52ZXJzaW9uKCkgOiAwOwotICAgIHJl
dHVybiBrZXk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNG
cm9tRm9udENhc2NhZGVDYWNoZSgpCi17Ci0gICAgbV9mb250Q2FzY2FkZUNhY2hlLnJlbW92ZUlm
KFtdKGF1dG8mIGVudHJ5KSB7Ci0gICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0
KCkuaGFzT25lUmVmKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgRm9udENhY2hlOjpwcnVuZVN5c3Rl
bUZhbGxiYWNrRm9udHMoKQotewotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2ZvbnRDYXNjYWRl
Q2FjaGUudmFsdWVzKCkpCi0gICAgICAgIGVudHJ5LT5mb250cy0+cHJ1bmVTeXN0ZW1GYWxsYmFj
a3MoKTsKLX0KLQotUmVmPEZvbnRDYXNjYWRlRm9udHM+IEZvbnRDYWNoZTo6cmV0cmlldmVPckFk
ZENhY2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlv
biwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250U2VsZWN0b3IpCi17Ci0gICAgYXV0byBrZXkg
PSBtYWtlRm9udENhc2NhZGVDYWNoZUtleShmb250RGVzY3JpcHRpb24sIGZvbnRTZWxlY3Rvci5n
ZXQoKSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRDYXNjYWRlQ2FjaGUuYWRkKGtleSwg
bnVsbHB0cik7Ci0gICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmV0dXJu
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgpOwotCi0gICAgYXV0byYgbmV3
RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIG5ld0VudHJ5ID0gbWFrZVVu
aXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KEZvbnRDYXNjYWRlQ2FjaGVFbnRyeSB7IFdURk1v
dmUoa2V5KSwgRm9udENhc2NhZGVGb250czo6Y3JlYXRlKFdURk1vdmUoZm9udFNlbGVjdG9yKSkg
fSk7Ci0gICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGdseXBocyA9IG5ld0VudHJ5LT5mb250cy5n
ZXQoKTsKLQotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgdW5yZWZlcmVuY2VkUHJ1bmVJ
bnRlcnZhbCA9IDUwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IG1heGltdW1FbnRyaWVzID0g
NDAwOwotICAgIHN0YXRpYyB1bnNpZ25lZCBwcnVuZUNvdW50ZXI7Ci0gICAgLy8gUmVmZXJlbmNl
ZCBGb250Q2FzY2FkZUZvbnRzIHdvdWxkIGV4aXN0IGFueXdheSBzbyBwcnVuaW5nIHRoZW0gc2F2
ZXMgbGl0dGxlIG1lbW9yeS4KLSAgICBpZiAoISgrK3BydW5lQ291bnRlciAlIHVucmVmZXJlbmNl
ZFBydW5lSW50ZXJ2YWwpKQotICAgICAgICBwcnVuZVVucmVmZXJlbmNlZEVudHJpZXNGcm9tRm9u
dENhc2NhZGVDYWNoZSgpOwotICAgIC8vIFByZXZlbnQgcGF0aG9sb2dpY2FsIGdyb3d0aC4KLSAg
ICBpZiAobV9mb250Q2FzY2FkZUNhY2hlLnNpemUoKSA+IG1heGltdW1FbnRyaWVzKQotICAgICAg
ICBtX2ZvbnRDYXNjYWRlQ2FjaGUucmVtb3ZlKG1fZm9udENhc2NhZGVDYWNoZS5yYW5kb20oKSk7
Ci0gICAgcmV0dXJuIGdseXBoczsKLX0KLQogdm9pZCBGb250Q2FjaGU6OnVwZGF0ZUZvbnRDYXNj
YWRlKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4m
JiBmb250U2VsZWN0b3IpCiB7Ci0gICAgZm9udENhc2NhZGUudXBkYXRlRm9udHMocmV0cmlldmVP
ckFkZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLCBXVEZNb3ZlKGZv
bnRTZWxlY3RvcikpKTsKKyAgICBmb250Q2FzY2FkZS51cGRhdGVGb250cyhtX2ZvbnRDYXNjYWRl
Q2FjaGUucmV0cmlldmVPckFkZENhY2hlZEZvbnRzKGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlv
bigpLCBXVEZNb3ZlKGZvbnRTZWxlY3RvcikpKTsKIH0KIAogc2l6ZV90IEZvbnRDYWNoZTo6Zm9u
dENvdW50KCkKQEAgLTQ3OSw3ICszNzcsNyBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZSgp
CiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQogICAgIG1fZm9udERhdGFDYWNoZXMtPnZl
cnRpY2FsRGF0YS5jbGVhcigpOwogI2VuZGlmCi0gICAgaW52YWxpZGF0ZUZvbnRDYXNjYWRlQ2Fj
aGUoKTsKKyAgICBtX2ZvbnRDYXNjYWRlQ2FjaGUuaW52YWxpZGF0ZSgpOwogCiAgICAgKyttX2dl
bmVyYXRpb247CiAKQEAgLTQ5Nyw2ICszOTUsMjggQEAgdm9pZCBGb250Q2FjaGU6OmludmFsaWRh
dGVBbGxGb250Q2FjaGVzKCkKICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5pbnZh
bGlkYXRlKCk7CiB9CiAKK2Jvb2wgRm9udENhY2hlOjp1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JG
YW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQoreworICAgIGlmIChmYW1pbHkuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9mYW1pbGllc1VzaW5nQmFj
a3NsYXNoQXNZZW5TaWduLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGFkZCA9IFsmXSAoY29u
c3QgY2hhciogbmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFVDaGFyPiB1bmljb2RlTmFtZSkg
eworICAgICAgICAgICAgdW5zaWduZWQgbmFtZUxlbmd0aCA9IHN0cmxlbihuYW1lKTsKKyAgICAg
ICAgICAgIG1fZmFtaWxpZXNVc2luZ0JhY2tzbGFzaEFzWWVuU2lnbi5hZGQoQXRvbVN0cmluZyB7
IG5hbWUsIG5hbWVMZW5ndGgsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsIH0pOwor
ICAgICAgICAgICAgdW5zaWduZWQgdW5pY29kZU5hbWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXpl
KCk7CisgICAgICAgICAgICBtX2ZhbWlsaWVzVXNpbmdCYWNrc2xhc2hBc1llblNpZ24uYWRkKEF0
b21TdHJpbmcgeyB1bmljb2RlTmFtZS5iZWdpbigpLCB1bmljb2RlTmFtZUxlbmd0aCB9KTsKKyAg
ICAgICAgfTsKKyAgICAgICAgYWRkKCJNUyBQR290aGljIiwgeyAweEZGMkQsIDB4RkYzMywgMHgw
MDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRiB9KTsKKyAgICAgICAg
YWRkKCJNUyBQTWluY2hvIiwgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYw
RSwgMHg2NzFEIH0pOworICAgICAgICBhZGQoIk1TIEdvdGhpYyIsIHsgMHhGRjJELCAweEZGMzMs
IDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGIH0pOworICAgICAgICBhZGQo
Ik1TIE1pbmNobyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUQgfSk7
CisgICAgICAgIGFkZCgiTWVpcnlvIiwgeyAweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUEg
fSk7CisgICAgfQorCisgICAgcmV0dXJuIG1fZmFtaWxpZXNVc2luZ0JhY2tzbGFzaEFzWWVuU2ln
bi5jb250YWlucyhmYW1pbHkpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBGb250Q2Fj
aGU6OlByZXdhcm1JbmZvcm1hdGlvbiBGb250Q2FjaGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRp
b24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAppbmRleCA3NmJiOWYzYmJiNTE0YjAxNDViN2E5ZTE3NDc3M2M1MzQ3MTM1ZmE5Li4zYWQ3M2M3
NmM4Yzg2NDg2ODlmZTNkZDhhYzk1NjI0OTlkNThiM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtMjksMTIgKzI5LDEzIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiRm9udENhc2NhZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnRD
YXNjYWRlQ2FjaGUuaCIKICNpbmNsdWRlICJGb250Q3JlYXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2lu
Y2x1ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlN5c3RlbUZhbGxiYWNrQ2FjaGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGxpbWl0cy5oPgpAQCAtNDUsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Qb2ludGVyQ29tcGFyaXNv
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5Ib29kSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtODIsMjA0ICs4NCw2IEBAIHVzaW5n
IElNTGFuZ0ZvbnRMaW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rMjsKIHVzaW5nIElNTGFuZ0ZvbnRM
aW5rVHlwZSA9IElNTGFuZ0ZvbnRMaW5rOwogI2VuZGlmCiAKLXN0cnVjdCBGb250RGVzY3JpcHRp
b25LZXlSYXJlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnREZXNjcmlwdGlvbktleVJhcmVE
YXRhPiB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gY3JlYXRlKEZvbnRGZWF0dXJlU2V0dGlu
Z3MmJiBmZWF0dXJlU2V0dGluZ3MsIEZvbnRWYXJpYXRpb25TZXR0aW5ncyYmIHZhcmlhdGlvblNl
dHRpbmdzLCBGb250UGFsZXR0ZSYmIGZvbnRQYWxldHRlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEoV1RGTW92ZShmZWF0dXJl
U2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwgV1RGTW92ZShmb250UGFsZXR0
ZSkpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiBmZWF0dXJlU2V0
dGluZ3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZmVhdHVyZVNldHRpbmdzOwot
ICAgIH0KLQotICAgIGNvbnN0IEZvbnRWYXJpYXRpb25TZXR0aW5ncyYgdmFyaWF0aW9uU2V0dGlu
Z3MoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFyaWF0aW9uU2V0dGluZ3M7Ci0g
ICAgfQotCi0gICAgY29uc3QgRm9udFBhbGV0dGUmIGZvbnRQYWxldHRlKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2ZvbnRQYWxldHRlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0
dGluZ3MKLSAgICAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGluZ3MgPT0gb3RoZXIubV92YXJp
YXRpb25TZXR0aW5ncwotICAgICAgICAgICAgJiYgbV9mb250UGFsZXR0ZSA9PSBvdGhlci5tX2Zv
bnRQYWxldHRlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBGb250RGVzY3JpcHRpb25LZXlSYXJl
RGF0YShGb250RmVhdHVyZVNldHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBGb250VmFyaWF0aW9u
U2V0dGluZ3MmJiB2YXJpYXRpb25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBmb250UGFsZXR0ZSkK
LSAgICAgICAgOiBtX2ZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKGZlYXR1cmVTZXR0aW5ncykpCi0g
ICAgICAgICwgbV92YXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSkK
LSAgICAgICAgLCBtX2ZvbnRQYWxldHRlKFdURk1vdmUoZm9udFBhbGV0dGUpKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBGb250RmVhdHVyZVNldHRpbmdzIG1fZmVhdHVyZVNldHRpbmdzOwotICAgIEZv
bnRWYXJpYXRpb25TZXR0aW5ncyBtX3ZhcmlhdGlvblNldHRpbmdzOwotICAgIEZvbnRQYWxldHRl
IG1fZm9udFBhbGV0dGU7Ci19OwotCi1pbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNv
bnN0IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhJiBrZXkpCi17Ci0gICAgYWRkKGhhc2hlciwg
a2V5LmZlYXR1cmVTZXR0aW5ncygpLCBrZXkudmFyaWF0aW9uU2V0dGluZ3MoKSwga2V5LmZvbnRQ
YWxldHRlKCkpOwotfQotCi0vLyBUaGlzIGtleSBjb250YWlucyB0aGUgRm9udERlc2NyaXB0aW9u
IGZpZWxkcyBvdGhlciB0aGFuIGZhbWlseSB0aGF0IG1hdHRlciB3aGVuIGZldGNoaW5nIEZvbnRE
YXRhcyAocGxhdGZvcm0gZm9udHMpLgotc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7Ci0gICAg
Rm9udERlc2NyaXB0aW9uS2V5KCkgPSBkZWZhdWx0OwotCi0gICAgRm9udERlc2NyaXB0aW9uS2V5
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgICAgIDogbV9zaXplKGRl
c2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCkpCi0gICAgICAgICwgbV9mb250U2VsZWN0aW9u
UmVxdWVzdChkZXNjcmlwdGlvbi5mb250U2VsZWN0aW9uUmVxdWVzdCgpKQotICAgICAgICAsIG1f
ZmxhZ3MobWFrZUZsYWdzS2V5KGRlc2NyaXB0aW9uKSkKLSAgICAgICAgLCBtX2xvY2FsZShkZXNj
cmlwdGlvbi5zcGVjaWZpZWRMb2NhbGUoKSkKLSAgICB7Ci0gICAgICAgIGF1dG8gZmVhdHVyZVNl
dHRpbmdzID0gZGVzY3JpcHRpb24uZmVhdHVyZVNldHRpbmdzKCk7Ci0gICAgICAgIGF1dG8gdmFy
aWF0aW9uU2V0dGluZ3MgPSBkZXNjcmlwdGlvbi52YXJpYXRpb25TZXR0aW5ncygpOwotICAgICAg
ICBhdXRvIGZvbnRQYWxldHRlID0gZGVzY3JpcHRpb24uZm9udFBhbGV0dGUoKTsKLSAgICAgICAg
aWYgKCFmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpIHx8ICF2YXJpYXRpb25TZXR0aW5ncy5pc0Vt
cHR5KCkgfHwgZm9udFBhbGV0dGUudHlwZSAhPSBGb250UGFsZXR0ZTo6VHlwZTo6Tm9ybWFsKQot
ICAgICAgICAgICAgbV9yYXJlRGF0YSA9IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhOjpjcmVh
dGUoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3MpLCBXVEZNb3ZlKHZhcmlhdGlvblNldHRpbmdzKSwg
V1RGTW92ZShmb250UGFsZXR0ZSkpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEZvbnREZXNjcmlw
dGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9pc0Rl
bGV0ZWRWYWx1ZSh0cnVlKQotICAgIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZv
bnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9p
c0RlbGV0ZWRWYWx1ZSA9PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVlCi0gICAgICAgICAgICAmJiBt
X3NpemUgPT0gb3RoZXIubV9zaXplCi0gICAgICAgICAgICAmJiBtX2ZvbnRTZWxlY3Rpb25SZXF1
ZXN0ID09IG90aGVyLm1fZm9udFNlbGVjdGlvblJlcXVlc3QKLSAgICAgICAgICAgICYmIG1fZmxh
Z3MgPT0gb3RoZXIubV9mbGFncwotICAgICAgICAgICAgJiYgbV9sb2NhbGUgPT0gb3RoZXIubV9s
b2NhbGUKLSAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlRGF0YSwg
b3RoZXIubV9yYXJlRGF0YSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZv
bnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZWxldGVkVmFsdWU7IH0KLQotICAgIGZyaWVuZCB2b2lk
IGFkZChIYXNoZXImLCBjb25zdCBGb250RGVzY3JpcHRpb25LZXkmKTsKLQotcHJpdmF0ZToKLSAg
ICBzdGF0aWMgc3RkOjphcnJheTx1bnNpZ25lZCwgMj4gbWFrZUZsYWdzS2V5KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi0gICAgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zY3JpcHQoKSkgPDwgMTUKLSAgICAg
ICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnNob3VsZERpc2FibGVM
aWdhdHVyZXNGb3JTcGFjaW5nKCkpIDw8IDE0Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpKSA8PCAx
MwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uZm9udFN0
eWxlQXhpcygpID09IEZvbnRTdHlsZUF4aXM6OnNsbnQpIDw8IDEyCi0gICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5vcHRpY2FsU2l6aW5nKCkpIDw8IDExCi0g
ICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi50ZXh0UmVuZGVy
aW5nTW9kZSgpKSA8PCA5Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNj
cmlwdGlvbi5mb250U3ludGhlc2lzKCkpIDw8IDYKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGRlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpKSA8PCA0Ci0gICAgICAgICAgICB8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5ub25DSktHbHlwaE9yaWVudGF0aW9u
KCkpIDw8IDMKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCkpIDw8IDIKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSk7Ci0gICAgICAgIHVuc2lnbmVkIHNlY29uZCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuUnVieSgp
KSA8PCAyNwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24u
dmFyaWFudEVhc3RBc2lhbldpZHRoKCkpIDw8IDI1Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50RWFzdEFzaWFuVmFyaWFudCgpKSA8PCAyMgot
ICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEFs
dGVybmF0ZXMoKSkgPDwgMjEKLSAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRl
c2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8oKSkgPDwgMjAKLSAgICAgICAgICAg
IHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljT3JkaW5h
bCgpKSA8PCAxOQotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRp
b24udmFyaWFudE51bWVyaWNGcmFjdGlvbigpKSA8PCAxNwotICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudE51bWVyaWNTcGFjaW5nKCkpIDw8IDE1
Ci0gICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50
TnVtZXJpY0ZpZ3VyZSgpKSA8PCAxMwotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24udmFyaWFudENhcHMoKSkgPDwgMTAKLSAgICAgICAgICAgIHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRQb3NpdGlvbigpKSA8PCA4Ci0gICAg
ICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50Q29udGV4
dHVhbEFsdGVybmF0ZXMoKSkgPDwgNgotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24udmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMoKSkgPDwgNAotICAgICAg
ICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudERpc2NyZXRp
b25hcnlMaWdhdHVyZXMoKSkgPDwgMgotICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVzY3JpcHRpb24udmFyaWFudENvbW1vbkxpZ2F0dXJlcygpKTsKLSAgICAgICAgcmV0dXJu
IHt7IGZpcnN0LCBzZWNvbmQgfX07Ci0gICAgfQotCi0gICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVl
IHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07Ci0gICAgRm9udFNlbGVjdGlv
blJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKLSAgICBzdGQ6OmFycmF5PHVuc2lnbmVk
LCAyPiBtX2ZsYWdzIHt7IDAsIDAgfX07Ci0gICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKLSAgICBS
ZWZQdHI8Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE+IG1fcmFyZURhdGE7Ci19OwotCi1pbmxp
bmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYga2V5
KQotewotICAgIGFkZChoYXNoZXIsIGtleS5tX3NpemUsIGtleS5tX2ZvbnRTZWxlY3Rpb25SZXF1
ZXN0LCBrZXkubV9mbGFncywga2V5Lm1fbG9jYWxlKTsKLSAgICBpZiAoa2V5Lm1fcmFyZURhdGEp
Ci0gICAgICAgIGFkZChoYXNoZXIsICprZXkubV9yYXJlRGF0YSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1
bHRIYXNoPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gewotICAgIHN0YXRpYyB1bnNpZ25l
ZCBoYXNoKGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleSYga2V5KSB7IHJldHVybiBj
b21wdXRlSGFzaChrZXkpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6
Rm9udERlc2NyaXB0aW9uS2V5JiBhLCBjb25zdCBXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFdlYkNvcmU6OkZvbnREZXNjcmlwdGlvbktleT4gOiBTaW1wbGVDbGFzc0hhc2hU
cmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7Ci19OwotCi19Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBjbGFzcyBob2xkcyB0aGUgbmFtZSBvZiBhIGZvbnQgZmFt
aWx5LCBhbmQgZGVmaW5lcyBoYXNoaW5nIGFuZCA9PSBvZiB0aGlzIG5hbWUgdG8KLS8vIHVzZSB0
aGUgcnVsZXMgZm9yIGZvbnQgZmFtaWx5IG5hbWVzIGluc3RlYWQgb2YgdXNpbmcgc3RyYWlnaHQg
c3RyaW5nIGNvbXBhcmlzb24uCi1jbGFzcyBGb250RmFtaWx5TmFtZSB7Ci1wdWJsaWM6Ci0gICAg
Rm9udEZhbWlseU5hbWUoKTsKLSAgICBGb250RmFtaWx5TmFtZShjb25zdCBBdG9tU3RyaW5nJik7
Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKCkgY29uc3Q7Ci0gICAgZnJpZW5kIHZvaWQg
YWRkKEhhc2hlciYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7Ci0KLXByaXZhdGU6Ci0gICAgQXRv
bVN0cmluZyBtX25hbWU7Ci19OwotCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5h
bWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRG
YW1pbHlOYW1lJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKLQotc3RydWN0IEZvbnRDYXNjYWRl
Q2FjaGVLZXkgewotICAgIEZvbnREZXNjcmlwdGlvbktleSBmb250RGVzY3JpcHRpb25LZXk7IC8v
IFNoYXJlZCB3aXRoIHRoZSBsb3dlciBsZXZlbCBGb250Q2FjaGUgKGNhY2hpbmcgRm9udCBvYmpl
Y3RzKQotICAgIFZlY3RvcjxGb250RmFtaWx5TmFtZSwgMz4gZmFtaWxpZXM7Ci0gICAgdW5zaWdu
ZWQgZm9udFNlbGVjdG9ySWQ7Ci0gICAgdW5zaWduZWQgZm9udFNlbGVjdG9yVmVyc2lvbjsKLX07
Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiwgY29uc3QgRm9u
dENhc2NhZGVDYWNoZUtleSYpOwotCi1zdHJ1Y3QgRm9udENhc2NhZGVDYWNoZUVudHJ5IHsKLSAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7Ci0KLSAgICBGb250Q2FzY2FkZUNhY2hl
S2V5IGtleTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZm9udHM7Ci19OwotCi1zdHJ1Y3Qg
Rm9udENhc2NhZGVDYWNoZUtleUhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmKTsKLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBGb250
Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBiKSB7IHJldHVy
biBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSBmYWxzZTsKLX07Ci0KLXN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5SGFz
aFRyYWl0cyA6IEhhc2hUcmFpdHM8Rm9udENhc2NhZGVDYWNoZUtleT4gewotICAgIHN0YXRpYyBG
b250Q2FzY2FkZUNhY2hlS2V5IGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udENhc2NhZGVDYWNoZUtleSYgc2xvdCkg
eyBuZXcgKE5vdE51bGwsICZzbG90LmZvbnREZXNjcmlwdGlvbktleSkgRm9udERlc2NyaXB0aW9u
S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQotICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkgeyByZXR1cm4ga2V5LmZv
bnREZXNjcmlwdGlvbktleS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Ci19OwotCi11c2lu
ZyBGb250Q2FzY2FkZUNhY2hlID0gSGFzaE1hcDxGb250Q2FzY2FkZUNhY2hlS2V5LCBzdGQ6OnVu
aXF1ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5PiwgRm9udENhc2NhZGVDYWNoZUtleUhhc2gs
IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzPjsKLQogY2xhc3MgRm9udENhY2hlIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTMzMCw4ICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbGF0Zm9y
bVB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogCiAgICAgdm9pZCB1cGRhdGVGb250Q2FzY2FkZShj
b25zdCBGb250Q2FzY2FkZSYsIFJlZlB0cjxGb250U2VsZWN0b3I+JiYpOwotICAgIHZvaWQgaW52
YWxpZGF0ZUZvbnRDYXNjYWRlQ2FjaGUoKTsKLSAgICB2b2lkIGNsZWFyV2lkdGhDYWNoZXMoKTsK
IAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBSZWZQdHI8Rm9udD4gZm9udEZyb21EZXNjcmlwdGlv
bkFuZExvZ0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgTE9HRk9OVCYsIFN0cmlu
ZyYgb3V0Rm9udEZhbWlseU5hbWUpOwpAQCAtMzYwLDExICsxNjIsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgcHJld2FybShjb25zdCBQcmV3YXJtSW5mb3JtYXRpb24mKTsKICAgICBzdGF0aWMgdm9p
ZCBwcmV3YXJtR2xvYmFsbHkoKTsKIAorICAgIEZvbnRDYXNjYWRlQ2FjaGUmIGZvbnRDYXNjYWRl
Q2FjaGUoKSB7IHJldHVybiBtX2ZvbnRDYXNjYWRlQ2FjaGU7IH0KKyAgICBTeXN0ZW1GYWxsYmFj
a0NhY2hlJiBzeXN0ZW1GYWxsYmFja0NhY2hlKCkgeyByZXR1cm4gbV9zeXN0ZW1GYWxsYmFja0Nh
Y2hlOyB9CisKKyAgICBib29sIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShjb25zdCBB
dG9tU3RyaW5nJiBmYW1pbHkpOworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHVyZ2VJbmFjdGl2ZUZvbnREYXRhSWZOZWVkZWQoKTsKLSAgICB2b2lkIHBydW5lVW5yZWZlcmVu
Y2VkRW50cmllc0Zyb21Gb250Q2FzY2FkZUNhY2hlKCk7Ci0gICAgdm9pZCBwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKLSAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gcmV0cmlldmVPckFkZENh
Y2hlZEZvbnRzKGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mLCBSZWZQdHI8Rm9udFNlbGVj
dG9yPiYmKTsKIAogICAgIEZvbnRQbGF0Zm9ybURhdGEqIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IEZvbnRD
cmVhdGlvbkNvbnRleHQmID0geyB9LCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSA9IGZhbHNl
KTsKIApAQCAtMzg2LDYgKzE5MCw4IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEZvbnREYXRhQ2Fj
aGVzOwogICAgIFVuaXF1ZVJlZjxGb250RGF0YUNhY2hlcz4gbV9mb250RGF0YUNhY2hlczsKICAg
ICBGb250Q2FzY2FkZUNhY2hlIG1fZm9udENhc2NhZGVDYWNoZTsKKyAgICBTeXN0ZW1GYWxsYmFj
a0NhY2hlIG1fc3lzdGVtRmFsbGJhY2tDYWNoZTsKKyAgICBNZW1vcnlDb21wYWN0TG9va3VwT25s
eVJvYmluSG9vZEhhc2hTZXQ8QXRvbVN0cmluZz4gbV9mYW1pbGllc1VzaW5nQmFja3NsYXNoQXNZ
ZW5TaWduOwogCiAgICAgdW5zaWduZWQgc2hvcnQgbV9nZW5lcmF0aW9uIHsgMCB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
N2FmOTc4NmZlZTIzOThmYjAzOGNiOWM0ODk1YTc5N2RjOTdlMWEyYi4uYjNjMTRmZTEyZWMzZGM2
Zjc2YTQzMzdiZWQzNDYzZjk5ODNhZTA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtNDYsMjggKzQ2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCi1zdGF0aWMgYm9v
bCB1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
KQotewotICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgc3RhdGljIGNvbnN0IGF1dG8gc2V0ID0gbWFrZU5ldmVyRGVzdHJveWVkKFtdIHsKLSAgICAg
ICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNl
dDsKLSAgICAgICAgYXV0byBhZGQgPSBbJnNldF0gKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxVQ2hhcj4gdW5pY29kZU5hbWUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IG5hbWVMZW5ndGggPSBzdHJsZW4obmFtZSk7Ci0gICAgICAgICAgICBzZXQuYWRkKEF0b21TdHJp
bmcgeyBuYW1lLCBuYW1lTGVuZ3RoLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB9
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHVuaWNvZGVOYW1lTGVuZ3RoID0gdW5pY29kZU5hbWUu
c2l6ZSgpOwotICAgICAgICAgICAgc2V0LmFkZChBdG9tU3RyaW5nIHsgdW5pY29kZU5hbWUuYmVn
aW4oKSwgdW5pY29kZU5hbWVMZW5ndGggfSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGFkZCgiTVMg
UEdvdGhpYyIsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBC
NywgMHgzMEMzLCAweDMwQUYgfSk7Ci0gICAgICAgIGFkZCgiTVMgUE1pbmNobyIsIHsgMHhGRjJE
LCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDY2MEUsIDB4NjcxRCB9KTsKLSAgICAgICAgYWRk
KCJNUyBHb3RoaWMiLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAw
eDMwQzMsIDB4MzBBRiB9KTsKLSAgICAgICAgYWRkKCJNUyBNaW5jaG8iLCB7IDB4RkYyRCwgMHhG
RjMzLCAweDAwMjAsIDB4NjYwRSwgMHg2NzFEIH0pOwotICAgICAgICBhZGQoIk1laXJ5byIsIHsg
MHgzMEUxLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBIH0pOwotICAgICAgICByZXR1cm4gc2V0Owot
ICAgIH0oKSk7Ci0gICAgcmV0dXJuIHNldC5nZXQoKS5jb250YWlucyhmYW1pbHkpOwotfQotCiBG
b250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBDb2RlUGF0aDo6
QXV0bzsKIAogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTgyLDcg
KzYwLDcgQEAgRm9udENhc2NhZGU6OkZvbnRDYXNjYWRlKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24m
JiBmZCwgZmxvYXQgbGV0dGVyU3BhY2luZywgZmxvYXQKICAgICA6IG1fZm9udERlc2NyaXB0aW9u
KFdURk1vdmUoZmQpKQogICAgICwgbV9sZXR0ZXJTcGFjaW5nKGxldHRlclNwYWNpbmcpCiAgICAg
LCBtX3dvcmRTcGFjaW5nKHdvcmRTcGFjaW5nKQotICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5
bWJvbCh1c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkobV9mb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKSkpCisgICAgLCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKEZvbnRDYWNoZTo6
Zm9yQ3VycmVudFRocmVhZCgpLnVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShtX2ZvbnRE
ZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpKSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRl
RW5hYmxlS2VybmluZygpKQogICAgICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVz
U2hhcGluZygpKQogewpAQCAtMTQ3LDcgKzEyNSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmlzQ3Vy
cmVudChjb25zdCBGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikgY29uc3QKIHZvaWQgRm9udENh
c2NhZGU6OnVwZGF0ZUZvbnRzKFJlZjxGb250Q2FzY2FkZUZvbnRzPiYmIGZvbnRzKSBjb25zdAog
ewogICAgIG1fZm9udHMgPSBXVEZNb3ZlKGZvbnRzKTsKLSAgICBtX3VzZUJhY2tzbGFzaEFzWWVu
U3ltYm9sID0gdXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGZpcnN0RmFtaWx5KCkpOwor
ICAgIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wgPSBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJl
YWQoKS51c2VCYWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoZmlyc3RGYW1pbHkoKSk7CiAgICAg
bV9lbmFibGVLZXJuaW5nID0gY29tcHV0ZUVuYWJsZUtlcm5pbmcoKTsKICAgICBtX3JlcXVpcmVz
U2hhcGluZyA9IGNvbXB1dGVSZXF1aXJlc1NoYXBpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNoZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2M2ZjVhOTM1YTY2MjIzMjgyZGM1MTMyNzg4ZWEzYTRjNWQzYmY4YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlQ2FjaGUu
Y3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgg
VG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udENhc2NhZGVDYWNoZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFt
ZSgpID0gZGVmYXVsdDsKKworaW5saW5lIEZvbnRGYW1pbHlOYW1lOjpGb250RmFtaWx5TmFtZShj
b25zdCBBdG9tU3RyaW5nJiBuYW1lKQorICAgIDogbV9uYW1lIHsgbmFtZSB9Cit7Cit9CisKK2lu
bGluZSBjb25zdCBBdG9tU3RyaW5nJiBGb250RmFtaWx5TmFtZTo6c3RyaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9uYW1lOworfQorCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIs
IGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBuYW1lKQoreworICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBi
ZXR0ZXIgdG8gaGFzaCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgbmFtZSBpbnN0ZWFkIG9mIGhhc2hp
bmcgYSBoYXNoLgorICAgIGlmICghbmFtZS5zdHJpbmcoKS5pc051bGwoKSkKKyAgICAgICAgYWRk
KGhhc2hlciwgRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZmFtaWx5TmFtZUhhc2gobmFtZS5zdHJp
bmcoKSkpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1l
JiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKK3sKKyAgICByZXR1cm4gKGEuc3RyaW5nKCku
aXNOdWxsKCkgfHwgYi5zdHJpbmcoKS5pc051bGwoKSkgPyBhLnN0cmluZygpID09IGIuc3RyaW5n
KCkgOiBGb250Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5n
KCksIGIuc3RyaW5nKCkpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRG
YW1pbHlOYW1lJiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKK3sKKyAgICByZXR1cm4gIShh
ID09IGIpOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYg
YSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikKK3sKKyAgICByZXR1cm4gYS5mb250RGVz
Y3JpcHRpb25LZXkgPT0gYi5mb250RGVzY3JpcHRpb25LZXkKKyAgICAgICAgJiYgYS5mb250U2Vs
ZWN0b3JJZCA9PSBiLmZvbnRTZWxlY3RvcklkCisgICAgICAgICYmIGEuZm9udFNlbGVjdG9yVmVy
c2lvbiA9PSBiLmZvbnRTZWxlY3RvclZlcnNpb24KKyAgICAgICAgJiYgYS5mYW1pbGllcyA9PSBi
LmZhbWlsaWVzOworfQorCit1bnNpZ25lZCBGb250Q2FzY2FkZUNhY2hlS2V5SGFzaDo6aGFzaChj
b25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpCit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNo
KGtleS5mb250RGVzY3JpcHRpb25LZXksIGtleS5mb250U2VsZWN0b3JJZCwga2V5LmZvbnRTZWxl
Y3RvclZlcnNpb24sIGtleS5mYW1pbGllcyk7Cit9CisKK0ZvbnRDYXNjYWRlQ2FjaGUmIEZvbnRD
YXNjYWRlQ2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKQoreworICAgIHJldHVybiBGb250Q2FjaGU6
OmZvckN1cnJlbnRUaHJlYWQoKS5mb250Q2FzY2FkZUNhY2hlKCk7Cit9CisKK3ZvaWQgRm9udENh
c2NhZGVDYWNoZTo6aW52YWxpZGF0ZSgpCit7CisgICAgbV9lbnRyaWVzLmNsZWFyKCk7Cit9CisK
K3ZvaWQgRm9udENhc2NhZGVDYWNoZTo6Y2xlYXJXaWR0aENhY2hlcygpCit7CisgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IG1fZW50cmllcy52YWx1ZXMoKSkKKyAgICAgICAgdmFsdWUtPmZvbnRzLmdl
dCgpLndpZHRoQ2FjaGUoKS5jbGVhcigpOworfQorCit2b2lkIEZvbnRDYXNjYWRlQ2FjaGU6OnBy
dW5lVW5yZWZlcmVuY2VkRW50cmllcygpCit7CisgICAgbV9lbnRyaWVzLnJlbW92ZUlmKFtdKGF1
dG8mIGVudHJ5KSB7CisgICAgICAgIHJldHVybiBlbnRyeS52YWx1ZS0+Zm9udHMuZ2V0KCkuaGFz
T25lUmVmKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRm9udENhc2NhZGVDYWNoZTo6cHJ1bmVTeXN0
ZW1GYWxsYmFja0ZvbnRzKCkKK3sKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9lbnRyaWVzLnZh
bHVlcygpKQorICAgICAgICBlbnRyeS0+Zm9udHMtPnBydW5lU3lzdGVtRmFsbGJhY2tzKCk7Cit9
CisKK3N0YXRpYyBGb250Q2FzY2FkZUNhY2hlS2V5IG1ha2VGb250Q2FzY2FkZUNhY2hlS2V5KGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBGb250U2VsZWN0b3IqIGZv
bnRTZWxlY3RvcikKK3sKKyAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKKyAgICBrZXkuZm9u
dERlc2NyaXB0aW9uS2V5ID0gRm9udERlc2NyaXB0aW9uS2V5KGRlc2NyaXB0aW9uKTsKKyAgICB1
bnNpZ25lZCBmYW1pbHlDb3VudCA9IGRlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7CisgICAga2V5
LmZhbWlsaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZmFtaWx5Q291bnQpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmYW1pbHlDb3VudDsgKytpKQorICAgICAgICBrZXkuZmFtaWxp
ZXMudW5jaGVja2VkQXBwZW5kKGRlc2NyaXB0aW9uLmZhbWlseUF0KGkpKTsKKyAgICBrZXkuZm9u
dFNlbGVjdG9ySWQgPSBmb250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnVuaXF1ZUlkKCkgOiAw
OworICAgIGtleS5mb250U2VsZWN0b3JWZXJzaW9uID0gZm9udFNlbGVjdG9yID8gZm9udFNlbGVj
dG9yLT52ZXJzaW9uKCkgOiAwOworICAgIHJldHVybiBrZXk7Cit9CisKK1JlZjxGb250Q2FzY2Fk
ZUZvbnRzPiBGb250Q2FzY2FkZUNhY2hlOjpyZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3Qg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBSZWZQdHI8Rm9udFNlbGVj
dG9yPiYmIGZvbnRTZWxlY3RvcikKK3sKKyAgICBhdXRvIGtleSA9IG1ha2VGb250Q2FzY2FkZUNh
Y2hlS2V5KGZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9yLmdldCgpKTsKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZW50cmllcy5hZGQoa2V5LCBudWxscHRyKTsKKyAgICBpZiAoIWFkZFJlc3Vs
dC5pc05ld0VudHJ5KQorICAgICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+
Zm9udHMuZ2V0KCk7CisKKyAgICBhdXRvJiBuZXdFbnRyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CisgICAgbmV3RW50cnkgPSBtYWtlVW5pcXVlPEZvbnRDYXNjYWRlQ2FjaGVFbnRyeT4o
Rm9udENhc2NhZGVDYWNoZUVudHJ5IHsgV1RGTW92ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpj
cmVhdGUoV1RGTW92ZShmb250U2VsZWN0b3IpKSB9KTsKKyAgICBSZWY8Rm9udENhc2NhZGVGb250
cz4gZ2x5cGhzID0gbmV3RW50cnktPmZvbnRzLmdldCgpOworCisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCB1bnJlZmVyZW5jZWRQcnVuZUludGVydmFsID0gNTA7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgbWF4aW11bUVudHJpZXMgPSA0MDA7CisgICAgc3RhdGljIHVuc2lnbmVkIHBy
dW5lQ291bnRlcjsKKyAgICAvLyBSZWZlcmVuY2VkIEZvbnRDYXNjYWRlRm9udHMgd291bGQgZXhp
c3QgYW55d2F5IHNvIHBydW5pbmcgdGhlbSBzYXZlcyBsaXR0bGUgbWVtb3J5LgorICAgIGlmICgh
KCsrcHJ1bmVDb3VudGVyICUgdW5yZWZlcmVuY2VkUHJ1bmVJbnRlcnZhbCkpCisgICAgICAgIHBy
dW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAgIC8vIFByZXZlbnQgcGF0aG9sb2dpY2FsIGdy
b3d0aC4KKyAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA+IG1heGltdW1FbnRyaWVzKQorICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlKG1fZW50cmllcy5yYW5kb20oKSk7CisgICAgcmV0dXJuIGdseXBo
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5YzlhYjhi
MzY3NTJmZDU3OGUxYzE0ZTFhNzA2MDQwYmYyN2Y3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZUNhY2hlLmgKQEAgLTAsMCAr
MSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUs
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRm9udENhc2NhZGVGb250cy5oIgorI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZvbnRUYWdnZWRTZXR0aW5ncy5oIgorI2luY2x1ZGUg
PGFycmF5PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJD
b21wYXJpc29uLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0F0b21TdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udERlc2Ny
aXB0aW9uS2V5UmFyZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RGVzY3JpcHRpb25LZXlS
YXJlRGF0YT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8Rm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGE+IGNyZWF0ZShGb250RmVhdHVyZVNl
dHRpbmdzJiYgZmVhdHVyZVNldHRpbmdzLCBGb250VmFyaWF0aW9uU2V0dGluZ3MmJiB2YXJpYXRp
b25TZXR0aW5ncywgRm9udFBhbGV0dGUmJiBmb250UGFsZXR0ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvbnREZXNjcmlwdGlvbktleVJhcmVEYXRhKFdURk1vdmUoZmVh
dHVyZVNldHRpbmdzKSwgV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5ncyksIFdURk1vdmUoZm9udFBh
bGV0dGUpKSk7CisgICAgfQorCisgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZmVhdHVy
ZVNldHRpbmdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZlYXR1cmVTZXR0aW5n
czsKKyAgICB9CisKKyAgICBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHZhcmlhdGlvblNl
dHRpbmdzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhcmlhdGlvblNldHRpbmdz
OworICAgIH0KKworICAgIGNvbnN0IEZvbnRQYWxldHRlJiBmb250UGFsZXR0ZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9mb250UGFsZXR0ZTsKKyAgICB9CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uS2V5UmFyZURhdGEmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVhdHVy
ZVNldHRpbmdzCisgICAgICAgICAgICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09IG90aGVyLm1f
dmFyaWF0aW9uU2V0dGluZ3MKKyAgICAgICAgICAgICYmIG1fZm9udFBhbGV0dGUgPT0gb3RoZXIu
bV9mb250UGFsZXR0ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRm9udERlc2NyaXB0aW9uS2V5
UmFyZURhdGEoRm9udEZlYXR1cmVTZXR0aW5ncyYmIGZlYXR1cmVTZXR0aW5ncywgRm9udFZhcmlh
dGlvblNldHRpbmdzJiYgdmFyaWF0aW9uU2V0dGluZ3MsIEZvbnRQYWxldHRlJiYgZm9udFBhbGV0
dGUpCisgICAgICAgIDogbV9mZWF0dXJlU2V0dGluZ3MoV1RGTW92ZShmZWF0dXJlU2V0dGluZ3Mp
KQorICAgICAgICAsIG1fdmFyaWF0aW9uU2V0dGluZ3MoV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5n
cykpCisgICAgICAgICwgbV9mb250UGFsZXR0ZShXVEZNb3ZlKGZvbnRQYWxldHRlKSkKKyAgICB7
CisgICAgfQorCisgICAgRm9udEZlYXR1cmVTZXR0aW5ncyBtX2ZlYXR1cmVTZXR0aW5nczsKKyAg
ICBGb250VmFyaWF0aW9uU2V0dGluZ3MgbV92YXJpYXRpb25TZXR0aW5nczsKKyAgICBGb250UGFs
ZXR0ZSBtX2ZvbnRQYWxldHRlOworfTsKKworaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVy
LCBjb25zdCBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YSYga2V5KQoreworICAgIGFkZChoYXNo
ZXIsIGtleS5mZWF0dXJlU2V0dGluZ3MoKSwga2V5LnZhcmlhdGlvblNldHRpbmdzKCksIGtleS5m
b250UGFsZXR0ZSgpKTsKK30KKworLy8gVGhpcyBrZXkgY29udGFpbnMgdGhlIEZvbnREZXNjcmlw
dGlvbiBmaWVsZHMgb3RoZXIgdGhhbiBmYW1pbHkgdGhhdCBtYXR0ZXIgd2hlbiBmZXRjaGluZyBG
b250RGF0YXMgKHBsYXRmb3JtIGZvbnRzKS4KK3N0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewor
ICAgIEZvbnREZXNjcmlwdGlvbktleSgpID0gZGVmYXVsdDsKKworICAgIEZvbnREZXNjcmlwdGlv
bktleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQorICAgICAgICA6IG1fc2l6
ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQorICAgICAgICAsIG1fZm9udFNlbGVj
dGlvblJlcXVlc3QoZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKKyAgICAgICAg
LCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNjcmlwdGlvbikpCisgICAgICAgICwgbV9sb2NhbGUo
ZGVzY3JpcHRpb24uc3BlY2lmaWVkTG9jYWxlKCkpCisgICAgeworICAgICAgICBhdXRvIGZlYXR1
cmVTZXR0aW5ncyA9IGRlc2NyaXB0aW9uLmZlYXR1cmVTZXR0aW5ncygpOworICAgICAgICBhdXRv
IHZhcmlhdGlvblNldHRpbmdzID0gZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKTsKKyAg
ICAgICAgYXV0byBmb250UGFsZXR0ZSA9IGRlc2NyaXB0aW9uLmZvbnRQYWxldHRlKCk7CisgICAg
ICAgIGlmICghZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSB8fCAhdmFyaWF0aW9uU2V0dGluZ3Mu
aXNFbXB0eSgpIHx8IGZvbnRQYWxldHRlLnR5cGUgIT0gRm9udFBhbGV0dGU6OlR5cGU6Ok5vcm1h
bCkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YTo6
Y3JlYXRlKFdURk1vdmUoZmVhdHVyZVNldHRpbmdzKSwgV1RGTW92ZSh2YXJpYXRpb25TZXR0aW5n
cyksIFdURk1vdmUoZm9udFBhbGV0dGUpKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBGb250RGVz
Y3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1f
aXNEZWxldGVkVmFsdWUodHJ1ZSkKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faXNEZWxldGVkVmFsdWUgPT0gb3RoZXIubV9pc0RlbGV0ZWRWYWx1ZQorICAgICAgICAgICAg
JiYgbV9zaXplID09IG90aGVyLm1fc2l6ZQorICAgICAgICAgICAgJiYgbV9mb250U2VsZWN0aW9u
UmVxdWVzdCA9PSBvdGhlci5tX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0CisgICAgICAgICAgICAmJiBt
X2ZsYWdzID09IG90aGVyLm1fZmxhZ3MKKyAgICAgICAgICAgICYmIG1fbG9jYWxlID09IG90aGVy
Lm1fbG9jYWxlCisgICAgICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURh
dGEsIG90aGVyLm1fcmFyZURhdGEpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVsZXRlZFZhbHVlOyB9CisKKyAgICBmcmllbmQg
dm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5Jik7CisKK3ByaXZhdGU6
CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDI+IG1ha2VGbGFnc0tleShjb25zdCBG
b250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgZmly
c3QgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uc2NyaXB0KCkpIDw8IDE1Cisg
ICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi5zaG91bGREaXNh
YmxlTGlnYXR1cmVzRm9yU3BhY2luZygpKSA8PCAxNAorICAgICAgICAgICAgfCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZGVzY3JpcHRpb24uc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkg
PDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLmZv
bnRTdHlsZUF4aXMoKSA9PSBGb250U3R5bGVBeGlzOjpzbG50KSA8PCAxMgorICAgICAgICAgICAg
fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ub3B0aWNhbFNpemluZygpKSA8PCAx
MQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udGV4dFJl
bmRlcmluZ01vZGUoKSkgPDwgOQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGVzY3JpcHRpb24uZm9udFN5bnRoZXNpcygpKSA8PCA2CisgICAgICAgICAgICB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi53aWR0aFZhcmlhbnQoKSkgPDwgNAorICAgICAgICAg
ICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24ubm9uQ0pLR2x5cGhPcmllbnRh
dGlvbigpKSA8PCAzCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlw
dGlvbi5vcmllbnRhdGlvbigpKSA8PCAyCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZXNjcmlwdGlvbi5yZW5kZXJpbmdNb2RlKCkpOworICAgICAgICB1bnNpZ25lZCBzZWNv
bmQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblJ1
YnkoKSkgPDwgMjcKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0
aW9uLnZhcmlhbnRFYXN0QXNpYW5XaWR0aCgpKSA8PCAyNQorICAgICAgICAgICAgfCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudEVhc3RBc2lhblZhcmlhbnQoKSkgPDwg
MjIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlh
bnRBbHRlcm5hdGVzKCkpIDw8IDIxCisgICAgICAgICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvKCkpIDw8IDIwCisgICAgICAg
ICAgICB8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50TnVtZXJpY09y
ZGluYWwoKSkgPDwgMTkKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2Ny
aXB0aW9uLnZhcmlhbnROdW1lcmljRnJhY3Rpb24oKSkgPDwgMTcKKyAgICAgICAgICAgIHwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnROdW1lcmljU3BhY2luZygpKSA8
PCAxNQorICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFy
aWFudE51bWVyaWNGaWd1cmUoKSkgPDwgMTMKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkpIDw8IDEwCisgICAgICAgICAgICB8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkZXNjcmlwdGlvbi52YXJpYW50UG9zaXRpb24oKSkgPDwgOAor
ICAgICAgICAgICAgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVzY3JpcHRpb24udmFyaWFudENv
bnRleHR1YWxBbHRlcm5hdGVzKCkpIDw8IDYKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKCkpIDw8IDQKKyAg
ICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnREaXNj
cmV0aW9uYXJ5TGlnYXR1cmVzKCkpIDw8IDIKKyAgICAgICAgICAgIHwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRlc2NyaXB0aW9uLnZhcmlhbnRDb21tb25MaWdhdHVyZXMoKSk7CisgICAgICAgIHJl
dHVybiB7IHsgZmlyc3QsIHNlY29uZCB9IH07CisgICAgfQorCisgICAgYm9vbCBtX2lzRGVsZXRl
ZFZhbHVlIHsgZmFsc2UgfTsKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CisgICAgRm9udFNl
bGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKKyAgICBzdGQ6OmFycmF5PHVu
c2lnbmVkLCAyPiBtX2ZsYWdzIHsgeyAwLCAwIH0gfTsKKyAgICBBdG9tU3RyaW5nIG1fbG9jYWxl
OworICAgIFJlZlB0cjxGb250RGVzY3JpcHRpb25LZXlSYXJlRGF0YT4gbV9yYXJlRGF0YTsKK307
CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgRm9udERlc2NyaXB0aW9u
S2V5JiBrZXkpCit7CisgICAgYWRkKGhhc2hlciwga2V5Lm1fc2l6ZSwga2V5Lm1fZm9udFNlbGVj
dGlvblJlcXVlc3QsIGtleS5tX2ZsYWdzLCBrZXkubV9sb2NhbGUpOworICAgIGlmIChrZXkubV9y
YXJlRGF0YSkKKyAgICAgICAgYWRkKGhhc2hlciwgKmtleS5tX3JhcmVEYXRhKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5JiBrZXkpIHsg
cmV0dXJuIGNvbXB1dGVIYXNoKGtleSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBX
ZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXkmIGEsIGNvbnN0IFdlYkNvcmU6OkZvbnREZXNjcmlw
dGlvbktleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uS2V5PiA6IFNpbXBsZUNs
YXNzSGFzaFRyYWl0czxXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk+IHsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRoaXMgY2xhc3MgaG9s
ZHMgdGhlIG5hbWUgb2YgYSBmb250IGZhbWlseSwgYW5kIGRlZmluZXMgaGFzaGluZyBhbmQgPT0g
b2YgdGhpcyBuYW1lIHRvCisvLyB1c2UgdGhlIHJ1bGVzIGZvciBmb250IGZhbWlseSBuYW1lcyBp
bnN0ZWFkIG9mIHVzaW5nIHN0cmFpZ2h0IHN0cmluZyBjb21wYXJpc29uLgorY2xhc3MgRm9udEZh
bWlseU5hbWUgeworcHVibGljOgorICAgIEZvbnRGYW1pbHlOYW1lKCk7CisgICAgRm9udEZhbWls
eU5hbWUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIHN0cmluZygp
IGNvbnN0OworICAgIGZyaWVuZCB2b2lkIGFkZChIYXNoZXImLCBjb25zdCBGb250RmFtaWx5TmFt
ZSYpOworCitwcml2YXRlOgorICAgIEF0b21TdHJpbmcgbV9uYW1lOworfTsKKworYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKK2Jv
b2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5TmFtZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1l
Jik7CisKK3N0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5IHsKKyAgICBGb250RGVzY3JpcHRpb25L
ZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBTaGFyZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgRm9u
dENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0cykKKyAgICBWZWN0b3I8Rm9udEZhbWlseU5hbWUs
IDM+IGZhbWlsaWVzOworICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvcklkOworICAgIHVuc2lnbmVk
IGZvbnRTZWxlY3RvclZlcnNpb247Cit9OworCitib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENh
c2NhZGVDYWNoZUtleSYsIGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmKTsKKworc3RydWN0IEZv
bnRDYXNjYWRlQ2FjaGVFbnRyeSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OworCisgICAgRm9udENhc2NhZGVDYWNoZUtleSBrZXk7CisgICAgUmVmPEZvbnRDYXNjYWRlRm9u
dHM+IGZvbnRzOworfTsKKworc3RydWN0IEZvbnRDYXNjYWRlQ2FjaGVLZXlIYXNoIHsKKyAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5Jik7CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENh
c2NhZGVDYWNoZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1
Y3QgRm9udENhc2NhZGVDYWNoZUtleUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEZvbnRDYXNjYWRl
Q2FjaGVLZXk+IHsKKyAgICBzdGF0aWMgRm9udENhc2NhZGVDYWNoZUtleSBlbXB0eVZhbHVlKCkg
eyByZXR1cm4geyB9OyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZv
bnRDYXNjYWRlQ2FjaGVLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5mb250RGVzY3Jp
cHRpb25LZXkpIEZvbnREZXNjcmlwdGlvbktleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBGb250Q2FzY2FkZUNhY2hl
S2V5JiBrZXkpIHsgcmV0dXJuIGtleS5mb250RGVzY3JpcHRpb25LZXkuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQorfTsKKworY2xhc3MgRm9udENhc2NhZGVDYWNoZSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRm9udENhc2NhZGVDYWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgRm9udENhc2NhZGVDYWNoZSgpID0gZGVmYXVsdDsKKworICAg
IHN0YXRpYyBGb250Q2FzY2FkZUNhY2hlJiBmb3JDdXJyZW50VGhyZWFkKCk7CisKKyAgICB2b2lk
IGludmFsaWRhdGUoKTsKKyAgICB2b2lkIGNsZWFyV2lkdGhDYWNoZXMoKTsKKyAgICB2b2lkIHBy
dW5lVW5yZWZlcmVuY2VkRW50cmllcygpOworICAgIHZvaWQgcHJ1bmVTeXN0ZW1GYWxsYmFja0Zv
bnRzKCk7CisgICAgUmVmPEZvbnRDYXNjYWRlRm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250
cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiwgUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJik7
CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxGb250Q2FzY2FkZUNhY2hlS2V5LCBzdGQ6OnVuaXF1
ZV9wdHI8Rm9udENhc2NhZGVDYWNoZUVudHJ5PiwgRm9udENhc2NhZGVDYWNoZUtleUhhc2gsIEZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoVHJhaXRzPiBtX2VudHJpZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TeXN0ZW1GYWxsYmFja0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N5c3RlbUZhbGxiYWNrQ2FjaGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4NTA4OWIzMWIxZmQyODVi
NjI1MmM2MzRiM2YzM2YyMDkyMjdkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hlLmNwcApAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YKKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJTeXN0ZW1GYWxsYmFja0NhY2hlLmgiCisKKyNpbmNsdWRlICJG
b250Q2FjaGUuaCIKKyNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1N5c3RlbUZhbGxiYWNrQ2FjaGUmIFN5c3RlbUZhbGxiYWNrQ2FjaGU6OmZvckN1cnJl
bnRUaHJlYWQoKQoreworICAgIHJldHVybiBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5z
eXN0ZW1GYWxsYmFja0NhY2hlKCk7Cit9CisKK1JlZlB0cjxGb250PiBTeXN0ZW1GYWxsYmFja0Nh
Y2hlOjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoY29uc3QgRm9udCogZm9udCwgVUNo
YXIzMiBjaGFyYWN0ZXIsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIElzRm9y
UGxhdGZvcm1Gb250IGlzRm9yUGxhdGZvcm1Gb250KQoreworICAgIGF1dG8gZm9udEFkZFJlc3Vs
dCA9IG1fY2hhcmFjdGVyRmFsbGJhY2tNYXBzLmFkZChmb250LCBDaGFyYWN0ZXJGYWxsYmFja01h
cCgpKTsKKworICAgIGlmICghY2hhcmFjdGVyKSB7CisgICAgICAgIFVDaGFyIGNvZGVVbml0ID0g
MDsKKyAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnN5c3RlbUZh
bGxiYWNrRm9yQ2hhcmFjdGVycyhkZXNjcmlwdGlvbiwgZm9udCwgaXNGb3JQbGF0Zm9ybUZvbnQs
IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6Ok5vLCAmY29kZVVuaXQsIDEpOworICAgIH0K
KworICAgIGF1dG8ga2V5ID0gQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkgeyBkZXNjcmlwdGlvbi5j
b21wdXRlZExvY2FsZSgpLCBjaGFyYWN0ZXIsIGlzRm9yUGxhdGZvcm1Gb250ICE9IElzRm9yUGxh
dGZvcm1Gb250OjpObyB9OworICAgIHJldHVybiBmb250QWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5lbnN1cmUoV1RGTW92ZShrZXkpLCBbJl0geworICAgICAgICBVQ2hhciBjb2RlVW5pdHNbMl07
CisgICAgICAgIHVuc2lnbmVkIGNvZGVVbml0c0xlbmd0aDsKKyAgICAgICAgaWYgKFVfSVNfQk1Q
KGNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIGNvZGVVbml0c1swXSA9IEZvbnRDYXNjYWRlOjpu
b3JtYWxpemVTcGFjZXMoY2hhcmFjdGVyKTsKKyAgICAgICAgICAgIGNvZGVVbml0c0xlbmd0aCA9
IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb2RlVW5pdHNbMF0gPSBVMTZfTEVB
RChjaGFyYWN0ZXIpOworICAgICAgICAgICAgY29kZVVuaXRzWzFdID0gVTE2X1RSQUlMKGNoYXJh
Y3Rlcik7CisgICAgICAgICAgICBjb2RlVW5pdHNMZW5ndGggPSAyOworICAgICAgICB9CisgICAg
ICAgIGF1dG8gZmFsbGJhY2tGb250ID0gRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkuc3lz
dGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCBmb250LCBpc0ZvclBsYXRmb3Jt
Rm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sIGNvZGVVbml0cywgY29kZVVu
aXRzTGVuZ3RoKS5nZXQoKTsKKyAgICAgICAgaWYgKGZhbGxiYWNrRm9udCkKKyAgICAgICAgICAg
IGZhbGxiYWNrRm9udC0+c2V0SXNVc2VkSW5TeXN0ZW1GYWxsYmFja0NhY2hlKCk7CisgICAgICAg
IHJldHVybiBmYWxsYmFja0ZvbnQ7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworfQorCit2b2lk
IFN5c3RlbUZhbGxiYWNrQ2FjaGU6OnJlbW92ZShGb250KiBmb250KQoreworICAgIG1fY2hhcmFj
dGVyRmFsbGJhY2tNYXBzLnJlbW92ZShmb250KTsKKworICAgIGlmICghZm9udC0+aXNVc2VkSW5T
eXN0ZW1GYWxsYmFja0NhY2hlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYg
Y2hhcmFjdGVyTWFwIDogbV9jaGFyYWN0ZXJGYWxsYmFja01hcHMudmFsdWVzKCkpIHsKKyAgICAg
ICAgVmVjdG9yPENoYXJhY3RlckZhbGxiYWNrTWFwS2V5LCA1MTI+IHRvUmVtb3ZlOworICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogY2hhcmFjdGVyTWFwKSB7CisgICAgICAgICAgICBpZiAoZW50
cnkudmFsdWUgPT0gZm9udCkKKyAgICAgICAgICAgICAgICB0b1JlbW92ZS5hcHBlbmQoZW50cnku
a2V5KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIGtleSA6IHRvUmVtb3ZlKQorICAg
ICAgICAgICAgY2hhcmFjdGVyTWFwLnJlbW92ZShrZXkpOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU3lzdGVtRmFsbGJhY2tDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNDdlMzA3YTk2NDM5YjM0MTUw
OTUzM2U2NDJlZWIzODQ4N2I2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1GYWxsYmFja0NhY2hlLmgKQEAgLTAsMCArMSw4NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnQ7CitjbGFzcyBGb250RGVzY3JpcHRp
b247CitlbnVtIGNsYXNzIElzRm9yUGxhdGZvcm1Gb250IDogYm9vbDsKKworY2xhc3MgU3lzdGVt
RmFsbGJhY2tDYWNoZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3lzdGVtRmFsbGJhY2tD
YWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGlj
IFN5c3RlbUZhbGxiYWNrQ2FjaGUmIGZvckN1cnJlbnRUaHJlYWQoKTsKKworICAgIFN5c3RlbUZh
bGxiYWNrQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICBSZWZQdHI8Rm9udD4gc3lzdGVtRmFsbGJh
Y2tGb250Rm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnQqLCBVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0Zm9ybUZvbnQpOworICAgIHZvaWQgcmVtb3ZlKEZv
bnQqKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkgewor
ICAgICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKKyAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgeyAw
IH07CisgICAgICAgIGJvb2wgaXNGb3JQbGF0Zm9ybUZvbnQgeyBmYWxzZSB9OworCisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgb3RoZXIpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT0gb3RoZXIubG9jYWxl
ICYmIGNoYXJhY3RlciA9PSBvdGhlci5jaGFyYWN0ZXIgJiYgaXNGb3JQbGF0Zm9ybUZvbnQgPT0g
b3RoZXIuaXNGb3JQbGF0Zm9ybUZvbnQ7CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RydWN0
IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBrZXkpIHsgcmV0dXJuIGNvbXB1dGVI
YXNoKGtleS5sb2NhbGUsIGtleS5jaGFyYWN0ZXIsIGtleS5pc0ZvclBsYXRmb3JtRm9udCk7IH0K
KyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkm
IGEsIGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNo
VHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPENoYXJhY3RlckZhbGxiYWNrTWFwS2V5PiB7
CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShDaGFyYWN0ZXJGYWxs
YmFja01hcEtleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBDaGFyYWN0ZXJGYWxsYmFj
a01hcEtleSB7IHsgfSwgVV9TRU5USU5FTCwgeyB9IH07IH0KKyAgICAgICAgc3RhdGljIGJvb2wg
aXNEZWxldGVkVmFsdWUoY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGtleSkgeyByZXR1
cm4ga2V5LmNoYXJhY3RlciA9PSBVX1NFTlRJTkVMOyB9CisgICAgfTsKKworICAgIC8vIEZvbnRz
IGFyZSBub3QgcmVmJ2QgdG8gYXZvaWQgY3ljbGVzLgorICAgIC8vIEZJWE1FOiBDb25zaWRlciBj
aGFuZ2luZyB0aGVzZSBtYXBzIHRvIHVzZSBXZWFrUHRyIGluc3RlYWQgb2YgcmF3IHBvaW50ZXJz
LgorICAgIHVzaW5nIENoYXJhY3RlckZhbGxiYWNrTWFwID0gSGFzaE1hcDxDaGFyYWN0ZXJGYWxs
YmFja01hcEtleSwgRm9udCosIENoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaCwgQ2hhcmFjdGVy
RmFsbGJhY2tNYXBLZXlIYXNoVHJhaXRzPjsKKworICAgIEhhc2hNYXA8Y29uc3QgRm9udCosIENo
YXJhY3RlckZhbGxiYWNrTWFwPiBtX2NoYXJhY3RlckZhbGxiYWNrTWFwczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="471673"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461053</attachid>
            <date>2022-07-20 14:37:43 -0700</date>
            <delta_ts>2022-07-21 01:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233975-20220721093742.patch</filename>
            <type>text/plain</type>
            <size>5807</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">RnJvbSBhZjI3N2JiOWUxZDJmNGIxNzk0ZDdhMDk2NjllNGVmNWNlOGIxZGJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDYW1lcm9uIE1jQ29ybWFjayA8aGV5Y2FtQGFwcGxlLmNvbT4K
RGF0ZTogVHVlLCAyMyBOb3YgMjAyMSAxNDoxMjoyOSArMTEwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgdGhlIHVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSB0YWJsZSB0aHJlYWQgc2FmZQog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk3NQoKUmV2aWV3ZWQg
YnkgTXlsZXMgQy4gTWF4ZmllbGQuCgpXaXRoIE9mZnNjcmVlbkNhbnZhcywgdXNlQmFja3NsYXNo
QXNZZW5TaWduRm9yRmFtaWx5IGNhbiBiZSBjYWxsZWQgZnJvbQp3b3JrZXIgdGhyZWFkcy4gVGhh
dCBmdW5jdGlvbiBoYXMgYSBsYXppbHkgaW5pdGlhbGl6ZWQgdGFibGUgb2YKQXRvbVN0cmluZ3Mg
b2YgZm9udCBmYW1pbGllcyB0aGF0IHJlcXVpcmUgdGhpcyBiZWhhdmlvci4gVG8gbWFrZSB0aGlz
CnRocmVhZCBzYWZlLCB0aGlzIHBhdGNoIG1vdmVzIHRoZSBmdW5jdGlvbiB0byBGb250Q2FjaGUs
IGZvciB3aGljaCB3ZQpoYXZlIGFuIGluc3RhbmNlIHBlciB3b3JrZXIgYWxyZWFkeS4KCiogcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKFdlYkNvcmU6OkZvbnRDYWNoZTo6dXNlQmFj
a3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KToKKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aDoKKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CihXZWJDb3JlOjpGb250Q2Fz
Y2FkZTo6Rm9udENhc2NhZGUpOgooV2ViQ29yZTo6Rm9udENhc2NhZGU6OnVwZGF0ZUZvbnRzIGNv
bnN0KToKKFdlYkNvcmU6OnVzZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseSk6IERlbGV0ZWQu
Ci0tLQogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCAgIHwgMjEg
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oICB8ICA0ICsrKysKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcCB8IDIzICstLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjYgaW5z
ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggOGExMjFkNzk3Y2Y1Li4zNzNiMTI3NDgzZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApA
QCAtNDE5LDYgKzQxOSwyNyBAQCB2b2lkIEZvbnRDYWNoZTo6aW52YWxpZGF0ZUFsbEZvbnRDYWNo
ZXMoU2hvdWxkUnVuSW52YWxpZGF0aW9uQ2FsbGJhY2sgc2hvdWxkUnVuSQogICAgICAgICBmb250
Q2FjaGVJbnZhbGlkYXRpb25DYWxsYmFjaygpKCk7CiB9CiAKK2Jvb2wgRm9udENhY2hlOjp1c2VC
YWNrc2xhc2hBc1llblNpZ25Gb3JGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQorewor
ICAgIGlmIChmYW1pbHkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAobV9mYW1pbGllc1VzaW5nQmFja3NsYXNoQXNZZW5TaWduLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvIGFkZCA9IFsmXSAoQVNDSUlMaXRlcmFsIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxVQ2hhcj4gdW5pY29kZU5hbWUpIHsKKyAgICAgICAgICAgIG1fZmFtaWxpZXNVc2luZ0JhY2tz
bGFzaEFzWWVuU2lnbi5hZGQoQXRvbVN0cmluZyB7IG5hbWUgfSk7CisgICAgICAgICAgICB1bnNp
Z25lZCB1bmljb2RlTmFtZUxlbmd0aCA9IHVuaWNvZGVOYW1lLnNpemUoKTsKKyAgICAgICAgICAg
IG1fZmFtaWxpZXNVc2luZ0JhY2tzbGFzaEFzWWVuU2lnbi5hZGQoQXRvbVN0cmluZyB7IHVuaWNv
ZGVOYW1lLmJlZ2luKCksIHVuaWNvZGVOYW1lTGVuZ3RoIH0pOworICAgICAgICB9OworICAgICAg
ICBhZGQoIk1TIFBHb3RoaWMiX3MsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAw
eDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUYgfSk7CisgICAgICAgIGFkZCgiTVMgUE1pbmNo
byJfcywgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEIH0p
OworICAgICAgICBhZGQoIk1TIEdvdGhpYyJfcywgeyAweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAw
eDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUYgfSk7CisgICAgICAgIGFkZCgiTVMgTWluY2hv
Il9zLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4NjYwRSwgMHg2NzFEIH0pOworICAgICAg
ICBhZGQoIk1laXJ5byJfcywgeyAweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUEgfSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fZmFtaWxpZXNVc2luZ0JhY2tzbGFzaEFzWWVuU2lnbi5jb250
YWlucyhmYW1pbHkpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiBGb250Q2FjaGU6OlBy
ZXdhcm1JbmZvcm1hdGlvbiBGb250Q2FjaGU6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRl
eCA2M2MwYzFlOWYxYjcuLjRjN2EwM2U1YzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUG9pbnRlckNvbXBhcmlzb24uaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KQEAgLTE3NCw2ICsxNzUsOCBAQCBwdWJsaWM6CiAgICAgRm9u
dENhc2NhZGVDYWNoZSYgZm9udENhc2NhZGVDYWNoZSgpIHsgcmV0dXJuIG1fZm9udENhc2NhZGVD
YWNoZTsgfQogICAgIFN5c3RlbUZhbGxiYWNrRm9udENhY2hlJiBzeXN0ZW1GYWxsYmFja0ZvbnRD
YWNoZSgpIHsgcmV0dXJuIG1fc3lzdGVtRmFsbGJhY2tGb250Q2FjaGU7IH0KIAorICAgIGJvb2wg
dXNlQmFja3NsYXNoQXNZZW5TaWduRm9yRmFtaWx5KGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseSk7
CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
dmFsaWRhdGUoKTsKQEAgLTE5OSw2ICsyMDIsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxG
b250RGF0YUNhY2hlcz4gbV9mb250RGF0YUNhY2hlczsKICAgICBGb250Q2FzY2FkZUNhY2hlIG1f
Zm9udENhc2NhZGVDYWNoZTsKICAgICBTeXN0ZW1GYWxsYmFja0ZvbnRDYWNoZSBtX3N5c3RlbUZh
bGxiYWNrRm9udENhY2hlOworICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aFNldDxBdG9tU3RyaW5nPiBtX2ZhbWlsaWVzVXNpbmdCYWNrc2xhc2hBc1llblNpZ247CiAKICAg
ICB1bnNpZ25lZCBzaG9ydCBtX2dlbmVyYXRpb24geyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA4OTVlNjA4MTBhOTEu
Ljc0Mjg4NTE4ZGM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmNwcApAQCAtNDcsMjcgKzQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCi1zdGF0aWMgYm9vbCB1c2VCYWNrc2xh
c2hBc1llblNpZ25Gb3JGYW1pbHkoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5KQotewotICAgIGlm
IChmYW1pbHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkIHNldCA9IFtdIHsKLSAgICAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlS
b2Jpbkhvb2RIYXNoU2V0PEF0b21TdHJpbmc+IHNldDsKLSAgICAgICAgYXV0byBhZGQgPSBbJnNl
dF0gKEFTQ0lJTGl0ZXJhbCBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VUNoYXI+IHVuaWNv
ZGVOYW1lKSB7Ci0gICAgICAgICAgICBzZXQuYWRkKEF0b21TdHJpbmcgeyBuYW1lIH0pOwotICAg
ICAgICAgICAgdW5zaWduZWQgdW5pY29kZU5hbWVMZW5ndGggPSB1bmljb2RlTmFtZS5zaXplKCk7
Ci0gICAgICAgICAgICBzZXQuYWRkKEF0b21TdHJpbmcgeyB1bmljb2RlTmFtZS5iZWdpbigpLCB1
bmljb2RlTmFtZUxlbmd0aCB9KTsKLSAgICAgICAgfTsKLSAgICAgICAgYWRkKCJNUyBQR290aGlj
Il9zLCB7IDB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4
MzBDMywgMHgzMEFGIH0pOwotICAgICAgICBhZGQoIk1TIFBNaW5jaG8iX3MsIHsgMHhGRjJELCAw
eEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDY2MEUsIDB4NjcxRCB9KTsKLSAgICAgICAgYWRkKCJN
UyBHb3RoaWMiX3MsIHsgMHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4
MzBDMywgMHgzMEFGIH0pOwotICAgICAgICBhZGQoIk1TIE1pbmNobyJfcywgeyAweEZGMkQsIDB4
RkYzMywgMHgwMDIwLCAweDY2MEUsIDB4NjcxRCB9KTsKLSAgICAgICAgYWRkKCJNZWlyeW8iX3Ms
IHsgMHgzMEUxLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBIH0pOwotICAgICAgICByZXR1cm4gc2V0
OwotICAgIH0oKTsKLSAgICByZXR1cm4gc2V0LmdldCgpLmNvbnRhaW5zKGZhbWlseSk7Ci19Ci0K
IEZvbnRDYXNjYWRlOjpDb2RlUGF0aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IENvZGVQYXRo
OjpBdXRvOwogCiBzdGF0aWMgc3RkOjphdG9taWM8dW5zaWduZWQ+IGxhc3RGb250Q2FzY2FkZUdl
bmVyYXRpb24geyAwIH07CkBAIC04NSw3ICs2NCw3IEBAIEZvbnRDYXNjYWRlOjpGb250Q2FzY2Fk
ZShGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYgZmQsIGZsb2F0IGxldHRlclNwYWNpbmcsIGZsb2F0
CiAgICAgLCBtX2xldHRlclNwYWNpbmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNp
bmcod29yZFNwYWNpbmcpCiAgICAgLCBtX2dlbmVyYXRpb24oKytsYXN0Rm9udENhc2NhZGVHZW5l
cmF0aW9uKQotICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCh1c2VCYWNrc2xhc2hBc1ll
blNpZ25Gb3JGYW1pbHkobV9mb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSkpCisgICAgLCBt
X3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKEZvbnRDYWNoZTo6Zm9yQ3VycmVudFRocmVhZCgpLnVz
ZUJhY2tzbGFzaEFzWWVuU2lnbkZvckZhbWlseShtX2ZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWls
eSgpKSkKICAgICAsIG1fZW5hYmxlS2VybmluZyhjb21wdXRlRW5hYmxlS2VybmluZygpKQogICAg
ICwgbV9yZXF1aXJlc1NoYXBpbmcoY29tcHV0ZVJlcXVpcmVzU2hhcGluZygpKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>