<?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>215435</bug_id>
          
          <creation_ts>2020-08-12 18:53:29 -0700</creation_ts>
          <short_desc>Font loads quickly followed by navigations may fail indefinitely</short_desc>
          <delta_ts>2020-09-10 13:32:53 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=215465</see_also>
          <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="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rackler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679891</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-12 18:53:29 -0700</bug_when>
    <thetext>Font loads quickly followed by navigations may fail indefinitely</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679892</commentid>
    <comment_count>1</comment_count>
      <attachid>406487</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-12 18:58:53 -0700</bug_when>
    <thetext>Created attachment 406487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679901</commentid>
    <comment_count>2</comment_count>
      <attachid>406487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-12 19:48:22 -0700</bug_when>
    <thetext>Comment on attachment 406487
Patch

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

&gt; LayoutTests/fast/loader/font-load-timer.html:19
&gt; +window.location = &quot;resources/font-load-timer.html&quot;;

It’s confusing that both the main file and the sub resource have the same filename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679902</commentid>
    <comment_count>3</comment_count>
      <attachid>406487</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-12 19:53:23 -0700</bug_when>
    <thetext>Comment on attachment 406487
Patch

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

Had 3 more thoughts.

1) m_beginLoadingTimer is already a &quot;suspendable timer&quot;. Seems possibly slightly suspect that we are implementing another suspend mechanism on top of that.

&gt; Source/WebCore/css/CSSFontSelector.cpp:367
&gt;      m_beginLoadingTimer.startOneShot(0_s);

2) Don’t we want to check m_fontLoadingTimerIsSuspended here, and not start the timer if it’s true? Or I guess we could assert it if we know it’s not true.

&gt; Source/WebCore/css/CSSFontSelector.cpp:384
&gt; +    m_beginLoadingTimer.startOneShot(0_s);

3) Seems slightly wasteful to start the timer even if m_fontsToBeginLoading is empty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679915</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-12 21:24:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/65560550&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679925</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-12 22:02:41 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 406487 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406487&amp;action=review
&gt; 
&gt; 1) m_beginLoadingTimer is already a &quot;suspendable timer&quot;. Seems possibly
&gt; slightly suspect that we are implementing another suspend mechanism on top
&gt; of that.

Yeah, SuspendableTimer is integrated with ActiveDOMObject, which is where it plugs in to being suspended. Unfortunately, SuspendableTimerBase::suspend() and SuspendableTimerBase::resume() are private, and so can&apos;t be called from CSSFontSelector. (And I assume they&apos;re private for a good reason, though I don&apos;t know what it would be.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679927</commentid>
    <comment_count>6</comment_count>
      <attachid>406497</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-12 22:05:21 -0700</bug_when>
    <thetext>Created attachment 406497
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679943</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-13 01:13:13 -0700</bug_when>
    <thetext>Committed r265603: &lt;https://trac.webkit.org/changeset/265603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679945</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-13 01:14:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/66970271&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680965</commentid>
    <comment_count>9</comment_count>
    <who name="Karl Rackler">rackler</who>
    <bug_when>2020-08-17 16:19:46 -0700</bug_when>
    <thetext>Reverted r265603 for reason:

Reverting per commiter because commit caused consisent crash with test.

Committed r265782: &lt;https://trac.webkit.org/changeset/265782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681777</commentid>
    <comment_count>10</comment_count>
      <attachid>406957</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-20 12:55:23 -0700</bug_when>
    <thetext>Created attachment 406957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681869</commentid>
    <comment_count>11</comment_count>
      <attachid>406957</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-20 17:11:50 -0700</bug_when>
    <thetext>Comment on attachment 406957
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.cpp:318
&gt; +        document-&gt;fontSelector().suspendFontLoadingTimer();

Confused a bit by this call. Why does this &quot;suspend&quot; loading? Is it valuable to put it in a state where it can be resumed later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681877</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-20 17:23:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 406957 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406957&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:318
&gt; &gt; +        document-&gt;fontSelector().suspendFontLoadingTimer();
&gt; 
&gt; Confused a bit by this call. Why does this &quot;suspend&quot; loading? Is it valuable
&gt; to put it in a state where it can be resumed later?

This is the whole key of the fix, actually. It was in Myle&apos;s first pass, and is the same here.

It is *required* to put it in a state where it can be resumed later, otherwise the fonts will never load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681881</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-20 17:27:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; Comment on attachment 406957 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406957&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:318
&gt; &gt; +        document-&gt;fontSelector().suspendFontLoadingTimer();
&gt; 
&gt; Confused a bit by this call. Why does this &quot;suspend&quot; loading? 

Also, to be clear, it suspends a timer, not actual loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681892</commentid>
    <comment_count>14</comment_count>
      <attachid>406957</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-20 17:46:34 -0700</bug_when>
    <thetext>Comment on attachment 406957
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/loader/DocumentLoader.cpp:318
&gt;&gt;&gt;&gt; +        document-&gt;fontSelector().suspendFontLoadingTimer();
&gt;&gt;&gt; 
&gt;&gt;&gt; Confused a bit by this call. Why does this &quot;suspend&quot; loading? Is it valuable to put it in a state where it can be resumed later?
&gt;&gt; 
&gt;&gt; This is the whole key of the fix, actually. It was in Myle&apos;s first pass, and is the same here.
&gt;&gt; 
&gt;&gt; It is *required* to put it in a state where it can be resumed later, otherwise the fonts will never load.
&gt; 
&gt; Also, to be clear, it suspends a timer, not actual loading.

Oh, I didn’t realize Myles original fix was rolled out. I expect to see a change, not new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681908</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-20 18:36:53 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Comment on attachment 406957 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406957&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/loader/DocumentLoader.cpp:318
&gt; &gt;&gt;&gt;&gt; +        document-&gt;fontSelector().suspendFontLoadingTimer();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Confused a bit by this call. Why does this &quot;suspend&quot; loading? Is it valuable to put it in a state where it can be resumed later?
&gt; &gt;&gt; 
&gt; &gt;&gt; This is the whole key of the fix, actually. It was in Myle&apos;s first pass, and is the same here.
&gt; &gt;&gt; 
&gt; &gt;&gt; It is *required* to put it in a state where it can be resumed later, otherwise the fonts will never load.
&gt; &gt; 
&gt; &gt; Also, to be clear, it suspends a timer, not actual loading.
&gt; 
&gt; Oh, I didn’t realize Myles original fix was rolled out. I expect to see a
&gt; change, not new code.

I&apos;m not sure what you mean by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681967</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-21 08:50:24 -0700</bug_when>
    <thetext>The api-ios failure is not this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681976</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-21 09:32:19 -0700</bug_when>
    <thetext>I guess Myles should review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681978</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-21 10:04:09 -0700</bug_when>
    <thetext>I had asked him to, and will remind him that he said he would :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682752</commentid>
    <comment_count>19</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-25 12:47:50 -0700</bug_when>
    <thetext>Looking at this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682786</commentid>
    <comment_count>20</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-25 14:08:20 -0700</bug_when>
    <thetext>Verified that this patch does fix the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682789</commentid>
    <comment_count>21</comment_count>
      <attachid>406957</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-25 14:16:40 -0700</bug_when>
    <thetext>Comment on attachment 406957
Patch

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

I think this is good. Just a few more checks to run on my local machine.

&gt; Source/WebCore/css/CSSFontSelector.cpp:374
&gt; +    suspend(ReasonForSuspension::PageWillBeSuspended);

Do you actually know this to be true? (Where &quot;this&quot; = &quot;the reason for the suspension is that the page will be suspended&quot;)

&gt; Source/WebCore/css/CSSFontSelector.cpp:452
&gt; +void CSSFontSelector::suspend(ReasonForSuspension)
&gt; +{
&gt; +    if (m_fontLoadingTimerIsSuspended) {
&gt; +        ASSERT(!m_fontLoadingTimer.isActive());
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    m_fontLoadingTimerIsSuspended = m_fontLoadingTimer.isActive();
&gt; +    m_fontLoadingTimer.stop();
&gt; +}
&gt; +
&gt; +void CSSFontSelector::resume()
&gt; +{
&gt; +    if (!m_fontLoadingTimerIsSuspended)
&gt; +        return;
&gt; +
&gt; +    if (!m_fontsToBeginLoading.isEmpty())
&gt; +        m_fontLoadingTimer.startOneShot(0_s);
&gt; +
&gt; +    m_fontLoadingTimerIsSuspended = false;
&gt; +}

Right, this makes sense.

&gt; Source/WebCore/css/CSSFontSelector.h:104
&gt; +    void stop() final;

Nit: CSSFontSelector does lots of font selection related stuff, so CSSFontSelector::stop() is kind of a misleading name. It stops the loading timer; it doesn&apos;t stop selecting fonts.

I realize this is an overridden method so it has to be named that way, and making CSSFontSelector own an ActiveDOMObject (and forward all the calls) rather than be an ActiveDOMObject is probably not worth the benefit. But 😕</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682796</commentid>
    <comment_count>22</comment_count>
      <attachid>406957</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-08-25 14:27:31 -0700</bug_when>
    <thetext>Comment on attachment 406957
Patch

Verified the bug reproduces without this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682818</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-08-25 15:05:15 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #21)
&gt; Comment on attachment 406957 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=406957&amp;action=review
&gt; 
&gt; I think this is good. Just a few more checks to run on my local machine.
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontSelector.cpp:374
&gt; &gt; +    suspend(ReasonForSuspension::PageWillBeSuspended);
&gt; 
&gt; Do you actually know this to be true? (Where &quot;this&quot; = &quot;the reason for the
&gt; suspension is that the page will be suspended&quot;)

Reason is almost always ignored (and is in this case)

&quot;WillBeSuspended&quot; is a catchall.

&gt; 
&gt; &gt; Source/WebCore/css/CSSFontSelector.cpp:452
&gt; &gt; +void CSSFontSelector::suspend(ReasonForSuspension)
&gt; &gt; +{
&gt; &gt; +    if (m_fontLoadingTimerIsSuspended) {
&gt; &gt; +        ASSERT(!m_fontLoadingTimer.isActive());
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    m_fontLoadingTimerIsSuspended = m_fontLoadingTimer.isActive();
&gt; &gt; +    m_fontLoadingTimer.stop();
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void CSSFontSelector::resume()
&gt; &gt; +{
&gt; &gt; +    if (!m_fontLoadingTimerIsSuspended)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (!m_fontsToBeginLoading.isEmpty())
&gt; &gt; +        m_fontLoadingTimer.startOneShot(0_s);
&gt; &gt; +
&gt; &gt; +    m_fontLoadingTimerIsSuspended = false;
&gt; &gt; +}
&gt; 
&gt; Right, this makes sense.
&gt; 
&gt; &gt; Source/WebCore/css/CSSFontSelector.h:104
&gt; &gt; +    void stop() final;
&gt; 
&gt; Nit: CSSFontSelector does lots of font selection related stuff, so
&gt; CSSFontSelector::stop() is kind of a misleading name. It stops the loading
&gt; timer; it doesn&apos;t stop selecting fonts.
&gt; 
&gt; I realize this is an overridden method so it has to be named that way, and
&gt; making CSSFontSelector own an ActiveDOMObject (and forward all the calls)
&gt; rather than be an ActiveDOMObject is probably not worth the benefit. But 😕

Well, between when &quot;stop&quot; and &quot;Resume&quot; is called, it had BETTER not be doing the other stuff you say it might ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682820</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 15:08:56 -0700</bug_when>
    <thetext>Committed r266148: &lt;https://trac.webkit.org/changeset/266148&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 406957.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687522</commentid>
    <comment_count>25</comment_count>
      <attachid>406957</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-09-10 13:32:53 -0700</bug_when>
    <thetext>Comment on attachment 406957
Patch

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

&gt; Source/WebCore/css/CSSFontSelector.cpp:77
&gt; +    suspendIfNeeded();

It is unsafe to call suspendIfNeeded() inside the constructor. This call should be moved CSSFontSelector::create() to avoid potentially hitting assertions in debug.
The reason it is unsafe is that suspendIfNeeded() may call suspend() which may ref |this|. If you ref |this| here, we hit the adoption requirement assertion in RefCounted.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406487</attachid>
            <date>2020-08-12 18:58:53 -0700</date>
            <delta_ts>2020-08-20 12:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215435-20200812185852.patch</filename>
            <type>text/plain</type>
            <size>9601</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2OTRmMzU5NWUwZGQ5
NTgyNzRmZGNjMmU2MzY0YjM3M2U2MjM0OS4uZDYwMDk0ODIzMmQyNzFmMTg2MWQzNTlkN2QzYWYz
ODA2ZDI5MTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTA4LTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udCBsb2Fk
cyBxdWlja2x5IGZvbGxvd2VkIGJ5IG5hdmlnYXRpb25zIG1heSBmYWlsIGluZGVmaW5pdGVseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDM1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU2MDU1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb250IGxvYWRzIGFyZSBjb2FsZXNjZWQgdXNpbmcg
YSB6ZXJvLWRlbGF5IHRpbWVyLiBIb3dldmVyLCB0aGF0IHplcm8tZGVsYXkgdGltZXIKKyAgICAg
ICAgY2FuIGZpcmUgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIG5hdmlnYXRp
b24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGZvbnQKKyAgICAgICAgbG9hZHMgdG8gZmFpbC4gVGhl
biwgdGhlIHNlY29uZCBwYWdlIGNhbiByZXF1ZXN0IHRob3NlIHNhbWUgZm9udHMsIHdoaWNoIGFy
ZSBtYXJrZWQKKyAgICAgICAgYXMgZmFpbGVkLCBhbmQgYXMgc3VjaCB3aWxsIG5ldmVyIGFjdHVh
bGx5IGxvYWQvdXNlIHRoZSBkZXNpcmVkIHdlYiBmb250LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
anVzdCBzdG9wcyB0aGUgemVyby1kZWxheSB0aW1lciBkdXJpbmcgbmF2aWdhdGlvbnMsIGFuZCBy
ZXN1bWVzIGl0CisgICAgICAgIHdoZW4gcmVzdW1pbmcgdGhlIGRvY3VtZW50LiBUaGlzIG1lYW5z
OgorCisgICAgICAgIDEuIFRoZSBzZWNvbmQgcGFnZSBpbiB0aGUgYWJvdmUgc3Rvcnkgd2lsbCBu
b3Qgc2VlIHRoYXQgdGhlIGZvbnQgaGFzIGZhaWxlZCwgb3IKKyAgICAgICAgZXZlbiBzdGFydGVk
LCBhbmQgd2lsbCB0aGVuIHJlLXJlcXVlc3QgdGhlIGZvbnQgYW5kIGxvYWQgaXQgc3VjY2Vzc2Z1
bGx5CisgICAgICAgIDIuIElmIHRoZSB1c2VyIGdvZXMgImJhY2siIHRvIHRoZSBwcmV2aW91cyBw
YWdlLCB0aGUgemVyby1kZWxheSB0aW1lciBpcyByZXN0YXJ0ZWQsCisgICAgICAgIHRoZSBDYWNo
ZWRGb250IHJlYWxpemVzIGl0J3MgYWxyZWFkeSBzdWNjZWVkZWQsIGFuZCB0aGUgcHJldmlvdXMg
cGFnZSBpcyByZW5kZXJlZAorICAgICAgICBhcyBleHBlY3RlZC4KKworICAgICAgICBUZXN0OiBm
YXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRtbAorCisgICAgICAgICogY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OnN1c3BlbmRG
b250TG9hZGluZ1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6cmVz
dGFydEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlc3VtZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKIDIwMjAtMDgtMTEgIEph
bWVzIERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJH
TDJdIERlcHRoIGZvcm1hdHMgY2FuIGhhdmUgbWlwbWFwcyBpbiBXZWJHTCAyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDdiOGI4OGVhY2UxZDg1MGQ0MzY5M2NhZmY0
MDllMWNmNTA3ZjU2MmMuLjE1ODYwZDg2ZWVhNjhjNjRiOWNlMjY1ZTc0MzE0YmNjZTYxMjlhN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0zNjcsNiArMzY3LDI0
IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250
JiBmb250KQogICAgIG1fYmVnaW5Mb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAK
K3ZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpCit7CisgICAg
aWYgKG1fZm9udExvYWRpbmdUaW1lcklzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2JlZ2luTG9hZGluZ1RpbWVyLmNhbmNlbCgpOworICAgIG1fZm9udExvYWRpbmdUaW1lcklz
U3VzcGVuZGVkID0gdHJ1ZTsKK30KKwordm9pZCBDU1NGb250U2VsZWN0b3I6OnJlc3RhcnRGb250
TG9hZGluZ1RpbWVyKCkKK3sKKyAgICBpZiAoIW1fZm9udExvYWRpbmdUaW1lcklzU3VzcGVuZGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JlZ2luTG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOworICAgIG1fZm9udExvYWRpbmdUaW1lcklzU3VzcGVuZGVkID0gZmFsc2U7Cit9CisK
IHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRUaW1lckZpcmVkKCkKIHsKICAgICBWZWN0
b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZvbnRzVG9CZWdpbkxvYWRpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKaW5kZXggM2VhYTY4ZWQ5YjM1MTY4OWM5
MGY4NjFjODRkY2Q1NzkwOGJkM2UwZi4uOWRlNjY0NmNhZGE1MDY1MzgzMjlmMDgwNjYwZjE4MTZh
YTEwOTFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtODAsNiArODAs
OCBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudC5nZXQoKTsgfQogCiAgICAgdm9pZCBiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRG
b250Jik7CisgICAgdm9pZCBzdXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworICAgIHZvaWQgcmVz
dGFydEZvbnRMb2FkaW5nVGltZXIoKTsKIAogICAgIEZvbnRGYWNlU2V0KiBmb250RmFjZVNldElm
RXhpc3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7CkBAIC0xMTksNiArMTIx
LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2NvbXB1dGluZ1Jvb3RTdHlsZUZvbnRDb3Vu
dCB7IDAgfTsKICAgICBib29sIG1fY3JlYXRpbmdGb250IHsgZmFsc2UgfTsKICAgICBib29sIG1f
YnVpbGRJc1VuZGVyd2F5IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZm9udExvYWRpbmdUaW1lcklz
U3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGZhN2E2ZWE3MzhhOWU3OGUzMWFmNGU4MjI1NWE4ODIzMWY1
MGM3YmMuLjBiODllZjBmZjk1OTExYjNlODBiMTYzMTZhMmJmYjc0YmM5YzJkZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTQ0OSw2ICs1NDQ5LDggQEAgdm9pZCBEb2N1bWVudDo6cmVz
dW1lKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIGlmIChyZW5kZXJWaWV3KCkpCiAg
ICAgICAgIHJlbmRlclZpZXcoKS0+c2V0SXNJbldpbmRvdyh0cnVlKTsKIAorICAgIGZvbnRTZWxl
Y3RvcigpLnJlc3RhcnRGb250TG9hZGluZ1RpbWVyKCk7CisKICAgICBBU1NFUlQocGFnZSgpKTsK
ICAgICBwYWdlKCktPmxvY2tBbGxPdmVybGF5U2Nyb2xsYmFyc1RvSGlkZGVuKGZhbHNlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZTk5NDEzMTk3ZTBj
MTFiY2Y5YzY3Y2E2NmYxMzJiNzc5OWRkYmNjNC4uN2M5OTUxMDg1NTcwMGQ4NTVkZTQzZTUyODAz
ZDE0ZDc2YmY5ZDU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNp
bmNsdWRlICJBcmNoaXZlLmgiCiAjaW5jbHVkZSAiQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNhY2hlZFBhZ2UuaCIK
ICNpbmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
TG9hZGVyLmgiCkBAIC0zMTMsNiArMzE0LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIC8vIEFsd2F5cyBjYW5jZWwgbXVsdGlwYXJ0IGxvYWRlcnMKICAgICBjYW5j
ZWxBbGwobV9tdWx0aXBhcnRTdWJyZXNvdXJjZUxvYWRlcnMpOwogCisgICAgaWYgKGF1dG8qIGRv
Y3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxl
Y3RvcigpLnN1c3BlbmRGb250TG9hZGluZ1RpbWVyKCk7CisKICAgICAvLyBBcHBjYWNoZSB1c2Vz
IFJlc291cmNlSGFuZGxlIGRpcmVjdGx5LCBEb2N1bWVudExvYWRlciBkb2Vzbid0IGNvdW50IHRo
ZXNlIGxvYWRzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPnN0b3BMb2FkaW5nSW5GcmFt
ZSgqbV9mcmFtZSk7CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWI0NDRmOGVkN2ExZjIxNWI3ZGE1M2E2YjdkN2Yx
ZGY5M2MxM2QxNy4uNzU1MDBiZTg1MTU1MDc3OGQxNjlkOWIzNmJlOWExMTdhMTQyYzEwYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA4LTEyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udCBsb2FkcyBxdWlja2x5IGZvbGxvd2VkIGJ5
IG5hdmlnYXRpb25zIG1heSBmYWlsIGluZGVmaW5pdGVseQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82NTU2MDU1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAxKSBUaGUgcGFnZSBoYXMgc29tZSBjb250ZW50IHRoYXQgaGFzIOKAnGZvbnQtZmFtaWx5
OiBXZWJGb2504oCdIGJ1dCB0aGVyZSBhcmUgbm8gQGZvbnQtZmFjZSBibG9ja3Mgb24gdGhlIHBh
Z2UKKyAgICAgICAgMikgSW4gc2NyaXB0LCBhZnRlciB0aGUgcGFnZSBoYXMgbG9hZGVkLCBhZGQg
YW4gQGZvbnQtZmFjZSBydWxlIHRvIHRoZSBwYWdlIHdpdGgg4oCcZm9udC1mYW1pbHk6IFdlYkZv
bnTigJ0gYW5kIHNvbWUgdmFsaWQgZm9udCBVUkwKKyAgICAgICAgMykgU3luY2hyb25vdXNseSwg
d2l0aGluIHRoZSBzYW1lIHR1cm4gb2YgdGhlIHJ1biBsb29wLCB0cmlnZ2VyIGEgc3luY2hyb25v
dXMgbGF5b3V0IG9mIHRoZSBlbGVtZW50ICh1c2luZyBvZmZzZXRXaWR0aCBvciBzb21ldGhpbmcp
LiBUaGlzIHdpbGwgYWRkIHRoZSBmb250IHRvIHRoZSAwLWRlbGF5IHRpbWUgd29yayBsaXN0Lgor
ICAgICAgICA0KSBTeW5jaHJvbm91c2x5LCB3aXRoaW4gdGhlIHNhbWUgdHVybiBvZiB0aGUgcnVu
IGxvb3AsIG5hdmlnYXRlIHRvIGEgc2Vjb25kIHBhZ2UgdGhhdCBkb2VzbuKAmXQgdXNlIHRoZSB3
ZWIgZm9udC4gCisgICAgICAgIDUpIFRoZSBzZWNvbmQgcGFnZSB3YWl0cyBzb21lIHNtYWxsLWJ1
dC1wb3NpdGl2ZSBhbW91bnQgb2YgdGltZS4gVGhpcyB3aWxsIGNhdXNlIHRoZSAwLWRlbGF5IHRp
bWVyIHRvIGZpcmUsIGJ1dCBiZWNhdXNlIHRoZSBwYWdlIGlzIGluIHRoZSBtaWRkbGUgb2YgbmF2
aWdhdGluZywgdGhlIGZvbnQgbG9hZCBzaG91bGQgZmFpbC4KKyAgICAgICAgNikgVGhlIHNlY29u
ZCBwYWdlIGFkZHMgdGhlIHNhbWUgQGZvbnQtZmFjZSBydWxlIHRvIGl0c2VsZiB1c2luZyBzY3Jp
cHQuIFRoaXMgc2hvdWxkIHB1bGwgdGhlIHNhbWUgKGZhaWxlZCkgQ2FjaGVkUmVzb3VyY2Ugb2Jq
ZWN0IG91dCBvZiB0aGUgbWVtb3J5IGNhY2hlLgorICAgICAgICA3KSBVc2UgdGhlIENTUyBGb250
IExvYWRpbmcgQVBJIHRvIHdhaXQgZm9yIHRoZSBmb250IGxvYWQgdG8gY29tcGxldGUKKyAgICAg
ICAgOCkgTWFrZSBzdXJlIHRoYXQgdGhlIGZvbnQgaXMgdXNlZCBvbiB0aGUgc2Vjb25kIHBhZ2Ug
KGFzIGEgcmVmZXJlbmNlIHRlc3QpLiBUb2RheSwgdGhlIHNlY29uZCBwYWdl4oCZcyBmb250IGxv
YWQgd2lsbCBmYWlsIGJlY2F1c2UgaXQgcHVsbGVkIHRoZSBmYWlsZWQgZm9udCBvdXQgb2YgdGhl
IG1lbW9yeSBjYWNoZS4gVGhlIHRlc3QgbWFrZXMgc3VyZSB0aGUgc2Vjb25kIHBhZ2XigJlzIGZv
bnQgbG9hZCBzdWNjZWVkcy4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1l
ci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9mb250LWxvYWQt
dGltZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ZvbnQt
bG9hZC10aW1lci5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0xMSAgSmFtZXMgRGFycGluaWFuICA8
amRhcnBpbmlhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdMMl0gRGVwdGggZm9ybWF0
cyBjYW4gaGF2ZSBtaXBtYXBzIGluIFdlYkdMIDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvZm9udC1sb2FkLXRpbWVyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWExNTUz
NjI2MmEzMTQwZDFjNmYyNmIyMzM3NDRkNWU5YTA4ODAyNAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSBpZD0i
c3R5bGUiPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdXZWJGb250JzsKKyAgICBz
cmM6IHVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNwYW4gaWQ9InRhcmdldCIgc3R5bGU9ImZv
bnQ6IDQ4cHggJ1dlYkZvbnQnOyI+SGVsbG9Xb3JsZCE8L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZhOGNjNjQ1MGRkZDYxZWJkNjBiMDI2MTRmOGNhY2QyZmYwMDVlNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRtbApAQCAt
MCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgaWQ9
InN0eWxlIj48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0idGFyZ2V0IiBzdHls
ZT0iZm9udDogNDhweCAnV2ViRm9udCc7Ij5IZWxsbywgV29ybGQhPC9zcGFuPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRD
YWNoZSgpOworICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Cit9CisKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdHlsZSIpLnNoZWV0Lmluc2VydFJ1bGUoIkBmb250LWZhY2UgeyBm
b250LWZhbWlseTogJ1dlYkZvbnQnOyBzcmM6IHVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRm
JykgZm9ybWF0KCd0cnVldHlwZScpOyB9Iik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0Iikub2Zmc2V0V2lkdGg7Cit3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2ZvbnQtbG9h
ZC10aW1lci5odG1sIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ZvbnQtbG9hZC10aW1lci5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvcmVzb3VyY2VzL2ZvbnQtbG9hZC10aW1lci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhOTRlY2M4ZWQyMGY4ZWJlNDY3ZTliZDI4YmU0NGVkMDg5YTEzNDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9udC1sb2Fk
LXRpbWVyLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlIGlkPSJzdHlsZSI+PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNwYW4g
aWQ9InRhcmdldCIgc3R5bGU9ImZvbnQ6IDQ4cHggJ1dlYkZvbnQnOyI+SGVsbG9Xb3JsZCE8L3Nw
YW4+Cis8c2NyaXB0Pgord2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0eWxlIikuc2hlZXQuaW5zZXJ0UnVsZSgiQGZvbnQtZmFjZSB7
IGZvbnQtZmFtaWx5OiAnV2ViRm9udCc7IHNyYzogdXJsKCcuLi8uLi8uLi9yZXNvdXJjZXMvQWhl
bS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7IH0iKTsKKyAgICBkb2N1bWVudC5mb250cy5lbnRy
aWVzKCkubmV4dCgpLnZhbHVlLmxvYWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9LCAxMDApOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406497</attachid>
            <date>2020-08-12 22:05:21 -0700</date>
            <delta_ts>2020-08-20 12:55:22 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-215435-20200812220520.patch</filename>
            <type>text/plain</type>
            <size>9936</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA2OTRmMzU5NWUwZGQ5
NTgyNzRmZGNjMmU2MzY0YjM3M2U2MjM0OS4uZDYwMDk0ODIzMmQyNzFmMTg2MWQzNTlkN2QzYWYz
ODA2ZDI5MTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTA4LTEyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRm9udCBsb2Fk
cyBxdWlja2x5IGZvbGxvd2VkIGJ5IG5hdmlnYXRpb25zIG1heSBmYWlsIGluZGVmaW5pdGVseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NDM1Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTU2MDU1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb250IGxvYWRzIGFyZSBjb2FsZXNjZWQgdXNpbmcg
YSB6ZXJvLWRlbGF5IHRpbWVyLiBIb3dldmVyLCB0aGF0IHplcm8tZGVsYXkgdGltZXIKKyAgICAg
ICAgY2FuIGZpcmUgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIG5hdmlnYXRp
b24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGZvbnQKKyAgICAgICAgbG9hZHMgdG8gZmFpbC4gVGhl
biwgdGhlIHNlY29uZCBwYWdlIGNhbiByZXF1ZXN0IHRob3NlIHNhbWUgZm9udHMsIHdoaWNoIGFy
ZSBtYXJrZWQKKyAgICAgICAgYXMgZmFpbGVkLCBhbmQgYXMgc3VjaCB3aWxsIG5ldmVyIGFjdHVh
bGx5IGxvYWQvdXNlIHRoZSBkZXNpcmVkIHdlYiBmb250LgorCisgICAgICAgIFRoaXMgcGF0Y2gg
anVzdCBzdG9wcyB0aGUgemVyby1kZWxheSB0aW1lciBkdXJpbmcgbmF2aWdhdGlvbnMsIGFuZCBy
ZXN1bWVzIGl0CisgICAgICAgIHdoZW4gcmVzdW1pbmcgdGhlIGRvY3VtZW50LiBUaGlzIG1lYW5z
OgorCisgICAgICAgIDEuIFRoZSBzZWNvbmQgcGFnZSBpbiB0aGUgYWJvdmUgc3Rvcnkgd2lsbCBu
b3Qgc2VlIHRoYXQgdGhlIGZvbnQgaGFzIGZhaWxlZCwgb3IKKyAgICAgICAgZXZlbiBzdGFydGVk
LCBhbmQgd2lsbCB0aGVuIHJlLXJlcXVlc3QgdGhlIGZvbnQgYW5kIGxvYWQgaXQgc3VjY2Vzc2Z1
bGx5CisgICAgICAgIDIuIElmIHRoZSB1c2VyIGdvZXMgImJhY2siIHRvIHRoZSBwcmV2aW91cyBw
YWdlLCB0aGUgemVyby1kZWxheSB0aW1lciBpcyByZXN0YXJ0ZWQsCisgICAgICAgIHRoZSBDYWNo
ZWRGb250IHJlYWxpemVzIGl0J3MgYWxyZWFkeSBzdWNjZWVkZWQsIGFuZCB0aGUgcHJldmlvdXMg
cGFnZSBpcyByZW5kZXJlZAorICAgICAgICBhcyBleHBlY3RlZC4KKworICAgICAgICBUZXN0OiBm
YXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRtbAorCisgICAgICAgICogY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OnN1c3BlbmRG
b250TG9hZGluZ1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6cmVz
dGFydEZvbnRMb2FkaW5nVGltZXIpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnJlc3VtZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZyk6CisKIDIwMjAtMDgtMTEgIEph
bWVzIERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJH
TDJdIERlcHRoIGZvcm1hdHMgY2FuIGhhdmUgbWlwbWFwcyBpbiBXZWJHTCAyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDdiOGI4OGVhY2UxZDg1MGQ0MzY5M2NhZmY0
MDllMWNmNTA3ZjU2MmMuLmI5YWMxNTc3OGJjMjBkODFjYjUxNjlkMjBhNGY2OWI2NTkwNGI4NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0zNjQsNyArMzY0LDI4
IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRpbmdGb250U29vbihDYWNoZWRGb250
JiBmb250KQogICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZFRpbWVy
RmlyZWQoKSBhbmQgaW4gY2xlYXJEb2N1bWVudCgpLgogICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCkuaW5jcmVtZW50UmVxdWVzdENvdW50KGZvbnQpOwogCi0gICAgbV9iZWdp
bkxvYWRpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKKyAgICBpZiAoIW1fZm9udExvYWRpbmdU
aW1lcklzU3VzcGVuZGVkKQorICAgICAgICBtX2JlZ2luTG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hv
dCgwX3MpOworfQorCit2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5nVGlt
ZXIoKQoreworICAgIGlmIChtX2ZvbnRMb2FkaW5nVGltZXJJc1N1c3BlbmRlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9iZWdpbkxvYWRpbmdUaW1lci5jYW5jZWwoKTsKKyAgICBtX2ZvbnRM
b2FkaW5nVGltZXJJc1N1c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgQ1NTRm9udFNlbGVjdG9y
OjpyZXN0YXJ0Rm9udExvYWRpbmdUaW1lcigpCit7CisgICAgaWYgKCFtX2ZvbnRMb2FkaW5nVGlt
ZXJJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcuaXNFbXB0eSgpKQorICAgICAgICBtX2JlZ2luTG9hZGluZ1RpbWVyLnN0YXJ0T25l
U2hvdCgwX3MpOworCisgICAgbV9mb250TG9hZGluZ1RpbWVySXNTdXNwZW5kZWQgPSBmYWxzZTsK
IH0KIAogdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZFRpbWVyRmlyZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCmluZGV4IDNlYWE2OGVkOWIzNTE2ODljOTBmODYxYzg0
ZGNkNTc5MDhiZDNlMGYuLjlkZTY2NDZjYWRhNTA2NTM4MzI5ZjA4MDY2MGYxODE2YWExMDkxYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKQEAgLTgwLDYgKzgwLDggQEAgcHVi
bGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQu
Z2V0KCk7IH0KIAogICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYpOwor
ICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKyAgICB2b2lkIHJlc3RhcnRGb250
TG9hZGluZ1RpbWVyKCk7CiAKICAgICBGb250RmFjZVNldCogZm9udEZhY2VTZXRJZkV4aXN0cygp
OwogICAgIEZvbnRGYWNlU2V0JiBmb250RmFjZVNldCgpOwpAQCAtMTE5LDYgKzEyMSw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9jb21wdXRpbmdSb290U3R5bGVGb250Q291bnQgeyAwIH07
CiAgICAgYm9vbCBtX2NyZWF0aW5nRm9udCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2J1aWxkSXNV
bmRlcndheSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ZvbnRMb2FkaW5nVGltZXJJc1N1c3BlbmRl
ZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAppbmRleCBmYTdhNmVhNzM4YTllNzhlMzFhZjRlODIyNTVhODgyMzFmNTBjN2JjLi4w
Yjg5ZWYwZmY5NTkxMWIzZTgwYjE2MzE2YTJiZmI3NGJjOWMyZGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTU0NDksNiArNTQ0OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZShSZWFz
b25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICBpZiAocmVuZGVyVmlldygpKQogICAgICAgICBy
ZW5kZXJWaWV3KCktPnNldElzSW5XaW5kb3codHJ1ZSk7CiAKKyAgICBmb250U2VsZWN0b3IoKS5y
ZXN0YXJ0Rm9udExvYWRpbmdUaW1lcigpOworCiAgICAgQVNTRVJUKHBhZ2UoKSk7CiAgICAgcGFn
ZSgpLT5sb2NrQWxsT3ZlcmxheVNjcm9sbGJhcnNUb0hpZGRlbihmYWxzZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGU5OTQxMzE5N2UwYzExYmNmOWM2
N2NhNjZmMTMyYjc3OTlkZGJjYzQuLjdjOTk1MTA4NTU3MDBkODU1ZGU0M2U1MjgwM2QxNGQ3NmJm
OWQ1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAi
QXJjaGl2ZS5oIgogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDYWNoZWRQYWdlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5o
IgpAQCAtMzEzLDYgKzMxNCw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkK
ICAgICAvLyBBbHdheXMgY2FuY2VsIG11bHRpcGFydCBsb2FkZXJzCiAgICAgY2FuY2VsQWxsKG1f
bXVsdGlwYXJ0U3VicmVzb3VyY2VMb2FkZXJzKTsKIAorICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5z
dXNwZW5kRm9udExvYWRpbmdUaW1lcigpOworCiAgICAgLy8gQXBwY2FjaGUgdXNlcyBSZXNvdXJj
ZUhhbmRsZSBkaXJlY3RseSwgRG9jdW1lbnRMb2FkZXIgZG9lc24ndCBjb3VudCB0aGVzZSBsb2Fk
cy4KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5zdG9wTG9hZGluZ0luRnJhbWUoKm1fZnJh
bWUpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGFiNDQ0ZjhlZDdhMWYyMTViN2RhNTNhNmI3ZDdmMWRmOTNjMTNk
MTcuLmFjYjc5MjkwZjg4MWNkMmZjYWVkYTU4OWYxZGU1YjBiZTRjMDlhYmYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMC0wOC0xMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIEZvbnQgbG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0
aW9ucyBtYXkgZmFpbCBpbmRlZmluaXRlbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNTQzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU1NjA1
NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMSkg
VGhlIHBhZ2UgaGFzIHNvbWUgY29udGVudCB0aGF0IGhhcyDigJxmb250LWZhbWlseTogV2ViRm9u
dOKAnSBidXQgdGhlcmUgYXJlIG5vIEBmb250LWZhY2UgYmxvY2tzIG9uIHRoZSBwYWdlCisgICAg
ICAgIDIpIEluIHNjcmlwdCwgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGxvYWRlZCwgYWRkIGFuIEBmb250
LWZhY2UgcnVsZSB0byB0aGUgcGFnZSB3aXRoIOKAnGZvbnQtZmFtaWx5OiBXZWJGb2504oCdIGFu
ZCBzb21lIHZhbGlkIGZvbnQgVVJMCisgICAgICAgIDMpIFN5bmNocm9ub3VzbHksIHdpdGhpbiB0
aGUgc2FtZSB0dXJuIG9mIHRoZSBydW4gbG9vcCwgdHJpZ2dlciBhIHN5bmNocm9ub3VzIGxheW91
dCBvZiB0aGUgZWxlbWVudCAodXNpbmcgb2Zmc2V0V2lkdGggb3Igc29tZXRoaW5nKS4gVGhpcyB3
aWxsIGFkZCB0aGUgZm9udCB0byB0aGUgMC1kZWxheSB0aW1lIHdvcmsgbGlzdC4KKyAgICAgICAg
NCkgU3luY2hyb25vdXNseSwgd2l0aGluIHRoZSBzYW1lIHR1cm4gb2YgdGhlIHJ1biBsb29wLCBu
YXZpZ2F0ZSB0byBhIHNlY29uZCBwYWdlIHRoYXQgZG9lc27igJl0IHVzZSB0aGUgd2ViIGZvbnQu
IAorICAgICAgICA1KSBUaGUgc2Vjb25kIHBhZ2Ugd2FpdHMgc29tZSBzbWFsbC1idXQtcG9zaXRp
dmUgYW1vdW50IG9mIHRpbWUuIFRoaXMgd2lsbCBjYXVzZSB0aGUgMC1kZWxheSB0aW1lciB0byBm
aXJlLCBidXQgYmVjYXVzZSB0aGUgcGFnZSBpcyBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcs
IHRoZSBmb250IGxvYWQgc2hvdWxkIGZhaWwuCisgICAgICAgIDYpIFRoZSBzZWNvbmQgcGFnZSBh
ZGRzIHRoZSBzYW1lIEBmb250LWZhY2UgcnVsZSB0byBpdHNlbGYgdXNpbmcgc2NyaXB0LiBUaGlz
IHNob3VsZCBwdWxsIHRoZSBzYW1lIChmYWlsZWQpIENhY2hlZFJlc291cmNlIG9iamVjdCBvdXQg
b2YgdGhlIG1lbW9yeSBjYWNoZS4KKyAgICAgICAgNykgVXNlIHRoZSBDU1MgRm9udCBMb2FkaW5n
IEFQSSB0byB3YWl0IGZvciB0aGUgZm9udCBsb2FkIHRvIGNvbXBsZXRlCisgICAgICAgIDgpIE1h
a2Ugc3VyZSB0aGF0IHRoZSBmb250IGlzIHVzZWQgb24gdGhlIHNlY29uZCBwYWdlIChhcyBhIHJl
ZmVyZW5jZSB0ZXN0KS4gVG9kYXksIHRoZSBzZWNvbmQgcGFnZeKAmXMgZm9udCBsb2FkIHdpbGwg
ZmFpbCBiZWNhdXNlIGl0IHB1bGxlZCB0aGUgZmFpbGVkIGZvbnQgb3V0IG9mIHRoZSBtZW1vcnkg
Y2FjaGUuIFRoZSB0ZXN0IG1ha2VzIHN1cmUgdGhlIHNlY29uZCBwYWdl4oCZcyBmb250IGxvYWQg
c3VjY2VlZHMuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9mb250LWxvYWQtdGltZXItZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZm9udC1sb2FkLXRpbWVyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL3Jlc291cmNlcy9mb250LWxvYWQtdGlt
ZXItbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0xMSAgSmFt
ZXMgRGFycGluaWFuICA8amRhcnBpbmlhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdM
Ml0gRGVwdGggZm9ybWF0cyBjYW4gaGF2ZSBtaXBtYXBzIGluIFdlYkdMIDIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9udC1sb2FkLXRpbWVyLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWExNTUzNjI2MmEzMTQwZDFjNmYyNmIyMzM3NDRkNWU5YTA4ODAyNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZSBpZD0ic3R5bGUiPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdX
ZWJGb250JzsKKyAgICBzcmM6IHVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmJykgZm9ybWF0
KCd0cnVldHlwZScpOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNwYW4gaWQ9InRh
cmdldCIgc3R5bGU9ImZvbnQ6IDQ4cHggJ1dlYkZvbnQnOyI+SGVsbG9Xb3JsZCE8L3NwYW4+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250
LWxvYWQtdGltZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1l
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY5MzQ0MjY3MGI0Zjg4MTA2ZmQ1NzE4MjYwYTI0YzgxNTNhNjRh
OGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWxvYWQt
dGltZXIuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGUgaWQ9InN0eWxlIj48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBp
ZD0idGFyZ2V0IiBzdHlsZT0iZm9udDogNDhweCAnV2ViRm9udCc7Ij5IZWxsbywgV29ybGQhPC9z
cGFuPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMu
aW52YWxpZGF0ZUZvbnRDYWNoZSgpOworICAgIGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7
Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdHlsZSIpLnNoZWV0Lmluc2VydFJ1bGUo
IkBmb250LWZhY2UgeyBmb250LWZhbWlseTogJ1dlYkZvbnQnOyBzcmM6IHVybCgnLi4vLi4vcmVz
b3VyY2VzL0FoZW0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpOyB9Iik7Citkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidGFyZ2V0Iikub2Zmc2V0V2lkdGg7Cit3aW5kb3cubG9jYXRpb24gPSAicmVz
b3VyY2VzL2ZvbnQtbG9hZC10aW1lci1uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWwiOworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9yZXNvdXJjZXMvZm9udC1sb2FkLXRpbWVyLW5hdmlnYXRpb24tZGVzdGluYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3Jlc291cmNlcy9mb250LWxvYWQtdGltZXItbmF2
aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhOTRlY2M4ZWQyMGY4ZWJlNDY3
ZTliZDI4YmU0NGVkMDg5YTEzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9yZXNvdXJjZXMvZm9udC1sb2FkLXRpbWVyLW5hdmlnYXRpb24tZGVzdGluYXRpb24u
aHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGUgaWQ9InN0eWxlIj48L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0idGFy
Z2V0IiBzdHlsZT0iZm9udDogNDhweCAnV2ViRm9udCc7Ij5IZWxsb1dvcmxkITwvc3Bhbj4KKzxz
Y3JpcHQ+Cit3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3R5bGUiKS5zaGVldC5pbnNlcnRSdWxlKCJAZm9udC1mYWNlIHsgZm9udC1m
YW1pbHk6ICdXZWJGb250Jzsgc3JjOiB1cmwoJy4uLy4uLy4uL3Jlc291cmNlcy9BaGVtLnR0Zicp
IGZvcm1hdCgndHJ1ZXR5cGUnKTsgfSIpOworICAgIGRvY3VtZW50LmZvbnRzLmVudHJpZXMoKS5u
ZXh0KCkudmFsdWUubG9hZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0s
IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9KTsKK30sIDEwMCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406957</attachid>
            <date>2020-08-20 12:55:23 -0700</date>
            <delta_ts>2020-08-25 15:08:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215435-20200820125523.patch</filename>
            <type>text/plain</type>
            <size>14526</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY1OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzllM2QxYjhmN2EyNDVm
MDU0MDBiZDcxZWQ3YWRhZDZkYTcxMGM3Zi4uMWY1YjAzN2IwOTQ2ODE1NTRlN2UzYWQwMzQ4MmU2
YjZkMWQwNGQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIwLTA4LTIwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGb250IGxvYWRzIHF1aWNr
bHkgZm9sbG93ZWQgYnkgbmF2aWdhdGlvbnMgbWF5IGZhaWwgaW5kZWZpbml0ZWx5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82NTU2MDU1MD4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTZWNvbmQgdGFrZSBhdCB0aGlzLgorICAgICAgICAKKyAgICAgICAgTXls
ZXMgdG9vayB0aGUgZmlyc3Qgc3dpcGUgYXQgdGhpcywgYnV0IGEgY29uZmxpY3Qgd2l0aCBTdXNw
ZW5kYWJsZVRpbWVyIGNhdXNlZCBpc3N1ZXMKKyAgICAgICAgaW4gdGhlIGZvcm0gb2YgbGF5b3V0
IHRlc3QgYXNzZXJ0cyB3aXRoCisgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvbmF2aWdhdGUt
d2hlbi1yZXN0b3JpbmctY2FjaGVkLXBhZ2UuaHRtbCAKKyAgICAgICAgCisgICAgICAgIEhpcyBv
cmlnaW5hbCBDaGFuZ2VMb2cgZW50cnk6CisgICAgICAgIAorICAgICAgICBGb250IGxvYWRzIGFy
ZSBjb2FsZXNjZWQgdXNpbmcgYSB6ZXJvLWRlbGF5IHRpbWVyLiBIb3dldmVyLCB0aGF0IHplcm8t
ZGVsYXkgdGltZXIKKyAgICAgICAgY2FuIGZpcmUgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gdGhlIG1p
ZGRsZSBvZiBhIG5hdmlnYXRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGZvbnQKKyAgICAgICAg
bG9hZHMgdG8gZmFpbC4gVGhlbiwgdGhlIHNlY29uZCBwYWdlIGNhbiByZXF1ZXN0IHRob3NlIHNh
bWUgZm9udHMsIHdoaWNoIGFyZSBtYXJrZWQKKyAgICAgICAgYXMgZmFpbGVkLCBhbmQgYXMgc3Vj
aCB3aWxsIG5ldmVyIGFjdHVhbGx5IGxvYWQvdXNlIHRoZSBkZXNpcmVkIHdlYiBmb250LgorCisg
ICAgICAgIFRoaXMgcGF0Y2gganVzdCBzdG9wcyB0aGUgemVyby1kZWxheSB0aW1lciBkdXJpbmcg
bmF2aWdhdGlvbnMsIGFuZCByZXN1bWVzIGl0CisgICAgICAgIHdoZW4gcmVzdW1pbmcgdGhlIGRv
Y3VtZW50LiBUaGlzIG1lYW5zOgorCisgICAgICAgIDEuIFRoZSBzZWNvbmQgcGFnZSBpbiB0aGUg
YWJvdmUgc3Rvcnkgd2lsbCBub3Qgc2VlIHRoYXQgdGhlIGZvbnQgaGFzIGZhaWxlZCwgb3IKKyAg
ICAgICAgZXZlbiBzdGFydGVkLCBhbmQgd2lsbCB0aGVuIHJlLXJlcXVlc3QgdGhlIGZvbnQgYW5k
IGxvYWQgaXQgc3VjY2Vzc2Z1bGx5CisgICAgICAgIDIuIElmIHRoZSB1c2VyIGdvZXMgImJhY2si
IHRvIHRoZSBwcmV2aW91cyBwYWdlLCB0aGUgemVyby1kZWxheSB0aW1lciBpcyByZXN0YXJ0ZWQs
CisgICAgICAgIHRoZSBDYWNoZWRGb250IHJlYWxpemVzIGl0J3MgYWxyZWFkeSBzdWNjZWVkZWQs
IGFuZCB0aGUgcHJldmlvdXMgcGFnZSBpcyByZW5kZXJlZAorICAgICAgICBhcyBleHBlY3RlZC4K
KyAgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci5odG1s
CisKKyAgICAgICAgLS0tCisgICAgICAgIAorICAgICAgICBOb3cgdGhlIGV4cGxhbmF0aW9uIG9m
IHRoZSBmYWlsdXJlIGl0IGNhdXNlZDoKKyAgICAgICAgVGhlIGZvbnQgbG9hZGluZyB0aW1lciB3
YXMgYSBTdXNwZW5kYWJsZVRpbWVyLCB3aGljaCBpcyBhbiBBY3RpdmVET01PYmplY3QuCisgICAg
ICAgIAorICAgICAgICBBbiBBY3RpdmVET01PYmplY3Qgd2FzIHVzZWQgdG8gbWFrZSBzdXJlIHRo
ZSBkZWxheWVkIGZvbnQgbG9hZHMgcGxheSB3ZWxsIHdpdGggdGhlIAorICAgICAgICBwYWdlIGNh
Y2hlLCB3aGljaCBpcyBzdGlsbCBuZWNlc3NhcnkuCisgICAgICAgIAorICAgICAgICBCdXQgd2Ug
YWxzbyBzdGlsbCBuZWVkIHRvIHN1c3BlbmQgdGhlIHRpbWVyIG1hbnVhbGx5IHdoZW4gInN0b3BM
b2FkaW5nKCkiIGlzIGNhbGxlZCwKKyAgICAgICAgd2hpY2ggZG9lc24ndCBwbGF5IHdlbGwgd2l0
aCBBY3RpdmVET01PYmplY3QncyBhdXRvbWF0aWMgc3VzcGVuZC9yZXN1bWUuCisgICAgICAgIAor
ICAgICAgICBNeSBzb2x1dGlvbjoKKyAgICAgICAgLSBNYWtlIHRoZSB0aW1lciAianVzdCBhIG5v
cm1hbCB0aW1lciIKKyAgICAgICAgLSBNYWtlIENTU0ZvbnRTZWxlY3RvciBpdHNlbGYgdGhlIEFj
dGl2ZURPTU9iamVjdAorICAgICAgICAtIExldCBEb2N1bWVudExvYWRlciBleHBsaWNpdGx5IHBh
dXNlIHRoZSBmb250IGxvYWQgdGltZXIKKyAgICAgICAgLSBSZWx5IG9uIEFjdGl2ZURPTU9iamVj
dCB0byByZXN1bWUgdGhlIHRpbWVyCisgICAgICAgIAorICAgICAgICBUaGVzZSBrZWVwIHRoZSBi
dWcgZml4ZWQgYW5kIHJlc29sdmUgdGhlIGxheW91dCB0ZXN0IEFTU0VSVCBzZWVuIHdpdGgKKyAg
ICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9uYXZpZ2F0ZS13aGVuLXJlc3RvcmluZy1jYWNoZWQt
cGFnZS5odG1sIAorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Q1NTRm9udFNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Y2xlYXJEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGluZ1RpbWVyRmlyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpzdG9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250U2VsZWN0b3I6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6
OmJlZ2luTG9hZFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NGb250U2Vs
ZWN0b3IuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKwogMjAyMC0wOC0xOSAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGlyZCBw
YXJ0eSBkb21haW5zIGFyZSBub3Qgc3RvcmVkIGluIHRoZSBjYXNlIG9mIGJhY2svZm9yd2FyZCBu
YXZpZ2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA3Yjhi
ODhlYWNlMWQ4NTBkNDM2OTNjYWZmNDA5ZTFjZjUwN2Y1NjJjLi40MGU5Y2I2YjFlMTdjYjU5ZTlh
NDljOGU5YmZkMTMzODYwMTQwMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcApAQCAtNjIsOSArNjIsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIHVuc2ln
bmVkIGZvbnRTZWxlY3RvcklkOwogCiBDU1NGb250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihE
b2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50
KSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICAsIG1fZG9jdW1lbnQobWFr
ZVdlYWtQdHIoZG9jdW1lbnQpKQogICAgICwgbV9jc3NGb250RmFjZVNldChDU1NGb250RmFjZVNl
dDo6Y3JlYXRlKHRoaXMpKQotICAgICwgbV9iZWdpbkxvYWRpbmdUaW1lcigmZG9jdW1lbnQsICp0
aGlzLCAmQ1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRUaW1lckZpcmVkKQorICAgICwgbV9mb250
TG9hZGluZ1RpbWVyKCp0aGlzLCAmQ1NTRm9udFNlbGVjdG9yOjpmb250TG9hZGluZ1RpbWVyRmly
ZWQpCiAgICAgLCBtX3VuaXF1ZUlkKCsrZm9udFNlbGVjdG9ySWQpCiAgICAgLCBtX3ZlcnNpb24o
MCkKIHsKQEAgLTczLDcgKzc0LDcgQEAgQ1NTRm9udFNlbGVjdG9yOjpDU1NGb250U2VsZWN0b3Io
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZENsaWVudCgqdGhp
cyk7CiAgICAgTE9HKEZvbnRzLCAiQ1NTRm9udFNlbGVjdG9yICVwIGN0b3IiLCB0aGlzKTsKIAot
ICAgIG1fYmVnaW5Mb2FkaW5nVGltZXIuc3VzcGVuZElmTmVlZGVkKCk7CisgICAgc3VzcGVuZElm
TmVlZGVkKCk7CiB9CiAKIENTU0ZvbnRTZWxlY3Rvcjo6fkNTU0ZvbnRTZWxlY3RvcigpCkBAIC0z
MzMsMTIgKzMzNCwxMiBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0Zv
ckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmNsZWFyRG9jdW1lbnQoKQogewogICAgIGlmICghbV9kb2N1bWVudCkgewotICAgICAg
ICBBU1NFUlQoIW1fYmVnaW5Mb2FkaW5nVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIEFTU0VS
VCghbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCkpOwogICAgICAgICBBU1NFUlQobV9mb250
c1RvQmVnaW5Mb2FkaW5nLmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX2JlZ2luTG9hZGluZ1RpbWVyLmNhbmNlbCgpOworICAgIG1fZm9udExvYWRpbmdUaW1lci5z
dG9wKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciYgY2FjaGVkUmVzb3VyY2VMb2FkZXIg
PSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIGZvciAoYXV0byYgZm9u
dEhhbmRsZSA6IG1fZm9udHNUb0JlZ2luTG9hZGluZykgewpAQCAtMzYxLDEzICszNjIsMTkgQEAg
dm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQmIGZv
bnQpCiAgICAgbV9mb250c1RvQmVnaW5Mb2FkaW5nLmFwcGVuZCgmZm9udCk7CiAgICAgLy8gSW5j
cmVtZW50IHRoZSByZXF1ZXN0IGNvdW50IG5vdywgaW4gb3JkZXIgdG8gcHJldmVudCBkaWRGaW5p
c2hMb2FkIGZyb20gYmVpbmcgZGlzcGF0Y2hlZAogICAgIC8vIGFmdGVyIHRoaXMgZm9udCBoYXMg
YmVlbiByZXF1ZXN0ZWQgYnV0IGJlZm9yZSBpdCBiZWdhbiBsb2FkaW5nLiBCYWxhbmNlZCBieQot
ICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpIGluIGJlZ2luTG9hZFRpbWVyRmlyZWQoKSBh
bmQgaW4gY2xlYXJEb2N1bWVudCgpLgorICAgIC8vIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpIGlu
IGZvbnRMb2FkaW5nVGltZXJGaXJlZCgpIGFuZCBpbiBjbGVhckRvY3VtZW50KCkuCiAgICAgbV9k
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5pbmNyZW1lbnRSZXF1ZXN0Q291bnQoZm9u
dCk7CiAKLSAgICBtX2JlZ2luTG9hZGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworICAgIGlm
ICghbV9mb250TG9hZGluZ1RpbWVySXNTdXNwZW5kZWQpCisgICAgICAgIG1fZm9udExvYWRpbmdU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAotdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2lu
TG9hZFRpbWVyRmlyZWQoKQordm9pZCBDU1NGb250U2VsZWN0b3I6OnN1c3BlbmRGb250TG9hZGlu
Z1RpbWVyKCkKK3sKKyAgICBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVT
dXNwZW5kZWQpOworfQorCit2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udExvYWRpbmdUaW1lckZp
cmVkKCkKIHsKICAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IGZv
bnRzVG9CZWdpbkxvYWRpbmc7CiAgICAgZm9udHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9udHNU
b0JlZ2luTG9hZGluZyk7CkBAIC00MTcsNCArNDI0LDMxIEBAIFJlZlB0cjxGb250PiBDU1NGb250
U2VsZWN0b3I6OmZhbGxiYWNrRm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2Ny
aXB0CiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAKK3ZvaWQgQ1NTRm9udFNlbGVjdG9yOjpzdG9wKCkK
K3sKKyAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RvcCgpOworfQorCit2b2lkIENTU0ZvbnRTZWxl
Y3Rvcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChtX2ZvbnRMb2Fk
aW5nVGltZXJJc1N1c3BlbmRlZCkgeworICAgICAgICBBU1NFUlQoIW1fZm9udExvYWRpbmdUaW1l
ci5pc0FjdGl2ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZm9udExvYWRp
bmdUaW1lcklzU3VzcGVuZGVkID0gbV9mb250TG9hZGluZ1RpbWVyLmlzQWN0aXZlKCk7CisgICAg
bV9mb250TG9hZGluZ1RpbWVyLnN0b3AoKTsKK30KKwordm9pZCBDU1NGb250U2VsZWN0b3I6OnJl
c3VtZSgpCit7CisgICAgaWYgKCFtX2ZvbnRMb2FkaW5nVGltZXJJc1N1c3BlbmRlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ZvbnRzVG9CZWdpbkxvYWRpbmcuaXNFbXB0eSgpKQor
ICAgICAgICBtX2ZvbnRMb2FkaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBtX2Zv
bnRMb2FkaW5nVGltZXJJc1N1c3BlbmRlZCA9IGZhbHNlOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmgKaW5kZXggM2VhYTY4ZWQ5YjM1MTY4OWM5MGY4NjFjODRkY2Q1Nzkw
OGJkM2UwZi4uZTg0MjNmZDA3YmRjYTcwZmUwMzIzZmI0MTg0NjA2NWMzN2ZjYmFkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApAQCAtMjUsMTIgKzI1LDEzIEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ1NTRm9u
dEZhY2UuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRTZWxlY3Rv
ci5oIgotI2luY2x1ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIENhY2hlZEZvbnQ7CiBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIFN0eWxlUnVsZUZvbnRGYWNlOwogCi1jbGFzcyBDU1NGb250U2VsZWN0
b3IgZmluYWwgOiBwdWJsaWMgRm9udFNlbGVjdG9yLCBwdWJsaWMgQ1NTRm9udEZhY2VTZXRDbGll
bnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDU1NGb250U2VsZWN0b3I+IHsKK2NsYXNzIENTU0Zv
bnRTZWxlY3RvciBmaW5hbCA6IHB1YmxpYyBGb250U2VsZWN0b3IsIHB1YmxpYyBDU1NGb250RmFj
ZVNldENsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPENTU0ZvbnRTZWxlY3Rvcj4sIHB1Ymxp
YyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTRm9udFNlbGVj
dG9yPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHsKQEAgLTgwLDYgKzgxLDcgQEAg
cHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1l
bnQuZ2V0KCk7IH0KIAogICAgIHZvaWQgYmVnaW5Mb2FkaW5nRm9udFNvb24oQ2FjaGVkRm9udCYp
OworICAgIHZvaWQgc3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKIAogICAgIEZvbnRGYWNlU2V0
KiBmb250RmFjZVNldElmRXhpc3RzKCk7CiAgICAgRm9udEZhY2VTZXQmIGZvbnRGYWNlU2V0KCk7
CkBAIC05Niw3ICs5OCwxMyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmb250TW9kaWZpZWQoKSBm
aW5hbDsKIAotICAgIHZvaWQgYmVnaW5Mb2FkVGltZXJGaXJlZCgpOworICAgIHZvaWQgZm9udExv
YWRpbmdUaW1lckZpcmVkKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkNTU0ZvbnRTZWxlY3RvciJfczsgfQogCiAg
ICAgc3RydWN0IFBlbmRpbmdGb250RmFjZVJ1bGUgewogICAgICAgICBTdHlsZVJ1bGVGb250RmFj
ZSYgc3R5bGVSdWxlRm9udEZhY2U7CkBAIC0xMTIsNyArMTIwLDkgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkRm9udD4+IG1fZm9udHNUb0JlZ2luTG9h
ZGluZzsKICAgICBIYXNoU2V0PFJlZlB0cjxDU1NGb250RmFjZT4+IG1fY3NzQ29ubmVjdGlvbnNQ
b3NzaWJseVRvUmVtb3ZlOwogICAgIEhhc2hTZXQ8UmVmUHRyPFN0eWxlUnVsZUZvbnRGYWNlPj4g
bV9jc3NDb25uZWN0aW9uc0VuY291bnRlcmVkRHVyaW5nQnVpbGQ7Ci0gICAgU3VzcGVuZGFibGVU
aW1lciBtX2JlZ2luTG9hZGluZ1RpbWVyOworCisgICAgVGltZXIgbV9mb250TG9hZGluZ1RpbWVy
OworICAgIGJvb2wgbV9mb250TG9hZGluZ1RpbWVySXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCiAg
ICAgdW5zaWduZWQgbV91bmlxdWVJZDsKICAgICB1bnNpZ25lZCBtX3ZlcnNpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBlOTk0MTMxOTdlMGMxMWJjZjlj
NjdjYTY2ZjEzMmI3Nzk5ZGRiY2M0Li43Yzk5NTEwODU1NzAwZDg1NWRlNDNlNTI4MDNkMTRkNzZi
ZjlkNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUg
IkFyY2hpdmUuaCIKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUGFnZS5oIgogI2luY2x1
ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKQEAgLTMxMyw2ICszMTQsOSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiAgICAgLy8gQWx3YXlzIGNhbmNlbCBtdWx0aXBhcnQgbG9hZGVycwogICAgIGNhbmNlbEFsbCht
X211bHRpcGFydFN1YnJlc291cmNlTG9hZGVycyk7CiAKKyAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCku
c3VzcGVuZEZvbnRMb2FkaW5nVGltZXIoKTsKKwogICAgIC8vIEFwcGNhY2hlIHVzZXMgUmVzb3Vy
Y2VIYW5kbGUgZGlyZWN0bHksIERvY3VtZW50TG9hZGVyIGRvZXNuJ3QgY291bnQgdGhlc2UgbG9h
ZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+c3RvcExvYWRpbmdJbkZyYW1lKCptX2Zy
YW1lKTsKICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4NTI3Y2YzMTY5NzVkYTI1NGFlYmNmNWY5MjBhZjA2OGU2MDU5
MDk5Li4xNTg4NzgzNTUzNzBmNTQ4YTU1Y2M4NGJmMjIwMDc3NmMzMTAwNGIyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMjAtMDgtMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgorCisgICAgICAgIEZvbnQgbG9hZHMgcXVpY2tseSBmb2xsb3dlZCBieSBuYXZpZ2F0aW9ucyBt
YXkgZmFpbCBpbmRlZmluaXRlbHkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1NTYwNTUwPiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTQzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEpIFRoZSBwYWdlIGhh
cyBzb21lIGNvbnRlbnQgdGhhdCBoYXMg4oCcZm9udC1mYW1pbHk6IFdlYkZvbnTigJ0gYnV0IHRo
ZXJlIGFyZSBubyBAZm9udC1mYWNlIGJsb2NrcyBvbiB0aGUgcGFnZQorICAgICAgICAyKSBJbiBz
Y3JpcHQsIGFmdGVyIHRoZSBwYWdlIGhhcyBsb2FkZWQsIGFkZCBhbiBAZm9udC1mYWNlIHJ1bGUg
dG8gdGhlIHBhZ2Ugd2l0aCDigJxmb250LWZhbWlseTogV2ViRm9udOKAnSBhbmQgc29tZSB2YWxp
ZCBmb250IFVSTAorICAgICAgICAzKSBTeW5jaHJvbm91c2x5LCB3aXRoaW4gdGhlIHNhbWUgdHVy
biBvZiB0aGUgcnVuIGxvb3AsIHRyaWdnZXIgYSBzeW5jaHJvbm91cyBsYXlvdXQgb2YgdGhlIGVs
ZW1lbnQgKHVzaW5nIG9mZnNldFdpZHRoIG9yIHNvbWV0aGluZykuIFRoaXMgd2lsbCBhZGQgdGhl
IGZvbnQgdG8gdGhlIDAtZGVsYXkgdGltZSB3b3JrIGxpc3QuCisgICAgICAgIDQpIFN5bmNocm9u
b3VzbHksIHdpdGhpbiB0aGUgc2FtZSB0dXJuIG9mIHRoZSBydW4gbG9vcCwgbmF2aWdhdGUgdG8g
YSBzZWNvbmQgcGFnZSB0aGF0IGRvZXNu4oCZdCB1c2UgdGhlIHdlYiBmb250LiAKKyAgICAgICAg
NSkgVGhlIHNlY29uZCBwYWdlIHdhaXRzIHNvbWUgc21hbGwtYnV0LXBvc2l0aXZlIGFtb3VudCBv
ZiB0aW1lLiBUaGlzIHdpbGwgY2F1c2UgdGhlIDAtZGVsYXkgdGltZXIgdG8gZmlyZSwgYnV0IGJl
Y2F1c2UgdGhlIHBhZ2UgaXMgaW4gdGhlIG1pZGRsZSBvZiBuYXZpZ2F0aW5nLCB0aGUgZm9udCBs
b2FkIHNob3VsZCBmYWlsLgorICAgICAgICA2KSBUaGUgc2Vjb25kIHBhZ2UgYWRkcyB0aGUgc2Ft
ZSBAZm9udC1mYWNlIHJ1bGUgdG8gaXRzZWxmIHVzaW5nIHNjcmlwdC4gVGhpcyBzaG91bGQgcHVs
bCB0aGUgc2FtZSAoZmFpbGVkKSBDYWNoZWRSZXNvdXJjZSBvYmplY3Qgb3V0IG9mIHRoZSBtZW1v
cnkgY2FjaGUuCisgICAgICAgIDcpIFVzZSB0aGUgQ1NTIEZvbnQgTG9hZGluZyBBUEkgdG8gd2Fp
dCBmb3IgdGhlIGZvbnQgbG9hZCB0byBjb21wbGV0ZQorICAgICAgICA4KSBNYWtlIHN1cmUgdGhh
dCB0aGUgZm9udCBpcyB1c2VkIG9uIHRoZSBzZWNvbmQgcGFnZSAoYXMgYSByZWZlcmVuY2UgdGVz
dCkuIFRvZGF5LCB0aGUgc2Vjb25kIHBhZ2XigJlzIGZvbnQgbG9hZCB3aWxsIGZhaWwgYmVjYXVz
ZSBpdCBwdWxsZWQgdGhlIGZhaWxlZCBmb250IG91dCBvZiB0aGUgbWVtb3J5IGNhY2hlLiBUaGUg
dGVzdCBtYWtlcyBzdXJlIHRoZSBzZWNvbmQgcGFnZeKAmXMgZm9udCBsb2FkIHN1Y2NlZWRzLgor
CisgICAgICAgICogZmFzdC9sb2FkZXIvZm9udC1sb2FkLXRpbWVyLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9udC1sb2FkLXRpbWVyLW5hdmlnYXRp
b24tZGVzdGluYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjAtMDgtMjAgIEthcmwgUmFja2xlciAg
PHJhY2tsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZvdXIgc2VwYXJhdGUgcmVwb3J0ZWQgdGVz
dHMgZmFpbHVyZXM6IHJkYXI6Ly82NDUzNTY1IHJkYXI6Ly82NTg0ODE1NyByZGFyOi8vNjY2NjA5
MjQgcmRhcjovLzY2ODQyNTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Zv
bnQtbG9hZC10aW1lci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZm9u
dC1sb2FkLXRpbWVyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWExNTUzNjI2MmEzMTQwZDFj
NmYyNmIyMzM3NDRkNWU5YTA4ODAyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSBpZD0ic3R5bGUiPgorQGZv
bnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdXZWJGb250JzsKKyAgICBzcmM6IHVybCgnLi4v
Li4vcmVzb3VyY2VzL0FoZW0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHNwYW4gaWQ9InRhcmdldCIgc3R5bGU9ImZvbnQ6IDQ4cHggJ1dl
YkZvbnQnOyI+SGVsbG9Xb3JsZCE8L3NwYW4+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2ZvbnQtbG9hZC10aW1lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MzQ0MjY3
MGI0Zjg4MTA2ZmQ1NzE4MjYwYTI0YzgxNTNhNjRhOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9mb250LWxvYWQtdGltZXIuaHRtbApAQCAtMCwwICsxLDIyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgaWQ9InN0eWxlIj48L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0idGFyZ2V0IiBzdHlsZT0iZm9udDogNDhw
eCAnV2ViRm9udCc7Ij5IZWxsbywgV29ybGQhPC9zcGFuPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICBpbnRlcm5hbHMuaW52YWxpZGF0ZUZvbnRDYWNoZSgpOworICAg
IGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKCk7Cit9CisKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdHlsZSIpLnNoZWV0Lmluc2VydFJ1bGUoIkBmb250LWZhY2UgeyBmb250LWZhbWlseTog
J1dlYkZvbnQnOyBzcmM6IHVybCgnLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmJykgZm9ybWF0KCd0
cnVldHlwZScpOyB9Iik7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikub2Zmc2V0
V2lkdGg7Cit3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2ZvbnQtbG9hZC10aW1lci1uYXZp
Z2F0aW9uLWRlc3RpbmF0aW9uLmh0bWwiOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9udC1sb2FkLXRp
bWVyLW5hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3Jlc291cmNlcy9mb250LWxvYWQtdGltZXItbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRhOTRlY2M4ZWQyMGY4ZWJlNDY3ZTliZDI4YmU0NGVkMDg5YTEzNDIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9yZXNvdXJjZXMvZm9udC1sb2Fk
LXRpbWVyLW5hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgaWQ9InN0eWxlIj48L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0idGFyZ2V0IiBzdHlsZT0iZm9udDogNDhweCAnV2Vi
Rm9udCc7Ij5IZWxsb1dvcmxkITwvc3Bhbj4KKzxzY3JpcHQ+Cit3aW5kb3cuc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3R5bGUiKS5zaGVldC5p
bnNlcnRSdWxlKCJAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICdXZWJGb250Jzsgc3JjOiB1cmwo
Jy4uLy4uLy4uL3Jlc291cmNlcy9BaGVtLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTsgfSIpOwor
ICAgIGRvY3VtZW50LmZvbnRzLmVudHJpZXMoKS5uZXh0KCkudmFsdWUubG9hZCgpLnRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0sIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICB9KTsKK30sIDEwMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>