<?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>222550</bug_id>
          
          <creation_ts>2021-03-01 07:18:19 -0800</creation_ts>
          <short_desc>Remove document accessor on CSSFontSelector</short_desc>
          <delta_ts>2021-03-02 02:15:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>202793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1734407</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-01 07:18:19 -0800</bug_when>
    <thetext>Previous work (see bug 208351) removes some instances of unnecessary Document dependence where ScriptExecutionContext would do and make it easier to alter things to be Worker-compatible in the future. Removing CSSFontSelector::document() in favour of ::scriptExecutionContext() would be another step that would help in this process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734415</commentid>
    <comment_count>1</comment_count>
      <attachid>421825</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-01 07:39:02 -0800</bug_when>
    <thetext>Created attachment 421825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734540</commentid>
    <comment_count>2</comment_count>
      <attachid>421825</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-01 12:23:30 -0800</bug_when>
    <thetext>Comment on attachment 421825
Patch

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

So many pointers. Are these all truly optional with meaningful null cases? Can any be changed to references?

&gt; Source/WebCore/css/CSSFontFace.cpp:77
&gt; +            const Settings::Values* settings = context ? &amp;context-&gt;settingsValues() : nullptr;

I think auto instead of const Settings::Values* would be better.

&gt; Source/WebCore/css/CSSFontFace.cpp:97
&gt; +    const Settings::Values* settings = context ? &amp;context-&gt;settingsValues() : nullptr;

Ditto.

&gt; Source/WebCore/css/CSSFontFace.h:31
&gt; +#include &quot;Settings.h&quot;

A real shame that Settings::Values means adding more header dependencies like this.

Can we remove any other forward declarations or includes since Settings.h pulls in more?

&gt; Source/WebCore/css/CSSFontSelector.cpp:236
&gt; +    return m_document.get();

Need a comment to explain why we hold a document yet return only a script execution context; generally that’s a bad pattern that we try to avoid. Presumably the reason is that we intend to eventually not hold a document?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734680</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-01 16:30:47 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 421825 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421825&amp;action=review
&gt; 
&gt; So many pointers. Are these all truly optional with meaningful null cases?
&gt; Can any be changed to references?

Is this in regards to the constructor? I can certainly take a look.

&gt; &gt; Source/WebCore/css/CSSFontFace.cpp:77
&gt; &gt; +            const Settings::Values* settings = context ? &amp;context-&gt;settingsValues() : nullptr;
&gt; 
&gt; I think auto instead of const Settings::Values* would be better.
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontFace.cpp:97
&gt; &gt; +    const Settings::Values* settings = context ? &amp;context-&gt;settingsValues() : nullptr;
&gt; 
&gt; Ditto.

Sure, I think for some reason I was under the impression that auto wouldn&apos;t work, probably from a different version of the patch with some ambiguity here...

&gt; &gt; Source/WebCore/css/CSSFontFace.h:31
&gt; &gt; +#include &quot;Settings.h&quot;
&gt; 
&gt; A real shame that Settings::Values means adding more header dependencies
&gt; like this.
&gt; 
&gt; Can we remove any other forward declarations or includes since Settings.h
&gt; pulls in more?

I&apos;ll take a look and see if there&apos;s anything I can trim.

&gt; &gt; Source/WebCore/css/CSSFontSelector.cpp:236
&gt; &gt; +    return m_document.get();
&gt; 
&gt; Need a comment to explain why we hold a document yet return only a script
&gt; execution context; generally that’s a bad pattern that we try to avoid.
&gt; Presumably the reason is that we intend to eventually not hold a document?

That&apos;s right, I can add a comment to this effect. I already have the follow-up patches that allow construction with a generic ScriptExecutionContext, so hopefully there won&apos;t be too big a time with this slightly confusing behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734785</commentid>
    <comment_count>4</comment_count>
      <attachid>421916</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-02 01:46:15 -0800</bug_when>
    <thetext>Created attachment 421916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734787</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-02 02:14:01 -0800</bug_when>
    <thetext>Committed r273726: &lt;https://commits.webkit.org/r273726&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421916.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734789</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-02 02:15:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/74919118&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421825</attachid>
            <date>2021-03-01 07:39:02 -0800</date>
            <delta_ts>2021-03-02 01:46:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222550-20210301153901.patch</filename>
            <type>text/plain</type>
            <size>10499</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmNmMwNzNlMWU0YTVk
ZGJkOWQ3MzQ4NGU3NDBjNmY2YzAwZDg1ZS4uYjEyOGRkMmI1YzNhYTlhZjg1YTlkN2Y5NWU3NDRj
YzAzMmIwYzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgZG9jdW1lbnQgYWNj
ZXNzb3Igb24gQ1NTRm9udFNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXBsYWNlIEZvbnRTZWxlY3Rvcjo6ZG9jdW1lbnQoKSB3aXRoIEZv
bnRTZWxlY3Rvcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNz
cy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5k
U291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZSk6CisgICAgICAgICogY3NzL0NT
U0ZvbnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJl
Z2lzdGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFN0eWxlVXBkYXRlTmVlZGVk
KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpGb250RmFjZSk6CisKIDIwMjEt
MDItMjQgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIENTU0ZvbnRG
YWNlIHNob3VsZCBub3QgbmVlZCBpdHMgbV9mb250U2VsZWN0b3IgZGF0YSBtZW1iZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDBiMDRmZDUzZjE2OTdmZDE0NDFmNzFhMTE4NWE3
MjgxNjY4YjI2YjMuLjU2MTQ1OTdmZGIwOTQ2ZjQ0Yjk4NjUxZjVjMzk2YzBiZjYyZjQ2YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKEhhc2hTZXQ8Q1NTRm9udEZhY2U6OkNsaWVu
dCo+JiBjbGllbnRzLAogICAgICAgICBjYWxsYmFjayhjbGllbnQpOwogfQogCi12b2lkIENTU0Zv
bnRGYWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0
JiBzcmNMaXN0LCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSkKK3ZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NT
Rm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hh
ZG93VHJlZSkKIHsKICAgICBmb3IgKGF1dG8mIHNyYyA6IHNyY0xpc3QpIHsKICAgICAgICAgLy8g
QW4gaXRlbSBpbiB0aGUgbGlzdCBlaXRoZXIgc3BlY2lmaWVzIGEgc3RyaW5nIChsb2NhbCBmb250
IG5hbWUpIG9yIGEgVVJMIChyZW1vdGUgZm9udCB0byBkb3dubG9hZCkuCkBAIC03NCwxMSArNzQs
MTIgQEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZh
Y2UsIENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgZm91bmRTVkdGb250ID0gaXRl
bS5pc1NWR0ZvbnRGYWNlU3JjKCkgfHwgaXRlbS5zdmdGb250RmFjZUVsZW1lbnQoKTsKICAgICAg
ICAgZm9udEZhY2VFbGVtZW50ID0gaXRlbS5zdmdGb250RmFjZUVsZW1lbnQoKTsKICAgICAgICAg
aWYgKCFpdGVtLmlzTG9jYWwoKSkgewotICAgICAgICAgICAgY29uc3QgU2V0dGluZ3MqIHNldHRp
bmdzID0gZG9jdW1lbnQgPyAmZG9jdW1lbnQtPnNldHRpbmdzKCkgOiBudWxscHRyOwotICAgICAg
ICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAm
JiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwotICAgICAgICAg
ICAgaWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRv
Y3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBp
dGVtLmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVu
dEluVXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1h
a2VVbmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGRv
Y3VtZW50LT5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOworICAgICAgICAgICAgY29uc3Qg
U2V0dGluZ3M6OlZhbHVlcyogc2V0dGluZ3MgPSBjb250ZXh0ID8gJmNvbnRleHQtPnNldHRpbmdz
VmFsdWVzKCkgOiBudWxscHRyOworICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0g
Zm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5
Rm9udHNFbmFibGVkKTsKKyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0u
aXNTdXBwb3J0ZWRGb3JtYXQoKSAmJiBpczxEb2N1bWVudD4oY29udGV4dCkpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZv
bnQoJmRvY3VtZW50LCBmb3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUpKQorICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENT
U0ZvbnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBkb2N1bWVudC5mb250
U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHNvdXJjZSA9IChmb250RmFjZUVsZW1lbnQgPyBtYWtlVW5pcXVlPENTU0Zv
bnRGYWNlU291cmNlPihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZhY2VFbGVtZW50
KQpAQCAtOTIsMjAgKzkzLDIyIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NT
Rm9udEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAKIFJlZjxDU1NG
b250RmFjZT4gQ1NTRm9udEZhY2U6OmNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3Rv
ciwgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBi
b29sIGlzTG9jYWxGYWxsYmFjaykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
Q1NTRm9udEZhY2UoKGZvbnRTZWxlY3RvciAmJiBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkpID8g
JmZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5l
Y3Rpb24sIHdyYXBwZXIsIGlzTG9jYWxGYWxsYmFjaykpOworICAgIGF1dG8qIGNvbnRleHQgPSBm
b250U2VsZWN0b3IgPyBmb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IG51
bGxwdHI7CisgICAgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyogc2V0dGluZ3MgPSBjb250ZXh0ID8g
JmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkgOiBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShzZXR0aW5ncywgY3NzQ29ubmVjdGlvbiwgd3JhcHBl
ciwgaXNMb2NhbEZhbGxiYWNrKSk7CiAgICAgaWYgKGZvbnRTZWxlY3RvcikKICAgICAgICAgcmVz
dWx0LT5hZGRDbGllbnQoKmZvbnRTZWxlY3Rvcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Q1NTRm9udEZhY2U6OkNTU0ZvbnRGYWNlKGNvbnN0IFNldHRpbmdzKiBzZXR0aW5ncywgU3R5bGVS
dWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9j
YWxGYWxsYmFjaykKK0NTU0ZvbnRGYWNlOjpDU1NGb250RmFjZShjb25zdCBTZXR0aW5nczo6VmFs
dWVzKiBzZXR0aW5ncywgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNl
KiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKICAgICA6IG1fY3NzQ29ubmVjdGlvbihj
c3NDb25uZWN0aW9uKQogICAgICwgbV93cmFwcGVyKG1ha2VXZWFrUHRyKHdyYXBwZXIpKQogICAg
ICwgbV9pc0xvY2FsRmFsbGJhY2soaXNMb2NhbEZhbGxiYWNrKQogICAgICwgbV9tYXlCZVB1cmdl
ZCghd3JhcHBlcikKLSAgICAsIG1fc2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucyhzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkSWdub3JlRm9udExvYWRDb21wbGV0aW9ucygpKQotICAg
ICwgbV9mb250TG9hZFRpbWluZ092ZXJyaWRlKHNldHRpbmdzID8gc2V0dGluZ3MtPmZvbnRMb2Fk
VGltaW5nT3ZlcnJpZGUoKSA6IEZvbnRMb2FkVGltaW5nT3ZlcnJpZGU6Ok5vbmUpCi0gICAgLCBt
X2FsbG93VXNlckluc3RhbGxlZEZvbnRzKHNldHRpbmdzICYmICFzZXR0aW5ncy0+c2hvdWxkQWxs
b3dVc2VySW5zdGFsbGVkRm9udHMoKSA/IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpObyA6IEFs
bG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMpCisgICAgLCBtX3Nob3VsZElnbm9yZUZvbnRMb2Fk
Q29tcGxldGlvbnMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnNob3VsZElnbm9yZUZvbnRMb2FkQ29t
cGxldGlvbnMpCisgICAgLCBtX2ZvbnRMb2FkVGltaW5nT3ZlcnJpZGUoc2V0dGluZ3MgPyBzZXR0
aW5ncy0+Zm9udExvYWRUaW1pbmdPdmVycmlkZSA6IEZvbnRMb2FkVGltaW5nT3ZlcnJpZGU6Ok5v
bmUpCisgICAgLCBtX2FsbG93VXNlckluc3RhbGxlZEZvbnRzKHNldHRpbmdzICYmICFzZXR0aW5n
cy0+c2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250
czo6Tm8gOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6WWVzKQogICAgICwgbV90aW1lb3V0VGlt
ZXIoKnRoaXMsICZDU1NGb250RmFjZTo6dGltZW91dEZpcmVkKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuaAppbmRleCA3MzI1MDBiOWRiM2Y1OWI5NTBjMjY4ZmVlMDAyN2I0MWRhNzM2NzBk
Li5iYzZiZGJjZTcxOTJmZmMyZWMyYzI1ZjlkMDkyY2VhYzc3MjhlMGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZvbnRMb2FkVGltaW5n
T3ZlcnJpZGUuaCIKICNpbmNsdWRlICJGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiRm9udFRhZ2dlZFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgpAQCAtNDksNyArNTAsNiBAQCBjbGFzcyBDU1NGb250U2VsZWN0b3I7CiBjbGFzcyBDU1NT
ZWdtZW50ZWRGb250RmFjZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgQ1NTVmFsdWVMaXN0Owot
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGb250RGVzY3JpcHRpb247CiBjbGFzcyBGb250OwogY2xh
c3MgRm9udEZhY2U7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEZv
bnQ+IGZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYywgRXh0ZXJuYWxSZXNvdXJjZURvd25sb2FkUG9saWN5KTsKIAotICAg
IHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QmLCBE
b2N1bWVudCosIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93VHJlZSk7
CisgICAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYsIENTU1ZhbHVlTGlz
dCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVz
ZXJBZ2VudFNoYWRvd1RyZWUpOwogCiAgICAgY2xhc3MgQ2xpZW50IHsKICAgICBwdWJsaWM6CkBA
IC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RXJyb3JTdGF0ZSgpOwogCiBw
cml2YXRlOgotICAgIENTU0ZvbnRGYWNlKGNvbnN0IFNldHRpbmdzKiwgU3R5bGVSdWxlRm9udEZh
Y2UqLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKKyAgICBDU1NGb250RmFjZShj
b25zdCBTZXR0aW5nczo6VmFsdWVzKiwgU3R5bGVSdWxlRm9udEZhY2UqLCBGb250RmFjZSosIGJv
b2wgaXNMb2NhbEZhbGxiYWNrKTsKIAogICAgIHNpemVfdCBwdW1wKEV4dGVybmFsUmVzb3VyY2VE
b3dubG9hZFBvbGljeSk7CiAgICAgdm9pZCBzZXRTdGF0dXMoU3RhdHVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDcyOWJlMDMzZmNmYjgyYjAzODkwYTJhODI5MjQ5
Yjc1N2U2OTI0ZjMuLjYxNjMyYjg1MDRmM2Y3ZGI0OGUzZDBlZWY2YzcyYzU2MDdjNjBjZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMTA4LDggKzEwOCw4IEBAIHZv
aWQgQ1NTRm9udEZhY2VTZXQ6OmVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJl
ZChjb25zdCBTdHJpbmcmIGZhbWlsCiAgICAgICAgIHJldHVybjsKIAogICAgIEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHM6OlllczsKLSAgICBpZiAobV9vd25pbmdGb250U2VsZWN0b3ItPmRvY3VtZW50KCkpCi0g
ICAgICAgIGFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gbV9vd25pbmdGb250U2VsZWN0b3ItPmRv
Y3VtZW50KCktPnNldHRpbmdzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA/IEFs
bG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm87
CisgICAgaWYgKG1fb3duaW5nRm9udFNlbGVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
CisgICAgICAgIGFsbG93VXNlckluc3RhbGxlZEZvbnRzID0gbV9vd25pbmdGb250U2VsZWN0b3It
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2V0dGluZ3NWYWx1ZXMoKS5zaG91bGRBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cyA/IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMgOiBBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250czo6Tm87CiAgICAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXM+IGNhcGFiaWxpdGllcyA9IEZvbnRDYWNoZTo6c2luZ2xldG9uKCkuZ2V0Rm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllc0luRmFtaWx5KGZhbWlseU5hbWUsIGFsbG93VXNlckluc3RhbGxlZEZvbnRz
KTsKICAgICBpZiAoY2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBiMDdiOTk0Y2JlYTBlMGQ5ZDk0
ZWFjOWQ5YjBkNjY1NjEwNjE5MzRlLi5lMTEwOThmN2FiZTE2YWQ3OTI1OWRmZTAyNThiYjgyNjhj
M2FkZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjMxLDYg
KzIzMSwxMSBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6dW5yZWdpc3RlckZvckludmFsaWRhdGlv
bkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQmIGNsaQogICAgIG1fY2xpZW50cy5yZW1vdmUo
JmNsaWVudCk7CiB9CiAKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIENTU0ZvbnRTZWxlY3Rvcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7Cit9CisKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpkaXNwYXRjaEludmFsaWRhdGlvbkNh
bGxiYWNrcygpCiB7CiAgICAgKyttX3ZlcnNpb247CkBAIC0yNjEsOCArMjY2LDggQEAgdm9pZCBD
U1NGb250U2VsZWN0b3I6OmZvbnRNb2RpZmllZCgpCiAKIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpm
b250U3R5bGVVcGRhdGVOZWVkZWQoQ1NTRm9udEZhY2UmKQogewotICAgIGlmIChkb2N1bWVudCgp
KQotICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgaWYgKG1f
ZG9jdW1lbnQpCisgICAgICAgIG1fZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIH0K
IAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRDYWNoZUludmFsaWRhdGVkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCBkYTQzMTcyZGUwZjQwNDZlNzI2ZTJlY2ExYzM4
MDU0NDI0YTRkYWYxLi5lNTk3MThmYjEyNmQxMmY5NmI4NDlmOTBlYjM3MTVjMThiODAxZjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3Rv
ckNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxi
YWNrcyhGb250U2VsZWN0b3JDbGllbnQmKSBmaW5hbDsKIAotICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIGJl
Z2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmKTsKICAgICB2b2lkIHN1c3BlbmRGb250TG9h
ZGluZ1RpbWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAppbmRleCAzYmQ4YzA2OTAzODc3ODc0
NmNlNGJiNmU5MzJmOTNhMmM0NjhmOTVmLi4zNWZmYzAzODJhMTVhMjBmYTRlZTg3MWM4NjM4ZWE2
MTY4ZTNiZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBS
ZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgQ1NTRm9udEZhY2UmIGZhYwogfQogCiBGb250RmFjZTo6Rm9udEZhY2UoQ1NTRm9udFNl
bGVjdG9yJiBmb250U2VsZWN0b3IpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZm9udFNlbGVjdG9y
LmRvY3VtZW50KCkpCisgICAgOiBBY3RpdmVET01PYmplY3QoZm9udFNlbGVjdG9yLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fYmFja2luZyhDU1NGb250RmFjZTo6Y3JlYXRlKCZm
b250U2VsZWN0b3IsIG51bGxwdHIsIHRoaXMpKQogICAgICwgbV9sb2FkZWRQcm9taXNlKG1ha2VV
bmlxdWVSZWY8TG9hZGVkUHJvbWlzZT4oKnRoaXMsICZGb250RmFjZTo6bG9hZGVkUHJvbWlzZVJl
c29sdmUpKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421916</attachid>
            <date>2021-03-02 01:46:15 -0800</date>
            <delta_ts>2021-03-02 02:14:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222550-20210302094614.patch</filename>
            <type>text/plain</type>
            <size>10944</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmNmMwNzNlMWU0YTVk
ZGJkOWQ3MzQ4NGU3NDBjNmY2YzAwZDg1ZS4uNDAyMGE1M2M5N2FlMTdkYjJkNWRhODcyYzk3ZGMy
OTdmNjFhZWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAzLTAxICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW1vdmUgZG9jdW1lbnQgYWNj
ZXNzb3Igb24gQ1NTRm9udFNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI1NTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBSZXBsYWNlIEZvbnRTZWxlY3Rvcjo6ZG9jdW1lbnQoKSB3aXRoIEZvbnRT
ZWxlY3Rvcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9D
U1NGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6YXBwZW5kU291
cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpDU1NGb250RmFjZSk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlLmg6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lz
dGVyZWQpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udFNlbGVjdG9yOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Zm9udFN0eWxlVXBkYXRlTmVlZGVkKToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpGb250RmFjZSk6CisKIDIwMjEtMDIt
MjQgIENocmlzIExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIENTU0ZvbnRGYWNl
IHNob3VsZCBub3QgbmVlZCBpdHMgbV9mb250U2VsZWN0b3IgZGF0YSBtZW1iZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDBiMDRmZDUzZjE2OTdmZDE0NDFmNzFhMTE4NWE3Mjgx
NjY4YjI2YjMuLjgxNzFhY2NlYTdlZjQ3Y2IxNTM5OTVlOTRhYThhMDExOWQ3YWUzNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiB2b2lkIGl0ZXJhdGVDbGllbnRzKEhhc2hTZXQ8Q1NTRm9udEZhY2U6OkNsaWVudCo+
JiBjbGllbnRzLAogICAgICAgICBjYWxsYmFjayhjbGllbnQpOwogfQogCi12b2lkIENTU0ZvbnRG
YWNlOjphcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgQ1NTVmFsdWVMaXN0JiBz
cmNMaXN0LCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNl
ckFnZW50U2hhZG93VHJlZSkKK3ZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9u
dEZhY2UmIGZvbnRGYWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGJvb2wgaXNJbml0aWF0aW5nRWxlbWVudEluVXNlckFnZW50U2hhZG93
VHJlZSkKIHsKICAgICBmb3IgKGF1dG8mIHNyYyA6IHNyY0xpc3QpIHsKICAgICAgICAgLy8gQW4g
aXRlbSBpbiB0aGUgbGlzdCBlaXRoZXIgc3BlY2lmaWVzIGEgc3RyaW5nIChsb2NhbCBmb250IG5h
bWUpIG9yIGEgVVJMIChyZW1vdGUgZm9udCB0byBkb3dubG9hZCkuCkBAIC03NCwxMSArNzQsMTIg
QEAgdm9pZCBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhDU1NGb250RmFjZSYgZm9udEZhY2Us
IENTU1ZhbHVlTGlzdCYgc3JjTGlzdCwgRG8KICAgICAgICAgZm91bmRTVkdGb250ID0gaXRlbS5p
c1NWR0ZvbnRGYWNlU3JjKCkgfHwgaXRlbS5zdmdGb250RmFjZUVsZW1lbnQoKTsKICAgICAgICAg
Zm9udEZhY2VFbGVtZW50ID0gaXRlbS5zdmdGb250RmFjZUVsZW1lbnQoKTsKICAgICAgICAgaWYg
KCFpdGVtLmlzTG9jYWwoKSkgewotICAgICAgICAgICAgY29uc3QgU2V0dGluZ3MqIHNldHRpbmdz
ID0gZG9jdW1lbnQgPyAmZG9jdW1lbnQtPnNldHRpbmdzKCkgOiBudWxscHRyOwotICAgICAgICAg
ICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8IChzZXR0aW5ncyAmJiBz
ZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKCkpOwotICAgICAgICAgICAg
aWYgKGFsbG93RG93bmxvYWRpbmcgJiYgaXRlbS5pc1N1cHBvcnRlZEZvcm1hdCgpICYmIGRvY3Vt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVt
LmNhY2hlZEZvbnQoZG9jdW1lbnQsIGZvdW5kU1ZHRm9udCwgaXNJbml0aWF0aW5nRWxlbWVudElu
VXNlckFnZW50U2hhZG93VHJlZSkpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1ha2VV
bmlxdWU8Q1NTRm9udEZhY2VTb3VyY2U+KGZvbnRGYWNlLCBpdGVtLnJlc291cmNlKCksIGRvY3Vt
ZW50LT5mb250U2VsZWN0b3IoKSwgKmNhY2hlZEZvbnQpOworICAgICAgICAgICAgY29uc3QgYXV0
byogc2V0dGluZ3MgPSBjb250ZXh0ID8gJmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkgOiBudWxs
cHRyOworICAgICAgICAgICAgYm9vbCBhbGxvd0Rvd25sb2FkaW5nID0gZm91bmRTVkdGb250IHx8
IChzZXR0aW5ncyAmJiBzZXR0aW5ncy0+ZG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVkKTsK
KyAgICAgICAgICAgIGlmIChhbGxvd0Rvd25sb2FkaW5nICYmIGl0ZW0uaXNTdXBwb3J0ZWRGb3Jt
YXQoKSAmJiBpczxEb2N1bWVudD4oY29udGV4dCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CisgICAgICAgICAgICAgICAg
aWYgKENhY2hlZEZvbnQqIGNhY2hlZEZvbnQgPSBpdGVtLmNhY2hlZEZvbnQoJmRvY3VtZW50LCBm
b3VuZFNWR0ZvbnQsIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpKQor
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNl
Pihmb250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCBkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmNh
Y2hlZEZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHNv
dXJjZSA9IChmb250RmFjZUVsZW1lbnQgPyBtYWtlVW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihm
b250RmFjZSwgaXRlbS5yZXNvdXJjZSgpLCAqZm9udEZhY2VFbGVtZW50KQpAQCAtOTIsMjAgKzkz
LDIyIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmIGZvbnRG
YWNlLCBDU1NWYWx1ZUxpc3QmIHNyY0xpc3QsIERvCiAKIFJlZjxDU1NGb250RmFjZT4gQ1NTRm9u
dEZhY2U6OmNyZWF0ZShDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciwgU3R5bGVSdWxlRm9u
dEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxs
YmFjaykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZhY2UoKGZv
bnRTZWxlY3RvciAmJiBmb250U2VsZWN0b3ItPmRvY3VtZW50KCkpID8gJmZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKSA6IG51bGxwdHIsIGNzc0Nvbm5lY3Rpb24sIHdyYXBwZXIs
IGlzTG9jYWxGYWxsYmFjaykpOworICAgIGF1dG8qIGNvbnRleHQgPSBmb250U2VsZWN0b3IgPyBm
b250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IG51bGxwdHI7CisgICAgY29u
c3QgYXV0byogc2V0dGluZ3MgPSBjb250ZXh0ID8gJmNvbnRleHQtPnNldHRpbmdzVmFsdWVzKCkg
OiBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZShz
ZXR0aW5ncywgY3NzQ29ubmVjdGlvbiwgd3JhcHBlciwgaXNMb2NhbEZhbGxiYWNrKSk7CiAgICAg
aWYgKGZvbnRTZWxlY3RvcikKICAgICAgICAgcmVzdWx0LT5hZGRDbGllbnQoKmZvbnRTZWxlY3Rv
cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NTRm9udEZhY2U6OkNTU0ZvbnRGYWNlKGNv
bnN0IFNldHRpbmdzKiBzZXR0aW5ncywgU3R5bGVSdWxlRm9udEZhY2UqIGNzc0Nvbm5lY3Rpb24s
IEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxsYmFjaykKK0NTU0ZvbnRGYWNlOjpD
U1NGb250RmFjZShjb25zdCBTZXR0aW5nczo6VmFsdWVzKiBzZXR0aW5ncywgU3R5bGVSdWxlRm9u
dEZhY2UqIGNzc0Nvbm5lY3Rpb24sIEZvbnRGYWNlKiB3cmFwcGVyLCBib29sIGlzTG9jYWxGYWxs
YmFjaykKICAgICA6IG1fY3NzQ29ubmVjdGlvbihjc3NDb25uZWN0aW9uKQogICAgICwgbV93cmFw
cGVyKG1ha2VXZWFrUHRyKHdyYXBwZXIpKQogICAgICwgbV9pc0xvY2FsRmFsbGJhY2soaXNMb2Nh
bEZhbGxiYWNrKQogICAgICwgbV9tYXlCZVB1cmdlZCghd3JhcHBlcikKLSAgICAsIG1fc2hvdWxk
SWdub3JlRm9udExvYWRDb21wbGV0aW9ucyhzZXR0aW5ncyAmJiBzZXR0aW5ncy0+c2hvdWxkSWdu
b3JlRm9udExvYWRDb21wbGV0aW9ucygpKQotICAgICwgbV9mb250TG9hZFRpbWluZ092ZXJyaWRl
KHNldHRpbmdzID8gc2V0dGluZ3MtPmZvbnRMb2FkVGltaW5nT3ZlcnJpZGUoKSA6IEZvbnRMb2Fk
VGltaW5nT3ZlcnJpZGU6Ok5vbmUpCi0gICAgLCBtX2FsbG93VXNlckluc3RhbGxlZEZvbnRzKHNl
dHRpbmdzICYmICFzZXR0aW5ncy0+c2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSA/IEFs
bG93VXNlckluc3RhbGxlZEZvbnRzOjpObyA6IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZZXMp
CisgICAgLCBtX3Nob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMoc2V0dGluZ3MgJiYgc2V0
dGluZ3MtPnNob3VsZElnbm9yZUZvbnRMb2FkQ29tcGxldGlvbnMpCisgICAgLCBtX2ZvbnRMb2Fk
VGltaW5nT3ZlcnJpZGUoc2V0dGluZ3MgPyBzZXR0aW5ncy0+Zm9udExvYWRUaW1pbmdPdmVycmlk
ZSA6IEZvbnRMb2FkVGltaW5nT3ZlcnJpZGU6Ok5vbmUpCisgICAgLCBtX2FsbG93VXNlckluc3Rh
bGxlZEZvbnRzKHNldHRpbmdzICYmICFzZXR0aW5ncy0+c2hvdWxkQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6Tm8gOiBBbGxvd1VzZXJJbnN0YWxsZWRG
b250czo6WWVzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZDU1NGb250RmFjZTo6dGlt
ZW91dEZpcmVkKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCA3MzI1MDBiOWRi
M2Y1OWI5NTBjMjY4ZmVlMDAyN2I0MWRhNzM2NzBkLi5iNWU0OTc1ZDFkNTkyMDlkODYyYmQ4NDYy
ZGQ3Y2RmZmY2ZjU5ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtMjUsMTcgKzI1
LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRm9udExvYWRUaW1pbmdPdmVycmlk
ZS5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJG
b250VGFnZ2VkU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0
eWxlUnVsZS5oIgogI2luY2x1ZGUgIlRleHRGbGFncy5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTQ5LDcgKzQ2LDYgQEAgY2xhc3MgQ1NTRm9udFNlbGVjdG9yOwogY2xhc3MgQ1NTU2VnbWVudGVk
Rm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlTGlzdDsKLWNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRm9udERlc2NyaXB0aW9uOwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRG
YWNlOwpAQCAtMTIwLDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxGb250PiBmb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0
aWNJdGFsaWMsIEV4dGVybmFsUmVzb3VyY2VEb3dubG9hZFBvbGljeSk7CiAKLSAgICBzdGF0aWMg
dm9pZCBhcHBlbmRTb3VyY2VzKENTU0ZvbnRGYWNlJiwgQ1NTVmFsdWVMaXN0JiwgRG9jdW1lbnQq
LCBib29sIGlzSW5pdGlhdGluZ0VsZW1lbnRJblVzZXJBZ2VudFNoYWRvd1RyZWUpOworICAgIHN0
YXRpYyB2b2lkIGFwcGVuZFNvdXJjZXMoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QmLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRT
aGFkb3dUcmVlKTsKIAogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgpAQCAtMTY0LDcg
KzE2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVycm9yU3RhdGUoKTsKIAogcHJpdmF0ZToK
LSAgICBDU1NGb250RmFjZShjb25zdCBTZXR0aW5ncyosIFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9u
dEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CisgICAgQ1NTRm9udEZhY2UoY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyosIFN0eWxlUnVsZUZvbnRGYWNlKiwgRm9udEZhY2UqLCBib29sIGlzTG9j
YWxGYWxsYmFjayk7CiAKICAgICBzaXplX3QgcHVtcChFeHRlcm5hbFJlc291cmNlRG93bmxvYWRQ
b2xpY3kpOwogICAgIHZvaWQgc2V0U3RhdHVzKFN0YXR1cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU2V0LmNwcAppbmRleCA3MjliZTAzM2ZjZmI4MmIwMzg5MGEyYTgyOTI0OWI3NTdlNjky
NGYzLi42MTYzMmI4NTA0ZjNmN2RiNDhlM2QwZWVmNmM3MmM1NjA3YzYwY2Y1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTEwOCw4ICsxMDgsOCBAQCB2b2lkIENTU0Zv
bnRGYWNlU2V0OjplbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3Qg
U3RyaW5nJiBmYW1pbAogICAgICAgICByZXR1cm47CiAKICAgICBBbGxvd1VzZXJJbnN0YWxsZWRG
b250cyBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IEFsbG93VXNlckluc3RhbGxlZEZvbnRzOjpZ
ZXM7Ci0gICAgaWYgKG1fb3duaW5nRm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQotICAgICAgICBh
bGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IG1fb3duaW5nRm9udFNlbGVjdG9yLT5kb2N1bWVudCgp
LT5zZXR0aW5ncygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkgPyBBbGxvd1VzZXJJ
bnN0YWxsZWRGb250czo6WWVzIDogQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6Ok5vOworICAgIGlm
IChtX293bmluZ0ZvbnRTZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyA9IG1fb3duaW5nRm9udFNlbGVjdG9yLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNldHRpbmdzVmFsdWVzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFs
bGVkRm9udHMgPyBBbGxvd1VzZXJJbnN0YWxsZWRGb250czo6WWVzIDogQWxsb3dVc2VySW5zdGFs
bGVkRm9udHM6Ok5vOwogICAgIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBjYXBh
YmlsaXRpZXMgPSBGb250Q2FjaGU6OnNpbmdsZXRvbigpLmdldEZvbnRTZWxlY3Rpb25DYXBhYmls
aXRpZXNJbkZhbWlseShmYW1pbHlOYW1lLCBhbGxvd1VzZXJJbnN0YWxsZWRGb250cyk7CiAgICAg
aWYgKGNhcGFiaWxpdGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggYjA3Yjk5NGNiZWEwZTBkOWQ5NGVhYzlkOWIw
ZDY2NTYxMDYxOTM0ZS4uN2ViZmJkMTFhYTg0MGE5MmJmOWViNjlmOTJjNzZiN2FiYTM2NWZjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTIzMSw2ICsyMzEsMTQg
QEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OnVucmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFj
a3MoRm9udFNlbGVjdG9yQ2xpZW50JiBjbGkKICAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQp
OwogfQogCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBDU1NGb250U2VsZWN0b3I6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIC8vIFRoaXMgY2xhc3MgcmV0dXJucyBhIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgZGVzcGl0ZSBob2xkaW5nIGEgRG9jdW1lbnQgYXMgcHJlcGFy
YXRpb24gZm9yIGEgZnV0dXJlCisgICAgLy8gd2hlcmUgaXQgd2lsbCBhY3R1YWxseSBob2xkIGEg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCAod2hpY2ggd291bGQgYmUgZWl0aGVyIGEgRG9jdW1lbnQg
b3IgYQorICAgIC8vIFdvcmtlckdsb2JhbFNjb3BlLCBpbiB0aGUgY2FzZSBvZiB1c2luZyBmb250
cyBpbiBPZmZzY3JlZW5DYW52YXMpLgorICAgIHJldHVybiBtX2RvY3VtZW50LmdldCgpOworfQor
CiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6ZGlzcGF0Y2hJbnZhbGlkYXRpb25DYWxsYmFja3MoKQog
ewogICAgICsrbV92ZXJzaW9uOwpAQCAtMjYxLDggKzI2OSw4IEBAIHZvaWQgQ1NTRm9udFNlbGVj
dG9yOjpmb250TW9kaWZpZWQoKQogCiB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFN0eWxlVXBk
YXRlTmVlZGVkKENTU0ZvbnRGYWNlJikKIHsKLSAgICBpZiAoZG9jdW1lbnQoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIGlmIChtX2RvY3VtZW50KQor
ICAgICAgICBtX2RvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiB9CiAKIHZvaWQgQ1NT
Rm9udFNlbGVjdG9yOjpmb250Q2FjaGVJbnZhbGlkYXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmgKaW5kZXggZGE0MzE3MmRlMGY0MDQ2ZTcyNmUyZWNhMWMzODA1NDQyNGE0ZGFm
MS4uZTU5NzE4ZmIxMjZkMTJmOTZiODQ5ZjkwZWIzNzE1YzE4YjgwMWYwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcyhGb250U2VsZWN0b3JDbGllbnQmKSBm
aW5hbDsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JJbnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNl
bGVjdG9yQ2xpZW50JikgZmluYWw7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCBiZWdpbkxvYWRpbmdG
b250U29vbihDYWNoZWRGb250Jik7CiAgICAgdm9pZCBzdXNwZW5kRm9udExvYWRpbmdUaW1lcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggM2JkOGMwNjkwMzg3Nzg3NDZjZTRiYjZlOTMy
ZjkzYTJjNDY4Zjk1Zi4uMzVmZmMwMzgyYTE1YTIwZmE0ZWU4NzFjODYzOGVhNjE2OGUzYmUxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEZvbnRGYWNl
PiBGb250RmFjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIENTU0Zv
bnRGYWNlJiBmYWMKIH0KIAogRm9udEZhY2U6OkZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciYgZm9u
dFNlbGVjdG9yKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGZvbnRTZWxlY3Rvci5kb2N1bWVudCgp
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGZvbnRTZWxlY3Rvci5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCiAgICAgLCBtX2JhY2tpbmcoQ1NTRm9udEZhY2U6OmNyZWF0ZSgmZm9udFNlbGVjdG9y
LCBudWxscHRyLCB0aGlzKSkKICAgICAsIG1fbG9hZGVkUHJvbWlzZShtYWtlVW5pcXVlUmVmPExv
YWRlZFByb21pc2U+KCp0aGlzLCAmRm9udEZhY2U6OmxvYWRlZFByb21pc2VSZXNvbHZlKSkKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>