<?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>122088</bug_id>
          
          <creation_ts>2013-09-30 00:54:41 -0700</creation_ts>
          <short_desc>Remove FontTranscoder</short_desc>
          <delta_ts>2013-09-30 10:05:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Text</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934480</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-30 00:54:41 -0700</bug_when>
    <thetext>This overly generic class just implements mapping of backslash to yen symbol for some legacy Japanese fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934483</commentid>
    <comment_count>1</comment_count>
      <attachid>212959</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-30 01:07:27 -0700</bug_when>
    <thetext>Created attachment 212959
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934487</commentid>
    <comment_count>2</comment_count>
      <attachid>212961</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-30 01:14:55 -0700</bug_when>
    <thetext>Created attachment 212961
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934503</commentid>
    <comment_count>3</comment_count>
      <attachid>212961</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-30 02:26:48 -0700</bug_when>
    <thetext>Comment on attachment 212961
another

Attachment 212961 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2702155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934623</commentid>
    <comment_count>4</comment_count>
      <attachid>212961</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-30 09:07:57 -0700</bug_when>
    <thetext>Comment on attachment 212961
another

r=me

Also, wat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934626</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-30 09:22:00 -0700</bug_when>
    <thetext>https://trac.webkit.org/r156657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934638</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-30 09:48:44 -0700</bug_when>
    <thetext>&gt; Also, wat.

I can explain wat, and would have r-ed the patch.

The idea was to use this class for other types of non-Unicode font transcoding. See bug 14637 and bug 22339. We just didn&apos;t do the work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934641</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-30 09:52:04 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Also, wat.
&gt; 
&gt; I can explain wat, and would have r-ed the patch.
&gt; 
&gt; The idea was to use this class for other types of non-Unicode font transcoding. See bug 14637 and bug 22339. We just didn&apos;t do the work.

Given how long that work has not been completed for, it seems like this patch is justified.  If we ever do that work, this (or something else) can be brought back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934654</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-30 10:05:52 -0700</bug_when>
    <thetext>Abstractions are costly in terms of code clarity and often performance. They should only be added for a concrete need.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212959</attachid>
            <date>2013-09-30 01:07:27 -0700</date>
            <delta_ts>2013-09-30 01:14:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>backslash-as-yen-2.patch</filename>
            <type>text/plain</type>
            <size>39804</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjYzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEzLTA5LTMwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRm9udFRyYW5zY29k
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
b3Zlcmx5IGdlbmVyaWMgY2xhc3MganVzdCBpbXBsZW1lbnRzIG1hcHBpbmcgb2YgYmFja3NsYXNo
IHRvIHllbiBzeW1ib2wgZm9yIHNvbWUgbGVnYWN5IEphcGFuZXNlIGZvbnRzLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNo
QXNZZW5TaWduRm9yRmFtaWx5KToKKyAgICAgICAgCisgICAgICAgICAgICBNb3ZlIHRoZSBmYW1p
bHkgc2V0IHRvIEZvbnQuY3BwLgorCisgICAgICAgIChXZWJDb3JlOjpGb250OjpGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Ojp1cGRhdGUpOgorICAgICAgICAKKyAgICAgICAgICAgIEtlZXAgdGhlIGNhY2hlZCBib29sZWFu
IHVwIHRvIGRhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Ojp1c2VCYWNrc2xhc2hBc1llblN5bWJvbCk6CisgICAgICAgIAor
ICAgICAgICAgICAgVXNlIGRlc2NyaXB0aXZlIG5hbWUgaW5zdGVhZCBvZiB0YWxraW5nIGFib3V0
ICJ0cmFuc2NvZGluZyIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXI6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRy
YW5zY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCk6CisgICAg
ICAgIAorICAgICAgICAgICAgUmVuYW1lIGZvciBjbGFyaXR5LiAKKyAgICAgICAgICAgIEF2b2lk
IHVubmVjZXNzYXJ5IGhhc2ggbG9va3VwLCBqdXN0IGNoZWNrIHRoZSBjYWNoZWQgYml0IGluIEZv
bnQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFRleHRJbnRlcm5hbCk6CisgICAgICAgIAor
ICAgICAgICAgICAgIlRyYW5zY29kaW5nIiBoZXJlIHdhcyBqdXN0IGEgc2ltcGxlIGNoYXJhY3Rl
ciByZXBsYWNlbWVudC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6dGV4dFdpdGhv
dXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2wpOgorICAgICAgICAKKyAgICAgICAgICAg
IFJlbmFtZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorCiAyMDEzLTA5
LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
R2VuZXJhdGUgdG9DU1NGb29WYWx1ZSBmb3IgQ1NTR3JhZGllbnRWYWx1ZSwgQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSBhbmQgQ1NTUmFkaWFsR3JhZGllbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTY2MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQCBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL3NxbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dCIK
LSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyIgogICAgICIke1dF
QkNPUkVfRElSfS9wbHVnaW5zIgogICAgICIke1dFQkNPUkVfRElSfS9yZW5kZXJpbmciCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3JlbmRlcmluZy9tYXRobWwiCkBAIC0yMDk1LDggKzIwOTQsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvVW5pY29kZVJhbmdlLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC90cmFu
c2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAotCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAK
ICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCiAgICAgcGx1Z2lucy9ET01QbHVnaW4u
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTU2NjIzKQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDYgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dCBcCi0JLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2lu
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU2NjIzKQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
NTk1Nyw4ICs1OTU3LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1
NjYyMykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEx
MDMsNyArMTEwMyw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5j
cHAgXAogICAgIHBsYXRmb3JtL1RpbWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9Vbmljb2Rl
UmFuZ2UuY3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIu
Y3BwIFwKICAgICBwbGF0Zm9ybS9VVUlELmNwcCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBc
CiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBcCkBAIC0yMzQyLDcgKzIzNDEs
NiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5
LmggXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1VuaWNvZGVSYW5nZS5oIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5z
Y29kZXIuaCBcCiAgICAgcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIFwKICAgICBwbGF0Zm9y
bS9UaHJlYWRUaW1lcnMuaCBcCiAgICAgcGxhdGZvcm0vVGltZXIuaCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnByaQkocmV2aXNpb24gMTU2NjIzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDYgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09V
UkNFX0RJUi9wbGF0Zm9ybS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL3NxbCBcCiAg
ICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL3RleHQgXAotICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS90ZXh0L3RyYW5zY29kZXIgXAogICAgICQkU09VUkNFX0RJUi9wbHVnaW5zIFwKICAgICAkJFNP
VVJDRV9ESVIvcmVuZGVyaW5nIFwKICAgICAkJFNPVVJDRV9ESVIvcmVuZGVyaW5nL21hdGhtbCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oJKHJldmlzaW9uIDE1NjYyMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg1MDMsNyArODUwMyw2IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XGNmXFN0cmluZ0NGLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRcY2ZcU3RyaW5nSW1wbENG
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRcd2luXFRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyXEZvbnRUcmFuc2NvZGVyLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXEltYWdl
RGVjb2Rlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgpAQCAtMTk1NDIsNyArMTk1NDEsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcV2lkdGhDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcV2lkdGhJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxXcml0aW5nTW9kZS5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyXEZvbnRUcmFuc2NvZGVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xJ
bWFnZURlY29kZXIuaCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTY2MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ2ODQsOCArNDY4NCw2
IEBACiAJCUI2RDlEMjdCMTRFQUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2RDlEMjc5MTRFQUMwODYw
MDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCAqLzsgfTsKIAkJQjZEOUQyN0MxNEVBQzA4NjAwOTBE
NzVFIC8qIEpTRm9jdXNFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNkQ5RDI3QTE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNw
cCAqLzsgfTsKIAkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3NkQ0M0ExMTA0
NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUI3MzRCMTgxMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250
VHJhbnNjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwICovOyB9
OwotCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgyMTE5Qjk5MUQw
MDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovOyB9OwogCQlCNzc2RDQzRDExMDQ1Mjc1MDBC
RUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQu
Y3BwICovOyB9OwogCQlCODg1RThENDExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwICovOyB9OwogCQlCODg1RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCODg1RThEMzExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKQEAgLTExNTYwLDggKzExNTU4LDYgQEAKIAkJQjZEOUQyNzIxNEVBQkYwMzAwOTBENzVF
IC8qIEZvY3VzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZvY3VzRXZlbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNkQ5RDI3OTE0RUFDMDg2MDA5MEQ3NUUg
LyogSlNGb2N1c0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9j
dXNFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNkQ5RDI3QTE0RUFDMDg2
MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRm9jdXNFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5jcHA7IHBhdGggPSB0
cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2Nv
ZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZE
NDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTkwOTcsNyArMTkwOTMsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNmICovLAogCQkJCUIyQzNEOUY5MEQwMDZD
MUQwMEVGNkYyNiAvKiBtYWMgKi8sCi0JCQkJQjczNEIxN0YxMTlCOThEQjAwNjU4N0JEIC8qIHRy
YW5zY29kZXIgKi8sCiAJCQkJMzdDNjFGMDAxMjA5NUM4NzAwN0EzQzY3IC8qIEF0b21pY1N0cmlu
Z0tleWVkTVJVQ2FjaGUuaCAqLywKIAkJCQlCMkMzRDlGMjBEMDA2QzFEMDBFRjZGMjYgLyogQmlk
aUNvbnRleHQuY3BwICovLAogCQkJCUIyQzNEOUYzMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29u
dGV4dC5oICovLApAQCAtMTkyMjksMTUgKzE5MjI0LDYgQEAKIAkJCW5hbWUgPSBnZW5lcmljOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQjczNEIxN0YxMTlCOThEQjAwNjU4
N0JEIC8qIHRyYW5zY29kZXIgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAg
Ki8sCi0JCQkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8s
Ci0JCQkpOwotCQkJbmFtZSA9IHRyYW5zY29kZXI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwogCQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjI1MzQsNyArMjI1MjAsNiBA
QAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3MjAyMTk5MTA2MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4NEMzNEIwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRU
cmFpdHNNYXNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQg
LyogRm9udFRyYW5zY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VEMEExOTg5Q0Ew
MDdGQjhDNSAvKiBGb250VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ0MTM2MTJGNzQ5
MEIwMDlCODRCOCAvKiBGb250V2lkdGhWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTBE
QTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1ODEwLDcgKzI1Nzk1LDYgQEAKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3
NEQgLyogRm9udE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg0QjYyNjg1MTMzMTM4RjkwMDk1
QTQ4OSAvKiBGb250UGxhdGZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MzIwRDZD
MTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhQ29jb2EubW0gaW4gU291cmNlcyAq
LywKLQkJCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjEwQTE5ODlDQTAwN0ZCOEM1IC8qIEZvbnRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTBEQTJGRTEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwNUNFRDI5MEE0MEJCMkMw
MEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE1NjYyMykKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNzIsNyArMzM3Miw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpw
YXNzd28KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgLy8gUmV0dXJuIHRoZSB0ZXh0
IHRoYXQgaXMgYWN0dWFsbHkgYmVpbmcgcmVuZGVyZWQgaW4gdGhlIGlucHV0IGZpZWxkLgotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4ocmVuZGVyZXIpLT50ZXh0V2l0aG91dFRy
YW5zY29kaW5nKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihyZW5kZXJl
ciktPnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCk7CiAjZWxzZQog
ICAgIC8vIEl0IHNlZW1zIG9ubHkgR1RLIGlzIGludGVyZXN0ZWQgaW4gdGhpcyBhdCB0aGUgbW9t
ZW50LgogICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE1NjYyMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYwogdm9pZCBUZXh0SXRlcmF0
b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwg
aW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCiB7CiAgICAgUmVuZGVyVGV4
dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyT2JqZWN0KTsKLSAgICBtX3RleHQgPSBt
X2VtaXRzT3JpZ2luYWxUZXh0ID8gcmVuZGVyZXItPm9yaWdpbmFsVGV4dCgpIDogKG1fZW1pdHNU
ZXh0V2l0aG91dFRyYW5zY29kaW5nID8gcmVuZGVyZXItPnRleHRXaXRob3V0VHJhbnNjb2Rpbmco
KSA6IHJlbmRlcmVyLT50ZXh0KCkpOworICAgIG1fdGV4dCA9IG1fZW1pdHNPcmlnaW5hbFRleHQg
PyByZW5kZXJlci0+b3JpZ2luYWxUZXh0KCkgOiAobV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2Rp
bmcgPyByZW5kZXJlci0+dGV4dFdpdGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2wo
KSA6IHJlbmRlcmVyLT50ZXh0KCkpOwogICAgIEFTU0VSVCghbV90ZXh0LmlzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKDAgPD0gdGV4dFN0YXJ0T2Zmc2V0ICYmIHRleHRTdGFydE9mZnNldCA8IHN0YXRp
Y19jYXN0PGludD4obV90ZXh0Lmxlbmd0aCgpKSk7CiAgICAgQVNTRVJUKDAgPD0gdGV4dEVuZE9m
ZnNldCAmJiB0ZXh0RW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PGludD4obV90ZXh0Lmxlbmd0aCgp
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAkocmV2
aXNpb24gMTU2NjIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udFRyYW5zY29kZXIu
aCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTYxLDYgKzYxLDM2IEBAIGNvbnN0
IHVpbnQ4X3QgRm9udDo6c19yb3VuZGluZ0hhY2tDaGFyYWMKICAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCitzdGF0aWMgYm9vbCB1c2VCYWNrc2xhc2hBc1ll
blNpZ25Gb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCit7CisgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGF0aWMgSGFzaFNl
dDxBdG9taWNTdHJpbmc+KiBzZXQ7CisgICAgaWYgKCFzZXQpIHsKKyAgICAgICAgc2V0ID0gbmV3
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPjsKKyAgICAgICAgc2V0LT5hZGQoIk1TIFBHb3RoaWMiKTsK
KyAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywg
MHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07CisgICAgICAg
IHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TUEdvdGhpYywgV1RGX0FSUkFZX0xF
TkdUSCh1bmljb2RlTmFtZU1TUEdvdGhpYykpKTsKKworICAgICAgICBzZXQtPmFkZCgiTVMgUE1p
bmNobyIpOworICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TUE1pbmNob1tdID0gezB4RkYyRCwg
MHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUR9OworICAgICAgICBzZXQtPmFk
ZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIFdURl9BUlJBWV9MRU5HVEgodW5p
Y29kZU5hbWVNU1BNaW5jaG8pKSk7CisKKyAgICAgICAgc2V0LT5hZGQoIk1TIEdvdGhpYyIpOwor
ICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TR290aGljW10gPSB7MHhGRjJELCAweEZGMzMsIDB4
MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKKyAgICAgICAgc2V0LT5hZGQo
QXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29k
ZU5hbWVNU0dvdGhpYykpKTsKKworICAgICAgICBzZXQtPmFkZCgiTVMgTWluY2hvIik7CisgICAg
ICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIw
LCAweDY2MEUsIDB4NjcxRH07CisgICAgICAgIHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2Rl
TmFtZU1TTWluY2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNNaW5jaG8pKSk7CisK
KyAgICAgICAgc2V0LT5hZGQoIk1laXJ5byIpOworICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1l
aXJ5b1tdID0gezB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQX07CisgICAgICAgIHNldC0+
YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1laXJ5bywgV1RGX0FSUkFZX0xFTkdUSCh1bmlj
b2RlTmFtZU1laXJ5bykpKTsKKyAgICB9CisgICAgcmV0dXJuIHNldC0+Y29udGFpbnMoZmFtaWx5
KTsKK30KKwogRm9udDo6Q29kZVBhdGggRm9udDo6c19jb2RlUGF0aCA9IEF1dG87CiAKIFR5cGVz
ZXR0aW5nRmVhdHVyZXMgRm9udDo6c19kZWZhdWx0VHlwZXNldHRpbmdGZWF0dXJlcyA9IDA7CkBA
IC03Miw3ICsxMDIsNyBAQCBUeXBlc2V0dGluZ0ZlYXR1cmVzIEZvbnQ6OnNfZGVmYXVsdFR5cGVz
CiBGb250OjpGb250KCkKICAgICA6IG1fbGV0dGVyU3BhY2luZygwKQogICAgICwgbV93b3JkU3Bh
Y2luZygwKQotICAgICwgbV9uZWVkc1RyYW5zY29kaW5nKGZhbHNlKQorICAgICwgbV91c2VCYWNr
c2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fdHlwZXNldHRpbmdGZWF0dXJlcygwKQog
ewogfQpAQCAtODEsNyArMTExLDcgQEAgRm9udDo6Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
IGZkLCBzaAogICAgIDogbV9mb250RGVzY3JpcHRpb24oZmQpCiAgICAgLCBtX2xldHRlclNwYWNp
bmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNpbmcod29yZFNwYWNpbmcpCi0gICAg
LCBtX25lZWRzVHJhbnNjb2RpbmcoZm9udFRyYW5zY29kZXIoKS5uZWVkc1RyYW5zY29kaW5nKGZk
KSkKKyAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wodXNlQmFja3NsYXNoQXNZZW5TaWdu
Rm9yRmFtaWx5KGZkLmZpcnN0RmFtaWx5KCkpKQogICAgICwgbV90eXBlc2V0dGluZ0ZlYXR1cmVz
KGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCkpCiB7CiB9CkBAIC05MCwxMSArMTIwLDExIEBA
IEZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udEQKICAgICA6IG1fZ2x5cGhz
KEZvbnRHbHlwaHM6OmNyZWF0ZUZvclBsYXRmb3JtRm9udChmb250RGF0YSkpCiAgICAgLCBtX2xl
dHRlclNwYWNpbmcoMCkKICAgICAsIG1fd29yZFNwYWNpbmcoMCkKKyAgICAsIG1fdXNlQmFja3Ns
YXNoQXNZZW5TeW1ib2woZmFsc2UpCiAgICAgLCBtX3R5cGVzZXR0aW5nRmVhdHVyZXMoY29tcHV0
ZVR5cGVzZXR0aW5nRmVhdHVyZXMoKSkKIHsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRVc2VQ
cmludGVyRm9udChpc1ByaW50ZXJGb250KTsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRGb250
U21vb3RoaW5nKGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX25lZWRzVHJhbnNjb2RpbmcgPSBm
b250VHJhbnNjb2RlcigpLm5lZWRzVHJhbnNjb2RpbmcoZm9udERlc2NyaXB0aW9uKCkpOwogfQog
CiBGb250OjpGb250KGNvbnN0IEZvbnQmIG90aGVyKQpAQCAtMTAyLDcgKzEzMiw3IEBAIEZvbnQ6
OkZvbnQoY29uc3QgRm9udCYgb3RoZXIpCiAgICAgLCBtX2dseXBocyhvdGhlci5tX2dseXBocykK
ICAgICAsIG1fbGV0dGVyU3BhY2luZyhvdGhlci5tX2xldHRlclNwYWNpbmcpCiAgICAgLCBtX3dv
cmRTcGFjaW5nKG90aGVyLm1fd29yZFNwYWNpbmcpCi0gICAgLCBtX25lZWRzVHJhbnNjb2Rpbmco
b3RoZXIubV9uZWVkc1RyYW5zY29kaW5nKQorICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJv
bChvdGhlci5tX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKQogICAgICwgbV90eXBlc2V0dGluZ0Zl
YXR1cmVzKGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCkpCiB7CiB9CkBAIC0xMTMsNyArMTQz
LDcgQEAgRm9udCYgRm9udDo6b3BlcmF0b3I9KGNvbnN0IEZvbnQmIG90aGVyKQogICAgIG1fZ2x5
cGhzID0gb3RoZXIubV9nbHlwaHM7CiAgICAgbV9sZXR0ZXJTcGFjaW5nID0gb3RoZXIubV9sZXR0
ZXJTcGFjaW5nOwogICAgIG1fd29yZFNwYWNpbmcgPSBvdGhlci5tX3dvcmRTcGFjaW5nOwotICAg
IG1fbmVlZHNUcmFuc2NvZGluZyA9IG90aGVyLm1fbmVlZHNUcmFuc2NvZGluZzsKKyAgICBtX3Vz
ZUJhY2tzbGFzaEFzWWVuU3ltYm9sID0gb3RoZXIubV91c2VCYWNrc2xhc2hBc1llblN5bWJvbDsK
ICAgICBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgPSBvdGhlci5tX3R5cGVzZXR0aW5nRmVhdHVyZXM7
CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMjU4LDYgKzI4OCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEZvbnRHbHlwaHM+IHJldHJpZXZlT3IKIHZvaWQgRm9udDo6dXBkYXRlKFBhc3NSZWZQdHI8
Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIGNvbnN0CiB7CiAgICAgbV9nbHlwaHMgPSByZXRy
aWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhtX2ZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9y
LmdldCgpKTsKKyAgICBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sID0gdXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KGZpcnN0RmFtaWx5KCkpOwogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJl
cyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHJldmlzaW9uIDE1NjYyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcg
KzI1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVNwYWNlcyhjb25z
dCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFN0cmluZyBub3JtYWxpemVT
cGFjZXMoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogCi0gICAgYm9vbCBuZWVkc1Ry
YW5zY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1RyYW5zY29kaW5nOyB9CisgICAgYm9v
bCB1c2VCYWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlQmFja3NsYXNo
QXNZZW5TeW1ib2w7IH0KICAgICBGb250R2x5cGhzKiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBt
X2dseXBocy5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBSZWZQdHI8Rm9udEdseXBocz4gbV9nbHlwaHM7CiAgICAgc2hvcnQgbV9s
ZXR0ZXJTcGFjaW5nOwogICAgIHNob3J0IG1fd29yZFNwYWNpbmc7Ci0gICAgYm9vbCBtX25lZWRz
VHJhbnNjb2Rpbmc7CisgICAgbXV0YWJsZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2w7
CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgOiAyOyAvLyAoVHlw
ZXNldHRpbmdGZWF0dXJlcykgQ2FjaGVzIHZhbHVlcyBjb21wdXRlZCBmcm9tIG1fZm9udERlc2Ny
aXB0aW9uLgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2Nv
ZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwCShyZXZpc2lvbiAxNTY2MjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29k
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJGb250VHJhbnNjb2Rlci5oIgotCi0jaW5jbHVkZSAiRm9udERlc2NyaXB0
aW9uLmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1Gb250VHJhbnNjb2Rl
cjo6Rm9udFRyYW5zY29kZXIoKQotewotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKCJNUyBQR290
aGljIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLSAgICBVQ2hhciB1bmljb2RlTmFtZU1TUEdvdGhp
Y1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHgzMEI0LCAweDMwQjcsIDB4
MzBDMywgMHgzMEFGfTsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5p
Y29kZU5hbWVNU1BHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU1BHb3RoaWMp
KSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLQotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKCJNUyBQ
TWluY2hvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLSAgICBVQ2hhciB1bmljb2RlTmFtZU1TUE1p
bmNob1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUR9
OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TUE1p
bmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1TUE1pbmNobykpLCBCYWNrc2xhc2hU
b1llblNpZ24pOwotCi0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoIk1TIEdvdGhpYyIsIEJhY2tz
bGFzaFRvWWVuU2lnbik7Ci0gICAgVUNoYXIgdW5pY29kZU5hbWVNU0dvdGhpY1tdID0gezB4RkYy
RCwgMHhGRjMzLCAweDAwMjAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07Ci0gICAg
bV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNHb3RoaWMsIFdU
Rl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU0dvdGhpYykpLCBCYWNrc2xhc2hUb1llblNpZ24p
OwotCi0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoIk1TIE1pbmNobyIsIEJhY2tzbGFzaFRvWWVu
U2lnbik7Ci0gICAgVUNoYXIgdW5pY29kZU5hbWVNU01pbmNob1tdID0gezB4RkYyRCwgMHhGRjMz
LCAweDAwMjAsIDB4NjYwRSwgMHg2NzFEfTsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9t
aWNTdHJpbmcodW5pY29kZU5hbWVNU01pbmNobywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFt
ZU1TTWluY2hvKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7Ci0KLSAgICBtX2NvbnZlcnRlclR5cGVz
LmFkZCgiTWVpcnlvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLSAgICBVQ2hhciB1bmljb2RlTmFt
ZU1laXJ5b1tdID0gezB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQX07Ci0gICAgbV9jb252
ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTWVpcnlvLCBXVEZfQVJSQVlf
TEVOR1RIKHVuaWNvZGVOYW1lTWVpcnlvKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7Ci19Ci0KLUZv
bnRUcmFuc2NvZGVyOjpDb252ZXJ0ZXJUeXBlIEZvbnRUcmFuc2NvZGVyOjpjb252ZXJ0ZXJUeXBl
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBUZXh0RW5jb2Rp
bmcqIGVuY29kaW5nKSBjb25zdAotewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9udEZhbWls
eSA9IGZvbnREZXNjcmlwdGlvbi5maXJzdEZhbWlseSgpOwotICAgIGlmICghZm9udEZhbWlseS5p
c051bGwoKSkgewotICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQ29udmVydGVyVHlwZT46
OmNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gbV9jb252ZXJ0ZXJUeXBlcy5maW5kKGZvbnRGYW1pbHkp
OwotICAgICAgICBpZiAoZm91bmQgIT0gbV9jb252ZXJ0ZXJUeXBlcy5lbmQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBmb3VuZC0+dmFsdWU7Ci0gICAgfQotCi0gICAgLy8gSUUncyBkZWZhdWx0IGZv
bnRzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MgY2hhbmdlIGJhY2tzbGFzaGVzIGludG8geWVuIHNp
Z25zLgotICAgIC8vIFdlIGVtdWxhdGUgdGhpcyBiZWhhdmlvciBvbmx5IHdoZW4gbm8gZm9udCBp
cyBleHBsaWNpdGx5IHNwZWNpZmllZC4KLSAgICBpZiAoZW5jb2RpbmcgJiYgZW5jb2RpbmctPmJh
Y2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSAhPSAnXFwnICYmICFmb250RGVzY3JpcHRpb24uaXNT
cGVjaWZpZWRGb250KCkpCi0gICAgICAgIHJldHVybiBCYWNrc2xhc2hUb1llblNpZ247Ci0KLSAg
ICByZXR1cm4gTm9Db252ZXJzaW9uOwotfQotCi12b2lkIEZvbnRUcmFuc2NvZGVyOjpjb252ZXJ0
KFN0cmluZyYgdGV4dCwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNv
bnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChjb252ZXJ0
ZXJUeXBlKGZvbnREZXNjcmlwdGlvbiwgZW5jb2RpbmcpKSB7Ci0gICAgY2FzZSBCYWNrc2xhc2hU
b1llblNpZ246IHsKLSAgICAgICAgLy8gRklYTUU6IFRleHRFbmNvZGluZy5oIGhhcyBzaW1pbGFy
IGNvZGUuIFdlIG5lZWQgdG8gZmFjdG9yIHRoZW0gb3V0LgotICAgICAgICB0ZXh0LnJlcGxhY2Uo
J1xcJywgeWVuU2lnbik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIE5vQ29udmVy
c2lvbjoKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9
Ci19Ci0KLWJvb2wgRm9udFRyYW5zY29kZXI6Om5lZWRzVHJhbnNjb2RpbmcoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2Rpbmcp
IGNvbnN0Ci17Ci0gICAgQ29udmVydGVyVHlwZSB0eXBlID0gY29udmVydGVyVHlwZShmb250RGVz
Y3JpcHRpb24sIGVuY29kaW5nKTsKLSAgICByZXR1cm4gdHlwZSAhPSBOb0NvbnZlcnNpb247Ci19
Ci0KLUZvbnRUcmFuc2NvZGVyJiBmb250VHJhbnNjb2RlcigpCi17Ci0gICAgc3RhdGljIEZvbnRU
cmFuc2NvZGVyKiB0cmFuc2NvZGVyID0gbmV3IEZvbnRUcmFuc2NvZGVyOwotICAgIHJldHVybiAq
dHJhbnNjb2RlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2Nv
ZGVyLmgJKHJldmlzaW9uIDE1NjYyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
dHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBGb250VHJhbnNjb2Rlcl9oCi0jZGVmaW5lIEZvbnRUcmFuc2NvZGVyX2gKLQot
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEZvbnREZXNjcmlwdGlvbjsKLWNsYXNzIFRleHRFbmNvZGluZzsKLQotY2xh
c3MgRm9udFRyYW5zY29kZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRUcmFuc2Nv
ZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgdm9pZCBjb252ZXJ0
KFN0cmluZyYgdGV4dCwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgVGV4dEVuY29kaW5n
KiA9IDApIGNvbnN0OwotICAgIGJvb2wgbmVlZHNUcmFuc2NvZGluZyhjb25zdCBGb250RGVzY3Jp
cHRpb24mLCBjb25zdCBUZXh0RW5jb2RpbmcqID0gMCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAg
Rm9udFRyYW5zY29kZXIoKTsKLSAgICB+Rm9udFRyYW5zY29kZXIoKTsgLy8gTm90IGltcGxlbWVu
dGVkIHRvIG1ha2Ugc3VyZSBub2JvZHkgYWNjaWRlbnRhbGx5IGNhbGxzIGRlbGV0ZSAtLSBXZWJD
b3JlIGRvZXMgbm90IGRlbGV0ZSBzaW5nbGV0b25zLgotCi0gICAgZW51bSBDb252ZXJ0ZXJUeXBl
IHsKLSAgICAgICAgTm9Db252ZXJzaW9uLCBCYWNrc2xhc2hUb1llblNpZ24sCi0gICAgfTsKLQot
ICAgIENvbnZlcnRlclR5cGUgY29udmVydGVyVHlwZShjb25zdCBGb250RGVzY3JpcHRpb24mLCBj
b25zdCBUZXh0RW5jb2RpbmcqKSBjb25zdDsKLQotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBD
b252ZXJ0ZXJUeXBlPiBtX2NvbnZlcnRlclR5cGVzOwotCi0gICAgZnJpZW5kIEZvbnRUcmFuc2Nv
ZGVyJiBmb250VHJhbnNjb2RlcigpOwotfTsKLQotRm9udFRyYW5zY29kZXImIGZvbnRUcmFuc2Nv
ZGVyKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEZvbnRUcmFuc2Nv
ZGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250
VHJhbnNjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAkocmV2aXNpb24gMTU2NjIzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiRm9udFRyYW5zY29kZXIuaCIKLQotI2luY2x1ZGUgIkZvbnREZXNjcmlwdGlvbi5oIgot
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rl
ck5hbWVzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRm9udFRyYW5zY29kZXI6OkZvbnRU
cmFuc2NvZGVyKCkKLXsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUEdvdGhpYyIsIEJh
Y2tzbGFzaFRvWWVuU2lnbik7Ci0gICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNbXSA9IHsw
eEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4
MzBBRn07Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1l
TVNQR290aGljLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNQR290aGljKSksIEJhY2tz
bGFzaFRvWWVuU2lnbik7Ci0KLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUE1pbmNobyIs
IEJhY2tzbGFzaFRvWWVuU2lnbik7Ci0gICAgVUNoYXIgdW5pY29kZU5hbWVNU1BNaW5jaG9bXSA9
IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEfTsKLSAgICBt
X2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIFdU
Rl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU1BNaW5jaG8pKSwgQmFja3NsYXNoVG9ZZW5TaWdu
KTsKLQotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKCJNUyBHb3RoaWMiLCBCYWNrc2xhc2hUb1ll
blNpZ24pOwotICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYz
MywgMHgwMDIwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUZ9OwotICAgIG1fY29udmVy
dGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TR290aGljLCBXVEZfQVJSQVlf
TEVOR1RIKHVuaWNvZGVOYW1lTVNHb3RoaWMpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLQotICAg
IG1fY29udmVydGVyVHlwZXMuYWRkKCJNUyBNaW5jaG8iLCBCYWNrc2xhc2hUb1llblNpZ24pOwot
ICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIw
LCAweDY2MEUsIDB4NjcxRH07Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5n
KHVuaWNvZGVOYW1lTVNNaW5jaG8sIFdURl9BUlJBWV9MRU5HVEgodW5pY29kZU5hbWVNU01pbmNo
bykpLCBCYWNrc2xhc2hUb1llblNpZ24pOwotCi0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoIk1l
aXJ5byIsIEJhY2tzbGFzaFRvWWVuU2lnbik7Ci0gICAgVUNoYXIgdW5pY29kZU5hbWVNZWlyeW9b
XSA9IHsweDMwRTEsIDB4MzBBNCwgMHgzMEVBLCAweDMwQUF9OwotICAgIG1fY29udmVydGVyVHlw
ZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1laXJ5bywgV1RGX0FSUkFZX0xFTkdUSCh1
bmljb2RlTmFtZU1laXJ5bykpLCBCYWNrc2xhc2hUb1llblNpZ24pOwotfQotCi1Gb250VHJhbnNj
b2Rlcjo6Q29udmVydGVyVHlwZSBGb250VHJhbnNjb2Rlcjo6Y29udmVydGVyVHlwZShjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNv
ZGluZykgY29uc3QKLXsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvbnRGYW1pbHkgPSBmb250
RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKLSAgICBpZiAoIWZvbnRGYW1pbHkuaXNOdWxsKCkp
IHsKLSAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENvbnZlcnRlclR5cGU+Ojpjb25zdF9p
dGVyYXRvciBmb3VuZCA9IG1fY29udmVydGVyVHlwZXMuZmluZChmb250RmFtaWx5KTsKLSAgICAg
ICAgaWYgKGZvdW5kICE9IG1fY29udmVydGVyVHlwZXMuZW5kKCkpCi0gICAgICAgICAgICByZXR1
cm4gZm91bmQtPnZhbHVlOwotICAgIH0KLQotICAgIC8vIElFJ3MgZGVmYXVsdCBmb250cyBmb3Ig
SmFwYW5lc2UgZW5jb2RpbmdzIGNoYW5nZSBiYWNrc2xhc2hlcyBpbnRvIHllbiBzaWducy4KLSAg
ICAvLyBXZSBlbXVsYXRlIHRoaXMgYmVoYXZpb3Igb25seSB3aGVuIG5vIGZvbnQgaXMgZXhwbGlj
aXRseSBzcGVjaWZpZWQuCi0gICAgaWYgKGVuY29kaW5nICYmIGVuY29kaW5nLT5iYWNrc2xhc2hB
c0N1cnJlbmN5U3ltYm9sKCkgIT0gJ1xcJyAmJiAhZm9udERlc2NyaXB0aW9uLmlzU3BlY2lmaWVk
Rm9udCgpKQotICAgICAgICByZXR1cm4gQmFja3NsYXNoVG9ZZW5TaWduOwotCi0gICAgcmV0dXJu
IE5vQ29udmVyc2lvbjsKLX0KLQotdm9pZCBGb250VHJhbnNjb2Rlcjo6Y29udmVydChTdHJpbmcm
IHRleHQsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBUZXh0
RW5jb2RpbmcqIGVuY29kaW5nKSBjb25zdAotewotICAgIHN3aXRjaCAoY29udmVydGVyVHlwZShm
b250RGVzY3JpcHRpb24sIGVuY29kaW5nKSkgewotICAgIGNhc2UgQmFja3NsYXNoVG9ZZW5TaWdu
OiB7Ci0gICAgICAgIC8vIEZJWE1FOiBUZXh0RW5jb2RpbmcuaCBoYXMgc2ltaWxhciBjb2RlLiBX
ZSBuZWVkIHRvIGZhY3RvciB0aGVtIG91dC4KLSAgICAgICAgdGV4dC5yZXBsYWNlKCdcXCcsIHll
blNpZ24pOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBOb0NvbnZlcnNpb246Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1i
b29sIEZvbnRUcmFuc2NvZGVyOjpuZWVkc1RyYW5zY29kaW5nKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nKSBjb25zdAot
ewotICAgIENvbnZlcnRlclR5cGUgdHlwZSA9IGNvbnZlcnRlclR5cGUoZm9udERlc2NyaXB0aW9u
LCBlbmNvZGluZyk7Ci0gICAgcmV0dXJuIHR5cGUgIT0gTm9Db252ZXJzaW9uOwotfQotCi1Gb250
VHJhbnNjb2RlciYgZm9udFRyYW5zY29kZXIoKQotewotICAgIHN0YXRpYyBGb250VHJhbnNjb2Rl
ciogdHJhbnNjb2RlciA9IG5ldyBGb250VHJhbnNjb2RlcjsKLSAgICByZXR1cm4gKnRyYW5zY29k
ZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5oCShy
ZXZpc2lvbiAxNTY2MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29k
ZXIvRm9udFRyYW5zY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgRm9udFRyYW5zY29kZXJfaAotI2RlZmluZSBGb250VHJhbnNjb2Rlcl9oCi0KLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBGb250RGVzY3JpcHRpb247Ci1jbGFzcyBUZXh0RW5jb2Rpbmc7Ci0KLWNsYXNzIEZvbnRU
cmFuc2NvZGVyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250VHJhbnNjb2Rlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHZvaWQgY29udmVydChTdHJpbmcm
IHRleHQsIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IFRleHRFbmNvZGluZyogPSAwKSBj
b25zdDsKLSAgICBib29sIG5lZWRzVHJhbnNjb2RpbmcoY29uc3QgRm9udERlc2NyaXB0aW9uJiwg
Y29uc3QgVGV4dEVuY29kaW5nKiA9IDApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIEZvbnRUcmFu
c2NvZGVyKCk7Ci0gICAgfkZvbnRUcmFuc2NvZGVyKCk7IC8vIE5vdCBpbXBsZW1lbnRlZCB0byBt
YWtlIHN1cmUgbm9ib2R5IGFjY2lkZW50YWxseSBjYWxscyBkZWxldGUgLS0gV2ViQ29yZSBkb2Vz
IG5vdCBkZWxldGUgc2luZ2xldG9ucy4KLQotICAgIGVudW0gQ29udmVydGVyVHlwZSB7Ci0gICAg
ICAgIE5vQ29udmVyc2lvbiwgQmFja3NsYXNoVG9ZZW5TaWduLAotICAgIH07Ci0KLSAgICBDb252
ZXJ0ZXJUeXBlIGNvbnZlcnRlclR5cGUoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgVGV4
dEVuY29kaW5nKikgY29uc3Q7Ci0KLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgQ29udmVydGVy
VHlwZT4gbV9jb252ZXJ0ZXJUeXBlczsKLQotICAgIGZyaWVuZCBGb250VHJhbnNjb2RlciYgZm9u
dFRyYW5zY29kZXIoKTsKLX07Ci0KLUZvbnRUcmFuc2NvZGVyJiBmb250VHJhbnNjb2RlcigpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBGb250VHJhbnNjb2Rlcl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiAxNTY2
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5j
bHVkZSAiRWxsaXBzaXNCb3guaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKLSNpbmNsdWRlICJG
b250VHJhbnNjb2Rlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiSHlwaGVuYXRpb24uaCIKQEAgLTE0NSw3ICsxNDQsNyBAQCBSZW5kZXJU
ZXh0OjpSZW5kZXJUZXh0KFRleHQqIHRleHROb2RlLCBjCiAgICAgLCBtX2NvbnRhaW5zUmV2ZXJz
ZWRUZXh0KGZhbHNlKQogICAgICwgbV9pc0FsbEFTQ0lJKHRleHQuY29udGFpbnNPbmx5QVNDSUko
KSkKICAgICAsIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxsYmFja0ZvbnRzKGZhbHNl
KQotICAgICwgbV9uZWVkc1RyYW5zY29kaW5nKGZhbHNlKQorICAgICwgbV91c2VCYWNrc2xhc2hB
c1llblN5bWJvbChmYWxzZSkKICNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKICAgICAs
IG1fY2FuZGlkYXRlQ29tcHV0ZWRUZXh0U2l6ZSgwKQogI2VuZGlmCkBAIC0yMDAsMTAgKzE5OSwx
NyBAQCBib29sIFJlbmRlclRleHQ6OmlzVGV4dEZyYWdtZW50KCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6dXBkYXRlTmVlZHNUcmFuc2NvZGluZygpCiti
b29sIFJlbmRlclRleHQ6OmNvbXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0CiB7
CisgICAgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24gPSBzdHlsZSgpLT5m
b250KCkuZm9udERlc2NyaXB0aW9uKCk7CisgICAgaWYgKHN0eWxlKCktPmZvbnQoKS51c2VCYWNr
c2xhc2hBc1llblN5bWJvbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZm9udERl
c2NyaXB0aW9uLmlzU3BlY2lmaWVkRm9udCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Y29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZyA9IGRvY3VtZW50KCkuZGVjb2RlcigpID8gJmRv
Y3VtZW50KCkuZGVjb2RlcigpLT5lbmNvZGluZygpIDogMDsKLSAgICBtX25lZWRzVHJhbnNjb2Rp
bmcgPSBmb250VHJhbnNjb2RlcigpLm5lZWRzVHJhbnNjb2Rpbmcoc3R5bGUoKS0+Zm9udCgpLmZv
bnREZXNjcmlwdGlvbigpLCBlbmNvZGluZyk7CisgICAgaWYgKGVuY29kaW5nICYmIGVuY29kaW5n
LT5iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKCkgIT0gJ1xcJykKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCkBA
IC0yMjAsMTAgKzIyNiwxMCBAQCB2b2lkIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmCiAgICAgUmVuZGVyU3R5bGUqIG5ld1N0eWxlID0gc3R5bGUoKTsKICAgICBib29sIG5lZWRz
UmVzZXRUZXh0ID0gZmFsc2U7CiAgICAgaWYgKCFvbGRTdHlsZSkgewotICAgICAgICB1cGRhdGVO
ZWVkc1RyYW5zY29kaW5nKCk7Ci0gICAgICAgIG5lZWRzUmVzZXRUZXh0ID0gbV9uZWVkc1RyYW5z
Y29kaW5nOwotICAgIH0gZWxzZSBpZiAob2xkU3R5bGUtPmZvbnQoKS5uZWVkc1RyYW5zY29kaW5n
KCkgIT0gbmV3U3R5bGUtPmZvbnQoKS5uZWVkc1RyYW5zY29kaW5nKCkgfHwgKG5ld1N0eWxlLT5m
b250KCkubmVlZHNUcmFuc2NvZGluZygpICYmIG9sZFN0eWxlLT5mb250KCkuZmlyc3RGYW1pbHko
KSAhPSBuZXdTdHlsZS0+Zm9udCgpLmZpcnN0RmFtaWx5KCkpKSB7Ci0gICAgICAgIHVwZGF0ZU5l
ZWRzVHJhbnNjb2RpbmcoKTsKKyAgICAgICAgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCA9IGNv
bXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCgpOworICAgICAgICBuZWVkc1Jlc2V0VGV4dCA9
IG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2w7CisgICAgfSBlbHNlIGlmIChvbGRTdHlsZS0+Zm9u
dCgpLnVzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKCkgIT0gbmV3U3R5bGUtPmZvbnQoKS51c2VCYWNr
c2xhc2hBc1llblN5bWJvbCgpKSB7CisgICAgICAgIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wg
PSBjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKTsKICAgICAgICAgbmVlZHNSZXNldFRl
eHQgPSB0cnVlOwogICAgIH0KIApAQCAtMTMzNywxMCArMTM0MywxMCBAQCB2b2lkIFJlbmRlclRl
eHQ6OnNldFRleHRJbnRlcm5hbChjb25zdCBTCiB7CiAgICAgQVNTRVJUKCF0ZXh0LmlzTnVsbCgp
KTsKICAgICBtX3RleHQgPSB0ZXh0OwotICAgIGlmIChtX25lZWRzVHJhbnNjb2RpbmcpIHsKLSAg
ICAgICAgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZyA9IGRvY3VtZW50KCkuZGVjb2Rlcigp
ID8gJmRvY3VtZW50KCkuZGVjb2RlcigpLT5lbmNvZGluZygpIDogMDsKLSAgICAgICAgZm9udFRy
YW5zY29kZXIoKS5jb252ZXJ0KG1fdGV4dCwgc3R5bGUoKS0+Zm9udCgpLmZvbnREZXNjcmlwdGlv
bigpLCBlbmNvZGluZyk7Ci0gICAgfQorCisgICAgaWYgKG1fdXNlQmFja3NsYXNoQXNZZW5TeW1i
b2wpCisgICAgICAgIG1fdGV4dC5yZXBsYWNlKCdcXCcsIHllblNpZ24pOworCiAgICAgQVNTRVJU
KG1fdGV4dCk7CiAKICAgICBpZiAoc3R5bGUoKSkgewpAQCAtMTQwNSwxNCArMTQxMSwxMSBAQCB2
b2lkIFJlbmRlclRleHQ6OnNldFRleHQoY29uc3QgU3RyaW5nJiB0CiAgICAgICAgIGNhY2hlLT50
ZXh0Q2hhbmdlZCh0aGlzKTsKIH0KIAotU3RyaW5nIFJlbmRlclRleHQ6OnRleHRXaXRob3V0VHJh
bnNjb2RpbmcoKSBjb25zdAorU3RyaW5nIFJlbmRlclRleHQ6OnRleHRXaXRob3V0Q29udmVydGlu
Z0JhY2tzbGFzaFRvWWVuU3ltYm9sKCkgY29uc3QKIHsKLSAgICAvLyBJZiBtX3RleHQgaXNuJ3Qg
dHJhbnNjb2RlZCBvciBpcyBzZWN1cmUsIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgbW9kaWZpZWQg
dGV4dC4KLSAgICBpZiAoIW1fbmVlZHNUcmFuc2NvZGluZyB8fCBzdHlsZSgpLT50ZXh0U2VjdXJp
dHkoKSAhPSBUU05PTkUpCisgICAgaWYgKCFtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sIHx8IHN0
eWxlKCktPnRleHRTZWN1cml0eSgpICE9IFRTTk9ORSkKICAgICAgICAgcmV0dXJuIHRleHQoKTsK
IAotICAgIC8vIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHVzZSBvcmlnaW5hbCB0ZXh0LiBJZiB0ZXh0
LXRyYW5zZm9ybSBpcwotICAgIC8vIHNwZWNpZmllZCwgd2Ugc2hvdWxkIHRyYW5zZm9ybSB0aGUg
dGV4dCBvbiB0aGUgZmx5LgogICAgIFN0cmluZyB0ZXh0ID0gb3JpZ2luYWxUZXh0KCk7CiAgICAg
YXBwbHlUZXh0VHJhbnNmb3JtKHN0eWxlKCksIHRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKCkpOwog
ICAgIHJldHVybiB0ZXh0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
CShyZXZpc2lvbiAxNTY2MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVRleHRCb3goSW5saW5lVGV4dEJveCopOwogCiAgICAgU3RyaW5nSW1wbCogdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCk7IH0KLSAgICBTdHJpbmcgdGV4dFdpdGhvdXRUcmFu
c2NvZGluZygpIGNvbnN0OworICAgIFN0cmluZyB0ZXh0V2l0aG91dENvbnZlcnRpbmdCYWNrc2xh
c2hUb1llblN5bWJvbCgpIGNvbnN0OwogCiAgICAgSW5saW5lVGV4dEJveCogY3JlYXRlSW5saW5l
VGV4dEJveCgpOwogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsKQEAg
LTE3OSw3ICsxNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY29udGFpbnNPbmx5V2hpdGVzcGFj
ZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4pIGNvbnN0OwogICAgIGZsb2F0IHdpZHRoRnJv
bUNhY2hlKGNvbnN0IEZvbnQmLCBpbnQgc3RhcnQsIGludCBsZW4sIGZsb2F0IHhQb3MsIEhhc2hT
ZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyop
IGNvbnN0OwogICAgIGJvb2wgaXNBbGxBU0NJSSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxBU0NJ
STsgfQotICAgIHZvaWQgdXBkYXRlTmVlZHNUcmFuc2NvZGluZygpOworICAgIGJvb2wgY29tcHV0
ZVVzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlY3VyZVRleHQo
VUNoYXIgbWFzayk7CiAKQEAgLTE5OSw3ICsxOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
c0FsbEFTQ0lJIDogMTsKICAgICBib29sIG1fY2FuVXNlU2ltcGxlRm9udENvZGVQYXRoIDogMTsK
ICAgICBtdXRhYmxlIGJvb2wgbV9rbm93blRvSGF2ZU5vT3ZlcmZsb3dBbmROb0ZhbGxiYWNrRm9u
dHMgOiAxOwotICAgIGJvb2wgbV9uZWVkc1RyYW5zY29kaW5nIDogMTsKKyAgICBib29sIG1fdXNl
QmFja3NsYXNoQXNZZW5TeW1ib2wgOiAxOwogICAgIAogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBwYXJ0IG9mIHRo
ZSB0ZXh0IHNpemluZyBzdHJ1Y3R1cmVzIGluIERvY3VtZW50IGluc3RlYWQuIFRoYXQgd291bGQg
c2F2ZSBzb21lIG1lbW9yeS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212961</attachid>
            <date>2013-09-30 01:14:55 -0700</date>
            <delta_ts>2013-09-30 09:07:56 -0700</delta_ts>
            <desc>another</desc>
            <filename>backslash-as-yen-3.patch</filename>
            <type>text/plain</type>
            <size>31831</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEzLTA5LTMwICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRm9udFRyYW5zY29k
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjA4
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
b3Zlcmx5IGdlbmVyaWMgY2xhc3MganVzdCBpbXBsZW1lbnRzIG1hcHBpbmcgb2YgYmFja3NsYXNo
IHRvIHllbiBzeW1ib2wgZm9yIHNvbWUgbGVnYWN5IEphcGFuZXNlIGZvbnRzLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdl
YkNvcmUucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNlQmFja3NsYXNo
QXNZZW5TaWduRm9yRmFtaWx5KToKKyAgICAgICAgCisgICAgICAgICAgICBNb3ZlIHRoZSBmYW1p
bHkgc2V0IHRvIEZvbnQuY3BwLgorCisgICAgICAgIChXZWJDb3JlOjpGb250OjpGb250KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
Ojp1cGRhdGUpOgorICAgICAgICAKKyAgICAgICAgICAgIEtlZXAgdGhlIGNhY2hlZCBib29sZWFu
IHVwIHRvIGRhdGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Ojp1c2VCYWNrc2xhc2hBc1llblN5bWJvbCk6CisgICAgICAgIAor
ICAgICAgICAgICAgVXNlIGRlc2NyaXB0aXZlIG5hbWUgaW5zdGVhZCBvZiB0YWxraW5nIGFib3V0
ICJ0cmFuc2NvZGluZyIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXI6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRy
YW5zY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0OjpSZW5kZXJUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHQ6OmNvbXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCk6CisgICAg
ICAgIAorICAgICAgICAgICAgUmVuYW1lIGZvciBjbGFyaXR5LiAKKyAgICAgICAgICAgIEF2b2lk
IHVubmVjZXNzYXJ5IGhhc2ggbG9va3VwLCBqdXN0IGNoZWNrIHRoZSBjYWNoZWQgYml0IGluIEZv
bnQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnN0eWxlRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OnNldFRleHRJbnRlcm5hbCk6CisgICAgICAgIAor
ICAgICAgICAgICAgIlRyYW5zY29kaW5nIiBoZXJlIHdhcyBqdXN0IGEgc2ltcGxlIGNoYXJhY3Rl
ciByZXBsYWNlbWVudC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6dGV4dFdpdGhv
dXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2wpOgorICAgICAgICAKKyAgICAgICAgICAg
IFJlbmFtZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorCiAyMDEzLTA5
LTMwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAg
R2VuZXJhdGUgdG9DU1NGb29WYWx1ZSBmb3IgQ1NTR3JhZGllbnRWYWx1ZSwgQ1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZSBhbmQgQ1NTUmFkaWFsR3JhZGllbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxNTY2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQCBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL3NxbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dCIK
LSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyIgogICAgICIke1dF
QkNPUkVfRElSfS9wbHVnaW5zIgogICAgICIke1dFQkNPUkVfRElSfS9yZW5kZXJpbmciCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3JlbmRlcmluZy9tYXRobWwiCkBAIC0yMDk1LDggKzIwOTQsNiBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcAogICAg
IHBsYXRmb3JtL3RleHQvVW5pY29kZVJhbmdlLmNwcAogCi0gICAgcGxhdGZvcm0vdGV4dC90cmFu
c2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAotCiAgICAgcGx1Z2lucy9ET01NaW1lVHlwZS5jcHAK
ICAgICBwbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCiAgICAgcGx1Z2lucy9ET01QbHVnaW4u
Y3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTU2NjM3KQorKysgU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDYgQEAg
d2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dCBcCi0JLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2lu
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTU2NjM3KQor
KysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
NTk1Nyw4ICs1OTU3LDYgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2VuY2hhbnQvVGV4dENoZWNrZXJFbmNoYW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvZW5jaGFudC9UZXh0Q2hlY2tlckVuY2hhbnQuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDE1
NjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEx
MDMsNyArMTEwMyw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL1RocmVhZFRpbWVycy5j
cHAgXAogICAgIHBsYXRmb3JtL1RpbWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9Vbmljb2Rl
UmFuZ2UuY3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIu
Y3BwIFwKICAgICBwbGF0Zm9ybS9VVUlELmNwcCBcCiAgICAgcGxhdGZvcm0vV2lkZ2V0LmNwcCBc
CiAgICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBcCkBAIC0yMzQyLDcgKzIzNDEs
NiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5
LmggXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1VuaWNvZGVSYW5nZS5oIFwKLSAgICBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5z
Y29kZXIuaCBcCiAgICAgcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIFwKICAgICBwbGF0Zm9y
bS9UaHJlYWRUaW1lcnMuaCBcCiAgICAgcGxhdGZvcm0vVGltZXIuaCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnByaQkocmV2aXNpb24gMTU2NjM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDYgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09V
UkNFX0RJUi9wbGF0Zm9ybS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL3NxbCBcCiAg
ICAgJCRTT1VSQ0VfRElSL3BsYXRmb3JtL3RleHQgXAotICAgICQkU09VUkNFX0RJUi9wbGF0Zm9y
bS90ZXh0L3RyYW5zY29kZXIgXAogICAgICQkU09VUkNFX0RJUi9wbHVnaW5zIFwKICAgICAkJFNP
VVJDRV9ESVIvcmVuZGVyaW5nIFwKICAgICAkJFNPVVJDRV9ESVIvcmVuZGVyaW5nL21hdGhtbCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oJKHJldmlzaW9uIDE1NjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTg1MDMsNyArODUwMyw2IEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVx0ZXh0XGNmXFN0cmluZ0NGLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRcY2ZcU3RyaW5nSW1wbENG
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHRleHRcd2luXFRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VXaW4uY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyXEZvbnRUcmFuc2NvZGVyLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXEltYWdl
RGVjb2Rlci5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgpAQCAtMTk1NDIsNyArMTk1NDEsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcV2lkdGhDYWNoZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcV2lkdGhJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFxXcml0aW5nTW9kZS5oIiAvPgotICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyXEZvbnRUcmFuc2NvZGVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xJ
bWFnZURlY29kZXIuaCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTY2MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ2ODQsOCArNDY4NCw2
IEBACiAJCUI2RDlEMjdCMTRFQUMwODYwMDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI2RDlEMjc5MTRFQUMwODYw
MDkwRDc1RSAvKiBKU0ZvY3VzRXZlbnQuaCAqLzsgfTsKIAkJQjZEOUQyN0MxNEVBQzA4NjAwOTBE
NzVFIC8qIEpTRm9jdXNFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNkQ5RDI3QTE0RUFDMDg2MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNw
cCAqLzsgfTsKIAkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFByaW50Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc3NkQ0M0ExMTA0
NTI1RDAwQkVCMEVDIC8qIFByaW50Q29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUI3MzRCMTgxMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250
VHJhbnNjb2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNzM0QjE4MDExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwICovOyB9
OwotCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MzRCMTgyMTE5Qjk5MUQw
MDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5oICovOyB9OwogCQlCNzc2RDQzRDExMDQ1Mjc1MDBC
RUIwRUMgLyogUHJpbnRDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQu
Y3BwICovOyB9OwogCQlCODg1RThENDExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI4ODVFOEQyMTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuY3BwICovOyB9OwogCQlCODg1RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCODg1RThEMzExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9y
QXBwbGljYXRpb25DYWNoZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsg
fTsgfTsKQEAgLTExNTYwLDggKzExNTU4LDYgQEAKIAkJQjZEOUQyNzIxNEVBQkYwMzAwOTBENzVF
IC8qIEZvY3VzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZvY3VzRXZlbnQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNkQ5RDI3OTE0RUFDMDg2MDA5MEQ3NUUg
LyogSlNGb2N1c0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRm9j
dXNFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNkQ5RDI3QTE0RUFDMDg2
MDA5MEQ3NUUgLyogSlNGb2N1c0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRm9jdXNFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb250VHJhbnNjb2Rlci5jcHA7IHBhdGggPSB0
cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvbnRUcmFuc2NvZGVyLmg7IHBhdGggPSB0cmFuc2Nv
ZGVyL0ZvbnRUcmFuc2NvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI3NzZE
NDNBMTEwNDUyNUQwMEJFQjBFQyAvKiBQcmludENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpbnRDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUI3NzZENDNDMTEwNDUyNzUwMEJFQjBFQyAvKiBQcmludENvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRDb250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTkwOTcsNyArMTkwOTMsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJQjJCMjY0NTkwRDAwQTc3RTAwMEFDQzFEIC8qIGNmICovLAogCQkJCUIyQzNEOUY5MEQwMDZD
MUQwMEVGNkYyNiAvKiBtYWMgKi8sCi0JCQkJQjczNEIxN0YxMTlCOThEQjAwNjU4N0JEIC8qIHRy
YW5zY29kZXIgKi8sCiAJCQkJMzdDNjFGMDAxMjA5NUM4NzAwN0EzQzY3IC8qIEF0b21pY1N0cmlu
Z0tleWVkTVJVQ2FjaGUuaCAqLywKIAkJCQlCMkMzRDlGMjBEMDA2QzFEMDBFRjZGMjYgLyogQmlk
aUNvbnRleHQuY3BwICovLAogCQkJCUIyQzNEOUYzMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29u
dGV4dC5oICovLApAQCAtMTkyMjksMTUgKzE5MjI0LDYgQEAKIAkJCW5hbWUgPSBnZW5lcmljOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQjczNEIxN0YxMTlCOThEQjAwNjU4
N0JEIC8qIHRyYW5zY29kZXIgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCUI3MzRCMTgwMTE5Qjk5MTEwMDY1ODdCRCAvKiBGb250VHJhbnNjb2Rlci5jcHAg
Ki8sCi0JCQkJQjczNEIxODIxMTlCOTkxRDAwNjU4N0JEIC8qIEZvbnRUcmFuc2NvZGVyLmggKi8s
Ci0JCQkpOwotCQkJbmFtZSA9IHRyYW5zY29kZXI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwotCQl9OwogCQlCQzFBMzc5MDA5N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjI1MzQsNyArMjI1MjAsNiBA
QAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTM3MjAyMTk5MTA2MjEzQzYwMEYyNUM0QiAvKiBGb250U21vb3RoaW5nTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4NEMzNEIwRTExQUEzNDAwN0Q4RDQ4IC8qIEZvbnRU
cmFpdHNNYXNrLmggaW4gSGVhZGVycyAqLywKLQkJCQlCNzM0QjE4MzExOUI5OTFEMDA2NTg3QkQg
LyogRm9udFRyYW5zY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0VEMEExOTg5Q0Ew
MDdGQjhDNSAvKiBGb250VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ0MTM2MTJGNzQ5
MEIwMDlCODRCOCAvKiBGb250V2lkdGhWYXJpYW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTBE
QTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1ODEwLDcgKzI1Nzk1LDYgQEAKIAkJCQlCMkFGRkM4MDBEMDBBNUMxMDAzMDA3
NEQgLyogRm9udE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg0QjYyNjg1MTMzMTM4RjkwMDk1
QTQ4OSAvKiBGb250UGxhdGZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MzIwRDZD
MTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhQ29jb2EubW0gaW4gU291cmNlcyAq
LywKLQkJCQlCNzM0QjE4MTExOUI5OTExMDA2NTg3QkQgLyogRm9udFRyYW5zY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjEwQTE5ODlDQTAwN0ZCOEM1IC8qIEZvbnRWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0QTBEQTJGRTEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQwNUNFRDI5MEE0MEJCMkMw
MEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE1NjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNzIsNyArMzM3Miw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpw
YXNzd28KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgLy8gUmV0dXJuIHRoZSB0ZXh0
IHRoYXQgaXMgYWN0dWFsbHkgYmVpbmcgcmVuZGVyZWQgaW4gdGhlIGlucHV0IGZpZWxkLgotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Kj4ocmVuZGVyZXIpLT50ZXh0V2l0aG91dFRy
YW5zY29kaW5nKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclRleHQqPihyZW5kZXJl
ciktPnRleHRXaXRob3V0Q29udmVydGluZ0JhY2tzbGFzaFRvWWVuU3ltYm9sKCk7CiAjZWxzZQog
ICAgIC8vIEl0IHNlZW1zIG9ubHkgR1RLIGlzIGludGVyZXN0ZWQgaW4gdGhpcyBhdCB0aGUgbW9t
ZW50LgogICAgIHJldHVybiBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDE1NjYzNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYwogdm9pZCBUZXh0SXRlcmF0
b3I6OmVtaXRUZXh0KE5vZGUqIHRleHROb2RlLCBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwg
aW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCiB7CiAgICAgUmVuZGVyVGV4
dCogcmVuZGVyZXIgPSB0b1JlbmRlclRleHQocmVuZGVyT2JqZWN0KTsKLSAgICBtX3RleHQgPSBt
X2VtaXRzT3JpZ2luYWxUZXh0ID8gcmVuZGVyZXItPm9yaWdpbmFsVGV4dCgpIDogKG1fZW1pdHNU
ZXh0V2l0aG91dFRyYW5zY29kaW5nID8gcmVuZGVyZXItPnRleHRXaXRob3V0VHJhbnNjb2Rpbmco
KSA6IHJlbmRlcmVyLT50ZXh0KCkpOworICAgIG1fdGV4dCA9IG1fZW1pdHNPcmlnaW5hbFRleHQg
PyByZW5kZXJlci0+b3JpZ2luYWxUZXh0KCkgOiAobV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2Rp
bmcgPyByZW5kZXJlci0+dGV4dFdpdGhvdXRDb252ZXJ0aW5nQmFja3NsYXNoVG9ZZW5TeW1ib2wo
KSA6IHJlbmRlcmVyLT50ZXh0KCkpOwogICAgIEFTU0VSVCghbV90ZXh0LmlzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKDAgPD0gdGV4dFN0YXJ0T2Zmc2V0ICYmIHRleHRTdGFydE9mZnNldCA8IHN0YXRp
Y19jYXN0PGludD4obV90ZXh0Lmxlbmd0aCgpKSk7CiAgICAgQVNTRVJUKDAgPD0gdGV4dEVuZE9m
ZnNldCAmJiB0ZXh0RW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PGludD4obV90ZXh0Lmxlbmd0aCgp
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAkocmV2
aXNpb24gMTU2NjM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCi0jaW5jbHVkZSAiRm9udFRyYW5zY29kZXIu
aCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldpZHRoSXRlcmF0b3IuaCIKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTYxLDYgKzYxLDM2IEBAIGNvbnN0
IHVpbnQ4X3QgRm9udDo6c19yb3VuZGluZ0hhY2tDaGFyYWMKICAgICAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCitzdGF0aWMgYm9vbCB1c2VCYWNrc2xhc2hBc1ll
blNpZ25Gb3JGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCit7CisgICAgaWYgKGZh
bWlseS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBzdGF0aWMgSGFzaFNl
dDxBdG9taWNTdHJpbmc+KiBzZXQ7CisgICAgaWYgKCFzZXQpIHsKKyAgICAgICAgc2V0ID0gbmV3
IEhhc2hTZXQ8QXRvbWljU3RyaW5nPjsKKyAgICAgICAgc2V0LT5hZGQoIk1TIFBHb3RoaWMiKTsK
KyAgICAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywg
MHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07CisgICAgICAg
IHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TUEdvdGhpYywgV1RGX0FSUkFZX0xF
TkdUSCh1bmljb2RlTmFtZU1TUEdvdGhpYykpKTsKKworICAgICAgICBzZXQtPmFkZCgiTVMgUE1p
bmNobyIpOworICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TUE1pbmNob1tdID0gezB4RkYyRCwg
MHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBFLCAweDY3MUR9OworICAgICAgICBzZXQtPmFk
ZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIFdURl9BUlJBWV9MRU5HVEgodW5p
Y29kZU5hbWVNU1BNaW5jaG8pKSk7CisKKyAgICAgICAgc2V0LT5hZGQoIk1TIEdvdGhpYyIpOwor
ICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1TR290aGljW10gPSB7MHhGRjJELCAweEZGMzMsIDB4
MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKKyAgICAgICAgc2V0LT5hZGQo
QXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNHb3RoaWMsIFdURl9BUlJBWV9MRU5HVEgodW5pY29k
ZU5hbWVNU0dvdGhpYykpKTsKKworICAgICAgICBzZXQtPmFkZCgiTVMgTWluY2hvIik7CisgICAg
ICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIw
LCAweDY2MEUsIDB4NjcxRH07CisgICAgICAgIHNldC0+YWRkKEF0b21pY1N0cmluZyh1bmljb2Rl
TmFtZU1TTWluY2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNNaW5jaG8pKSk7CisK
KyAgICAgICAgc2V0LT5hZGQoIk1laXJ5byIpOworICAgICAgICBVQ2hhciB1bmljb2RlTmFtZU1l
aXJ5b1tdID0gezB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQX07CisgICAgICAgIHNldC0+
YWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1laXJ5bywgV1RGX0FSUkFZX0xFTkdUSCh1bmlj
b2RlTmFtZU1laXJ5bykpKTsKKyAgICB9CisgICAgcmV0dXJuIHNldC0+Y29udGFpbnMoZmFtaWx5
KTsKK30KKwogRm9udDo6Q29kZVBhdGggRm9udDo6c19jb2RlUGF0aCA9IEF1dG87CiAKIFR5cGVz
ZXR0aW5nRmVhdHVyZXMgRm9udDo6c19kZWZhdWx0VHlwZXNldHRpbmdGZWF0dXJlcyA9IDA7CkBA
IC03Miw3ICsxMDIsNyBAQCBUeXBlc2V0dGluZ0ZlYXR1cmVzIEZvbnQ6OnNfZGVmYXVsdFR5cGVz
CiBGb250OjpGb250KCkKICAgICA6IG1fbGV0dGVyU3BhY2luZygwKQogICAgICwgbV93b3JkU3Bh
Y2luZygwKQotICAgICwgbV9uZWVkc1RyYW5zY29kaW5nKGZhbHNlKQorICAgICwgbV91c2VCYWNr
c2xhc2hBc1llblN5bWJvbChmYWxzZSkKICAgICAsIG1fdHlwZXNldHRpbmdGZWF0dXJlcygwKQog
ewogfQpAQCAtODEsNyArMTExLDcgQEAgRm9udDo6Rm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
IGZkLCBzaAogICAgIDogbV9mb250RGVzY3JpcHRpb24oZmQpCiAgICAgLCBtX2xldHRlclNwYWNp
bmcobGV0dGVyU3BhY2luZykKICAgICAsIG1fd29yZFNwYWNpbmcod29yZFNwYWNpbmcpCi0gICAg
LCBtX25lZWRzVHJhbnNjb2RpbmcoZm9udFRyYW5zY29kZXIoKS5uZWVkc1RyYW5zY29kaW5nKGZk
KSkKKyAgICAsIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2wodXNlQmFja3NsYXNoQXNZZW5TaWdu
Rm9yRmFtaWx5KGZkLmZpcnN0RmFtaWx5KCkpKQogICAgICwgbV90eXBlc2V0dGluZ0ZlYXR1cmVz
KGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCkpCiB7CiB9CkBAIC05MCwxMSArMTIwLDExIEBA
IEZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgZm9udEQKICAgICA6IG1fZ2x5cGhz
KEZvbnRHbHlwaHM6OmNyZWF0ZUZvclBsYXRmb3JtRm9udChmb250RGF0YSkpCiAgICAgLCBtX2xl
dHRlclNwYWNpbmcoMCkKICAgICAsIG1fd29yZFNwYWNpbmcoMCkKKyAgICAsIG1fdXNlQmFja3Ns
YXNoQXNZZW5TeW1ib2woZmFsc2UpCiAgICAgLCBtX3R5cGVzZXR0aW5nRmVhdHVyZXMoY29tcHV0
ZVR5cGVzZXR0aW5nRmVhdHVyZXMoKSkKIHsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRVc2VQ
cmludGVyRm9udChpc1ByaW50ZXJGb250KTsKICAgICBtX2ZvbnREZXNjcmlwdGlvbi5zZXRGb250
U21vb3RoaW5nKGZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBtX25lZWRzVHJhbnNjb2RpbmcgPSBm
b250VHJhbnNjb2RlcigpLm5lZWRzVHJhbnNjb2RpbmcoZm9udERlc2NyaXB0aW9uKCkpOwogfQog
CiBGb250OjpGb250KGNvbnN0IEZvbnQmIG90aGVyKQpAQCAtMTAyLDcgKzEzMiw3IEBAIEZvbnQ6
OkZvbnQoY29uc3QgRm9udCYgb3RoZXIpCiAgICAgLCBtX2dseXBocyhvdGhlci5tX2dseXBocykK
ICAgICAsIG1fbGV0dGVyU3BhY2luZyhvdGhlci5tX2xldHRlclNwYWNpbmcpCiAgICAgLCBtX3dv
cmRTcGFjaW5nKG90aGVyLm1fd29yZFNwYWNpbmcpCi0gICAgLCBtX25lZWRzVHJhbnNjb2Rpbmco
b3RoZXIubV9uZWVkc1RyYW5zY29kaW5nKQorICAgICwgbV91c2VCYWNrc2xhc2hBc1llblN5bWJv
bChvdGhlci5tX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKQogICAgICwgbV90eXBlc2V0dGluZ0Zl
YXR1cmVzKGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCkpCiB7CiB9CkBAIC0xMTMsNyArMTQz
LDcgQEAgRm9udCYgRm9udDo6b3BlcmF0b3I9KGNvbnN0IEZvbnQmIG90aGVyKQogICAgIG1fZ2x5
cGhzID0gb3RoZXIubV9nbHlwaHM7CiAgICAgbV9sZXR0ZXJTcGFjaW5nID0gb3RoZXIubV9sZXR0
ZXJTcGFjaW5nOwogICAgIG1fd29yZFNwYWNpbmcgPSBvdGhlci5tX3dvcmRTcGFjaW5nOwotICAg
IG1fbmVlZHNUcmFuc2NvZGluZyA9IG90aGVyLm1fbmVlZHNUcmFuc2NvZGluZzsKKyAgICBtX3Vz
ZUJhY2tzbGFzaEFzWWVuU3ltYm9sID0gb3RoZXIubV91c2VCYWNrc2xhc2hBc1llblN5bWJvbDsK
ICAgICBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgPSBvdGhlci5tX3R5cGVzZXR0aW5nRmVhdHVyZXM7
CiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtMjU4LDYgKzI4OCw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPEZvbnRHbHlwaHM+IHJldHJpZXZlT3IKIHZvaWQgRm9udDo6dXBkYXRlKFBhc3NSZWZQdHI8
Rm9udFNlbGVjdG9yPiBmb250U2VsZWN0b3IpIGNvbnN0CiB7CiAgICAgbV9nbHlwaHMgPSByZXRy
aWV2ZU9yQWRkQ2FjaGVkRm9udEdseXBocyhtX2ZvbnREZXNjcmlwdGlvbiwgZm9udFNlbGVjdG9y
LmdldCgpKTsKKyAgICBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sID0gdXNlQmFja3NsYXNoQXNZ
ZW5TaWduRm9yRmFtaWx5KGZpcnN0RmFtaWx5KCkpOwogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJl
cyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgJKHJldmlzaW9uIDE1NjYzNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcg
KzI1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZVNwYWNlcyhjb25z
dCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFN0cmluZyBub3JtYWxpemVT
cGFjZXMoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogCi0gICAgYm9vbCBuZWVkc1Ry
YW5zY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1RyYW5zY29kaW5nOyB9CisgICAgYm9v
bCB1c2VCYWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlQmFja3NsYXNo
QXNZZW5TeW1ib2w7IH0KICAgICBGb250R2x5cGhzKiBnbHlwaHMoKSBjb25zdCB7IHJldHVybiBt
X2dseXBocy5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBSZWZQdHI8Rm9udEdseXBocz4gbV9nbHlwaHM7CiAgICAgc2hvcnQgbV9s
ZXR0ZXJTcGFjaW5nOwogICAgIHNob3J0IG1fd29yZFNwYWNpbmc7Ci0gICAgYm9vbCBtX25lZWRz
VHJhbnNjb2Rpbmc7CisgICAgbXV0YWJsZSBib29sIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1ib2w7
CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgOiAyOyAvLyAoVHlw
ZXNldHRpbmdGZWF0dXJlcykgQ2FjaGVzIHZhbHVlcyBjb21wdXRlZCBmcm9tIG1fZm9udERlc2Ny
aXB0aW9uLgogfTsKCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29k
ZXIvRm9udFRyYW5zY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5jcHAJKHJldmlzaW9uIDE1NjYzNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkZvbnRUcmFuc2NvZGVyLmgiCi0KLSNpbmNsdWRlICJGb250RGVzY3JpcHRp
b24uaCIKLSNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZvbnRUcmFuc2NvZGVy
OjpGb250VHJhbnNjb2RlcigpCi17Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoIk1TIFBHb3Ro
aWMiLCBCYWNrc2xhc2hUb1llblNpZ24pOwotICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQR290aGlj
W10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDMwQjQsIDB4MzBCNywgMHgz
MEMzLCAweDMwQUZ9OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmlj
b2RlTmFtZU1TUEdvdGhpYywgV1RGX0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1TUEdvdGhpYykp
LCBCYWNrc2xhc2hUb1llblNpZ24pOwotCi0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoIk1TIFBN
aW5jaG8iLCBCYWNrc2xhc2hUb1llblNpZ24pOwotICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNQTWlu
Y2hvW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHhGRjMwLCAweDY2MEUsIDB4NjcxRH07
Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQTWlu
Y2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNQTWluY2hvKSksIEJhY2tzbGFzaFRv
WWVuU2lnbik7Ci0KLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgR290aGljIiwgQmFja3Ns
YXNoVG9ZZW5TaWduKTsKLSAgICBVQ2hhciB1bmljb2RlTmFtZU1TR290aGljW10gPSB7MHhGRjJE
LCAweEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4MzBDMywgMHgzMEFGfTsKLSAgICBt
X2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU0dvdGhpYywgV1RG
X0FSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1TR290aGljKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7
Ci0KLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgTWluY2hvIiwgQmFja3NsYXNoVG9ZZW5T
aWduKTsKLSAgICBVQ2hhciB1bmljb2RlTmFtZU1TTWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMs
IDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21p
Y1N0cmluZyh1bmljb2RlTmFtZU1TTWluY2hvLCBXVEZfQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1l
TVNNaW5jaG8pKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLQotICAgIG1fY29udmVydGVyVHlwZXMu
YWRkKCJNZWlyeW8iLCBCYWNrc2xhc2hUb1llblNpZ24pOwotICAgIFVDaGFyIHVuaWNvZGVOYW1l
TWVpcnlvW10gPSB7MHgzMEUxLCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBfTsKLSAgICBtX2NvbnZl
cnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8sIFdURl9BUlJBWV9M
RU5HVEgodW5pY29kZU5hbWVNZWlyeW8pKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKLX0KLQotRm9u
dFRyYW5zY29kZXI6OkNvbnZlcnRlclR5cGUgRm9udFRyYW5zY29kZXI6OmNvbnZlcnRlclR5cGUo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IFRleHRFbmNvZGlu
ZyogZW5jb2RpbmcpIGNvbnN0Ci17Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb250RmFtaWx5
ID0gZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7Ci0gICAgaWYgKCFmb250RmFtaWx5Lmlz
TnVsbCgpKSB7Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDb252ZXJ0ZXJUeXBlPjo6
Y29uc3RfaXRlcmF0b3IgZm91bmQgPSBtX2NvbnZlcnRlclR5cGVzLmZpbmQoZm9udEZhbWlseSk7
Ci0gICAgICAgIGlmIChmb3VuZCAhPSBtX2NvbnZlcnRlclR5cGVzLmVuZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZvdW5kLT52YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBJRSdzIGRlZmF1bHQgZm9u
dHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncyBjaGFuZ2UgYmFja3NsYXNoZXMgaW50byB5ZW4gc2ln
bnMuCi0gICAgLy8gV2UgZW11bGF0ZSB0aGlzIGJlaGF2aW9yIG9ubHkgd2hlbiBubyBmb250IGlz
IGV4cGxpY2l0bHkgc3BlY2lmaWVkLgotICAgIGlmIChlbmNvZGluZyAmJiBlbmNvZGluZy0+YmFj
a3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpICE9ICdcXCcgJiYgIWZvbnREZXNjcmlwdGlvbi5pc1Nw
ZWNpZmllZEZvbnQoKSkKLSAgICAgICAgcmV0dXJuIEJhY2tzbGFzaFRvWWVuU2lnbjsKLQotICAg
IHJldHVybiBOb0NvbnZlcnNpb247Ci19Ci0KLXZvaWQgRm9udFRyYW5zY29kZXI6OmNvbnZlcnQo
U3RyaW5nJiB0ZXh0LCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29u
c3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZykgY29uc3QKLXsKLSAgICBzd2l0Y2ggKGNvbnZlcnRl
clR5cGUoZm9udERlc2NyaXB0aW9uLCBlbmNvZGluZykpIHsKLSAgICBjYXNlIEJhY2tzbGFzaFRv
WWVuU2lnbjogewotICAgICAgICAvLyBGSVhNRTogVGV4dEVuY29kaW5nLmggaGFzIHNpbWlsYXIg
Y29kZS4gV2UgbmVlZCB0byBmYWN0b3IgdGhlbSBvdXQuCi0gICAgICAgIHRleHQucmVwbGFjZSgn
XFwnLCB5ZW5TaWduKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgTm9Db252ZXJz
aW9uOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LX0KLQotYm9vbCBGb250VHJhbnNjb2Rlcjo6bmVlZHNUcmFuc2NvZGluZyhjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZykg
Y29uc3QKLXsKLSAgICBDb252ZXJ0ZXJUeXBlIHR5cGUgPSBjb252ZXJ0ZXJUeXBlKGZvbnREZXNj
cmlwdGlvbiwgZW5jb2RpbmcpOwotICAgIHJldHVybiB0eXBlICE9IE5vQ29udmVyc2lvbjsKLX0K
LQotRm9udFRyYW5zY29kZXImIGZvbnRUcmFuc2NvZGVyKCkKLXsKLSAgICBzdGF0aWMgRm9udFRy
YW5zY29kZXIqIHRyYW5zY29kZXIgPSBuZXcgRm9udFRyYW5zY29kZXI7Ci0gICAgcmV0dXJuICp0
cmFuc2NvZGVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29k
ZXIuaAkocmV2aXNpb24gMTU2NjM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90
cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIEZvbnRUcmFuc2NvZGVyX2gKLSNkZWZpbmUgRm9udFRyYW5zY29kZXJfaAotCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgRm9udERlc2NyaXB0aW9uOwotY2xhc3MgVGV4dEVuY29kaW5nOwotCi1jbGFz
cyBGb250VHJhbnNjb2RlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRm9udFRyYW5zY29k
ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICB2b2lkIGNvbnZlcnQo
U3RyaW5nJiB0ZXh0LCBjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBUZXh0RW5jb2Rpbmcq
ID0gMCkgY29uc3Q7Ci0gICAgYm9vbCBuZWVkc1RyYW5zY29kaW5nKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYsIGNvbnN0IFRleHRFbmNvZGluZyogPSAwKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBG
b250VHJhbnNjb2RlcigpOwotICAgIH5Gb250VHJhbnNjb2RlcigpOyAvLyBOb3QgaW1wbGVtZW50
ZWQgdG8gbWFrZSBzdXJlIG5vYm9keSBhY2NpZGVudGFsbHkgY2FsbHMgZGVsZXRlIC0tIFdlYkNv
cmUgZG9lcyBub3QgZGVsZXRlIHNpbmdsZXRvbnMuCi0KLSAgICBlbnVtIENvbnZlcnRlclR5cGUg
ewotICAgICAgICBOb0NvbnZlcnNpb24sIEJhY2tzbGFzaFRvWWVuU2lnbiwKLSAgICB9OwotCi0g
ICAgQ29udmVydGVyVHlwZSBjb252ZXJ0ZXJUeXBlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNv
bnN0IFRleHRFbmNvZGluZyopIGNvbnN0OwotCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENv
bnZlcnRlclR5cGU+IG1fY29udmVydGVyVHlwZXM7Ci0KLSAgICBmcmllbmQgRm9udFRyYW5zY29k
ZXImIGZvbnRUcmFuc2NvZGVyKCk7Ci19OwotCi1Gb250VHJhbnNjb2RlciYgZm9udFRyYW5zY29k
ZXIoKTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRm9udFRyYW5zY29k
ZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNp
b24gMTU2NjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIkVsbGlwc2lzQm94LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0jaW5j
bHVkZSAiRm9udFRyYW5zY29kZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCkBAIC0xNDUsNyArMTQ0LDcgQEAg
UmVuZGVyVGV4dDo6UmVuZGVyVGV4dChUZXh0KiB0ZXh0Tm9kZSwgYwogICAgICwgbV9jb250YWlu
c1JldmVyc2VkVGV4dChmYWxzZSkKICAgICAsIG1faXNBbGxBU0NJSSh0ZXh0LmNvbnRhaW5zT25s
eUFTQ0lJKCkpCiAgICAgLCBtX2tub3duVG9IYXZlTm9PdmVyZmxvd0FuZE5vRmFsbGJhY2tGb250
cyhmYWxzZSkKLSAgICAsIG1fbmVlZHNUcmFuc2NvZGluZyhmYWxzZSkKKyAgICAsIG1fdXNlQmFj
a3NsYXNoQXNZZW5TeW1ib2woZmFsc2UpCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcp
CiAgICAgLCBtX2NhbmRpZGF0ZUNvbXB1dGVkVGV4dFNpemUoMCkKICNlbmRpZgpAQCAtMjAwLDEw
ICsxOTksMTcgQEAgYm9vbCBSZW5kZXJUZXh0Ojppc1RleHRGcmFnbWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRleHQ6OnVwZGF0ZU5lZWRzVHJhbnNjb2Rp
bmcoKQorYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKSBj
b25zdAogeworICAgIGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uID0gc3R5
bGUoKS0+Zm9udCgpLmZvbnREZXNjcmlwdGlvbigpOworICAgIGlmIChzdHlsZSgpLT5mb250KCku
dXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KGZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcgPSBkb2N1bWVudCgpLmRlY29kZXIo
KSA/ICZkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSA6IDA7Ci0gICAgbV9uZWVkc1Ry
YW5zY29kaW5nID0gZm9udFRyYW5zY29kZXIoKS5uZWVkc1RyYW5zY29kaW5nKHN0eWxlKCktPmZv
bnQoKS5mb250RGVzY3JpcHRpb24oKSwgZW5jb2RpbmcpOworICAgIGlmIChlbmNvZGluZyAmJiBl
bmNvZGluZy0+YmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpICE9ICdcXCcpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBSZW5kZXJUZXh0OjpzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQpAQCAtMjIwLDEwICsyMjYsMTAgQEAgdm9pZCBSZW5kZXJUZXh0OjpzdHlsZURpZENoYW5n
ZShTdHlsZURpZgogICAgIFJlbmRlclN0eWxlKiBuZXdTdHlsZSA9IHN0eWxlKCk7CiAgICAgYm9v
bCBuZWVkc1Jlc2V0VGV4dCA9IGZhbHNlOwogICAgIGlmICghb2xkU3R5bGUpIHsKLSAgICAgICAg
dXBkYXRlTmVlZHNUcmFuc2NvZGluZygpOwotICAgICAgICBuZWVkc1Jlc2V0VGV4dCA9IG1fbmVl
ZHNUcmFuc2NvZGluZzsKLSAgICB9IGVsc2UgaWYgKG9sZFN0eWxlLT5mb250KCkubmVlZHNUcmFu
c2NvZGluZygpICE9IG5ld1N0eWxlLT5mb250KCkubmVlZHNUcmFuc2NvZGluZygpIHx8IChuZXdT
dHlsZS0+Zm9udCgpLm5lZWRzVHJhbnNjb2RpbmcoKSAmJiBvbGRTdHlsZS0+Zm9udCgpLmZpcnN0
RmFtaWx5KCkgIT0gbmV3U3R5bGUtPmZvbnQoKS5maXJzdEZhbWlseSgpKSkgewotICAgICAgICB1
cGRhdGVOZWVkc1RyYW5zY29kaW5nKCk7CisgICAgICAgIG1fdXNlQmFja3NsYXNoQXNZZW5TeW1i
b2wgPSBjb21wdXRlVXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKTsKKyAgICAgICAgbmVlZHNSZXNl
dFRleHQgPSBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sOworICAgIH0gZWxzZSBpZiAob2xkU3R5
bGUtPmZvbnQoKS51c2VCYWNrc2xhc2hBc1llblN5bWJvbCgpICE9IG5ld1N0eWxlLT5mb250KCku
dXNlQmFja3NsYXNoQXNZZW5TeW1ib2woKSkgeworICAgICAgICBtX3VzZUJhY2tzbGFzaEFzWWVu
U3ltYm9sID0gY29tcHV0ZVVzZUJhY2tzbGFzaEFzWWVuU3ltYm9sKCk7CiAgICAgICAgIG5lZWRz
UmVzZXRUZXh0ID0gdHJ1ZTsKICAgICB9CiAKQEAgLTEzMzcsMTAgKzEzNDMsMTAgQEAgdm9pZCBS
ZW5kZXJUZXh0OjpzZXRUZXh0SW50ZXJuYWwoY29uc3QgUwogewogICAgIEFTU0VSVCghdGV4dC5p
c051bGwoKSk7CiAgICAgbV90ZXh0ID0gdGV4dDsKLSAgICBpZiAobV9uZWVkc1RyYW5zY29kaW5n
KSB7Ci0gICAgICAgIGNvbnN0IFRleHRFbmNvZGluZyogZW5jb2RpbmcgPSBkb2N1bWVudCgpLmRl
Y29kZXIoKSA/ICZkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSA6IDA7Ci0gICAgICAg
IGZvbnRUcmFuc2NvZGVyKCkuY29udmVydChtX3RleHQsIHN0eWxlKCktPmZvbnQoKS5mb250RGVz
Y3JpcHRpb24oKSwgZW5jb2RpbmcpOwotICAgIH0KKworICAgIGlmIChtX3VzZUJhY2tzbGFzaEFz
WWVuU3ltYm9sKQorICAgICAgICBtX3RleHQucmVwbGFjZSgnXFwnLCB5ZW5TaWduKTsKKwogICAg
IEFTU0VSVChtX3RleHQpOwogCiAgICAgaWYgKHN0eWxlKCkpIHsKQEAgLTE0MDUsMTQgKzE0MTEs
MTEgQEAgdm9pZCBSZW5kZXJUZXh0OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdAogICAgICAgICBj
YWNoZS0+dGV4dENoYW5nZWQodGhpcyk7CiB9CiAKLVN0cmluZyBSZW5kZXJUZXh0Ojp0ZXh0V2l0
aG91dFRyYW5zY29kaW5nKCkgY29uc3QKK1N0cmluZyBSZW5kZXJUZXh0Ojp0ZXh0V2l0aG91dENv
bnZlcnRpbmdCYWNrc2xhc2hUb1llblN5bWJvbCgpIGNvbnN0CiB7Ci0gICAgLy8gSWYgbV90ZXh0
IGlzbid0IHRyYW5zY29kZWQgb3IgaXMgc2VjdXJlLCB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIG1v
ZGlmaWVkIHRleHQuCi0gICAgaWYgKCFtX25lZWRzVHJhbnNjb2RpbmcgfHwgc3R5bGUoKS0+dGV4
dFNlY3VyaXR5KCkgIT0gVFNOT05FKQorICAgIGlmICghbV91c2VCYWNrc2xhc2hBc1llblN5bWJv
bCB8fCBzdHlsZSgpLT50ZXh0U2VjdXJpdHkoKSAhPSBUU05PTkUpCiAgICAgICAgIHJldHVybiB0
ZXh0KCk7CiAKLSAgICAvLyBPdGhlcndpc2UsIHdlIHNob3VsZCB1c2Ugb3JpZ2luYWwgdGV4dC4g
SWYgdGV4dC10cmFuc2Zvcm0gaXMKLSAgICAvLyBzcGVjaWZpZWQsIHdlIHNob3VsZCB0cmFuc2Zv
cm0gdGhlIHRleHQgb24gdGhlIGZseS4KICAgICBTdHJpbmcgdGV4dCA9IG9yaWdpbmFsVGV4dCgp
OwogICAgIGFwcGx5VGV4dFRyYW5zZm9ybShzdHlsZSgpLCB0ZXh0LCBwcmV2aW91c0NoYXJhY3Rl
cigpKTsKICAgICByZXR1cm4gdGV4dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuaAkocmV2aXNpb24gMTU2NjM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZW1vdmVUZXh0Qm94KElubGluZVRleHRCb3gqKTsKIAogICAgIFN0cmluZ0ltcGwqIHRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpOyB9Ci0gICAgU3RyaW5nIHRleHRXaXRo
b3V0VHJhbnNjb2RpbmcoKSBjb25zdDsKKyAgICBTdHJpbmcgdGV4dFdpdGhvdXRDb252ZXJ0aW5n
QmFja3NsYXNoVG9ZZW5TeW1ib2woKSBjb25zdDsKIAogICAgIElubGluZVRleHRCb3gqIGNyZWF0
ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91
dCk7CkBAIC0xNzksNyArMTc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNvbnRhaW5zT25seVdo
aXRlc3BhY2UodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgbGVuKSBjb25zdDsKICAgICBmbG9hdCB3
aWR0aEZyb21DYWNoZShjb25zdCBGb250JiwgaW50IHN0YXJ0LCBpbnQgbGVuLCBmbG9hdCB4UG9z
LCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3Zl
cmZsb3cqKSBjb25zdDsKICAgICBib29sIGlzQWxsQVNDSUkoKSBjb25zdCB7IHJldHVybiBtX2lz
QWxsQVNDSUk7IH0KLSAgICB2b2lkIHVwZGF0ZU5lZWRzVHJhbnNjb2RpbmcoKTsKKyAgICBib29s
IGNvbXB1dGVVc2VCYWNrc2xhc2hBc1llblN5bWJvbCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZWN1
cmVUZXh0KFVDaGFyIG1hc2spOwogCkBAIC0xOTksNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faXNBbGxBU0NJSSA6IDE7CiAgICAgYm9vbCBtX2NhblVzZVNpbXBsZUZvbnRDb2RlUGF0
aCA6IDE7CiAgICAgbXV0YWJsZSBib29sIG1fa25vd25Ub0hhdmVOb092ZXJmbG93QW5kTm9GYWxs
YmFja0ZvbnRzIDogMTsKLSAgICBib29sIG1fbmVlZHNUcmFuc2NvZGluZyA6IDE7CisgICAgYm9v
bCBtX3VzZUJhY2tzbGFzaEFzWWVuU3ltYm9sIDogMTsKICAgICAKICNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgcGFy
dCBvZiB0aGUgdGV4dCBzaXppbmcgc3RydWN0dXJlcyBpbiBEb2N1bWVudCBpbnN0ZWFkLiBUaGF0
IHdvdWxkIHNhdmUgc29tZSBtZW1vcnkuCg==
</data>
<flag name="review"
          id="235246"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="235247"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>