<?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>212626</bug_id>
          
          <creation_ts>2020-06-01 23:47:20 -0700</creation_ts>
          <short_desc>lang=zh needs to defer to system preferences to know whether it should be simplified or traditional</short_desc>
          <delta_ts>2020-09-04 15:17:40 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1658175</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-01 23:47:20 -0700</bug_when>
    <thetext>lang=zh needs to defer to system preferences to know whether it should be simplified or traditional</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658177</commentid>
    <comment_count>1</comment_count>
      <attachid>400787</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 00:02:31 -0700</bug_when>
    <thetext>Created attachment 400787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658178</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 00:02:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/60227623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658179</commentid>
    <comment_count>3</comment_count>
      <attachid>400788</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 00:18:44 -0700</bug_when>
    <thetext>Created attachment 400788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658180</commentid>
    <comment_count>4</comment_count>
      <attachid>400789</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 00:22:59 -0700</bug_when>
    <thetext>Created attachment 400789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658547</commentid>
    <comment_count>5</comment_count>
      <attachid>400874</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 18:39:14 -0700</bug_when>
    <thetext>Created attachment 400874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658617</commentid>
    <comment_count>6</comment_count>
      <attachid>400894</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-02 22:04:53 -0700</bug_when>
    <thetext>Created attachment 400894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658770</commentid>
    <comment_count>7</comment_count>
      <attachid>400894</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-03 10:22:47 -0700</bug_when>
    <thetext>Comment on attachment 400894
Patch

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

OK as is. A few comments. My review comments are mostly about the moved code, so they are about pre-existing issues.

&gt; Source/WebCore/platform/graphics/FontDescription.cpp:72
&gt; +    const Vector&lt;String&gt;&amp; preferredLanguages = userPreferredLanguages();
&gt; +    for (auto&amp; language : preferredLanguages) {

This would be better without the local variable.

&gt; Source/WebCore/platform/graphics/FontDescription.cpp:93
&gt; +    static std::once_flag onceFlag;
&gt; +    std::call_once(onceFlag, [&amp;] {

Using call_once is overkill. This code isn’t otherwise thread-safe, using non-thread safe string reference counting, so the threading-safe call_once machinery isn’t valuable.

Another way to do this would be to check cachedSpecializedChineseLocale() for null, and do the work if it’s null.

Ideally I think we would encapsulate this logic in a specializedChineseLocale() function rather than putting this in setLocale directly.

    static const AtomString&amp; specializedChineseLocale()
    {
        auto&amp; locale = cachedSpecializedChineseLocale();
        if (cachedSpecializedChineseLocale().isNull()) {
            static char forNonNullPointer;
            addLanguageChangeObserver(&amp;forNonNullPointer, &amp;fontDescriptionLanguageChanged); // We will never remove the observer, so all we need is a non-null pointer.
            fontDescriptionLanguageChanged(nullptr);
        }
        return locale;
    }

&gt; Source/WebCore/platform/graphics/FontDescription.h:55
&gt;      const AtomString&amp; locale() const { return m_locale; }
&gt; +    const AtomString&amp; originalLocale() const { return m_originalLocale; }

Worth considering even better names. To me &quot;original&quot; doesn&apos;t say &quot;web-exposed&quot; and &quot;not original&quot; doesn&apos;t say &quot;use for text shaping and font fallback&quot;. Nor is there any clear rationale here for why one is more specific than the other. Nothing here says *why* web-exposed locale strings should not reveal the specialized Chinese locale. And I think it should.

&gt; Source/WebCore/platform/graphics/FontDescription.h:148
&gt; +    AtomString m_locale; // This is what you should be using for things like text shaping and font fallback
&gt; +    AtomString m_originalLocale; // This is what you should be using for web-exposed things like -webkit-locale

I’d rather see these comments on the getters rather than the data members. Important for users of this class, rather than implementers of it. Missing periods at the end for WebKit coding style.

&gt; Source/WebCore/rendering/RenderQuote.cpp:383
&gt; -        if (const QuotesForLanguage* quotes = quotesForLanguage(style().locale()))
&gt; +        if (const QuotesForLanguage* quotes = quotesForLanguage(style().originalLocale()))

This usage doesn’t match the comments. Is this &quot;web-exposed&quot;? I don’t think it’s clear how to use these new properties correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660636</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-09 02:05:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 400894 [details]
&gt; Worth considering even better names. To me &quot;original&quot; doesn&apos;t say
&gt; &quot;web-exposed&quot; and &quot;not original&quot; doesn&apos;t say &quot;use for text shaping and font
&gt; fallback&quot;. Nor is there any clear rationale here for why one is more
&gt; specific than the other. Nothing here says *why* web-exposed locale strings
&gt; should not reveal the specialized Chinese locale. And I think it should.

The purpose I had for this patch was to change the effective behavior of the locales, but not affect things like getComputedStyle(). WebKit&apos;s current behavior is that if you put lang=&quot;something&quot; on an element, and then call getComputedStyle(&quot;-webkit-locale&quot;), you&apos;ll always get out what you put in.

In general, the platform text and unicode libraries are free to interpret locales in any way they want - this patch just works around one specific policy they use that isn&apos;t the best behavior for the web. I don&apos;t thing WebKit&apos;s policy should be &quot;reach down into all the system frameworks and try to figure out how they are interpreting each locale string and then expose that to the web.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660646</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-09 02:23:16 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; &gt; Source/WebCore/rendering/RenderQuote.cpp:383
&gt; &gt; -        if (const QuotesForLanguage* quotes = quotesForLanguage(style().locale()))
&gt; &gt; +        if (const QuotesForLanguage* quotes = quotesForLanguage(style().originalLocale()))
&gt; 
&gt; This usage doesn’t match the comments. Is this &quot;web-exposed&quot;? I don’t think
&gt; it’s clear how to use these new properties correctly.

Yeah, this is a workaround for the table at http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#quotes. It appears to say that lang=&quot;zh&quot; should get simplified Chinese quotes, but that zh-Hans shouldn&apos;t (unless the lang() function[1] is supposed to do some magic that isn&apos;t implemented in this function). I need to investigate this further in the spec, but in the short term, this is a workaround for the test.

[1] https://drafts.csswg.org/selectors-4/#the-lang-pseudo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660648</commentid>
    <comment_count>10</comment_count>
      <attachid>401429</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-09 02:48:01 -0700</bug_when>
    <thetext>Created attachment 401429
Patch for comitting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660724</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-09 10:15:39 -0700</bug_when>
    <thetext>Committed r262796: &lt;https://trac.webkit.org/changeset/262796&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401429.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660743</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-09 11:09:50 -0700</bug_when>
    <thetext>My comment wasn&apos;t about &quot;policy&quot;, it was about terminology. I don’t understand how your comments justify the terminology. I am sure that you would agree that we want to make code that non-experts have a chance to understand using a combination of naming and comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660744</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-09 11:10:22 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #9)
&gt; in the short term, this is a
&gt; workaround for the test

A comment that says that would likely be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660746</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-09 11:11:35 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #8)
&gt; (In reply to Darin Adler from comment #7)
&gt; &gt; Comment on attachment 400894 [details]
&gt; &gt; Worth considering even better names. To me &quot;original&quot; doesn&apos;t say
&gt; &gt; &quot;web-exposed&quot; and &quot;not original&quot; doesn&apos;t say &quot;use for text shaping and font
&gt; &gt; fallback&quot;. Nor is there any clear rationale here for why one is more
&gt; &gt; specific than the other. Nothing here says *why* web-exposed locale strings
&gt; &gt; should not reveal the specialized Chinese locale. And I think it should.
&gt; 
&gt; The purpose I had for this patch was to change the effective behavior of the
&gt; locales, but not affect things like getComputedStyle(). WebKit&apos;s current
&gt; behavior is that if you put lang=&quot;something&quot; on an element, and then call
&gt; getComputedStyle(&quot;-webkit-locale&quot;), you&apos;ll always get out what you put in.
&gt; 
&gt; In general, the platform text and unicode libraries are free to interpret
&gt; locales in any way they want - this patch just works around one specific
&gt; policy they use that isn&apos;t the best behavior for the web. I don&apos;t thing
&gt; WebKit&apos;s policy should be &quot;reach down into all the system frameworks and try
&gt; to figure out how they are interpreting each locale string and then expose
&gt; that to the web.&quot;

OK. But the word &quot;original&quot; doesn&apos;t say that to me. A word you used here was &quot;effective&quot;. Often a good strategy is to explain the code to someone and then harvest the terminology from that discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660768</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-09 11:46:03 -0700</bug_when>
    <thetext>Oh, just looked.

The terms you used, &quot;specified&quot; and &quot;computed&quot;, do seem better. Thanks for changing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667840</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2020-06-30 22:25:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; (In reply to Myles C. Maxfield from comment #9)
&gt; &gt; in the short term, this is a
&gt; &gt; workaround for the test
&gt; 
&gt; A comment that says that would likely be helpful.

I&apos;m fixing this properly here: https://bugs.webkit.org/show_bug.cgi?id=213827</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685869</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-04 15:17:40 -0700</bug_when>
    <thetext>This bug was fixed, but there is still a failure expectation checked in to platform/mac/TestExpectations:

# &lt;rdar://problem/60227623&gt; fast/text/international/generic-font-family-language-traditional.html is failing.
[ BigSur+ ] fast/text/international/generic-font-family-language-traditional.html [ ImageOnlyFailure ]

Marked with this bug number.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400787</attachid>
            <date>2020-06-02 00:02:31 -0700</date>
            <delta_ts>2020-06-02 00:18:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212626-20200602000230.patch</filename>
            <type>text/plain</type>
            <size>16375</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhNTg5ZmRiYTU0Mzc0
NTVlOWJjYmYzZjRmOWMyMWY5NTUxNTFiOC4uMjc1ZjY0MGVkYzUyNDMwNzk3NmMzODY5YWQ3YmQ2
MjJlOWI3ZWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
LCB3ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91
bGQgYmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
cGljayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMg
YWN0dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9p
bmcsIGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3Vy
IGxldmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBw
bGF0Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBj
YWNoZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJm
b3JtYW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVu
dHJ5IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGgg
c3lzdGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAg
ICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBX
ZWJLaXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50
aW5nIGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBl
eHBvc2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQg
dGhlbiByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpvcmlnaW5hbExvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpsYW5ndWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9y
aWdpbmFsTG9jYWxlIGNvbnN0KToKKwogMjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNy
ZWF0aW9uIHZhbGlkYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8v
Z2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDYxYjgwMmE1
MGNiMzZmZjczZTAyMjg4MDAzMzM2ZDRmNDNmMTk2ZTQuLmZhYjZhMDQ3M2Y0NDUxNzIyOTkzZTg1
ZDIzNjBmMzAzZWQzYmNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTU0LDkgKzI5NTQsOSBAQCBSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNv
bnN0IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxl
VHlwZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKLSAgICAgICAg
ICAgIGlmIChzdHlsZS5sb2NhbGUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5v
cmlnaW5hbExvY2FsZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxvY2FsZSgpLCBDU1NVbml0VHlw
ZTo6Q1NTX1NUUklORyk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKHN0eWxlLm9yaWdpbmFsTG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKICAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9w
LCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjVi
NWMzM2ZkOTAxZDA3Nzc5MDAuLjY0NmY5ODE3YmVmNTU0ODNlZjVmNmJiOThmYTFmOTZkOTM4MTc0
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBA
IC03OCw3ICs3OCw3IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1f
c2l6ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNl
bGVjdGlvblJlcXVlc3QoZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAg
ICAgLCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2Nh
bGUoZGVzY3JpcHRpb24ubG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24u
b3JpZ2luYWxMb2NhbGUoKSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlv
bi5mZWF0dXJlU2V0dGluZ3MoKSkKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAg
ICAsIG1fdmFyaWF0aW9uU2V0dGluZ3MoZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKSkK
QEAgLTE1Nyw3ICsxNTcsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNl
Y29uZCB9fTsKICAgICB9CiAKLSAgICAvLyBGb250Q2FzY2FkZTo6bG9jYWxlKCkgaXMgZXhwbGlj
aXRseSBub3QgaW5jbHVkZWQgaW4gdGhpcyBzdHJ1Y3QuCiAgICAgYm9vbCBtX2lzRGVsZXRlZFZh
bHVlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVj
dGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAK
aW5kZXggOGViNDQ3MTFjNzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3
MzJlZmI0OWY0N2Y5ODE2OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAK
QEAgLTQyLDYgKzQyLDcgQEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9u
IHsKICAgICBjaGFyIGM7CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9t
U3RyaW5nIHN0cmluZzI7CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAg
ICBmbG9hdCBzaXplOwogICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4YTky
NGY5YTY1MGM0NGQ3ZWYwNTg3OWFkM2ZlNTE3NWUyZmQwODk2Li4wZjY5NzVhZTkyNTg4YmEyZTI2
OWJmYjQ1NWJiYmU3MTkxNTZjYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNv
bT4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIs
NiArMzIsNyBAQAogCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1
ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEwICs2NiwzOSBAQCBGb250RGVzY3JpcHRp
b246OkZvbnREZXNjcmlwdGlvbigpCiB7CiB9CiAKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbXB1dGVT
cGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKQoreworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
cmVmZXJyZWRMYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgZm9yIChh
dXRvJiBsYW5ndWFnZSA6IHByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICBpZiAoc3RhcnRz
V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLSIpKQorICAgICAgICAg
ICAgcmV0dXJuIGxhbmd1YWdlOworICAgIH0KKyAgICByZXR1cm4gQXRvbVN0cmluZygiemgtaGFu
cyIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgLy8gV2UgaGF2ZSBubyBzaWdu
YWwuIFBpY2sgb25lIG9wdGlvbiBhcmJpdHJhcmlseS4KK30KKworc3RhdGljIEF0b21TdHJpbmcm
IGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEF0b21TdHJpbmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZTsKKyAgICByZXR1cm4g
c3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBmb250RGVz
Y3JpcHRpb25MYW5ndWFnZUNoYW5nZWQodm9pZCopCit7CisgICAgY2FjaGVkU3BlY2lhbGl6ZWRD
aGluZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Cit9CisK
IHZvaWQgRm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxl
KQogewotICAgIG1fbG9jYWxlID0gbG9jYWxlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgc3Rh
dGljIGNoYXIgZHVtbXk7CisgICAgICAgIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoJmR1bW15
LCAmZm9udERlc2NyaXB0aW9uTGFuZ3VhZ2VDaGFuZ2VkKTsgLy8gV2Ugd2lsbCBuZXZlciByZW1v
dmUgdGhlIG9ic2VydmVyLCBzbyBhbGwgd2UgbmVlZCBpcyBhIG5vbi1udWxsIHBvaW50ZXIuCisg
ICAgICAgIGZvbnREZXNjcmlwdGlvbkxhbmd1YWdlQ2hhbmdlZChudWxscHRyKTsKKyAgICB9KTsK
KworICAgIG1fb3JpZ2luYWxMb2NhbGUgPSBsb2NhbGU7CiAgICAgbV9zY3JpcHQgPSBsb2NhbGVU
b1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKG1fbG9jYWxlKTsKKyAgICBtX2xvY2FsZSA9IG1f
c2NyaXB0ID09IFVTQ1JJUFRfSEFOID8gY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkg
OiBtX2xvY2FsZTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggMWU2ZmM3NDZl
OTI3MDBjYjgyNWIwNzEwYWEzZWJmMTMyNjkwNmRjYi4uYzY1YWVlMWI5ZTkyYmZmNTExMTMyMGU5
OTllYjI5NWY0YTgyMGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIFRl
eHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KICAgICBVU2NyaXB0
Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVU2NyaXB0Q29kZT4obV9z
Y3JpcHQpOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKCkgY29uc3QgeyByZXR1cm4g
bV9sb2NhbGU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBvcmlnaW5hbExvY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luYWxMb2NhbGU7IH0KIAogICAgIEZvbnRPcmllbnRhdGlvbiBvcmll
bnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRPcmllbnRhdGlvbj4obV9v
cmllbnRhdGlvbik7IH0KICAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIG5vbkNKS0dseXBoT3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb25DSktHbHlwaE9yaWVudGF0
aW9uPihtX25vbkNKS0dseXBoT3JpZW50YXRpb24pOyB9CkBAIC0xNDMsNyArMTQ0LDggQEAgcHJp
dmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgbW92aW5nIHRoZXNlIGludG8gdGhlaXIg
b3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8gc2F2ZSBtZW1vcnkpLgogICAgIEZvbnRGZWF0dXJl
U2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7CiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdzIG1f
dmFyaWF0aW9uU2V0dGluZ3M7Ci0gICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKKyAgICBBdG9tU3Ry
aW5nIG1fbG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2luZyBmb3IgdGhp
bmdzIGxpa2UgdGV4dCBzaGFwaW5nIGFuZCBmb250IGZhbGxiYWNrCisgICAgQXRvbVN0cmluZyBt
X29yaWdpbmFsTG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2luZyBmb3Ig
d2ViLWV4cG9zZWQgdGhpbmdzIGxpa2UgLXdlYmtpdC1sb2NhbGUKIAogICAgIEZvbnRTZWxlY3Rp
b25SZXF1ZXN0IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CiAgICAgZmxvYXQgbV9jb21wdXRlZFNp
emUgeyAwIH07IC8vIENvbXB1dGVkIHNpemUgYWRqdXN0ZWQgZm9yIHRoZSBtaW5pbXVtIGZvbnQg
c2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgpAQCAtMTgzLDcgKzE4NSw3IEBAIGlubGluZSBib29s
IEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mIG90aGVy
KSBjb25zdAogICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24K
ICAgICAgICAgJiYgbV9ub25DSktHbHlwaE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9uQ0pLR2x5
cGhPcmllbnRhdGlvbgogICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRo
VmFyaWFudAotICAgICAgICAmJiBtX2xvY2FsZSA9PSBvdGhlci5tX2xvY2FsZQorICAgICAgICAm
JiBtX29yaWdpbmFsTG9jYWxlID09IG90aGVyLm1fb3JpZ2luYWxMb2NhbGUKICAgICAgICAgJiYg
bV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09IG90aGVy
Lm1fdmFyaWF0aW9uU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAppbmRleCBh
YmM1OWE0ODY4MDZiZTIxNTMwZTM5N2ZhM2I3YmM3ZTQxNmQ0MDBkLi41MTdhN2U5NDllYjAwYTM1
ZjFiNDRlZWJmYWMxNWY3MTVlOTQxN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0NSw1NCArMTQ0LDIzIEBAIEZvbnRGYW1pbHlTcGVjaWZp
Y2F0aW9uIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KHVuc2lnbmVk
IGluZGV4CiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QpCiAK
LXN0YXRpYyBTdHJpbmcgY29tcHV0ZVNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCi17Ci0gICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogcHJlZmVycmVkTGFuZ3VhZ2Vz
KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgiKSB8
fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgtIikpCi0g
ICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7Ci0gICAgfQotICAgIHJldHVybiAiemgtaGFucyJf
c3RyOyAvLyBXZSBoYXZlIG5vIHNpZ25hbC4gUGljayBvbmUgb3B0aW9uIGFyYml0cmFyaWx5Lgot
fQotCi1zdGF0aWMgU3RyaW5nJiBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKQotewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2Fs
ZTsKLSAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlLmdldCgpOwotfQotCi1zdGF0
aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCi17Ci0gICAgY2FjaGVkU3BlY2lhbGl6ZWRD
aGluZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Ci19Ci0K
IEF0b21TdHJpbmcgRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmljRmFtaWx5
KFVTY3JpcHRDb2RlIHNjcmlwdCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBjb25zdCBBdG9t
U3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIEFTU0VSVCgobG9jYWxlLmlzTnVsbCgpICYmIHNj
cmlwdCA9PSBVU0NSSVBUX0NPTU1PTikgfHwgIWxvY2FsZS5pc051bGwoKSk7CiAgICAgaWYgKHNj
cmlwdCA9PSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiAKLSAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFsmXSB7Ci0gICAgICAgIHN0YXRpYyBjaGFyIGR1bW15OwotICAgICAgICBhZGRMYW5n
dWFnZUNoYW5nZU9ic2VydmVyKCZkdW1teSwgJmxhbmd1YWdlQ2hhbmdlZCk7IC8vIFdlIHdpbGwg
bmV2ZXIgcmVtb3ZlIHRoZSBvYnNlcnZlciwgc28gYWxsIHdlIG5lZWQgaXMgYSBub24tbnVsbCBw
b2ludGVyLgotICAgICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7Ci0gICAgfSk7Ci0KLSAg
ICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgb25jZSA8cmRhcjovL3Byb2JsZW0vNDc2ODI1Nzc+IGlz
IGZpeGVkLgotICAgIGF1dG8mIHVzZWRMb2NhbGUgPSBzY3JpcHQgPT0gVVNDUklQVF9IQU4gPyBj
YWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA6IGxvY2FsZS5zdHJpbmcoKTsKLQogICAg
IC8vIEZJWE1FOiBVc2UgdGhlIHN5c3RlbSBmb250IGRhdGFiYXNlIHRvIGhhbmRsZSBzdGFuZGFy
ZEZhbWlseQogICAgIGlmIChmYW1pbHlOYW1lID09IHNlcmlmRmFtaWx5KQotICAgICAgICByZXR1
cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFtaWx5KHVz
ZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNp
bmdsZXRvbigpLnNlcmlmRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZhbWlseU5h
bWUgPT0gc2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWlseSh1c2VkTG9jYWxlKTsKKyAgICAg
ICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5zYW5zU2Vy
aWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBjdXJzaXZl
RmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmds
ZXRvbigpLmN1cnNpdmVGYW1pbHkodXNlZExvY2FsZSk7CisgICAgICAgIHJldHVybiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY3Vyc2l2ZUZhbWlseShsb2NhbGUuc3Ry
aW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGZhbnRhc3lGYW1pbHkpCi0gICAgICAgIHJl
dHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuZmFudGFzeUZhbWls
eSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
OjpzaW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZh
bWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFjZUZhbWlseSh1c2VkTG9jYWxlKTsK
KyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5t
b25vc3BhY2VGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKIAogICAgIHJldHVybiBudWxsQXRvbSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRl
eCAxYjc1OTJmZWI2NTBkMGIzYTY4ZWNiMzBmMzMwMTBiMjNkYmJiODRlLi4zNjc4YjNhMTEyMmQx
YmNiOGU0NWU0MWY4MTI1Y2NkMDdlMzE5NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTk0LDYgKzU5NCw3IEBAIHB1YmxpYzoKICAgICBz
aG9ydCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0
ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0TGluZXM7IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBo
eXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5
cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKCkgY29uc3Qg
eyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7IH0KKyAgICBjb25zdCBBdG9tU3Ry
aW5nJiBvcmlnaW5hbExvY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbigpLm9y
aWdpbmFsTG9jYWxlKCk7IH0KICAgICBCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Qm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJG
aXQpOyB9CiAgICAgUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJl
c2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4aXMg
Y29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1fcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdhZmI3OGQ2ODNj
NzdkMTM1MDUyYzFhYjY5NTQ1YzQ4ZDM5MjVhNmEuLmNlMmE2NGE4YTZhODE0ZmRjMjQzMzZmMzky
YjI4NGUxN2Y3Zjk1YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0wMSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIGxhbmc9emggbmVl
ZHMgdG8gZGVmZXIgdG8gc3lzdGVtIHByZWZlcmVuY2VzIHRvIGtub3cgd2hldGhlciBpdCBzaG91
bGQgYmUgc2ltcGxpZmllZCBvciB0cmFkaXRpb25hbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNjI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MDIyNzYyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIHN1cmUgdGhlIG5ldyBsb2NhbGUgaXNuJ3QgZXhwb3NlZC4KKworICAgICAgICAqIGZh
c3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sOiBBZGRlZC4KKwog
MjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNyZWF0aW9uIHZhbGlkYXRpb24gYWNjb3Jk
aW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2Vi
L3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxl
LWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xv
Y2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2VjMTA0NjY0
NmI2OTI4NDRlMGY0NjBlNDdhMjZjY2U0ZjNhNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGxhbmc9J3poJyByb3VuZC10
cmlwcyB0aHJvdWdoIGdldENvbXB1dGVkU3R5bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1sb2NhbGUnKSBpcyAiemgiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
bG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGY1OTFiOTMzZmMyNTU1
MmE0ZTM4ZGEyYWYwODkxZGRiYmI4NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWwKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBsYW5nPSJ6
aCIgaWQ9InRhcmdldCI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBt
YWtlcyBzdXJlIHRoYXQgbGFuZz0nemgnIHJvdW5kLXRyaXBzIHRocm91Z2ggZ2V0Q29tcHV0ZWRT
dHlsZS4iKTsKK2xldCB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCku
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1sb2NhbGUnKSIsICJ6aCIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400788</attachid>
            <date>2020-06-02 00:18:44 -0700</date>
            <delta_ts>2020-06-02 00:22:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212626-20200602001843.patch</filename>
            <type>text/plain</type>
            <size>17451</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhNTg5ZmRiYTU0Mzc0
NTVlOWJjYmYzZjRmOWMyMWY5NTUxNTFiOC4uMjc1ZjY0MGVkYzUyNDMwNzk3NmMzODY5YWQ3YmQ2
MjJlOWI3ZWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
LCB3ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91
bGQgYmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
cGljayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMg
YWN0dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9p
bmcsIGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3Vy
IGxldmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBw
bGF0Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBj
YWNoZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJm
b3JtYW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVu
dHJ5IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGgg
c3lzdGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAg
ICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBX
ZWJLaXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50
aW5nIGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBl
eHBvc2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQg
dGhlbiByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpvcmlnaW5hbExvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpsYW5ndWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9y
aWdpbmFsTG9jYWxlIGNvbnN0KToKKwogMjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNy
ZWF0aW9uIHZhbGlkYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8v
Z2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNv
cmUueGNzY2hlbWUgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hlbWUKaW5kZXggMTU4MmUxYTNjNTZkZjllNzgyMDBk
OTlhOTk4NjgwNTkxYjRjZGYwYi4uYzRiNzc4ZDdjNzIzZmNlMmEyMmRlNGZkYjYzOThlNDMxN2Mz
OTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViQ29yZS54Y3NjaGVtZQpA
QCAtNDAsNiArNDAsMTYgQEAKICAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIK
ICAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKICAgICAgIGFsbG93TG9j
YXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAgICA8UGF0aFJ1bm5hYmxlCisgICAgICAgICBy
dW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCIKKyAgICAgICAgIEZpbGVQYXRoID0gIi9Vc2Vycy9t
bWF4ZmllbGQvQnVpbGQvUHJvZHVjdHMvRGVidWcvRHVtcFJlbmRlclRyZWUiPgorICAgICAgPC9Q
YXRoUnVubmFibGU+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29t
bWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiZmlsZTovLy9Vc2Vycy9t
bWF4ZmllbGQvc3JjL1dlYktpdC9PcGVuU291cmNlL0xheW91dFRlc3RzLy9mYXN0L3RleHQvY3Vy
c2l2ZS16aC1leHBlY3RlZC5odG1sIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+Cisg
ICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1l
bnRzPgogICAgPC9MYXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDYxYjgwMmE1MGNiMzZmZjczZTAyMjg4
MDAzMzM2ZDRmNDNmMTk2ZTQuLmZhYjZhMDQ3M2Y0NDUxNzIyOTkzZTg1ZDIzNjBmMzAzZWQzYmNj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yOTU0LDkgKzI5NTQsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlVHlwZSgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKLSAgICAgICAgICAgIGlmIChzdHlsZS5s
b2NhbGUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5vcmlnaW5hbExvY2FsZSgp
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxvY2FsZSgpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7
CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9yaWdp
bmFsTG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblRvcDoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5n
T3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9wLCAmUmVuZGVyQm94TW9k
ZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjViNWMzM2ZkOTAxZDA3Nzc5
MDAuLjY0NmY5ODE3YmVmNTU0ODNlZjVmNmJiOThmYTFmOTZkOTM4MTc0MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBA
IHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qo
ZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAgICAgLCBtX2ZsYWdzKG1h
a2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24u
bG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24ub3JpZ2luYWxMb2NhbGUo
KSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGlu
Z3MoKSkKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAsIG1fdmFyaWF0aW9u
U2V0dGluZ3MoZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKSkKQEAgLTE1Nyw3ICsxNTcs
NiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNlY29uZCB9fTsKICAgICB9
CiAKLSAgICAvLyBGb250Q2FzY2FkZTo6bG9jYWxlKCkgaXMgZXhwbGljaXRseSBub3QgaW5jbHVk
ZWQgaW4gdGhpcyBzdHJ1Y3QuCiAgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsK
ICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9m
b250U2VsZWN0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5kZXggOGViNDQ3MTFj
Nzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3MzJlZmI0OWY0N2Y5ODE2
OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICAgICBjaGFyIGM7
CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzI7
CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAgICBmbG9hdCBzaXplOwog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4YTkyNGY5YTY1MGM0NGQ3ZWYw
NTg3OWFkM2ZlNTE3NWUyZmQwODk2Li41YjEwNGU0MmJjYTY2N2IwYzg5NGY2NTZlMzE4Y2IwYzk1
YjA4MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNvbT4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDEwICs2NiwzOSBAQCBGb250RGVzY3JpcHRpb246OkZvbnREZXNjcmlw
dGlvbigpCiB7CiB9CiAKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbXB1dGVTcGVjaWFsaXplZENoaW5l
c2VMb2NhbGUoKQoreworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFn
ZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IHByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLSIpKQorICAgICAgICAgICAgcmV0dXJuIGxhbmd1
YWdlOworICAgIH0KKyAgICByZXR1cm4gQXRvbVN0cmluZygiemgtaGFucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgLy8gV2UgaGF2ZSBubyBzaWduYWwuIFBpY2sgb25lIG9w
dGlvbiBhcmJpdHJhcmlseS4KK30KKworc3RhdGljIEF0b21TdHJpbmcmIGNhY2hlZFNwZWNpYWxp
emVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJp
bmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBmb250RGVzY3JpcHRpb25MYW5ndWFn
ZUNoYW5nZWQodm9pZCopCit7CisgICAgY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkg
PSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Cit9CisKIHZvaWQgRm9udERlc2Ny
aXB0aW9uOjpzZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIG1fbG9j
YWxlID0gbG9jYWxlOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgc3RhdGljIGNoYXIgZHVtbXk7
CisgICAgICAgIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoJmR1bW15LCAmZm9udERlc2NyaXB0
aW9uTGFuZ3VhZ2VDaGFuZ2VkKTsgLy8gV2Ugd2lsbCBuZXZlciByZW1vdmUgdGhlIG9ic2VydmVy
LCBzbyBhbGwgd2UgbmVlZCBpcyBhIG5vbi1udWxsIHBvaW50ZXIuCisgICAgICAgIGZvbnREZXNj
cmlwdGlvbkxhbmd1YWdlQ2hhbmdlZChudWxscHRyKTsKKyAgICB9KTsKKworICAgIG1fb3JpZ2lu
YWxMb2NhbGUgPSBsb2NhbGU7CiAgICAgbV9zY3JpcHQgPSBsb2NhbGVUb1NjcmlwdENvZGVGb3JG
b250U2VsZWN0aW9uKG1fbG9jYWxlKTsKKyAgICBtX2xvY2FsZSA9IG1fc2NyaXB0ID09IFVTQ1JJ
UFRfSEFOID8gY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkgOiBtX29yaWdpbmFsTG9j
YWxlOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAppbmRleCAxZTZmYzc0NmU5MjcwMGNi
ODI1YjA3MTBhYTNlYmYxMzI2OTA2ZGNiLi5jNjVhZWUxYjllOTJiZmY1MTExMzIwZTk5OWViMjk1
ZjRhODIwZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RGVzY3JpcHRpb24uaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgVGV4dFJlbmRl
cmluZ01vZGUgdGV4dFJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0UmVuZGVyaW5nTW9kZT4obV90ZXh0UmVuZGVyaW5nKTsgfQogICAgIFVTY3JpcHRDb2RlIHNj
cmlwdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVTY3JpcHRDb2RlPihtX3NjcmlwdCk7
IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
ZTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIG9yaWdpbmFsTG9jYWxlKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW5hbExvY2FsZTsgfQogCiAgICAgRm9udE9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udE9yaWVudGF0aW9uPihtX29yaWVudGF0
aW9uKTsgfQogICAgIE5vbkNKS0dseXBoT3JpZW50YXRpb24gbm9uQ0pLR2x5cGhPcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vbkNKS0dseXBoT3JpZW50YXRpb24+KG1f
bm9uQ0pLR2x5cGhPcmllbnRhdGlvbik7IH0KQEAgLTE0Myw3ICsxNDQsOCBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBtb3ZpbmcgdGhlc2UgaW50byB0aGVpciBvd24gb2Jq
ZWN0IG9uIHRoZSBoZWFwICh0byBzYXZlIG1lbW9yeSkuCiAgICAgRm9udEZlYXR1cmVTZXR0aW5n
cyBtX2ZlYXR1cmVTZXR0aW5nczsKICAgICBGb250VmFyaWF0aW9uU2V0dGluZ3MgbV92YXJpYXRp
b25TZXR0aW5nczsKLSAgICBBdG9tU3RyaW5nIG1fbG9jYWxlOworICAgIEF0b21TdHJpbmcgbV9s
b2NhbGU7IC8vIFRoaXMgaXMgd2hhdCB5b3Ugc2hvdWxkIGJlIHVzaW5nIGZvciB0aGluZ3MgbGlr
ZSB0ZXh0IHNoYXBpbmcgYW5kIGZvbnQgZmFsbGJhY2sKKyAgICBBdG9tU3RyaW5nIG1fb3JpZ2lu
YWxMb2NhbGU7IC8vIFRoaXMgaXMgd2hhdCB5b3Ugc2hvdWxkIGJlIHVzaW5nIGZvciB3ZWItZXhw
b3NlZCB0aGluZ3MgbGlrZSAtd2Via2l0LWxvY2FsZQogCiAgICAgRm9udFNlbGVjdGlvblJlcXVl
c3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKICAgICBmbG9hdCBtX2NvbXB1dGVkU2l6ZSB7IDAg
fTsgLy8gQ29tcHV0ZWQgc2l6ZSBhZGp1c3RlZCBmb3IgdGhlIG1pbmltdW0gZm9udCBzaXplIGFu
ZCB0aGUgem9vbSBmYWN0b3IuCkBAIC0xODMsNyArMTg1LDcgQEAgaW5saW5lIGJvb2wgRm9udERl
c2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0
CiAgICAgICAgICYmIG1fb3JpZW50YXRpb24gPT0gb3RoZXIubV9vcmllbnRhdGlvbgogICAgICAg
ICAmJiBtX25vbkNKS0dseXBoT3JpZW50YXRpb24gPT0gb3RoZXIubV9ub25DSktHbHlwaE9yaWVu
dGF0aW9uCiAgICAgICAgICYmIG1fd2lkdGhWYXJpYW50ID09IG90aGVyLm1fd2lkdGhWYXJpYW50
Ci0gICAgICAgICYmIG1fbG9jYWxlID09IG90aGVyLm1fbG9jYWxlCisgICAgICAgICYmIG1fb3Jp
Z2luYWxMb2NhbGUgPT0gb3RoZXIubV9vcmlnaW5hbExvY2FsZQogICAgICAgICAmJiBtX2ZlYXR1
cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncwogI2lmIEVOQUJMRShWQVJJQVRJ
T05fRk9OVFMpCiAgICAgICAgICYmIG1fdmFyaWF0aW9uU2V0dGluZ3MgPT0gb3RoZXIubV92YXJp
YXRpb25TZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IGFiYzU5YTQ4
NjgwNmJlMjE1MzBlMzk3ZmEzYjdiYzdlNDE2ZDQwMGQuLjUxN2E3ZTk0OWViMDBhMzVmMWI0NGVl
YmZhYzE1ZjcxNWU5NDE3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTI4
LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCiAj
aW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTQ1LDU0ICsxNDQsMjMgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24g
Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZmZWN0aXZlRmFtaWx5QXQodW5zaWduZWQgaW5kZXgK
IAogI2VuZGlmIC8vIFVTRShQTEFURk9STV9TWVNURU1fRkFMTEJBQ0tfTElTVCkKIAotc3RhdGlj
IFN0cmluZyBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkKLXsKLSAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdl
cygpOwotICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBwcmVmZXJyZWRMYW5ndWFnZXMpIHsKLSAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobGFuZ3VhZ2UsICJ6aCIpIHx8IHN0YXJ0
c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGFuZ3VhZ2UsICJ6aC0iKSkKLSAgICAgICAg
ICAgIHJldHVybiBsYW5ndWFnZTsKLSAgICB9Ci0gICAgcmV0dXJuICJ6aC1oYW5zIl9zdHI7IC8v
IFdlIGhhdmUgbm8gc2lnbmFsLiBQaWNrIG9uZSBvcHRpb24gYXJiaXRyYXJpbHkuCi19Ci0KLXN0
YXRpYyBTdHJpbmcmIGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCi17Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlOwotICAg
IHJldHVybiBzcGVjaWFsaXplZENoaW5lc2VMb2NhbGUuZ2V0KCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGxhbmd1YWdlQ2hhbmdlZCh2b2lkKikKLXsKLSAgICBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VM
b2NhbGUoKSA9IGNvbXB1dGVTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKTsKLX0KLQogQXRvbVN0
cmluZyBGb250RGVzY3JpcHRpb246OnBsYXRmb3JtUmVzb2x2ZUdlbmVyaWNGYW1pbHkoVVNjcmlw
dENvZGUgc2NyaXB0LCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUsIGNvbnN0IEF0b21TdHJpbmcm
IGZhbWlseU5hbWUpCiB7CiAgICAgQVNTRVJUKChsb2NhbGUuaXNOdWxsKCkgJiYgc2NyaXB0ID09
IFVTQ1JJUFRfQ09NTU9OKSB8fCAhbG9jYWxlLmlzTnVsbCgpKTsKICAgICBpZiAoc2NyaXB0ID09
IFVTQ1JJUFRfQ09NTU9OKQogICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKIAotICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywg
WyZdIHsKLSAgICAgICAgc3RhdGljIGNoYXIgZHVtbXk7Ci0gICAgICAgIGFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXIoJmR1bW15LCAmbGFuZ3VhZ2VDaGFuZ2VkKTsgLy8gV2Ugd2lsbCBuZXZlciBy
ZW1vdmUgdGhlIG9ic2VydmVyLCBzbyBhbGwgd2UgbmVlZCBpcyBhIG5vbi1udWxsIHBvaW50ZXIu
Ci0gICAgICAgIGxhbmd1YWdlQ2hhbmdlZChudWxscHRyKTsKLSAgICB9KTsKLQotICAgIC8vIEZJ
WE1FOiBEZWxldGUgdGhpcyBvbmNlIDxyZGFyOi8vcHJvYmxlbS80NzY4MjU3Nz4gaXMgZml4ZWQu
Ci0gICAgYXV0byYgdXNlZExvY2FsZSA9IHNjcmlwdCA9PSBVU0NSSVBUX0hBTiA/IGNhY2hlZFNw
ZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpIDogbG9jYWxlLnN0cmluZygpOwotCiAgICAgLy8gRklY
TUU6IFVzZSB0aGUgc3lzdGVtIGZvbnQgZGF0YWJhc2UgdG8gaGFuZGxlIHN0YW5kYXJkRmFtaWx5
CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc2VyaWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0
ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuc2VyaWZGYW1pbHkodXNlZExvY2Fs
ZSk7CisgICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9u
KCkuc2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBz
YW5zU2VyaWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4
dDo6c2luZ2xldG9uKCkuc2Fuc1NlcmlmRmFtaWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1
cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWls
eShsb2NhbGUuc3RyaW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGN1cnNpdmVGYW1pbHkp
Ci0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCku
Y3Vyc2l2ZUZhbWlseSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5jdXJzaXZlRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7
CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gZmFudGFzeUZhbWlseSkKLSAgICAgICAgcmV0dXJuIFN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KHVzZWRM
b2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmds
ZXRvbigpLmZhbnRhc3lGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFt
ZSA9PSBtb25vc3BhY2VGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dDo6c2luZ2xldG9uKCkubW9ub3NwYWNlRmFtaWx5KHVzZWRMb2NhbGUpOworICAgICAg
ICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFj
ZUZhbWlseShsb2NhbGUuc3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDFiNzU5
MmZlYjY1MGQwYjNhNjhlY2IzMGYzMzAxMGIyM2RiYmI4NGUuLjM2NzhiM2ExMTIyZDFiY2I4ZTQ1
ZTQxZjgxMjVjY2QwN2UzMTk0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC01OTQsNiArNTk0LDcgQEAgcHVibGljOgogICAgIHNob3J0IGh5
cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEt
Pmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQogICAgIGNvbnN0IEF0b21TdHJpbmcmIGh5cGhlbmF0
aW9uU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRp
b25TdHJpbmc7IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUoKSBjb25zdCB7IHJldHVy
biBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsgfQorICAgIGNvbnN0IEF0b21TdHJpbmcmIG9y
aWdpbmFsTG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkub3JpZ2luYWxM
b2NhbGUoKTsgfQogICAgIEJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmJvcmRlckZpdCk7IH0K
ICAgICBSZXNpemUgcmVzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVzaXplPiht
X3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUpOyB9CiAgICAgQ29sdW1uQXhpcyBjb2x1bW5B
eGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2FmYjc4ZDY4M2M3N2QxMzUw
NTJjMWFiNjk1NDVjNDhkMzkyNWE2YS4uY2UyYTY0YThhNmE4MTRmZGMyNDMzNmYzOTJiMjg0ZTE3
ZjdmOTVhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAxICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBuZWVkcyB0byBk
ZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNob3VsZCBiZSBz
aW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMjI3NjIz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
c3VyZSB0aGUgbmV3IGxvY2FsZSBpc24ndCBleHBvc2VkLgorCisgICAgICAgICogZmFzdC90ZXh0
L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA2
LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYkdQVV0gVXBkYXRlIHRleHR1cmUgY3JlYXRpb24gdmFsaWRhdGlvbiBhY2NvcmRpbmcgdG8g
dGhlIGRpc2N1c3Npb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvcHVsbC83
OTkvZmlsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9sb2NhbGUtZ2V0Q29t
cHV0ZWRTdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdl
dENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZWMxMDQ2NjQ2YjY5Mjg0
NGUwZjQ2MGU0N2EyNmNjZTRmM2E0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbGFuZz0nemgnIHJvdW5kLXRyaXBzIHRo
cm91Z2ggZ2V0Q29tcHV0ZWRTdHlsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCct
d2Via2l0LWxvY2FsZScpIGlzICJ6aCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9j
YWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9sb2NhbGUt
Z2V0Q29tcHV0ZWRTdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZjU5MWI5MzNmYzI1NTUyYTRlMzhk
YTJhZjA4OTFkZGJiYjg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Rl
eHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGxhbmc9InpoIiBpZD0i
dGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1
cmUgdGhhdCBsYW5nPSd6aCcgcm91bmQtdHJpcHMgdGhyb3VnaCBnZXRDb21wdXRlZFN0eWxlLiIp
OworbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKK3Nob3Vs
ZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIiwgInpoIik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400789</attachid>
            <date>2020-06-02 00:22:59 -0700</date>
            <delta_ts>2020-06-02 18:39:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212626-20200602002258.patch</filename>
            <type>text/plain</type>
            <size>17521</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhNTg5ZmRiYTU0Mzc0
NTVlOWJjYmYzZjRmOWMyMWY5NTUxNTFiOC4uMjc1ZjY0MGVkYzUyNDMwNzk3NmMzODY5YWQ3YmQ2
MjJlOWI3ZWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
LCB3ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91
bGQgYmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
cGljayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMg
YWN0dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9p
bmcsIGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3Vy
IGxldmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBw
bGF0Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBj
YWNoZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJm
b3JtYW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVu
dHJ5IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGgg
c3lzdGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAg
ICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBX
ZWJLaXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50
aW5nIGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBl
eHBvc2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQg
dGhlbiByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpvcmlnaW5hbExvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpsYW5ndWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9y
aWdpbmFsTG9jYWxlIGNvbnN0KToKKwogMjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNy
ZWF0aW9uIHZhbGlkYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8v
Z2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNv
cmUueGNzY2hlbWUgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hlbWUKaW5kZXggMTU4MmUxYTNjNTZkZjllNzgyMDBk
OTlhOTk4NjgwNTkxYjRjZGYwYi4uYzRiNzc4ZDdjNzIzZmNlMmEyMmRlNGZkYjYzOThlNDMxN2Mz
OTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViQ29yZS54Y3NjaGVtZQpA
QCAtNDAsNiArNDAsMTYgQEAKICAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIK
ICAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKICAgICAgIGFsbG93TG9j
YXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAgICA8UGF0aFJ1bm5hYmxlCisgICAgICAgICBy
dW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCIKKyAgICAgICAgIEZpbGVQYXRoID0gIi9Vc2Vycy9t
bWF4ZmllbGQvQnVpbGQvUHJvZHVjdHMvRGVidWcvRHVtcFJlbmRlclRyZWUiPgorICAgICAgPC9Q
YXRoUnVubmFibGU+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29t
bWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiZmlsZTovLy9Vc2Vycy9t
bWF4ZmllbGQvc3JjL1dlYktpdC9PcGVuU291cmNlL0xheW91dFRlc3RzLy9mYXN0L3RleHQvY3Vy
c2l2ZS16aC1leHBlY3RlZC5odG1sIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+Cisg
ICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1l
bnRzPgogICAgPC9MYXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDYxYjgwMmE1MGNiMzZmZjczZTAyMjg4
MDAzMzM2ZDRmNDNmMTk2ZTQuLmZhYjZhMDQ3M2Y0NDUxNzIyOTkzZTg1ZDIzNjBmMzAzZWQzYmNj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yOTU0LDkgKzI5NTQsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlVHlwZSgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKLSAgICAgICAgICAgIGlmIChzdHlsZS5s
b2NhbGUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5vcmlnaW5hbExvY2FsZSgp
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxvY2FsZSgpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7
CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9yaWdp
bmFsTG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblRvcDoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5n
T3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9wLCAmUmVuZGVyQm94TW9k
ZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjViNWMzM2ZkOTAxZDA3Nzc5
MDAuLjY0NmY5ODE3YmVmNTU0ODNlZjVmNmJiOThmYTFmOTZkOTM4MTc0MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBA
IHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qo
ZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAgICAgLCBtX2ZsYWdzKG1h
a2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24u
bG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24ub3JpZ2luYWxMb2NhbGUo
KSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGlu
Z3MoKSkKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAsIG1fdmFyaWF0aW9u
U2V0dGluZ3MoZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKSkKQEAgLTE1Nyw3ICsxNTcs
NiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNlY29uZCB9fTsKICAgICB9
CiAKLSAgICAvLyBGb250Q2FzY2FkZTo6bG9jYWxlKCkgaXMgZXhwbGljaXRseSBub3QgaW5jbHVk
ZWQgaW4gdGhpcyBzdHJ1Y3QuCiAgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsK
ICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9m
b250U2VsZWN0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5kZXggOGViNDQ3MTFj
Nzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3MzJlZmI0OWY0N2Y5ODE2
OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICAgICBjaGFyIGM7
CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzI7
CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAgICBmbG9hdCBzaXplOwog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4YTkyNGY5YTY1MGM0NGQ3ZWYw
NTg3OWFkM2ZlNTE3NWUyZmQwODk2Li4yZDAyYmJjYjE0MzQ2YzY4NTIyMzUzNTY3OGM2ZDYzMmYy
NTNjZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNvbT4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDEwICs2NiwzOSBAQCBGb250RGVzY3JpcHRpb246OkZvbnREZXNjcmlw
dGlvbigpCiB7CiB9CiAKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbXB1dGVTcGVjaWFsaXplZENoaW5l
c2VMb2NhbGUoKQoreworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFn
ZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IHByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLSIpKQorICAgICAgICAgICAgcmV0dXJuIGxhbmd1
YWdlOworICAgIH0KKyAgICByZXR1cm4gQXRvbVN0cmluZygiemgtaGFucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgLy8gV2UgaGF2ZSBubyBzaWduYWwuIFBpY2sgb25lIG9w
dGlvbiBhcmJpdHJhcmlseS4KK30KKworc3RhdGljIEF0b21TdHJpbmcmIGNhY2hlZFNwZWNpYWxp
emVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJp
bmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBmb250RGVzY3JpcHRpb25MYW5ndWFn
ZUNoYW5nZWQodm9pZCopCit7CisgICAgY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkg
PSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Cit9CisKIHZvaWQgRm9udERlc2Ny
aXB0aW9uOjpzZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIG1fbG9j
YWxlID0gbG9jYWxlOwotICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNl
bGVjdGlvbihtX2xvY2FsZSk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICBzdGF0aWMgY2hhciBk
dW1teTsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigmZHVtbXksICZmb250RGVz
Y3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOyAvLyBXZSB3aWxsIG5ldmVyIHJlbW92ZSB0aGUgb2Jz
ZXJ2ZXIsIHNvIGFsbCB3ZSBuZWVkIGlzIGEgbm9uLW51bGwgcG9pbnRlci4KKyAgICAgICAgZm9u
dERlc2NyaXB0aW9uTGFuZ3VhZ2VDaGFuZ2VkKG51bGxwdHIpOworICAgIH0pOworCisgICAgbV9v
cmlnaW5hbExvY2FsZSA9IGxvY2FsZTsKKyAgICBtX3NjcmlwdCA9IGxvY2FsZVRvU2NyaXB0Q29k
ZUZvckZvbnRTZWxlY3Rpb24obV9vcmlnaW5hbExvY2FsZSk7CisgICAgbV9sb2NhbGUgPSBtX3Nj
cmlwdCA9PSBVU0NSSVBUX0hBTiA/IGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpIDog
bV9vcmlnaW5hbExvY2FsZTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggMWU2
ZmM3NDZlOTI3MDBjYjgyNWIwNzEwYWEzZWJmMTMyNjkwNmRjYi4uYzY1YWVlMWI5ZTkyYmZmNTEx
MTMyMGU5OTllYjI5NWY0YTgyMGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgog
ICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KICAgICBV
U2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVU2NyaXB0Q29k
ZT4obV9zY3JpcHQpOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhbGU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBvcmlnaW5hbExvY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxMb2NhbGU7IH0KIAogICAgIEZvbnRPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRPcmllbnRhdGlv
bj4obV9vcmllbnRhdGlvbik7IH0KICAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIG5vbkNKS0ds
eXBoT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb25DSktHbHlwaE9y
aWVudGF0aW9uPihtX25vbkNKS0dseXBoT3JpZW50YXRpb24pOyB9CkBAIC0xNDMsNyArMTQ0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgbW92aW5nIHRoZXNlIGludG8g
dGhlaXIgb3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8gc2F2ZSBtZW1vcnkpLgogICAgIEZvbnRG
ZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7CiAgICAgRm9udFZhcmlhdGlvblNldHRp
bmdzIG1fdmFyaWF0aW9uU2V0dGluZ3M7Ci0gICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKKyAgICBB
dG9tU3RyaW5nIG1fbG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2luZyBm
b3IgdGhpbmdzIGxpa2UgdGV4dCBzaGFwaW5nIGFuZCBmb250IGZhbGxiYWNrCisgICAgQXRvbVN0
cmluZyBtX29yaWdpbmFsTG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2lu
ZyBmb3Igd2ViLWV4cG9zZWQgdGhpbmdzIGxpa2UgLXdlYmtpdC1sb2NhbGUKIAogICAgIEZvbnRT
ZWxlY3Rpb25SZXF1ZXN0IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CiAgICAgZmxvYXQgbV9jb21w
dXRlZFNpemUgeyAwIH07IC8vIENvbXB1dGVkIHNpemUgYWRqdXN0ZWQgZm9yIHRoZSBtaW5pbXVt
IGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgpAQCAtMTgzLDcgKzE4NSw3IEBAIGlubGlu
ZSBib29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24m
IG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50
YXRpb24KICAgICAgICAgJiYgbV9ub25DSktHbHlwaE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9u
Q0pLR2x5cGhPcmllbnRhdGlvbgogICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5t
X3dpZHRoVmFyaWFudAotICAgICAgICAmJiBtX2xvY2FsZSA9PSBvdGhlci5tX2xvY2FsZQorICAg
ICAgICAmJiBtX29yaWdpbmFsTG9jYWxlID09IG90aGVyLm1fb3JpZ2luYWxMb2NhbGUKICAgICAg
ICAgJiYgbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKICNpZiBF
TkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09
IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApp
bmRleCBhYmM1OWE0ODY4MDZiZTIxNTMwZTM5N2ZhM2I3YmM3ZTQxNmQ0MDBkLi41MTdhN2U5NDll
YjAwYTM1ZjFiNDRlZWJmYWMxNWY3MTVlOTQxN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29j
b2EuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0NSw1NCArMTQ0LDIzIEBAIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KHVu
c2lnbmVkIGluZGV4CiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJ
U1QpCiAKLXN0YXRpYyBTdHJpbmcgY29tcHV0ZVNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCi17
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogcHJlZmVycmVkTGFu
Z3VhZ2VzKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAi
emgiKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgt
IikpCi0gICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7Ci0gICAgfQotICAgIHJldHVybiAiemgt
aGFucyJfc3RyOyAvLyBXZSBoYXZlIG5vIHNpZ25hbC4gUGljayBvbmUgb3B0aW9uIGFyYml0cmFy
aWx5LgotfQotCi1zdGF0aWMgU3RyaW5nJiBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUo
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNwZWNpYWxpemVkQ2hpbmVz
ZUxvY2FsZTsKLSAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlLmdldCgpOwotfQot
Ci1zdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCi17Ci0gICAgY2FjaGVkU3BlY2lh
bGl6ZWRDaGluZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7
Ci19Ci0KIEF0b21TdHJpbmcgRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmlj
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBjb25z
dCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIEFTU0VSVCgobG9jYWxlLmlzTnVsbCgp
ICYmIHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikgfHwgIWxvY2FsZS5pc051bGwoKSk7CiAgICAg
aWYgKHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CiAKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFsmXSB7Ci0gICAgICAgIHN0YXRpYyBjaGFyIGR1bW15OwotICAgICAgICBh
ZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKCZkdW1teSwgJmxhbmd1YWdlQ2hhbmdlZCk7IC8vIFdl
IHdpbGwgbmV2ZXIgcmVtb3ZlIHRoZSBvYnNlcnZlciwgc28gYWxsIHdlIG5lZWQgaXMgYSBub24t
bnVsbCBwb2ludGVyLgotICAgICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7Ci0gICAgfSk7
Ci0KLSAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgb25jZSA8cmRhcjovL3Byb2JsZW0vNDc2ODI1
Nzc+IGlzIGZpeGVkLgotICAgIGF1dG8mIHVzZWRMb2NhbGUgPSBzY3JpcHQgPT0gVVNDUklQVF9I
QU4gPyBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA6IGxvY2FsZS5zdHJpbmcoKTsK
LQogICAgIC8vIEZJWE1FOiBVc2UgdGhlIHN5c3RlbSBmb250IGRhdGFiYXNlIHRvIGhhbmRsZSBz
dGFuZGFyZEZhbWlseQogICAgIGlmIChmYW1pbHlOYW1lID09IHNlcmlmRmFtaWx5KQotICAgICAg
ICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFt
aWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZh
bWlseU5hbWUgPT0gc2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWlseSh1c2VkTG9jYWxlKTsK
KyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5z
YW5zU2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBj
dXJzaXZlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OnNpbmdsZXRvbigpLmN1cnNpdmVGYW1pbHkodXNlZExvY2FsZSk7CisgICAgICAgIHJldHVybiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY3Vyc2l2ZUZhbWlseShsb2Nh
bGUuc3RyaW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGZhbnRhc3lGYW1pbHkpCi0gICAg
ICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuZmFudGFz
eUZhbWlseSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpzaW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAg
aWYgKGZhbWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFjZUZhbWlseSh1c2VkTG9j
YWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0
b24oKS5tb25vc3BhY2VGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKIAogICAgIHJldHVybiBudWxs
QXRvbSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAppbmRleCAxYjc1OTJmZWI2NTBkMGIzYTY4ZWNiMzBmMzMwMTBiMjNkYmJiODRlLi4zNjc4YjNh
MTEyMmQxYmNiOGU0NWU0MWY4MTI1Y2NkMDdlMzE5NGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtNTk0LDYgKzU5NCw3IEBAIHB1YmxpYzoK
ICAgICBzaG9ydCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJ
bmhlcml0ZWREYXRhLT5oeXBoZW5hdGlvbkxpbWl0TGluZXM7IH0KICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBoeXBoZW5hdGlvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUluaGVyaXRlZERh
dGEtPmh5cGhlbmF0aW9uU3RyaW5nOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKCkg
Y29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCk7IH0KKyAgICBjb25zdCBB
dG9tU3RyaW5nJiBvcmlnaW5hbExvY2FsZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlv
bigpLm9yaWdpbmFsTG9jYWxlKCk7IH0KICAgICBCb3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8Qm9yZGVyRml0PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5i
b3JkZXJGaXQpOyB9CiAgICAgUmVzaXplIHJlc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVt
bkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+
KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRpQ29sLT5heGlzKTsgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdhZmI3
OGQ2ODNjNzdkMTM1MDUyYzFhYjY5NTQ1YzQ4ZDM5MjVhNmEuLmNlMmE2NGE4YTZhODE0ZmRjMjQz
MzZmMzkyYjI4NGUxN2Y3Zjk1YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNi0wMSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIGxhbmc9
emggbmVlZHMgdG8gZGVmZXIgdG8gc3lzdGVtIHByZWZlcmVuY2VzIHRvIGtub3cgd2hldGhlciBp
dCBzaG91bGQgYmUgc2ltcGxpZmllZCBvciB0cmFkaXRpb25hbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNjI2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82MDIyNzYyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYWtlIHN1cmUgdGhlIG5ldyBsb2NhbGUgaXNuJ3QgZXhwb3NlZC4KKworICAgICAg
ICAqIGZhc3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNyZWF0aW9uIHZhbGlkYXRpb24g
YWNjb3JkaW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIv
Z3B1d2ViL3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
bG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2Vj
MTA0NjY0NmI2OTI4NDRlMGY0NjBlNDdhMjZjY2U0ZjNhNGM4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGxhbmc9J3poJyBy
b3VuZC10cmlwcyB0aHJvdWdoIGdldENvbXB1dGVkU3R5bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCkuZ2V0UHJv
cGVydHlWYWx1ZSgnLXdlYmtpdC1sb2NhbGUnKSBpcyAiemgiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGY1OTFiOTMz
ZmMyNTU1MmE0ZTM4ZGEyYWYwODkxZGRiYmI4NzE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWwKQEAgLTAsMCArMSwx
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBs
YW5nPSJ6aCIgaWQ9InRhcmdldCI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoaXMg
dGVzdCBtYWtlcyBzdXJlIHRoYXQgbGFuZz0nemgnIHJvdW5kLXRyaXBzIHRocm91Z2ggZ2V0Q29t
cHV0ZWRTdHlsZS4iKTsKK2xldCB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFy
Z2V0Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRh
cmdldCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1sb2NhbGUnKSIsICJ6aCIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400874</attachid>
            <date>2020-06-02 18:39:14 -0700</date>
            <delta_ts>2020-06-02 22:04:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212626-20200602183913.patch</filename>
            <type>text/plain</type>
            <size>18549</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODJhNTg5ZmRiYTU0Mzc0
NTVlOWJjYmYzZjRmOWMyMWY5NTUxNTFiOC4uMjc1ZjY0MGVkYzUyNDMwNzk3NmMzODY5YWQ3YmQ2
MjJlOWI3ZWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAxICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
LCB3ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91
bGQgYmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
cGljayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMg
YWN0dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9p
bmcsIGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3Vy
IGxldmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBw
bGF0Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBj
YWNoZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJm
b3JtYW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVu
dHJ5IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGgg
c3lzdGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAg
ICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBX
ZWJLaXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50
aW5nIGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBl
eHBvc2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQg
dGhlbiByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpvcmlnaW5hbExvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpsYW5ndWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9y
aWdpbmFsTG9jYWxlIGNvbnN0KToKKwogMjAyMC0wNi0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB0ZXh0dXJlIGNy
ZWF0aW9uIHZhbGlkYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBkaXNjdXNzaW9uIGF0IGh0dHBzOi8v
Z2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL3B1bGwvNzk5L2ZpbGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNv
cmUueGNzY2hlbWUgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRh
dGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hlbWUKaW5kZXggMTU4MmUxYTNjNTZkZjllNzgyMDBk
OTlhOTk4NjgwNTkxYjRjZGYwYi4uYzRiNzc4ZDdjNzIzZmNlMmEyMmRlNGZkYjYzOThlNDMxN2Mz
OTI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFy
ZWRkYXRhL3hjc2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViQ29yZS54Y3NjaGVtZQpA
QCAtNDAsNiArNDAsMTYgQEAKICAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIK
ICAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKICAgICAgIGFsbG93TG9j
YXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAgICA8UGF0aFJ1bm5hYmxlCisgICAgICAgICBy
dW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCIKKyAgICAgICAgIEZpbGVQYXRoID0gIi9Vc2Vycy9t
bWF4ZmllbGQvQnVpbGQvUHJvZHVjdHMvRGVidWcvRHVtcFJlbmRlclRyZWUiPgorICAgICAgPC9Q
YXRoUnVubmFibGU+CisgICAgICA8Q29tbWFuZExpbmVBcmd1bWVudHM+CisgICAgICAgICA8Q29t
bWFuZExpbmVBcmd1bWVudAorICAgICAgICAgICAgYXJndW1lbnQgPSAiZmlsZTovLy9Vc2Vycy9t
bWF4ZmllbGQvc3JjL1dlYktpdC9PcGVuU291cmNlL0xheW91dFRlc3RzLy9mYXN0L3RleHQvY3Vy
c2l2ZS16aC1leHBlY3RlZC5odG1sIgorICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+Cisg
ICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1l
bnRzPgogICAgPC9MYXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDYxYjgwMmE1MGNiMzZmZjczZTAyMjg4
MDAzMzM2ZDRmNDNmMTk2ZTQuLmZhYjZhMDQ3M2Y0NDUxNzIyOTkzZTg1ZDIzNjBmMzAzZWQzYmNj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yOTU0LDkgKzI5NTQsOSBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKICAgICAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlVHlwZSgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKLSAgICAgICAgICAgIGlmIChzdHlsZS5s
b2NhbGUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5vcmlnaW5hbExvY2FsZSgp
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxvY2FsZSgpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7
CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLm9yaWdp
bmFsTG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblRvcDoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5n
T3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9wLCAmUmVuZGVyQm94TW9k
ZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1hcmdpblJpZ2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjViNWMzM2ZkOTAxZDA3Nzc5
MDAuLjY0NmY5ODE3YmVmNTU0ODNlZjVmNmJiOThmYTFmOTZkOTM4MTc0MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBA
IHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6ZShkZXNjcmlwdGlv
bi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVlc3Qo
ZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAgICAgLCBtX2ZsYWdzKG1h
a2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24u
bG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24ub3JpZ2luYWxMb2NhbGUo
KSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5mZWF0dXJlU2V0dGlu
Z3MoKSkKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAsIG1fdmFyaWF0aW9u
U2V0dGluZ3MoZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKSkKQEAgLTE1Nyw3ICsxNTcs
NiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNlY29uZCB9fTsKICAgICB9
CiAKLSAgICAvLyBGb250Q2FzY2FkZTo6bG9jYWxlKCkgaXMgZXhwbGljaXRseSBub3QgaW5jbHVk
ZWQgaW4gdGhpcyBzdHJ1Y3QuCiAgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVlIHsgZmFsc2UgfTsK
ICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9m
b250U2VsZWN0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5kZXggOGViNDQ3MTFj
Nzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3MzJlZmI0OWY0N2Y5ODE2
OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICAgICBjaGFyIGM7
CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzI7
CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAgICBmbG9hdCBzaXplOwog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4YTkyNGY5YTY1MGM0NGQ3ZWYw
NTg3OWFkM2ZlNTE3NWUyZmQwODk2Li4yZDAyYmJjYjE0MzQ2YzY4NTIyMzUzNTY3OGM2ZDYzMmYy
NTNjZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNvbT4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUgIkxvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDEwICs2NiwzOSBAQCBGb250RGVzY3JpcHRpb246OkZvbnREZXNjcmlw
dGlvbigpCiB7CiB9CiAKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbXB1dGVTcGVjaWFsaXplZENoaW5l
c2VMb2NhbGUoKQoreworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFn
ZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgZm9yIChhdXRvJiBsYW5ndWFnZSA6
IHByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICBpZiAoc3RhcnRzV2l0aExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLSIpKQorICAgICAgICAgICAgcmV0dXJuIGxhbmd1
YWdlOworICAgIH0KKyAgICByZXR1cm4gQXRvbVN0cmluZygiemgtaGFucyIsIEF0b21TdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgLy8gV2UgaGF2ZSBubyBzaWduYWwuIFBpY2sgb25lIG9w
dGlvbiBhcmJpdHJhcmlseS4KK30KKworc3RhdGljIEF0b21TdHJpbmcmIGNhY2hlZFNwZWNpYWxp
emVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21TdHJp
bmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZTsKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBmb250RGVzY3JpcHRpb25MYW5ndWFn
ZUNoYW5nZWQodm9pZCopCit7CisgICAgY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkg
PSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Cit9CisKIHZvaWQgRm9udERlc2Ny
aXB0aW9uOjpzZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQogewotICAgIG1fbG9j
YWxlID0gbG9jYWxlOwotICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNl
bGVjdGlvbihtX2xvY2FsZSk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwor
ICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICBzdGF0aWMgY2hhciBk
dW1teTsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigmZHVtbXksICZmb250RGVz
Y3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOyAvLyBXZSB3aWxsIG5ldmVyIHJlbW92ZSB0aGUgb2Jz
ZXJ2ZXIsIHNvIGFsbCB3ZSBuZWVkIGlzIGEgbm9uLW51bGwgcG9pbnRlci4KKyAgICAgICAgZm9u
dERlc2NyaXB0aW9uTGFuZ3VhZ2VDaGFuZ2VkKG51bGxwdHIpOworICAgIH0pOworCisgICAgbV9v
cmlnaW5hbExvY2FsZSA9IGxvY2FsZTsKKyAgICBtX3NjcmlwdCA9IGxvY2FsZVRvU2NyaXB0Q29k
ZUZvckZvbnRTZWxlY3Rpb24obV9vcmlnaW5hbExvY2FsZSk7CisgICAgbV9sb2NhbGUgPSBtX3Nj
cmlwdCA9PSBVU0NSSVBUX0hBTiA/IGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpIDog
bV9vcmlnaW5hbExvY2FsZTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggMWU2
ZmM3NDZlOTI3MDBjYjgyNWIwNzEwYWEzZWJmMTMyNjkwNmRjYi4uYzY1YWVlMWI5ZTkyYmZmNTEx
MTMyMGU5OTllYjI5NWY0YTgyMGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgog
ICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmluZyk7IH0KICAgICBV
U2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxVU2NyaXB0Q29k
ZT4obV9zY3JpcHQpOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhbGU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBvcmlnaW5hbExvY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxMb2NhbGU7IH0KIAogICAgIEZvbnRPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZvbnRPcmllbnRhdGlv
bj4obV9vcmllbnRhdGlvbik7IH0KICAgICBOb25DSktHbHlwaE9yaWVudGF0aW9uIG5vbkNKS0ds
eXBoT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxOb25DSktHbHlwaE9y
aWVudGF0aW9uPihtX25vbkNKS0dseXBoT3JpZW50YXRpb24pOyB9CkBAIC0xNDMsNyArMTQ0LDgg
QEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgbW92aW5nIHRoZXNlIGludG8g
dGhlaXIgb3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8gc2F2ZSBtZW1vcnkpLgogICAgIEZvbnRG
ZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7CiAgICAgRm9udFZhcmlhdGlvblNldHRp
bmdzIG1fdmFyaWF0aW9uU2V0dGluZ3M7Ci0gICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKKyAgICBB
dG9tU3RyaW5nIG1fbG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2luZyBm
b3IgdGhpbmdzIGxpa2UgdGV4dCBzaGFwaW5nIGFuZCBmb250IGZhbGxiYWNrCisgICAgQXRvbVN0
cmluZyBtX29yaWdpbmFsTG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2lu
ZyBmb3Igd2ViLWV4cG9zZWQgdGhpbmdzIGxpa2UgLXdlYmtpdC1sb2NhbGUKIAogICAgIEZvbnRT
ZWxlY3Rpb25SZXF1ZXN0IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CiAgICAgZmxvYXQgbV9jb21w
dXRlZFNpemUgeyAwIH07IC8vIENvbXB1dGVkIHNpemUgYWRqdXN0ZWQgZm9yIHRoZSBtaW5pbXVt
IGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgpAQCAtMTgzLDcgKzE4NSw3IEBAIGlubGlu
ZSBib29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24m
IG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50
YXRpb24KICAgICAgICAgJiYgbV9ub25DSktHbHlwaE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9u
Q0pLR2x5cGhPcmllbnRhdGlvbgogICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5t
X3dpZHRoVmFyaWFudAotICAgICAgICAmJiBtX2xvY2FsZSA9PSBvdGhlci5tX2xvY2FsZQorICAg
ICAgICAmJiBtX29yaWdpbmFsTG9jYWxlID09IG90aGVyLm1fb3JpZ2luYWxMb2NhbGUKICAgICAg
ICAgJiYgbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKICNpZiBF
TkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09
IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApp
bmRleCBhYmM1OWE0ODY4MDZiZTIxNTMwZTM5N2ZhM2I3YmM3ZTQxNmQ0MDBkLi41MTdhN2U5NDll
YjAwYTM1ZjFiNDRlZWJmYWMxNWY3MTVlOTQxN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29j
b2EuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0NSw1NCArMTQ0LDIzIEBAIEZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2ZUZhbWlseUF0KHVu
c2lnbmVkIGluZGV4CiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJ
U1QpCiAKLXN0YXRpYyBTdHJpbmcgY29tcHV0ZVNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCi17
Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlcyA9IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogcHJlZmVycmVkTGFu
Z3VhZ2VzKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAi
emgiKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxhbmd1YWdlLCAiemgt
IikpCi0gICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7Ci0gICAgfQotICAgIHJldHVybiAiemgt
aGFucyJfc3RyOyAvLyBXZSBoYXZlIG5vIHNpZ25hbC4gUGljayBvbmUgb3B0aW9uIGFyYml0cmFy
aWx5LgotfQotCi1zdGF0aWMgU3RyaW5nJiBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUo
KQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNwZWNpYWxpemVkQ2hpbmVz
ZUxvY2FsZTsKLSAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlLmdldCgpOwotfQot
Ci1zdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCi17Ci0gICAgY2FjaGVkU3BlY2lh
bGl6ZWRDaGluZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7
Ci19Ci0KIEF0b21TdHJpbmcgRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJlc29sdmVHZW5lcmlj
RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlLCBjb25z
dCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIEFTU0VSVCgobG9jYWxlLmlzTnVsbCgp
ICYmIHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikgfHwgIWxvY2FsZS5pc051bGwoKSk7CiAgICAg
aWYgKHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CiAKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFsmXSB7Ci0gICAgICAgIHN0YXRpYyBjaGFyIGR1bW15OwotICAgICAgICBh
ZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKCZkdW1teSwgJmxhbmd1YWdlQ2hhbmdlZCk7IC8vIFdl
IHdpbGwgbmV2ZXIgcmVtb3ZlIHRoZSBvYnNlcnZlciwgc28gYWxsIHdlIG5lZWQgaXMgYSBub24t
bnVsbCBwb2ludGVyLgotICAgICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7Ci0gICAgfSk7
Ci0KLSAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgb25jZSA8cmRhcjovL3Byb2JsZW0vNDc2ODI1
Nzc+IGlzIGZpeGVkLgotICAgIGF1dG8mIHVzZWRMb2NhbGUgPSBzY3JpcHQgPT0gVVNDUklQVF9I
QU4gPyBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA6IGxvY2FsZS5zdHJpbmcoKTsK
LQogICAgIC8vIEZJWE1FOiBVc2UgdGhlIHN5c3RlbSBmb250IGRhdGFiYXNlIHRvIGhhbmRsZSBz
dGFuZGFyZEZhbWlseQogICAgIGlmIChmYW1pbHlOYW1lID09IHNlcmlmRmFtaWx5KQotICAgICAg
ICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFt
aWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZh
bWlseU5hbWUgPT0gc2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWlseSh1c2VkTG9jYWxlKTsK
KyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5z
YW5zU2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBj
dXJzaXZlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6
OnNpbmdsZXRvbigpLmN1cnNpdmVGYW1pbHkodXNlZExvY2FsZSk7CisgICAgICAgIHJldHVybiBT
eXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY3Vyc2l2ZUZhbWlseShsb2Nh
bGUuc3RyaW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGZhbnRhc3lGYW1pbHkpCi0gICAg
ICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuZmFudGFz
eUZhbWlseSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0OjpzaW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAg
aWYgKGZhbWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFjZUZhbWlseSh1c2VkTG9j
YWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0
b24oKS5tb25vc3BhY2VGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKIAogICAgIHJldHVybiBudWxs
QXRvbSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1
b3RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKaW5kZXgg
Njc2YzExMmJkYjcyOGFiY2QwODc0YTYwODNjZDljZTA5NmI2NzRiYy4uNTVmZGIyZjFhZWMyZWUx
OTdjYWY5ZGI5NTFkMWU5OGE2MTM3ZjIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclF1b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUXVvdGUuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgU3RyaW5nIFJlbmRlclF1b3RlOjpjb21w
dXRlVGV4dCgpIGNvbnN0CiAgICAgY2FzZSBRdW90ZVR5cGU6OkNsb3NlUXVvdGU6CiAgICAgICAg
IGlmIChjb25zdCBRdW90ZXNEYXRhKiBxdW90ZXMgPSBzdHlsZSgpLnF1b3RlcygpKQogICAgICAg
ICAgICAgcmV0dXJuIGlzT3BlblF1b3RlID8gcXVvdGVzLT5vcGVuUXVvdGUobV9kZXB0aCkuaW1w
bCgpIDogcXVvdGVzLT5jbG9zZVF1b3RlKG1fZGVwdGgpLmltcGwoKTsKLSAgICAgICAgaWYgKGNv
bnN0IFF1b3Rlc0Zvckxhbmd1YWdlKiBxdW90ZXMgPSBxdW90ZXNGb3JMYW5ndWFnZShzdHlsZSgp
LmxvY2FsZSgpKSkKKyAgICAgICAgaWYgKGNvbnN0IFF1b3Rlc0Zvckxhbmd1YWdlKiBxdW90ZXMg
PSBxdW90ZXNGb3JMYW5ndWFnZShzdHlsZSgpLm9yaWdpbmFsTG9jYWxlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0cmluZ0ZvclF1b3RlQ2hhcmFjdGVyKGlzT3BlblF1b3RlID8gKG1fZGVwdGgg
PyBxdW90ZXMtPm9wZW4yIDogcXVvdGVzLT5vcGVuMSkgOiAobV9kZXB0aCA/IHF1b3Rlcy0+Y2xv
c2UyIDogcXVvdGVzLT5jbG9zZTEpKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGUgZGVm
YXVsdCBiZSB0aGUgcXVvdGVzIGZvciAiZW4iIHJhdGhlciB0aGFuIHN0cmFpZ2h0IHF1b3Rlcz8K
ICAgICAgICAgcmV0dXJuIG1fZGVwdGggPyBhcG9zdHJvcGhlU3RyaW5nKCkgOiBxdW90YXRpb25N
YXJrU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCmluZGV4IDFiNzU5MmZlYjY1MGQwYjNhNjhlY2IzMGYzMzAxMGIyM2RiYmI4NGUuLjM2Nzhi
M2ExMTIyZDFiY2I4ZTQ1ZTQxZjgxMjVjY2QwN2UzMTk0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01OTQsNiArNTk0LDcgQEAgcHVibGlj
OgogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFy
ZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQogICAgIGNvbnN0IEF0b21T
dHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbGUo
KSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsgfQorICAgIGNvbnN0
IEF0b21TdHJpbmcmIG9yaWdpbmFsTG9jYWxlKCkgY29uc3QgeyByZXR1cm4gZm9udERlc2NyaXB0
aW9uKCkub3JpZ2luYWxMb2NhbGUoKTsgfQogICAgIEJvcmRlckZpdCBib3JkZXJGaXQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJGaXQ+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PmJvcmRlckZpdCk7IH0KICAgICBSZXNpemUgcmVzaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVzaXplPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUpOyB9CiAgICAgQ29s
dW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sdW1uQXhp
cz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Fm
Yjc4ZDY4M2M3N2QxMzUwNTJjMWFiNjk1NDVjNDhkMzkyNWE2YS4uY2UyYTY0YThhNmE4MTRmZGMy
NDMzNmYzOTJiMjg0ZTE3ZjdmOTVhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTAx
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFu
Zz16aCBuZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVy
IGl0IHNob3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2Ugc3VyZSB0aGUgbmV3IGxvY2FsZSBpc24ndCBleHBvc2VkLgorCisgICAg
ICAgICogZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWw6IEFk
ZGVkLgorCiAyMDIwLTA2LTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkdQVV0gVXBkYXRlIHRleHR1cmUgY3JlYXRpb24gdmFsaWRhdGlv
biBhY2NvcmRpbmcgdG8gdGhlIGRpc2N1c3Npb24gYXQgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdl
Yi9ncHV3ZWIvcHVsbC83OTkvZmlsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdj
ZWMxMDQ2NjQ2YjY5Mjg0NGUwZjQ2MGU0N2EyNmNjZTRmM2E0YzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbGFuZz0nemgn
IHJvdW5kLXRyaXBzIHRocm91Z2ggZ2V0Q29tcHV0ZWRTdHlsZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIGlzICJ6aCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZjU5MWI5
MzNmYzI1NTUyYTRlMzhkYTJhZjA4OTFkZGJiYjg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApAQCAtMCwwICsx
LDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGxhbmc9InpoIiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBsYW5nPSd6aCcgcm91bmQtdHJpcHMgdGhyb3VnaCBnZXRD
b21wdXRlZFN0eWxlLiIpOworbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIiwgInpoIik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400894</attachid>
            <date>2020-06-02 22:04:53 -0700</date>
            <delta_ts>2020-06-03 10:22:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212626-20200602220452.patch</filename>
            <type>text/plain</type>
            <size>17361</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE1MTdlMTU1ZDI4MjVk
NmVkOGZiZGZjZWMzMjkyNTA0ZTg0MTA5My4uMzllOTk5YmY1NDVmNDYyNzljYjRkYWE0OTFiYTEx
NGQyMmExYTk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTAyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlm
LCB3ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91
bGQgYmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
cGljayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3Jl
IGxpa2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMg
YWN0dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9p
bmcsIGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3Vy
IGxldmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBw
bGF0Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBj
YWNoZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJm
b3JtYW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVu
dHJ5IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGgg
c3lzdGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAg
ICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBX
ZWJLaXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50
aW5nIGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBl
eHBvc2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQg
dGhlbiByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0
bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUlu
U3R5bGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0
aW9uOjpvcmlnaW5hbExvY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpsYW5ndWFnZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om9y
aWdpbmFsTG9jYWxlIGNvbnN0KToKKwogMjAyMC0wNi0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBFdmVudFJlZ2lvbjo6dHJhbnNsYXRlKCkgbmVl
ZHMgdG8gb2Zmc2V0IHRoZSB3aGVlbCBldmVudCByZWdpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDYxYjgwMmE1MGNi
MzZmZjczZTAyMjg4MDAzMzM2ZDRmNDNmMTk2ZTQuLmZhYjZhMDQ3M2Y0NDUxNzIyOTkzZTg1ZDIz
NjBmMzAzZWQzYmNjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yOTU0LDkgKzI5NTQsOSBAQCBSZWZQdHI8Q1NTVmFs
dWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKGNvbnN0
IFJlbmRlclN0eQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZToKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUubGlzdFN0eWxlVHlw
ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdExvY2FsZToKLSAgICAgICAgICAg
IGlmIChzdHlsZS5sb2NhbGUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGlmIChzdHlsZS5vcmln
aW5hbExvY2FsZSgpLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7Ci0gICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLmxvY2FsZSgpLCBDU1NVbml0VHlwZTo6
Q1NTX1NUUklORyk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHN0eWxlLm9yaWdpbmFsTG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRvcDoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZhbHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9wLCAm
UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcmdpblRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjViNWMz
M2ZkOTAxZDA3Nzc5MDAuLjY0NmY5ODE3YmVmNTU0ODNlZjVmNmJiOThmYTFmOTZkOTM4MTc0MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03
OCw3ICs3OCw3IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6
ZShkZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNlbGVj
dGlvblJlcXVlc3QoZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAgICAg
LCBtX2ZsYWdzKG1ha2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUo
ZGVzY3JpcHRpb24ubG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24ub3Jp
Z2luYWxMb2NhbGUoKSkKICAgICAgICAgLCBtX2ZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdGlvbi5m
ZWF0dXJlU2V0dGluZ3MoKSkKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAs
IG1fdmFyaWF0aW9uU2V0dGluZ3MoZGVzY3JpcHRpb24udmFyaWF0aW9uU2V0dGluZ3MoKSkKQEAg
LTE1Nyw3ICsxNTcsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4ge3sgZmlyc3QsIHNlY29u
ZCB9fTsKICAgICB9CiAKLSAgICAvLyBGb250Q2FzY2FkZTo6bG9jYWxlKCkgaXMgZXhwbGljaXRs
eSBub3QgaW5jbHVkZWQgaW4gdGhpcyBzdHJ1Y3QuCiAgICAgYm9vbCBtX2lzRGVsZXRlZFZhbHVl
IHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgRm9udFNlbGVjdGlv
blJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5k
ZXggOGViNDQ3MTFjNzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3MzJl
ZmI0OWY0N2Y5ODE2OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsK
ICAgICBjaGFyIGM7CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3Ry
aW5nIHN0cmluZzI7CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAgICBm
bG9hdCBzaXplOwogICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4YTkyNGY5
YTY1MGM0NGQ3ZWYwNTg3OWFkM2ZlNTE3NWUyZmQwODk2Li4yZDAyYmJjYjE0MzQ2YzY4NTIyMzUz
NTY3OGM2ZDYzMmYyNTNjZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtzLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiAr
MzIsNyBAQAogCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2luY2x1ZGUg
IkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEwICs2NiwzOSBAQCBGb250RGVzY3JpcHRpb246
OkZvbnREZXNjcmlwdGlvbigpCiB7CiB9CiAKK3N0YXRpYyBBdG9tU3RyaW5nIGNvbXB1dGVTcGVj
aWFsaXplZENoaW5lc2VMb2NhbGUoKQoreworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcmVm
ZXJyZWRMYW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgZm9yIChhdXRv
JiBsYW5ndWFnZSA6IHByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICBpZiAoc3RhcnRzV2l0
aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsYW5ndWFnZSwgInpoLSIpKQorICAgICAgICAgICAg
cmV0dXJuIGxhbmd1YWdlOworICAgIH0KKyAgICByZXR1cm4gQXRvbVN0cmluZygiemgtaGFucyIs
IEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsgLy8gV2UgaGF2ZSBubyBzaWduYWwu
IFBpY2sgb25lIG9wdGlvbiBhcmJpdHJhcmlseS4KK30KKworc3RhdGljIEF0b21TdHJpbmcmIGNh
Y2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21TdHJpbmc+IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZTsKKyAgICByZXR1cm4gc3Bl
Y2lhbGl6ZWRDaGluZXNlTG9jYWxlLmdldCgpOworfQorCitzdGF0aWMgdm9pZCBmb250RGVzY3Jp
cHRpb25MYW5ndWFnZUNoYW5nZWQodm9pZCopCit7CisgICAgY2FjaGVkU3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCk7Cit9CisKIHZv
aWQgRm9udERlc2NyaXB0aW9uOjpzZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQog
ewotICAgIG1fbG9jYWxlID0gbG9jYWxlOwotICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRD
b2RlRm9yRm9udFNlbGVjdGlvbihtX2xvY2FsZSk7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFn
IG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0geworICAgICAgICBz
dGF0aWMgY2hhciBkdW1teTsKKyAgICAgICAgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcigmZHVt
bXksICZmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQpOyAvLyBXZSB3aWxsIG5ldmVyIHJl
bW92ZSB0aGUgb2JzZXJ2ZXIsIHNvIGFsbCB3ZSBuZWVkIGlzIGEgbm9uLW51bGwgcG9pbnRlci4K
KyAgICAgICAgZm9udERlc2NyaXB0aW9uTGFuZ3VhZ2VDaGFuZ2VkKG51bGxwdHIpOworICAgIH0p
OworCisgICAgbV9vcmlnaW5hbExvY2FsZSA9IGxvY2FsZTsKKyAgICBtX3NjcmlwdCA9IGxvY2Fs
ZVRvU2NyaXB0Q29kZUZvckZvbnRTZWxlY3Rpb24obV9vcmlnaW5hbExvY2FsZSk7CisgICAgbV9s
b2NhbGUgPSBtX3NjcmlwdCA9PSBVU0NSSVBUX0hBTiA/IGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVz
ZUxvY2FsZSgpIDogbV9vcmlnaW5hbExvY2FsZTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKaW5kZXggMWU2ZmM3NDZlOTI3MDBjYjgyNWIwNzEwYWEzZWJmMTMyNjkwNmRjYi4uYzY1YWVl
MWI5ZTkyYmZmNTExMTMyMGU5OTllYjI5NWY0YTgyMGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTUyLDYgKzUyLDcg
QEAgcHVibGljOgogICAgIFRleHRSZW5kZXJpbmdNb2RlIHRleHRSZW5kZXJpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFJlbmRlcmluZ01vZGU+KG1fdGV4dFJlbmRlcmlu
Zyk7IH0KICAgICBVU2NyaXB0Q29kZSBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxVU2NyaXB0Q29kZT4obV9zY3JpcHQpOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxl
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbGU7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBvcmln
aW5hbExvY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxMb2NhbGU7IH0KIAogICAgIEZv
bnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZv
bnRPcmllbnRhdGlvbj4obV9vcmllbnRhdGlvbik7IH0KICAgICBOb25DSktHbHlwaE9yaWVudGF0
aW9uIG5vbkNKS0dseXBoT3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxO
b25DSktHbHlwaE9yaWVudGF0aW9uPihtX25vbkNKS0dseXBoT3JpZW50YXRpb24pOyB9CkBAIC0x
NDMsNyArMTQ0LDggQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgbW92aW5n
IHRoZXNlIGludG8gdGhlaXIgb3duIG9iamVjdCBvbiB0aGUgaGVhcCAodG8gc2F2ZSBtZW1vcnkp
LgogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJlU2V0dGluZ3M7CiAgICAgRm9udFZh
cmlhdGlvblNldHRpbmdzIG1fdmFyaWF0aW9uU2V0dGluZ3M7Ci0gICAgQXRvbVN0cmluZyBtX2xv
Y2FsZTsKKyAgICBBdG9tU3RyaW5nIG1fbG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNob3Vs
ZCBiZSB1c2luZyBmb3IgdGhpbmdzIGxpa2UgdGV4dCBzaGFwaW5nIGFuZCBmb250IGZhbGxiYWNr
CisgICAgQXRvbVN0cmluZyBtX29yaWdpbmFsTG9jYWxlOyAvLyBUaGlzIGlzIHdoYXQgeW91IHNo
b3VsZCBiZSB1c2luZyBmb3Igd2ViLWV4cG9zZWQgdGhpbmdzIGxpa2UgLXdlYmtpdC1sb2NhbGUK
IAogICAgIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CiAgICAg
ZmxvYXQgbV9jb21wdXRlZFNpemUgeyAwIH07IC8vIENvbXB1dGVkIHNpemUgYWRqdXN0ZWQgZm9y
IHRoZSBtaW5pbXVtIGZvbnQgc2l6ZSBhbmQgdGhlIHpvb20gZmFjdG9yLgpAQCAtMTgzLDcgKzE4
NSw3IEBAIGlubGluZSBib29sIEZvbnREZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGb250
RGVzY3JpcHRpb24mIG90aGVyKSBjb25zdAogICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90
aGVyLm1fb3JpZW50YXRpb24KICAgICAgICAgJiYgbV9ub25DSktHbHlwaE9yaWVudGF0aW9uID09
IG90aGVyLm1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbgogICAgICAgICAmJiBtX3dpZHRoVmFyaWFu
dCA9PSBvdGhlci5tX3dpZHRoVmFyaWFudAotICAgICAgICAmJiBtX2xvY2FsZSA9PSBvdGhlci5t
X2xvY2FsZQorICAgICAgICAmJiBtX29yaWdpbmFsTG9jYWxlID09IG90aGVyLm1fb3JpZ2luYWxM
b2NhbGUKICAgICAgICAgJiYgbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0
dGluZ3MKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgICAgICAmJiBtX3ZhcmlhdGlv
blNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAppbmRleCBhYmM1OWE0ODY4MDZiZTIxNTMwZTM5N2ZhM2I3YmM3ZTQxNmQ0MDBk
Li41MTdhN2U5NDllYjAwYTM1ZjFiNDRlZWJmYWMxNWY3MTVlOTQxN2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2Nv
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERl
c2NyaXB0aW9uQ29jb2EuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dC5oIgogI2luY2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHd0Zi9M
YW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0NSw1NCArMTQ0LDIzIEBA
IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uIEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmVmZmVjdGl2
ZUZhbWlseUF0KHVuc2lnbmVkIGluZGV4CiAKICNlbmRpZiAvLyBVU0UoUExBVEZPUk1fU1lTVEVN
X0ZBTExCQUNLX0xJU1QpCiAKLXN0YXRpYyBTdHJpbmcgY29tcHV0ZVNwZWNpYWxpemVkQ2hpbmVz
ZUxvY2FsZSgpCi17Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdl
cyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDog
cHJlZmVycmVkTGFuZ3VhZ2VzKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KGxhbmd1YWdlLCAiemgiKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxh
bmd1YWdlLCAiemgtIikpCi0gICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7Ci0gICAgfQotICAg
IHJldHVybiAiemgtaGFucyJfc3RyOyAvLyBXZSBoYXZlIG5vIHNpZ25hbC4gUGljayBvbmUgb3B0
aW9uIGFyYml0cmFyaWx5LgotfQotCi1zdGF0aWMgU3RyaW5nJiBjYWNoZWRTcGVjaWFsaXplZENo
aW5lc2VMb2NhbGUoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNwZWNp
YWxpemVkQ2hpbmVzZUxvY2FsZTsKLSAgICByZXR1cm4gc3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxl
LmdldCgpOwotfQotCi1zdGF0aWMgdm9pZCBsYW5ndWFnZUNoYW5nZWQodm9pZCopCi17Ci0gICAg
Y2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkgPSBjb21wdXRlU3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlKCk7Ci19Ci0KIEF0b21TdHJpbmcgRm9udERlc2NyaXB0aW9uOjpwbGF0Zm9ybVJl
c29sdmVHZW5lcmljRmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCwgY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxlLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lKQogewogICAgIEFTU0VSVCgobG9j
YWxlLmlzTnVsbCgpICYmIHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikgfHwgIWxvY2FsZS5pc051
bGwoKSk7CiAgICAgaWYgKHNjcmlwdCA9PSBVU0NSSVBUX0NPTU1PTikKICAgICAgICAgcmV0dXJu
IG51bGxBdG9tKCk7CiAKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAg
c3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7Ci0gICAgICAgIHN0YXRpYyBjaGFyIGR1bW15
OwotICAgICAgICBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKCZkdW1teSwgJmxhbmd1YWdlQ2hh
bmdlZCk7IC8vIFdlIHdpbGwgbmV2ZXIgcmVtb3ZlIHRoZSBvYnNlcnZlciwgc28gYWxsIHdlIG5l
ZWQgaXMgYSBub24tbnVsbCBwb2ludGVyLgotICAgICAgICBsYW5ndWFnZUNoYW5nZWQobnVsbHB0
cik7Ci0gICAgfSk7Ci0KLSAgICAvLyBGSVhNRTogRGVsZXRlIHRoaXMgb25jZSA8cmRhcjovL3By
b2JsZW0vNDc2ODI1Nzc+IGlzIGZpeGVkLgotICAgIGF1dG8mIHVzZWRMb2NhbGUgPSBzY3JpcHQg
PT0gVVNDUklQVF9IQU4gPyBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA6IGxvY2Fs
ZS5zdHJpbmcoKTsKLQogICAgIC8vIEZJWE1FOiBVc2UgdGhlIHN5c3RlbSBmb250IGRhdGFiYXNl
IHRvIGhhbmRsZSBzdGFuZGFyZEZhbWlseQogICAgIGlmIChmYW1pbHlOYW1lID09IHNlcmlmRmFt
aWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRv
bigpLnNlcmlmRmFtaWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNlcmlmRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7
CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc2Fuc1NlcmlmRmFtaWx5KQotICAgICAgICByZXR1cm4g
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWlseSh1
c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKS5zYW5zU2VyaWZGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKICAgICBpZiAoZmFt
aWx5TmFtZSA9PSBjdXJzaXZlRmFtaWx5KQotICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFi
YXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmN1cnNpdmVGYW1pbHkodXNlZExvY2FsZSk7CisgICAg
ICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY3Vyc2l2
ZUZhbWlseShsb2NhbGUuc3RyaW5nKCkpOwogICAgIGlmIChmYW1pbHlOYW1lID09IGZhbnRhc3lG
YW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xl
dG9uKCkuZmFudGFzeUZhbWlseSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZv
bnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KGxvY2FsZS5zdHJp
bmcoKSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gbW9ub3NwYWNlRmFtaWx5KQotICAgICAgICBy
ZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFjZUZh
bWlseSh1c2VkTG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0OjpzaW5nbGV0b24oKS5tb25vc3BhY2VGYW1pbHkobG9jYWxlLnN0cmluZygpKTsKIAogICAg
IHJldHVybiBudWxsQXRvbSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclF1b3RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90
ZS5jcHAKaW5kZXggNjc2YzExMmJkYjcyOGFiY2QwODc0YTYwODNjZDljZTA5NmI2NzRiYy4uNTVm
ZGIyZjFhZWMyZWUxOTdjYWY5ZGI5NTFkMWU5OGE2MTM3ZjIzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgU3RyaW5nIFJlbmRl
clF1b3RlOjpjb21wdXRlVGV4dCgpIGNvbnN0CiAgICAgY2FzZSBRdW90ZVR5cGU6OkNsb3NlUXVv
dGU6CiAgICAgICAgIGlmIChjb25zdCBRdW90ZXNEYXRhKiBxdW90ZXMgPSBzdHlsZSgpLnF1b3Rl
cygpKQogICAgICAgICAgICAgcmV0dXJuIGlzT3BlblF1b3RlID8gcXVvdGVzLT5vcGVuUXVvdGUo
bV9kZXB0aCkuaW1wbCgpIDogcXVvdGVzLT5jbG9zZVF1b3RlKG1fZGVwdGgpLmltcGwoKTsKLSAg
ICAgICAgaWYgKGNvbnN0IFF1b3Rlc0Zvckxhbmd1YWdlKiBxdW90ZXMgPSBxdW90ZXNGb3JMYW5n
dWFnZShzdHlsZSgpLmxvY2FsZSgpKSkKKyAgICAgICAgaWYgKGNvbnN0IFF1b3Rlc0Zvckxhbmd1
YWdlKiBxdW90ZXMgPSBxdW90ZXNGb3JMYW5ndWFnZShzdHlsZSgpLm9yaWdpbmFsTG9jYWxlKCkp
KQogICAgICAgICAgICAgcmV0dXJuIHN0cmluZ0ZvclF1b3RlQ2hhcmFjdGVyKGlzT3BlblF1b3Rl
ID8gKG1fZGVwdGggPyBxdW90ZXMtPm9wZW4yIDogcXVvdGVzLT5vcGVuMSkgOiAobV9kZXB0aCA/
IHF1b3Rlcy0+Y2xvc2UyIDogcXVvdGVzLT5jbG9zZTEpKTsKICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB0aGUgZGVmYXVsdCBiZSB0aGUgcXVvdGVzIGZvciAiZW4iIHJhdGhlciB0aGFuIHN0cmFp
Z2h0IHF1b3Rlcz8KICAgICAgICAgcmV0dXJuIG1fZGVwdGggPyBhcG9zdHJvcGhlU3RyaW5nKCkg
OiBxdW90YXRpb25NYXJrU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IDFiNzU5MmZlYjY1MGQwYjNhNjhlY2IzMGYzMzAxMGIyM2Ri
YmI4NGUuLjM2NzhiM2ExMTIyZDFiY2I4ZTQ1ZTQxZjgxMjVjY2QwN2UzMTk0YWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01OTQsNiArNTk0
LDcgQEAgcHVibGljOgogICAgIHNob3J0IGh5cGhlbmF0aW9uTGltaXRMaW5lcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPmh5cGhlbmF0aW9uTGltaXRMaW5lczsgfQogICAg
IGNvbnN0IEF0b21TdHJpbmcmIGh5cGhlbmF0aW9uU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9y
YXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25TdHJpbmc7IH0KICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbGUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5sb2NhbGUoKTsg
fQorICAgIGNvbnN0IEF0b21TdHJpbmcmIG9yaWdpbmFsTG9jYWxlKCkgY29uc3QgeyByZXR1cm4g
Zm9udERlc2NyaXB0aW9uKCkub3JpZ2luYWxMb2NhbGUoKTsgfQogICAgIEJvcmRlckZpdCBib3Jk
ZXJGaXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCb3JkZXJGaXQ+KG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPmJvcmRlckZpdCk7IH0KICAgICBSZXNpemUgcmVzaXplKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UmVzaXplPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5yZXNpemUp
OyB9CiAgICAgQ29sdW1uQXhpcyBjb2x1bW5BeGlzKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29sdW1uQXhpcz4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bXVsdGlDb2wtPmF4aXMpOyB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmMwMjE3ZGE0ODRjNWI5NDU2ZTFiYWJmYTkwNGY5ZmNiOTZmMzMwZS4uYmMxYTgw
NDQxZjc2NDIwNmE3NWI4Nzc5NjBjZTRjYTllY2E0YWRmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIwLTA2LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisK
KyAgICAgICAgbGFuZz16aCBuZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8g
a25vdyB3aGV0aGVyIGl0IHNob3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGUgbmV3IGxvY2FsZSBpc24ndCBleHBv
c2VkLgorCisgICAgICAgICogZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2xvY2FsZS1nZXRDb21wdXRlZFN0
eWxlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA2LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEV2ZW50UmVnaW9uOjp0cmFuc2xhdGUoKSBuZWVkcyB0
byBvZmZzZXQgdGhlIHdoZWVsIGV2ZW50IHJlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdjZWMxMDQ2NjQ2YjY5Mjg0NGUwZjQ2MGU0N2EyNmNjZTRmM2E0YzgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
bGFuZz0nemgnIHJvdW5kLXRyaXBzIHRocm91Z2ggZ2V0Q29tcHV0ZWRTdHlsZS4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFy
Z2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIGlzICJ6aCIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE0ZjU5MWI5MzNmYzI1NTUyYTRlMzhkYTJhZjA4OTFkZGJiYjg3MTkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApA
QCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGxhbmc9InpoIiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBsYW5nPSd6aCcgcm91bmQtdHJpcHMgdGhy
b3VnaCBnZXRDb21wdXRlZFN0eWxlLiIpOworbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0YXJnZXQiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1
dGVkU3R5bGUodGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIiwgInpo
Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="416283"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401429</attachid>
            <date>2020-06-09 02:48:01 -0700</date>
            <delta_ts>2020-06-09 10:15:39 -0700</delta_ts>
            <desc>Patch for comitting</desc>
            <filename>bug-212626-20200609024800.patch</filename>
            <type>text/plain</type>
            <size>45282</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdiNjgxYWY1ZWUzMjY2
YjdlMmJjZGIxNTRlY2FlYTM3NDQ5YWMwMS4uM2JiYTlmN2U4NmQwYmNlN2E2MjdhZmZlYTE2Zjhl
Nzg4ZDk5MzU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIwLTA2LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBu
ZWVkcyB0byBkZWZlciB0byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNo
b3VsZCBiZSBzaW1wbGlmaWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMjI3NjIzPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IElmIHRoZSBjb250ZW50IHNheXMgbGFuZz0iemgiIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmLCB3
ZSBoYXZlIG5vIHNpZ25hbCBmb3Igd2hldGhlcgorICAgICAgICB0aGUgY29udGVudCBzaG91bGQg
YmUgdHJhZGl0aW9uYWwgb3Igc2ltcGxpZmllZC4gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQgcGlj
ayBiYXNlZAorICAgICAgICBvbiBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8gbWFrZSBpdCBtb3JlIGxp
a2VseSB0aGF0IHdlIGdldCB0aGUgcmlnaHQgYW5zd2VyLgorCisgICAgICAgIFRoaXMgaXMgYWN0
dWFsbHkgd2hhdCBzb21lIENvY29hIHBsYXRmb3JtIHRleHQgZnVuY3Rpb25zIHdlcmUgZG9pbmcs
IGJ1dCBub3QgYWxsIG9mIHRoZW0uCisgICAgICAgIFdlIG5lZWQgdG8gZG8gaXQgYXQgb3VyIGxl
dmVsIGluIFdlYktpdCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgb3VyIGNhbGxzIHRvIHRoZSBwbGF0
Zm9ybQorICAgICAgICBoYXZlIGNvbnNpc3RlbnQgYmVoYXZpb3IuIEFsc28sIHdlIGNhbiBjYWNo
ZSB0aGUgcmVzdWx0IGF0IG91ciBsZXZlbCwgd2hpY2ggaXMgbW9yZQorICAgICAgICBwZXJmb3Jt
YW50IHRoYW4gaWYgdGhlIHBsYXRmb3JtIGNhY2hlZCBpdCBhdCBlYWNoIHBsYXRmb3JtIGVudHJ5
IHBvaW50LgorCisgICAgICAgIFdlIGFscmVhZHkgc3RhcnRlZCBjb25zdWx0aW5nIHdpdGggc3lz
dGVtIHByZWZlcmVuY2VzIHRvIG1ha2UgdGhpcyBkZWNpc2lvbiBpbiByMTg5MDM4LgorICAgICAg
ICBUaGlzIHBhdGNoIGV4dGVuZHMgdGhhdCBhbmQgZml4ZXMgaXQgdG8gdGhyb3VnaG91dCBXZWJL
aXQuCisKKyAgICAgICAgVGhpcyBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGZpbmdlcnByaW50aW5n
IGRhdGEsIGJlY2F1c2UgdGhpcyBpbmZvcm1hdGlvbiB3YXMgYWxyZWFkeQorICAgICAgICBleHBv
c2VkIChlLmcuIGJ5IGRyYXdpbmcgZmFsbGJhY2sgZm9udHMgdG8gdGhlIGNhbnZhcyBhbmQgdGhl
biByZWFkaW5nIGJhY2sgdGhlIHBpeGVscykuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvdGV4dC9s
b2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3RleHQvaW50
ZXJuYXRpb25hbC9nZW5lcmljLWZvbnQtZmFtaWx5LWxhbmd1YWdlLXRyYWRpdGlvbmFsLmh0bWwK
KworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5
bGUpOgorICAgICAgICAqIGNzcy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cmVzb2x2ZUdlbmVyaWNGYW1pbHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0aWVzLmpz
b246CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6d29yZEJyZWFrQmVo
YXZpb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJlYWtlcjo6dHJ5
QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJh
Y3RlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb25LZXk6OkZvbnREZXNjcmlwdGlvbktleSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OndpZHRoRm9yU2ltcGxlVGV4dCBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGVEZXNjcmlwdGlvbjo6aW5pdGlhbFNwZWNpZmllZExvY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZURlc2NyaXB0aW9uOjppbml0aWFsTG9jYWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6
CisgICAgICAgIChXZWJDb3JlOjpjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9udERlc2NyaXB0aW9uTGFuZ3VhZ2VDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OnNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RGVzY3JpcHRpb246OnNldFNwZWNpZmllZExvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b250RGVzY3JpcHRpb246OnNldExvY2FsZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3Jp
cHRpb246OmNvbXB1dGVkTG9jYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREZXNj
cmlwdGlvbjo6c3BlY2lmaWVkTG9jYWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRE
ZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVz
Y3JpcHRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRp
b246OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RGVzY3JpcHRpb246OmxvY2FsZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphcHBseUZvbnRUcmFuc2Zv
cm1zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hh
cmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0
aW9uQ29jb2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpwbGF0Zm9y
bVJlc29sdmVHZW5lcmljRmFtaWx5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTcGVjaWFs
aXplZENoaW5lc2VMb2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU3Bl
Y2lhbGl6ZWRDaGluZXNlTG9jYWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omxhbmd1
YWdlQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3lzdGVt
Rm9udERhdGFiYXNlQ29yZVRleHQ6OnN5c3RlbUZvbnRQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4
dFJ1bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUXVvdGU6OmNvbXB1dGVUZXh0IGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXhX
b3JkRnJhZ21lbnRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVRleHRUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRv
cjo6U3R5bGU6OlN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRl
eHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnRJdGVyYXRvcik6CisgICAgICAgICogcmVu
ZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpCcmVha2lu
Z0NvbnRleHQ6OmhhbmRsZVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmNvbXB1dGVkTG9jYWxlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzcGVjaWZpZWRMb2NhbGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmxvY2FsZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdExvY2FsZSk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudCk6CisKIDIwMjAtMDYtMDkgIFhhYmllciBSb2Ry
aWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRU1FXSBDRE1Q
cm94eUluc3RhbmNlIHNob3VsZCBub3Qga2VlcCBDRE1JbnN0YW5jZVNlc3Npb25zIGhhcmQgcmVm
ZXJlbmNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAppbmRleCA2MWI4MDJhNTBjYjM2ZmY3M2UwMjI4ODAwMzMzNmQ0ZjQzZjE5NmU0
Li41YmJhM2E4NDM1Y2QxN2U3MzBhZDUyNDQxMmMxNzlkZTJiN2IzY2U2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjk1
NCw5ICsyOTU0LDkgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5kZXJTdHkKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZVR5cGU6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLmxpc3RTdHlsZVR5cGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRMb2NhbGU6Ci0gICAgICAgICAgICBpZiAoc3R5bGUubG9jYWxlKCkuaXNOdWxsKCkp
CisgICAgICAgICAgICBpZiAoc3R5bGUuc3BlY2lmaWVkTG9jYWxlKCkuaXNOdWxsKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c3R5bGUubG9jYWxlKCksIENTU1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuc3BlY2lmaWVkTG9jYWxlKCksIENT
U1VuaXRUeXBlOjpDU1NfU1RSSU5HKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblRv
cDoKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQYWRkaW5nT3JNYXJnaW5QaXhlbFZh
bHVlPCZSZW5kZXJTdHlsZTo6bWFyZ2luVG9wLCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcmdp
blRvcD4oc3R5bGUsIHJlbmRlcmVyKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpblJp
Z2h0OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDY3MjZjN2I2
MjE2NTllZjcyYmViMDEwNGU2Y2QyM2Q5ZWMxNjAwMTcuLjdiOGI4OGVhY2UxZDg1MGQ0MzY5M2Nh
ZmY0MDllMWNmNTA3ZjU2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmZvbnRDYWNoZUludmFs
aWRhdGVkKCkKIAogc3RhdGljIE9wdGlvbmFsPEF0b21TdHJpbmc+IHJlc29sdmVHZW5lcmljRmFt
aWx5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpb24sIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseU5hbWUpCiB7Ci0gICAgYXV0byBwbGF0Zm9y
bVJlc3VsdCA9IEZvbnREZXNjcmlwdGlvbjo6cGxhdGZvcm1SZXNvbHZlR2VuZXJpY0ZhbWlseShm
b250RGVzY3JpcHRpb24uc2NyaXB0KCksIGZvbnREZXNjcmlwdGlvbi5sb2NhbGUoKSwgZmFtaWx5
TmFtZSk7CisgICAgYXV0byBwbGF0Zm9ybVJlc3VsdCA9IEZvbnREZXNjcmlwdGlvbjo6cGxhdGZv
cm1SZXNvbHZlR2VuZXJpY0ZhbWlseShmb250RGVzY3JpcHRpb24uc2NyaXB0KCksIGZvbnREZXNj
cmlwdGlvbi5jb21wdXRlZExvY2FsZSgpLCBmYW1pbHlOYW1lKTsKICAgICBpZiAoIXBsYXRmb3Jt
UmVzdWx0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1SZXN1bHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCmluZGV4IGM5MDRiODY3Yzk0ZGY4ZWI5YmE3ZTUw
NGY1ZDI2OWU5MzNlODBlYTEuLmM3ODM0YmI0NDg0NWNmZTlmYTNhNDM1ZWY5NjhhOWRkMDI2Yzdh
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpAQCAtNjIwLDcgKzYyMCw4
IEBACiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgICAg
ICJjdXN0b20iOiAiVmFsdWUiLAogICAgICAgICAgICAgICAgICJmb250LXByb3BlcnR5IjogdHJ1
ZSwKLSAgICAgICAgICAgICAgICAiaGlnaC1wcmlvcml0eSI6IHRydWUKKyAgICAgICAgICAgICAg
ICAiaGlnaC1wcmlvcml0eSI6IHRydWUsCisgICAgICAgICAgICAgICAgIm5hbWUtZm9yLW1ldGhv
ZHMiOiAiU3BlY2lmaWVkTG9jYWxlIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzdGF0
dXMiOiAibm9uLXN0YW5kYXJkIgogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwCmlu
ZGV4IDA2MWY0YjAxNmM3NGYwZWE3ODhjOTk4NzE2NGM3Y2QxZGRlODg5M2IuLmE1MDBmYmE4N2Fi
NWMzMTAyODk3Njk5MjMwMDYyM2YzNDAyODVlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5jcHAK
QEAgLTI4OSw3ICsyODksNyBAQCBMaW5lQnJlYWtlcjo6V29yZEJyZWFrUnVsZSBMaW5lQnJlYWtl
cjo6d29yZEJyZWFrQmVoYXZpb3IoY29uc3QgUmVuZGVyU3R5bGUmIHN0eQogICAgIGlmIChzdHls
ZS5vdmVyZmxvd1dyYXAoKSA9PSBPdmVyZmxvd1dyYXA6OkJyZWFrICYmICFtX2hhc1dyYXBPcHBv
cnR1bml0eUF0UHJldmlvdXNQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIFdvcmRCcmVha1J1bGU6
OkF0QXJiaXRyYXJ5UG9zaXRpb247CiAKLSAgICBpZiAoIW5faHlwaGVuYXRpb25Jc0Rpc2FibGVk
ICYmIHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHls
ZS5sb2NhbGUoKSkpCisgICAgaWYgKCFuX2h5cGhlbmF0aW9uSXNEaXNhYmxlZCAmJiBzdHlsZS5o
eXBoZW5zKCkgPT0gSHlwaGVuczo6QXV0byAmJiBjYW5IeXBoZW5hdGUoc3R5bGUuY29tcHV0ZWRM
b2NhbGUoKSkpCiAgICAgICAgIHJldHVybiBXb3JkQnJlYWtSdWxlOjpPbmx5SHlwaGVuYXRpb25B
bGxvd2VkOwogCiAgICAgcmV0dXJuIFdvcmRCcmVha1J1bGU6Ok5vQnJlYWs7CkBAIC0zMzksNyAr
MzM5LDcgQEAgT3B0aW9uYWw8TGluZUJyZWFrZXI6OlBhcnRpYWxSdW4+IExpbmVCcmVha2VyOjp0
cnlCcmVha2luZ1RleHRSdW4oY29uc3QgUnVuJiBvdmUKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIC8vIEFkanVzdCBiZWZvcmUgaW5kZXggdG8gYWNjb21tb2RhdGUgdGhlIGxpbWl0
LWFmdGVyIHZhbHVlIChpdCdzIHRoZSBsYXN0IHBvdGVudGlhbCBoeXBoZW4gbG9jYXRpb24gaW4g
dGhpcyBydW4pLgogICAgICAgICBhdXRvIGh5cGhlbkJlZm9yZSA9IHN0ZDo6bWluKGxlZnRTaWRl
TGVuZ3RoLCBydW5MZW5ndGggLSBsaW1pdEFmdGVyKSArIDE7Ci0gICAgICAgIHVuc2lnbmVkIGh5
cGhlbkxvY2F0aW9uID0gbGFzdEh5cGhlbkxvY2F0aW9uKFN0cmluZ1ZpZXcoaW5saW5lVGV4dEl0
ZW0uaW5saW5lVGV4dEJveCgpLmNvbnRlbnQoKSkuc3Vic3RyaW5nKGlubGluZVRleHRJdGVtLnN0
YXJ0KCksIGlubGluZVRleHRJdGVtLmxlbmd0aCgpKSwgaHlwaGVuQmVmb3JlLCBzdHlsZS5sb2Nh
bGUoKSk7CisgICAgICAgIHVuc2lnbmVkIGh5cGhlbkxvY2F0aW9uID0gbGFzdEh5cGhlbkxvY2F0
aW9uKFN0cmluZ1ZpZXcoaW5saW5lVGV4dEl0ZW0uaW5saW5lVGV4dEJveCgpLmNvbnRlbnQoKSku
c3Vic3RyaW5nKGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGluZVRleHRJdGVtLmxlbmd0aCgp
KSwgaHlwaGVuQmVmb3JlLCBzdHlsZS5jb21wdXRlZExvY2FsZSgpKTsKICAgICAgICAgaWYgKCFo
eXBoZW5Mb2NhdGlvbiB8fCBoeXBoZW5Mb2NhdGlvbiA8IGxpbWl0QmVmb3JlKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgLy8gaHlwaGVuTG9jYXRpb24gaXMgcmVsYXRpdmUgdG8g
dGhlIHN0YXJ0IG9mIHRoaXMgSW5saW5lSXRlbVRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDcyMzU4Y2EzZGE0YTUyNDAzN2QzZWUwNjUyZTM3NDY2
MGYyYTQ1YTguLjhiNjFmZDA0ZjJmYWFhZjdhYWNhYzBkZjQyMzlmOGM3MDJjNWQzOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01ODEsNyArNTgxLDcg
QEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hh
cjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAgICAgICAgcmV0dXJuIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkuc3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGRlc2NyaXB0aW9uLCB0aGlzLCBp
c0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlOjpQcmVmZXJDb2xvcmVkRm9udDo6Tm8sICZjb2Rl
VW5pdCwgMSk7CiAgICAgfQogCi0gICAgYXV0byBrZXkgPSBDaGFyYWN0ZXJGYWxsYmFja01hcEtl
eShkZXNjcmlwdGlvbi5sb2NhbGUoKSwgY2hhcmFjdGVyLCBpc0ZvclBsYXRmb3JtRm9udCk7Cisg
ICAgYXV0byBrZXkgPSBDaGFyYWN0ZXJGYWxsYmFja01hcEtleShkZXNjcmlwdGlvbi5jb21wdXRl
ZExvY2FsZSgpLCBjaGFyYWN0ZXIsIGlzRm9yUGxhdGZvcm1Gb250KTsKICAgICBhdXRvIGNoYXJh
Y3RlckFkZFJlc3VsdCA9IGZvbnRBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFkZChXVEZNb3Zl
KGtleSksIG51bGxwdHIpOwogCiAgICAgRm9udComIGZhbGxiYWNrRm9udCA9IGNoYXJhY3RlckFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5oCmluZGV4IDI2NmNiNjZiYjcxMWVkNmI2YjlhMjViNWMzM2ZkOTAxZDA3
Nzc5MDAuLjU0NjI4MmQwZGRkNDNiZjM4MGUyMzg1ZjI0NWE5OGRlYWVmMzYwNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC03OCw3ICs3OCw3
IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25LZXkgewogICAgICAgICA6IG1fc2l6ZShkZXNjcmlw
dGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpKQogICAgICAgICAsIG1fZm9udFNlbGVjdGlvblJlcXVl
c3QoZGVzY3JpcHRpb24uZm9udFNlbGVjdGlvblJlcXVlc3QoKSkKICAgICAgICAgLCBtX2ZsYWdz
KG1ha2VGbGFnc0tleShkZXNjcmlwdGlvbikpCi0gICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRp
b24ubG9jYWxlKCkpCisgICAgICAgICwgbV9sb2NhbGUoZGVzY3JpcHRpb24uc3BlY2lmaWVkTG9j
YWxlKCkpCiAgICAgICAgICwgbV9mZWF0dXJlU2V0dGluZ3MoZGVzY3JpcHRpb24uZmVhdHVyZVNl
dHRpbmdzKCkpCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICAgICAgLCBtX3Zhcmlh
dGlvblNldHRpbmdzKGRlc2NyaXB0aW9uLnZhcmlhdGlvblNldHRpbmdzKCkpCkBAIC0xNTcsNyAr
MTU3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHt7IGZpcnN0LCBzZWNvbmQgfX07CiAg
ICAgfQogCi0gICAgLy8gRm9udENhc2NhZGU6OmxvY2FsZSgpIGlzIGV4cGxpY2l0bHkgbm90IGlu
Y2x1ZGVkIGluIHRoaXMgc3RydWN0LgogICAgIGJvb2wgbV9pc0RlbGV0ZWRWYWx1ZSB7IGZhbHNl
IH07CiAgICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwogICAgIEZvbnRTZWxlY3Rpb25SZXF1ZXN0
IG1fZm9udFNlbGVjdGlvblJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggOTMxMDNjZjE2Njg5OWE1OGJiMzNmMmRhMjcw
MzY5ZjZjNGUxYzM0NS4uNjkxYTNlMWE1YWY4YzMzNjFkZjVlYjBmODJkOTRiMmUxMTgyZWQwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cApAQCAtNDQwLDcgKzQ0MCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjp3aWR0aEZvclNpbXBsZVRl
eHQoU3RyaW5nVmlldyB0ZXh0KSBjb25zdAogICAgICAgICBnbHlwaEJ1ZmZlci5hZGQoZ2x5cGgs
ICZmb250LCBnbHlwaFdpZHRoKTsKICAgICB9CiAgICAgaWYgKGhhc0tlcm5pbmdPckxpZ2F0dXJl
cykgewotICAgICAgICBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgMCwgZW5hYmxl
S2VybmluZygpLCByZXF1aXJlc1NoYXBpbmcoKSwgZm9udERlc2NyaXB0aW9uKCkubG9jYWxlKCkp
OworICAgICAgICBmb250LmFwcGx5VHJhbnNmb3JtcyhnbHlwaEJ1ZmZlciwgMCwgZW5hYmxlS2Vy
bmluZygpLCByZXF1aXJlc1NoYXBpbmcoKSwgZm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRMb2Nh
bGUoKSk7CiAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIG9ubHkgdG8gbWF0Y2ggdGhlIHJlc3Vs
dCBvZiB0aGUgc2xvdyBwYXRoLiBTYW1lIGdseXBoIHdpZHRocyBidXQgZGlmZmVyZW50IGZsb2F0
aW5nIHBvaW50IGFyaXRobWVudGljcyBjYW4KICAgICAgICAgLy8gcHJvZHVjZSBkaWZmZXJlbnQg
cnVuIHdpZHRoLgogICAgICAgICBmbG9hdCBydW5XaWR0aERpZmZlcmVuY2VXaXRoVHJhbnNmb3Jt
QXBwbGllZCA9IC1ydW5XaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKaW5kZXggOGViNDQ3MTFj
Nzc1Yjg0NjAxZGJlNjUxNjFiMzhmODQwMTI2MDg4Ny4uMTRhOTZmN2Y3MzJlZmI0OWY0N2Y5ODE2
OTE0YTE4NGZlYzIyOTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFNhbWVTaXplQXNGb250Q2FzY2FkZURlc2NyaXB0aW9uIHsKICAgICBjaGFyIGM7
CiAjZW5kaWYKICAgICBBdG9tU3RyaW5nIHN0cmluZzsKKyAgICBBdG9tU3RyaW5nIHN0cmluZzI7
CiAgICAgaW50MTZfdCBmb250U2VsZWN0aW9uUmVxdWVzdFszXTsKICAgICBmbG9hdCBzaXplOwog
ICAgIHVuc2lnbmVkIGJpdGZpZWxkczE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKaW5kZXggNWIwNDA1MmZh
NjU1ZGI4MTgwOTgzMmJlMWYxNTRjMTZjNjI5YjA4ZC4uMGE3ZGYyNTI4ZGFjNjJhOGM1YTg5MGJk
MmRmYTQzMGEyMTRkZDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaApAQCAtMTMyLDcgKzEzMiw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgRm9udFZhcmlhbnRDYXBzIGluaXRpYWxWYXJpYW50Q2Fwcygp
IHsgcmV0dXJuIEZvbnRWYXJpYW50Q2Fwczo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIEZvbnRWYXJp
YW50QWx0ZXJuYXRlcyBpbml0aWFsVmFyaWFudEFsdGVybmF0ZXMoKSB7IHJldHVybiBGb250VmFy
aWFudEFsdGVybmF0ZXM6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBGb250T3B0aWNhbFNpemluZyBp
bml0aWFsT3B0aWNhbFNpemluZygpIHsgcmV0dXJuIEZvbnRPcHRpY2FsU2l6aW5nOjpFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxMb2NhbGUoKSB7IHJldHVy
biBudWxsQXRvbSgpOyB9CisgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxTcGVj
aWZpZWRMb2NhbGUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVm
Q291bnRlZEFycmF5PEF0b21TdHJpbmc+IG1fZmFtaWxpZXMgeyAxIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcAppbmRleCA4
YTkyNGY5YTY1MGM0NGQ3ZWYwNTg3OWFkM2ZlNTE3NWUyZmQwODk2Li45OWM1N2Y0NzMyZWRjMDY4
YzcyZGJhYWRkODY1N2FhOGU3NmZkODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8Y29udGFjdEBuaWNrc2hhbmtz
LmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgLSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIgogI2lu
Y2x1ZGUgIkxvY2FsZVRvU2NyaXB0TWFwcGluZy5oIgorI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY1LDEwICs2Niw0MiBAQCBGb250RGVzY3Jp
cHRpb246OkZvbnREZXNjcmlwdGlvbigpCiB7CiB9CiAKLXZvaWQgRm9udERlc2NyaXB0aW9uOjpz
ZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQorc3RhdGljIEF0b21TdHJpbmcgY29t
cHV0ZVNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpCiB7Ci0gICAgbV9sb2NhbGUgPSBsb2NhbGU7
Ci0gICAgbV9zY3JpcHQgPSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKG1fbG9j
YWxlKTsKKyAgICBmb3IgKGF1dG8mIGxhbmd1YWdlIDogdXNlclByZWZlcnJlZExhbmd1YWdlcygp
KSB7CisgICAgICAgIGlmIChzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxhbmd1
YWdlLCAiemgtIikpCisgICAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2U7CisgICAgfQorICAgIHJl
dHVybiBBdG9tU3RyaW5nKCJ6aC1oYW5zIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOyAvLyBXZSBoYXZlIG5vIHNpZ25hbC4gUGljayBvbmUgb3B0aW9uIGFyYml0cmFyaWx5Lgor
fQorCitzdGF0aWMgQXRvbVN0cmluZyYgY2FjaGVkU3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc3BlY2lhbGl6ZWRDaGlu
ZXNlTG9jYWxlOworICAgIHJldHVybiBzcGVjaWFsaXplZENoaW5lc2VMb2NhbGUuZ2V0KCk7Cit9
CisKK3N0YXRpYyB2b2lkIGZvbnREZXNjcmlwdGlvbkxhbmd1YWdlQ2hhbmdlZCh2b2lkKikKK3sK
KyAgICBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA9IGNvbXB1dGVTcGVjaWFsaXpl
ZENoaW5lc2VMb2NhbGUoKTsKK30KKworc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHNwZWNpYWxp
emVkQ2hpbmVzZUxvY2FsZSgpCit7CisgICAgYXV0byYgbG9jYWxlID0gY2FjaGVkU3BlY2lhbGl6
ZWRDaGluZXNlTG9jYWxlKCk7CisgICAgaWYgKGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2Fs
ZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIHN0YXRpYyBjaGFyIGZvck5vbk51bGxQb2ludGVyOwor
ICAgICAgICBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKCZmb3JOb25OdWxsUG9pbnRlciwgJmZv
bnREZXNjcmlwdGlvbkxhbmd1YWdlQ2hhbmdlZCk7IC8vIFdlIHdpbGwgbmV2ZXIgcmVtb3ZlIHRo
ZSBvYnNlcnZlciwgc28gYWxsIHdlIG5lZWQgaXMgYSBub24tbnVsbCBwb2ludGVyLgorICAgICAg
ICBmb250RGVzY3JpcHRpb25MYW5ndWFnZUNoYW5nZWQobnVsbHB0cik7CisgICAgfQorICAgIHJl
dHVybiBsb2NhbGU7Cit9CisKK3ZvaWQgRm9udERlc2NyaXB0aW9uOjpzZXRTcGVjaWZpZWRMb2Nh
bGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxlKQoreworICAgIG1fc3BlY2lmaWVkTG9jYWxlID0g
bG9jYWxlOworICAgIG1fc2NyaXB0ID0gbG9jYWxlVG9TY3JpcHRDb2RlRm9yRm9udFNlbGVjdGlv
bihtX3NwZWNpZmllZExvY2FsZSk7CisgICAgbV9sb2NhbGUgPSBtX3NjcmlwdCA9PSBVU0NSSVBU
X0hBTiA/IHNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpIDogbV9zcGVjaWZpZWRMb2NhbGU7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IDFlNmZjNzQ2ZTkyNzAwY2I4MjViMDcx
MGFhM2ViZjEzMjY5MDZkY2IuLmZkNWYyYzE0NjJlOTI2YzZhOGVhNGEwMDFhZTBiOWY5ZGVmZjFh
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5oCkBAIC01MSw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBGb250UmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Rm9udFJlbmRlcmlu
Z01vZGU+KG1fcmVuZGVyaW5nTW9kZSk7IH0KICAgICBUZXh0UmVuZGVyaW5nTW9kZSB0ZXh0UmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRSZW5kZXJpbmdNb2Rl
PihtX3RleHRSZW5kZXJpbmcpOyB9CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VVNjcmlwdENvZGU+KG1fc2NyaXB0KTsgfQotICAgIGNvbnN0IEF0
b21TdHJpbmcmIGxvY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxlOyB9CisgICAgY29uc3Qg
QXRvbVN0cmluZyYgY29tcHV0ZWRMb2NhbGUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsZTsgfSAv
LyBUaGlzIGlzIHdoYXQgeW91IHNob3VsZCBiZSB1c2luZyBmb3IgdGhpbmdzIGxpa2UgdGV4dCBz
aGFwaW5nIGFuZCBmb250IGZhbGxiYWNrCisgICAgY29uc3QgQXRvbVN0cmluZyYgc3BlY2lmaWVk
TG9jYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpZWRMb2NhbGU7IH0gLy8gVGhpcyBpcyB3
aGF0IHlvdSBzaG91bGQgYmUgdXNpbmcgZm9yIHdlYi1leHBvc2VkIHRoaW5ncyBsaWtlIC13ZWJr
aXQtbG9jYWxlCiAKICAgICBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxGb250T3JpZW50YXRpb24+KG1fb3JpZW50YXRpb24pOyB9CiAgICAg
Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbiBub25DSktHbHlwaE9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbj4obV9ub25DSktHbHlwaE9y
aWVudGF0aW9uKTsgfQpAQCAtMTA2LDcgKzEwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9y
aWVudGF0aW9uKEZvbnRPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9yaWVudGF0aW9uKTsgfQogICAgIHZvaWQgc2V0Tm9uQ0pL
R2x5cGhPcmllbnRhdGlvbihOb25DSktHbHlwaE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1f
bm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcmllbnRhdGlv
bik7IH0KICAgICB2b2lkIHNldFdpZHRoVmFyaWFudChGb250V2lkdGhWYXJpYW50IHdpZHRoVmFy
aWFudCkgeyBtX3dpZHRoVmFyaWFudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih3aWR0aFZhcmlh
bnQpOyB9IC8vIE1ha2Ugc3VyZSBuZXcgY2FsbGVycyBvZiB0aGlzIHN5bmMgd2l0aCBGb250UGxh
dGZvcm1EYXRhOjppc0ZvclRleHRDb21iaW5lKCkhCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRMb2NhbGUoY29uc3QgQXRvbVN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3BlY2lmaWVkTG9jYWxlKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICB2b2lkIHNldEZlYXR1cmVT
ZXR0aW5ncyhGb250RmVhdHVyZVNldHRpbmdzJiYgc2V0dGluZ3MpIHsgbV9mZWF0dXJlU2V0dGlu
Z3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsgfQogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAg
ICAgdm9pZCBzZXRWYXJpYXRpb25TZXR0aW5ncyhGb250VmFyaWF0aW9uU2V0dGluZ3MmJiBzZXR0
aW5ncykgeyBtX3ZhcmlhdGlvblNldHRpbmdzID0gV1RGTW92ZShzZXR0aW5ncyk7IH0KQEAgLTE0
NCw2ICsxNDUsNyBAQCBwcml2YXRlOgogICAgIEZvbnRGZWF0dXJlU2V0dGluZ3MgbV9mZWF0dXJl
U2V0dGluZ3M7CiAgICAgRm9udFZhcmlhdGlvblNldHRpbmdzIG1fdmFyaWF0aW9uU2V0dGluZ3M7
CiAgICAgQXRvbVN0cmluZyBtX2xvY2FsZTsKKyAgICBBdG9tU3RyaW5nIG1fc3BlY2lmaWVkTG9j
YWxlOwogCiAgICAgRm9udFNlbGVjdGlvblJlcXVlc3QgbV9mb250U2VsZWN0aW9uUmVxdWVzdDsK
ICAgICBmbG9hdCBtX2NvbXB1dGVkU2l6ZSB7IDAgfTsgLy8gQ29tcHV0ZWQgc2l6ZSBhZGp1c3Rl
ZCBmb3IgdGhlIG1pbmltdW0gZm9udCBzaXplIGFuZCB0aGUgem9vbSBmYWN0b3IuCkBAIC0xODMs
NyArMTg1LDcgQEAgaW5saW5lIGJvb2wgRm9udERlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgICAgICYmIG1fb3JpZW50YXRpb24g
PT0gb3RoZXIubV9vcmllbnRhdGlvbgogICAgICAgICAmJiBtX25vbkNKS0dseXBoT3JpZW50YXRp
b24gPT0gb3RoZXIubV9ub25DSktHbHlwaE9yaWVudGF0aW9uCiAgICAgICAgICYmIG1fd2lkdGhW
YXJpYW50ID09IG90aGVyLm1fd2lkdGhWYXJpYW50Ci0gICAgICAgICYmIG1fbG9jYWxlID09IG90
aGVyLm1fbG9jYWxlCisgICAgICAgICYmIG1fc3BlY2lmaWVkTG9jYWxlID09IG90aGVyLm1fc3Bl
Y2lmaWVkTG9jYWxlCiAgICAgICAgICYmIG1fZmVhdHVyZVNldHRpbmdzID09IG90aGVyLm1fZmVh
dHVyZVNldHRpbmdzCiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICAgICAgJiYgbV92
YXJpYXRpb25TZXR0aW5ncyA9PSBvdGhlci5tX3ZhcmlhdGlvblNldHRpbmdzCkBAIC0yMTYsNyAr
MjE4LDcgQEAgdm9pZCBGb250RGVzY3JpcHRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogI2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCiAgICAgZW5jb2RlciA8PCB2YXJpYXRp
b25TZXR0aW5ncygpOwogI2VuZGlmCi0gICAgZW5jb2RlciA8PCBsb2NhbGUoKTsKKyAgICBlbmNv
ZGVyIDw8IGNvbXB1dGVkTG9jYWxlKCk7CiAgICAgZW5jb2RlciA8PCBpdGFsaWMoKTsKICAgICBl
bmNvZGVyIDw8IHN0cmV0Y2goKTsKICAgICBlbmNvZGVyIDw8IHdlaWdodCgpOwpAQCAtNDEyLDcg
KzQxNCw3IEBAIE9wdGlvbmFsPEZvbnREZXNjcmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRWYXJpYXRpb25TZXR0aW5ncyhXVEZNb3ZlKCp2YXJpYXRpb25TZXR0
aW5ncykpOwogI2VuZGlmCi0gICAgZm9udERlc2NyaXB0aW9uLnNldExvY2FsZSgqbG9jYWxlKTsK
KyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkTG9jYWxlKCpsb2NhbGUpOwogICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRJdGFsaWMoKml0YWxpYyk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNl
dFN0cmV0Y2goKnN0cmV0Y2gpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoKndlaWdo
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0
b3IuY3BwCmluZGV4IDg5ZmI5NTBiYjUwNjA2YjYxZTU3MmJmYWFjZDI3NGJiMTMzODdhYWQuLmUz
MDA3ZGE4OTYyODg4ZjNlYjc0MjkxMDBhYTMzODc0NmI0ZjRhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0xMTMsNyAr
MTEzLDcgQEAgaW5saW5lIGZsb2F0IFdpZHRoSXRlcmF0b3I6OmFwcGx5Rm9udFRyYW5zZm9ybXMo
R2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBib29sIGwKICAgICBpZiAoIWx0cikKICAgICAgICAg
Z2x5cGhCdWZmZXItPnJldmVyc2UobGFzdEdseXBoQ291bnQsIGdseXBoQnVmZmVyU2l6ZSAtIGxh
c3RHbHlwaENvdW50KTsKIAotICAgIGZvbnQtPmFwcGx5VHJhbnNmb3JtcygqZ2x5cGhCdWZmZXIs
IGxhc3RHbHlwaENvdW50LCBtX2VuYWJsZUtlcm5pbmcsIG1fcmVxdWlyZXNTaGFwaW5nLCBtX2Zv
bnQtPmZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpKTsKKyAgICBmb250LT5hcHBseVRyYW5zZm9y
bXMoKmdseXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwgbV9lbmFibGVLZXJuaW5nLCBtX3JlcXVp
cmVzU2hhcGluZywgbV9mb250LT5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2FsZSgpKTsK
ICAgICBnbHlwaEJ1ZmZlclNpemUgPSBnbHlwaEJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gbGFzdEdseXBoQ291bnQ7IGkgPCBnbHlwaEJ1ZmZlclNpemU7ICsraSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNo
ZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBmOGNkYjRhZDExNGQwZGY1OWM0ZTFlYjMwNjg2Y2Zm
MGU1ZjExMzk3Li5hYThjNTJmNWRkYzJjYzM3NjM3MjJmY2M3NWMxM2I5ZWFiMWQ3MzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xNDY1LDcgKzE0NjUsNyBAQCBSZWZQdHI8Rm9udD4g
Rm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBkZXNjcgogICAgIGlmICghZnVsbE5hbWUuaXNFbXB0eSgpKQogICAgICAgICBtX2ZvbnRO
YW1lc1JlcXVpcmluZ1N5c3RlbUZhbGxiYWNrRm9yUHJld2FybWluZy5hZGQoZnVsbE5hbWUpOwog
Ci0gICAgYXV0byByZXN1bHQgPSBsb29rdXBGYWxsYmFja0ZvbnQocGxhdGZvcm1EYXRhLmZvbnQo
KSwgZGVzY3JpcHRpb24ud2VpZ2h0KCksIGRlc2NyaXB0aW9uLmxvY2FsZSgpLCBkZXNjcmlwdGlv
bi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbG9va3VwRmFsbGJhY2tGb250KHBsYXRmb3JtRGF0YS5mb250KCks
IGRlc2NyaXB0aW9uLndlaWdodCgpLCBkZXNjcmlwdGlvbi5jb21wdXRlZExvY2FsZSgpLCBkZXNj
cmlwdGlvbi5zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cygpLCBjaGFyYWN0ZXJzLCBsZW5n
dGgpOwogICAgIHJlc3VsdCA9IHByZXBhcmVQbGF0Zm9ybUZvbnQocmVzdWx0LmdldCgpLCBkZXNj
cmlwdGlvbiwgbnVsbHB0ciwgeyB9KTsKIAogICAgIGlmICghcmVzdWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwCmluZGV4IGFiYzU5YTQ4NjgwNmJlMjE1MzBlMzk3ZmEzYjdiYzdlNDE2
ZDQwMGQuLjUxN2E3ZTk0OWViMDBhMzVmMWI0NGVlYmZhYzE1ZjcxNWU5NDE3ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNjcmlwdGlv
bkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlN5
c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCiAjaW5jbHVkZSA8bXV0ZXg+Ci0jaW5jbHVkZSA8
d3RmL0xhbmd1YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ1LDU0ICsxNDQs
MjMgQEAgRm9udEZhbWlseVNwZWNpZmljYXRpb24gRm9udENhc2NhZGVEZXNjcmlwdGlvbjo6ZWZm
ZWN0aXZlRmFtaWx5QXQodW5zaWduZWQgaW5kZXgKIAogI2VuZGlmIC8vIFVTRShQTEFURk9STV9T
WVNURU1fRkFMTEJBQ0tfTElTVCkKIAotc3RhdGljIFN0cmluZyBjb21wdXRlU3BlY2lhbGl6ZWRD
aGluZXNlTG9jYWxlKCkKLXsKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFu
Z3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAgIGZvciAoYXV0byYgbGFuZ3Vh
Z2UgOiBwcmVmZXJyZWRMYW5ndWFnZXMpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobGFuZ3VhZ2UsICJ6aCIpIHx8IHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobGFuZ3VhZ2UsICJ6aC0iKSkKLSAgICAgICAgICAgIHJldHVybiBsYW5ndWFnZTsKLSAgICB9
Ci0gICAgcmV0dXJuICJ6aC1oYW5zIl9zdHI7IC8vIFdlIGhhdmUgbm8gc2lnbmFsLiBQaWNrIG9u
ZSBvcHRpb24gYXJiaXRyYXJpbHkuCi19Ci0KLXN0YXRpYyBTdHJpbmcmIGNhY2hlZFNwZWNpYWxp
emVkQ2hpbmVzZUxvY2FsZSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4g
c3BlY2lhbGl6ZWRDaGluZXNlTG9jYWxlOwotICAgIHJldHVybiBzcGVjaWFsaXplZENoaW5lc2VM
b2NhbGUuZ2V0KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGxhbmd1YWdlQ2hhbmdlZCh2b2lkKikKLXsK
LSAgICBjYWNoZWRTcGVjaWFsaXplZENoaW5lc2VMb2NhbGUoKSA9IGNvbXB1dGVTcGVjaWFsaXpl
ZENoaW5lc2VMb2NhbGUoKTsKLX0KLQogQXRvbVN0cmluZyBGb250RGVzY3JpcHRpb246OnBsYXRm
b3JtUmVzb2x2ZUdlbmVyaWNGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0LCBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbGUsIGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseU5hbWUpCiB7CiAgICAgQVNTRVJU
KChsb2NhbGUuaXNOdWxsKCkgJiYgc2NyaXB0ID09IFVTQ1JJUFRfQ09NTU9OKSB8fCAhbG9jYWxl
LmlzTnVsbCgpKTsKICAgICBpZiAoc2NyaXB0ID09IFVTQ1JJUFRfQ09NTU9OKQogICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKIAotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
LSAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKLSAgICAgICAgc3RhdGljIGNoYXIg
ZHVtbXk7Ci0gICAgICAgIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIoJmR1bW15LCAmbGFuZ3Vh
Z2VDaGFuZ2VkKTsgLy8gV2Ugd2lsbCBuZXZlciByZW1vdmUgdGhlIG9ic2VydmVyLCBzbyBhbGwg
d2UgbmVlZCBpcyBhIG5vbi1udWxsIHBvaW50ZXIuCi0gICAgICAgIGxhbmd1YWdlQ2hhbmdlZChu
dWxscHRyKTsKLSAgICB9KTsKLQotICAgIC8vIEZJWE1FOiBEZWxldGUgdGhpcyBvbmNlIDxyZGFy
Oi8vcHJvYmxlbS80NzY4MjU3Nz4gaXMgZml4ZWQuCi0gICAgYXV0byYgdXNlZExvY2FsZSA9IHNj
cmlwdCA9PSBVU0NSSVBUX0hBTiA/IGNhY2hlZFNwZWNpYWxpemVkQ2hpbmVzZUxvY2FsZSgpIDog
bG9jYWxlLnN0cmluZygpOwotCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgc3lzdGVtIGZvbnQgZGF0
YWJhc2UgdG8gaGFuZGxlIHN0YW5kYXJkRmFtaWx5CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gc2Vy
aWZGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2lu
Z2xldG9uKCkuc2VyaWZGYW1pbHkodXNlZExvY2FsZSk7CisgICAgICAgIHJldHVybiBTeXN0ZW1G
b250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuc2VyaWZGYW1pbHkobG9jYWxlLnN0cmlu
ZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBzYW5zU2VyaWZGYW1pbHkpCi0gICAgICAgIHJl
dHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuc2Fuc1NlcmlmRmFt
aWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQ6OnNpbmdsZXRvbigpLnNhbnNTZXJpZkZhbWlseShsb2NhbGUuc3RyaW5nKCkpOwogICAgIGlm
IChmYW1pbHlOYW1lID09IGN1cnNpdmVGYW1pbHkpCi0gICAgICAgIHJldHVybiBTeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkuY3Vyc2l2ZUZhbWlseSh1c2VkTG9jYWxlKTsK
KyAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzaW5nbGV0b24oKS5j
dXJzaXZlRmFtaWx5KGxvY2FsZS5zdHJpbmcoKSk7CiAgICAgaWYgKGZhbWlseU5hbWUgPT0gZmFu
dGFzeUZhbWlseSkKLSAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Ojpz
aW5nbGV0b24oKS5mYW50YXN5RmFtaWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lz
dGVtRm9udERhdGFiYXNlQ29yZVRleHQ6OnNpbmdsZXRvbigpLmZhbnRhc3lGYW1pbHkobG9jYWxl
LnN0cmluZygpKTsKICAgICBpZiAoZmFtaWx5TmFtZSA9PSBtb25vc3BhY2VGYW1pbHkpCi0gICAg
ICAgIHJldHVybiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6c2luZ2xldG9uKCkubW9ub3Nw
YWNlRmFtaWx5KHVzZWRMb2NhbGUpOworICAgICAgICByZXR1cm4gU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQ6OnNpbmdsZXRvbigpLm1vbm9zcGFjZUZhbWlseShsb2NhbGUuc3RyaW5nKCkpOwog
CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VD
b3JlVGV4dC5jcHAKaW5kZXggMmZiODljNGIyY2RiYWEwODdiMzVhMGQyYzlkMDc0YWU3NTBiNzc2
MS4uMmYwYjQ0ZjE2Nzk0YTU0YzcyMDUyZjAwNDRmMDc2MWMwZWE5N2Y2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFZlY3Rv
cjxSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4+IFN5c3RlbUZvbnREYXRhYmFzZUNvcmVU
ZXh0Ojpjb21wdXRlQ2FzY2FkCiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dDo6Q2FzY2FkZUxp
c3RQYXJhbWV0ZXJzIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0OjpzeXN0ZW1Gb250UGFyYW1l
dGVycyhjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5n
JiBmYW1pbHlOYW1lLCBTeXN0ZW1Gb250S2luZCBzeXN0ZW1Gb250S2luZCwgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCiB7CiAgICAgQ2FzY2FkZUxpc3RQ
YXJhbWV0ZXJzIHJlc3VsdDsKLSAgICByZXN1bHQubG9jYWxlID0gZGVzY3JpcHRpb24ubG9jYWxl
KCk7CisgICAgcmVzdWx0LmxvY2FsZSA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkTG9jYWxlKCk7CiAg
ICAgcmVzdWx0LnNpemUgPSBkZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKTsKICAgICByZXN1bHQu
aXRhbGljID0gaXNJdGFsaWMoZGVzY3JpcHRpb24uaXRhbGljKCkpOwogICAgIHJlc3VsdC5hbGxv
d1VzZXJJbnN0YWxsZWRGb250cyA9IGFsbG93VXNlckluc3RhbGxlZEZvbnRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlckNvcmVUZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDA3YWRlNmI2NWExZTI1NzQwMzU5
MTc4ODQwMTAzNDA4MzZjMTVmMjcuLjZmZjBlMDI0YjBhNjM0MTM0NTgzMzZjNzZjNTMyODU5ZGVl
M2Y4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTEy
OCwxMSArMTI4LDExIEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxl
eFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgIGZvbnQgPSBt
X2ZvbnQuZmFsbGJhY2tSYW5nZXNBdCgwKS5mb250Rm9yQ2hhcmFjdGVyKGJhc2VDaGFyYWN0ZXIp
OwogICAgICAgICBpZiAoIWZvbnQpCiAgICAgICAgICAgICBmb250ID0gJm1fZm9udC5mYWxsYmFj
a1Jhbmdlc0F0KDApLmZvbnRGb3JGaXJzdFJhbmdlKCk7Ci0gICAgICAgIHN0cmluZ0F0dHJpYnV0
ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIGZvbnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQuZW5hYmxlS2Vybmlu
ZygpLCBmb250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpLCBtX2ZvbnQuZm9udERlc2Ny
aXB0aW9uKCkubG9jYWxlKCkpLmdldCgpKSk7CisgICAgICAgIHN0cmluZ0F0dHJpYnV0ZXMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIGZvbnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQuZW5hYmxlS2VybmluZygpLCBm
b250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpLCBtX2ZvbnQuZm9udERlc2NyaXB0aW9u
KCkuY29tcHV0ZWRMb2NhbGUoKSkuZ2V0KCkpKTsKICAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3
aGljaCBmb250IHNob3VsZCBiZSB1c2VkIHRvIHJlbmRlciB0aGlzIGdyYXBoZW1lIGNsdXN0ZXIs
IHNvIGVuYWJsZSBDb3JlVGV4dCdzIGZhbGxiYWNrIG1lY2hhbmlzbSBieSB1c2luZyB0aGUgQ1RG
b250IHdoaWNoIGRvZXNuJ3QgaGF2ZSBDb3JlVGV4dCdzIGZhbGxiYWNrIGRpc2FibGVkLgogICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb25zdF9jYXN0PENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+KHN0cmluZ0F0dHJpYnV0ZXMuZ2V0KCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udC0+
cGxhdGZvcm1EYXRhKCkuZm9udCgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgc3RyaW5nQXR0cmli
dXRlcyA9IGZvbnQtPmdldENGU3RyaW5nQXR0cmlidXRlcyhtX2ZvbnQuZW5hYmxlS2VybmluZygp
LCBmb250LT5wbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpLCBtX2ZvbnQuZm9udERlc2NyaXB0
aW9uKCkubG9jYWxlKCkpOworICAgICAgICBzdHJpbmdBdHRyaWJ1dGVzID0gZm9udC0+Z2V0Q0ZT
dHJpbmdBdHRyaWJ1dGVzKG1fZm9udC5lbmFibGVLZXJuaW5nKCksIGZvbnQtPnBsYXRmb3JtRGF0
YSgpLm9yaWVudGF0aW9uKCksIG1fZm9udC5mb250RGVzY3JpcHRpb24oKS5jb21wdXRlZExvY2Fs
ZSgpKTsKIAogICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCmluZGV4IDY3NmMxMTJiZGI3MjhhYmNkMDg3NGE2MDgz
Y2Q5Y2UwOTZiNjc0YmMuLmJiY2I1YmVlYTkyM2E4MDk5Y2ZjMWU1NGJlMWRlYzkyMzM0ZGE0OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcApAQCAtMzgwLDcgKzM4
MCw3IEBAIFN0cmluZyBSZW5kZXJRdW90ZTo6Y29tcHV0ZVRleHQoKSBjb25zdAogICAgIGNhc2Ug
UXVvdGVUeXBlOjpDbG9zZVF1b3RlOgogICAgICAgICBpZiAoY29uc3QgUXVvdGVzRGF0YSogcXVv
dGVzID0gc3R5bGUoKS5xdW90ZXMoKSkKICAgICAgICAgICAgIHJldHVybiBpc09wZW5RdW90ZSA/
IHF1b3Rlcy0+b3BlblF1b3RlKG1fZGVwdGgpLmltcGwoKSA6IHF1b3Rlcy0+Y2xvc2VRdW90ZSht
X2RlcHRoKS5pbXBsKCk7Ci0gICAgICAgIGlmIChjb25zdCBRdW90ZXNGb3JMYW5ndWFnZSogcXVv
dGVzID0gcXVvdGVzRm9yTGFuZ3VhZ2Uoc3R5bGUoKS5sb2NhbGUoKSkpCisgICAgICAgIGlmIChj
b25zdCBRdW90ZXNGb3JMYW5ndWFnZSogcXVvdGVzID0gcXVvdGVzRm9yTGFuZ3VhZ2Uoc3R5bGUo
KS5zcGVjaWZpZWRMb2NhbGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nRm9yUXVvdGVD
aGFyYWN0ZXIoaXNPcGVuUXVvdGUgPyAobV9kZXB0aCA/IHF1b3Rlcy0+b3BlbjIgOiBxdW90ZXMt
Pm9wZW4xKSA6IChtX2RlcHRoID8gcXVvdGVzLT5jbG9zZTIgOiBxdW90ZXMtPmNsb3NlMSkpOwog
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoZSBkZWZhdWx0IGJlIHRoZSBxdW90ZXMgZm9yICJl
biIgcmF0aGVyIHRoYW4gc3RyYWlnaHQgcXVvdGVzPwogICAgICAgICByZXR1cm4gbV9kZXB0aCA/
IGFwb3N0cm9waGVTdHJpbmcoKSA6IHF1b3RhdGlvbk1hcmtTdHJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCAxY2NmOTY3MjRlNGUzZDFhMTM3YWUyOTgx
YmIzNTQ5OTY3NWQyMDllLi5lOWZjZTg4ZTVhZmI2NjAyYzg5ZGRkM2VhODQxNzdmNzUxMmJkZjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC03MzksNyArNzM5
LDcgQEAgc3RhdGljIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRoKFJlbmRlclRleHQmIHJlbmRl
cmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUKICAgICBWZWN0b3I8aW50LCA4PiBoeXBoZW5M
b2NhdGlvbnM7CiAgICAgQVNTRVJUKHdvcmQubGVuZ3RoKCkgPj0gbWluaW11bVN1ZmZpeExlbmd0
aCk7CiAgICAgdW5zaWduZWQgaHlwaGVuTG9jYXRpb24gPSB3b3JkLmxlbmd0aCgpIC0gbWluaW11
bVN1ZmZpeExlbmd0aDsKLSAgICB3aGlsZSAoKGh5cGhlbkxvY2F0aW9uID0gbGFzdEh5cGhlbkxv
Y2F0aW9uKHdvcmQsIGh5cGhlbkxvY2F0aW9uLCBzdHlsZS5sb2NhbGUoKSkpID49IHN0ZDo6bWF4
KG1pbmltdW1QcmVmaXhMZW5ndGgsIDFVKSkKKyAgICB3aGlsZSAoKGh5cGhlbkxvY2F0aW9uID0g
bGFzdEh5cGhlbkxvY2F0aW9uKHdvcmQsIGh5cGhlbkxvY2F0aW9uLCBzdHlsZS5jb21wdXRlZExv
Y2FsZSgpKSkgPj0gc3RkOjptYXgobWluaW11bVByZWZpeExlbmd0aCwgMVUpKQogICAgICAgICBo
eXBoZW5Mb2NhdGlvbnMuYXBwZW5kKGh5cGhlbkxvY2F0aW9uKTsKIAogICAgIGlmIChoeXBoZW5M
b2NhdGlvbnMuaXNFbXB0eSgpKQpAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNv
bnN0IEZvCiAgICAgYXV0byYgc3RyaW5nID0gdGV4dCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKICAgICBhdXRvIGl0ZXJhdG9yTW9kZSA9IG1hcExpbmVCcmVha1Rv
SXRlcmF0b3JNb2RlKHN0eWxlLmxpbmVCcmVhaygpKTsKLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0
b3IgYnJlYWtJdGVyYXRvcihzdHJpbmcsIHN0eWxlLmxvY2FsZSgpLCBpdGVyYXRvck1vZGUpOwor
ICAgIExhenlMaW5lQnJlYWtJdGVyYXRvciBicmVha0l0ZXJhdG9yKHN0cmluZywgc3R5bGUuY29t
cHV0ZWRMb2NhbGUoKSwgaXRlcmF0b3JNb2RlKTsKICAgICBib29sIG5lZWRzV29yZFNwYWNpbmcg
PSBmYWxzZTsKICAgICBib29sIGlnbm9yaW5nU3BhY2VzID0gZmFsc2U7CiAgICAgYm9vbCBpc1Nw
YWNlID0gZmFsc2U7CkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8K
ICAgICBmbG9hdCBtYXhXb3JkV2lkdGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
KCk7CiAgICAgdW5zaWduZWQgbWluaW11bVByZWZpeExlbmd0aCA9IDA7CiAgICAgdW5zaWduZWQg
bWluaW11bVN1ZmZpeExlbmd0aCA9IDA7Ci0gICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSkpIHsKKyAgICBpZiAoc3R5
bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgY2FuSHlwaGVuYXRlKHN0eWxlLmNvbXB1
dGVkTG9jYWxlKCkpKSB7CiAgICAgICAgIG1heFdvcmRXaWR0aCA9IDA7CiAKICAgICAgICAgLy8g
TWFwICdoeXBoZW5hdGUtbGltaXQte2JlZm9yZSxhZnRlcn06IGF1dG87JyB0byAyLgpAQCAtMTE0
Myw5ICsxMTQzLDkgQEAgU3RyaW5nIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVUNoYXIgcHIKICAgICBjYXNlIFRleHRUcmFu
c2Zvcm06OkNhcGl0YWxpemU6CiAgICAgICAgIHJldHVybiBjYXBpdGFsaXplKHRleHQsIHByZXZp
b3VzQ2hhcmFjdGVyKTsgLy8gRklYTUU6IE5lZWQgdG8gdGFrZSBsb2NhbGUgaW50byBhY2NvdW50
LgogICAgIGNhc2UgVGV4dFRyYW5zZm9ybTo6VXBwZXJjYXNlOgotICAgICAgICByZXR1cm4gdGV4
dC5jb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKHN0eWxlLmxvY2FsZSgpKTsKKyAgICAgICAg
cmV0dXJuIHRleHQuY29udmVydFRvVXBwZXJjYXNlV2l0aExvY2FsZShzdHlsZS5jb21wdXRlZExv
Y2FsZSgpKTsKICAgICBjYXNlIFRleHRUcmFuc2Zvcm06Okxvd2VyY2FzZToKLSAgICAgICAgcmV0
dXJuIHRleHQuY29udmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZShzdHlsZS5sb2NhbGUoKSk7Cisg
ICAgICAgIHJldHVybiB0ZXh0LmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoc3R5bGUuY29t
cHV0ZWRMb2NhbGUoKSk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiB0ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bQppbmRleCAxMmE5ZGEyMzNkNDMxZTg3MGQ2ZjVmMDY2N2IwMGI2MTMxZGZkOGQ1Li5mZmIwZmIx
ZTUxMjQ1MjU4Y2UyZjQxNTVhZjUxMDEyYjY1NGY1NTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQCiAgICAgICAgIGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCwgcGFpbnRSZWN0LndpZHRoKCkpCiAgICAgfSk7CiAK
LSAgICBQS0RyYXdBcHBsZVBheUJ1dHRvbldpdGhDb3JuZXJSYWRpdXMocGFpbnRJbmZvLmNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZShwYWludFJlY3QueCgpLCAtcGFpbnRS
ZWN0Lm1heFkoKSwgcGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSksIDEuMCwg
bGFyZ2VzdENvcm5lclJhZGl1cywgdG9QS1BheW1lbnRCdXR0b25UeXBlKHN0eWxlLmFwcGxlUGF5
QnV0dG9uVHlwZSgpKSwgdG9QS1BheW1lbnRCdXR0b25TdHlsZShzdHlsZS5hcHBsZVBheUJ1dHRv
blN0eWxlKCkpLCBzdHlsZS5sb2NhbGUoKSk7CisgICAgUEtEcmF3QXBwbGVQYXlCdXR0b25XaXRo
Q29ybmVyUmFkaXVzKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIENHUmVj
dE1ha2UocGFpbnRSZWN0LngoKSwgLXBhaW50UmVjdC5tYXhZKCksIHBhaW50UmVjdC53aWR0aCgp
LCBwYWludFJlY3QuaGVpZ2h0KCkpLCAxLjAsIGxhcmdlc3RDb3JuZXJSYWRpdXMsIHRvUEtQYXlt
ZW50QnV0dG9uVHlwZShzdHlsZS5hcHBsZVBheUJ1dHRvblR5cGUoKSksIHRvUEtQYXltZW50QnV0
dG9uU3R5bGUoc3R5bGUuYXBwbGVQYXlCdXR0b25TdHlsZSgpKSwgc3R5bGUuY29tcHV0ZWRMb2Nh
bGUoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0
b3IuY3BwCmluZGV4IGU0NDVkNTYxMjQzYWIyYmVmY2RjMDA2NWQ1OGU2MDdmZmQ5NzJmNDYuLjFl
MjdkNzQ1MTMzYWYyNTMyMzMyMGQ0YTIyN2M2ZDJjOWRmZWJkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZy
YWdtZW50SXRlcmF0b3IuY3BwCkBAIC01MCwxMSArNTAsMTEgQEAgVGV4dEZyYWdtZW50SXRlcmF0
b3I6OlN0eWxlOjpTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLCBrZWVwQWxs
V29yZHNGb3JDSksoc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpLZWVwQWxsKQogICAg
ICwgd29yZFNwYWNpbmcoZm9udC53b3JkU3BhY2luZygpKQogICAgICwgdGFiV2lkdGgoY29sbGFw
c2VXaGl0ZXNwYWNlID8gVGFiU2l6ZSgwKSA6IHN0eWxlLnRhYlNpemUoKSkKLSAgICAsIHNob3Vs
ZEh5cGhlbmF0ZShzdHlsZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6QXV0byAmJiBjYW5IeXBoZW5h
dGUoc3R5bGUubG9jYWxlKCkpKQorICAgICwgc2hvdWxkSHlwaGVuYXRlKHN0eWxlLmh5cGhlbnMo
KSA9PSBIeXBoZW5zOjpBdXRvICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5jb21wdXRlZExvY2FsZSgp
KSkKICAgICAsIGh5cGhlblN0cmluZ1dpZHRoKHNob3VsZEh5cGhlbmF0ZSA/IGZvbnQud2lkdGgo
VGV4dFJ1bihTdHJpbmcoc3R5bGUuaHlwaGVuU3RyaW5nKCkpKSkgOiAwKQogICAgICwgaHlwaGVu
TGltaXRCZWZvcmUoc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpIDwgMCA/IDIgOiBzdHls
ZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCkpCiAgICAgLCBoeXBoZW5MaW1pdEFmdGVyKHN0eWxl
Lmh5cGhlbmF0aW9uTGltaXRBZnRlcigpIDwgMCA/IDIgOiBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0
QWZ0ZXIoKSkKLSAgICAsIGxvY2FsZShzdHlsZS5sb2NhbGUoKSkKKyAgICAsIGxvY2FsZShzdHls
ZS5jb21wdXRlZExvY2FsZSgpKQogewogICAgIGlmIChzdHlsZS5oeXBoZW5hdGlvbkxpbWl0TGlu
ZXMoKSA+IC0xKQogICAgICAgICBoeXBoZW5MaW1pdExpbmVzID0gc3R5bGUuaHlwaGVuYXRpb25M
aW1pdExpbmVzKCk7CkBAIC02Myw3ICs2Myw3IEBAIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHls
ZTo6U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogVGV4dEZyYWdtZW50SXRlcmF0b3I6
OlRleHRGcmFnbWVudEl0ZXJhdG9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKICAgICA6
IG1fZmxvd0NvbnRlbnRzKGZsb3cpCiAgICAgLCBtX2N1cnJlbnRTZWdtZW50KG1fZmxvd0NvbnRl
bnRzLmJlZ2luKCkpCi0gICAgLCBtX2xpbmVCcmVha0l0ZXJhdG9yKG1fY3VycmVudFNlZ21lbnQt
PnRleHQsIGZsb3cuc3R5bGUoKS5sb2NhbGUoKSkKKyAgICAsIG1fbGluZUJyZWFrSXRlcmF0b3Io
bV9jdXJyZW50U2VnbWVudC0+dGV4dCwgZmxvdy5zdHlsZSgpLmNvbXB1dGVkTG9jYWxlKCkpCiAg
ICAgLCBtX3N0eWxlKGZsb3cuc3R5bGUoKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKaW5kZXggNTc0OGQzMWFkNTYzZWViODNiZWMx
MTI5ZWE5M2U5ZjAyZTYyMWExNi4uZDdlYjczYWFkNDkwMDgzOWRkZjMyODBmYzg5YmM4YzQ1YjQ0
ZTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250
ZXh0LmgKQEAgLTY5NSw3ICs2OTUsNyBAQCBpbmxpbmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6Omhh
bmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29yZE1lYXN1cmVtZW50cywgYm9vbAogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGxpbmVTdHlsZShyZW5kZXJUZXh0LCBtX2xpbmVJbmZv
KTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAg
ICAgYm9vbCBpc0ZpeGVkUGl0Y2ggPSBmb250LmlzRml4ZWRQaXRjaCgpOwotICAgIGJvb2wgY2Fu
SHlwaGVuYXRlID0gc3R5bGUuaHlwaGVucygpID09IEh5cGhlbnM6OkF1dG8gJiYgV2ViQ29yZTo6
Y2FuSHlwaGVuYXRlKHN0eWxlLmxvY2FsZSgpKTsKKyAgICBib29sIGNhbkh5cGhlbmF0ZSA9IHN0
eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRvICYmIFdlYkNvcmU6OmNhbkh5cGhlbmF0ZShz
dHlsZS5jb21wdXRlZExvY2FsZSgpKTsKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0U3Rh
cnQgPSBzdHlsZS5oYW5naW5nUHVuY3R1YXRpb24oKS5jb250YWlucyhIYW5naW5nUHVuY3R1YXRp
b246OkZpcnN0KTsKICAgICBib29sIGNhbkhhbmdQdW5jdHVhdGlvbkF0RW5kID0gc3R5bGUuaGFu
Z2luZ1B1bmN0dWF0aW9uKCkuY29udGFpbnMoSGFuZ2luZ1B1bmN0dWF0aW9uOjpMYXN0KTsKICAg
ICBib29sIGNhbkhhbmdTdG9wT3JDb21tYUF0TGluZUVuZCA9IHN0eWxlLmhhbmdpbmdQdW5jdHVh
dGlvbigpLmNvbnRhaW5zKEhhbmdpbmdQdW5jdHVhdGlvbjo6QWxsb3dFbmQpOwpAQCAtNzMxLDcg
KzczMSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dChXb3JkTWVh
c3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAgICAgICAgIG1fcmVuZGVyVGV4dElu
Zm8udGV4dCA9ICZyZW5kZXJUZXh0OwogICAgICAgICBtX3JlbmRlclRleHRJbmZvLmZvbnQgPSAm
Zm9udDsKICAgICAgICAgbV9yZW5kZXJUZXh0SW5mby5sYXlvdXQgPSBmb250LmNyZWF0ZUxheW91
dChyZW5kZXJUZXh0LCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpLCBtX2NvbGxhcHNlV2hpdGVTcGFj
ZSk7Ci0gICAgICAgIG1fcmVuZGVyVGV4dEluZm8ubGluZUJyZWFrSXRlcmF0b3IucmVzZXRTdHJp
bmdBbmRSZWxlYXNlSXRlcmF0b3IocmVuZGVyVGV4dC50ZXh0KCksIHN0eWxlLmxvY2FsZSgpLCBp
dGVyYXRvck1vZGUpOworICAgICAgICBtX3JlbmRlclRleHRJbmZvLmxpbmVCcmVha0l0ZXJhdG9y
LnJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKHJlbmRlclRleHQudGV4dCgpLCBzdHlsZS5j
b21wdXRlZExvY2FsZSgpLCBpdGVyYXRvck1vZGUpOwogICAgIH0gZWxzZSBpZiAobV9yZW5kZXJU
ZXh0SW5mby5sYXlvdXQgJiYgbV9yZW5kZXJUZXh0SW5mby5mb250ICE9ICZmb250KSB7CiAgICAg
ICAgIG1fcmVuZGVyVGV4dEluZm8uZm9udCA9ICZmb250OwogICAgICAgICBtX3JlbmRlclRleHRJ
bmZvLmxheW91dCA9IGZvbnQuY3JlYXRlTGF5b3V0KHJlbmRlclRleHQsIG1fd2lkdGguY3VycmVu
dFdpZHRoKCksIG1fY29sbGFwc2VXaGl0ZVNwYWNlKTsKQEAgLTg3Nyw3ICs4NzcsNyBAQCBpbmxp
bmUgYm9vbCBCcmVha2luZ0NvbnRleHQ6OmhhbmRsZVRleHQoV29yZE1lYXN1cmVtZW50cyYgd29y
ZE1lYXN1cmVtZW50cywgYm9vbAogICAgICAgICAgICAgICAgICAgICAvLyBubyBtb3JlIGNvbnRl
bnQsIGFuZCBhIGh5cGhlbmF0ZWQgc2luZ2xlIHdvcmQgd291bGQgZW5kIHVwIG9uIGEgbGluZSBi
eSBpdHNlbGYuIFRoaXMgbG9va3MKICAgICAgICAgICAgICAgICAgICAgLy8gYmFkIHNvIGp1c3Qg
ZG9uJ3QgYWxsb3cgaXQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5IeXBoZW5hdGUgJiYg
IW1fd2lkdGguZml0c09uTGluZSgpICYmIChtX25leHRPYmplY3QgfHwgIXJlbmRlclRleHQuY29u
dGFpbnNPbmx5SFRNTFdoaXRlc3BhY2UobV9jdXJyZW50Lm9mZnNldCgpLCByZW5kZXJUZXh0LnRl
eHQoKS5sZW5ndGgoKSAtIG1fY3VycmVudC5vZmZzZXQoKSkgfHwgaXNMaW5lRW1wdHkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0cnlIeXBoZW5hdGluZyhyZW5kZXJUZXh0LCBmb250LCBz
dHlsZS5sb2NhbGUoKSwgY29uc2VjdXRpdmVIeXBoZW5hdGVkTGluZXMsIG1fYmxvY2tTdHlsZS5o
eXBoZW5hdGlvbkxpbWl0TGluZXMoKSwgc3R5bGUuaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgpLCBz
dHlsZS5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoKSwgbGFzdFNwYWNlLCBtX2N1cnJlbnQub2Zmc2V0
KCksIG1fd2lkdGguY3VycmVudFdpZHRoKCkgLSBhZGRpdGlvbmFsVGVtcFdpZHRoLCBtX3dpZHRo
LmF2YWlsYWJsZVdpZHRoKCksIGlzRml4ZWRQaXRjaCwgbV9jb2xsYXBzZVdoaXRlU3BhY2UsIGxh
c3RTcGFjZVdvcmRTcGFjaW5nLCBtX2xpbmVCcmVhaywgbV9jdXJyZW50Lm5leHRCcmVha2FibGVQ
b3NpdGlvbigpLCBtX2xpbmVCcmVha2VyLm1faHlwaGVuYXRlZCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0cnlIeXBoZW5hdGluZyhyZW5kZXJUZXh0LCBmb250LCBzdHlsZS5jb21wdXRlZExv
Y2FsZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRMaW5lcywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0
aW9uTGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5hdGlvbkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5
cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3BhY2UsIG1fY3VycmVudC5vZmZzZXQoKSwgbV93
aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9uYWxUZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxh
YmxlV2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2NvbGxhcHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNl
V29yZFNwYWNpbmcsIG1fbGluZUJyZWFrLCBtX2N1cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9u
KCksIG1fbGluZUJyZWFrZXIubV9oeXBoZW5hdGVkKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2xpbmVCcmVha2VyLm1faHlwaGVuYXRlZCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fYXRFbmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIGlubGluZSBib29sIEJyZWFraW5nQ29udGV4
dDo6aGFuZGxlVGV4dChXb3JkTWVhc3VyZW1lbnRzJiB3b3JkTWVhc3VyZW1lbnRzLCBib29sCiAg
ICAgICAgIC8vIG5vIG1vcmUgY29udGVudCwgYW5kIGEgaHlwaGVuYXRlZCBzaW5nbGUgd29yZCB3
b3VsZCBlbmQgdXAgb24gYSBsaW5lIGJ5IGl0c2VsZi4gVGhpcyBsb29rcwogICAgICAgICAvLyBi
YWQgc28ganVzdCBkb24ndCBhbGxvdyBpdC4KICAgICAgICAgaWYgKGNhbkh5cGhlbmF0ZSAmJiAo
bV9uZXh0T2JqZWN0IHx8IGlzTGluZUVtcHR5KSkKLSAgICAgICAgICAgIHRyeUh5cGhlbmF0aW5n
KHJlbmRlclRleHQsIGZvbnQsIHN0eWxlLmxvY2FsZSgpLCBjb25zZWN1dGl2ZUh5cGhlbmF0ZWRM
aW5lcywgbV9ibG9ja1N0eWxlLmh5cGhlbmF0aW9uTGltaXRMaW5lcygpLCBzdHlsZS5oeXBoZW5h
dGlvbkxpbWl0QmVmb3JlKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRBZnRlcigpLCBsYXN0U3Bh
Y2UsIG1fY3VycmVudC5vZmZzZXQoKSwgbV93aWR0aC5jdXJyZW50V2lkdGgoKSAtIGFkZGl0aW9u
YWxUZW1wV2lkdGgsIG1fd2lkdGguYXZhaWxhYmxlV2lkdGgoKSwgaXNGaXhlZFBpdGNoLCBtX2Nv
bGxhcHNlV2hpdGVTcGFjZSwgbGFzdFNwYWNlV29yZFNwYWNpbmcsIG1fbGluZUJyZWFrLCBtX2N1
cnJlbnQubmV4dEJyZWFrYWJsZVBvc2l0aW9uKCksIG1fbGluZUJyZWFrZXIubV9oeXBoZW5hdGVk
KTsKKyAgICAgICAgICAgIHRyeUh5cGhlbmF0aW5nKHJlbmRlclRleHQsIGZvbnQsIHN0eWxlLmNv
bXB1dGVkTG9jYWxlKCksIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzLCBtX2Jsb2NrU3R5bGUu
aHlwaGVuYXRpb25MaW1pdExpbmVzKCksIHN0eWxlLmh5cGhlbmF0aW9uTGltaXRCZWZvcmUoKSwg
c3R5bGUuaHlwaGVuYXRpb25MaW1pdEFmdGVyKCksIGxhc3RTcGFjZSwgbV9jdXJyZW50Lm9mZnNl
dCgpLCBtX3dpZHRoLmN1cnJlbnRXaWR0aCgpIC0gYWRkaXRpb25hbFRlbXBXaWR0aCwgbV93aWR0
aC5hdmFpbGFibGVXaWR0aCgpLCBpc0ZpeGVkUGl0Y2gsIG1fY29sbGFwc2VXaGl0ZVNwYWNlLCBs
YXN0U3BhY2VXb3JkU3BhY2luZywgbV9saW5lQnJlYWssIG1fY3VycmVudC5uZXh0QnJlYWthYmxl
UG9zaXRpb24oKSwgbV9saW5lQnJlYWtlci5tX2h5cGhlbmF0ZWQpOwogCiAgICAgICAgIGlmICgh
aHlwaGVuYXRlZCAmJiBtX2xpbmVCcmVhay5wcmV2aW91c0luU2FtZU5vZGUoKSA9PSBzb2Z0SHlw
aGVuICYmIHN0eWxlLmh5cGhlbnMoKSAhPSBIeXBoZW5zOjpOb25lKSB7CiAgICAgICAgICAgICBo
eXBoZW5hdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKaW5kZXggMWI3NTkyZmViNjUwZDBiM2E2OGVjYjMwZjMzMDEwYjIzZGJiYjg0ZS4u
MjAyYWFkY2FhYzczNjc4ZTAzYjg5NDU5ZmNmOWEyYjM5MDVlZjQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU5Myw3ICs1OTMsOCBAQCBw
dWJsaWM6CiAgICAgc2hvcnQgaHlwaGVuYXRpb25MaW1pdEFmdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlSW5oZXJpdGVkRGF0YS0+aHlwaGVuYXRpb25MaW1pdEFmdGVyOyB9CiAgICAgc2hvcnQg
aHlwaGVuYXRpb25MaW1pdExpbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0
YS0+aHlwaGVuYXRpb25MaW1pdExpbmVzOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYgaHlwaGVu
YXRpb25TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT5oeXBoZW5h
dGlvblN0cmluZzsgfQotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSgpIGNvbnN0IHsgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbigpLmxvY2FsZSgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYg
Y29tcHV0ZWRMb2NhbGUoKSBjb25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb24oKS5jb21wdXRl
ZExvY2FsZSgpOyB9CisgICAgY29uc3QgQXRvbVN0cmluZyYgc3BlY2lmaWVkTG9jYWxlKCkgY29u
c3QgeyByZXR1cm4gZm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkTG9jYWxlKCk7IH0KICAgICBC
b3JkZXJGaXQgYm9yZGVyRml0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qm9yZGVyRml0
PihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5ib3JkZXJGaXQpOyB9CiAgICAgUmVzaXplIHJlc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlc2l6ZT4obV9yYXJlTm9uSW5oZXJpdGVk
RGF0YS0+cmVzaXplKTsgfQogICAgIENvbHVtbkF4aXMgY29sdW1uQXhpcygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PENvbHVtbkF4aXM+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm11bHRp
Q29sLT5heGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApp
bmRleCAwYzIzMjVhNzM1NzU1YWUzNTkwZmIwZmExMzZhNzM1Mjc2NzVmYjk5Li4xYzJhNGI3MzYy
ODQwMzY3OGJmZGFlNDNkNGE2YzczYWJiNTI2MjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtNzUxLDkgKzc1MSw5IEBAIGlubGluZSB2b2lkIEJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRMb2NhbGUoQnVpbGRlclN0YXRlJiBidWlsZGVyU3Rh
dGUsIENTCiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLmZvbnREZXNjcmlwdGlvbigpOwogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBmb250RGVzY3JpcHRpb24u
c2V0TG9jYWxlKG51bGxBdG9tKCkpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lm
aWVkTG9jYWxlKG51bGxBdG9tKCkpOwogICAgIGVsc2UKLSAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldFNwZWNpZmllZExvY2FsZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgp
KTsKICAgICBidWlsZGVyU3RhdGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2Ny
aXB0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZUZvckRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcAppbmRleCBjZWVlZmRmNjJkOGIzNTRlNTc2NGVmODAyNTk5MzQyYTA1NDJl
Nzc0Li5hOTU1MzIwYWVhZGI3N2ZjNDhiYTIzMDBhYjA3MWRhYzFiZGFlZjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIFJlbmRlclN0eWxlIHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiAgICAgZG9jdW1lbnRTdHlsZS5zZXRab29tKCFkb2N1bWVudC5wcmludGluZygp
ID8gcmVuZGVyVmlldy5mcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkgOiAxKTsKICAgICBkb2N1bWVu
dFN0eWxlLnNldFBhZ2VTY2FsZVRyYW5zZm9ybShyZW5kZXJWaWV3LmZyYW1lKCkuZnJhbWVTY2Fs
ZUZhY3RvcigpKTsKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGRvY3VtZW50Rm9udERlc2Ny
aXB0aW9uID0gZG9jdW1lbnRTdHlsZS5mb250RGVzY3JpcHRpb24oKTsKLSAgICBkb2N1bWVudEZv
bnREZXNjcmlwdGlvbi5zZXRMb2NhbGUoZG9jdW1lbnQuY29udGVudExhbmd1YWdlKCkpOworICAg
IGRvY3VtZW50Rm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZExvY2FsZShkb2N1bWVudC5jb250
ZW50TGFuZ3VhZ2UoKSk7CiAgICAgZG9jdW1lbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RG
TW92ZShkb2N1bWVudEZvbnREZXNjcmlwdGlvbikpOwogCiAgICAgLy8gVGhpcyBvdmVycmlkZXMg
YW55IC13ZWJraXQtdXNlci1tb2RpZnkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBpZnJhbWUu
CkBAIC0xMDgsNyArMTA4LDcgQEAgUmVuZGVyU3R5bGUgcmVzb2x2ZUZvckRvY3VtZW50KGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MgPSByZW5k
ZXJWaWV3LmZyYW1lKCkuc2V0dGluZ3MoKTsKIAogICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24g
Zm9udERlc2NyaXB0aW9uOwotICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUoZG9jdW1lbnQu
Y29udGVudExhbmd1YWdlKCkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRMb2Nh
bGUoZG9jdW1lbnQuY29udGVudExhbmd1YWdlKCkpOwogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRS
ZW5kZXJpbmdNb2RlKHNldHRpbmdzLmZvbnRSZW5kZXJpbmdNb2RlKCkpOwogICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRPbmVGYW1pbHkoc3RhbmRhcmRGYW1pbHkpOwogICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRTaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cyhzZXR0aW5ncy5zaG91bGRBbGxvd1Vz
ZXJJbnN0YWxsZWRGb250cygpID8gQWxsb3dVc2VySW5zdGFsbGVkRm9udHM6OlllcyA6IEFsbG93
VXNlckluc3RhbGxlZEZvbnRzOjpObyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTEzY2JjNTcxZTQwMjA2MWM3MTQ4NDMy
NjI2OGY0NWNlNWI3OGY1YS4uNWM2NWE0NjBmYWFiY2VmNTg4ZjYzNGYyYWZiNGU5YjE2Y2VjMWEw
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA2LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgbGFuZz16aCBuZWVkcyB0byBkZWZlciB0
byBzeXN0ZW0gcHJlZmVyZW5jZXMgdG8ga25vdyB3aGV0aGVyIGl0IHNob3VsZCBiZSBzaW1wbGlm
aWVkIG9yIHRyYWRpdGlvbmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTI2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMjI3NjIzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGUg
bmV3IGxvY2FsZSBpc24ndCBleHBvc2VkLgorCisgICAgICAgICogZmFzdC90ZXh0L2xvY2FsZS1n
ZXRDb21wdXRlZFN0eWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0
L2xvY2FsZS1nZXRDb21wdXRlZFN0eWxlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA2LTA5ICBEaWVn
byBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBH
YXJkZW5pbmcsIHVwZGF0ZSBiYXNlbGluZXMgZm9yIG1lZGlhRWxlbWVudEF1ZGlvU291cmNlVG9T
Y3JpcHRQcm9jZXNzb3JUZXN0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4
dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdj
ZWMxMDQ2NjQ2YjY5Mjg0NGUwZjQ2MGU0N2EyNmNjZTRmM2E0YzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgbGFuZz0nemgn
IHJvdW5kLXRyaXBzIHRocm91Z2ggZ2V0Q29tcHV0ZWRTdHlsZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5nZXRQ
cm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIGlzICJ6aCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9sb2NhbGUtZ2V0Q29tcHV0ZWRTdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0ZjU5MWI5
MzNmYzI1NTUyYTRlMzhkYTJhZjA4OTFkZGJiYjg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3RleHQvbG9jYWxlLWdldENvbXB1dGVkU3R5bGUuaHRtbApAQCAtMCwwICsx
LDE0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGxhbmc9InpoIiBpZD0idGFyZ2V0Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBsYW5nPSd6aCcgcm91bmQtdHJpcHMgdGhyb3VnaCBnZXRD
b21wdXRlZFN0eWxlLiIpOworbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUo
dGFyZ2V0KS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWxvY2FsZScpIiwgInpoIik7Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>