<?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>190289</bug_id>
          
          <creation_ts>2018-10-04 13:24:53 -0700</creation_ts>
          <short_desc>[macOS] Fix some font attribute conversion bugs in preparation for &quot;Font &gt; Styles…&quot; support in WebKit2</short_desc>
          <delta_ts>2018-10-04 15:09:02 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1466490</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 13:24:53 -0700</bug_when>
    <thetext>After fixing &lt;https://bugs.webkit.org/show_bug.cgi?id=146381&gt; locally (along with the &quot;Styles…&quot; and &quot;Show Colors&quot; options in the context menu), I noticed a couple of bugs in our font attribute conversion code:
- Setting a font shadow with a blur radius of 0 and an offset of (X, Y) where X &lt; 0 or Y &lt; 0 does not work.
- We hit a debug assertion when removing background text colors using the modal sheet presented via &quot;Font &gt; Styles…&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466491</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 13:25:28 -0700</bug_when>
    <thetext>...we can address these bugs in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466503</commentid>
    <comment_count>2</comment_count>
      <attachid>351624</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 13:51:41 -0700</bug_when>
    <thetext>Created attachment 351624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466505</commentid>
    <comment_count>3</comment_count>
      <attachid>351625</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 13:55:11 -0700</bug_when>
    <thetext>Created attachment 351625
Test tweak</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466506</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-04 13:55:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/45020807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466507</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-04 13:55:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/45020806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466512</commentid>
    <comment_count>6</comment_count>
      <attachid>351626</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 13:59:40 -0700</bug_when>
    <thetext>Created attachment 351626
Add rdar to ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466534</commentid>
    <comment_count>7</comment_count>
      <attachid>351626</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-04 14:52:36 -0700</bug_when>
    <thetext>Comment on attachment 351626
Add rdar to ChangeLog

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

Nice bug fixes!

&gt; Source/WebCore/ChangeLog:19
&gt; +        Currently, we bail from adding a font shadow if the shadow&apos;s offset is empty. However, valid shadow offsets may
&gt; +        have negative dimensions, so a check for `isZero()` should be used instead.

It&apos;s very strange / unintuitive that isEmpty() returns true for negative offsets...

&gt; Source/WebCore/ChangeLog:26
&gt; +        transparent color (this scenario is exercised when using &quot;Font &gt; Stylesâ¦&quot; to specify a font style without a

What&apos;s up with &quot;â¦&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466537</commentid>
    <comment_count>8</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-10-04 14:58:28 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)
&gt; Comment on attachment 351626 [details]
&gt; Add rdar to ChangeLog
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=351626&amp;action=review
&gt; 
&gt; Nice bug fixes!
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        Currently, we bail from adding a font shadow if the shadow&apos;s offset is empty. However, valid shadow offsets may
&gt; &gt; +        have negative dimensions, so a check for `isZero()` should be used instead.
&gt; 
&gt; It&apos;s very strange / unintuitive that isEmpty() returns true for negative
&gt; offsets...

Yeah... :/ I think this makes it easier than it should be to make this kind of mistake for FloatSizes that represent offsets, like this.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:26
&gt; &gt; +        transparent color (this scenario is exercised when using &quot;Font &gt; Stylesâ¦&quot; to specify a font style without a
&gt; 
&gt; What&apos;s up with &quot;â¦&quot;?

This is actually an ellipsis &apos;…&apos; character, but the Bugzilla patch review tool apparently displays this as &quot;â¦&quot;. It looks normal outside of the Bugzilla patch review page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466543</commentid>
    <comment_count>9</comment_count>
      <attachid>351626</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-04 15:09:00 -0700</bug_when>
    <thetext>Comment on attachment 351626
Add rdar to ChangeLog

Clearing flags on attachment: 351626

Committed r236854: &lt;https://trac.webkit.org/changeset/236854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466544</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-04 15:09:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351624</attachid>
            <date>2018-10-04 13:51:41 -0700</date>
            <delta_ts>2018-10-04 13:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190289-20181004135140.patch</filename>
            <type>text/plain</type>
            <size>24748</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjljMGRmZTE2Nzg5ZDZh
ZTUzZjZkYzdiYjhkM2IzMTIzNGQyNTk0OS4uMjU3OTllNzliY2Q2YmUxZDYzMDk4ZjRmMTRhNmY1
YzdjYTU1ZTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gRml4
IHNvbWUgZm9udCBhdHRyaWJ1dGUgY29udmVyc2lvbiBidWdzIGluIHByZXBhcmF0aW9uIGZvciAi
Rm9udCA+IFN0eWxlc+KApiIgc3VwcG9ydCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBzb21lIHNtYWxsIGFkanVzdG1lbnRz
IHRvIGZpeCB0d28gYnVncyBpbiBmb250IGF0dHJpYnV0ZSBjb252ZXJzaW9uIGxvZ2ljLiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3RzOiAgRm9udE1hbmFnZXJUZXN0
cy5BZGRGb250U2hhZG93VXNpbmdGb250T3B0aW9ucworICAgICAgICAgICAgICAgIEZvbnRNYW5h
Z2VyVGVzdHMuQWRkQW5kUmVtb3ZlQ29sb3JzVXNpbmdGb250T3B0aW9ucworCisgICAgICAgICog
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NW
YWx1ZUxpc3RGb3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0
ZXNDb2NvYS5tbToKKworICAgICAgICBDdXJyZW50bHksIHdlIGJhaWwgZnJvbSBhZGRpbmcgYSBm
b250IHNoYWRvdyBpZiB0aGUgc2hhZG93J3Mgb2Zmc2V0IGlzIGVtcHR5LiBIb3dldmVyLCB2YWxp
ZCBzaGFkb3cgb2Zmc2V0cyBtYXkKKyAgICAgICAgaGF2ZSBuZWdhdGl2ZSBkaW1lbnNpb25zLCBz
byBhIGNoZWNrIGZvciBgaXNaZXJvKClgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzOjpjcmVhdGVEaWN0aW9uYXJ5IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisKKyAg
ICAgICAgRmFsbCBiYWNrIHRvIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBjb2xvcjsgdGhpcyBh
bGxvd3Mgc2VuZGVycyB0byByZW1vdmUgdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvciBieSBq
dXN0CisgICAgICAgIHJlbW92aW5nIE5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZSBmcm9t
IHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSwgcmF0aGVyIHRoYW4gZXhwbGljaXRseSBzZXR0aW5n
IGl0IHRvIHRoZQorICAgICAgICB0cmFuc3BhcmVudCBjb2xvciAodGhpcyBzY2VuYXJpbyBpcyBl
eGVyY2lzZWQgd2hlbiB1c2luZyAiRm9udCA+IFN0eWxlc+KApiIgdG8gc3BlY2lmeSBhIGZvbnQg
c3R5bGUgd2l0aG91dCBhCisgICAgICAgIGJhY2tncm91bmQgY29sb3IpLgorCisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKToKKwogMjAxOC0xMC0wMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEgyNjQgc2lt
dWxjYXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMu
Y3BwCmluZGV4IDNhMTUzNzZkNjRjMWNjMzU2ZjdiNjcwMDZiNThmZDYxMzgxZjRkODIuLmYwYjEz
ZWM4MWZmMzk2MTIwMDIxNmZhY2ViNjI5YmY5MWNlODRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGb250Q2hhbmdlczo6Y3JlYXRlU3R5bGVQcm9wZXJ0
aWVzKCkgY29uc3QKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNzc1ZhbHVlTGlzdEZv
clNoYWRvdyhjb25zdCBGb250U2hhZG93JiBzaGFkb3cpCiB7Ci0gICAgaWYgKHNoYWRvdy5vZmZz
ZXQuaXNFbXB0eSgpICYmICFzaGFkb3cuYmx1clJhZGl1cykKKyAgICBpZiAoc2hhZG93Lm9mZnNl
dC5pc1plcm8oKSAmJiAhc2hhZG93LmJsdXJSYWRpdXMpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRl
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0Nv
Y29hLm1tCmluZGV4IDQ3MGUyOTJkMzY0MjRkMTgxOTc4YzRiOGEzYjZjMTIwZThkMzIwNWMuLmFh
YmViMjBiODk1NTEwNmU1Y2RjMjA5YmZkZjEwODhhM2JkYzMxZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KQEAgLTQyLDEw
ICs0Miw4IEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1dGVzOjpjcmVhdGVE
aWN0aW9uYXJ5KCkgY29uc3QKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxhdGZv
cm1Db2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgaWYgKGZvbnRTaGFkb3cuY29sb3IuaXNW
YWxpZCgpICYmICghZm9udFNoYWRvdy5vZmZzZXQuaXNFbXB0eSgpIHx8IGZvbnRTaGFkb3cuYmx1
clJhZGl1cykpIHsKLSAgICAgICAgYXV0byBzaGFkb3cgPSBmb250U2hhZG93LmNyZWF0ZVNoYWRv
dygpOwotICAgICAgICBhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0gPSBzaGFkb3cu
Z2V0KCk7Ci0gICAgfQorICAgIGlmIChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZv
bnRTaGFkb3cub2Zmc2V0LmlzWmVybygpIHx8IGZvbnRTaGFkb3cuYmx1clJhZGl1cykpCisgICAg
ICAgIGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSA9IGZvbnRTaGFkb3cuY3JlYXRl
U2hhZG93KCkuZ2V0KCk7CiAKICAgICBpZiAoc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJz
Y3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQpCiAgICAgICAgIGF0dHJpYnV0ZXNbTlNTdXBl
cnNjcmlwdEF0dHJpYnV0ZU5hbWVdID0gQCgtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KaW5kZXggOWY3
ZDdkZDk4MmUzYjA4ODM1YmUyYjgzNzNlYzhiZTU3ZTNjNmU1NS4uOWQwYjY4ZWZjMTA3MGZmMjAy
MzJkNzJmMTViYzUwZTAxMTE1MzBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQpAQCAtMTI2LDcgKzEy
Niw3IEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMo
TlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAKICAgICBOU0NvbG9yICpjb252ZXJ0ZWRC
YWNrZ3JvdW5kQ29sb3JBID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRCYWNrZ3JvdW5k
Q29sb3JBID09IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBvYmplY3RGb3JLZXk6TlNCYWNrZ3JvdW5k
Q29sb3JBdHRyaWJ1dGVOYW1lXSkKLSAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3JvdW5kQ29sb3Io
Y29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBKSk7CisgICAgICAgIGNo
YW5nZXMuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yRnJvbU5TQ29sb3IoY29udmVydGVkQmFja2dy
b3VuZENvbG9yQSA/OiBOU0NvbG9yLmNsZWFyQ29sb3IpKTsKIAogICAgIGNoYW5nZXMuc2V0Rm9u
dENoYW5nZXMoY29tcHV0ZWRGb250Q2hhbmdlcyhmb250TWFuYWdlciwgb3JpZ2luYWxGb250QSwg
W2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwg
W2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXSkp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NTBjOTU3NTgwYmM2ODE0YzNiNmRlZGNiMjYyZmJlM2M4NzU5MjhlZi4uNzc1NWY4Y2JiMDE3YmY2
ZDdmYzJmNDU0MjQwMzkzOTFiOTFkYzM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTEwLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gRml4IHNv
bWUgZm9udCBhdHRyaWJ1dGUgY29udmVyc2lvbiBidWdzIGluIHByZXBhcmF0aW9uIGZvciAiRm9u
dCA+IFN0eWxlc+KApiIgc3VwcG9ydCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSB0
d28gY29ybmVyIGNhc2VzIHdoZW4gdXNpbmcgTlNGb250T3B0aW9ucyAoIkZvbnQgPiBTdHlsZXPi
gKYiKSB0byBjaGFuZ2UgZm9udAorICAgICAgICBhdHRyaWJ1dGVzIGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Zv
bnRNYW5hZ2VyVGVzdHMubW06CisgICAgICAgICh3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5n
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RGb250T3B0aW9ucy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0uCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOiBBZGRlZC4KKworICAgICAgICBJbnRyb2R1Y2UgVGVz
dEZvbnRPcHRpb25zLCB3aGljaCB3cmFwcyB0aGUgc2hhcmVkIE5TRm9udE9wdGlvbnMgYW5kIHN3
aXp6bGVzIGAtc2hhcmVkRm9udE9wdGlvbnNgIHRvIHJldHVybiBhCisgICAgICAgIGdsb2JhbCBp
bnN0YW5jZSBvZiBpdHNlbGYuIFRlc3RGb250T3B0aW9ucyBzdXBwb3J0cyBzZXZlcmFsIHRlc3Rp
bmcgaGVscGVycyB0byBhZGQgb3IgcmVtb3ZlIGZvbnQgc2hhZG93cywKKyAgICAgICAgZm9yZWdy
b3VuZCBjb2xvcnMsIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KKworICAgICAgICAoc2hhcmVkRm9u
dE9wdGlvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKCtbVGVzdEZvbnRPcHRpb25zIHNoYXJlZElu
c3RhbmNlXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25z
Ol0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2VsZWN0ZWRBdHRyaWJ1dGVzXSk6Cisg
ICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBmb250T3B0aW9uc10pOgorICAgICAgICAoLVtUZXN0
Rm9udE9wdGlvbnMgc2hhZG93V2lkdGhdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNl
dFNoYWRvd1dpZHRoOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2hhZG93SGVpZ2h0
XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFkb3dIZWlnaHQ6XSk6CisgICAg
ICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFkb3dCbHVyUmFkaXVzOl0pOgorICAgICAgICAo
LVtUZXN0Rm9udE9wdGlvbnMgc2V0SGFzU2hhZG93Ol0pOgorICAgICAgICAoLVtUZXN0Rm9udE9w
dGlvbnMgZm9yZWdyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRG
b3JlZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBiYWNrZ3JvdW5k
Q29sb3JdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNldEJhY2tncm91bmRDb2xvcjpd
KToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBjb252ZXJ0QXR0cmlidXRlczpdKToK
KyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNldFNlbGVjdGVkQXR0cmlidXRlczppc011bHRp
cGxlOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgZm9yd2FyZEludm9jYXRpb246XSk6
CisKIDIwMTgtMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRW5hYmxlIHNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIGJ5IGRlZmF1
bHQgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMxNWM0NzkyNDEz
MmI4NDMxOWQyZDRlMTQ4ZGYwNGQ0ODAzMDU1MjEuLjA0YjVkYTU1MzRkZjhmYjExY2Y2NGFmZDNi
YTQ0NDMxMDFlNmU4MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTYsNiArODU2LDcg
QEAKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBs
YXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ct
cGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1z
aXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3
MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsK
IAkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWlu
Zy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CisJCUY0RjVCQjUyMjE2NjdCQUEwMDJEMDZC
OSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25z
Lm1tICovOyB9OwogCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRp
dGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5t
bSAqLzsgfTsKIAkJRjRGQTkxODMxRTYxODU3QjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2Vz
LW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyog
ZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovOyB9Owog
CQlGNEZDMDc3NzIwRjAxM0I2MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCAqLzsgfTsKQEAgLTIxMTQsNiArMjExNSw4IEBACiAJCUY0RjEzNzkxMUQ5QjY4MzIwMDJC
RUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwt
c2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAv
KiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gInNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1MDIxNjY3QkFBMDAyRDA2Qjkg
LyogVGVzdEZvbnRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGb250T3B0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyog
VGVzdEZvbnRPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdEZvbnRPcHRpb25z
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE3RjFFNjE4NDlCMDA3QjhD
MUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNs
aWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBuYW1lID0gImRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2Uu
aHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0Q29jb2EvZG91YmxlLWNsaWNrLWRvZXMtbm90LXNl
bGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNzQsNiArMzE3Nyw4IEBACiAJCQkJRjQ2MTI4Q0Ey
MTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJRjRFMEEyQjYy
MTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLmggKi8sCiAJCQkJRjRF
MEEyQjcyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1tICovLAor
CQkJCUY0RjVCQjUwMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMuaCAqLywKKwkJ
CQlGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tICovLAogCQkJ
CUY0NUQzODhGMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLmggKi8sCiAJCQkJ
RjQ1RDM4OTAyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIubW0gKi8sCiAJCQkJ
QzA4NTg3QkUxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLApAQCAt
Mzk5NSw2ICs0MDAwLDcgQEAKIAkJCQk3Q0NFN0VBOTFBNDExQTFEMDA0NDdDNEMgLyogVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NjEyOENC
MjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjRFMEEyQjgyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJRjRGNUJCNTIyMTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250
T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAv
KiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUQzODkxMjE1QTdC
NEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
QzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRN
YW5hZ2VyVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdl
clRlc3RzLm1tCmluZGV4IDcwNjE2NzNlY2UwNjExZjMxYTk0NTRjYzEyZmIwODIyYmQ1ZDdmYzku
LjZhNThiNGY1ODU3M2Y2ZmQ4YWQzMzk3YzRkNGQ2MzY3YjE3NzBjMWYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMzEsNiAr
MzEsNyBAQAogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJOU0ZvbnRQYW5lbFRlc3Rp
bmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Rm9udE9w
dGlvbnMuaCIKICNpbXBvcnQgIlRlc3RJbnNwZWN0b3JCYXIuaCIKICNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xMTMsNiAr
MTE0LDE2IEBACiAKIEBlbmQKIAorc3RhdGljIFJldGFpblB0cjxGb250TWFuYWdlclRlc3RXS1dl
YlZpZXc+IHdlYlZpZXdGb3JGb250TWFuYWdlclRlc3RpbmcoTlNGb250TWFuYWdlciAqZm9udE1h
bmFnZXIsIE5TU3RyaW5nICptYXJrdXApCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W0ZvbnRNYW5hZ2VyVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzptYXJrdXBdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVT
XTsKKyAgICBmb250TWFuYWdlci50YXJnZXQgPSB3ZWJWaWV3LmdldCgpOworICAgIHJldHVybiB3
ZWJWaWV3OworfQorCiBzdGF0aWMgUmV0YWluUHRyPEZvbnRNYW5hZ2VyVGVzdFdLV2ViVmlldz4g
d2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhOU0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlcikK
IHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbRm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CkBAIC00
NzQsNiArNDg1LDQ4IEBAIFRFU1QoRm9udE1hbmFnZXJUZXN0cywgVHlwaW5nQXR0cmlidXRlc0Fm
dGVyU3Vic2NyaXB0QW5kU3VwZXJzY3JpcHQpCiAgICAgRVhQRUNUX0VRKDAsIFtbd2ViVmlldyB0
eXBpbmdBdHRyaWJ1dGVzXVtOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50ZWdlclZhbHVl
XSk7CiB9CiAKK1RFU1QoRm9udE1hbmFnZXJUZXN0cywgQWRkRm9udFNoYWRvd1VzaW5nRm9udE9w
dGlvbnMpCit7CisgICAgVGVzdEZvbnRPcHRpb25zICpvcHRpb25zID0gVGVzdEZvbnRPcHRpb25z
LnNoYXJlZEluc3RhbmNlOworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JGb250TWFuYWdl
clRlc3RpbmcoTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlcik7CisKKyAgICBbd2ViVmll
dyBzZWxlY3RXb3JkOm5pbF07CisgICAgb3B0aW9ucy5zaGFkb3dXaWR0aCA9IDM7CisgICAgb3B0
aW9ucy5zaGFkb3dIZWlnaHQgPSAtMzsKKyAgICBvcHRpb25zLmhhc1NoYWRvdyA9IFlFUzsKKwor
ICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgwLCAwLCAwLCAwLjMzMzMzMykgM3B4IC0zcHggMHB4
IiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJ0ZXh0LXNoYWRvdyJd
KTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgTlNT
aGFkb3cgKnNoYWRvdyA9IFt3ZWJWaWV3IHR5cGluZ0F0dHJpYnV0ZXNdW05TU2hhZG93QXR0cmli
dXRlTmFtZV07CisgICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFkb3dPZmZzZXQud2lkdGgsIDMpOwor
ICAgIEVYUEVDVF9FUShzaGFkb3cuc2hhZG93T2Zmc2V0LmhlaWdodCwgLTMpOworfQorCitURVNU
KEZvbnRNYW5hZ2VyVGVzdHMsIEFkZEFuZFJlbW92ZUNvbG9yc1VzaW5nRm9udE9wdGlvbnMpCit7
CisgICAgVGVzdEZvbnRPcHRpb25zICpvcHRpb25zID0gVGVzdEZvbnRPcHRpb25zLnNoYXJlZElu
c3RhbmNlOworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JGb250TWFuYWdlclRlc3Rpbmco
TlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlciwgQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+
aGVsbG88L2JvZHk+Iik7CisgICAgW3dlYlZpZXcgc2VsZWN0V29yZDpuaWxdOworCisgICAgb3B0
aW9ucy5iYWNrZ3JvdW5kQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjowIGJs
dWU6MCBhbHBoYTowLjJdOworICAgIG9wdGlvbnMuZm9yZWdyb3VuZENvbG9yID0gW05TQ29sb3Ig
Y29sb3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjEgYWxwaGE6MV07CisKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoInJnYigwLCAwLCAyNTUpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9u
U3RhcnQ6QCJjb2xvciJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMjU1LCAwLCAwLCAw
LjIpIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uU3RhcnQ6QCJiYWNrZ3JvdW5k
LWNvbG9yIl0pOworICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFt3ZWJWaWV3IHR5cGlu
Z0F0dHJpYnV0ZXNdOworICAgIEVYUEVDVF9UUlVFKFtbTlNDb2xvciBjb2xvcldpdGhSZWQ6MCBn
cmVlbjowIGJsdWU6MSBhbHBoYToxXSBpc0VxdWFsOmF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXV0pOworICAgIEVYUEVDVF9UUlVFKFtbTlNDb2xvciBjb2xvcldpdGhS
ZWQ6MSBncmVlbjowIGJsdWU6MCBhbHBoYTowLjJdIGlzRXF1YWw6YXR0cmlidXRlc1tOU0JhY2tn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdXSk7CisKKyAgICBvcHRpb25zLmJhY2tncm91bmRDb2xv
ciA9IG5pbDsKKyAgICBvcHRpb25zLmZvcmVncm91bmRDb2xvciA9IG5pbDsKKworICAgIEVYUEVD
VF9XS19TVFJFUSgicmdiKDAsIDAsIDApIiwgW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0
aW9uU3RhcnQ6QCJjb2xvciJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMCwgMCwg
MCkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImJhY2tncm91bmQt
Y29sb3IiXSk7CisgICAgYXR0cmlidXRlcyA9IFt3ZWJWaWV3IHR5cGluZ0F0dHJpYnV0ZXNdOwor
ICAgIEVYUEVDVF9OVUxMKGF0dHJpYnV0ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XSk7CisgICAgRVhQRUNUX05VTEwoYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWVdKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjhiYTA3NWZkYmY4MjQzYWM4MjY2MzkxNTg5
MDA0YThiYzhhMGMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
VGVzdEZvbnRPcHRpb25zLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxB
cHBLaXQvQXBwS2l0Lmg+CisKK0BpbnRlcmZhY2UgVGVzdEZvbnRPcHRpb25zIDogTlNPYmplY3QK
KworQHByb3BlcnR5IChjbGFzcywgcmVhZG9ubHkpIFRlc3RGb250T3B0aW9ucyAqc2hhcmVkSW5z
dGFuY2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TRGljdGlvbmFyeSAqc2Vs
ZWN0ZWRBdHRyaWJ1dGVzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGhh
c011bHRpcGxlRm9udHM7CisKKy8vIEZvbnQgc2hhZG93IG1hbmlwdWxhdGlvbi4KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGhhc1NoYWRvdzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zs
b2F0IHNoYWRvd1dpZHRoOworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc2hhZG93SGVp
Z2h0OworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc2hhZG93Qmx1clJhZGl1czsKKwor
Ly8gRm9udCBjb2xvcnMuCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNDb2xvciAqZm9y
ZWdyb3VuZENvbG9yOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQ29sb3IgKmJhY2tn
cm91bmRDb2xvcjsKKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rl
c3RGb250T3B0aW9ucy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDY2YzZlNDJkNTcwODU5NjkwZDNiZWYwNTg2
MTVkZjg2N2QzN2I0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
VGVzdEZvbnRPcHRpb25zLm1tCkBAIC0wLDAgKzEsMjMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0Rm9udE9wdGlvbnMuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQXBwS2l0U1BJLmgiCisjaW1wb3J0
ICJDbGFzc01ldGhvZFN3aXp6bGVyLmgiCisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKworc3RhdGljIFRlc3RGb250T3B0aW9ucyAqc2hh
cmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKCkKK3sKKyAgICByZXR1cm4gVGVzdEZvbnRPcHRpb25z
LnNoYXJlZEluc3RhbmNlOworfQorCitAaW50ZXJmYWNlIFRlc3RGb250T3B0aW9ucyAoKQorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0
aW9uczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRlc3RGb250T3B0aW9ucyB7CisgICAgUmV0
YWluUHRyPE5TRm9udE9wdGlvbnM+IF9mb250T3B0aW9uczsKKyAgICBDR1NpemUgX3NoYWRvd09m
ZnNldDsKKyAgICBDR0Zsb2F0IF9zaGFkb3dCbHVyUmFkaXVzOworICAgIEJPT0wgX2hhc1NoYWRv
dzsKKyAgICBCT09MIF9oYXNQZW5kaW5nU2hhZG93Q2hhbmdlczsKKworICAgIFJldGFpblB0cjxO
U0NvbG9yPiBfZm9yZWdyb3VuZENvbG9yOworICAgIFJldGFpblB0cjxOU0NvbG9yPiBfYmFja2dy
b3VuZENvbG9yOworICAgIEJPT0wgX2hhc1BlbmRpbmdDb2xvckNoYW5nZXM7CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q2xhc3NNZXRob2RTd2l6emxlcj4gX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6
bGVyOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IF9zZWxlY3RlZEF0dHJpYnV0ZXM7Cisg
ICAgQk9PTCBfaGFzTXVsdGlwbGVGb250czsKK30KKworQHN5bnRoZXNpemUgaGFzU2hhZG93PV9o
YXNTaGFkb3c7CitAc3ludGhlc2l6ZSBzaGFkb3dCbHVyUmFkaXVzPV9zaGFkb3dCbHVyUmFkaXVz
OworQHN5bnRoZXNpemUgaGFzTXVsdGlwbGVGb250cz1faGFzTXVsdGlwbGVGb250czsKKworKyAo
aW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCit7CisgICAgc3RhdGljIFRlc3RGb250T3B0aW9u
cyAqc2hhcmVkSW5zdGFuY2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47
CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU0ZvbnRPcHRpb25z
ICpzaGFyZWRGb250T3B0aW9ucyA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMi
KSBzaGFyZWRGb250T3B0aW9uc107CisgICAgICAgIHNoYXJlZEluc3RhbmNlID0gW1tUZXN0Rm9u
dE9wdGlvbnMgYWxsb2NdIGluaXRXaXRoRm9udE9wdGlvbnM6c2hhcmVkRm9udE9wdGlvbnNdOwor
ICAgIH0pOworICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0aW9ucworeworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
X2ZvbnRPcHRpb25zID0gZm9udE9wdGlvbnM7CisgICAgQVNTRVJUKF9mb250T3B0aW9ucyk7CisK
KyAgICBfc2hhZG93T2Zmc2V0ID0gQ0dTaXplWmVybzsKKyAgICBfc2hhZG93Qmx1clJhZGl1cyA9
IDA7CisgICAgX3JlcGxhY2VGb250T3B0aW9uc1N3aXp6bGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
bGFzc01ldGhvZFN3aXp6bGVyPihOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSwg
QHNlbGVjdG9yKHNoYXJlZEZvbnRPcHRpb25zKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHNoYXJl
ZEZvbnRPcHRpb25zRm9yVGVzdGluZykpOworICAgIF9oYXNQZW5kaW5nU2hhZG93Q2hhbmdlcyA9
IE5POworICAgIF9oYXNNdWx0aXBsZUZvbnRzID0gTk87CisKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAoTlNEaWN0aW9uYXJ5ICopc2VsZWN0ZWRBdHRyaWJ1dGVzCit7CisgICAgcmV0dXJuIF9z
ZWxlY3RlZEF0dHJpYnV0ZXMuZ2V0KCk7Cit9CisKKy0gKE5TRm9udE9wdGlvbnMgKilmb250T3B0
aW9ucworeworICAgIHJldHVybiBfZm9udE9wdGlvbnMuZ2V0KCk7Cit9CisKKy0gKENHRmxvYXQp
c2hhZG93V2lkdGgKK3sKKyAgICByZXR1cm4gX3NoYWRvd09mZnNldC53aWR0aDsKK30KKworLSAo
dm9pZClzZXRTaGFkb3dXaWR0aDooQ0dGbG9hdClzaGFkb3dXaWR0aAoreworICAgIGlmIChfc2hh
ZG93T2Zmc2V0LndpZHRoID09IHNoYWRvd1dpZHRoKQorICAgICAgICByZXR1cm47CisKKyAgICBT
ZXRGb3JTY29wZTxCT09MPiBoYXNQZW5kaW5nRm9udFNoYWRvd0NoYW5nZXMoX2hhc1BlbmRpbmdT
aGFkb3dDaGFuZ2VzLCBZRVMpOworICAgIF9zaGFkb3dPZmZzZXQud2lkdGggPSBzaGFkb3dXaWR0
aDsKKyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdlc107Cit9CisKKy0gKENH
RmxvYXQpc2hhZG93SGVpZ2h0Cit7CisgICAgcmV0dXJuIF9zaGFkb3dPZmZzZXQuaGVpZ2h0Owor
fQorCistICh2b2lkKXNldFNoYWRvd0hlaWdodDooQ0dGbG9hdClzaGFkb3dIZWlnaHQKK3sKKyAg
ICBpZiAoX3NoYWRvd09mZnNldC5oZWlnaHQgPT0gc2hhZG93SGVpZ2h0KQorICAgICAgICByZXR1
cm47CisKKyAgICBTZXRGb3JTY29wZTxCT09MPiBoYXNQZW5kaW5nRm9udFNoYWRvd0NoYW5nZXMo
X2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzLCBZRVMpOworICAgIF9zaGFkb3dPZmZzZXQuaGVpZ2h0
ID0gc2hhZG93SGVpZ2h0OworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
XTsKK30KKworLSAodm9pZClzZXRTaGFkb3dCbHVyUmFkaXVzOihDR0Zsb2F0KXNoYWRvd0JsdXJS
YWRpdXMKK3sKKyAgICBpZiAoX3NoYWRvd0JsdXJSYWRpdXMgPT0gc2hhZG93Qmx1clJhZGl1cykK
KyAgICAgICAgcmV0dXJuOworCisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0ZvbnRT
aGFkb3dDaGFuZ2VzKF9oYXNQZW5kaW5nU2hhZG93Q2hhbmdlcywgWUVTKTsKKyAgICBfc2hhZG93
Qmx1clJhZGl1cyA9IHNoYWRvd0JsdXJSYWRpdXM7CisgICAgW3NlbGYgX2Rpc3BhdGNoRm9udEF0
dHJpYnV0ZUNoYW5nZXNdOworfQorCistICh2b2lkKXNldEhhc1NoYWRvdzooQk9PTCloYXNTaGFk
b3cKK3sKKyAgICBpZiAoX2hhc1NoYWRvdyA9PSBoYXNTaGFkb3cpCisgICAgICAgIHJldHVybjsK
KworICAgIFNldEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdGb250U2hhZG93Q2hhbmdlcyhfaGFz
UGVuZGluZ1NoYWRvd0NoYW5nZXMsIFlFUyk7CisgICAgX2hhc1NoYWRvdyA9IGhhc1NoYWRvdzsK
KyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdlc107Cit9CisKKy0gKE5TQ29s
b3IgKilmb3JlZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gX2ZvcmVncm91bmRDb2xvci5nZXQo
KTsKK30KKworLSAodm9pZClzZXRGb3JlZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiljb2xvcgorewor
ICAgIFNldEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdDb2xvckNoYW5nZXMoX2hhc1BlbmRpbmdD
b2xvckNoYW5nZXMsIFlFUyk7CisgICAgX2ZvcmVncm91bmRDb2xvciA9IGFkb3B0TlMoW2NvbG9y
IGNvcHldKTsKKyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdlc107Cit9CisK
Ky0gKE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4gX2JhY2tncm91bmRD
b2xvci5nZXQoKTsKK30KKworLSAodm9pZClzZXRCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKilj
b2xvcgoreworICAgIFNldEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdDb2xvckNoYW5nZXMoX2hh
c1BlbmRpbmdDb2xvckNoYW5nZXMsIFlFUyk7CisgICAgX2JhY2tncm91bmRDb2xvciA9IGFkb3B0
TlMoW2NvbG9yIGNvcHldKTsKKyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdl
c107Cit9CisKKy0gKHZvaWQpX2Rpc3BhdGNoRm9udEF0dHJpYnV0ZUNoYW5nZXMKK3sKKyAgICBb
TlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlci50YXJnZXQgcGVyZm9ybVNlbGVjdG9yOkBz
ZWxlY3RvcihjaGFuZ2VBdHRyaWJ1dGVzOikgd2l0aE9iamVjdDpzZWxmXTsKK30KKworLSAoTlNE
aWN0aW9uYXJ5ICopY29udmVydEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMK
K3sKKyAgICBhdXRvIGNvbnZlcnRlZEF0dHJpYnV0ZXMgPSBhZG9wdE5TKFthdHRyaWJ1dGVzIG11
dGFibGVDb3B5XSk7CisKKyAgICBpZiAoX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzKSB7CisgICAg
ICAgIGlmIChfaGFzU2hhZG93KSB7CisgICAgICAgICAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMo
W1tOU1NoYWRvdyBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dC
bHVyUmFkaXVzOl9zaGFkb3dCbHVyUmFkaXVzXTsKKyAgICAgICAgICAgIFtzaGFkb3cgc2V0U2hh
ZG93T2Zmc2V0Ol9zaGFkb3dPZmZzZXRdOworICAgICAgICAgICAgW2NvbnZlcnRlZEF0dHJpYnV0
ZXMgc2V0T2JqZWN0OnNoYWRvdy5nZXQoKSBmb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyByZW1vdmVP
YmplY3RGb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKKyAgICB9CisKKyAgICBpZiAoX2hh
c1BlbmRpbmdDb2xvckNoYW5nZXMpIHsKKyAgICAgICAgaWYgKF9mb3JlZ3JvdW5kQ29sb3IpCisg
ICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyBzZXRPYmplY3Q6X2ZvcmVncm91bmRDb2xv
ci5nZXQoKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgW2NvbnZlcnRlZEF0dHJpYnV0ZXMgcmVtb3ZlT2JqZWN0Rm9yS2V5
Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisKKyAgICAgICAgaWYgKF9iYWNrZ3Jv
dW5kQ29sb3IpCisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyBzZXRPYmplY3Q6X2Jh
Y2tncm91bmRDb2xvci5nZXQoKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW2NvbnZlcnRlZEF0dHJpYnV0ZXMgcmVtb3Zl
T2JqZWN0Rm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07CisgICAgfQorCisg
ICAgcmV0dXJuIGNvbnZlcnRlZEF0dHJpYnV0ZXMuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9p
ZClzZXRTZWxlY3RlZEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXMgaXNNdWx0
aXBsZTooQk9PTCltdWx0aXBsZQoreworICAgIF9oYXNNdWx0aXBsZUZvbnRzID0gbXVsdGlwbGU7
CisgICAgX3NlbGVjdGVkQXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Cit9CisKKy0gKHZvaWQpZm9y
d2FyZEludm9jYXRpb246KE5TSW52b2NhdGlvbiAqKWludm9jYXRpb24KK3sKKyAgICBpZiAoW19m
b250T3B0aW9ucyByZXNwb25kc1RvU2VsZWN0b3I6aW52b2NhdGlvbi5zZWxlY3Rvcl0pIHsKKyAg
ICAgICAgW2ludm9jYXRpb24gaW52b2tlV2l0aFRhcmdldDpfZm9udE9wdGlvbnMuZ2V0KCldOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3N1cGVyIGZvcndhcmRJbnZvY2F0aW9uOmlu
dm9jYXRpb25dOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIFdLX0FQ
SV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351625</attachid>
            <date>2018-10-04 13:55:11 -0700</date>
            <delta_ts>2018-10-04 13:59:38 -0700</delta_ts>
            <desc>Test tweak</desc>
            <filename>bug-190289-20181004135511.patch</filename>
            <type>text/plain</type>
            <size>25431</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjljMGRmZTE2Nzg5ZDZh
ZTUzZjZkYzdiYjhkM2IzMTIzNGQyNTk0OS4uMjU3OTllNzliY2Q2YmUxZDYzMDk4ZjRmMTRhNmY1
YzdjYTU1ZTY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gRml4
IHNvbWUgZm9udCBhdHRyaWJ1dGUgY29udmVyc2lvbiBidWdzIGluIHByZXBhcmF0aW9uIGZvciAi
Rm9udCA+IFN0eWxlc+KApiIgc3VwcG9ydCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBzb21lIHNtYWxsIGFkanVzdG1lbnRz
IHRvIGZpeCB0d28gYnVncyBpbiBmb250IGF0dHJpYnV0ZSBjb252ZXJzaW9uIGxvZ2ljLiBTZWUg
YmVsb3cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgIFRlc3RzOiAgRm9udE1hbmFnZXJUZXN0
cy5BZGRGb250U2hhZG93VXNpbmdGb250T3B0aW9ucworICAgICAgICAgICAgICAgIEZvbnRNYW5h
Z2VyVGVzdHMuQWRkQW5kUmVtb3ZlQ29sb3JzVXNpbmdGb250T3B0aW9ucworCisgICAgICAgICog
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NW
YWx1ZUxpc3RGb3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0
ZXNDb2NvYS5tbToKKworICAgICAgICBDdXJyZW50bHksIHdlIGJhaWwgZnJvbSBhZGRpbmcgYSBm
b250IHNoYWRvdyBpZiB0aGUgc2hhZG93J3Mgb2Zmc2V0IGlzIGVtcHR5LiBIb3dldmVyLCB2YWxp
ZCBzaGFkb3cgb2Zmc2V0cyBtYXkKKyAgICAgICAgaGF2ZSBuZWdhdGl2ZSBkaW1lbnNpb25zLCBz
byBhIGNoZWNrIGZvciBgaXNaZXJvKClgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzOjpjcmVhdGVEaWN0aW9uYXJ5IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisKKyAg
ICAgICAgRmFsbCBiYWNrIHRvIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCBjb2xvcjsgdGhpcyBh
bGxvd3Mgc2VuZGVycyB0byByZW1vdmUgdGhlIGN1cnJlbnQgYmFja2dyb3VuZCBjb2xvciBieSBq
dXN0CisgICAgICAgIHJlbW92aW5nIE5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZSBmcm9t
IHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSwgcmF0aGVyIHRoYW4gZXhwbGljaXRseSBzZXR0aW5n
IGl0IHRvIHRoZQorICAgICAgICB0cmFuc3BhcmVudCBjb2xvciAodGhpcyBzY2VuYXJpbyBpcyBl
eGVyY2lzZWQgd2hlbiB1c2luZyAiRm9udCA+IFN0eWxlc+KApiIgdG8gc3BlY2lmeSBhIGZvbnQg
c3R5bGUgd2l0aG91dCBhCisgICAgICAgIGJhY2tncm91bmQgY29sb3IpLgorCisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKToKKwogMjAxOC0xMC0wMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIEgyNjQgc2lt
dWxjYXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMu
Y3BwCmluZGV4IDNhMTUzNzZkNjRjMWNjMzU2ZjdiNjcwMDZiNThmZDYxMzgxZjRkODIuLmYwYjEz
ZWM4MWZmMzk2MTIwMDIxNmZhY2ViNjI5YmY5MWNlODRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwCkBAIC04MSw3ICs4MSw3IEBAIFJl
ZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBGb250Q2hhbmdlczo6Y3JlYXRlU3R5bGVQcm9wZXJ0
aWVzKCkgY29uc3QKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNzc1ZhbHVlTGlzdEZv
clNoYWRvdyhjb25zdCBGb250U2hhZG93JiBzaGFkb3cpCiB7Ci0gICAgaWYgKHNoYWRvdy5vZmZz
ZXQuaXNFbXB0eSgpICYmICFzaGFkb3cuYmx1clJhZGl1cykKKyAgICBpZiAoc2hhZG93Lm9mZnNl
dC5pc1plcm8oKSAmJiAhc2hhZG93LmJsdXJSYWRpdXMpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRl
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0Nv
Y29hLm1tCmluZGV4IDQ3MGUyOTJkMzY0MjRkMTgxOTc4YzRiOGEzYjZjMTIwZThkMzIwNWMuLmFh
YmViMjBiODk1NTEwNmU1Y2RjMjA5YmZkZjEwODhhM2JkYzMxZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KQEAgLTQyLDEw
ICs0Miw4IEBAIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1dGVzOjpjcmVhdGVE
aWN0aW9uYXJ5KCkgY29uc3QKICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKICAg
ICAgICAgYXR0cmlidXRlc1tOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxhdGZv
cm1Db2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgaWYgKGZvbnRTaGFkb3cuY29sb3IuaXNW
YWxpZCgpICYmICghZm9udFNoYWRvdy5vZmZzZXQuaXNFbXB0eSgpIHx8IGZvbnRTaGFkb3cuYmx1
clJhZGl1cykpIHsKLSAgICAgICAgYXV0byBzaGFkb3cgPSBmb250U2hhZG93LmNyZWF0ZVNoYWRv
dygpOwotICAgICAgICBhdHRyaWJ1dGVzW05TU2hhZG93QXR0cmlidXRlTmFtZV0gPSBzaGFkb3cu
Z2V0KCk7Ci0gICAgfQorICAgIGlmIChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZv
bnRTaGFkb3cub2Zmc2V0LmlzWmVybygpIHx8IGZvbnRTaGFkb3cuYmx1clJhZGl1cykpCisgICAg
ICAgIGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSA9IGZvbnRTaGFkb3cuY3JlYXRl
U2hhZG93KCkuZ2V0KCk7CiAKICAgICBpZiAoc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJz
Y3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQpCiAgICAgICAgIGF0dHJpYnV0ZXNbTlNTdXBl
cnNjcmlwdEF0dHJpYnV0ZU5hbWVdID0gQCgtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KaW5kZXggOWY3
ZDdkZDk4MmUzYjA4ODM1YmUyYjgzNzNlYzhiZTU3ZTNjNmU1NS4uOWQwYjY4ZWZjMTA3MGZmMjAy
MzJkNzJmMTViYzUwZTAxMTE1MzBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQpAQCAtMTI2LDcgKzEy
Niw3IEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMo
TlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAKICAgICBOU0NvbG9yICpjb252ZXJ0ZWRC
YWNrZ3JvdW5kQ29sb3JBID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0Jh
Y2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRCYWNrZ3JvdW5k
Q29sb3JBID09IFtjb252ZXJ0ZWRBdHRyaWJ1dGVzQiBvYmplY3RGb3JLZXk6TlNCYWNrZ3JvdW5k
Q29sb3JBdHRyaWJ1dGVOYW1lXSkKLSAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3JvdW5kQ29sb3Io
Y29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBKSk7CisgICAgICAgIGNo
YW5nZXMuc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yRnJvbU5TQ29sb3IoY29udmVydGVkQmFja2dy
b3VuZENvbG9yQSA/OiBOU0NvbG9yLmNsZWFyQ29sb3IpKTsKIAogICAgIGNoYW5nZXMuc2V0Rm9u
dENoYW5nZXMoY29tcHV0ZWRGb250Q2hhbmdlcyhmb250TWFuYWdlciwgb3JpZ2luYWxGb250QSwg
W2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXSwg
W2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXSkp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NTBjOTU3NTgwYmM2ODE0YzNiNmRlZGNiMjYyZmJlM2M4NzU5MjhlZi4uNzc1NWY4Y2JiMDE3YmY2
ZDdmYzJmNDU0MjQwMzkzOTFiOTFkYzM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTEwLTA0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gRml4IHNv
bWUgZm9udCBhdHRyaWJ1dGUgY29udmVyc2lvbiBidWdzIGluIHByZXBhcmF0aW9uIGZvciAiRm9u
dCA+IFN0eWxlc+KApiIgc3VwcG9ydCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSB0
d28gY29ybmVyIGNhc2VzIHdoZW4gdXNpbmcgTlNGb250T3B0aW9ucyAoIkZvbnQgPiBTdHlsZXPi
gKYiKSB0byBjaGFuZ2UgZm9udAorICAgICAgICBhdHRyaWJ1dGVzIGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Zv
bnRNYW5hZ2VyVGVzdHMubW06CisgICAgICAgICh3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5n
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RGb250T3B0aW9ucy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0uCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOiBBZGRlZC4KKworICAgICAgICBJbnRyb2R1Y2UgVGVz
dEZvbnRPcHRpb25zLCB3aGljaCB3cmFwcyB0aGUgc2hhcmVkIE5TRm9udE9wdGlvbnMgYW5kIHN3
aXp6bGVzIGAtc2hhcmVkRm9udE9wdGlvbnNgIHRvIHJldHVybiBhCisgICAgICAgIGdsb2JhbCBp
bnN0YW5jZSBvZiBpdHNlbGYuIFRlc3RGb250T3B0aW9ucyBzdXBwb3J0cyBzZXZlcmFsIHRlc3Rp
bmcgaGVscGVycyB0byBhZGQgb3IgcmVtb3ZlIGZvbnQgc2hhZG93cywKKyAgICAgICAgZm9yZWdy
b3VuZCBjb2xvcnMsIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KKworICAgICAgICAoc2hhcmVkRm9u
dE9wdGlvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKCtbVGVzdEZvbnRPcHRpb25zIHNoYXJlZElu
c3RhbmNlXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBpbml0V2l0aEZvbnRPcHRpb25z
Ol0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2VsZWN0ZWRBdHRyaWJ1dGVzXSk6Cisg
ICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBmb250T3B0aW9uc10pOgorICAgICAgICAoLVtUZXN0
Rm9udE9wdGlvbnMgc2hhZG93V2lkdGhdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNl
dFNoYWRvd1dpZHRoOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2hhZG93SGVpZ2h0
XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFkb3dIZWlnaHQ6XSk6CisgICAg
ICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFkb3dCbHVyUmFkaXVzOl0pOgorICAgICAgICAo
LVtUZXN0Rm9udE9wdGlvbnMgc2V0SGFzU2hhZG93Ol0pOgorICAgICAgICAoLVtUZXN0Rm9udE9w
dGlvbnMgZm9yZWdyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRG
b3JlZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBiYWNrZ3JvdW5k
Q29sb3JdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNldEJhY2tncm91bmRDb2xvcjpd
KToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBjb252ZXJ0QXR0cmlidXRlczpdKToK
KyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNldFNlbGVjdGVkQXR0cmlidXRlczppc011bHRp
cGxlOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgZm9yd2FyZEludm9jYXRpb246XSk6
CisKIDIwMTgtMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRW5hYmxlIHNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIGJ5IGRlZmF1
bHQgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMxNWM0NzkyNDEz
MmI4NDMxOWQyZDRlMTQ4ZGYwNGQ0ODAzMDU1MjEuLjA0YjVkYTU1MzRkZjhmYjExY2Y2NGFmZDNi
YTQ0NDMxMDFlNmU4MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTYsNiArODU2LDcg
QEAKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBs
YXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ct
cGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1z
aXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3
MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsK
IAkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8qIHNraW5ueS1hdXRvcGxheWlu
Zy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CisJCUY0RjVCQjUyMjE2NjdCQUEwMDJEMDZC
OSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25z
Lm1tICovOyB9OwogCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRp
dGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmlld01hY0VkaXRpbmdUZXN0cy5t
bSAqLzsgfTsKIAkJRjRGQTkxODMxRTYxODU3QjAwN0I4QzFEIC8qIGRvdWJsZS1jbGljay1kb2Vz
LW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyog
ZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovOyB9Owog
CQlGNEZDMDc3NzIwRjAxM0I2MDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCAqLzsgfTsKQEAgLTIxMTQsNiArMjExNSw4IEBACiAJCUY0RjEzNzkxMUQ5QjY4MzIwMDJC
RUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwt
c2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjQwNUJCMUQ0QzBDRjgwMDdBOTcwNyAv
KiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gInNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1MDIxNjY3QkFBMDAyRDA2Qjkg
LyogVGVzdEZvbnRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGb250T3B0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyog
VGVzdEZvbnRPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdEZvbnRPcHRpb25z
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE3RjFFNjE4NDlCMDA3QjhD
MUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE4MjFFNjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNs
aWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBuYW1lID0gImRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2Uu
aHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0Q29jb2EvZG91YmxlLWNsaWNrLWRvZXMtbm90LXNl
bGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNhbnQtdGV4dC1taWxlc3RvbmUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVzdG9uZS5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNzQsNiArMzE3Nyw4IEBACiAJCQkJRjQ2MTI4Q0Ey
MTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0gKi8sCiAJCQkJRjRFMEEyQjYy
MTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLmggKi8sCiAJCQkJRjRF
MEEyQjcyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1tICovLAor
CQkJCUY0RjVCQjUwMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMuaCAqLywKKwkJ
CQlGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tICovLAogCQkJ
CUY0NUQzODhGMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLmggKi8sCiAJCQkJ
RjQ1RDM4OTAyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0b3JCYXIubW0gKi8sCiAJCQkJ
QzA4NTg3QkUxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9zdGljVGVzdC5oICovLApAQCAt
Mzk5NSw2ICs0MDAwLDcgQEAKIAkJCQk3Q0NFN0VBOTFBNDExQTFEMDA0NDdDNEMgLyogVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NjEyOENC
MjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjRFMEEyQjgyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJRjRGNUJCNTIyMTY2N0JBQTAwMkQwNkI5IC8qIFRlc3RGb250
T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTc2MjExMkNFNjIwMDMwN0U4MiAv
KiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUQzODkxMjE1QTdC
NEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQx
QzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRN
YW5hZ2VyVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdl
clRlc3RzLm1tCmluZGV4IDcwNjE2NzNlY2UwNjExZjMxYTk0NTRjYzEyZmIwODIyYmQ1ZDdmYzku
LjZhNDQ2NzllZDU5MzJjM2ExZTk1MTAyNmIyNTJhYTI1NDI5MTAwZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMzEsNiAr
MzEsNyBAQAogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJOU0ZvbnRQYW5lbFRlc3Rp
bmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Rm9udE9w
dGlvbnMuaCIKICNpbXBvcnQgIlRlc3RJbnNwZWN0b3JCYXIuaCIKICNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xMTMsMTgg
KzExNCwyMyBAQAogCiBAZW5kCiAKLXN0YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKE5TRm9udE1hbmFnZXIgKmZvbnRN
YW5hZ2VyKQorc3RhdGljIFJldGFpblB0cjxGb250TWFuYWdlclRlc3RXS1dlYlZpZXc+IHdlYlZp
ZXdGb3JGb250TWFuYWdlclRlc3RpbmcoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIE5TU3Ry
aW5nICptYXJrdXApCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0ZvbnRNYW5hZ2Vy
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwg
NDAwKV0pOwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5
IGNvbnRlbnRlZGl0YWJsZT4iCi0gICAgICAgICI8c3BhbiBpZD0nZm9vJz5mb288L3NwYW4+IDxz
cGFuIGlkPSdiYXInPmJhcjwvc3Bhbj4gPHNwYW4gaWQ9J2Jheic+YmF6PC9zcGFuPiIKLSAgICAg
ICAgIjwvYm9keT48c2NyaXB0PmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQn
LCBldmVudCA9PiBsYXN0SW5wdXRFdmVudCA9IGV2ZW50KTwvc2NyaXB0PiJdOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzptYXJrdXBdOwogICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKICAg
ICBbd2ViVmlldyBfc2V0RWRpdGFibGU6WUVTXTsKICAgICBmb250TWFuYWdlci50YXJnZXQgPSB3
ZWJWaWV3LmdldCgpOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCitzdGF0aWMgUmV0YWluUHRy
PEZvbnRNYW5hZ2VyVGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhO
U0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlcikKK3sKKyAgICByZXR1cm4gd2ViVmlld0ZvckZvbnRN
YW5hZ2VyVGVzdGluZyhmb250TWFuYWdlciwgQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+IgorICAg
ICAgICAiPHNwYW4gaWQ9J2Zvbyc+Zm9vPC9zcGFuPiA8c3BhbiBpZD0nYmFyJz5iYXI8L3NwYW4+
IDxzcGFuIGlkPSdiYXonPmJhejwvc3Bhbj4iCisgICAgICAgICI8L2JvZHk+PHNjcmlwdD5kb2N1
bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZXZlbnQgPT4gbGFzdElucHV0RXZl
bnQgPSBldmVudCk8L3NjcmlwdD4iKTsKK30KKwogc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVt
Q2VsbD4gbWVudUl0ZW1DZWxsRm9yRm9udEFjdGlvbihOU1VJbnRlZ2VyIHRhZykKIHsKICAgICBh
dXRvIG1lbnVJdGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdKTsKQEAgLTQ3
NCw2ICs0ODAsNDggQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBUeXBpbmdBdHRyaWJ1dGVzQWZ0
ZXJTdWJzY3JpcHRBbmRTdXBlcnNjcmlwdCkKICAgICBFWFBFQ1RfRVEoMCwgW1t3ZWJWaWV3IHR5
cGluZ0F0dHJpYnV0ZXNdW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVd
KTsKIH0KIAorVEVTVChGb250TWFuYWdlclRlc3RzLCBBZGRGb250U2hhZG93VXNpbmdGb250T3B0
aW9ucykKK3sKKyAgICBUZXN0Rm9udE9wdGlvbnMgKm9wdGlvbnMgPSBUZXN0Rm9udE9wdGlvbnMu
c2hhcmVkSW5zdGFuY2U7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckZvbnRNYW5hZ2Vy
VGVzdGluZyhOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyKTsKKworICAgIFt3ZWJWaWV3
IHNlbGVjdFdvcmQ6bmlsXTsKKyAgICBvcHRpb25zLnNoYWRvd1dpZHRoID0gMzsKKyAgICBvcHRp
b25zLnNoYWRvd0hlaWdodCA9IC0zOworICAgIG9wdGlvbnMuaGFzU2hhZG93ID0gWUVTOworCisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDAsIDAsIDAuMzMzMzMzKSAzcHggLTNweCAwcHgi
LCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtc2hhZG93Il0p
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBOU1No
YWRvdyAqc2hhZG93ID0gW3dlYlZpZXcgdHlwaW5nQXR0cmlidXRlc11bTlNTaGFkb3dBdHRyaWJ1
dGVOYW1lXTsKKyAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC53aWR0aCwgMyk7Cisg
ICAgRVhQRUNUX0VRKHNoYWRvdy5zaGFkb3dPZmZzZXQuaGVpZ2h0LCAtMyk7Cit9CisKK1RFU1Qo
Rm9udE1hbmFnZXJUZXN0cywgQWRkQW5kUmVtb3ZlQ29sb3JzVXNpbmdGb250T3B0aW9ucykKK3sK
KyAgICBUZXN0Rm9udE9wdGlvbnMgKm9wdGlvbnMgPSBUZXN0Rm9udE9wdGlvbnMuc2hhcmVkSW5z
dGFuY2U7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhO
U0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyLCBAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT5o
ZWxsbzwvYm9keT4iKTsKKyAgICBbd2ViVmlldyBzZWxlY3RXb3JkOm5pbF07CisKKyAgICBvcHRp
b25zLmJhY2tncm91bmRDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aFJlZDoxIGdyZWVuOjAgYmx1
ZTowIGFscGhhOjAuMl07CisgICAgb3B0aW9ucy5mb3JlZ3JvdW5kQ29sb3IgPSBbTlNDb2xvciBj
b2xvcldpdGhSZWQ6MCBncmVlbjowIGJsdWU6MSBhbHBoYToxXTsKKworICAgIEVYUEVDVF9XS19T
VFJFUSgicmdiKDAsIDAsIDI1NSkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25T
dGFydDpAImNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgyNTUsIDAsIDAsIDAu
MikiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImJhY2tncm91bmQt
Y29sb3IiXSk7CisgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgdHlwaW5n
QXR0cmlidXRlc107CisgICAgRVhQRUNUX1RSVUUoW1tOU0NvbG9yIGNvbG9yV2l0aFJlZDowIGdy
ZWVuOjAgYmx1ZToxIGFscGhhOjFdIGlzRXF1YWw6YXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWVdXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0NvbG9yIGNvbG9yV2l0aFJl
ZDoxIGdyZWVuOjAgYmx1ZTowIGFscGhhOjAuMl0gaXNFcXVhbDphdHRyaWJ1dGVzW05TQmFja2dy
b3VuZENvbG9yQXR0cmlidXRlTmFtZV1dKTsKKworICAgIG9wdGlvbnMuYmFja2dyb3VuZENvbG9y
ID0gbmlsOworICAgIG9wdGlvbnMuZm9yZWdyb3VuZENvbG9yID0gbmlsOworCisgICAgRVhQRUNU
X1dLX1NUUkVRKCJyZ2IoMCwgMCwgMCkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rp
b25TdGFydDpAImNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgwLCAwLCAwLCAw
KSIsIFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiYmFja2dyb3VuZC1j
b2xvciJdKTsKKyAgICBhdHRyaWJ1dGVzID0gW3dlYlZpZXcgdHlwaW5nQXR0cmlidXRlc107Cisg
ICAgRVhQRUNUX05VTEwoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVd
KTsKKyAgICBFWFBFQ1RfTlVMTChhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rl
c3RGb250T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOGJhMDc1ZmRiZjgyNDNhYzgyNjYzOTE1ODkw
MDRhOGJjOGEwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEFw
cEtpdC9BcHBLaXQuaD4KKworQGludGVyZmFjZSBUZXN0Rm9udE9wdGlvbnMgOiBOU09iamVjdAor
CitAcHJvcGVydHkgKGNsYXNzLCByZWFkb25seSkgVGVzdEZvbnRPcHRpb25zICpzaGFyZWRJbnN0
YW5jZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNEaWN0aW9uYXJ5ICpzZWxl
Y3RlZEF0dHJpYnV0ZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaGFz
TXVsdGlwbGVGb250czsKKworLy8gRm9udCBzaGFkb3cgbWFuaXB1bGF0aW9uLgorQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgaGFzU2hhZG93OworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxv
YXQgc2hhZG93V2lkdGg7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzaGFkb3dIZWln
aHQ7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzaGFkb3dCbHVyUmFkaXVzOworCisv
LyBGb250IGNvbG9ycy4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0NvbG9yICpmb3Jl
Z3JvdW5kQ29sb3I7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNDb2xvciAqYmFja2dy
b3VuZENvbG9yOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVz
dEZvbnRPcHRpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNjZjNmU0MmQ1NzA4NTk2OTBkM2JlZjA1ODYx
NWRmODY3ZDM3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0Rm9udE9wdGlvbnMubW0KQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RGb250T3B0aW9ucy5oIgorCisjaWYgUExBVEZPUk0o
TUFDKSAmJiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBcHBLaXRTUEkuaCIKKyNpbXBvcnQg
IkNsYXNzTWV0aG9kU3dpenpsZXIuaCIKKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworCitzdGF0aWMgVGVzdEZvbnRPcHRpb25zICpzaGFy
ZWRGb250T3B0aW9uc0ZvclRlc3RpbmcoKQoreworICAgIHJldHVybiBUZXN0Rm9udE9wdGlvbnMu
c2hhcmVkSW5zdGFuY2U7Cit9CisKK0BpbnRlcmZhY2UgVGVzdEZvbnRPcHRpb25zICgpCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRp
b25zOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdEZvbnRPcHRpb25zIHsKKyAgICBSZXRh
aW5QdHI8TlNGb250T3B0aW9ucz4gX2ZvbnRPcHRpb25zOworICAgIENHU2l6ZSBfc2hhZG93T2Zm
c2V0OworICAgIENHRmxvYXQgX3NoYWRvd0JsdXJSYWRpdXM7CisgICAgQk9PTCBfaGFzU2hhZG93
OworICAgIEJPT0wgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzOworCisgICAgUmV0YWluUHRyPE5T
Q29sb3I+IF9mb3JlZ3JvdW5kQ29sb3I7CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IF9iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgQk9PTCBfaGFzUGVuZGluZ0NvbG9yQ2hhbmdlczsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenps
ZXI7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX3NlbGVjdGVkQXR0cmlidXRlczsKKyAg
ICBCT09MIF9oYXNNdWx0aXBsZUZvbnRzOworfQorCitAc3ludGhlc2l6ZSBoYXNTaGFkb3c9X2hh
c1NoYWRvdzsKK0BzeW50aGVzaXplIHNoYWRvd0JsdXJSYWRpdXM9X3NoYWRvd0JsdXJSYWRpdXM7
CitAc3ludGhlc2l6ZSBoYXNNdWx0aXBsZUZvbnRzPV9oYXNNdWx0aXBsZUZvbnRzOworCisrIChp
bnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2UKK3sKKyAgICBzdGF0aWMgVGVzdEZvbnRPcHRpb25z
ICpzaGFyZWRJbnN0YW5jZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TRm9udE9wdGlvbnMg
KnNoYXJlZEZvbnRPcHRpb25zID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIp
IHNoYXJlZEZvbnRPcHRpb25zXTsKKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW1Rlc3RGb250
T3B0aW9ucyBhbGxvY10gaW5pdFdpdGhGb250T3B0aW9uczpzaGFyZWRGb250T3B0aW9uc107Cisg
ICAgfSk7CisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
Zm9udE9wdGlvbnMgPSBmb250T3B0aW9uczsKKyAgICBBU1NFUlQoX2ZvbnRPcHRpb25zKTsKKwor
ICAgIF9zaGFkb3dPZmZzZXQgPSBDR1NpemVaZXJvOworICAgIF9zaGFkb3dCbHVyUmFkaXVzID0g
MDsKKyAgICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
YXNzTWV0aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBA
c2VsZWN0b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVk
Rm9udE9wdGlvbnNGb3JUZXN0aW5nKSk7CisgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0g
Tk87CisgICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsKKworICAgIHJldHVybiBzZWxmOworfQor
CistIChOU0RpY3Rpb25hcnkgKilzZWxlY3RlZEF0dHJpYnV0ZXMKK3sKKyAgICByZXR1cm4gX3Nl
bGVjdGVkQXR0cmlidXRlcy5nZXQoKTsKK30KKworLSAoTlNGb250T3B0aW9ucyAqKWZvbnRPcHRp
b25zCit7CisgICAgcmV0dXJuIF9mb250T3B0aW9ucy5nZXQoKTsKK30KKworLSAoQ0dGbG9hdClz
aGFkb3dXaWR0aAoreworICAgIHJldHVybiBfc2hhZG93T2Zmc2V0LndpZHRoOworfQorCistICh2
b2lkKXNldFNoYWRvd1dpZHRoOihDR0Zsb2F0KXNoYWRvd1dpZHRoCit7CisgICAgaWYgKF9zaGFk
b3dPZmZzZXQud2lkdGggPT0gc2hhZG93V2lkdGgpCisgICAgICAgIHJldHVybjsKKworICAgIFNl
dEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdGb250U2hhZG93Q2hhbmdlcyhfaGFzUGVuZGluZ1No
YWRvd0NoYW5nZXMsIFlFUyk7CisgICAgX3NoYWRvd09mZnNldC53aWR0aCA9IHNoYWRvd1dpZHRo
OworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKworLSAoQ0dG
bG9hdClzaGFkb3dIZWlnaHQKK3sKKyAgICByZXR1cm4gX3NoYWRvd09mZnNldC5oZWlnaHQ7Cit9
CisKKy0gKHZvaWQpc2V0U2hhZG93SGVpZ2h0OihDR0Zsb2F0KXNoYWRvd0hlaWdodAoreworICAg
IGlmIChfc2hhZG93T2Zmc2V0LmhlaWdodCA9PSBzaGFkb3dIZWlnaHQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFNldEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdGb250U2hhZG93Q2hhbmdlcyhf
aGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMsIFlFUyk7CisgICAgX3NoYWRvd09mZnNldC5oZWlnaHQg
PSBzaGFkb3dIZWlnaHQ7CisgICAgW3NlbGYgX2Rpc3BhdGNoRm9udEF0dHJpYnV0ZUNoYW5nZXNd
OworfQorCistICh2b2lkKXNldFNoYWRvd0JsdXJSYWRpdXM6KENHRmxvYXQpc2hhZG93Qmx1clJh
ZGl1cworeworICAgIGlmIChfc2hhZG93Qmx1clJhZGl1cyA9PSBzaGFkb3dCbHVyUmFkaXVzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxCT09MPiBoYXNQZW5kaW5nRm9udFNo
YWRvd0NoYW5nZXMoX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzLCBZRVMpOworICAgIF9zaGFkb3dC
bHVyUmFkaXVzID0gc2hhZG93Qmx1clJhZGl1czsKKyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0
cmlidXRlQ2hhbmdlc107Cit9CisKKy0gKHZvaWQpc2V0SGFzU2hhZG93OihCT09MKWhhc1NoYWRv
dworeworICAgIGlmIChfaGFzU2hhZG93ID09IGhhc1NoYWRvdykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0ZvbnRTaGFkb3dDaGFuZ2VzKF9oYXNQ
ZW5kaW5nU2hhZG93Q2hhbmdlcywgWUVTKTsKKyAgICBfaGFzU2hhZG93ID0gaGFzU2hhZG93Owor
ICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKworLSAoTlNDb2xv
ciAqKWZvcmVncm91bmRDb2xvcgoreworICAgIHJldHVybiBfZm9yZWdyb3VuZENvbG9yLmdldCgp
OworfQorCistICh2b2lkKXNldEZvcmVncm91bmRDb2xvcjooTlNDb2xvciAqKWNvbG9yCit7Cisg
ICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0NvbG9yQ2hhbmdlcyhfaGFzUGVuZGluZ0Nv
bG9yQ2hhbmdlcywgWUVTKTsKKyAgICBfZm9yZWdyb3VuZENvbG9yID0gYWRvcHROUyhbY29sb3Ig
Y29weV0pOworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKwor
LSAoTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBfYmFja2dyb3VuZENv
bG9yLmdldCgpOworfQorCistICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWNv
bG9yCit7CisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0NvbG9yQ2hhbmdlcyhfaGFz
UGVuZGluZ0NvbG9yQ2hhbmdlcywgWUVTKTsKKyAgICBfYmFja2dyb3VuZENvbG9yID0gYWRvcHRO
UyhbY29sb3IgY29weV0pOworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
XTsKK30KKworLSAodm9pZClfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdlcworeworICAgIFtO
U0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyLnRhcmdldCBwZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKGNoYW5nZUF0dHJpYnV0ZXM6KSB3aXRoT2JqZWN0OnNlbGZdOworfQorCistIChOU0Rp
Y3Rpb25hcnkgKiljb252ZXJ0QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcwor
eworICAgIGF1dG8gY29udmVydGVkQXR0cmlidXRlcyA9IGFkb3B0TlMoW2F0dHJpYnV0ZXMgbXV0
YWJsZUNvcHldKTsKKworICAgIGlmIChfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMpIHsKKyAgICAg
ICAgaWYgKF9oYXNTaGFkb3cpIHsKKyAgICAgICAgICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhb
W05TU2hhZG93IGFsbG9jXSBpbml0XSk7CisgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd0Js
dXJSYWRpdXM6X3NoYWRvd0JsdXJSYWRpdXNdOworICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFk
b3dPZmZzZXQ6X3NoYWRvd09mZnNldF07CisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRl
cyBzZXRPYmplY3Q6c2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHJlbW92ZU9i
amVjdEZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOworICAgIH0KKworICAgIGlmIChfaGFz
UGVuZGluZ0NvbG9yQ2hhbmdlcykgeworICAgICAgICBpZiAoX2ZvcmVncm91bmRDb2xvcikKKyAg
ICAgICAgICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHNldE9iamVjdDpfZm9yZWdyb3VuZENvbG9y
LmdldCgpIGZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyByZW1vdmVPYmplY3RGb3JLZXk6
TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKworICAgICAgICBpZiAoX2JhY2tncm91
bmRDb2xvcikKKyAgICAgICAgICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHNldE9iamVjdDpfYmFj
a2dyb3VuZENvbG9yLmdldCgpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVd
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyByZW1vdmVP
YmplY3RGb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29udmVydGVkQXR0cmlidXRlcy5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lk
KXNldFNlbGVjdGVkQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBpc011bHRp
cGxlOihCT09MKW11bHRpcGxlCit7CisgICAgX2hhc011bHRpcGxlRm9udHMgPSBtdWx0aXBsZTsK
KyAgICBfc2VsZWN0ZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKK30KKworLSAodm9pZClmb3J3
YXJkSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgoreworICAgIGlmIChbX2Zv
bnRPcHRpb25zIHJlc3BvbmRzVG9TZWxlY3RvcjppbnZvY2F0aW9uLnNlbGVjdG9yXSkgeworICAg
ICAgICBbaW52b2NhdGlvbiBpbnZva2VXaXRoVGFyZ2V0Ol9mb250T3B0aW9ucy5nZXQoKV07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbc3VwZXIgZm9yd2FyZEludm9jYXRpb246aW52
b2NhdGlvbl07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJ
X0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351626</attachid>
            <date>2018-10-04 13:59:40 -0700</date>
            <delta_ts>2018-10-04 15:09:00 -0700</delta_ts>
            <desc>Add rdar to ChangeLog</desc>
            <filename>bug-190289-20181004135939.patch</filename>
            <type>text/plain</type>
            <size>26166</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjljMGRmZTE2Nzg5ZDZh
ZTUzZjZkYzdiYjhkM2IzMTIzNGQyNTk0OS4uZGVjZTA3YTcyNTM0NmJkMDM3N2FhMzU3N2E2OTIw
ZjlmNDQ5M2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTEwLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gRml4
IHNvbWUgZm9udCBhdHRyaWJ1dGUgY29udmVyc2lvbiBidWdzIGluIHByZXBhcmF0aW9uIGZvciAi
Rm9udCA+IFN0eWxlc+KApiIgc3VwcG9ydCBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTAyODkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ1MDIwODA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2VzIHNvbWUgc21hbGwgYWRqdXN0bWVudHMgdG8gZml4IHR3byBidWdzIGluIGZv
bnQgYXR0cmlidXRlIGNvbnZlcnNpb24gbG9naWMuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWwu
CisKKyAgICAgICAgVGVzdHM6ICBGb250TWFuYWdlclRlc3RzLkFkZEZvbnRTaGFkb3dVc2luZ0Zv
bnRPcHRpb25zCisgICAgICAgICAgICAgICAgRm9udE1hbmFnZXJUZXN0cy5BZGRBbmRSZW1vdmVD
b2xvcnNVc2luZ0ZvbnRPcHRpb25zCisKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc1ZhbHVlTGlzdEZvclNoYWRvdyk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tOgorCisgICAgICAg
IEN1cnJlbnRseSwgd2UgYmFpbCBmcm9tIGFkZGluZyBhIGZvbnQgc2hhZG93IGlmIHRoZSBzaGFk
b3cncyBvZmZzZXQgaXMgZW1wdHkuIEhvd2V2ZXIsIHZhbGlkIHNoYWRvdyBvZmZzZXRzIG1heQor
ICAgICAgICBoYXZlIG5lZ2F0aXZlIGRpbWVuc2lvbnMsIHNvIGEgY2hlY2sgZm9yIGBpc1plcm8o
KWAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKworICAgICAgICAoV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9X
ZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbToKKworICAgICAgICBGYWxsIGJhY2sgdG8gYSB0
cmFuc3BhcmVudCBiYWNrZ3JvdW5kIGNvbG9yOyB0aGlzIGFsbG93cyBzZW5kZXJzIHRvIHJlbW92
ZSB0aGUgY3VycmVudCBiYWNrZ3JvdW5kIGNvbG9yIGJ5IGp1c3QKKyAgICAgICAgcmVtb3Zpbmcg
TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIGZyb20gdGhlIGF0dHJpYnV0ZSBkaWN0aW9u
YXJ5LCByYXRoZXIgdGhhbiBleHBsaWNpdGx5IHNldHRpbmcgaXQgdG8gdGhlCisgICAgICAgIHRy
YW5zcGFyZW50IGNvbG9yICh0aGlzIHNjZW5hcmlvIGlzIGV4ZXJjaXNlZCB3aGVuIHVzaW5nICJG
b250ID4gU3R5bGVz4oCmIiB0byBzcGVjaWZ5IGEgZm9udCBzdHlsZSB3aXRob3V0IGEKKyAgICAg
ICAgYmFja2dyb3VuZCBjb2xvcikuCisKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkRm9udEF0
dHJpYnV0ZUNoYW5nZXMpOgorCiAyMDE4LTEwLTAzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBFbmFibGUgSDI2NCBzaW11bGNhc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKaW5kZXggM2ExNTM3NmQ2NGMx
Y2MzNTZmN2I2NzAwNmI1OGZkNjEzODFmNGQ4Mi4uZjBiMTNlYzgxZmYzOTYxMjAwMjE2ZmFjZWI2
MjliZjkxY2U4NGZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0
cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmli
dXRlQ2hhbmdlcy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IEZvbnRDaGFuZ2VzOjpjcmVhdGVTdHlsZVByb3BlcnRpZXMoKSBjb25zdAogCiBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gY3NzVmFsdWVMaXN0Rm9yU2hhZG93KGNvbnN0IEZvbnRTaGFk
b3cmIHNoYWRvdykKIHsKLSAgICBpZiAoc2hhZG93Lm9mZnNldC5pc0VtcHR5KCkgJiYgIXNoYWRv
dy5ibHVyUmFkaXVzKQorICAgIGlmIChzaGFkb3cub2Zmc2V0LmlzWmVybygpICYmICFzaGFkb3cu
Ymx1clJhZGl1cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KaW5kZXggNDcwZTI5MmQz
NjQyNGQxODE5NzhjNGI4YTNiNmMxMjBlOGQzMjA1Yy4uYWFiZWIyMGI4OTU1MTA2ZTVjZGMyMDli
ZmRmMTA4OGEzYmRjMzFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9Gb250QXR0cmlidXRlc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQpAQCAtNDIsMTAgKzQyLDggQEAgUmV0YWluUHRyPE5T
RGljdGlvbmFyeT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAogICAg
IGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQogICAgICAgICBhdHRyaWJ1dGVzW05TQmFj
a2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNvbG9yKGJhY2tncm91bmRDb2xv
cik7CiAKLSAgICBpZiAoZm9udFNoYWRvdy5jb2xvci5pc1ZhbGlkKCkgJiYgKCFmb250U2hhZG93
Lm9mZnNldC5pc0VtcHR5KCkgfHwgZm9udFNoYWRvdy5ibHVyUmFkaXVzKSkgewotICAgICAgICBh
dXRvIHNoYWRvdyA9IGZvbnRTaGFkb3cuY3JlYXRlU2hhZG93KCk7Ci0gICAgICAgIGF0dHJpYnV0
ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSA9IHNoYWRvdy5nZXQoKTsKLSAgICB9CisgICAgaWYg
KGZvbnRTaGFkb3cuY29sb3IuaXNWYWxpZCgpICYmICghZm9udFNoYWRvdy5vZmZzZXQuaXNaZXJv
KCkgfHwgZm9udFNoYWRvdy5ibHVyUmFkaXVzKSkKKyAgICAgICAgYXR0cmlidXRlc1tOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdID0gZm9udFNoYWRvdy5jcmVhdGVTaGFkb3coKS5nZXQoKTsKIAogICAg
IGlmIChzdWJzY3JpcHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1
YnNjcmlwdCkKICAgICAgICAgYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0g
PSBAKC0xKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNGb250TWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQppbmRleCA5ZjdkN2RkOTgyZTNiMDg4MzViZTJiODM3
M2VjOGJlNTdlM2M2ZTU1Li45ZDBiNjhlZmMxMDcwZmYyMDIzMmQ3MmYxNWJjNTBlMDExMTUzMGI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1h
bmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgRm9udEF0dHJpYnV0ZUNo
YW5nZXMgY29tcHV0ZWRGb250QXR0cmlidXRlQ2hhbmdlcyhOU0ZvbnRNYW5hZ2VyICpmb250TWFu
YWdlciwgaWQKIAogICAgIE5TQ29sb3IgKmNvbnZlcnRlZEJhY2tncm91bmRDb2xvckEgPSBbY29u
dmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRl
TmFtZV07CiAgICAgaWYgKGNvbnZlcnRlZEJhY2tncm91bmRDb2xvckEgPT0gW2NvbnZlcnRlZEF0
dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdKQot
ICAgICAgICBjaGFuZ2VzLnNldEJhY2tncm91bmRDb2xvcihjb2xvckZyb21OU0NvbG9yKGNvbnZl
cnRlZEJhY2tncm91bmRDb2xvckEpKTsKKyAgICAgICAgY2hhbmdlcy5zZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRCYWNrZ3JvdW5kQ29sb3JBID86IE5TQ29sb3Iu
Y2xlYXJDb2xvcikpOwogCiAgICAgY2hhbmdlcy5zZXRGb250Q2hhbmdlcyhjb21wdXRlZEZvbnRD
aGFuZ2VzKGZvbnRNYW5hZ2VyLCBvcmlnaW5hbEZvbnRBLCBbY29udmVydGVkQXR0cmlidXRlc0Eg
b2JqZWN0Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdLCBbY29udmVydGVkQXR0cmlidXRlc0Ig
b2JqZWN0Rm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1MGM5NTc1ODBiYzY4MTRjM2I2ZGVk
Y2IyNjJmYmUzYzg3NTkyOGVmLi5hOGQyMjJmZjAxMDI3OWNkMTkzYmRmNTE3MjUyOTkzNGQ4ODZh
ZTIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTgtMTAtMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBGaXggc29tZSBmb250IGF0dHJpYnV0ZSBjb252
ZXJzaW9uIGJ1Z3MgaW4gcHJlcGFyYXRpb24gZm9yICJGb250ID4gU3R5bGVz4oCmIiBzdXBwb3J0
IGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDI4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUwMjA4MDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgdGVzdHMg
dG8gZXhlcmNpc2UgdHdvIGNvcm5lciBjYXNlcyB3aGVuIHVzaW5nIE5TRm9udE9wdGlvbnMgKCJG
b250ID4gU3R5bGVz4oCmIikgdG8gY2hhbmdlIGZvbnQKKyAgICAgICAgYXR0cmlidXRlcyBhdCB0
aGUgY3VycmVudCBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1Rlc3RXZWJLaXRBUEkvbWFjL0FwcEtpdFNQSS5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisgICAgICAgICh3ZWJWaWV3Rm9y
Rm9udE1hbmFnZXJUZXN0aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOiBBZGRlZC4KKworICAg
ICAgICBJbnRyb2R1Y2UgVGVzdEZvbnRPcHRpb25zLCB3aGljaCB3cmFwcyB0aGUgc2hhcmVkIE5T
Rm9udE9wdGlvbnMgYW5kIHN3aXp6bGVzIGAtc2hhcmVkRm9udE9wdGlvbnNgIHRvIHJldHVybiBh
CisgICAgICAgIGdsb2JhbCBpbnN0YW5jZSBvZiBpdHNlbGYuIFRlc3RGb250T3B0aW9ucyBzdXBw
b3J0cyBzZXZlcmFsIHRlc3RpbmcgaGVscGVycyB0byBhZGQgb3IgcmVtb3ZlIGZvbnQgc2hhZG93
cywKKyAgICAgICAgZm9yZWdyb3VuZCBjb2xvcnMsIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KKwor
ICAgICAgICAoc2hhcmVkRm9udE9wdGlvbnNGb3JUZXN0aW5nKToKKyAgICAgICAgKCtbVGVzdEZv
bnRPcHRpb25zIHNoYXJlZEluc3RhbmNlXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBp
bml0V2l0aEZvbnRPcHRpb25zOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2VsZWN0
ZWRBdHRyaWJ1dGVzXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBmb250T3B0aW9uc10p
OgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2hhZG93V2lkdGhdKToKKyAgICAgICAgKC1b
VGVzdEZvbnRPcHRpb25zIHNldFNoYWRvd1dpZHRoOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9w
dGlvbnMgc2hhZG93SGVpZ2h0XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFk
b3dIZWlnaHQ6XSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBzZXRTaGFkb3dCbHVyUmFk
aXVzOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgc2V0SGFzU2hhZG93Ol0pOgorICAg
ICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgZm9yZWdyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1Rl
c3RGb250T3B0aW9ucyBzZXRGb3JlZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1Rlc3RGb250
T3B0aW9ucyBiYWNrZ3JvdW5kQ29sb3JdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNl
dEJhY2tncm91bmRDb2xvcjpdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIF9kaXNwYXRj
aEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXSk6CisgICAgICAgICgtW1Rlc3RGb250T3B0aW9ucyBjb252
ZXJ0QXR0cmlidXRlczpdKToKKyAgICAgICAgKC1bVGVzdEZvbnRPcHRpb25zIHNldFNlbGVjdGVk
QXR0cmlidXRlczppc011bHRpcGxlOl0pOgorICAgICAgICAoLVtUZXN0Rm9udE9wdGlvbnMgZm9y
d2FyZEludm9jYXRpb246XSk6CisKIDIwMTgtMTAtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRW5hYmxlIHNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJp
ZXNFbmFibGVkIGJ5IGRlZmF1bHQgaW4gV2ViS2l0TGVnYWN5CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGMxNWM0NzkyNDEzMmI4NDMxOWQyZDRlMTQ4ZGYwNGQ0ODAzMDU1MjEuLjA0YjVkYTU1
MzRkZjhmYjExY2Y2NGFmZDNiYTQ0NDMxMDFlNmU4MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04NTYsNiArODU2LDcgQEAKIAkJRjRGMTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdl
LXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFD
MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0
MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgt
YXVkaW8uaHRtbCAqLzsgfTsKIAkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNraW5ueS1h
dXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGNDA1QkIxRDRDMENGODAwN0E5NzA3IC8q
IHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CisJCUY0RjVC
QjUyMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9udE9wdGlvbnMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY1QkI1MTIxNjY3QkFBMDAyRDA2Qjkg
LyogVGVzdEZvbnRPcHRpb25zLm1tICovOyB9OwogCQlGNEZBOTE4MTFFNjE4NDlCMDA3QjhDMUQg
LyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGQTkxN0YxRTYxODQ5QjAwN0I4QzFEIC8qIFdLV2ViVmll
d01hY0VkaXRpbmdUZXN0cy5tbSAqLzsgfTsKIAkJRjRGQTkxODMxRTYxODU3QjAwN0I4QzFEIC8q
IGRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxlY3QtdHJhaWxpbmctc3BhY2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZBOTE4MjFF
NjE4NTY2MDA3QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1z
cGFjZS5odG1sICovOyB9OwogCQlGNEZDMDc3NzIwRjAxM0I2MDBDQTA0M0MgLyogc2lnbmlmaWNh
bnQtdGV4dC1taWxlc3RvbmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNh
bnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLzsgfTsKQEAgLTIxMTQsNiArMjExNSw4IEBACiAJCUY0
RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxh
eWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNDA1QkExRDRDMENG
ODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1zaXplLWF1dG9wbGF5aW5nLXZpZGVv
LXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjQwNUJC
MUQ0QzBDRjgwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInNraW5ueS1hdXRvcGxheWluZy12aWRl
by13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1
MDIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
c3RGb250T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEY1QkI1MTIx
NjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRPcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVGVzdEZvbnRPcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZB
OTE3RjFFNjE4NDlCMDA3QjhDMUQgLyogV0tXZWJWaWV3TWFjRWRpdGluZ1Rlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3TWFjRWRpdGluZ1Rl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZBOTE4MjFFNjE4NTY2MDA3
QjhDMUQgLyogZG91YmxlLWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImRvdWJsZS1jbGljay1kb2VzLW5vdC1zZWxl
Y3QtdHJhaWxpbmctc3BhY2UuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0Q29jb2EvZG91Ymxl
LWNsaWNrLWRvZXMtbm90LXNlbGVjdC10cmFpbGluZy1zcGFjZS5odG1sIjsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQlGNEZDMDc3NjIwRjAxMDgxMDBDQTA0M0MgLyogc2lnbmlmaWNh
bnQtdGV4dC1taWxlc3RvbmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJzaWduaWZpY2FudC10ZXh0LW1pbGVz
dG9uZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNzQsNiArMzE3Nyw4
IEBACiAJCQkJRjQ2MTI4Q0EyMTFENDc1MTAwRDlGQURCIC8qIFRlc3REcmFnZ2luZ0luZm8ubW0g
Ki8sCiAJCQkJRjRFMEEyQjYyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2Vp
dmVyLmggKi8sCiAJCQkJRjRFMEEyQjcyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlz
ZVJlY2VpdmVyLm1tICovLAorCQkJCUY0RjVCQjUwMjE2NjdCQUEwMDJEMDZCOSAvKiBUZXN0Rm9u
dE9wdGlvbnMuaCAqLywKKwkJCQlGNEY1QkI1MTIxNjY3QkFBMDAyRDA2QjkgLyogVGVzdEZvbnRP
cHRpb25zLm1tICovLAogCQkJCUY0NUQzODhGMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVj
dG9yQmFyLmggKi8sCiAJCQkJRjQ1RDM4OTAyMTVBN0I0QjAwMkEyOTc5IC8qIFRlc3RJbnNwZWN0
b3JCYXIubW0gKi8sCiAJCQkJQzA4NTg3QkUxM0ZFOTU2QzAwMUVGNEU1IC8qIFdlYktpdEFnbm9z
dGljVGVzdC5oICovLApAQCAtMzk5NSw2ICs0MDAwLDcgQEAKIAkJCQk3Q0NFN0VBOTFBNDExQTFE
MDA0NDdDNEMgLyogVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0NjEyOENCMjExRDQ3NTEwMEQ5RkFEQiAvKiBUZXN0RHJhZ2dpbmdJbmZvLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjRFMEEyQjgyMTIyODQ3NDAwQUY3QzdGIC8qIFRlc3RGaWxl
UHJvbWlzZVJlY2VpdmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjRGNUJCNTIyMTY2N0JBQTAw
MkQwNkI5IC8qIFRlc3RGb250T3B0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NUUxNTc2
MjExMkNFNjIwMDMwN0U4MiAvKiBUZXN0SW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUY0NUQzODkxMjE1QTdCNEIwMDJBMjk3OSAvKiBUZXN0SW5zcGVjdG9yQmFyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQxQzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvVGVzdFdlYktpdEFQSS9tYWMvQXBwS2l0U1BJLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1Rlc3RXZWJLaXRBUEkvbWFjL0FwcEtpdFNQSS5oCmluZGV4IDJjNWE3YTg5Njdk
ODA0OGE0ZjgwMTY5MTI2NDE0NzYyZDA4Yjg0ZWMuLjRmMWY5YmI0NTBlNGE2NGMyYjdhOTczOWU0
ZGY3ZTg3NDFhZDk3OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvVGVz
dFdlYktpdEFQSS9tYWMvQXBwS2l0U1BJLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9UZXN0V2ViS2l0QVBJL21hYy9BcHBLaXRTUEkuaApAQCAtMTAzLDQgKzEwMyw4IEBAIE5TU3Ry
aW5nICogY29uc3QgTlNJbnNwZWN0b3JCYXJUZXh0QWxpZ25tZW50SXRlbUlkZW50aWZpZXIgPSBA
Ik5TSW5zcGVjdG9yQmFyVGV4CiAtICh2b2lkKW1lbnVOZWVkc1VwZGF0ZTooTlNNZW51ICopbWVu
dTsKIEBlbmQKIAorQGludGVyZmFjZSBOU0ZvbnRPcHRpb25zIDogTlNPYmplY3QKKysgKGluc3Rh
bmNldHlwZSlzaGFyZWRGb250T3B0aW9uczsKK0BlbmQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2Vy
VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3Rz
Lm1tCmluZGV4IDcwNjE2NzNlY2UwNjExZjMxYTk0NTRjYzEyZmIwODIyYmQ1ZDdmYzkuLjZhNDQ2
NzllZDU5MzJjM2ExZTk1MTAyNmIyNTJhYTI1NDI5MTAwZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMzEsNiArMzEsNyBA
QAogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJOU0ZvbnRQYW5lbFRlc3RpbmcuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0Rm9udE9wdGlvbnMu
aCIKICNpbXBvcnQgIlRlc3RJbnNwZWN0b3JCYXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xMTMsMTggKzExNCwy
MyBAQAogCiBAZW5kCiAKLXN0YXRpYyBSZXRhaW5QdHI8Rm9udE1hbmFnZXJUZXN0V0tXZWJWaWV3
PiB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2Vy
KQorc3RhdGljIFJldGFpblB0cjxGb250TWFuYWdlclRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JG
b250TWFuYWdlclRlc3RpbmcoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIE5TU3RyaW5nICpt
YXJrdXApCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0ZvbnRNYW5hZ2VyVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0p
OwotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRl
bnRlZGl0YWJsZT4iCi0gICAgICAgICI8c3BhbiBpZD0nZm9vJz5mb288L3NwYW4+IDxzcGFuIGlk
PSdiYXInPmJhcjwvc3Bhbj4gPHNwYW4gaWQ9J2Jheic+YmF6PC9zcGFuPiIKLSAgICAgICAgIjwv
Ym9keT48c2NyaXB0PmRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBldmVu
dCA9PiBsYXN0SW5wdXRFdmVudCA9IGV2ZW50KTwvc2NyaXB0PiJdOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzptYXJrdXBdOwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKICAgICBbd2Vi
VmlldyBfc2V0RWRpdGFibGU6WUVTXTsKICAgICBmb250TWFuYWdlci50YXJnZXQgPSB3ZWJWaWV3
LmdldCgpOwogICAgIHJldHVybiB3ZWJWaWV3OwogfQogCitzdGF0aWMgUmV0YWluUHRyPEZvbnRN
YW5hZ2VyVGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhOU0ZvbnRN
YW5hZ2VyICpmb250TWFuYWdlcikKK3sKKyAgICByZXR1cm4gd2ViVmlld0ZvckZvbnRNYW5hZ2Vy
VGVzdGluZyhmb250TWFuYWdlciwgQCI8Ym9keSBjb250ZW50ZWRpdGFibGU+IgorICAgICAgICAi
PHNwYW4gaWQ9J2Zvbyc+Zm9vPC9zcGFuPiA8c3BhbiBpZD0nYmFyJz5iYXI8L3NwYW4+IDxzcGFu
IGlkPSdiYXonPmJhejwvc3Bhbj4iCisgICAgICAgICI8L2JvZHk+PHNjcmlwdD5kb2N1bWVudC5i
b2R5LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgZXZlbnQgPT4gbGFzdElucHV0RXZlbnQgPSBl
dmVudCk8L3NjcmlwdD4iKTsKK30KKwogc3RhdGljIFJldGFpblB0cjxOU01lbnVJdGVtQ2VsbD4g
bWVudUl0ZW1DZWxsRm9yRm9udEFjdGlvbihOU1VJbnRlZ2VyIHRhZykKIHsKICAgICBhdXRvIG1l
bnVJdGVtID0gYWRvcHROUyhbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdKTsKQEAgLTQ3NCw2ICs0
ODAsNDggQEAgVEVTVChGb250TWFuYWdlclRlc3RzLCBUeXBpbmdBdHRyaWJ1dGVzQWZ0ZXJTdWJz
Y3JpcHRBbmRTdXBlcnNjcmlwdCkKICAgICBFWFBFQ1RfRVEoMCwgW1t3ZWJWaWV3IHR5cGluZ0F0
dHJpYnV0ZXNdW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRlZ2VyVmFsdWVdKTsKIH0K
IAorVEVTVChGb250TWFuYWdlclRlc3RzLCBBZGRGb250U2hhZG93VXNpbmdGb250T3B0aW9ucykK
K3sKKyAgICBUZXN0Rm9udE9wdGlvbnMgKm9wdGlvbnMgPSBUZXN0Rm9udE9wdGlvbnMuc2hhcmVk
SW5zdGFuY2U7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGlu
ZyhOU0ZvbnRNYW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyKTsKKworICAgIFt3ZWJWaWV3IHNlbGVj
dFdvcmQ6bmlsXTsKKyAgICBvcHRpb25zLnNoYWRvd1dpZHRoID0gMzsKKyAgICBvcHRpb25zLnNo
YWRvd0hlaWdodCA9IC0zOworICAgIG9wdGlvbnMuaGFzU2hhZG93ID0gWUVTOworCisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJyZ2JhKDAsIDAsIDAsIDAuMzMzMzMzKSAzcHggLTNweCAwcHgiLCBbd2Vi
VmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAInRleHQtc2hhZG93Il0pOworICAg
IFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBOU1NoYWRvdyAq
c2hhZG93ID0gW3dlYlZpZXcgdHlwaW5nQXR0cmlidXRlc11bTlNTaGFkb3dBdHRyaWJ1dGVOYW1l
XTsKKyAgICBFWFBFQ1RfRVEoc2hhZG93LnNoYWRvd09mZnNldC53aWR0aCwgMyk7CisgICAgRVhQ
RUNUX0VRKHNoYWRvdy5zaGFkb3dPZmZzZXQuaGVpZ2h0LCAtMyk7Cit9CisKK1RFU1QoRm9udE1h
bmFnZXJUZXN0cywgQWRkQW5kUmVtb3ZlQ29sb3JzVXNpbmdGb250T3B0aW9ucykKK3sKKyAgICBU
ZXN0Rm9udE9wdGlvbnMgKm9wdGlvbnMgPSBUZXN0Rm9udE9wdGlvbnMuc2hhcmVkSW5zdGFuY2U7
CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvckZvbnRNYW5hZ2VyVGVzdGluZyhOU0ZvbnRN
YW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyLCBAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT5oZWxsbzwv
Ym9keT4iKTsKKyAgICBbd2ViVmlldyBzZWxlY3RXb3JkOm5pbF07CisKKyAgICBvcHRpb25zLmJh
Y2tncm91bmRDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aFJlZDoxIGdyZWVuOjAgYmx1ZTowIGFs
cGhhOjAuMl07CisgICAgb3B0aW9ucy5mb3JlZ3JvdW5kQ29sb3IgPSBbTlNDb2xvciBjb2xvcldp
dGhSZWQ6MCBncmVlbjowIGJsdWU6MSBhbHBoYToxXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgi
cmdiKDAsIDAsIDI1NSkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpA
ImNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgyNTUsIDAsIDAsIDAuMikiLCBb
d2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFydDpAImJhY2tncm91bmQtY29sb3Ii
XSk7CisgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW3dlYlZpZXcgdHlwaW5nQXR0cmli
dXRlc107CisgICAgRVhQRUNUX1RSVUUoW1tOU0NvbG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjAg
Ymx1ZToxIGFscGhhOjFdIGlzRXF1YWw6YXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWVdXSk7CisgICAgRVhQRUNUX1RSVUUoW1tOU0NvbG9yIGNvbG9yV2l0aFJlZDoxIGdy
ZWVuOjAgYmx1ZTowIGFscGhhOjAuMl0gaXNFcXVhbDphdHRyaWJ1dGVzW05TQmFja2dyb3VuZENv
bG9yQXR0cmlidXRlTmFtZV1dKTsKKworICAgIG9wdGlvbnMuYmFja2dyb3VuZENvbG9yID0gbmls
OworICAgIG9wdGlvbnMuZm9yZWdyb3VuZENvbG9yID0gbmlsOworCisgICAgRVhQRUNUX1dLX1NU
UkVRKCJyZ2IoMCwgMCwgMCkiLCBbd2ViVmlldyBzdHlsZVByb3BlcnR5QXRTZWxlY3Rpb25TdGFy
dDpAImNvbG9yIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgicmdiYSgwLCAwLCAwLCAwKSIsIFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAiYmFja2dyb3VuZC1jb2xvciJd
KTsKKyAgICBhdHRyaWJ1dGVzID0gW3dlYlZpZXcgdHlwaW5nQXR0cmlidXRlc107CisgICAgRVhQ
RUNUX05VTEwoYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdKTsKKyAg
ICBFWFBFQ1RfTlVMTChhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9UZXN0Rm9udE9wdGlvbnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250
T3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOGJhMDc1ZmRiZjgyNDNhYzgyNjYzOTE1ODkwMDRhOGJj
OGEwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9u
dE9wdGlvbnMuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEFwcEtpdC9B
cHBLaXQuaD4KKworQGludGVyZmFjZSBUZXN0Rm9udE9wdGlvbnMgOiBOU09iamVjdAorCitAcHJv
cGVydHkgKGNsYXNzLCByZWFkb25seSkgVGVzdEZvbnRPcHRpb25zICpzaGFyZWRJbnN0YW5jZTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNEaWN0aW9uYXJ5ICpzZWxlY3RlZEF0
dHJpYnV0ZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaGFzTXVsdGlw
bGVGb250czsKKworLy8gRm9udCBzaGFkb3cgbWFuaXB1bGF0aW9uLgorQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgaGFzU2hhZG93OworQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgc2hh
ZG93V2lkdGg7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzaGFkb3dIZWlnaHQ7CitA
cHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzaGFkb3dCbHVyUmFkaXVzOworCisvLyBGb250
IGNvbG9ycy4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0NvbG9yICpmb3JlZ3JvdW5k
Q29sb3I7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNDb2xvciAqYmFja2dyb3VuZENv
bG9yOworCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRP
cHRpb25zLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNjZjNmU0MmQ1NzA4NTk2OTBkM2JlZjA1ODYxNWRmODY3
ZDM3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9u
dE9wdGlvbnMubW0KQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlRlc3RGb250T3B0aW9ucy5oIgorCisjaWYgUExBVEZPUk0oTUFDKSAm
JiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBcHBLaXRTUEkuaCIKKyNpbXBvcnQgIkNsYXNz
TWV0aG9kU3dpenpsZXIuaCIKKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJOworCitzdGF0aWMgVGVzdEZvbnRPcHRpb25zICpzaGFyZWRGb250
T3B0aW9uc0ZvclRlc3RpbmcoKQoreworICAgIHJldHVybiBUZXN0Rm9udE9wdGlvbnMuc2hhcmVk
SW5zdGFuY2U7Cit9CisKK0BpbnRlcmZhY2UgVGVzdEZvbnRPcHRpb25zICgpCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zOwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gVGVzdEZvbnRPcHRpb25zIHsKKyAgICBSZXRhaW5QdHI8
TlNGb250T3B0aW9ucz4gX2ZvbnRPcHRpb25zOworICAgIENHU2l6ZSBfc2hhZG93T2Zmc2V0Owor
ICAgIENHRmxvYXQgX3NoYWRvd0JsdXJSYWRpdXM7CisgICAgQk9PTCBfaGFzU2hhZG93OworICAg
IEJPT0wgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzOworCisgICAgUmV0YWluUHRyPE5TQ29sb3I+
IF9mb3JlZ3JvdW5kQ29sb3I7CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IF9iYWNrZ3JvdW5kQ29s
b3I7CisgICAgQk9PTCBfaGFzUGVuZGluZ0NvbG9yQ2hhbmdlczsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDbGFzc01ldGhvZFN3aXp6bGVyPiBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXI7Cisg
ICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX3NlbGVjdGVkQXR0cmlidXRlczsKKyAgICBCT09M
IF9oYXNNdWx0aXBsZUZvbnRzOworfQorCitAc3ludGhlc2l6ZSBoYXNTaGFkb3c9X2hhc1NoYWRv
dzsKK0BzeW50aGVzaXplIHNoYWRvd0JsdXJSYWRpdXM9X3NoYWRvd0JsdXJSYWRpdXM7CitAc3lu
dGhlc2l6ZSBoYXNNdWx0aXBsZUZvbnRzPV9oYXNNdWx0aXBsZUZvbnRzOworCisrIChpbnN0YW5j
ZXR5cGUpc2hhcmVkSW5zdGFuY2UKK3sKKyAgICBzdGF0aWMgVGVzdEZvbnRPcHRpb25zICpzaGFy
ZWRJbnN0YW5jZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TRm9udE9wdGlvbnMgKnNoYXJl
ZEZvbnRPcHRpb25zID0gW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpIHNoYXJl
ZEZvbnRPcHRpb25zXTsKKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBbW1Rlc3RGb250T3B0aW9u
cyBhbGxvY10gaW5pdFdpdGhGb250T3B0aW9uczpzaGFyZWRGb250T3B0aW9uc107CisgICAgfSk7
CisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCit7CisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfZm9udE9w
dGlvbnMgPSBmb250T3B0aW9uczsKKyAgICBBU1NFUlQoX2ZvbnRPcHRpb25zKTsKKworICAgIF9z
aGFkb3dPZmZzZXQgPSBDR1NpemVaZXJvOworICAgIF9zaGFkb3dCbHVyUmFkaXVzID0gMDsKKyAg
ICBfcmVwbGFjZUZvbnRPcHRpb25zU3dpenpsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTWV0
aG9kU3dpenpsZXI+KE5TQ2xhc3NGcm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpLCBAc2VsZWN0
b3Ioc2hhcmVkRm9udE9wdGlvbnMpLCByZWludGVycHJldF9jYXN0PElNUD4oc2hhcmVkRm9udE9w
dGlvbnNGb3JUZXN0aW5nKSk7CisgICAgX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzID0gTk87Cisg
ICAgX2hhc011bHRpcGxlRm9udHMgPSBOTzsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChO
U0RpY3Rpb25hcnkgKilzZWxlY3RlZEF0dHJpYnV0ZXMKK3sKKyAgICByZXR1cm4gX3NlbGVjdGVk
QXR0cmlidXRlcy5nZXQoKTsKK30KKworLSAoTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCit7
CisgICAgcmV0dXJuIF9mb250T3B0aW9ucy5nZXQoKTsKK30KKworLSAoQ0dGbG9hdClzaGFkb3dX
aWR0aAoreworICAgIHJldHVybiBfc2hhZG93T2Zmc2V0LndpZHRoOworfQorCistICh2b2lkKXNl
dFNoYWRvd1dpZHRoOihDR0Zsb2F0KXNoYWRvd1dpZHRoCit7CisgICAgaWYgKF9zaGFkb3dPZmZz
ZXQud2lkdGggPT0gc2hhZG93V2lkdGgpCisgICAgICAgIHJldHVybjsKKworICAgIFNldEZvclNj
b3BlPEJPT0w+IGhhc1BlbmRpbmdGb250U2hhZG93Q2hhbmdlcyhfaGFzUGVuZGluZ1NoYWRvd0No
YW5nZXMsIFlFUyk7CisgICAgX3NoYWRvd09mZnNldC53aWR0aCA9IHNoYWRvd1dpZHRoOworICAg
IFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKworLSAoQ0dGbG9hdClz
aGFkb3dIZWlnaHQKK3sKKyAgICByZXR1cm4gX3NoYWRvd09mZnNldC5oZWlnaHQ7Cit9CisKKy0g
KHZvaWQpc2V0U2hhZG93SGVpZ2h0OihDR0Zsb2F0KXNoYWRvd0hlaWdodAoreworICAgIGlmIChf
c2hhZG93T2Zmc2V0LmhlaWdodCA9PSBzaGFkb3dIZWlnaHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNldEZvclNjb3BlPEJPT0w+IGhhc1BlbmRpbmdGb250U2hhZG93Q2hhbmdlcyhfaGFzUGVu
ZGluZ1NoYWRvd0NoYW5nZXMsIFlFUyk7CisgICAgX3NoYWRvd09mZnNldC5oZWlnaHQgPSBzaGFk
b3dIZWlnaHQ7CisgICAgW3NlbGYgX2Rpc3BhdGNoRm9udEF0dHJpYnV0ZUNoYW5nZXNdOworfQor
CistICh2b2lkKXNldFNoYWRvd0JsdXJSYWRpdXM6KENHRmxvYXQpc2hhZG93Qmx1clJhZGl1cwor
eworICAgIGlmIChfc2hhZG93Qmx1clJhZGl1cyA9PSBzaGFkb3dCbHVyUmFkaXVzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxCT09MPiBoYXNQZW5kaW5nRm9udFNoYWRvd0No
YW5nZXMoX2hhc1BlbmRpbmdTaGFkb3dDaGFuZ2VzLCBZRVMpOworICAgIF9zaGFkb3dCbHVyUmFk
aXVzID0gc2hhZG93Qmx1clJhZGl1czsKKyAgICBbc2VsZiBfZGlzcGF0Y2hGb250QXR0cmlidXRl
Q2hhbmdlc107Cit9CisKKy0gKHZvaWQpc2V0SGFzU2hhZG93OihCT09MKWhhc1NoYWRvdworewor
ICAgIGlmIChfaGFzU2hhZG93ID09IGhhc1NoYWRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAg
U2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0ZvbnRTaGFkb3dDaGFuZ2VzKF9oYXNQZW5kaW5n
U2hhZG93Q2hhbmdlcywgWUVTKTsKKyAgICBfaGFzU2hhZG93ID0gaGFzU2hhZG93OworICAgIFtz
ZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKworLSAoTlNDb2xvciAqKWZv
cmVncm91bmRDb2xvcgoreworICAgIHJldHVybiBfZm9yZWdyb3VuZENvbG9yLmdldCgpOworfQor
CistICh2b2lkKXNldEZvcmVncm91bmRDb2xvcjooTlNDb2xvciAqKWNvbG9yCit7CisgICAgU2V0
Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0NvbG9yQ2hhbmdlcyhfaGFzUGVuZGluZ0NvbG9yQ2hh
bmdlcywgWUVTKTsKKyAgICBfZm9yZWdyb3VuZENvbG9yID0gYWRvcHROUyhbY29sb3IgY29weV0p
OworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30KKworLSAoTlND
b2xvciAqKWJhY2tncm91bmRDb2xvcgoreworICAgIHJldHVybiBfYmFja2dyb3VuZENvbG9yLmdl
dCgpOworfQorCistICh2b2lkKXNldEJhY2tncm91bmRDb2xvcjooTlNDb2xvciAqKWNvbG9yCit7
CisgICAgU2V0Rm9yU2NvcGU8Qk9PTD4gaGFzUGVuZGluZ0NvbG9yQ2hhbmdlcyhfaGFzUGVuZGlu
Z0NvbG9yQ2hhbmdlcywgWUVTKTsKKyAgICBfYmFja2dyb3VuZENvbG9yID0gYWRvcHROUyhbY29s
b3IgY29weV0pOworICAgIFtzZWxmIF9kaXNwYXRjaEZvbnRBdHRyaWJ1dGVDaGFuZ2VzXTsKK30K
KworLSAodm9pZClfZGlzcGF0Y2hGb250QXR0cmlidXRlQ2hhbmdlcworeworICAgIFtOU0ZvbnRN
YW5hZ2VyLnNoYXJlZEZvbnRNYW5hZ2VyLnRhcmdldCBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9y
KGNoYW5nZUF0dHJpYnV0ZXM6KSB3aXRoT2JqZWN0OnNlbGZdOworfQorCistIChOU0RpY3Rpb25h
cnkgKiljb252ZXJ0QXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcworeworICAg
IGF1dG8gY29udmVydGVkQXR0cmlidXRlcyA9IGFkb3B0TlMoW2F0dHJpYnV0ZXMgbXV0YWJsZUNv
cHldKTsKKworICAgIGlmIChfaGFzUGVuZGluZ1NoYWRvd0NoYW5nZXMpIHsKKyAgICAgICAgaWYg
KF9oYXNTaGFkb3cpIHsKKyAgICAgICAgICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhbW05TU2hh
ZG93IGFsbG9jXSBpbml0XSk7CisgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd0JsdXJSYWRp
dXM6X3NoYWRvd0JsdXJSYWRpdXNdOworICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dPZmZz
ZXQ6X3NoYWRvd09mZnNldF07CisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyBzZXRP
YmplY3Q6c2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHJlbW92ZU9iamVjdEZv
cktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOworICAgIH0KKworICAgIGlmIChfaGFzUGVuZGlu
Z0NvbG9yQ2hhbmdlcykgeworICAgICAgICBpZiAoX2ZvcmVncm91bmRDb2xvcikKKyAgICAgICAg
ICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHNldE9iamVjdDpfZm9yZWdyb3VuZENvbG9yLmdldCgp
IGZvcktleTpOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyByZW1vdmVPYmplY3RGb3JLZXk6TlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKworICAgICAgICBpZiAoX2JhY2tncm91bmRDb2xv
cikKKyAgICAgICAgICAgIFtjb252ZXJ0ZWRBdHRyaWJ1dGVzIHNldE9iamVjdDpfYmFja2dyb3Vu
ZENvbG9yLmdldCgpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBbY29udmVydGVkQXR0cmlidXRlcyByZW1vdmVPYmplY3RG
b3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKyAgICB9CisKKyAgICByZXR1
cm4gY29udmVydGVkQXR0cmlidXRlcy5hdXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKXNldFNl
bGVjdGVkQXR0cmlidXRlczooTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlcyBpc011bHRpcGxlOihC
T09MKW11bHRpcGxlCit7CisgICAgX2hhc011bHRpcGxlRm9udHMgPSBtdWx0aXBsZTsKKyAgICBf
c2VsZWN0ZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlczsKK30KKworLSAodm9pZClmb3J3YXJkSW52
b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbgoreworICAgIGlmIChbX2ZvbnRPcHRp
b25zIHJlc3BvbmRzVG9TZWxlY3RvcjppbnZvY2F0aW9uLnNlbGVjdG9yXSkgeworICAgICAgICBb
aW52b2NhdGlvbiBpbnZva2VXaXRoVGFyZ2V0Ol9mb250T3B0aW9ucy5nZXQoKV07CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBbc3VwZXIgZm9yd2FyZEludm9jYXRpb246aW52b2NhdGlv
bl07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>