<?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>156684</bug_id>
          
          <creation_ts>2016-04-17 18:08:39 -0700</creation_ts>
          <short_desc>rem in media queries should be calculated using font-size:initial, not root element font-size</short_desc>
          <delta_ts>2022-02-08 09:10:25 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=156687</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=194749</see_also>
          <bug_file_loc>https://plnkr.co/edit/x7Ix0qUw0K5YVT4TDN5h?p=preview</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159753</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rebert">webkit</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>danburzo</cc>
    
    <cc>dante3333</cc>
    
    <cc>david.humphrey</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>florens</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>m.goleb+bugzilla</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>rbuis</cc>
    
    <cc>rik</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xously</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1184563</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rebert">webkit</who>
    <bug_when>2016-04-17 18:08:39 -0700</bug_when>
    <thetext>Per https://drafts.csswg.org/mediaqueries/#units
&gt; Relative units in media queries are based on the initial value,
&gt; which means that units are never based on results of declarations.
&gt; For example, in HTML, the &apos;em&apos; unit is relative to the initial value of &apos;font-size&apos;,
&gt; defined by the user agent or the user’s preferences, not any styling on the page.

The term &quot;initial value&quot; refers to https://drafts.csswg.org/css-cascade/#initial-value
and &quot;relative units&quot; includes &quot;Relative length units&quot; (https://drafts.csswg.org/css-values/#relative-lengths ),
which includes &apos;em&apos; and &apos;rem&apos;.

Per https://drafts.csswg.org/css-fonts/#propdef-font-size ,
the initial value of the &apos;font-size&apos; property is &apos;medium&apos;,
which major web browsers (including WebKit) compute to 16px under default settings.

WebKit currently appears to take author style declarations into account when computing &apos;rem&apos;-based widths in viewport media queries,
in violation of the aforementioned section of the Media Queries spec.

Testcase demonstrating the bug: https://plnkr.co/edit/x7Ix0qUw0K5YVT4TDN5h?p=preview

Chrome, Firefox, and IE11 comply with said section of the spec.
See also http://zellwk.com/blog/media-query-units/#1-font-size-changed-in-html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184682</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-18 08:38:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/25778616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260097</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Rebert">webkit</who>
    <bug_when>2016-12-15 01:17:47 -0800</bug_when>
    <thetext>CSS Media Queries conformance test:
http://test.csswg.org/harness/test/mediaqueries-3_dev/single/relative-units-001/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379111</commentid>
    <comment_count>3</comment_count>
    <who name="David Humphrey (humphd)">david.humphrey</who>
    <bug_when>2017-12-07 08:23:55 -0800</bug_when>
    <thetext>I spent some time looking at this, and was able to get the attached plnkr test case to pass with a hacky &quot;fix&quot;.

// WebCore/css/CSSPrimitiveValue.cpp
double CSSPrimitiveValue::computeNonCalcLengthDouble(const CSSToLengthConversionData&amp; conversionData, UnitType primitiveType, double value)
{
    double factor;
    bool applyZoom = true;

    switch (primitiveType) {
    ...
    case CSS_REMS:
        // hack to force use of initial font vs. user specified root style
        auto fontDescription = conversionData.style()-&gt;fontDescription();
        fontDescription.setKeywordSizeFromIdentifier(CSSValueMedium);
        factor = fontDescription.specifiedSize();
        break;

I realize this isn&apos;t the right way to do it, but I was curious to try and track it down.  If someone with proper knowledge of the css code is willing to guide me a bit on a proper fix, and assuming it doesn&apos;t require massive changes I&apos;m not equipped to make, I&apos;d be willing to take this further.

Thanks for any guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385323</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-01-02 17:07:06 -0800</bug_when>
    <thetext>Thanks for the detailed analysis and investigation! I think you&apos;re on the right track, but we probably wouldn&apos;t have to create a whole FontDescription just to set the size correctly. I&apos;d instead call Style::fontSizeForKeyword(). If we can do that, I don&apos;t think it would be a hack; I think it would be fine to commit.

Are you interested in doing this, or should I pick it up from you?

Thanks again!
Myles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386561</commentid>
    <comment_count>5</comment_count>
    <who name="David Humphrey (humphd)">david.humphrey</who>
    <bug_when>2018-01-07 13:56:25 -0800</bug_when>
    <thetext>Thanks for your comment, Myles.  I&apos;m glad that I wasn&apos;t way off.  Yes, I think I&apos;ll try and finish this, if that&apos;s alright.  I&apos;ll follow-up with any questions I have based on what you&apos;ve written above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391412</commentid>
    <comment_count>6</comment_count>
    <who name="David Humphrey (humphd)">david.humphrey</who>
    <bug_when>2018-01-20 11:20:05 -0800</bug_when>
    <thetext>Myles, I went to finish this, and had a question. I realize now why I did things the way I did vs. using Style::fontSizeForKeyword() as you suggest--I couldn&apos;t figure out a clean way to get a document reference in CSSPrimitiveValue.cpp via the conversionData that I have, such that I can pass it in as the third arg.  I&apos;ve spent a bunch of time trying to find a way to do it, but I&apos;m stumped.  Could you give me some insight as to how to approach it?  Thanks for any tips.  I&apos;m enjoying learning things as I go, but running into the limits of my knowledge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402887</commentid>
    <comment_count>7</comment_count>
      <attachid>334815</attachid>
    <who name="Nicolas H.">dante3333</who>
    <bug_when>2018-03-01 06:38:33 -0800</bug_when>
    <thetext>Created attachment 334815
Testcase for rem media-queries bug

1. Adjust your browser window&apos;s width above 961px.
2. Go to https://hteumeuleu.fr/wp-content/uploads/2018/03/fx-media-queries-rem.html (or attached file).
3. Resize the browser window&apos;s width below 960px.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402889</commentid>
    <comment_count>8</comment_count>
    <who name="Nicolas H.">dante3333</who>
    <bug_when>2018-03-01 06:39:25 -0800</bug_when>
    <thetext>Here is another testcase in relative units: https://codepen.io/nico3333fr/full/xYMJrg/ (in french, but easily understandable)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403017</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-03-01 13:28:48 -0800</bug_when>
    <thetext>Hang on, computeNonCalcLengthDouble() is used for all style resolution, not just media queries. This is a situation where, if a media-query says &quot;60rem&quot; it refers to a different value than if an element says &quot;60rem&quot;.

So we can&apos;t just modify computeNonCalcLengthDouble(). We have to set some state inside CSSToLengthConversionData which represents whether or not we are trying to calculate a media query or a regular style on an element.

Style::fontSizeForKeyword() is sensitive to the user&apos;s preferences, namely settings().defaultFixedFontSize() and settings().defaultFontSize(). Media queries probably should be sensitive to these preferences as well, which means we should use the logic inside Style::fontSizeForKeyword().

You&apos;re right about not having access to a document inside CSSPrimitiveValue, and this is desirable - individual CSS values shouldn&apos;t know what a whole Document is. Luckily, the CSSToLengthConversionData is created in MediaQueryEvaluator::evaluate() which has access to m_document. So we should interrogate m_document inside MediaQueryEvaluator::evaluate() and use our findings to set some new fields (which we will create) inside CSSToLengthConversionData. Then, computeNonCalcLengthDouble() can read those settings.

We should make sure that when we test this, we test all the relevant combinations of defaultFontSize(), defaultFixedFontSize(), media queries, and style on regular elements.

Does that help you understand this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403018</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-03-01 13:30:31 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #9)
&gt; Hang on, computeNonCalcLengthDouble() is used for all style resolution, not
&gt; just media queries. This is a situation where, if a media-query says &quot;60rem&quot;
&gt; it refers to a different value than if an element says &quot;60rem&quot;.
&gt; 
&gt; So we can&apos;t just modify computeNonCalcLengthDouble(). We have to set some
&gt; state inside CSSToLengthConversionData which represents whether or not we
&gt; are trying to calculate a media query or a regular style on an element.
&gt; 
&gt; Style::fontSizeForKeyword() is sensitive to the user&apos;s preferences, namely
&gt; settings().defaultFixedFontSize() and settings().defaultFontSize(). Media
&gt; queries probably should be sensitive to these preferences as well, which
&gt; means we should use the logic inside Style::fontSizeForKeyword().
&gt; 
&gt; You&apos;re right about not having access to a document inside CSSPrimitiveValue,
&gt; and this is desirable - individual CSS values shouldn&apos;t know what a whole
&gt; Document is. Luckily, the CSSToLengthConversionData is created in
&gt; MediaQueryEvaluator::evaluate() which has access to m_document. So we should
&gt; interrogate m_document inside MediaQueryEvaluator::evaluate() and use our
&gt; findings to set some new fields (which we will create) inside
&gt; CSSToLengthConversionData. Then, computeNonCalcLengthDouble() can read those
&gt; settings.
&gt; 
&gt; We should make sure that when we test this, we test all the relevant
&gt; combinations of defaultFontSize(), defaultFixedFontSize(), media queries,
&gt; and style on regular elements.
&gt; 
&gt; Does that help you understand this?

Oh, and we&apos;re going to have to refactor Style::fontSizeForKeyword() to make a version that doesn&apos;t accept a whole Document, but just accepts the things that it would have asked the document for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520608</commentid>
    <comment_count>11</comment_count>
      <attachid>365812</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2019-03-23 06:17:30 -0700</bug_when>
    <thetext>Created attachment 365812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574391</commentid>
    <comment_count>12</comment_count>
    <who name="Dan Burzo">danburzo</who>
    <bug_when>2019-09-26 02:01:12 -0700</bug_when>
    <thetext>Not sure this is a helpful addition at this point, but currently, because `rem`s in media queries relate to the html font-size rather than the initial font-size, you can create infinite loops:

@media (min-width: 60rem) {
  html {
    font-size: 20rem;
  }
}

This manifests in Safari 12 macOS as a continuous toggle in font-size while resizing the window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660259</commentid>
    <comment_count>13</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-06-08 10:42:41 -0700</bug_when>
    <thetext>Up for grabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816753</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-18 22:42:30 -0800</bug_when>
    <thetext>For clarification, this bug is only about the condition of the media query, and not about the body of the media query.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816765</commentid>
    <comment_count>15</comment_count>
      <attachid>444786</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-19 00:42:58 -0800</bug_when>
    <thetext>Created attachment 444786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817102</commentid>
    <comment_count>16</comment_count>
      <attachid>444786</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-20 00:43:46 -0800</bug_when>
    <thetext>Comment on attachment 444786
Patch

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

&gt; Source/WebCore/css/CSSToLengthConversionData.h:102
&gt; +    std::optional&lt;float&gt; m_referenceFontSizeOverride;

It seems awkward that this is an optional &quot;override&quot;. Why not just have m_referenceFontSize that is always correct and used consistently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817157</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 16:16:01 -0800</bug_when>
    <thetext>It looks like this is causing these WPTs to progress:

imported/w3c/web-platform-tests/css/mediaqueries/relative-units-001.html
imported/w3c/web-platform-tests/css/mediaqueries/mq-calc-005.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817161</commentid>
    <comment_count>18</comment_count>
      <attachid>444911</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 16:51:47 -0800</bug_when>
    <thetext>Created attachment 444911
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817162</commentid>
    <comment_count>19</comment_count>
      <attachid>444911</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 17:01:40 -0800</bug_when>
    <thetext>Comment on attachment 444911
WIP

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

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:654
&gt; +    if (referenceFontSizeOverride)
&gt; +        return *referenceFontSizeOverride;

Hang on, I don&apos;t think this is right. If the content says

@media (min-width: 2ex)

that &quot;ex&quot; unit doesn&apos;t correspond to the font size; it corresponds to the ex-height of the font which would have been used on the root element if it wasn&apos;t styled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817163</commentid>
    <comment_count>20</comment_count>
      <attachid>444912</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 17:54:37 -0800</bug_when>
    <thetext>Created attachment 444912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817361</commentid>
    <comment_count>21</comment_count>
      <attachid>444990</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-22 16:41:20 -0800</bug_when>
    <thetext>Created attachment 444990
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817368</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-22 17:46:22 -0800</bug_when>
    <thetext>Committed r286123 (244510@main): &lt;https://commits.webkit.org/244510@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838706</commentid>
    <comment_count>23</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2022-02-08 09:10:25 -0800</bug_when>
    <thetext>*** Bug 78295 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>334815</attachid>
            <date>2018-03-01 06:38:33 -0800</date>
            <delta_ts>2018-03-01 06:38:33 -0800</delta_ts>
            <desc>Testcase for rem media-queries bug</desc>
            <filename>fx-media-queries-rem.html</filename>
            <type>text/html</type>
            <size>799</size>
            <attacher name="Nicolas H.">dante3333</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+PGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2
PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+DQoJPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1z
Y2FsZT0xLjAiPg0KCTxtZXRhIGNoYXJzZXQ9IlVURi04Ij4NCgk8dGl0bGU+cmVtIE1lZGlhIFF1
ZXJpZXMgaW4gRmlyZWZveDwvdGl0bGU+DQoJPHN0eWxlPg0KCQlodG1sIHsNCgkJCWZvbnQtc2l6
ZTogMTBweDsNCgkJfQ0KDQoJCUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjBy
ZW0pIHsNCgkJCWJvZHkgew0KCQkJCWNvbG9yOiAjZmZmOw0KCQkJCWJhY2tncm91bmQ6ICMzMzM7
DQoJCQl9DQoJCX0NCgk8L3N0eWxlPg0KPC9oZWFkPg0KPGJvZHk+DQoJPHByZT48Y29kZT4NCmh0
bWwgew0KCWZvbnQtc2l6ZTogMTBweDsNCn0NCg0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4
LXdpZHRoOiA2MHJlbSkgew0KCWJvZHkgew0KCQljb2xvcjogI2ZmZjsNCgkJYmFja2dyb3VuZDog
IzMzMzsNCgl9DQp9DQoJPC9jb2RlPjwvcHJlPg0KCTxwPg0KCQlUaGUgbWVkaWEgcXVlcnkgc2hv
dWxkIHRyaWdnZXIgYXQgOTYwcHguIFdoZW4gcmVzaXppbmcgdGhlIHdpbmRvdyAob3IgDQp1c2lu
ZyByZXNwb25zaXZlIG1vZGUpLCBpdCBpcyB0cmlnZ2VyZWQgYXQgNjAwcHguIFRlc3RlZCBpbiBG
aXJlZm94IA0KNTguMC4yIG9uIG1hY09TIDEwLjEyLjYuDQoJPC9wPg0KDQo8L2JvZHk+PC9odG1s
Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365812</attachid>
            <date>2019-03-23 06:17:30 -0700</date>
            <delta_ts>2021-11-19 00:42:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156684-20190323141729.patch</filename>
            <type>text/plain</type>
            <size>3112</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc5NjE1OGJjMmRhZGEy
MmIzOWY5MTEyZDMyYjljOTg4NzI4NTFmNy4uNDA3ODZiZGU4OTk2ZTgzZDRjYzhiMGZiM2FlNDAx
ZGQ2OTVjZDczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAzLTIzICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgcmVtIGluIG1lZGlhIHF1ZXJpZXMg
c2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWwsIG5vdCByb290IGVs
ZW1lbnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTY2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlIGNvbnN0KToKKwogMjAxOS0wMy0yMSAgQ2F0
aGllIENoZW4gIDxjYXRoaWVjaGVuQGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4ZWQgQ29udGVu
dENoYW5nZU9ic2VydmVyIGJ1aWxkIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCmluZGV4IDUyNzA1MmIzZDJiMjdjMzQwZDg4M2JkNmYxOTA4ZDJhYTBl
N2MyZjkuLjRlYzZjYmRmODUzZDA0ZmQzMzE2Yjk2MWUxOTgzNzcxYTk5ZGExZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTg1MSw5ICs4NTEsNyBA
QCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlFeHBy
ZXNzaW9uJiBleHByZXNzaW9uKSBjb25zdAogICAgIGlmICghZnVuY3Rpb24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnVuY3Rpb24oZXhwcmVzc2lvbi52YWx1ZSgp
LCB7IG1fc3R5bGUsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpLCBk
b2N1bWVudC5yZW5kZXJWaWV3KCksIDEsIGZhbHNlIH0sICpmcmFtZSwgTm9QcmVmaXgpOworICAg
IHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwgbnVsbHB0ciwg
ZG9jdW1lbnQucmVuZGVyVmlldygpLCAxLCBmYWxzZSB9LCAqZnJhbWUsIE5vUHJlZml4KTsKIH0K
IAogYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiODJl
YmRjZmI4Yzc0M2Y2ZTk3MTliNWFjOGQxNjA0MGI3ZDE5NDQuLjYyYjUzNzA0ODlmMzkwMzhjZjc5
ZTQ5ZWUyMmYyYjk0ODM3Y2YyYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMy0yMyAg
Um9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHJlbSBpbiBtZWRpYSBxdWVy
aWVzIHNob3VsZCBiZSBjYWxjdWxhdGVkIHVzaW5nIGZvbnQtc2l6ZTppbml0aWFsLCBub3Qgcm9v
dCBlbGVtZW50IGZvbnQtc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU2Njg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorCiAyMDE5LTAzLTIxICBNaWd1ZWwgR29t
ZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsrIGFuZCBX
UEUgZ2FyZGVuaW5nIGFmdGVyIHIyNDMyNzguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMGFkOWMz
YTlmMmQ2NWFiNGFhMGM2NDAwMzJhMmMzNmZhZmQ0Y2QxLi41ODBjYjliYTZkMjE5ZDZiOTRhNzE5
NDMyNTI5ZmE1ZGQxOWQ2Y2EzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTY2Miw4ICs2NjIsNiBA
QCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJpZXMvZGV2aWNl
LWFzcGVjdC1yYXRpby0wMDEuaHRtbCBbCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9tZWRpYXF1ZXJpZXMvZGV2aWNlLWFzcGVjdC1yYXRpby0wMDUuaHRtbCBbIFNraXAgXQog
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJpZXMvbWluLXdp
ZHRoLTAwMS54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTY2ODQgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL3JlbGF0aXZlLXVu
aXRzLTAwMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU2Njg0IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9tcS1jYWxjLTAw
NS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgbnRoLWNoaWxkIHRlc3RzIHRha2VzIGxv
bmcgdGltZSBhbmQgRGVidWcgYnVpbGQgc29tZXRpbWVzIHRpbWVvdXRzIGJlY2F1c2UgdGhlcmUg
YXJlIG1hbnkgdGVzdCBjYXNlcy4KIHdlYmtpdC5vcmcvYi8xMzcxNDkgZmFzdC9zZWxlY3RvcnMv
bnRoLWNoaWxkLW9mLWJhc2ljcy5odG1sIFsgU2xvdyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444786</attachid>
            <date>2021-11-19 00:42:58 -0800</date>
            <delta_ts>2021-11-20 16:51:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156684-20211119004257.patch</filename>
            <type>text/plain</type>
            <size>18043</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYyMjc3MDU0MjM5YWE0
ZjZkYmE3ZGM5NmVjNGU5OTY0YzIyNzExOS4uYzk0NmY0Mzk3MTZjOTIzNmQ3NWYwNmI4YTk3ZDZh
MGMyOGUyNDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTExLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1l
ZGlhIHF1ZXJpZXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWws
IG5vdCByb290IGVsZW1lbnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTIHNwZWMgc2F5czoKKyAgICAgICAgPiBSZWxhdGl2
ZSB1bml0cyBpbiBtZWRpYSBxdWVyaWVzIGFyZSBiYXNlZCBvbiB0aGUgaW5pdGlhbCB2YWx1ZSwg
d2hpY2ggbWVhbnMgdGhhdCB1bml0cyBhcmUgbmV2ZXIgYmFzZWQgb24gcmVzdWx0cyBvZiBkZWNs
YXJhdGlvbnMuCisgICAgICAgIFdlIHdlcmUgcHJldmlvdXNseSBjYWxjdWxhdGluZyB0aGUgcmVt
IHVuaXRzIGJhc2VkIG9uIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgcm9vdCBlbGVtZW50J3Mg
Zm9udC1zaXplLiBJbnN0ZWFkLAorICAgICAgICB3ZSBzaG91bGQgYmUgY2FsY3VsYXRpbmcgd2hh
dCB0aGUgIm5vcm1hbCIgZm9udC1zaXplIG9mIHRoZSByb290IGVsZW1lbnQgd291bGQgYmUsIGJl
Y2F1c2UgIm5vcm1hbCIgaXMgdGhlIGluaXRpYWwKKyAgICAgICAgdmFsdWUgb2YgZm9udC1zaXpl
LCBhbmQgdXNlIHRoYXQuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L21lZGlhLXF1ZXJ5LXJl
bS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0ZvbnRSZWxhdGl2ZVNjYWxhcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xl
bmd0aERvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZU5vbkNhbGNMZW5ndGhEb3VibGUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
OgorICAgICAgICAqIGNzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhOjpDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlZmVy
ZW5jZUZvbnRTaXplT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1
YXRlIGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisKIDIwMjEtMTEt
MTggIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IG9ucHVzaHN1YnNjcmlwdGlvbmNoYW5nZSBldmVudCBoYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBmNDg4MmFhZjFlM2RhNDAxZmQ2ZDg3OTg0NTdh
OGM4YTc4ZTAzZGMzLi44Y2NlNjg3N2IwODExYjY5NjIzYzNhZDc0MDQ0MWEyNWZhMWIzNTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTY0OCwyOSArNjQ4
LDUxIEBAIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1tUGVySW5jaCA9IDI1LjQ7CiBzdGF0aWMg
Y29uc3RleHByIGRvdWJsZSBjbVBlckluY2ggPSAyLjU0Owogc3RhdGljIGNvbnN0ZXhwciBkb3Vi
bGUgUVBlckluY2ggPSAyNS40ICogNC4wOwogCi1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUoQ1NTVW5pdFR5cGUgcHJpbWl0aXZlVHlw
ZSwgZG91YmxlIHZhbHVlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5VG9Db21wdXRlLCBjb25zdCBG
b250TWV0cmljcyogZm9udE1ldHJpY3MsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNj
cmlwdGlvbiwgY29uc3QgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBkb3VibGUgY29t
cHV0ZVVuem9vbWVkTm9uQ2FsY0ZvbnRSZWxhdGl2ZVNjYWxhcihDU1NVbml0VHlwZSBwcmltaXRp
dmVUeXBlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5VG9Db21wdXRlLCBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiByZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRlLCBjb25zdCBGb250TWV0cmljcyogZm9udE1l
dHJpY3MsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qIGZvbnREZXNjcmlwdGlvbiwgY29u
c3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlwdGlvbikKIHsKKyAgICBp
ZiAocmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuICpyZWZlcmVuY2VG
b250U2l6ZU92ZXJyaWRlOworCiAgICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKSB7CiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZ
X0VNUzoKICAgICAgICAgQVNTRVJUKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgIHJldHVybiAo
KHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemUpID8gZm9udERlc2NyaXB0
aW9uLT5zcGVjaWZpZWRTaXplKCkgOiBmb250RGVzY3JpcHRpb24tPmNvbXB1dGVkU2l6ZSgpKSAq
IHZhbHVlOworICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0
eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2Ny
aXB0aW9uLT5jb21wdXRlZFNpemUoKSk7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoK
ICAgICAgICAgQVNTRVJUKGZvbnRNZXRyaWNzKTsKICAgICAgICAgaWYgKGZvbnRNZXRyaWNzLT5o
YXNYSGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnhIZWlnaHQoKSAq
IHZhbHVlOworICAgICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLT54SGVpZ2h0KCk7CiAgICAg
ICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOwotICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRv
Q29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3BlY2lm
aWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgLyAyLjAgKiB2YWx1
ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICAgICAgcmV0dXJuICgocHJv
cGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyBmb250RGVzY3JpcHRpb24t
PnNwZWNpZmllZFNpemUoKSA6IGZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpIC8gMi4w
OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOiB7CiAgICAgICAgIGlmICghcm9vdEZv
bnREZXNjcmlwdGlvbikKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgcmV0dXJu
ICgocHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyByb290Rm9udERl
c2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgOiByb290Rm9udERlc2NyaXB0aW9uLT5jb21wdXRl
ZFNpemUoKSkgKiB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAocmVm
ZXJlbmNlRm9udFNpemVPdmVycmlkZSkKKyAgICAgICAgICAgIHJldHVybiAqcmVmZXJlbmNlRm9u
dFNpemVPdmVycmlkZTsKKyAgICAgICAgaWYgKHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3Bl
cnR5Rm9udFNpemUpCisgICAgICAgICAgICByZXR1cm4gcm9vdEZvbnREZXNjcmlwdGlvbi0+c3Bl
Y2lmaWVkU2l6ZSgpOworICAgICAgICByZXR1cm4gcm9vdEZvbnREZXNjcmlwdGlvbi0+Y29tcHV0
ZWRTaXplKCk7CisgICAgfQogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CiAgICAgICAg
IEFTU0VSVChmb250TWV0cmljcyk7Ci0gICAgICAgIHJldHVybiBmb250TWV0cmljcy0+emVyb1dp
ZHRoKCkgKiB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLT56ZXJvV2lkdGgoKTsK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfSUM6CiAgICAgICAgIEFTU0VSVChmb250TWV0cmlj
cyk7Ci0gICAgICAgIHJldHVybiBmb250TWV0cmljcy0+aWRlb2dyYW1XaWR0aCgpICogdmFsdWU7
CisgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+aWRlb2dyYW1XaWR0aCgpOworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAtMS4wOworICAgIH0KK30KKworZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56
b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlIHByaW1pdGl2ZVR5cGUsIGRvdWJs
ZSB2YWx1ZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSwgc3RkOjpvcHRpb25hbDxm
bG9hdD4gcmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSwgY29uc3QgRm9udE1ldHJpY3MqIGZvbnRN
ZXRyaWNzLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiBmb250RGVzY3JpcHRpb24sIGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qIHJvb3RGb250RGVzY3JpcHRpb24sIGNvbnN0IFJl
bmRlclZpZXcqIHJlbmRlclZpZXcpCit7CisgICAgaWYgKGlzRm9udFJlbGF0aXZlTGVuZ3RoKHBy
aW1pdGl2ZVR5cGUpKQorICAgICAgICByZXR1cm4gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0ZvbnRS
ZWxhdGl2ZVNjYWxhcihwcmltaXRpdmVUeXBlLCBwcm9wZXJ0eVRvQ29tcHV0ZSwgcmVmZXJlbmNl
Rm9udFNpemVPdmVycmlkZSwgZm9udE1ldHJpY3MsIGZvbnREZXNjcmlwdGlvbiwgcm9vdEZvbnRE
ZXNjcmlwdGlvbikgKiB2YWx1ZTsKKworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewogICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19DTToKQEAgLTY3OSwxMCArNzAxLDYgQEAgZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1VuaXRU
eXBlIHByaW1pdGkKICAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggLyBtbVBlckluY2gg
KiB2YWx1ZTsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKICAgICAgICAgcmV0dXJuIGNz
c1BpeGVsc1BlckluY2ggLyBRUGVySW5jaCAqIHZhbHVlOwotICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19MSFM6Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gLTEuMDsKICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfSU46CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNoICogdmFsdWU7CiAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgpAQCAtNzM4LDcgKzc1Niw3IEBAIGRvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25E
YXRhLnN0eWxlKCkpOwotICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5n
dGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9D
b21wdXRlKCksIG51bGxwdHIsICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRp
b24oKSk7CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJs
ZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUo
KSwgY29udmVyc2lvbkRhdGEucmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSgpLCBudWxscHRyLCAm
Y29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6CkBAIC03NDYsMTcgKzc2NCwxNyBA
QCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBj
b21wdXRlIEVYIHVzaW5nIGZvbnRNZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6
ZSBhbmQgbm90IHVzZQogICAgICAgICAvLyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmlu
ZyBmb250LgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAg
IHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBl
LCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250
RGVzY3JpcHRpb24oKSk7CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xl
bmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlU
b0NvbXB1dGUoKSwgY29udmVyc2lvbkRhdGEucmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSgpLCAm
Y29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSwgJmNvbnZlcnNpb25EYXRhLnN0
eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25D
YWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9w
ZXJ0eVRvQ29tcHV0ZSgpLCBudWxscHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yb290U3R5
bGUoKSA/ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkgOiBu
dWxscHRyKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0
ZSgpLCBjb252ZXJzaW9uRGF0YS5yZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRlKCksIG51bGxwdHIs
IG51bGxwdHIsIGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpID8gJmNvbnZlcnNpb25EYXRhLnJv
b3RTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSA6IG51bGxwdHIpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0lDOgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAg
IHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBl
LCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpv
b21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25E
YXRhLnByb3BlcnR5VG9Db21wdXRlKCksIGNvbnZlcnNpb25EYXRhLnJlZmVyZW5jZUZvbnRTaXpl
T3ZlcnJpZGUoKSwgJmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKQEAgLTc2OCw3ICs3
ODYsNyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91
YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNT
U19QQzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVO
R1RIOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1C
RVI6Ci0gICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShw
cmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSk7
CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmlt
aXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgY29u
dmVyc2lvbkRhdGEucmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSgpKTsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5oCmluZGV4IDg1YWFjN2QzZjVmMjdhZjNhYTY2MmVhYTI2MzMzOTA2Nzc5OWU4
YmQuLmE0ZDM0MWY0ZTZlZTc3NjE4YTM5ZjgxM2U5ZWE0MDFkNTRiOThiYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBkb3VibGUgY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3RvcihD
U1NVbml0VHlwZSk7CiAgICAgc3RhdGljIFN0cmluZyB1bml0VHlwZVN0cmluZyhDU1NVbml0VHlw
ZSk7CiAKLSAgICBzdGF0aWMgZG91YmxlIGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3Vi
bGUoQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJvcGVydHlJRCwgY29uc3QgRm9udE1l
dHJpY3MqID0gbnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogPSBudWxscHRy
LCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uID0gbnVs
bHB0ciwgY29uc3QgUmVuZGVyVmlldyogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgZG91YmxlIGNv
bXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUoQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1
ZSwgQ1NTUHJvcGVydHlJRCwgc3RkOjpvcHRpb25hbDxmbG9hdD4gcmVmZXJlbmNlRm9udFNpemVP
dmVycmlkZSA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgRm9udE1ldHJpY3MqID0gbnVsbHB0ciwgY29u
c3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogPSBudWxscHRyLCBjb25zdCBGb250Q2FzY2FkZURl
c2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyVmll
dyogPSBudWxscHRyKTsKICAgICBzdGF0aWMgZG91YmxlIGNvbXB1dGVOb25DYWxjTGVuZ3RoRG91
YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBDU1NVbml0VHlwZSwgZG91Ymxl
IHZhbHVlKTsKICAgICAvLyBUcnVlIGlmIGNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlIHdvdWxk
IHByb2R1Y2UgaWRlbnRpY2FsIHJlc3VsdHMgd2hlbiByZXNvbHZlZCBhZ2FpbnN0IGJvdGggdGhl
c2Ugc3R5bGVzLgogICAgIHN0YXRpYyBib29sIGVxdWFsRm9yTGVuZ3RoUmVzb2x1dGlvbihjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJlbmRlclN0eWxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAppbmRleCBlNWMyYjYyYzUyZWMyMWEzNjUy
OTgwMWM3Y2Q0ODZhZmJjOTU2MTQwLi5jN2I5NTM4ZWIwMzVhYzVjNTkyNDNmMDI1MTY0YzFkNjdm
ZmViNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhLmgKQEAgLTQyLDEzICs0MiwxNCBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBjbGFzcyBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhIHsKIHB1YmxpYzoKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3LCBmbG9hdCB6b29tLCBzdGQ6Om9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3Bl
cnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRl
bmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRl
clZpZXcsIGZsb2F0IHpvb20sIHN0ZDo6b3B0aW9uYWw8Q1NTUHJvcGVydHlJRD4gcHJvcGVydHlU
b0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQsIFJlbmRlclN0eWxlKiB2aWV3cG9ydERlcGVuZGVuY3lE
ZXRlY3Rpb25TdHlsZSA9IG51bGxwdHIsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHJlZmVyZW5jZUZv
bnRTaXplT3ZlcnJpZGUgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogbV9zdHlsZShzdHlsZSkK
ICAgICAgICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJlbnRTdHls
ZShwYXJlbnRTdHlsZSkKICAgICAgICAgLCBtX3ZpZXdwb3J0RGVwZW5kZW5jeURldGVjdGlvblN0
eWxlKHZpZXdwb3J0RGVwZW5kZW5jeURldGVjdGlvblN0eWxlID8gdmlld3BvcnREZXBlbmRlbmN5
RGV0ZWN0aW9uU3R5bGUgOiBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4oc3R5bGUpKQogICAgICAg
ICAsIG1fcmVuZGVyVmlldyhyZW5kZXJWaWV3KQogICAgICAgICAsIG1fem9vbSh6b29tKQorICAg
ICAgICAsIG1fcmVmZXJlbmNlRm9udFNpemVPdmVycmlkZShyZWZlcmVuY2VGb250U2l6ZU92ZXJy
aWRlKQogICAgICAgICAsIG1fcHJvcGVydHlUb0NvbXB1dGUocHJvcGVydHlUb0NvbXB1dGUpCiAg
ICAgewogICAgICAgICBBU1NFUlQoem9vbSA+IDApOwpAQCAtNzIsNiArNzMsNyBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgem9vbSgpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0aW5nRm9udFNpemUoKSBj
b25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemU7
IH0KICAgICBib29sIGNvbXB1dGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5TGluZUhlaWdodDsgfQorICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8ZmxvYXQ+JiByZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRlOyB9CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUudmFsdWVf
b3IoQ1NTUHJvcGVydHlJbnZhbGlkKTsgfQogICAgIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZpZXc7IH0KIApAQCAtOTcsNiArOTksNyBAQCBw
cml2YXRlOgogICAgIFJlbmRlclN0eWxlKiBtX3ZpZXdwb3J0RGVwZW5kZW5jeURldGVjdGlvblN0
eWxlIHsgbnVsbHB0ciB9OwogICAgIGNvbnN0IFJlbmRlclZpZXcqIG1fcmVuZGVyVmlldyB7IG51
bGxwdHIgfTsKICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBtX3pvb207CisgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gbV9yZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRlOwogICAgIHN0ZDo6b3B0aW9u
YWw8Q1NTUHJvcGVydHlJRD4gbV9wcm9wZXJ0eVRvQ29tcHV0ZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCA4NTZlYzQ2YWMwZjhmNjA3OWJm
MzY2ODgyMzczNDc0OWQyNDJkZGE3Li4yODFjMmI2NDE5Y2M4MDAxNTkyMTNhN2E3YTMyYzI3Zjg3
OTk2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBA
IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTdHlsZUZvbnRTaXpl
RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVGhlbWUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtOTI2
LDkgKzkyNywxMyBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWx1YXRlKGNvbnN0IE1l
ZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uKSBjb25zdAogCiAgICAgaWYgKCFkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAorCisgICAg
Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL21lZGlhcXVlcmllcy8jdW5pdHMKKyAgICAvLyAi
UmVsYXRpdmUgdW5pdHMgaW4gbWVkaWEgcXVlcmllcyBhcmUgYmFzZWQgb24gdGhlIGluaXRpYWwg
dmFsdWUsIHdoaWNoIG1lYW5zIHRoYXQgdW5pdHMgYXJlIG5ldmVyIGJhc2VkIG9uIHJlc3VsdHMg
b2YgZGVjbGFyYXRpb25zLiIKKyAgICBmbG9hdCBmb250U2l6ZUluaXRpYWxWYWx1ZSA9IFN0eWxl
Ojpmb250U2l6ZUZvcktleXdvcmQoQ1NTVmFsdWVNZWRpdW0sIGZhbHNlLCBkb2N1bWVudCk7CisK
ICAgICAvLyBQYXNzIGBudWxscHRyYCBmb3IgYHBhcmVudFN0eWxlYCBiZWNhdXNlIHdlIGFyZSBp
biB0aGUgY29udGV4dCBvZiBhIG1lZGlhIHF1ZXJ5LgotICAgIHJldHVybiBmdW5jdGlvbihleHBy
ZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJl
bmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMSwgc3RkOjpudWxs
b3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOworICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9u
LnZhbHVlKCksIHsgbV9zdHlsZSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0
eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMSwgc3RkOjpudWxsb3B0LCBu
dWxscHRyLCBmb250U2l6ZUluaXRpYWxWYWx1ZSB9LCAqZnJhbWUsIE5vUHJlZml4KTsKIH0KIAog
Ym9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcAppbmRleCA0MjdkZDg4NTQ4YmVm
NjRmNjJjNmU5ZmZjYmJiMTkyMTI3NTFmNDA5Li4zZWVhNTU0Zjk0NGQ4NWIzNTA2OTQ5YWQxODU3
NjFiYTI2MWUwOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVGb3JGb250UmF3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2Nh
ZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRl
CiAgICAgICAgICAgICAvLyAgICAgICAgSXQncyB1bmNsZWFyIGluIHRoZSBzcGVjaWZpY2F0aW9u
IGlmIHRoZXkncmUgZXhwZWN0ZWQgdG8gd29yayBvbiBPZmZzY3JlZW5DYW52YXMsIGdpdmVuCiAg
ICAgICAgICAgICAvLyAgICAgICAgdGhhdCBpdCdzIG9mZi1zY3JlZW4gYW5kIHRoZXJlZm9yZSBk
b2Vzbid0IHN0cmljdGx5IGhhdmUgYW4gYXNzb2NpYXRlZCB2aWV3cG9ydC4KICAgICAgICAgICAg
IC8vICAgICAgICBUaGlzIG5lZWRzIGNsYXJpZmljYXRpb24gYW5kIHBvc3NpYmx5IGZpeGluZy4K
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUobGVuZ3RoLnR5cGUsIGxlbmd0aC52
YWx1ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgJmZvbnRDYXNjYWRlLmZvbnRNZXRyaWNzKCksICZm
b250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlv
bigpLCBpczxEb2N1bWVudD4oY29udGV4dCkgPyBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCku
cmVuZGVyVmlldygpIDogbnVsbHB0cikpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERv
dWJsZShsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzdGQ6
Om51bGxvcHQsICZmb250Q2FzY2FkZS5mb250TWV0cmljcygpLCAmZm9udENhc2NhZGUuZm9udERl
c2NyaXB0aW9uKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgaXM8RG9jdW1lbnQ+
KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnJlbmRlclZpZXcoKSA6IG51
bGxwdHIpKTsKICAgICAgICAgfSwgWyZdIChkb3VibGUgcGVyY2VudGFnZSkgewogICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PigocGFyZW50U2l6ZSAqIHBlcmNlbnRhZ2UpIC8g
MTAwLjApOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ODMxYTE1YzQ3OGY4ZTViY2VmMTRjYmNhZjBl
ZDkyNWFlZDY3NzE2Li5jMDI5NDFkOWUxNzAxNzcyOGE1NTg3NmUyOGVkMmQyODhhYTQ2OTFkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMTkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICByZW0gaW4gbWVkaWEgcXVlcmllcyBzaG91bGQg
YmUgY2FsY3VsYXRlZCB1c2luZyBmb250LXNpemU6aW5pdGlhbCwgbm90IHJvb3QgZWxlbWVudCBm
b250LXNpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NjY4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC90ZXh0L21lZGlhLXF1ZXJ5LXJlbS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RleHQvbWVkaWEtcXVlcnktcmVtLmh0bWw6IEFkZGVkLgorCiAyMDIxLTExLTE4
ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBv
bnB1c2hzdWJzY3JpcHRpb25jaGFuZ2UgZXZlbnQgaGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L21lZGlhLXF1ZXJ5LXJlbS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC90ZXh0L21lZGlhLXF1ZXJ5LXJlbS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1
ZTNhYzcyMjM5NmMzNDExZmJiMGQ1ZTZkNWQyNjYxZDQxYTFjYmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbWVkaWEtcXVlcnktcmVtLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
OnJvb3QgeworICAgIGZvbnQtc2l6ZTogNjRweDsKK30KKworI2V4cGxhbmF0aW9uIHsKKyAgICBm
b250LXNpemU6IDE2cHg7Cit9CisKKyN0ZXN0IHsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJleHBsYW5hdGlvbiI+CitUaGlzIHRlc3Qg
bWFrZXMgc3VyZSB0aGF0IDxjb2RlPnJlbTwvY29kZT4gdW5pdHMgaW4gbWVkaWEgcXVlcnkgY29u
ZGl0aW9ucyBhcmUgZXZhbHVhdGVkIGFjY29yZGluZyB0byA8Y29kZT5mb250LXNpemU8L2NvZGU+
J3MgPGVtPmluaXRpYWwgdmFsdWU8L2VtPiwgbm90IGl0cyA8ZW0+Y29tcHV0ZWQgdmFsdWU8L2Vt
Pi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZSB0ZXh0IHlvdSBzZWUgYmVsb3cgaXMgZ3JlZW4gd2hl
biB0aGUgYnJvd3NlciB3aW5kb3cgaXMgYXJvdW5kIDgwMHB4IHdpZGUuCis8L2Rpdj4KKzxkaXYg
aWQ9InRlc3QiPlRleHQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9tZWRpYS1xdWVyeS1yZW0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9tZWRpYS1xdWVyeS1yZW0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmViYzE5Y2FlYjg5NjkyNjlm
OWNjYzMxZWNiZmY4NzVkODU1MjE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC90ZXh0L21lZGlhLXF1ZXJ5LXJlbS5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKzpyb290IHsKKyAgICBmb250LXNpemU6IDY0
cHg7Cit9CisKKyNleHBsYW5hdGlvbiB7CisgICAgZm9udC1zaXplOiAxNnB4OworfQorCisjdGVz
dCB7CisgICAgY29sb3I6IHJlZDsKK30KKworQG1lZGlhIChtaW4td2lkdGg6IDI1cmVtKSB7Cisg
ICAgI3Rlc3QgeworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgfQorfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZXhwbGFuYXRpb24iPgorVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCA8Y29kZT5yZW08L2NvZGU+IHVuaXRzIGluIG1lZGlhIHF1ZXJ5IGNvbmRpdGlvbnMg
YXJlIGV2YWx1YXRlZCBhY2NvcmRpbmcgdG8gPGNvZGU+Zm9udC1zaXplPC9jb2RlPidzIDxlbT5p
bml0aWFsIHZhbHVlPC9lbT4sIG5vdCBpdHMgPGVtPmNvbXB1dGVkIHZhbHVlPC9lbT4uIFRoZSB0
ZXN0IHBhc3NlcyBpZiB0aGUgdGV4dCB5b3Ugc2VlIGJlbG93IGlzIGdyZWVuIHdoZW4gdGhlIGJy
b3dzZXIgd2luZG93IGlzIGFyb3VuZCA4MDBweCB3aWRlLgorPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0
Ij5UZXh0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444911</attachid>
            <date>2021-11-20 16:51:47 -0800</date>
            <delta_ts>2021-11-20 17:54:34 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-156684-20211120165147.patch</filename>
            <type>text/plain</type>
            <size>17346</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFlZWI4NDQ4ZGRiOWJl
OTU5YmE2YjFmYmRkM2VhZjkyOWRlMjU3Ni4uNDY1MDNiOTU0YWY4MTkxMzJhNTQ0ZjUxYTgwN2Yx
ZDlhYmFkYzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTExLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1l
ZGlhIHF1ZXJpZXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWws
IG5vdCByb290IGVsZW1lbnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgQ1NTIHNwZWMgc2F5czoKKyAgICAgICAgPiBSZWxhdGl2
ZSB1bml0cyBpbiBtZWRpYSBxdWVyaWVzIGFyZSBiYXNlZCBvbiB0aGUgaW5pdGlhbCB2YWx1ZSwg
d2hpY2ggbWVhbnMgdGhhdCB1bml0cyBhcmUgbmV2ZXIgYmFzZWQgb24gcmVzdWx0cyBvZiBkZWNs
YXJhdGlvbnMuCisgICAgICAgIFdlIHdlcmUgcHJldmlvdXNseSBjYWxjdWxhdGluZyB0aGUgcmVt
IHVuaXRzIGJhc2VkIG9uIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgcm9vdCBlbGVtZW50J3Mg
Zm9udC1zaXplLiBJbnN0ZWFkLAorICAgICAgICB3ZSBzaG91bGQgYmUgY2FsY3VsYXRpbmcgd2hh
dCB0aGUgIm5vcm1hbCIgZm9udC1zaXplIG9mIHRoZSByb290IGVsZW1lbnQgd291bGQgYmUsIGJl
Y2F1c2UgIm5vcm1hbCIgaXMgdGhlIGluaXRpYWwKKyAgICAgICAgdmFsdWUgb2YgZm9udC1zaXpl
LCBhbmQgdXNlIHRoYXQuCisKKyAgICAgICAgVGVzdHM6IGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9yZWxhdGl2ZS11bml0cy0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVz
L21xLWNhbGMtMDA1Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW56b29tZWROb25DYWxjRm9udFJlbGF0aXZlU2Nh
bGFyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29t
ZWROb25DYWxjTGVuZ3RoRG91YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OkNTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YTo6cmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSBjb25zdCk6CisgICAgICAgICogY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckZv
bnRSYXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OnJlc29sdmVGb3JGb250UmF3KToK
KwogMjAyMS0xMS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJHUFVdIEFkZCBjb252ZXJ0ZXJzIGZyb20gc2VyaWFsaXphYmxlIGRlc2Ny
aXB0b3JzIHRvIGludGVyZmFjZSBkZXNjcmlwdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKaW5kZXggZjQ4ODJhYWYxZTNkYTQwMWZkNmQ4Nzk4NDU3YThjOGE3OGUw
M2RjMy4uOGNjZTY4NzdiMDgxMWI2OTYyM2MzYWQ3NDA0NDFhMjVmYTFiMzU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC02NDgsMjkgKzY0OCw1MSBAQCBz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBtbVBlckluY2ggPSAyNS40Owogc3RhdGljIGNvbnN0ZXhw
ciBkb3VibGUgY21QZXJJbmNoID0gMi41NDsKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIFFQZXJJ
bmNoID0gMjUuNCAqIDQuMDsKIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56
b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlIHByaW1pdGl2ZVR5cGUsIGRvdWJs
ZSB2YWx1ZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSwgY29uc3QgRm9udE1ldHJp
Y3MqIGZvbnRNZXRyaWNzLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qIHJvb3RGb250RGVzY3JpcHRpb24s
IGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgZG91YmxlIGNvbXB1dGVVbnpv
b21lZE5vbkNhbGNGb250UmVsYXRpdmVTY2FsYXIoQ1NTVW5pdFR5cGUgcHJpbWl0aXZlVHlwZSwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSwgc3RkOjpvcHRpb25hbDxmbG9hdD4gcmVm
ZXJlbmNlRm9udFNpemVPdmVycmlkZSwgY29uc3QgRm9udE1ldHJpY3MqIGZvbnRNZXRyaWNzLCBj
b25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24qIHJvb3RGb250RGVzY3JpcHRpb24pCiB7CisgICAgaWYgKHJlZmVy
ZW5jZUZvbnRTaXplT3ZlcnJpZGUpCisgICAgICAgIHJldHVybiAqcmVmZXJlbmNlRm9udFNpemVP
dmVycmlkZTsKKwogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewogICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CiAg
ICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOwotICAgICAgICByZXR1cm4gKChwcm9wZXJ0
eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3Bl
Y2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgKiB2YWx1ZTsK
KyAgICAgICAgcmV0dXJuICgocHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6
ZSkgPyBmb250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6IGZvbnREZXNjcmlwdGlvbi0+
Y29tcHV0ZWRTaXplKCkpOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FWFM6CiAgICAgICAg
IEFTU0VSVChmb250TWV0cmljcyk7CiAgICAgICAgIGlmIChmb250TWV0cmljcy0+aGFzWEhlaWdo
dCgpKQotICAgICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLT54SGVpZ2h0KCkgKiB2YWx1ZTsK
KyAgICAgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+eEhlaWdodCgpOwogICAgICAgICBBU1NF
UlQoZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgcmV0dXJuICgocHJvcGVydHlUb0NvbXB1dGUg
PT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyBmb250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUo
KSA6IGZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpIC8gMi4wICogdmFsdWU7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgICAgIHJldHVybiAoKHByb3BlcnR5VG9D
b21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemUpID8gZm9udERlc2NyaXB0aW9uLT5zcGVjaWZp
ZWRTaXplKCkgOiBmb250RGVzY3JpcHRpb24tPmNvbXB1dGVkU2l6ZSgpKSAvIDIuMDsKKyAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzogewogICAgICAgICBpZiAoIXJvb3RGb250RGVzY3Jp
cHRpb24pCi0gICAgICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgICAgIHJldHVybiAoKHByb3Bl
cnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemUpID8gcm9vdEZvbnREZXNjcmlwdGlv
bi0+c3BlY2lmaWVkU2l6ZSgpIDogcm9vdEZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkp
ICogdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKHJlZmVyZW5jZUZv
bnRTaXplT3ZlcnJpZGUpCisgICAgICAgICAgICByZXR1cm4gKnJlZmVyZW5jZUZvbnRTaXplT3Zl
cnJpZGU7CisgICAgICAgIGlmIChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRT
aXplKQorICAgICAgICAgICAgcmV0dXJuIHJvb3RGb250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNp
emUoKTsKKyAgICAgICAgcmV0dXJuIHJvb3RGb250RGVzY3JpcHRpb24tPmNvbXB1dGVkU2l6ZSgp
OworICAgIH0KICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgogICAgICAgICBBU1NFUlQo
Zm9udE1ldHJpY3MpOwotICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnplcm9XaWR0aCgpICog
dmFsdWU7CisgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+emVyb1dpZHRoKCk7CiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0lDOgogICAgICAgICBBU1NFUlQoZm9udE1ldHJpY3MpOwotICAg
ICAgICByZXR1cm4gZm9udE1ldHJpY3MtPmlkZW9ncmFtV2lkdGgoKSAqIHZhbHVlOworICAgICAg
ICByZXR1cm4gZm9udE1ldHJpY3MtPmlkZW9ncmFtV2lkdGgoKTsKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfTEhTOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgorICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gLTEuMDsK
KyAgICB9Cit9CisKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9u
Q2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFsdWUs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHJl
ZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUsIGNvbnN0IEZvbnRNZXRyaWNzKiBmb250TWV0cmljcywg
Y29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9uLCBjb25zdCBGb250
Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uLCBjb25zdCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3KQoreworICAgIGlmIChpc0ZvbnRSZWxhdGl2ZUxlbmd0aChwcmltaXRpdmVU
eXBlKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVVbnpvb21lZE5vbkNhbGNGb250UmVsYXRpdmVT
Y2FsYXIocHJpbWl0aXZlVHlwZSwgcHJvcGVydHlUb0NvbXB1dGUsIHJlZmVyZW5jZUZvbnRTaXpl
T3ZlcnJpZGUsIGZvbnRNZXRyaWNzLCBmb250RGVzY3JpcHRpb24sIHJvb3RGb250RGVzY3JpcHRp
b24pICogdmFsdWU7CisKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUpIHsKICAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUFg6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfQ006CkBAIC02NzksMTAgKzcwMSw2IEBAIGRvdWJsZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmlt
aXRpCiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNoIC8gbW1QZXJJbmNoICogdmFsdWU7
CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6CiAgICAgICAgIHJldHVybiBjc3NQaXhlbHNQ
ZXJJbmNoIC8gUVBlckluY2ggKiB2YWx1ZTsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhT
OgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0lOOgogICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAqIHZhbHVlOwogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QVDoKQEAgLTczOCw3ICs3NTYsNyBAQCBkb3VibGUgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHls
ZSgpKTsKLSAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91Ymxl
KHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgp
LCBudWxscHRyLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOwor
ICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0
aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIGNvbnZl
cnNpb25EYXRhLnJlZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUoKSwgbnVsbHB0ciwgJmNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgpAQCAtNzQ2LDE3ICs3NjQsMTcgQEAgZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb24KICAgICAgICAgLy8gV2UgcmVhbGx5IG5lZWQgdG8gY29tcHV0ZSBF
WCB1c2luZyBmb250TWV0cmljcyBmb3IgdGhlIG9yaWdpbmFsIHNwZWNpZmllZFNpemUgYW5kIG5v
dCB1c2UKICAgICAgICAgLy8gb3VyIGFjdHVhbCBjb25zdHJ1Y3RlZCByZW5kZXJpbmcgZm9udC4K
ICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwotICAgICAgICB2YWx1ZSA9
IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUs
IGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHls
ZSgpLT5mb250TWV0cmljcygpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0
aW9uKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3Vi
bGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRl
KCksIGNvbnZlcnNpb25EYXRhLnJlZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUoKSwgJmNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1JFTVM6Ci0gICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0
aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0Nv
bXB1dGUoKSwgbnVsbHB0ciwgbnVsbHB0ciwgY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCkgPyAm
Y29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpIDogbnVsbHB0cik7
CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmlt
aXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgY29u
dmVyc2lvbkRhdGEucmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSgpLCBudWxscHRyLCBudWxscHRy
LCBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKSA/ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUo
KS0+Zm9udERlc2NyaXB0aW9uKCkgOiBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19JQzoK
ICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwotICAgICAgICB2YWx1ZSA9
IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUs
IGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHls
ZSgpLT5mb250TWV0cmljcygpKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25D
YWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9w
ZXJ0eVRvQ29tcHV0ZSgpLCBjb252ZXJzaW9uRGF0YS5yZWZlcmVuY2VGb250U2l6ZU92ZXJyaWRl
KCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpKTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CkBAIC03NjgsNyArNzg2LDcgQEAg
ZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb24KICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6CiAg
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgotICAg
ICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZl
VHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCkpOworICAgICAg
ICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlw
ZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIGNvbnZlcnNpb25E
YXRhLnJlZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaAppbmRleCA4NWFhYzdkM2Y1ZjI3YWYzYWE2NjJlYWEyNjMzMzkwNjc3OTllOGJkLi5hNGQz
NDFmNGU2ZWU3NzYxOGEzOWY4MTNlOWVhNDAxZDU0Yjk4YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMTk0LDcgKzE5NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3IoQ1NTVW5pdFR5
cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdW5pdFR5cGVTdHJpbmcoQ1NTVW5pdFR5cGUpOwogCi0g
ICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1Vu
aXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQsIGNvbnN0IEZvbnRNZXRyaWNzKiA9
IG51bGxwdHIsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qID0gbnVsbHB0ciwgY29uc3Qg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlwdGlvbiA9IG51bGxwdHIsIGNv
bnN0IFJlbmRlclZpZXcqID0gbnVsbHB0cik7CisgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56
b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1By
b3BlcnR5SUQsIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHJlZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUg
PSBzdGQ6Om51bGxvcHQsIGNvbnN0IEZvbnRNZXRyaWNzKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24qID0gbnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlv
biogcm9vdEZvbnREZXNjcmlwdGlvbiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlclZpZXcqID0gbnVs
bHB0cik7CiAgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSk7
CiAgICAgLy8gVHJ1ZSBpZiBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSB3b3VsZCBwcm9kdWNl
IGlkZW50aWNhbCByZXN1bHRzIHdoZW4gcmVzb2x2ZWQgYWdhaW5zdCBib3RoIHRoZXNlIHN0eWxl
cy4KICAgICBzdGF0aWMgYm9vbCBlcXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhLmgKaW5kZXggZTVjMmI2MmM1MmVjMjFhMzY1Mjk4MDFjN2Nk
NDg2YWZiYzk1NjE0MC4uYzdiOTUzOGViMDM1YWM1YzU5MjQzZjAyNTE2NGMxZDY3ZmZlYjQ4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBA
IC00MiwxMyArNDIsMTQgQEAgY2xhc3MgUmVuZGVyVmlldzsKIAogY2xhc3MgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSB7CiBwdWJsaWM6Ci0gICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YShj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3QgUmVuZGVyVmlldyogcmVuZGVyVmll
dywgZmxvYXQgem9vbSwgc3RkOjpvcHRpb25hbDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0eVRvQ29t
cHV0ZSA9IHN0ZDo6bnVsbG9wdCwgUmVuZGVyU3R5bGUqIHZpZXdwb3J0RGVwZW5kZW5jeURldGVj
dGlvblN0eWxlID0gbnVsbHB0cikKKyAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKGNvbnN0
IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBm
bG9hdCB6b29tLCBzdGQ6Om9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRl
ID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9u
U3R5bGUgPSBudWxscHRyLCBzdGQ6Om9wdGlvbmFsPGZsb2F0PiByZWZlcmVuY2VGb250U2l6ZU92
ZXJyaWRlID0gc3RkOjpudWxsb3B0KQogICAgICAgICA6IG1fc3R5bGUoc3R5bGUpCiAgICAgICAg
ICwgbV9yb290U3R5bGUocm9vdFN0eWxlKQogICAgICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50
U3R5bGUpCiAgICAgICAgICwgbV92aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSh2aWV3
cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSA/IHZpZXdwb3J0RGVwZW5kZW5jeURldGVjdGlv
blN0eWxlIDogY29uc3RfY2FzdDxSZW5kZXJTdHlsZSo+KHN0eWxlKSkKICAgICAgICAgLCBtX3Jl
bmRlclZpZXcocmVuZGVyVmlldykKICAgICAgICAgLCBtX3pvb20oem9vbSkKKyAgICAgICAgLCBt
X3JlZmVyZW5jZUZvbnRTaXplT3ZlcnJpZGUocmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSkKICAg
ICAgICAgLCBtX3Byb3BlcnR5VG9Db21wdXRlKHByb3BlcnR5VG9Db21wdXRlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHpvb20gPiAwKTsKQEAgLTcyLDYgKzczLDcgQEAgcHVibGljOgogICAgIGZs
b2F0IHpvb20oKSBjb25zdDsKICAgICBib29sIGNvbXB1dGluZ0ZvbnRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplOyB9CiAgICAg
Ym9vbCBjb21wdXRpbmdMaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRvQ29t
cHV0ZSA9PSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PGZsb2F0PiYgcmVmZXJlbmNlRm9udFNpemVPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVm
ZXJlbmNlRm9udFNpemVPdmVycmlkZTsgfQogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0Nv
bXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlLnZhbHVlX29yKENTU1By
b3BlcnR5SW52YWxpZCk7IH0KICAgICBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKQEAgLTk3LDYgKzk5LDcgQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJTdHlsZSogbV92aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSB7IG51
bGxwdHIgfTsKICAgICBjb25zdCBSZW5kZXJWaWV3KiBtX3JlbmRlclZpZXcgeyBudWxscHRyIH07
CiAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV96b29tOworICAgIHN0ZDo6b3B0aW9uYWw8Zmxv
YXQ+IG1fcmVmZXJlbmNlRm9udFNpemVPdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPENTU1By
b3BlcnR5SUQ+IG1fcHJvcGVydHlUb0NvbXB1dGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggODU2ZWM0NmFjMGY4ZjYwNzliZjM2Njg4MjM3
MzQ3NDlkMjQyZGRhNy4uMjgxYzJiNjQxOWNjODAwMTU5MjEzYTdhN2EzMmMyN2Y4Nzk5NmNjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtNDksNiAr
NDksNyBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU3R5bGVGb250U2l6ZUZ1bmN0aW9u
cy5oIgogI2luY2x1ZGUgIlRoZW1lLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTkyNiw5ICs5Mjcs
MTMgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgY29uc3QKIAogICAgIGlmICghZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKworICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9tZWRpYXF1ZXJpZXMvI3VuaXRzCisgICAgLy8gIlJlbGF0aXZl
IHVuaXRzIGluIG1lZGlhIHF1ZXJpZXMgYXJlIGJhc2VkIG9uIHRoZSBpbml0aWFsIHZhbHVlLCB3
aGljaCBtZWFucyB0aGF0IHVuaXRzIGFyZSBuZXZlciBiYXNlZCBvbiByZXN1bHRzIG9mIGRlY2xh
cmF0aW9ucy4iCisgICAgZmxvYXQgZm9udFNpemVJbml0aWFsVmFsdWUgPSBTdHlsZTo6Zm9udFNp
emVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgZG9jdW1lbnQpOworCiAgICAgLy8g
UGFzcyBgbnVsbHB0cmAgZm9yIGBwYXJlbnRTdHlsZWAgYmVjYXVzZSB3ZSBhcmUgaW4gdGhlIGNv
bnRleHQgb2YgYSBtZWRpYSBxdWVyeS4KLSAgICByZXR1cm4gZnVuY3Rpb24oZXhwcmVzc2lvbi52
YWx1ZSgpLCB7IG1fc3R5bGUsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHls
ZSgpLCBudWxscHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIDEsIHN0ZDo6bnVsbG9wdCB9LCAq
ZnJhbWUsIE5vUHJlZml4KTsKKyAgICByZXR1cm4gZnVuY3Rpb24oZXhwcmVzc2lvbi52YWx1ZSgp
LCB7IG1fc3R5bGUsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpLCBu
dWxscHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIDEsIHN0ZDo6bnVsbG9wdCwgbnVsbHB0ciwg
Zm9udFNpemVJbml0aWFsVmFsdWUgfSwgKmZyYW1lLCBOb1ByZWZpeCk7CiB9CiAKIGJvb2wgTWVk
aWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggNDI3ZGQ4ODU0OGJlZjY0ZjYyYzZl
OWZmY2JiYjE5MjEyNzUxZjQwOS4uM2VlYTU1NGY5NDRkODViMzUwNjk0OWFkMTg1NzYxYmEyNjFl
MDhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9u
dFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJh
dy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRDYXNjYWRlPiByZXNv
bHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2FkZQogICAgICAg
ICAgICAgLy8gICAgICAgIEl0J3MgdW5jbGVhciBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpZiB0aGV5
J3JlIGV4cGVjdGVkIHRvIHdvcmsgb24gT2Zmc2NyZWVuQ2FudmFzLCBnaXZlbgogICAgICAgICAg
ICAgLy8gICAgICAgIHRoYXQgaXQncyBvZmYtc2NyZWVuIGFuZCB0aGVyZWZvcmUgZG9lc24ndCBz
dHJpY3RseSBoYXZlIGFuIGFzc29jaWF0ZWQgdmlld3BvcnQuCiAgICAgICAgICAgICAvLyAgICAg
ICAgVGhpcyBuZWVkcyBjbGFyaWZpY2F0aW9uIGFuZCBwb3NzaWJseSBmaXhpbmcuCi0gICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRl
VW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgudmFsdWUsIENT
U1Byb3BlcnR5Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljcygpLCAmZm9udENhc2Nh
ZGUuZm9udERlc2NyaXB0aW9uKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgaXM8
RG9jdW1lbnQ+KGNvbnRleHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLnJlbmRlclZp
ZXcoKSA6IG51bGxwdHIpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUobGVu
Z3RoLnR5cGUsIGxlbmd0aC52YWx1ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgc3RkOjpudWxsb3B0
LCAmZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlv
bigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksIGlzPERvY3VtZW50Pihjb250ZXh0
KSA/IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5yZW5kZXJWaWV3KCkgOiBudWxscHRyKSk7
CiAgICAgICAgIH0sIFsmXSAoZG91YmxlIHBlcmNlbnRhZ2UpIHsKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxmbG9hdD4oKHBhcmVudFNpemUgKiBwZXJjZW50YWdlKSAvIDEwMC4wKTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzkxMDI0MDY1ZGZlMmYyMmNmMDU4MGRlMjIxMTUxODkxYTM3
YTliMC4uZDFjZjA2YjA0YWMwZGRlMmJmMjU1YTllMzViMTEyMDk0MzMyMWY2YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDIxLTExLTIwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1lZGlhIHF1ZXJpZXMgc2hvdWxkIGJlIGNhbGN1
bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWwsIG5vdCByb290IGVsZW1lbnQgZm9udC1zaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2ODQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6IAorCiAyMDIxLTExLTE5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBbRGVidWddIEFTU0VSVElPTiBG
QUlMRUQ6IG1fY2hpbGRSdWxlcy5pc0VtcHR5KCkgd2hlbiB1c2luZyBAaW1wb3J0IHdpdGggbGF5
ZXIgbmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTQ2Yzk1MmRiZjJmNTRjZDFiN2IyZGExZTdm
MWVmMGUzY2IxOGJlZi4uZDQ2ZDg3MjJkYjM2MTAwZGFmNTUxNzVhMzQ3ZjY2ZTcwODk5YzBjMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDg2LDkgKzE0ODYsNiBAQCB3ZWJraXQub3JnL2IvMjA5
NzM1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9yb290LXNp
YmxpbmdzLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVz
L2RldmljZS1hc3BlY3QtcmF0aW8tMDAxLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9kZXZpY2UtYXNwZWN0LXJhdGlvLTAwNS5o
dG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNTY2ODQgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL3JlbGF0aXZlLXVuaXRzLTAwMS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU2Njg0IGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9tcS1jYWxjLTAwNS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi0KICMgbnRoLWNoaWxkIHRlc3RzIHRha2VzIGxvbmcgdGltZSBhbmQgRGVidWcg
YnVpbGQgc29tZXRpbWVzIHRpbWVvdXRzIGJlY2F1c2UgdGhlcmUgYXJlIG1hbnkgdGVzdCBjYXNl
cy4KIHdlYmtpdC5vcmcvYi8xMzcxNDkgZmFzdC9zZWxlY3RvcnMvbnRoLWNoaWxkLW9mLWJhc2lj
cy5odG1sIFsgU2xvdyBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444912</attachid>
            <date>2021-11-20 17:54:37 -0800</date>
            <delta_ts>2021-11-22 09:35:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156684-20211120175436.patch</filename>
            <type>text/plain</type>
            <size>3672</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM5M2E1ZWFjNDI4OTAz
NzMzNWNkNzE5YmI2MTQ4YzYzOGM5ODE0YS4uMTk2N2M4ZWE1YjUzNDhlMzhmMGNlNTYxY2U4ZjQ0
NWYxMmM3ZThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTExLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1l
ZGlhIHF1ZXJpZXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWws
IG5vdCByb290IGVsZW1lbnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1Nzc4
NjE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBDU1Mgc3BlYyBzYXlzOgorICAgICAgICA+IFJlbGF0aXZlIHVuaXRzIGluIG1lZGlhIHF1ZXJp
ZXMgYXJlIGJhc2VkIG9uIHRoZSBpbml0aWFsIHZhbHVlLCB3aGljaCBtZWFucyB0aGF0IHVuaXRz
IGFyZSBuZXZlciBiYXNlZCBvbiByZXN1bHRzIG9mIGRlY2xhcmF0aW9ucy4KKworICAgICAgICBU
ZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL3Jl
bGF0aXZlLXVuaXRzLTAwMS5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJpZXMvbXEtY2FsYy0wMDUuaHRtbAorCisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTExLTIwICBBbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbSUZDXVtJbnRlZ3JhdGlvbl0gSW5pdGlh
bGl6ZSBsYXlvdXQgYm94IGdlb21ldHJpZXMgZm9yIHByZWZlcnJlZCB3aWR0aCBjb21wdXRhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDg1NmVj
NDZhYzBmOGY2MDc5YmYzNjY4ODIzNzM0NzQ5ZDI0MmRkYTcuLmZhNGE3NmZkY2IxOWQ1YjJlZmZi
ODViODY0YmNlZGViYjQ4MmI5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHAKQEAgLTkyOCw3ICs5MjgsNyBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6
OmV2YWx1YXRlKGNvbnN0IE1lZGlhUXVlcnlFeHByZXNzaW9uJiBleHByZXNzaW9uKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgLy8gUGFzcyBgbnVsbHB0cmAgZm9yIGBw
YXJlbnRTdHlsZWAgYmVjYXVzZSB3ZSBhcmUgaW4gdGhlIGNvbnRleHQgb2YgYSBtZWRpYSBxdWVy
eS4KLSAgICByZXR1cm4gZnVuY3Rpb24oZXhwcmVzc2lvbi52YWx1ZSgpLCB7IG1fc3R5bGUsIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpLCBudWxscHRyLCBkb2N1bWVu
dC5yZW5kZXJWaWV3KCksIDEsIHN0ZDo6bnVsbG9wdCB9LCAqZnJhbWUsIE5vUHJlZml4KTsKKyAg
ICByZXR1cm4gZnVuY3Rpb24oZXhwcmVzc2lvbi52YWx1ZSgpLCB7IG1fc3R5bGUsICZSZW5kZXJT
dHlsZTo6ZGVmYXVsdFN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMSwg
c3RkOjpudWxsb3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOwogfQogCiBib29sIE1lZGlhUXVlcnlF
dmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjZjMDk4OTVlMDhhYmRhODI2NTNiMTE5
YzVmN2E2ZDRmODE3ODBjMS4uNTcxNGY2OTQ4ZDU0NDA4NTc5ZjUzZWJmZTkxNzZhODUyNDgxZWQ5
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTExLTIwICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1lZGlhIHF1ZXJpZXMgc2hv
dWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWwsIG5vdCByb290IGVsZW1l
bnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTY2ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1Nzc4NjE2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9u
czoKKwogMjAyMS0xMS0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmVwb3J0IHRoZSBpbml0aWF0aW5nIHVybCBpbnN0ZWFkIG9mIHRoZSBy
ZWRpcmVjdGVkIG9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggY2Y4ZDI3ZmRiNDExY2Y5NWQwMzY3
MDMyODcxOTJiYTZhYzJlOGRjNi4uZDM4MTliYTcxNDQ3YzMxYzk4MjcyNjFjNmU4NTFhOTFkZjRm
YTAwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDg1LDkgKzE0ODUsNiBAQCB3ZWJraXQub3Jn
L2IvMjA5NzM1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL3NlbGVjdG9ycy9y
b290LXNpYmxpbmdzLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFx
dWVyaWVzL2RldmljZS1hc3BlY3QtcmF0aW8tMDAxLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9kZXZpY2UtYXNwZWN0LXJhdGlv
LTAwNS5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8xNTY2ODQgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL3JlbGF0aXZlLXVuaXRzLTAwMS5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTU2Njg0IGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL21lZGlhcXVlcmllcy9tcS1jYWxjLTAwNS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi0KICMgbnRoLWNoaWxkIHRlc3RzIHRha2VzIGxvbmcgdGltZSBhbmQg
RGVidWcgYnVpbGQgc29tZXRpbWVzIHRpbWVvdXRzIGJlY2F1c2UgdGhlcmUgYXJlIG1hbnkgdGVz
dCBjYXNlcy4KIHdlYmtpdC5vcmcvYi8xMzcxNDkgZmFzdC9zZWxlY3RvcnMvbnRoLWNoaWxkLW9m
LWJhc2ljcy5odG1sIFsgU2xvdyBdCiAK
</data>
<flag name="review"
          id="470033"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444990</attachid>
            <date>2021-11-22 16:41:20 -0800</date>
            <delta_ts>2021-11-22 17:46:24 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-156684-20211122164119.patch</filename>
            <type>text/plain</type>
            <size>4295</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFjYTYwNGFiZDZhZmRm
NDI1NTNkZmFjYmU3Yjg0MDc0OTdhMjk3Mi4uYWFlNzU2YzExMTBmYTdiY2RmNTdlZjBmZjg4ZThh
ZmQ1NDA4YmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTExLTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgcmVtIGluIG1l
ZGlhIHF1ZXJpZXMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgdXNpbmcgZm9udC1zaXplOmluaXRpYWws
IG5vdCByb290IGVsZW1lbnQgZm9udC1zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY2ODQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1Nzc4
NjE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRo
ZSBDU1Mgc3BlYyBzYXlzOgorICAgICAgICA+IFJlbGF0aXZlIHVuaXRzIGluIG1lZGlhIHF1ZXJp
ZXMgYXJlIGJhc2VkIG9uIHRoZSBpbml0aWFsIHZhbHVlLCB3aGljaCBtZWFucyB0aGF0IHVuaXRz
IGFyZSBuZXZlciBiYXNlZCBvbiByZXN1bHRzIG9mIGRlY2xhcmF0aW9ucy4KKworICAgICAgICBU
ZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL3Jl
bGF0aXZlLXVuaXRzLTAwMS5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJpZXMvbXEtY2FsYy0wMDUuaHRtbAorCisgICAgICAg
ICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFR
dWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUgY29uc3QpOgorCiAyMDIxLTExLTIyICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsYXJpZnkgdGhlIGJlaGF2
aW9yIG9mIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDg1NmVjNDZhYzBmOGY2MDc5YmYzNjY4ODIzNzM0NzQ5
ZDI0MmRkYTcuLjljMDA4ODY5NThkNWFlMzJlZGQ1Zjc2Zjc2ODQzZDBiZGZhZmZlNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlN0eWxlRm9udFNpemVGdW5jdGlvbnMuaCIK
ICNpbmNsdWRlICJUaGVtZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC05MjYsOSArOTI3LDE3IEBA
IGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUV4cHJl
c3Npb24mIGV4cHJlc3Npb24pIGNvbnN0CiAKICAgICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGRlZmF1bHRTdHlsZSA9
IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IGRlZmF1
bHRTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKKyAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNp
emVGb3JLZXl3b3JkKENTU1ZhbHVlTWVkaXVtLCBmYWxzZSwgZG9jdW1lbnQpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNl
dFNwZWNpZmllZFNpemUoc2l6ZSk7CisgICAgZGVmYXVsdFN0eWxlLnNldEZvbnREZXNjcmlwdGlv
bihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGRlZmF1bHRTdHlsZS5mb250Q2FzY2Fk
ZSgpLnVwZGF0ZSgpOwogICAgIAogICAgIC8vIFBhc3MgYG51bGxwdHJgIGZvciBgcGFyZW50U3R5
bGVgIGJlY2F1c2Ugd2UgYXJlIGluIHRoZSBjb250ZXh0IG9mIGEgbWVkaWEgcXVlcnkuCi0gICAg
cmV0dXJuIGZ1bmN0aW9uKGV4cHJlc3Npb24udmFsdWUoKSwgeyBtX3N0eWxlLCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgZG9jdW1lbnQucmVuZGVy
VmlldygpLCAxLCBzdGQ6Om51bGxvcHQgfSwgKmZyYW1lLCBOb1ByZWZpeCk7CisgICAgcmV0dXJu
IGZ1bmN0aW9uKGV4cHJlc3Npb24udmFsdWUoKSwgeyBtX3N0eWxlLCAmZGVmYXVsdFN0eWxlLCBu
dWxscHRyLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIDEsIHN0ZDo6bnVsbG9wdCB9LCAqZnJhbWUs
IE5vUHJlZml4KTsKIH0KIAogYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYUF0dHJpYnV0
ZU1hdGNoZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVl
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDZlMWVmYjNjNjRiMThmZGIxMmM3NWE1YWIwZTdhNjZhOGNiZGM3YzkuLjFiNzc3
MTgwMDYyY2E4ZWQxNzE5YTVhOGZkZGExODM4Yzk4ZmZiNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMS0xMS0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgor
CisgICAgICAgIHJlbSBpbiBtZWRpYSBxdWVyaWVzIHNob3VsZCBiZSBjYWxjdWxhdGVkIHVzaW5n
IGZvbnQtc2l6ZTppbml0aWFsLCBub3Qgcm9vdCBlbGVtZW50IGZvbnQtc2l6ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2Njg0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yNTc3ODYxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMTEtMjIgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogV2ViS2l0OiBu
ZWVkIGEgbWV0aG9kIHRvIGdldCB2aXNpYmxlIHRleHQgYW5kIGZyYW1lIG9mIGFuIGVsZW1lbnQg
b24gc2NyZWVuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmMDkwOGMzNzgxOWJmMjRjNjY5OGQyNGZk
ODVmMDFiNmZlYzk3MjFhLi5jNGU5Nzc3ZThmY2FhNjgwM2MwOWU5ZDZiNDRlMWI0NWQ2NDI4MzE2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0ODUsOSArMTQ4NSw2IEBAIHdlYmtpdC5vcmcvYi8y
MDk3MzUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mvc2VsZWN0b3JzL3Jvb3Qt
c2libGluZ3MuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJp
ZXMvZGV2aWNlLWFzcGVjdC1yYXRpby0wMDEuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL2RldmljZS1hc3BlY3QtcmF0aW8tMDA1
Lmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9iLzE1NjY4NCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9tZWRpYXF1ZXJpZXMvcmVsYXRpdmUtdW5pdHMtMDAxLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTY2ODQgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvbWVkaWFxdWVyaWVzL21xLWNhbGMtMDA1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLQogIyBudGgtY2hpbGQgdGVzdHMgdGFrZXMgbG9uZyB0aW1lIGFuZCBEZWJ1
ZyBidWlsZCBzb21ldGltZXMgdGltZW91dHMgYmVjYXVzZSB0aGVyZSBhcmUgbWFueSB0ZXN0IGNh
c2VzLgogd2Via2l0Lm9yZy9iLzEzNzE0OSBmYXN0L3NlbGVjdG9ycy9udGgtY2hpbGQtb2YtYmFz
aWNzLmh0bWwgWyBTbG93IF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>