<?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>222665</bug_id>
          
          <creation_ts>2021-03-03 10:46:26 -0800</creation_ts>
          <short_desc>Allow CSS font-styling for canvas without RenderStyle</short_desc>
          <delta_ts>2021-03-05 07:06:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735356</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-03 10:46:26 -0800</bug_when>
    <thetext>Currently, resolveForFontRaw requires RenderStyle, not for any good reason beyond the functions it needs to use expect it. It would be good to refactor and remove that dependency to make it easier for Workers in the future. (I suppose it&apos;s also a potential memory/perf improvement)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735362</commentid>
    <comment_count>1</comment_count>
      <attachid>422118</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-03 10:49:49 -0800</bug_when>
    <thetext>Created attachment 422118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735410</commentid>
    <comment_count>2</comment_count>
      <attachid>422128</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-03 11:37:21 -0800</bug_when>
    <thetext>Created attachment 422128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735761</commentid>
    <comment_count>3</comment_count>
      <attachid>422208</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-04 02:32:06 -0800</bug_when>
    <thetext>Created attachment 422208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735810</commentid>
    <comment_count>4</comment_count>
      <attachid>422222</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-04 06:40:11 -0800</bug_when>
    <thetext>Created attachment 422222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735999</commentid>
    <comment_count>5</comment_count>
      <attachid>422222</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-04 13:39:32 -0800</bug_when>
    <thetext>Comment on attachment 422222
Patch

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

&gt; Source/WebCore/css/CSSPrimitiveValue.h:194
&gt; +    static double computeUnzoomedNonCalcLengthDouble(CSSUnitType, double value, CSSPropertyID, const FontMetrics* = nullptr, const FontCascadeDescription* = nullptr, const FontCascadeDescription* rootFontDescription = nullptr, const RenderView* = nullptr);

I worry about the long list of arguments. Is there any way for us to cut that complexity down to size? This is why we end up creating objects to group the context for calls like this.

Also wonder if there’s a more terse way to name these variations.

&gt; Source/WebCore/css/CSSToLengthConversionData.h:78
&gt; +    CSSPropertyID propertyToCompute() const { return m_propertyToCompute ? *m_propertyToCompute : CSSPropertyInvalid; }

Can use valueOr for this sort of thing.

&gt; Source/WebCore/style/StyleFontSizeFunctions.h:28
&gt; +#include &quot;Settings.h&quot;

Really annoying that Settings::Values creates these additional header dependencies. I think we should consider defining SettingsValues at the namespace level to avoid the need for all these additional header includes.

&gt; Source/WebCore/style/StyleFontSizeFunctions.h:41
&gt; +enum class MinimumFontSizeRule {
&gt; +    None,
&gt; +    Absolute,
&gt; +    AbsoluteAndRelative
&gt; +};

Comment on &quot;just moved&quot; code: I may be the only person who feels this way, but I like the one-line versions of this kind of small enum rather than the vertical version.

    enum class MinimumFontSizeRule : uint8_t { None, Absolute, AbsoluteAndRelative };

It’s also a tiny bit helpful, I think, to mark the underlying type uint8_t rather than letting it default to signed 32-bit integer.

&gt; Source/WebCore/style/StyleResolveForFontRaw.cpp:202
&gt; +    // Line height is non-existent on FontCascade, so is left unhandled.

Is there a slightly more precise way to say what we mean by &quot;left unhandled&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736236</commentid>
    <comment_count>6</comment_count>
      <attachid>422350</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-05 01:38:41 -0800</bug_when>
    <thetext>Created attachment 422350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736245</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-05 01:44:51 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.h:194
&gt; &gt; +    static double computeUnzoomedNonCalcLengthDouble(CSSUnitType, double value, CSSPropertyID, const FontMetrics* = nullptr, const FontCascadeDescription* = nullptr, const FontCascadeDescription* rootFontDescription = nullptr, const RenderView* = nullptr);
&gt; 
&gt; I worry about the long list of arguments. Is there any way for us to cut
&gt; that complexity down to size? This is why we end up creating objects to
&gt; group the context for calls like this.
&gt; 
&gt; Also wonder if there’s a more terse way to name these variations.

I didn&apos;t address this - I think ideally, CSSToLengthConversionData would have another constructor that would take these arguments and accessors for them that could use them or defer to the style members... But that&apos;s a bigger change than I&apos;d like to make at this stage and I think doing that nicely takes a bit more thought than a quick change on this patch.

&gt; &gt; Source/WebCore/css/CSSToLengthConversionData.h:78
&gt; &gt; +    CSSPropertyID propertyToCompute() const { return m_propertyToCompute ? *m_propertyToCompute : CSSPropertyInvalid; }
&gt; 
&gt; Can use valueOr for this sort of thing.

Thanks, fixed.

&gt; &gt; Source/WebCore/style/StyleFontSizeFunctions.h:28
&gt; &gt; +#include &quot;Settings.h&quot;
&gt; 
&gt; Really annoying that Settings::Values creates these additional header
&gt; dependencies. I think we should consider defining SettingsValues at the
&gt; namespace level to avoid the need for all these additional header includes.

I agree, I&apos;ve opened bug 222788.

&gt; &gt; Source/WebCore/style/StyleFontSizeFunctions.h:41
&gt; &gt; +enum class MinimumFontSizeRule {
&gt; &gt; +    None,
&gt; &gt; +    Absolute,
&gt; &gt; +    AbsoluteAndRelative
&gt; &gt; +};
&gt; 
&gt; Comment on &quot;just moved&quot; code: I may be the only person who feels this way,
&gt; but I like the one-line versions of this kind of small enum rather than the
&gt; vertical version.
&gt; 
&gt;     enum class MinimumFontSizeRule : uint8_t { None, Absolute,
&gt; AbsoluteAndRelative };
&gt; 
&gt; It’s also a tiny bit helpful, I think, to mark the underlying type uint8_t
&gt; rather than letting it default to signed 32-bit integer.

Agreed on both counts and so I made the change. I&apos;ll wait for some green before cq+ in case there was some dubious casting going on that this breaks.

&gt; &gt; Source/WebCore/style/StyleResolveForFontRaw.cpp:202
&gt; &gt; +    // Line height is non-existent on FontCascade, so is left unhandled.
&gt; 
&gt; Is there a slightly more precise way to say what we mean by &quot;left unhandled&quot;?

I&apos;ve updated this comment, &quot;left unhandled&quot; is indeed too vague. This now reads:

    // As there is no line-height on FontCascade, there&apos;s no need to resolve
    // it, even though there is line-height information on FontRaw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736297</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 04:20:01 -0800</bug_when>
    <thetext>Found 1 new test failure: platform/mac/media/encrypted-media/fps-encrypted-event.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736321</commentid>
    <comment_count>9</comment_count>
      <attachid>422350</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-03-05 06:40:30 -0800</bug_when>
    <thetext>Comment on attachment 422350
Patch

I don&apos;t think the failure has anything to do with this patch, trying again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736323</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 07:05:12 -0800</bug_when>
    <thetext>Committed r273964: &lt;https://commits.webkit.org/r273964&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736324</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-05 07:06:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/75093446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422118</attachid>
            <date>2021-03-03 10:49:49 -0800</date>
            <delta_ts>2021-03-03 11:37:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222665-20210303184947.patch</filename>
            <type>text/plain</type>
            <size>30873</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM5ZjkwZThiZDZkNDNi
ZGNhNmJkYjBiMjQ1MmRjODNhYzg2Y2ExOC4uZWIxOGJjODA0ZTZmZjhhMTMzMzMxMTBmMzhlNDY1
NTFkMGU5ZWIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBBbGxvdyBDU1MgZm9udC1zdHls
aW5nIGZvciBjYW52YXMgd2l0aG91dCBSZW5kZXJTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlIHRvIGFsbG93IGZvcgorICAgICAgICBpdHMgdXNlIHdp
dGhvdXQgcmVxdWlyaW5nIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgYW5kIFJlbmRlclN0eWxl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2Fs
Y0xlbmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnByb3BlcnR5VG9Db21wdXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlbmRlclZpZXcgY29u
c3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgICogc3R5bGUvU3R5bGVGb250U2l6ZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oOgorCiAyMDIxLTAzLTAxICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBkYXRhIGJhY2tpbmcg
Z2VuZXJhdGVkIGdsb2JhbCBBdG9tU3RyaW5nIHZhbHVlcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2Nk
YWY0MWRmZDg3NjZiOGE3ZTljLi5hNzFhYzYzYzA5MTNhMjljZGM3NGZkNGM5NmRkZjliNjc3MGUw
YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC01ODMsOTYgKzU4NCwxMzYgQEAgc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgbW1QZXJJbmNoID0gMjUuNDsKIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGNtUGVySW5jaCA9IDIuNTQ7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBRUGVySW5jaCA9
IDI1LjQgKiA0LjA7CiAKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVk
Tm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFs
dWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRNZXRyaWNzKiBm
b250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9u
LCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uLCBjb25z
dCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQoreworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkg
eworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1FVSVJLWV9FTVM6CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAg
ICByZXR1cm4gKHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemUpID8gZm9u
dERlc2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgKiB2YWx1ZSA6IGZvbnREZXNjcmlwdGlvbi0+
Y29tcHV0ZWRTaXplKCk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKKyAgICAgICAg
QVNTRVJUKGZvbnRNZXRyaWNzKTsKKyAgICAgICAgaWYgKGZvbnRNZXRyaWNzLT5oYXNYSGVpZ2h0
KCkpCisgICAgICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnhIZWlnaHQoKSAqIHZhbHVlOwor
ICAgICAgICBBU1NFUlQoZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgcmV0dXJuICgocHJvcGVy
dHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyBmb250RGVzY3JpcHRpb24tPnNw
ZWNpZmllZFNpemUoKSA6IGZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpIC8gMi4wICog
dmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgICAgIGlmICghcm9v
dEZvbnREZXNjcmlwdGlvbikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0
dXJuICgocHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyByb290Rm9u
dERlc2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgOiByb290Rm9udERlc2NyaXB0aW9uLT5jb21w
dXRlZFNpemUoKSkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgorICAg
ICAgICBBU1NFUlQoZm9udE1ldHJpY3MpOworICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnpl
cm9XaWR0aCgpICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgorICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgorICAgICAgICBy
ZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIGNtUGVySW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19NTToKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggLyBtbVBl
ckluY2ggKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAgICAgICAgcmV0
dXJuIGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSU46CisgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNoICogdmFs
dWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gY3NzUGl4
ZWxzUGVySW5jaCAvIDcyLjAgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6
CisgICAgICAgIC8vIDEgcGMgPT0gMTIgcHQKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1Blcklu
Y2ggKiAxMi4wIC8gNzIuMCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxD
X1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX05VTUJFUjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAtMS4wOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoKKyAgICAg
ICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkuaGVpZ2h0KCkgLyAxMDAuMCAqIHZhbHVlIDogMDsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVlc6CisgICAgICAgIHJldHVybiByZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+
dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLndpZHRoKCkgLyAxMDAuMCAqIHZhbHVl
IDogMDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAgICAgICAgaWYgKHJlbmRl
clZpZXcpIHsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1heCh2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
LndpZHRoKCksIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAw
LjAgKiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1ZNSU46CisgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7CisgICAgICAg
ICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMgPSByZW5kZXJWaWV3
LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptaW4odmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy53aWR0aCgpLCB2aWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLmhlaWdodCgpKSAvIDEwMC4wICogdmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICB9Cit9CisKIGRvdWJs
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1VuaXRUeXBlIHByaW1p
dGl2ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBkb3VibGUgZmFjdG9yOwogICAgIGJvb2wg
YXBwbHlab29tID0gdHJ1ZTsKIAogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJL
WV9FTVM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKLSAgICAgICAg
ZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAg
ICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlw
ZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIG51bGxwdHIsICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGJyZWFr
OworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICAgICAgQVNTRVJUKGNvbnZl
cnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyByaWdo
dCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIHR3aWNlIHRvIEVYIHVuaXRzLgog
ICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRNZXRyaWNz
IGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAgICAvLyBv
dXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgotICAgICAgICBpZiAoY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5oYXNYSGVpZ2h0KCkpCi0gICAgICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLnhIZWlnaHQo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFjdG9yID0gKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0ZvbnRTaXplKCkgPyBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRp
b24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3Jp
cHRpb24oKS5jb21wdXRlZFNpemUoKSkgLyAyLjA7CisgICAgICAgIEFTU0VSVChjb252ZXJzaW9u
RGF0YS5zdHlsZSgpKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRv
Q29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSwgJmNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICAgICAgaWYgKGNvbnZlcnNpb25E
YXRhLnJvb3RTdHlsZSgpKQotICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29t
cHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250RGVzY3Jp
cHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZhY3RvciA9IDEuMDsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRv
Q29tcHV0ZSgpLCBudWxscHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKSA/
ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkgOiBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgogICAg
ICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIGZhY3RvciA9IGNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkuemVyb1dpZHRoKCk7CisgICAgICAg
IHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBl
LCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICAgICAgZmFjdG9yID0gMS4wOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgICAgIGZhY3RvciA9IGNzc1Bp
eGVsc1BlckluY2ggLyBjbVBlckluY2g7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19NTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIG1tUGVy
SW5jaDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6Ci0gICAg
ICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaDsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfSU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJD
RU5UQUdFX1dJVEhfTEVOR1RIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNF
TlRBR0VfV0lUSF9OVU1CRVI6CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2Fs
Y0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVy
dHlUb0NvbXB1dGUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVk1BWDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICAgICAg
dmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUs
IHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgpLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yZW5kZXJWaWV3KCkpOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6CiAgICAgICAgIEFTU0VSVChjb252
ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNvbXB1dGlu
Z0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpKSB7CiAg
ICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5lLWhlaWdo
dCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMgZWxlbWVu
dCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnBh
cmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVI
ZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGluZVNwYWNp
bmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCkg
PyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKSA6IGNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5j
b21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRh
LnN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOwogICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgogICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEucm9v
dFN0eWxlKCkpIHsKICAgICAgICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdMaW5l
SGVpZ2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkKLSAgICAgICAg
ICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0ZUxpbmVI
ZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNv
bXB1dGVMaW5lSGVpZ2h0KGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5zcGVjaWZpZWRMaW5l
SGVpZ2h0KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZhY3RvciA9IGNv
bnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBmYWN0b3IgPSAxLjA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5j
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgotICAgICAg
ICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoIC8gNzIuMDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgICAgICAvLyAxIHBjID09IDEyIHB0Ci0gICAg
ICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggKiAxMi4wIC8gNzIuMDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdU
SDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVS
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIC0xLjA7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9u
RGF0YS52aWV3cG9ydEhlaWdodEZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgotICAgICAgICBm
YWN0b3IgPSBjb252ZXJzaW9uRGF0YS52aWV3cG9ydFdpZHRoRmFjdG9yKCk7Ci0gICAgICAgIGFw
cGx5Wm9vbSA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVk1BWDoKLSAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEudmlld3BvcnRNYXhGYWN0
b3IoKTsKLSAgICAgICAgYXBwbHlab29tID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0
YS52aWV3cG9ydE1pbkZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0ZWRM
aW5lSGVpZ2h0KCk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CkBAIC02
ODEsMTQgKzcyMiwxMyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxj
TGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIC8vIFdlIGRvIG5v
dCBhcHBseSB0aGUgem9vbSBmYWN0b3Igd2hlbiB3ZSBhcmUgY29tcHV0aW5nIHRoZSB2YWx1ZSBv
ZiB0aGUgZm9udC1zaXplIHByb3BlcnR5LiBUaGUgem9vbWluZwogICAgIC8vIGZvciBmb250IHNp
emVzIGlzIG11Y2ggbW9yZSBjb21wbGljYXRlZCwgc2luY2Ugd2UgaGF2ZSB0byB3b3JyeSBhYm91
dCBlbmZvcmNpbmcgdGhlIG1pbmltdW0gZm9udCBzaXplIHByZWZlcmVuY2UKICAgICAvLyBhcyB3
ZWxsIGFzIGVuZm9yY2luZyB0aGUgaW1wbGljaXQgInNtYXJ0IG1pbmltdW0uIgotICAgIGRvdWJs
ZSByZXN1bHQgPSB2YWx1ZSAqIGZhY3RvcjsKICAgICBpZiAoY29udmVyc2lvbkRhdGEuY29tcHV0
aW5nRm9udFNpemUoKSB8fCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChwcmltaXRpdmVUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgaWYgKGFw
cGx5Wm9vbSkKLSAgICAgICAgcmVzdWx0ICo9IGNvbnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAg
ICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEuem9vbSgpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9y
TGVuZ3RoUmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAz
OTg2OTFiYjFmZDc0YTczMjEwYjEyY2YxOTk4MTg3NTMxYzBiNTljLi5kNjg2Y2MxYmE5NTc0MjE1
MGUwY2Q1NmM4MGEwYWQ4MTY5NjBmMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaApAQCAtMzksMTEgKzM5LDE0IEBAIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOworY2xh
c3MgRm9udE1ldHJpY3M7CiBjbGFzcyBQYWlyOwogY2xhc3MgUXVhZDsKIGNsYXNzIFJHQkNvbG9y
OwogY2xhc3MgUmVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVmlldzsKIAog
c3RydWN0IENTU0ZvbnRGYW1pbHk7CiBzdHJ1Y3QgTGVuZ3RoOwpAQCAtMTg4LDYgKzE5MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2Nh
bGVGYWN0b3IoQ1NTVW5pdFR5cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdW5pdFR5cGVTdHJpbmco
Q1NTVW5pdFR5cGUpOwogCisgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56b29tZWROb25DYWxj
TGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQsIGNv
bnN0IEZvbnRNZXRyaWNzKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24q
ID0gbnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlw
dGlvbiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlclZpZXcqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSk7CiAgICAgLy8gVHJ1ZSBpZiBj
b21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSB3b3VsZCBwcm9kdWNlIGlkZW50aWNhbCByZXN1bHRz
IHdoZW4gcmVzb2x2ZWQgYWdhaW5zdCBib3RoIHRoZXNlIHN0eWxlcy4KICAgICBzdGF0aWMgYm9v
bCBlcXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhLmgKaW5kZXggNjQ5NWQ4NTZlZDYxMjY0YjRkYzUxNmRiYmFlOWJhMDEwYmFjZDE1ZC4uYTM4
OTBlNGFhYzRiNjkyY2ViMGJhMmE5NDY2MjA4ZjU5NGM1MGZhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC03NSw2ICs3NSw4IEBAIHB1
YmxpYzoKICAgICBmbG9hdCB6b29tKCkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRpbmdGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250
U2l6ZTsgfQogICAgIGJvb2wgY29tcHV0aW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OyB9CisgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0Nv
bXB1dGUgPyAqbV9wcm9wZXJ0eVRvQ29tcHV0ZSA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQorICAg
IGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZp
ZXc7IH0KIAogICAgIGRvdWJsZSB2aWV3cG9ydFdpZHRoRmFjdG9yKCkgY29uc3Q7CiAgICAgZG91
YmxlIHZpZXdwb3J0SGVpZ2h0RmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBkNmE2
NjBlMDA1YTAwNjM5OTUxMGVmYWNmNjgwOGYyNDM5ZWYyY2JmLi5hMDZjMmU4MGNhYjY0NWEwMjZh
N2NkNGM0NTIyMDk2NWRhNmU1MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEzMSw4ICsxMzEsOCBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5l
d0ZvbnQpCiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoRGVmYXVsdEZv
bnRTaXplKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBmb250U3R5bGUgPSBTdHlsZTo6cmVzb2x2
ZUZvckZvbnRSYXcoKmZvbnRSYXcsIFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgZG9jdW1lbnQp
KQotICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5mb250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9u
dFNlbGVjdG9yKCksICpmb250U3R5bGUpOworICAgIGlmIChhdXRvIGZvbnRDYXNjYWRlID0gU3R5
bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiks
IGRvY3VtZW50KSkKKyAgICAgICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRv
Y3VtZW50LmZvbnRTZWxlY3RvcigpLCAqZm9udENhc2NhZGUpOwogfQogCiBpbmxpbmUgVGV4dERp
cmVjdGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbihEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSoqIGNvbXB1dGVkU3R5bGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDlmZjIyYTdjM2Q1ZGVjY2U2YTY0YmFhYTZhY2JlYzEx
NmIxMDJjMGIuLjUxNmM3M2NiMGMxZjY5ZmI2OWRjODA5YjJlYmY4YmFlNzdkNjQ3YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCkBAIC0yOTIsMTMgKzI5MiwxMyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3Rv
ciYgc2VsZQogICAgIHVwZGF0ZShzZWxlY3Rvcik7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojppbml0aWFsaXplKEZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRT
ZWxlY3RvciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKQogewogICAgIC8vIEJld2Fy
ZSEgbV9mb250LmZvbnRTZWxlY3RvcigpIG1pZ2h0IG5vdCBwb2ludCB0byBkb2N1bWVudC5mb250
U2VsZWN0b3IoKSEKLSAgICBBU1NFUlQobmV3U3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0
b3IoKSA9PSAmZm9udFNlbGVjdG9yKTsKKyAgICBBU1NFUlQoZm9udENhc2NhZGUuZm9udFNlbGVj
dG9yKCkgPT0gJmZvbnRTZWxlY3Rvcik7CiAgICAgaWYgKHJlYWxpemVkKCkpCiAgICAgICAgIG1f
Zm9udC5mb250U2VsZWN0b3IoKS0+dW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygq
dGhpcyk7Ci0gICAgbV9mb250ID0gbmV3U3R5bGUuZm9udENhc2NhZGUoKTsKKyAgICBtX2ZvbnQg
PSBmb250Q2FzY2FkZTsKICAgICBtX2ZvbnQudXBkYXRlKCZmb250U2VsZWN0b3IpOwogICAgIEFT
U0VSVCgmZm9udFNlbGVjdG9yID09IG1fZm9udC5mb250U2VsZWN0b3IoKSk7CiAgICAgbV9mb250
LmZvbnRTZWxlY3RvcigpLT5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmgKaW5kZXggNmE4NWJhZGE4YjQ4YTQ2Yzg2MzlmYWNkY2NiMTM3OWRm
YTE5MTViNS4uMWU1ZGJjNmU4NjQ2Mjk3YjU1OTc5NmViODQzZmJlOGY1Zjk5OGFkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBJbWFnZUJpdG1hcDsKIGNsYXNz
IEltYWdlRGF0YTsKIGNsYXNzIE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIFBhdGgyRDsKLWNsYXNz
IFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgVGV4dE1ldHJpY3M7CiAK
QEAgLTIzNSw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZvbnRQcm94eSYgb3BlcmF0b3I9
KGNvbnN0IEZvbnRQcm94eSYpOwogCiAgICAgICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7IH0KLSAgICAgICAgdm9pZCBpbml0aWFsaXplKEZv
bnRTZWxlY3RvciYsIGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZShGb250U2VsZWN0b3ImLCBjb25zdCBGb250Q2FzY2FkZSYpOwogICAgICAgICBjb25zdCBGb250
TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdDsKICAgICAgICAgY29uc3QgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgICAgIGZsb2F0IHdpZHRo
KGNvbnN0IFRleHRSdW4mLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNDMyMzU0NGU1ZWY1YzdkOTViNjRlMGQwZGJkYmEyMzIz
MWNjZDBjNy4uNjRhY2YxYWFlZWM4MDI5MzgwYmRlMGRmNDQ4YzI0NmE0MTMzNmIwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgdm9pZCBPZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdG
b250KQogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoRGVmYXVsdEZvbnRTaXpl
KTsKIAogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwot
ICAgIGF1dG8gZm9udFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50KTsKKyAgICBhdXRvIGZvbnRDYXNjYWRl
ID0gU3R5bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIGRvY3VtZW50KTsKIAotICAgIGlmIChmb250U3R5bGUpCi0gICAgICAgIG1vZGlmaWFi
bGVTdGF0ZSgpLmZvbnQuaW5pdGlhbGl6ZShkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmZvbnRT
dHlsZSk7CisgICAgaWYgKGZvbnRDYXNjYWRlKQorICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5m
b250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpmb250Q2FzY2FkZSk7CiB9
CiAKIENhbnZhc0RpcmVjdGlvbiBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZv
bnRTaXplRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVG
dW5jdGlvbnMuY3BwCmluZGV4IDVlNmEzMzIyYTMwMjExMmY1OGZiZjlmYTFlZGU1YWMyZmZhNjQ1
ZDkuLmQ1NGZkNTFjMDgwOGMzZDVhZjQwMjM5MTUzNWNjYWExZmQ4YWRkOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCkBAIC0zOSwxMyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLWVudW0g
Y2xhc3MgTWluaW11bUZvbnRTaXplUnVsZSB7Ci0gICAgTm9uZSwKLSAgICBBYnNvbHV0ZSwKLSAg
ICBBYnNvbHV0ZUFuZFJlbGF0aXZlCi19OwotCi1zdGF0aWMgZmxvYXQgY29tcHV0ZWRGb250U2l6
ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0ZVNp
emUsIGZsb2F0IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUgbWluaW11bVNpemVSdWxl
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxv
YXQgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZSBtaW5pbXVtU2l6ZVJ1bGUsIGNvbnN0
IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzKQogewogICAgIC8vIFRleHQgd2l0aCBhIDBweCBm
b250IHNpemUgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIGFuZCB0aGVyZWZvcmUgbmVlZHMgdG8gYmUK
ICAgICAvLyBleGVtcHQgZnJvbSBtaW5pbXVtIGZvbnQgc2l6ZSBydWxlcy4gQWNpZDMgcmVsaWVz
IG9uIHRoaXMgZm9yIHBpeGVsLXBlcmZlY3QKQEAgLTY3LDggKzYxLDggQEAgc3RhdGljIGZsb2F0
IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBi
b29sIGlzQWJzb2wKICAgICBpZiAobWluaW11bVNpemVSdWxlID09IE1pbmltdW1Gb250U2l6ZVJ1
bGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBzcGVjaWZpZWRTaXplOwogCi0gICAgaW50IG1pblNp
emUgPSBzZXR0aW5ncy5taW5pbXVtRm9udFNpemUoKTsKLSAgICBpbnQgbWluTG9naWNhbFNpemUg
PSBzZXR0aW5ncy5taW5pbXVtTG9naWNhbEZvbnRTaXplKCk7CisgICAgaW50IG1pblNpemUgPSBz
ZXR0aW5ncy5taW5pbXVtRm9udFNpemU7CisgICAgaW50IG1pbkxvZ2ljYWxTaXplID0gc2V0dGlu
Z3MubWluaW11bUxvZ2ljYWxGb250U2l6ZTsKICAgICBmbG9hdCB6b29tZWRTaXplID0gc3BlY2lm
aWVkU2l6ZSAqIHpvb21GYWN0b3I7CiAKICAgICAvLyBBcHBseSB0aGUgaGFyZCBtaW5pbXVtIGZp
cnN0LiBXZSBvbmx5IGFwcGx5IHRoZSBoYXJkIG1pbmltdW0gaWYgYWZ0ZXIgem9vbWluZyB3ZSdy
ZSBzdGlsbCB0b28gc21hbGwuCkBAIC05NSwxMiArODksMTIgQEAgZmxvYXQgY29tcHV0ZWRGb250
U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0
ZVNpemUKICAgICAgICAgaWYgKGZyYW1lICYmIHN0eWxlLT50ZXh0Wm9vbSgpICE9IFRleHRab29t
OjpSZXNldCkKICAgICAgICAgICAgIHpvb21GYWN0b3IgKj0gZnJhbWUtPnRleHRab29tRmFjdG9y
KCk7CiAgICAgfQotICAgIHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c3BlY2lmaWVkU2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIHVzZVNWR1pvb21SdWxl
cyA/IE1pbmltdW1Gb250U2l6ZVJ1bGU6Ok5vbmUgOiBNaW5pbXVtRm9udFNpemVSdWxlOjpBYnNv
bHV0ZUFuZFJlbGF0aXZlLCBkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICByZXR1cm4gY29tcHV0
ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXpl
LCB6b29tRmFjdG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25l
IDogTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0
dGluZ3NWYWx1ZXMoKSk7CiB9CiAKIGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVk
U2l6ZUZvclNWR0lubGluZVRleHQoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRl
U2l6ZSwgZmxvYXQgem9vbUZhY3RvciwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc3BlY2lmaWVkU2l6ZSwg
aXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGU6OkFic29sdXRl
LCBkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6ZUZyb21T
cGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFjdG9yLCBN
aW5pbXVtRm9udFNpemVSdWxlOjpBYnNvbHV0ZSwgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKSk7
CiB9CiAKIGNvbnN0IGludCBmb250U2l6ZVRhYmxlTWF4ID0gMTY7CkBAIC0xNDUsMjIgKzEzOSwy
NiBAQCBzdGF0aWMgY29uc3QgaW50IHN0cmljdEZvbnRTaXplVGFibGVbZm9udFNpemVUYWJsZU1h
eCAtIGZvbnRTaXplVGFibGVNaW4gKyAxXVt0bwogLy8gZmFjdG9ycyBmb3IgZWFjaCBrZXl3b3Jk
IHZhbHVlLgogc3RhdGljIGNvbnN0IGZsb2F0IGZvbnRTaXplRmFjdG9yc1t0b3RhbEtleXdvcmRz
XSA9IHsgMC42MGYsIDAuNzVmLCAwLjg5ZiwgMS4wZiwgMS4yZiwgMS41ZiwgMi4wZiwgMy4wZiB9
OwogCi1mbG9hdCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNo
b3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK2Zsb2F0
IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxkVXNlRml4
ZWREZWZhdWx0U2l6ZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3MsIGJvb2wgaW5R
dWlya3NNb2RlKQogewotICAgIGJvb2wgcXVpcmtzTW9kZSA9IGRvY3VtZW50LmluUXVpcmtzTW9k
ZSgpOwotICAgIGludCBtZWRpdW1TaXplID0gc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSA/IGRv
Y3VtZW50LnNldHRpbmdzKCkuZGVmYXVsdEZpeGVkRm9udFNpemUoKSA6IGRvY3VtZW50LnNldHRp
bmdzKCkuZGVmYXVsdEZvbnRTaXplKCk7CisgICAgaW50IG1lZGl1bVNpemUgPSBzaG91bGRVc2VG
aXhlZERlZmF1bHRTaXplID8gc2V0dGluZ3MuZGVmYXVsdEZpeGVkRm9udFNpemUgOiBzZXR0aW5n
cy5kZWZhdWx0Rm9udFNpemU7CiAgICAgaWYgKG1lZGl1bVNpemUgPj0gZm9udFNpemVUYWJsZU1p
biAmJiBtZWRpdW1TaXplIDw9IGZvbnRTaXplVGFibGVNYXgpIHsKICAgICAgICAgLy8gTG9vayB1
cCB0aGUgZW50cnkgaW4gdGhlIHRhYmxlLgogICAgICAgICBpbnQgcm93ID0gbWVkaXVtU2l6ZSAt
IGZvbnRTaXplVGFibGVNaW47CiAgICAgICAgIGludCBjb2wgPSAoa2V5d29yZElEIC0gQ1NTVmFs
dWVYeFNtYWxsKTsKLSAgICAgICAgcmV0dXJuIHF1aXJrc01vZGUgPyBxdWlya3NGb250U2l6ZVRh
YmxlW3Jvd11bY29sXSA6IHN0cmljdEZvbnRTaXplVGFibGVbcm93XVtjb2xdOworICAgICAgICBy
ZXR1cm4gaW5RdWlya3NNb2RlID8gcXVpcmtzRm9udFNpemVUYWJsZVtyb3ddW2NvbF0gOiBzdHJp
Y3RGb250U2l6ZVRhYmxlW3Jvd11bY29sXTsKICAgICB9CiAKICAgICAvLyBWYWx1ZSBpcyBvdXRz
aWRlIHRoZSByYW5nZSBvZiB0aGUgdGFibGUuIEFwcGx5IHRoZSBzY2FsZSBmYWN0b3IgaW5zdGVh
ZC4KLSAgICBmbG9hdCBtaW5Mb2dpY2FsU2l6ZSA9IHN0ZDo6bWF4PGZsb2F0Pihkb2N1bWVudC5z
ZXR0aW5ncygpLm1pbmltdW1Mb2dpY2FsRm9udFNpemUoKSwgMSk7CisgICAgZmxvYXQgbWluTG9n
aWNhbFNpemUgPSBzdGQ6Om1heDxmbG9hdD4oc2V0dGluZ3MubWluaW11bUxvZ2ljYWxGb250U2l6
ZSwgMSk7CiAgICAgcmV0dXJuIHN0ZDo6bWF4KGZvbnRTaXplRmFjdG9yc1trZXl3b3JkSUQgLSBD
U1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9naWNhbFNpemUpOwogfQogCitmbG9h
dCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNob3VsZFVzZUZp
eGVkRGVmYXVsdFNpemUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4g
Zm9udFNpemVGb3JLZXl3b3JkKGtleXdvcmRJRCwgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSwg
ZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKSwgZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkpOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIGludCBmaW5kTmVhcmVzdExlZ2FjeUZvbnRT
aXplKGludCBwaXhlbEZvbnRTaXplLCBjb25zdCBUKiB0YWJsZSwgaW50IG11bHRpcGxpZXIpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgKaW5kZXgg
ZDM4NWI5YTAyNDg4NTJkNGFhMTI2ZmYxMTY1ODAxNWE3NmRiMGU2ZC4uNGUzOTEyZTZlNTc1NGVm
MDk2YmMyODVkNmY2Y2Q2YzU3MDJiYTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlRm9udFNpemVGdW5jdGlvbnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMs
MTEgKzM0LDE5IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBuYW1lc3BhY2UgU3R5bGUgewogCitl
bnVtIGNsYXNzIE1pbmltdW1Gb250U2l6ZVJ1bGUgeworICAgIE5vbmUsCisgICAgQWJzb2x1dGUs
CisgICAgQWJzb2x1dGVBbmRSZWxhdGl2ZQorfTsKKworZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0ZVNpemUs
IGZsb2F0IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUsIGNvbnN0IFNldHRpbmdzOjpW
YWx1ZXMmKTsKIGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBz
cGVjaWZpZWRTaXplLCBib29sIGlzQWJzb2x1dGVTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcywg
Y29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBEb2N1bWVudCYpOwogZmxvYXQgY29tcHV0ZWRGb250
U2l6ZUZyb21TcGVjaWZpZWRTaXplRm9yU1ZHSW5saW5lVGV4dChmbG9hdCBzcGVjaWZpZWRTaXpl
LCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBjb25zdCBEb2N1bWVudCYp
OwogCiAvLyBHaXZlbiBhIENTUyBrZXl3b3JkIGlkIGluIHRoZSByYW5nZSAoQ1NTVmFsdWVYeFNt
YWxsIHRvIENTU1ZhbHVlV2Via2l0WHh4TGFyZ2UpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu
CiAvLyB0aGUgY29ycmVjdCBmb250IHNpemUgc2NhbGVkIHJlbGF0aXZlIHRvIHRoZSB1c2VyJ3Mg
ZGVmYXVsdCAobWVkaXVtKS4KK2Zsb2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3
b3JkSUQsIGJvb2wgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSwgY29uc3QgU2V0dGluZ3M6OlZh
bHVlcyYsIGJvb2wgaW5RdWlya3NNb2RlID0gZmFsc2UpOwogZmxvYXQgZm9udFNpemVGb3JLZXl3
b3JkKHVuc2lnbmVkIGtleXdvcmRJRCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBj
b25zdCBEb2N1bWVudCYpOwogCiAvLyBHaXZlbiBhIGZvbnQgc2l6ZSBpbiBwaXhlbCwgdGhpcyBm
dW5jdGlvbiB3aWxsIHJldHVybiBsZWdhY3kgZm9udCBzaXplIGJldHdlZW4gMSBhbmQgNy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXgg
NTliNzFjNWMxYzIxZDhjZjczNjZmNWJjZjRmNmI5ZTU1YjM2ZGNiNC4uODg4ZTRhMjdjN2MzNjkx
NTM3MjM2ZjY5ODE3MzdlZWUyYzA0NDFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUg
IkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgotI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGVE
ZXNjcmlwdGlvbi5oIgpAQCAtNDcsMTcgKzQ2LDggQEAgbmFtZXNwYWNlIFN0eWxlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKIAotT3B0aW9uYWw8UmVuZGVy
U3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mJiBmb250RGVzY3JpcHRpb24sIERvY3VtZW50JiBkb2N1bWVudCkKK09w
dGlvbmFsPEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250
UmF3LCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYgZm9udERlc2NyaXB0aW9uLCBEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7Ci0gICAgYXV0byBmb250U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7
Ci0KLSAgICBhdXRvIGdldFBhcmVudFN0eWxlID0gWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdHlsZT4gewotICAgICAgICBhdXRvIHBhcmVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKGZvbnRTdHlsZSk7Ci0gICAgICAgIHBhcmVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRp
b24oRm9udENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsKLSAgICAgICAgcGFy
ZW50U3R5bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7
Ci0gICAgICAgIHJldHVybiBwYXJlbnRTdHlsZTsKLSAgICB9OwotCiAgICAgLy8gTWFwIHRoZSBm
b250IHByb3BlcnR5IGxvbmdoYW5kcyBpbnRvIHRoZSBzdHlsZS4KICAgICBmbG9hdCBwYXJlbnRT
aXplID0gZm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKIApAQCAtOTQsNyArODQsNyBA
QCBPcHRpb25hbDxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYg
Zm9udFJhdywgRm9udENhc2NhZGVEZXNjcgogICAgICAgICBpZiAoQ1NTVmFsdWVJRCBzaXplSWRl
bnRpZmllciA9IGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZUFzSWRlbnRpZmllcigpKSB7CiAg
ICAgICAgICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNpemVGb3JLZXl3b3JkKHNpemVJZGVu
dGlmaWVyLCAhb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUsIGRvY3VtZW50KTsKICAgICAg
ICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwotICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShTdHlsZTo6Y29tcHV0ZWRGb250U2l6
ZUZyb21TcGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgp
LCBmYWxzZSwgJmZvbnRTdHlsZSwgZG9jdW1lbnQpKTsKKyAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUoU3R5bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVk
U2l6ZShzaXplLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgMS4wLCBNaW5pbXVt
Rm9udFNpemVSdWxlOjpOb25lLCBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpKSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTE5Nyw5ICsxODcsOSBAQCBPcHRpb25hbDxSZW5kZXJTdHlsZT4gcmVz
b2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcgog
ICAgICAgICB9CiAgICAgfSwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxl
bmd0aE9yUGVyY2VudFJhdyYgbGVuZ3RoT3JQZXJjZW50KSB7CiAgICAgICAgIHJldHVybiBzd2l0
Y2hPbihsZW5ndGhPclBlcmNlbnQsIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
OjpMZW5ndGhSYXcmIGxlbmd0aCkgewotICAgICAgICAgICAgYXV0byBwYXJlbnRTdHlsZSA9IGdl
dFBhcmVudFN0eWxlKCk7Ci0gICAgICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNv
bnZlcnNpb25EYXRhIHsgcGFyZW50U3R5bGUuZ2V0KCksIG51bGxwdHIsIHBhcmVudFN0eWxlLmdl
dCgpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCksIDEuMGYsIENTU1Byb3BlcnR5Rm9udFNpemUgfTsK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6
OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBsZW5ndGgudHlwZSwg
bGVuZ3RoLnZhbHVlKSk7CisgICAgICAgICAgICBhdXRvIGZvbnRDYXNjYWRlID0gRm9udENhc2Nh
ZGUoRm9udENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAg
IGZvbnRDYXNjYWRlLnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOworICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVu
em9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQ
cm9wZXJ0eUZvbnRTaXplLCAmZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRl
LmZvbnREZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSkpOwogICAgICAgICB9LCBbJl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVy
Y2VudGFnZSkgLyAxMDAuMCk7CiAgICAgICAgIH0pOwpAQCAtMjEwLDMxICsyMDAsMTEgQEAgT3B0
aW9uYWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRS
YXcsIEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVk
U2l6ZShzaXplKTsKICAgICB9CiAKLSAgICBpZiAoZm9udFJhdy5saW5lSGVpZ2h0KSB7Ci0gICAg
ICAgIE9wdGlvbmFsPExlbmd0aD4gbGluZUhlaWdodCA9IHN3aXRjaE9uKCpmb250UmF3LmxpbmVI
ZWlnaHQsIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgewotICAgICAgICAgICAgaWYgKGlkZW50ID09
IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxMZW5ndGg+
KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxMZW5ndGg+KFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIH0sIFsmXSAoZG91YmxlIG51
bWJlcikgewotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKG51bWJl
ciAqIDEwMC4wLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7Ci0gICAgICAgIH0sIFsmXSAoY29uc3Qg
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVy
Y2VudCkgewotICAgICAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZd
IChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byBwYXJlbnRTdHlsZSA9IGdldFBhcmVudFN0eWxlKCk7Ci0gICAg
ICAgICAgICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSB7IHBh
cmVudFN0eWxlLmdldCgpLCBudWxscHRyLCBwYXJlbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVu
ZGVyVmlldygpLCAxLjBmLCBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQgfTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgoY2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBsZW5n
dGgudHlwZSwgbGVuZ3RoLnZhbHVlKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9y
Q3NzTGVuZ3RoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKLSAgICAgICAgICAgIH0sIFsmXSAoZG91
YmxlIHBlcmNlbnRhZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3Ro
PihMZW5ndGgoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAqIHN0YXRpY19jYXN0PGlu
dD4ocGVyY2VudGFnZSkpIC8gMTAwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGlmIChsaW5lSGVpZ2h0KQotICAgICAgICAgICAg
Zm9udFN0eWxlLnNldExpbmVIZWlnaHQoV1RGTW92ZShsaW5lSGVpZ2h0LnZhbHVlKCkpKTsKLSAg
ICB9Ci0KLSAgICBmb250U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2Ny
aXB0aW9uKSk7Ci0gICAgZm9udFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5m
b250U2VsZWN0b3IoKSk7CisgICAgLy8gTGluZSBoZWlnaHQgaXMgbm9uLWV4aXN0ZW50IG9uIEZv
bnRDYXNjYWRlLCBzbyBpcyBsZWZ0IHVuaGFuZGxlZC4KIAotICAgIHJldHVybiBmb250U3R5bGU7
CisgICAgYXV0byBmb250Q2FzY2FkZSA9IEZvbnRDYXNjYWRlKFdURk1vdmUoZm9udERlc2NyaXB0
aW9uKSk7CisgICAgZm9udENhc2NhZGUudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7
CisgICAgcmV0dXJuIGZvbnRDYXNjYWRlOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmgKaW5kZXggMDYyNTI5NWU4Y2FjZTEzNGI2MjA4ZjE5
MmM0YTg5M2RkZTEyYTJmYy4uMWE4NmE5ZjE1ODhkY2UxNzhhNDM5MGQ3NDkzNTQwZmY4OTJhYjNi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJh
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaApA
QCAtMzMsOCArMzMsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsK
K2NsYXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udENhc2NhZGVEZXNjcmlwdGlvbjsKLWNsYXNz
IFJlbmRlclN0eWxlOwogCiBuYW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzIHsKIHN0
cnVjdCBGb250UmF3OwpAQCAtNDIsNyArNDIsNyBAQCBzdHJ1Y3QgRm9udFJhdzsKIAogbmFtZXNw
YWNlIFN0eWxlIHsKIAotT3B0aW9uYWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNv
bnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJhdyYsIEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24mJiwgRG9jdW1lbnQmKTsKK09wdGlvbmFsPEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9u
dFJhdyhjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXcmLCBGb250Q2FzY2Fk
ZURlc2NyaXB0aW9uJiYsIERvY3VtZW50Jik7CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422128</attachid>
            <date>2021-03-03 11:37:21 -0800</date>
            <delta_ts>2021-03-04 02:32:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222665-20210303193720.patch</filename>
            <type>text/plain</type>
            <size>31063</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzJkZDVlZGUxNjBk
YzJmYzRlMmIzZWQ5NGY3MzgwN2Q0NDRkOC4uMWViNGQ2YzhmNjcyZTI5NWRjYjk3OWZkMzNkMzAz
N2MzZDdkMmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBBbGxvdyBDU1MgZm9udC1zdHls
aW5nIGZvciBjYW52YXMgd2l0aG91dCBSZW5kZXJTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlIHRvIGFsbG93IGZvcgorICAgICAgICBpdHMgdXNlIHdp
dGhvdXQgcmVxdWlyaW5nIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgYW5kIFJlbmRlclN0eWxl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2Fs
Y0xlbmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnByb3BlcnR5VG9Db21wdXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlbmRlclZpZXcgY29u
c3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgICogc3R5bGUvU3R5bGVGb250U2l6ZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oOgorCiAyMDIxLTAzLTAxICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBkYXRhIGJhY2tpbmcg
Z2VuZXJhdGVkIGdsb2JhbCBBdG9tU3RyaW5nIHZhbHVlcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2Nk
YWY0MWRmZDg3NjZiOGE3ZTljLi5hNzFhYzYzYzA5MTNhMjljZGM3NGZkNGM5NmRkZjliNjc3MGUw
YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC01ODMsOTYgKzU4NCwxMzYgQEAgc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgbW1QZXJJbmNoID0gMjUuNDsKIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGNtUGVySW5jaCA9IDIuNTQ7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBRUGVySW5jaCA9
IDI1LjQgKiA0LjA7CiAKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVk
Tm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFs
dWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRNZXRyaWNzKiBm
b250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9u
LCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uLCBjb25z
dCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQoreworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkg
eworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1FVSVJLWV9FTVM6CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAg
ICByZXR1cm4gKHByb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemUpID8gZm9u
dERlc2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgKiB2YWx1ZSA6IGZvbnREZXNjcmlwdGlvbi0+
Y29tcHV0ZWRTaXplKCk7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKKyAgICAgICAg
QVNTRVJUKGZvbnRNZXRyaWNzKTsKKyAgICAgICAgaWYgKGZvbnRNZXRyaWNzLT5oYXNYSGVpZ2h0
KCkpCisgICAgICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnhIZWlnaHQoKSAqIHZhbHVlOwor
ICAgICAgICBBU1NFUlQoZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgcmV0dXJuICgocHJvcGVy
dHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyBmb250RGVzY3JpcHRpb24tPnNw
ZWNpZmllZFNpemUoKSA6IGZvbnREZXNjcmlwdGlvbi0+Y29tcHV0ZWRTaXplKCkpIC8gMi4wICog
dmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CisgICAgICAgIGlmICghcm9v
dEZvbnREZXNjcmlwdGlvbikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgcmV0
dXJuICgocHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSkgPyByb290Rm9u
dERlc2NyaXB0aW9uLT5zcGVjaWZpZWRTaXplKCkgOiByb290Rm9udERlc2NyaXB0aW9uLT5jb21w
dXRlZFNpemUoKSkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgorICAg
ICAgICBBU1NFUlQoZm9udE1ldHJpY3MpOworICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MtPnpl
cm9XaWR0aCgpICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgorICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NNOgorICAgICAgICBy
ZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIGNtUGVySW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19NTToKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggLyBtbVBl
ckluY2ggKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKKyAgICAgICAgcmV0
dXJuIGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19MSFM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSU46CisgICAgICAgIHJldHVybiBjc3NQaXhlbHNQZXJJbmNoICogdmFs
dWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gY3NzUGl4
ZWxzUGVySW5jaCAvIDcyLjAgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6
CisgICAgICAgIC8vIDEgcGMgPT0gMTIgcHQKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1Blcklu
Y2ggKiAxMi4wIC8gNzIuMCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxD
X1BFUkNFTlRBR0VfV0lUSF9MRU5HVEg6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX05VTUJFUjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAtMS4wOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WSDoKKyAgICAg
ICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkuaGVpZ2h0KCkgLyAxMDAuMCAqIHZhbHVlIDogMDsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVlc6CisgICAgICAgIHJldHVybiByZW5kZXJWaWV3ID8gcmVuZGVyVmlldy0+
dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpLndpZHRoKCkgLyAxMDAuMCAqIHZhbHVl
IDogMDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAgICAgICAgaWYgKHJlbmRl
clZpZXcpIHsKKyAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1heCh2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
LndpZHRoKCksIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAw
LjAgKiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX1ZNSU46CisgICAgICAgIGlmIChyZW5kZXJWaWV3KSB7CisgICAgICAg
ICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMgPSByZW5kZXJWaWV3
LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptaW4odmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy53aWR0aCgpLCB2aWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLmhlaWdodCgpKSAvIDEwMC4wICogdmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICB9Cit9CisKIGRvdWJs
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1VuaXRUeXBlIHByaW1p
dGl2ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBkb3VibGUgZmFjdG9yOwogICAgIGJvb2wg
YXBwbHlab29tID0gdHJ1ZTsKIAogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJL
WV9FTVM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKLSAgICAgICAg
ZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAg
ICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZlVHlw
ZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIG51bGxwdHIsICZj
b252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGJyZWFr
OworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICAgICAgQVNTRVJUKGNvbnZl
cnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyByaWdo
dCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIHR3aWNlIHRvIEVYIHVuaXRzLgog
ICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRNZXRyaWNz
IGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAgICAvLyBv
dXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgotICAgICAgICBpZiAoY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5oYXNYSGVpZ2h0KCkpCi0gICAgICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLnhIZWlnaHQo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFjdG9yID0gKGNvbnZlcnNpb25EYXRhLmNv
bXB1dGluZ0ZvbnRTaXplKCkgPyBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRp
b24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3Jp
cHRpb24oKS5jb21wdXRlZFNpemUoKSkgLyAyLjA7CisgICAgICAgIEFTU0VSVChjb252ZXJzaW9u
RGF0YS5zdHlsZSgpKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRv
Q29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSwgJmNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICAgICAgaWYgKGNvbnZlcnNpb25E
YXRhLnJvb3RTdHlsZSgpKQotICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29t
cHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250RGVzY3Jp
cHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9u
dERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZhY3RvciA9IDEuMDsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRv
Q29tcHV0ZSgpLCBudWxscHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKSA/
ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkgOiBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgogICAg
ICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIGZhY3RvciA9IGNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkuemVyb1dpZHRoKCk7CisgICAgICAg
IHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBl
LCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICAgICAgZmFjdG9yID0gMS4wOwotICAgICAgICBicmVh
azsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgICAgIGZhY3RvciA9IGNzc1Bp
eGVsc1BlckluY2ggLyBjbVBlckluY2g7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19NTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIG1tUGVy
SW5jaDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6Ci0gICAg
ICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaDsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfSU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJD
RU5UQUdFX1dJVEhfTEVOR1RIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNF
TlRBR0VfV0lUSF9OVU1CRVI6CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2Fs
Y0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVy
dHlUb0NvbXB1dGUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1ZIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKKyAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVk1BWDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICAgICAg
dmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUs
IHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgpLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yZW5kZXJWaWV3KCkpOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19MSFM6CiAgICAgICAgIEFTU0VSVChjb252
ZXJzaW9uRGF0YS5zdHlsZSgpKTsKICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNvbXB1dGlu
Z0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpKSB7CiAg
ICAgICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBwYXJlbnQncyBjb21wdXRlZCBsaW5lLWhlaWdo
dCwgb3IgZmFsbCBiYWNrIHRvIHRoZSBpbml0aWFsIGxpbmUtaGVpZ2h0IG9mIHRoaXMgZWxlbWVu
dCdzIGZvbnQgc3BhY2luZy4KLSAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnBh
cmVudFN0eWxlKCkgPyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVI
ZWlnaHQoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGluZVNwYWNp
bmcoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCkg
PyBjb252ZXJzaW9uRGF0YS5wYXJlbnRTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKSA6IGNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5j
b21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRh
LnN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOwogICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgogICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEucm9v
dFN0eWxlKCkpIHsKICAgICAgICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdMaW5l
SGVpZ2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkKLSAgICAgICAg
ICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0ZUxpbmVI
ZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7
CisgICAgICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNv
bXB1dGVMaW5lSGVpZ2h0KGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5zcGVjaWZpZWRMaW5l
SGVpZ2h0KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZhY3RvciA9IGNv
bnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBmYWN0b3IgPSAxLjA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19JTjoKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5j
aDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgotICAgICAg
ICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoIC8gNzIuMDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BDOgotICAgICAgICAvLyAxIHBjID09IDEyIHB0Ci0gICAg
ICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggKiAxMi4wIC8gNzIuMDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdU
SDoKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTlVNQkVS
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIC0xLjA7Ci0g
ICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9u
RGF0YS52aWV3cG9ydEhlaWdodEZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgotICAgICAgICBm
YWN0b3IgPSBjb252ZXJzaW9uRGF0YS52aWV3cG9ydFdpZHRoRmFjdG9yKCk7Ci0gICAgICAgIGFw
cGx5Wm9vbSA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVk1BWDoKLSAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEudmlld3BvcnRNYXhGYWN0
b3IoKTsKLSAgICAgICAgYXBwbHlab29tID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19WTUlOOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0
YS52aWV3cG9ydE1pbkZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0ZWRM
aW5lSGVpZ2h0KCk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CkBAIC02
ODEsMTQgKzcyMiwxMyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxj
TGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIC8vIFdlIGRvIG5v
dCBhcHBseSB0aGUgem9vbSBmYWN0b3Igd2hlbiB3ZSBhcmUgY29tcHV0aW5nIHRoZSB2YWx1ZSBv
ZiB0aGUgZm9udC1zaXplIHByb3BlcnR5LiBUaGUgem9vbWluZwogICAgIC8vIGZvciBmb250IHNp
emVzIGlzIG11Y2ggbW9yZSBjb21wbGljYXRlZCwgc2luY2Ugd2UgaGF2ZSB0byB3b3JyeSBhYm91
dCBlbmZvcmNpbmcgdGhlIG1pbmltdW0gZm9udCBzaXplIHByZWZlcmVuY2UKICAgICAvLyBhcyB3
ZWxsIGFzIGVuZm9yY2luZyB0aGUgaW1wbGljaXQgInNtYXJ0IG1pbmltdW0uIgotICAgIGRvdWJs
ZSByZXN1bHQgPSB2YWx1ZSAqIGZhY3RvcjsKICAgICBpZiAoY29udmVyc2lvbkRhdGEuY29tcHV0
aW5nRm9udFNpemUoKSB8fCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChwcmltaXRpdmVUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwogCiAgICAgaWYgKGFw
cGx5Wm9vbSkKLSAgICAgICAgcmVzdWx0ICo9IGNvbnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAg
ICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEuem9vbSgpOwogCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9y
TGVuZ3RoUmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAz
OTg2OTFiYjFmZDc0YTczMjEwYjEyY2YxOTk4MTg3NTMxYzBiNTljLi5kNjg2Y2MxYmE5NTc0MjE1
MGUwY2Q1NmM4MGEwYWQ4MTY5NjBmMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaApAQCAtMzksMTEgKzM5LDE0IEBAIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOworY2xh
c3MgRm9udE1ldHJpY3M7CiBjbGFzcyBQYWlyOwogY2xhc3MgUXVhZDsKIGNsYXNzIFJHQkNvbG9y
OwogY2xhc3MgUmVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVmlldzsKIAog
c3RydWN0IENTU0ZvbnRGYW1pbHk7CiBzdHJ1Y3QgTGVuZ3RoOwpAQCAtMTg4LDYgKzE5MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2Nh
bGVGYWN0b3IoQ1NTVW5pdFR5cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdW5pdFR5cGVTdHJpbmco
Q1NTVW5pdFR5cGUpOwogCisgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56b29tZWROb25DYWxj
TGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQsIGNv
bnN0IEZvbnRNZXRyaWNzKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24q
ID0gbnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlw
dGlvbiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlclZpZXcqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSk7CiAgICAgLy8gVHJ1ZSBpZiBj
b21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSB3b3VsZCBwcm9kdWNlIGlkZW50aWNhbCByZXN1bHRz
IHdoZW4gcmVzb2x2ZWQgYWdhaW5zdCBib3RoIHRoZXNlIHN0eWxlcy4KICAgICBzdGF0aWMgYm9v
bCBlcXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhLmgKaW5kZXggNjQ5NWQ4NTZlZDYxMjY0YjRkYzUxNmRiYmFlOWJhMDEwYmFjZDE1ZC4uYTM4
OTBlNGFhYzRiNjkyY2ViMGJhMmE5NDY2MjA4ZjU5NGM1MGZhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC03NSw2ICs3NSw4IEBAIHB1
YmxpYzoKICAgICBmbG9hdCB6b29tKCkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRpbmdGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250
U2l6ZTsgfQogICAgIGJvb2wgY29tcHV0aW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OyB9CisgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0Nv
bXB1dGUgPyAqbV9wcm9wZXJ0eVRvQ29tcHV0ZSA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQorICAg
IGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZp
ZXc7IH0KIAogICAgIGRvdWJsZSB2aWV3cG9ydFdpZHRoRmFjdG9yKCkgY29uc3Q7CiAgICAgZG91
YmxlIHZpZXdwb3J0SGVpZ2h0RmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjZjRi
MGQ2ZGE2OTMxZDk5OGNmZjhhNDdhM2FiZDZjYTU4ZDM3NDYwLi42NzMwOWM3MzY0OTIwZjhlNzM2
Y2U5Zjk1NzQzMWEwZmI3NzBkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNiwxNSArMTI2LDE1
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYg
bmV3Rm9udCkKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShEZWZhdWx0
Rm9udFNpemUpOwogICAgIH0KIAotICAgIGF1dG8gZm9udFN0eWxlID0gU3R5bGU6OnJlc29sdmVG
b3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50KTsK
LSAgICBpZiAoIWZvbnRTdHlsZSkKKyAgICBhdXRvIGZvbnRDYXNjYWRlID0gU3R5bGU6OnJlc29s
dmVGb3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50
KTsKKyAgICBpZiAoIWZvbnRDYXNjYWRlKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
bmV3Rm9udFNhZmVDb3B5KG5ld0ZvbnQpOyAvLyBDcmVhdGUgYSBzdHJpbmcgY29weSBzaW5jZSBu
ZXdGb250IGNhbiBiZSBkZWxldGVkIGluc2lkZSByZWFsaXplU2F2ZXMuCiAgICAgcmVhbGl6ZVNh
dmVzKCk7CiAgICAgbW9kaWZpYWJsZVN0YXRlKCkudW5wYXJzZWRGb250ID0gbmV3Rm9udFNhZmVD
b3B5OwogCi0gICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZv
bnRTZWxlY3RvcigpLCAqZm9udFN0eWxlKTsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS5mb250Lmlu
aXRpYWxpemUoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpmb250Q2FzY2FkZSk7CiAgICAgQVNT
RVJUKHN0YXRlKCkuZm9udC5yZWFsaXplZCgpKTsKICAgICBBU1NFUlQoc3RhdGUoKS5mb250Lmlz
UG9wdWxhdGVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA5ZmYyMmE3YzNkNWRl
Y2NlNmE2NGJhYWE2YWNiZWMxMTZiMTAyYzBiLi41MTZjNzNjYjBjMWY2OWZiNjlkYzgwOWIyZWJm
OGJhZTc3ZDY0N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMjkyLDEzICsyOTIsMTMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnRzTmVl
ZFVwZGF0ZShGb250U2VsZWN0b3ImIHNlbGUKICAgICB1cGRhdGUoc2VsZWN0b3IpOwogfQogCi12
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShG
b250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQor
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmluaXRpYWxpemUo
Rm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2Fk
ZSkKIHsKICAgICAvLyBCZXdhcmUhIG1fZm9udC5mb250U2VsZWN0b3IoKSBtaWdodCBub3QgcG9p
bnQgdG8gZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkhCi0gICAgQVNTRVJUKG5ld1N0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udFNlbGVjdG9yKCkgPT0gJmZvbnRTZWxlY3Rvcik7CisgICAgQVNTRVJUKGZv
bnRDYXNjYWRlLmZvbnRTZWxlY3RvcigpID09ICZmb250U2VsZWN0b3IpOwogICAgIGlmIChyZWFs
aXplZCgpKQogICAgICAgICBtX2ZvbnQuZm9udFNlbGVjdG9yKCktPnVucmVnaXN0ZXJGb3JJbnZh
bGlkYXRpb25DYWxsYmFja3MoKnRoaXMpOwotICAgIG1fZm9udCA9IG5ld1N0eWxlLmZvbnRDYXNj
YWRlKCk7CisgICAgbV9mb250ID0gZm9udENhc2NhZGU7CiAgICAgbV9mb250LnVwZGF0ZSgmZm9u
dFNlbGVjdG9yKTsKICAgICBBU1NFUlQoJmZvbnRTZWxlY3RvciA9PSBtX2ZvbnQuZm9udFNlbGVj
dG9yKCkpOwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRp
b25DYWxsYmFja3MoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDEwZjI3OGFjNWI3ZGJk
NTIwOWIwMDgzYWIwMTE1YzQ1MWRlNWYxNTkuLjk0YWZlYTM5ZjAxODkyMDNjY2Y1YTg0ZDg1YmM3
NmY1NjgwNWY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTY0LDcgKzY0LDYgQEAgY2xhc3Mg
SW1hZ2VCaXRtYXA7CiBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBPZmZzY3JlZW5DYW52YXM7CiBj
bGFzcyBQYXRoMkQ7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFRleHRNZXRyaWNzOwogCkBAIC0yMzUsNyArMjM0LDcgQEAgcHVibGljOgogICAgICAgICBG
b250UHJveHkmIG9wZXJhdG9yPShjb25zdCBGb250UHJveHkmKTsKIAogICAgICAgICBib29sIHJl
YWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9mb250LmZvbnRTZWxlY3RvcigpOyB9Ci0gICAgICAg
IHZvaWQgaW5pdGlhbGl6ZShGb250U2VsZWN0b3ImLCBjb25zdCBSZW5kZXJTdHlsZSYpOworICAg
ICAgICB2b2lkIGluaXRpYWxpemUoRm9udFNlbGVjdG9yJiwgY29uc3QgRm9udENhc2NhZGUmKTsK
ICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICAgICAg
IGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0Owog
ICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDQzMjM1NDRlNWVmNWM3
ZDk1YjY0ZTBkMGRiZGJhMjMyMzFjY2QwYzcuLjY0YWNmMWFhZWVjODAyOTM4MGJkZTBkZjQ0OGMy
NDZhNDEzMzZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTEsMTAg
KzkxLDEwIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250
KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKERlZmF1bHRGb250U2l6ZSk7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KTsKLSAgICBhdXRvIGZvbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9y
Rm9udFJhdygqZm9udFJhdywgV1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7Cisg
ICAgYXV0byBmb250Q2FzY2FkZSA9IFN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdygqZm9udFJhdywg
V1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7CiAKLSAgICBpZiAoZm9udFN0eWxl
KQotICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5mb250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9u
dFNlbGVjdG9yKCksICpmb250U3R5bGUpOworICAgIGlmIChmb250Q2FzY2FkZSkKKyAgICAgICAg
bW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZvbnRTZWxlY3Rvcigp
LCAqZm9udENhc2NhZGUpOwogfQogCiBDYW52YXNEaXJlY3Rpb24gT2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcAppbmRleCA1ZTZhMzMyMmEzMDIxMTJmNThm
YmY5ZmExZWRlNWFjMmZmYTY0NWQ5Li5kNTRmZDUxYzA4MDhjM2Q1YWY0MDIzOTE1MzVjY2FhMWZk
OGFkZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rp
b25zLmNwcApAQCAtMzksMTMgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgU3R5bGUgewogCi1lbnVtIGNsYXNzIE1pbmltdW1Gb250U2l6ZVJ1bGUgewotICAgIE5vbmUs
Ci0gICAgQWJzb2x1dGUsCi0gICAgQWJzb2x1dGVBbmRSZWxhdGl2ZQotfTsKLQotc3RhdGljIGZs
b2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXpl
LCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBNaW5pbXVtRm9udFNpemVS
dWxlIG1pbmltdW1TaXplUnVsZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorZmxvYXQgY29t
cHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wg
aXNBYnNvbHV0ZVNpemUsIGZsb2F0IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUgbWlu
aW11bVNpemVSdWxlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5ncykKIHsKICAgICAv
LyBUZXh0IHdpdGggYSAwcHggZm9udCBzaXplIHNob3VsZCBub3QgYmUgdmlzaWJsZSBhbmQgdGhl
cmVmb3JlIG5lZWRzIHRvIGJlCiAgICAgLy8gZXhlbXB0IGZyb20gbWluaW11bSBmb250IHNpemUg
cnVsZXMuIEFjaWQzIHJlbGllcyBvbiB0aGlzIGZvciBwaXhlbC1wZXJmZWN0CkBAIC02Nyw4ICs2
MSw4IEBAIHN0YXRpYyBmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoZmxv
YXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sCiAgICAgaWYgKG1pbmltdW1TaXplUnVsZSA9
PSBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25lKQogICAgICAgICByZXR1cm4gc3BlY2lmaWVkU2l6
ZTsKIAotICAgIGludCBtaW5TaXplID0gc2V0dGluZ3MubWluaW11bUZvbnRTaXplKCk7Ci0gICAg
aW50IG1pbkxvZ2ljYWxTaXplID0gc2V0dGluZ3MubWluaW11bUxvZ2ljYWxGb250U2l6ZSgpOwor
ICAgIGludCBtaW5TaXplID0gc2V0dGluZ3MubWluaW11bUZvbnRTaXplOworICAgIGludCBtaW5M
b2dpY2FsU2l6ZSA9IHNldHRpbmdzLm1pbmltdW1Mb2dpY2FsRm9udFNpemU7CiAgICAgZmxvYXQg
em9vbWVkU2l6ZSA9IHNwZWNpZmllZFNpemUgKiB6b29tRmFjdG9yOwogCiAgICAgLy8gQXBwbHkg
dGhlIGhhcmQgbWluaW11bSBmaXJzdC4gV2Ugb25seSBhcHBseSB0aGUgaGFyZCBtaW5pbXVtIGlm
IGFmdGVyIHpvb21pbmcgd2UncmUgc3RpbGwgdG9vIHNtYWxsLgpAQCAtOTUsMTIgKzg5LDEyIEBA
IGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRT
aXplLCBib29sIGlzQWJzb2x1dGVTaXplCiAgICAgICAgIGlmIChmcmFtZSAmJiBzdHlsZS0+dGV4
dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgICAgICB6b29tRmFjdG9yICo9IGZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIH0KLSAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6
ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFj
dG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25lIDogTWluaW11
bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0dGluZ3MoKSk7
CisgICAgcmV0dXJuIGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVjaWZpZWRT
aXplLCBpc0Fic29sdXRlU2l6ZSwgem9vbUZhY3RvciwgdXNlU1ZHWm9vbVJ1bGVzID8gTWluaW11
bUZvbnRTaXplUnVsZTo6Tm9uZSA6IE1pbmltdW1Gb250U2l6ZVJ1bGU6OkFic29sdXRlQW5kUmVs
YXRpdmUsIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkpOwogfQogCiBmbG9hdCBjb21wdXRlZEZv
bnRTaXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KGZsb2F0IHNwZWNpZmllZFNp
emUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHpvb21GYWN0b3IsIGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRT
aXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFjdG9yLCBNaW5pbXVtRm9u
dFNpemVSdWxlOjpBYnNvbHV0ZSwgZG9jdW1lbnQuc2V0dGluZ3MoKSk7CisgICAgcmV0dXJuIGNv
bXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVjaWZpZWRTaXplLCBpc0Fic29sdXRl
U2l6ZSwgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGUsIGRvY3VtZW50
LnNldHRpbmdzVmFsdWVzKCkpOwogfQogCiBjb25zdCBpbnQgZm9udFNpemVUYWJsZU1heCA9IDE2
OwpAQCAtMTQ1LDIyICsxMzksMjYgQEAgc3RhdGljIGNvbnN0IGludCBzdHJpY3RGb250U2l6ZVRh
YmxlW2ZvbnRTaXplVGFibGVNYXggLSBmb250U2l6ZVRhYmxlTWluICsgMV1bdG8KIC8vIGZhY3Rv
cnMgZm9yIGVhY2gga2V5d29yZCB2YWx1ZS4KIHN0YXRpYyBjb25zdCBmbG9hdCBmb250U2l6ZUZh
Y3RvcnNbdG90YWxLZXl3b3Jkc10gPSB7IDAuNjBmLCAwLjc1ZiwgMC44OWYsIDEuMGYsIDEuMmYs
IDEuNWYsIDIuMGYsIDMuMGYgfTsKIAotZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVk
IGtleXdvcmRJRCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpCitmbG9hdCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElE
LCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMm
IHNldHRpbmdzLCBib29sIGluUXVpcmtzTW9kZSkKIHsKLSAgICBib29sIHF1aXJrc01vZGUgPSBk
b2N1bWVudC5pblF1aXJrc01vZGUoKTsKLSAgICBpbnQgbWVkaXVtU2l6ZSA9IHNob3VsZFVzZUZp
eGVkRGVmYXVsdFNpemUgPyBkb2N1bWVudC5zZXR0aW5ncygpLmRlZmF1bHRGaXhlZEZvbnRTaXpl
KCkgOiBkb2N1bWVudC5zZXR0aW5ncygpLmRlZmF1bHRGb250U2l6ZSgpOworICAgIGludCBtZWRp
dW1TaXplID0gc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSA/IHNldHRpbmdzLmRlZmF1bHRGaXhl
ZEZvbnRTaXplIDogc2V0dGluZ3MuZGVmYXVsdEZvbnRTaXplOwogICAgIGlmIChtZWRpdW1TaXpl
ID49IGZvbnRTaXplVGFibGVNaW4gJiYgbWVkaXVtU2l6ZSA8PSBmb250U2l6ZVRhYmxlTWF4KSB7
CiAgICAgICAgIC8vIExvb2sgdXAgdGhlIGVudHJ5IGluIHRoZSB0YWJsZS4KICAgICAgICAgaW50
IHJvdyA9IG1lZGl1bVNpemUgLSBmb250U2l6ZVRhYmxlTWluOwogICAgICAgICBpbnQgY29sID0g
KGtleXdvcmRJRCAtIENTU1ZhbHVlWHhTbWFsbCk7Ci0gICAgICAgIHJldHVybiBxdWlya3NNb2Rl
ID8gcXVpcmtzRm9udFNpemVUYWJsZVtyb3ddW2NvbF0gOiBzdHJpY3RGb250U2l6ZVRhYmxlW3Jv
d11bY29sXTsKKyAgICAgICAgcmV0dXJuIGluUXVpcmtzTW9kZSA/IHF1aXJrc0ZvbnRTaXplVGFi
bGVbcm93XVtjb2xdIDogc3RyaWN0Rm9udFNpemVUYWJsZVtyb3ddW2NvbF07CiAgICAgfQogCiAg
ICAgLy8gVmFsdWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdGhlIHRhYmxlLiBBcHBseSB0aGUg
c2NhbGUgZmFjdG9yIGluc3RlYWQuCi0gICAgZmxvYXQgbWluTG9naWNhbFNpemUgPSBzdGQ6Om1h
eDxmbG9hdD4oZG9jdW1lbnQuc2V0dGluZ3MoKS5taW5pbXVtTG9naWNhbEZvbnRTaXplKCksIDEp
OworICAgIGZsb2F0IG1pbkxvZ2ljYWxTaXplID0gc3RkOjptYXg8ZmxvYXQ+KHNldHRpbmdzLm1p
bmltdW1Mb2dpY2FsRm9udFNpemUsIDEpOwogICAgIHJldHVybiBzdGQ6Om1heChmb250U2l6ZUZh
Y3RvcnNba2V5d29yZElEIC0gQ1NTVmFsdWVYeFNtYWxsXSAqIG1lZGl1bVNpemUsIG1pbkxvZ2lj
YWxTaXplKTsKIH0KIAorZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJ
RCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCit7CisgICAgcmV0dXJuIGZvbnRTaXplRm9yS2V5d29yZChrZXl3b3JkSUQsIHNob3VsZFVz
ZUZpeGVkRGVmYXVsdFNpemUsIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCksIGRvY3VtZW50Lmlu
UXVpcmtzTW9kZSgpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyBpbnQgZmlu
ZE5lYXJlc3RMZWdhY3lGb250U2l6ZShpbnQgcGl4ZWxGb250U2l6ZSwgY29uc3QgVCogdGFibGUs
IGludCBtdWx0aXBsaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVGb250U2l6ZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6
ZUZ1bmN0aW9ucy5oCmluZGV4IGQzODViOWEwMjQ4ODUyZDRhYTEyNmZmMTE2NTgwMTVhNzZkYjBl
NmQuLjRlMzkxMmU2ZTU3NTRlZjA5NmJjMjg1ZDZmNmNkNmM1NzAyYmExMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTMzLDExICszNCwxOSBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIFN0eWxlIHsKIAorZW51bSBjbGFzcyBNaW5pbXVtRm9udFNpemVSdWxlIHsKKyAgICBO
b25lLAorICAgIEFic29sdXRlLAorICAgIEFic29sdXRlQW5kUmVsYXRpdmUKK307CisKK2Zsb2F0
IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBi
b29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBNaW5pbXVtRm9udFNpemVSdWxl
LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJik7CiBmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgYm9v
bCB1c2VTVkdab29tUnVsZXMsIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgRG9jdW1lbnQmKTsK
IGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZUZvclNWR0lubGluZVRleHQo
ZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxvYXQgem9vbUZhY3Rv
ciwgY29uc3QgRG9jdW1lbnQmKTsKIAogLy8gR2l2ZW4gYSBDU1Mga2V5d29yZCBpZCBpbiB0aGUg
cmFuZ2UgKENTU1ZhbHVlWHhTbWFsbCB0byBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlKSwgdGhpcyBm
dW5jdGlvbiB3aWxsIHJldHVybgogLy8gdGhlIGNvcnJlY3QgZm9udCBzaXplIHNjYWxlZCByZWxh
dGl2ZSB0byB0aGUgdXNlcidzIGRlZmF1bHQgKG1lZGl1bSkuCitmbG9hdCBmb250U2l6ZUZvcktl
eXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUs
IGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBib29sIGluUXVpcmtzTW9kZSA9IGZhbHNlKTsKIGZs
b2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxkVXNl
Rml4ZWREZWZhdWx0U2l6ZSwgY29uc3QgRG9jdW1lbnQmKTsKIAogLy8gR2l2ZW4gYSBmb250IHNp
emUgaW4gcGl4ZWwsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGVnYWN5IGZvbnQgc2l6ZSBi
ZXR3ZWVuIDEgYW5kIDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckZvbnRSYXcuY3BwCmluZGV4IDM3ODU4YTMwMmVhNWU2MTJjOTUzN2VkOTcwZDQ4ODRmMzUyYmJl
YTQuLjA5YWQ5NWQxNzI1YzFjMzc5MzdhZGE5NGQ4ZTEzMDE1NTA2MjQ0YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaCIKLSNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKQEAgLTQ3LDE3ICs0Niw4IEBAIG5hbWVz
cGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7
CiAKLU9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3
JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYgZm9udERlc2NyaXB0aW9uLCBEb2N1
bWVudCYgZG9jdW1lbnQpCitPcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXco
Y29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmIGZvbnREZXNj
cmlwdGlvbiwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZm9udFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwotCi0gICAgYXV0byBnZXRQYXJlbnRTdHlsZSA9IFsmXSAoKSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHsKLSAgICAgICAgYXV0byBwYXJlbnRTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihmb250U3R5bGUpOwotICAgICAgICBwYXJlbnRTdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSk7Ci0gICAgICAgIHBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICByZXR1cm4gcGFyZW50U3R5bGU7Ci0gICAgfTsK
LQogICAgIC8vIE1hcCB0aGUgZm9udCBwcm9wZXJ0eSBsb25naGFuZHMgaW50byB0aGUgc3R5bGUu
CiAgICAgZmxvYXQgcGFyZW50U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCk7
CiAKQEAgLTkzLDcgKzgzLDcgQEAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250
UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgaWYg
KENTU1ZhbHVlSUQgc2l6ZUlkZW50aWZpZXIgPSBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemVB
c0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgYXV0byBzaXplID0gU3R5bGU6OmZvbnRTaXpl
Rm9yS2V5d29yZChzaXplSWRlbnRpZmllciwgIW9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXpl
LCBkb2N1bWVudCk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZShzaXplKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoU3R5
bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250RGVzY3JpcHRp
b24uaXNBYnNvbHV0ZVNpemUoKSwgZmFsc2UsICZmb250U3R5bGUsIGRvY3VtZW50KSk7CisgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZv
bnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVT
aXplKCksIDEuMCwgTWluaW11bUZvbnRTaXplUnVsZTo6Tm9uZSwgZG9jdW1lbnQuc2V0dGluZ3NW
YWx1ZXMoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xOTYsOSArMTg2LDkgQEAgT3B0aW9u
YWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcs
IEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgfQogICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVyY2VudCkgewog
ICAgICAgICByZXR1cm4gc3dpdGNoT24obGVuZ3RoT3JQZXJjZW50LCBbJl0gKGNvbnN0IENTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoUmF3JiBsZW5ndGgpIHsKLSAgICAgICAgICAgIGF1
dG8gcGFyZW50U3R5bGUgPSBnZXRQYXJlbnRTdHlsZSgpOwotICAgICAgICAgICAgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSB7IHBhcmVudFN0eWxlLmdldCgpLCBudWxs
cHRyLCBwYXJlbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCAxLjBmLCBDU1NQ
cm9wZXJ0eUZvbnRTaXplIH07Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9u
RGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSkpOworICAgICAgICAgICAgYXV0byBmb250
Q2FzY2FkZSA9IEZvbnRDYXNjYWRlKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSk7CisgICAgICAgICAgICBmb250Q2FzY2FkZS51cGRhdGUoJmRvY3VtZW50LmZvbnRTZWxl
Y3RvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUobGVuZ3RoLnR5cGUs
IGxlbmd0aC52YWx1ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgJmZvbnRDYXNjYWRlLmZvbnRNZXRy
aWNzKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgJmZvbnRDYXNjYWRlLmZvbnRE
ZXNjcmlwdGlvbigpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkpKTsKICAgICAgICAgfSwgWyZdIChk
b3VibGUgcGVyY2VudGFnZSkgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PigocGFyZW50U2l6ZSAqIHBlcmNlbnRhZ2UpIC8gMTAwLjApOwogICAgICAgICB9KTsKQEAgLTIw
OSwzMSArMTk5LDExIEBAIE9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhj
b25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGZvbnRSYXcu
bGluZUhlaWdodCkgewotICAgICAgICBPcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBzd2l0
Y2hPbigqZm9udFJhdy5saW5lSGVpZ2h0LCBbJl0gKENTU1ZhbHVlSUQgaWRlbnQpIHsKLSAgICAg
ICAgICAgIGlmIChpZGVudCA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8TGVuZ3RoPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihXVEY6Om51bGxvcHQpOwotICAgICAg
ICB9LCBbJl0gKGRvdWJsZSBudW1iZXIpIHsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxM
ZW5ndGg+KExlbmd0aChudW1iZXIgKiAxMDAuMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwotICAg
ICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoT3JQZXJj
ZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2l0Y2hPbihs
ZW5ndGhPclBlcmNlbnQsIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5n
dGhSYXcmIGxlbmd0aCkgewotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50U3R5bGUgPSBnZXRQ
YXJlbnRTdHlsZSgpOwotICAgICAgICAgICAgICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
Y29udmVyc2lvbkRhdGEgeyBwYXJlbnRTdHlsZS5nZXQoKSwgbnVsbHB0ciwgcGFyZW50U3R5bGUu
Z2V0KCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMS4wZiwgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
IH07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKGNsYW1w
VG88ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShj
b252ZXJzaW9uRGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSksIG1pblZhbHVlRm9yQ3Nz
TGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIExlbmd0aFR5cGU6OkZpeGVkKSk7Ci0gICAg
ICAgICAgICB9LCBbJl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKChmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXpl
KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnRhZ2UpKSAvIDEwMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpZiAobGluZUhl
aWdodCkKLSAgICAgICAgICAgIGZvbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KFdURk1vdmUobGluZUhl
aWdodC52YWx1ZSgpKSk7Ci0gICAgfQotCi0gICAgZm9udFN0eWxlLnNldEZvbnREZXNjcmlwdGlv
bihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwotICAgIGZvbnRTdHlsZS5mb250Q2FzY2FkZSgp
LnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOworICAgIC8vIExpbmUgaGVpZ2h0IGlz
IG5vbi1leGlzdGVudCBvbiBGb250Q2FzY2FkZSwgc28gaXMgbGVmdCB1bmhhbmRsZWQuCiAKLSAg
ICByZXR1cm4gZm9udFN0eWxlOworICAgIGF1dG8gZm9udENhc2NhZGUgPSBGb250Q2FzY2FkZShX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGZvbnRDYXNjYWRlLnVwZGF0ZSgmZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOworICAgIHJldHVybiBmb250Q2FzY2FkZTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCmluZGV4IDA2MjUy
OTVlOGNhY2UxMzRiNjIwOGYxOTJjNGE4OTNkZGUxMmEyZmMuLjFhODZhOWYxNTg4ZGNlMTc4YTQz
OTBkNzQ5MzU0MGZmODkyYWIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZUZvckZvbnRSYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmgKQEAgLTMzLDggKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb247Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFtZXNwYWNlIENTU1Byb3BlcnR5
UGFyc2VySGVscGVycyB7CiBzdHJ1Y3QgRm9udFJhdzsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0
IEZvbnRSYXc7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLU9wdGlvbmFsPFJlbmRlclN0eWxlPiBy
ZXNvbHZlRm9yRm9udFJhdyhjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXcm
LCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYsIERvY3VtZW50Jik7CitPcHRpb25hbDxGb250Q2Fz
Y2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpG
b250UmF3JiwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBEb2N1bWVudCYpOwogCiB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422208</attachid>
            <date>2021-03-04 02:32:06 -0800</date>
            <delta_ts>2021-03-04 07:27:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222665-20210304103205.patch</filename>
            <type>text/plain</type>
            <size>31325</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NzJkZDVlZGUxNjBk
YzJmYzRlMmIzZWQ5NGY3MzgwN2Q0NDRkOC4uMWViNGQ2YzhmNjcyZTI5NWRjYjk3OWZkMzNkMzAz
N2MzZDdkMmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBBbGxvdyBDU1MgZm9udC1zdHls
aW5nIGZvciBjYW52YXMgd2l0aG91dCBSZW5kZXJTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlIHRvIGFsbG93IGZvcgorICAgICAgICBpdHMgdXNlIHdp
dGhvdXQgcmVxdWlyaW5nIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgYW5kIFJlbmRlclN0eWxl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2Fs
Y0xlbmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnByb3BlcnR5VG9Db21wdXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlbmRlclZpZXcgY29u
c3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgICogc3R5bGUvU3R5bGVGb250U2l6ZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oOgorCiAyMDIxLTAzLTAxICBDaHJpcyBM
b3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBkYXRhIGJhY2tpbmcg
Z2VuZXJhdGVkIGdsb2JhbCBBdG9tU3RyaW5nIHZhbHVlcyBhY2Nlc3NpYmxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2Nk
YWY0MWRmZDg3NjZiOGE3ZTljLi42M2UyOTYxNjAzNDczMDQ5N2JmYTA5NDQzNWYwYTJjMjNiOWE2
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC01ODMsOTYgKzU4NCwxNDUgQEAgc3RhdGlj
IGNvbnN0ZXhwciBkb3VibGUgbW1QZXJJbmNoID0gMjUuNDsKIHN0YXRpYyBjb25zdGV4cHIgZG91
YmxlIGNtUGVySW5jaCA9IDIuNTQ7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBRUGVySW5jaCA9
IDI1LjQgKiA0LjA7CiAKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVk
Tm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFs
dWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRNZXRyaWNzKiBm
b250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2NyaXB0aW9u
LCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uLCBjb25z
dCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQoreworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkg
eworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX1FVSVJLWV9FTVM6CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAg
ICByZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZv
bnREZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRl
ZFNpemUoKSkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgorICAgICAg
ICBBU1NFUlQoZm9udE1ldHJpY3MpOworICAgICAgICBpZiAoZm9udE1ldHJpY3MtPmhhc1hIZWln
aHQoKSkKKyAgICAgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+eEhlaWdodCgpICogdmFsdWU7
CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm4gKChwcm9w
ZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+
c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgLyAyLjAg
KiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICAgICAgaWYgKCFy
b290Rm9udERlc2NyaXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBy
ZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IHJvb3RG
b250RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6IHJvb3RGb250RGVzY3JpcHRpb24tPmNv
bXB1dGVkU2l6ZSgpKSAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6Cisg
ICAgICAgIEFTU0VSVChmb250TWV0cmljcyk7CisgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+
emVyb1dpZHRoKCkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006CisgICAgICAg
IHJldHVybiBjc3NQaXhlbHNQZXJJbmNoIC8gY21QZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBD
U1NVbml0VHlwZTo6Q1NTX01NOgorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIG1t
UGVySW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgICAgICBy
ZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIFFQZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX0xIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19JTjoKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggKiB2
YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6CisgICAgICAgIHJldHVybiBjc3NQ
aXhlbHNQZXJJbmNoIC8gNzIuMCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19Q
QzoKKyAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVy
SW5jaCAqIDEyLjAgLyA3Mi4wICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NB
TENfUEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FM
Q19QRVJDRU5UQUdFX1dJVEhfTlVNQkVSOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIC0xLjA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgorICAg
ICAgICByZXR1cm4gcmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoKS5oZWlnaHQoKSAvIDEwMC4wICogdmFsdWUgOiAwOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19WVzoKKyAgICAgICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3
LT52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAvIDEwMC4wICogdmFs
dWUgOiAwOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgorICAgICAgICBpZiAocmVu
ZGVyVmlldykgeworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHMud2lkdGgoKSwgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy5oZWlnaHQoKSkgLyAx
MDAuMCAqIHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKKyAgICAg
ICAgICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyA9IHJlbmRlclZp
ZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1pbih2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLndpZHRoKCksIHZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAwLjAgKiB2YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KK30KKwogZG91
YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTVW5pdFR5cGUgcHJp
bWl0aXZlVHlwZSwgZG91YmxlIHZhbHVlKQogewotICAgIGRvdWJsZSBmYWN0b3I7CiAgICAgYm9v
bCBhcHBseVpvb20gPSB0cnVlOwogCiAgICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKSB7CiAgICAg
Y2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJ
UktZX0VNUzoKICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwotICAgICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpID8gY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpIDogY29udmVy
c2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAg
ICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVU
eXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgbnVsbHB0ciwg
JmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgotICAgICAgICBBU1NFUlQoY29u
dmVyc2lvbkRhdGEuc3R5bGUoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIGEgYnVnIHJp
Z2h0IG5vdyB3aGVyZSB0aGUgem9vbSB3aWxsIGJlIGFwcGxpZWQgdHdpY2UgdG8gRVggdW5pdHMu
CiAgICAgICAgIC8vIFdlIHJlYWxseSBuZWVkIHRvIGNvbXB1dGUgRVggdXNpbmcgZm9udE1ldHJp
Y3MgZm9yIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWRTaXplIGFuZCBub3QgdXNlCiAgICAgICAgIC8v
IG91ciBhY3R1YWwgY29uc3RydWN0ZWQgcmVuZGVyaW5nIGZvbnQuCi0gICAgICAgIGlmIChjb252
ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLmhhc1hIZWlnaHQoKSkKLSAgICAgICAg
ICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkueEhlaWdo
dCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmYWN0b3IgPSAoY29udmVyc2lvbkRhdGEu
Y29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlw
dGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNj
cmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpKSAvIDIuMDsKKyAgICAgICAgQVNTRVJUKGNvbnZlcnNp
b25EYXRhLnN0eWxlKCkpOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNM
ZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5
VG9Db21wdXRlKCksICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLCAmY29u
dmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkpOwogICAgICAgICBicmVhazsK
KwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SRU1TOgotICAgICAgICBpZiAoY29udmVyc2lv
bkRhdGEucm9vdFN0eWxlKCkpCi0gICAgICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5j
b21wdXRpbmdGb250U2l6ZSgpID8gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmZvbnREZXNj
cmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5m
b250RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZmFjdG9yID0gMS4wOworICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNM
ZW5ndGhEb3VibGUocHJpbWl0aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5
VG9Db21wdXRlKCksIG51bGxwdHIsIG51bGxwdHIsIGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgp
ID8gJmNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSA6IG51bGxw
dHIpOwogICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CiAg
ICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKLSAgICAgICAgZmFjdG9yID0g
Y29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS56ZXJvV2lkdGgoKTsKKyAgICAg
ICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5
cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgpLCAmY29udmVyc2lv
bkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSk7CiAgICAgICAgIGJyZWFrOworCiAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1BYOgotICAgICAgICBmYWN0b3IgPSAxLjA7Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DTToKLSAgICAgICAgZmFjdG9yID0gY3Nz
UGl4ZWxzUGVySW5jaCAvIGNtUGVySW5jaDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX01NOgotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoIC8gbW1Q
ZXJJbmNoOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKLSAg
ICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIFFQZXJJbmNoOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTEhTOgotICAgICAgICBBU1NFUlQoY29udmVy
c2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdM
aW5lSGVpZ2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkgewotICAg
ICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgcGFyZW50J3MgY29tcHV0ZWQgbGluZS1oZWlnaHQs
IG9yIGZhbGwgYmFjayB0byB0aGUgaW5pdGlhbCBsaW5lLWhlaWdodCBvZiB0aGlzIGVsZW1lbnQn
cyBmb250IHNwYWNpbmcuCi0gICAgICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5wYXJl
bnRTdHlsZSgpID8gY29udmVyc2lvbkRhdGEucGFyZW50U3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVp
Z2h0KCkgOiBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLmxpbmVTcGFjaW5n
KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEu
c3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19STEhTOgotICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEucm9vdFN0
eWxlKCkpIHsKLSAgICAgICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdMaW5lSGVp
Z2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkKLSAgICAgICAgICAg
ICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29tcHV0ZUxpbmVIZWln
aHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEu
cm9vdFN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGZhY3RvciA9IDEuMDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0lOOgotICAgICAgICBmYWN0b3IgPSBjc3NQaXhlbHNQZXJJbmNoOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Ci0gICAgICAgIGZhY3RvciA9IGNz
c1BpeGVsc1BlckluY2ggLyA3Mi4wOwotICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUEM6Ci0gICAgICAgIC8vIDEgcGMgPT0gMTIgcHQKLSAgICAgICAgZmFjdG9yID0g
Y3NzUGl4ZWxzUGVySW5jaCAqIDEyLjAgLyA3Mi4wOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOgogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gLTEuMDsKKyAgICAgICAgdmFsdWUg
PSBjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVl
LCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0eVRvQ29tcHV0ZSgpKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgICAgIGZhY3RvciA9IGNvbnZlcnNp
b25EYXRhLnZpZXdwb3J0SGVpZ2h0RmFjdG9yKCk7Ci0gICAgICAgIGFwcGx5Wm9vbSA9IGZhbHNl
OworICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS52aWV3cG9ydEhlaWdodEZhY3Rvcigp
OwogICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WVzoKLSAgICAg
ICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEudmlld3BvcnRXaWR0aEZhY3RvcigpOwotICAgICAg
ICBhcHBseVpvb20gPSBmYWxzZTsKKyAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEudmll
d3BvcnRXaWR0aEZhY3RvcigpOwogICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19WTUFYOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS52aWV3cG9ydE1h
eEZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsKKyAgICAgICAgdmFsdWUgKj0g
Y29udmVyc2lvbkRhdGEudmlld3BvcnRNYXhGYWN0b3IoKTsKICAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1JTjoKLSAgICAgICAgZmFjdG9yID0gY29udmVyc2lv
bkRhdGEudmlld3BvcnRNaW5GYWN0b3IoKTsKLSAgICAgICAgYXBwbHlab29tID0gZmFsc2U7Cisg
ICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0TWluRmFjdG9yKCk7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKKyAgICAgICAgQVNT
RVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOworICAgICAgICBpZiAoY29udmVyc2lvbkRhdGEu
Y29tcHV0aW5nTGluZUhlaWdodCgpIHx8IGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXpl
KCkpIHsKKyAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHBhcmVudCdzIGNvbXB1dGVkIGxp
bmUtaGVpZ2h0LCBvciBmYWxsIGJhY2sgdG8gdGhlIGluaXRpYWwgbGluZS1oZWlnaHQgb2YgdGhp
cyBlbGVtZW50J3MgZm9udCBzcGFjaW5nLgorICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lv
bkRhdGEucGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCktPmNvbXB1
dGVkTGluZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5s
aW5lU3BhY2luZygpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHZhbHVlICo9IGNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOwogICAgICAgICBicmVhazsK
KworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19STEhTOgorICAgICAgICBpZiAoY29udmVyc2lv
bkRhdGEucm9vdFN0eWxlKCkpIHsKKyAgICAgICAgICAgIGlmIChjb252ZXJzaW9uRGF0YS5jb21w
dXRpbmdMaW5lSGVpZ2h0KCkgfHwgY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSkK
KyAgICAgICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Y29t
cHV0ZUxpbmVIZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPnNwZWNpZmllZExpbmVI
ZWlnaHQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWUgKj0gY29u
dmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiAtMS4wOwpAQCAtNjgxLDE0ICs3MzEsMTMgQEAgZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb24KICAgICAvLyBXZSBkbyBub3QgYXBwbHkgdGhlIHpvb20gZmFjdG9y
IHdoZW4gd2UgYXJlIGNvbXB1dGluZyB0aGUgdmFsdWUgb2YgdGhlIGZvbnQtc2l6ZSBwcm9wZXJ0
eS4gVGhlIHpvb21pbmcKICAgICAvLyBmb3IgZm9udCBzaXplcyBpcyBtdWNoIG1vcmUgY29tcGxp
Y2F0ZWQsIHNpbmNlIHdlIGhhdmUgdG8gd29ycnkgYWJvdXQgZW5mb3JjaW5nIHRoZSBtaW5pbXVt
IGZvbnQgc2l6ZSBwcmVmZXJlbmNlCiAgICAgLy8gYXMgd2VsbCBhcyBlbmZvcmNpbmcgdGhlIGlt
cGxpY2l0ICJzbWFydCBtaW5pbXVtLiIKLSAgICBkb3VibGUgcmVzdWx0ID0gdmFsdWUgKiBmYWN0
b3I7CiAgICAgaWYgKGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkgfHwgaXNGb250
UmVsYXRpdmVMZW5ndGgocHJpbWl0aXZlVHlwZSkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIGlmIChhcHBseVpvb20pCi0gICAgICAgIHJlc3Vs
dCAqPSBjb252ZXJzaW9uRGF0YS56b29tKCk7CisgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25E
YXRhLnpvb20oKTsKIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHZhbHVlOwogfQog
CiBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjplcXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlQSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlQikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggMzk4NjkxYmIxZmQ3NGE3MzIxMGIxMmNm
MTk5ODE4NzUzMWMwYjU5Yy4uZDY4NmNjMWJhOTU3NDIxNTBlMGNkNTZjODBhMGFkODE2OTYwZjIw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTM5LDExICszOSwx
NCBAQCBjbGFzcyBDU1NDYWxjVmFsdWU7CiBjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
OwogY2xhc3MgQ291bnRlcjsKIGNsYXNzIERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOwor
Y2xhc3MgRm9udENhc2NhZGVEZXNjcmlwdGlvbjsKK2NsYXNzIEZvbnRNZXRyaWNzOwogY2xhc3Mg
UGFpcjsKIGNsYXNzIFF1YWQ7CiBjbGFzcyBSR0JDb2xvcjsKIGNsYXNzIFJlY3Q7CiBjbGFzcyBS
ZW5kZXJTdHlsZTsKK2NsYXNzIFJlbmRlclZpZXc7CiAKIHN0cnVjdCBDU1NGb250RmFtaWx5Owog
c3RydWN0IExlbmd0aDsKQEAgLTE4OCw2ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGRv
dWJsZSBjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKENTU1VuaXRUeXBlKTsK
ICAgICBzdGF0aWMgU3RyaW5nIHVuaXRUeXBlU3RyaW5nKENTU1VuaXRUeXBlKTsKIAorICAgIHN0
YXRpYyBkb3VibGUgY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlw
ZSwgZG91YmxlIHZhbHVlLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBGb250TWV0cmljcyogPSBudWxs
cHRyLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24qIHJvb3RGb250RGVzY3JpcHRpb24gPSBudWxscHRyLCBjb25zdCBS
ZW5kZXJWaWV3KiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBkb3VibGUgY29tcHV0ZU5vbkNhbGNM
ZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIENTU1VuaXRUeXBl
LCBkb3VibGUgdmFsdWUpOwogICAgIC8vIFRydWUgaWYgY29tcHV0ZU5vbkNhbGNMZW5ndGhEb3Vi
bGUgd291bGQgcHJvZHVjZSBpZGVudGljYWwgcmVzdWx0cyB3aGVuIHJlc29sdmVkIGFnYWluc3Qg
Ym90aCB0aGVzZSBzdHlsZXMuCiAgICAgc3RhdGljIGJvb2wgZXF1YWxGb3JMZW5ndGhSZXNvbHV0
aW9uKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCmluZGV4IDY0OTVkODU2ZWQ2
MTI2NGI0ZGM1MTZkYmJhZTliYTAxMGJhY2QxNWQuLmEzODkwZTRhYWM0YjY5MmNlYjBiYTJhOTQ2
NjIwOGY1OTRjNTBmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgem9vbSgp
IGNvbnN0OwogICAgIGJvb2wgY29tcHV0aW5nRm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX3By
b3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemU7IH0KICAgICBib29sIGNvbXB1
dGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENT
U1Byb3BlcnR5TGluZUhlaWdodDsgfQorICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1
dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID8gKm1fcHJvcGVydHlUb0Nv
bXB1dGUgOiBDU1NQcm9wZXJ0eUludmFsaWQ7IH0KKyAgICBjb25zdCBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKICAgICBkb3VibGUgdmll
d3BvcnRXaWR0aEZhY3RvcigpIGNvbnN0OwogICAgIGRvdWJsZSB2aWV3cG9ydEhlaWdodEZhY3Rv
cigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggY2Y0YjBkNmRhNjkzMWQ5OThjZmY4YTQ3YTNh
YmQ2Y2E1OGQzNzQ2MC4uNjczMDljNzM2NDkyMGY4ZTczNmNlOWY5NTc0MzFhMGZiNzcwZDk3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCkBAIC0xMjYsMTUgKzEyNiwxNSBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQpCiAgICAgICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoRGVmYXVsdEZvbnRTaXplKTsKICAgICB9CiAKLSAg
ICBhdXRvIGZvbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdygqZm9udFJhdywgV1RG
TW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7Ci0gICAgaWYgKCFmb250U3R5bGUpCisg
ICAgYXV0byBmb250Q2FzY2FkZSA9IFN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdygqZm9udFJhdywg
V1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7CisgICAgaWYgKCFmb250Q2FzY2Fk
ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG5ld0ZvbnRTYWZlQ29weShuZXdGb250
KTsgLy8gQ3JlYXRlIGEgc3RyaW5nIGNvcHkgc2luY2UgbmV3Rm9udCBjYW4gYmUgZGVsZXRlZCBp
bnNpZGUgcmVhbGl6ZVNhdmVzLgogICAgIHJlYWxpemVTYXZlcygpOwogICAgIG1vZGlmaWFibGVT
dGF0ZSgpLnVucGFyc2VkRm9udCA9IG5ld0ZvbnRTYWZlQ29weTsKIAotICAgIG1vZGlmaWFibGVT
dGF0ZSgpLmZvbnQuaW5pdGlhbGl6ZShkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmZvbnRTdHls
ZSk7CisgICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZvbnRT
ZWxlY3RvcigpLCAqZm9udENhc2NhZGUpOwogICAgIEFTU0VSVChzdGF0ZSgpLmZvbnQucmVhbGl6
ZWQoKSk7CiAgICAgQVNTRVJUKHN0YXRlKCkuZm9udC5pc1BvcHVsYXRlZCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggOWZmMjJhN2MzZDVkZWNjZTZhNjRiYWFhNmFjYmVjMTE2YjEw
MmMwYi4uNTE2YzczY2IwYzFmNjlmYjY5ZGM4MDliMmViZjhiYWU3N2Q2NDdjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTI5MiwxMyArMjkyLDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpmb250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJiBz
ZWxlCiAgICAgdXBkYXRlKHNlbGVjdG9yKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpGb250UHJveHk6OmluaXRpYWxpemUoRm9udFNlbGVjdG9yJiBmb250U2VsZWN0
b3IsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Rm9udFByb3h5Ojppbml0aWFsaXplKEZvbnRTZWxlY3RvciYgZm9udFNlbGVj
dG9yLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udENhc2NhZGUpCiB7CiAgICAgLy8gQmV3YXJlISBt
X2ZvbnQuZm9udFNlbGVjdG9yKCkgbWlnaHQgbm90IHBvaW50IHRvIGRvY3VtZW50LmZvbnRTZWxl
Y3RvcigpIQotICAgIEFTU0VSVChuZXdTdHlsZS5mb250Q2FzY2FkZSgpLmZvbnRTZWxlY3Rvcigp
ID09ICZmb250U2VsZWN0b3IpOworICAgIEFTU0VSVChmb250Q2FzY2FkZS5mb250U2VsZWN0b3Io
KSA9PSAmZm9udFNlbGVjdG9yKTsKICAgICBpZiAocmVhbGl6ZWQoKSkKICAgICAgICAgbV9mb250
LmZvbnRTZWxlY3RvcigpLT51bnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKCp0aGlz
KTsKLSAgICBtX2ZvbnQgPSBuZXdTdHlsZS5mb250Q2FzY2FkZSgpOworICAgIG1fZm9udCA9IGZv
bnRDYXNjYWRlOwogICAgIG1fZm9udC51cGRhdGUoJmZvbnRTZWxlY3Rvcik7CiAgICAgQVNTRVJU
KCZmb250U2VsZWN0b3IgPT0gbV9mb250LmZvbnRTZWxlY3RvcigpKTsKICAgICBtX2ZvbnQuZm9u
dFNlbGVjdG9yKCktPnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaAppbmRleCAxMGYyNzhhYzViN2RiZDUyMDliMDA4M2FiMDExNWM0NTFkZTVm
MTU5Li45NGFmZWEzOWYwMTg5MjAzY2NmNWE4NGQ4NWJjNzZmNTY4MDVmNDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5oCkBAIC02NCw3ICs2NCw2IEBAIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgSW1h
Z2VEYXRhOwogY2xhc3MgT2Zmc2NyZWVuQ2FudmFzOwogY2xhc3MgUGF0aDJEOwotY2xhc3MgUmVu
ZGVyU3R5bGU7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBUZXh0TWV0cmljczsKIApAQCAt
MjM1LDcgKzIzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgRm9udFByb3h5JiBvcGVyYXRvcj0oY29u
c3QgRm9udFByb3h5Jik7CiAKICAgICAgICAgYm9vbCByZWFsaXplZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9udC5mb250U2VsZWN0b3IoKTsgfQotICAgICAgICB2b2lkIGluaXRpYWxpemUoRm9udFNl
bGVjdG9yJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKEZv
bnRTZWxlY3RvciYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CiAgICAgICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0OwogICAgICAgICBjb25zdCBGb250Q2FzY2FkZURlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24oKSBjb25zdDsKICAgICAgICAgZmxvYXQgd2lkdGgoY29u
c3QgVGV4dFJ1biYsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAppbmRleCA0MzIzNTQ0ZTVlZjVjN2Q5NWI2NGUwZDBkYmRiYTIzMjMxY2Nk
MGM3Li42NGFjZjFhYWVlYzgwMjkzODBiZGUwZGY0NDhjMjQ2YTQxMzM2YjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCB2b2lkIE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0Rm9udChjb25zdCBTdHJpbmcmIG5ld0ZvbnQp
CiAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShEZWZhdWx0Rm9udFNpemUpOwog
CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci0gICAg
YXV0byBmb250U3R5bGUgPSBTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcoKmZvbnRSYXcsIFdURk1v
dmUoZm9udERlc2NyaXB0aW9uKSwgZG9jdW1lbnQpOworICAgIGF1dG8gZm9udENhc2NhZGUgPSBT
dHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcoKmZvbnRSYXcsIFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSwgZG9jdW1lbnQpOwogCi0gICAgaWYgKGZvbnRTdHlsZSkKLSAgICAgICAgbW9kaWZpYWJsZVN0
YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZvbnRTZWxlY3RvcigpLCAqZm9udFN0eWxl
KTsKKyAgICBpZiAoZm9udENhc2NhZGUpCisgICAgICAgIG1vZGlmaWFibGVTdGF0ZSgpLmZvbnQu
aW5pdGlhbGl6ZShkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmZvbnRDYXNjYWRlKTsKIH0KIAog
Q2FudmFzRGlyZWN0aW9uIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlyZWN0
aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0
aW9ucy5jcHAKaW5kZXggNWU2YTMzMjJhMzAyMTEyZjU4ZmJmOWZhMWVkZTVhYzJmZmE2NDVkOS4u
ZDU0ZmQ1MWMwODA4YzNkNWFmNDAyMzkxNTM1Y2NhYTFmZDhhZGQ5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAKQEAgLTM5LDEzICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIAotZW51bSBjbGFz
cyBNaW5pbXVtRm9udFNpemVSdWxlIHsKLSAgICBOb25lLAotICAgIEFic29sdXRlLAotICAgIEFi
c29sdXRlQW5kUmVsYXRpdmUKLX07Ci0KLXN0YXRpYyBmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJv
bVNwZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwg
ZmxvYXQgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZSBtaW5pbXVtU2l6ZVJ1bGUsIGNv
bnN0IFNldHRpbmdzJiBzZXR0aW5ncykKK2Zsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lm
aWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6
b29tRmFjdG9yLCBNaW5pbXVtRm9udFNpemVSdWxlIG1pbmltdW1TaXplUnVsZSwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3MpCiB7CiAgICAgLy8gVGV4dCB3aXRoIGEgMHB4IGZvbnQg
c2l6ZSBzaG91bGQgbm90IGJlIHZpc2libGUgYW5kIHRoZXJlZm9yZSBuZWVkcyB0byBiZQogICAg
IC8vIGV4ZW1wdCBmcm9tIG1pbmltdW0gZm9udCBzaXplIHJ1bGVzLiBBY2lkMyByZWxpZXMgb24g
dGhpcyBmb3IgcGl4ZWwtcGVyZmVjdApAQCAtNjcsOCArNjEsOCBAQCBzdGF0aWMgZmxvYXQgY29t
cHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wg
aXNBYnNvbAogICAgIGlmIChtaW5pbXVtU2l6ZVJ1bGUgPT0gTWluaW11bUZvbnRTaXplUnVsZTo6
Tm9uZSkKICAgICAgICAgcmV0dXJuIHNwZWNpZmllZFNpemU7CiAKLSAgICBpbnQgbWluU2l6ZSA9
IHNldHRpbmdzLm1pbmltdW1Gb250U2l6ZSgpOwotICAgIGludCBtaW5Mb2dpY2FsU2l6ZSA9IHNl
dHRpbmdzLm1pbmltdW1Mb2dpY2FsRm9udFNpemUoKTsKKyAgICBpbnQgbWluU2l6ZSA9IHNldHRp
bmdzLm1pbmltdW1Gb250U2l6ZTsKKyAgICBpbnQgbWluTG9naWNhbFNpemUgPSBzZXR0aW5ncy5t
aW5pbXVtTG9naWNhbEZvbnRTaXplOwogICAgIGZsb2F0IHpvb21lZFNpemUgPSBzcGVjaWZpZWRT
aXplICogem9vbUZhY3RvcjsKIAogICAgIC8vIEFwcGx5IHRoZSBoYXJkIG1pbmltdW0gZmlyc3Qu
IFdlIG9ubHkgYXBwbHkgdGhlIGhhcmQgbWluaW11bSBpZiBhZnRlciB6b29taW5nIHdlJ3JlIHN0
aWxsIHRvbyBzbWFsbC4KQEAgLTk1LDEyICs4OSwxMiBAQCBmbG9hdCBjb21wdXRlZEZvbnRTaXpl
RnJvbVNwZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6
ZQogICAgICAgICBpZiAoZnJhbWUgJiYgc3R5bGUtPnRleHRab29tKCkgIT0gVGV4dFpvb206OlJl
c2V0KQogICAgICAgICAgICAgem9vbUZhY3RvciAqPSBmcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsK
ICAgICB9Ci0gICAgcmV0dXJuIGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVj
aWZpZWRTaXplLCBpc0Fic29sdXRlU2l6ZSwgem9vbUZhY3RvciwgdXNlU1ZHWm9vbVJ1bGVzID8g
TWluaW11bUZvbnRTaXplUnVsZTo6Tm9uZSA6IE1pbmltdW1Gb250U2l6ZVJ1bGU6OkFic29sdXRl
QW5kUmVsYXRpdmUsIGRvY3VtZW50LnNldHRpbmdzKCkpOworICAgIHJldHVybiBjb21wdXRlZEZv
bnRTaXplRnJvbVNwZWNpZmllZFNpemUoc3BlY2lmaWVkU2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpv
b21GYWN0b3IsIHVzZVNWR1pvb21SdWxlcyA/IE1pbmltdW1Gb250U2l6ZVJ1bGU6Ok5vbmUgOiBN
aW5pbXVtRm9udFNpemVSdWxlOjpBYnNvbHV0ZUFuZFJlbGF0aXZlLCBkb2N1bWVudC5zZXR0aW5n
c1ZhbHVlcygpKTsKIH0KIAogZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXpl
Rm9yU1ZHSW5saW5lVGV4dChmbG9hdCBzcGVjaWZpZWRTaXplLCBib29sIGlzQWJzb2x1dGVTaXpl
LCBmbG9hdCB6b29tRmFjdG9yLCBjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgcmV0
dXJuIGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVjaWZpZWRTaXplLCBpc0Fi
c29sdXRlU2l6ZSwgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGUsIGRv
Y3VtZW50LnNldHRpbmdzKCkpOworICAgIHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNp
ZmllZFNpemUoc3BlY2lmaWVkU2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIE1pbmlt
dW1Gb250U2l6ZVJ1bGU6OkFic29sdXRlLCBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpKTsKIH0K
IAogY29uc3QgaW50IGZvbnRTaXplVGFibGVNYXggPSAxNjsKQEAgLTE0NSwyMiArMTM5LDI2IEBA
IHN0YXRpYyBjb25zdCBpbnQgc3RyaWN0Rm9udFNpemVUYWJsZVtmb250U2l6ZVRhYmxlTWF4IC0g
Zm9udFNpemVUYWJsZU1pbiArIDFdW3RvCiAvLyBmYWN0b3JzIGZvciBlYWNoIGtleXdvcmQgdmFs
dWUuCiBzdGF0aWMgY29uc3QgZmxvYXQgZm9udFNpemVGYWN0b3JzW3RvdGFsS2V5d29yZHNdID0g
eyAwLjYwZiwgMC43NWYsIDAuODlmLCAxLjBmLCAxLjJmLCAxLjVmLCAyLjBmLCAzLjBmIH07CiAK
LWZsb2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxk
VXNlRml4ZWREZWZhdWx0U2l6ZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQorZmxvYXQgZm9u
dFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJRCwgYm9vbCBzaG91bGRVc2VGaXhlZERl
ZmF1bHRTaXplLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5ncywgYm9vbCBpblF1aXJr
c01vZGUpCiB7Ci0gICAgYm9vbCBxdWlya3NNb2RlID0gZG9jdW1lbnQuaW5RdWlya3NNb2RlKCk7
Ci0gICAgaW50IG1lZGl1bVNpemUgPSBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplID8gZG9jdW1l
bnQuc2V0dGluZ3MoKS5kZWZhdWx0Rml4ZWRGb250U2l6ZSgpIDogZG9jdW1lbnQuc2V0dGluZ3Mo
KS5kZWZhdWx0Rm9udFNpemUoKTsKKyAgICBpbnQgbWVkaXVtU2l6ZSA9IHNob3VsZFVzZUZpeGVk
RGVmYXVsdFNpemUgPyBzZXR0aW5ncy5kZWZhdWx0Rml4ZWRGb250U2l6ZSA6IHNldHRpbmdzLmRl
ZmF1bHRGb250U2l6ZTsKICAgICBpZiAobWVkaXVtU2l6ZSA+PSBmb250U2l6ZVRhYmxlTWluICYm
IG1lZGl1bVNpemUgPD0gZm9udFNpemVUYWJsZU1heCkgewogICAgICAgICAvLyBMb29rIHVwIHRo
ZSBlbnRyeSBpbiB0aGUgdGFibGUuCiAgICAgICAgIGludCByb3cgPSBtZWRpdW1TaXplIC0gZm9u
dFNpemVUYWJsZU1pbjsKICAgICAgICAgaW50IGNvbCA9IChrZXl3b3JkSUQgLSBDU1NWYWx1ZVh4
U21hbGwpOwotICAgICAgICByZXR1cm4gcXVpcmtzTW9kZSA/IHF1aXJrc0ZvbnRTaXplVGFibGVb
cm93XVtjb2xdIDogc3RyaWN0Rm9udFNpemVUYWJsZVtyb3ddW2NvbF07CisgICAgICAgIHJldHVy
biBpblF1aXJrc01vZGUgPyBxdWlya3NGb250U2l6ZVRhYmxlW3Jvd11bY29sXSA6IHN0cmljdEZv
bnRTaXplVGFibGVbcm93XVtjb2xdOwogICAgIH0KIAogICAgIC8vIFZhbHVlIGlzIG91dHNpZGUg
dGhlIHJhbmdlIG9mIHRoZSB0YWJsZS4gQXBwbHkgdGhlIHNjYWxlIGZhY3RvciBpbnN0ZWFkLgot
ICAgIGZsb2F0IG1pbkxvZ2ljYWxTaXplID0gc3RkOjptYXg8ZmxvYXQ+KGRvY3VtZW50LnNldHRp
bmdzKCkubWluaW11bUxvZ2ljYWxGb250U2l6ZSgpLCAxKTsKKyAgICBmbG9hdCBtaW5Mb2dpY2Fs
U2l6ZSA9IHN0ZDo6bWF4PGZsb2F0PihzZXR0aW5ncy5taW5pbXVtTG9naWNhbEZvbnRTaXplLCAx
KTsKICAgICByZXR1cm4gc3RkOjptYXgoZm9udFNpemVGYWN0b3JzW2tleXdvcmRJRCAtIENTU1Zh
bHVlWHhTbWFsbF0gKiBtZWRpdW1TaXplLCBtaW5Mb2dpY2FsU2l6ZSk7CiB9CiAKK2Zsb2F0IGZv
bnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxkVXNlRml4ZWRE
ZWZhdWx0U2l6ZSwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBmb250
U2l6ZUZvcktleXdvcmQoa2V5d29yZElELCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBkb2N1
bWVudC5zZXR0aW5nc1ZhbHVlcygpLCBkb2N1bWVudC5pblF1aXJrc01vZGUoKSk7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgaW50IGZpbmROZWFyZXN0TGVnYWN5Rm9udFNpemUo
aW50IHBpeGVsRm9udFNpemUsIGNvbnN0IFQqIHRhYmxlLCBpbnQgbXVsdGlwbGllcikKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuaAppbmRleCBkMzg1
YjlhMDI0ODg1MmQ0YWExMjZmZjExNjU4MDE1YTc2ZGIwZTZkLi40ZTM5MTJlNmU1NzU0ZWYwOTZi
YzI4NWQ2ZjZjZDZjNTcwMmJhMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUZvbnRTaXplRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVG
b250U2l6ZUZ1bmN0aW9ucy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMywxMSAr
MzQsMTkgQEAgY2xhc3MgUmVuZGVyU3R5bGU7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKK2VudW0g
Y2xhc3MgTWluaW11bUZvbnRTaXplUnVsZSB7CisgICAgTm9uZSwKKyAgICBBYnNvbHV0ZSwKKyAg
ICBBYnNvbHV0ZUFuZFJlbGF0aXZlCit9OworCitmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxv
YXQgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVl
cyYpOwogZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNp
ZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzLCBjb25z
dCBSZW5kZXJTdHlsZSosIGNvbnN0IERvY3VtZW50Jik7CiBmbG9hdCBjb21wdXRlZEZvbnRTaXpl
RnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KGZsb2F0IHNwZWNpZmllZFNpemUsIGJv
b2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHpvb21GYWN0b3IsIGNvbnN0IERvY3VtZW50Jik7CiAK
IC8vIEdpdmVuIGEgQ1NTIGtleXdvcmQgaWQgaW4gdGhlIHJhbmdlIChDU1NWYWx1ZVh4U21hbGwg
dG8gQ1NTVmFsdWVXZWJraXRYeHhMYXJnZSksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4KIC8v
IHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBkZWZh
dWx0IChtZWRpdW0pLgorZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJ
RCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBTZXR0aW5nczo6VmFsdWVz
JiwgYm9vbCBpblF1aXJrc01vZGUgPSBmYWxzZSk7CiBmbG9hdCBmb250U2l6ZUZvcktleXdvcmQo
dW5zaWduZWQga2V5d29yZElELCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbnN0
IERvY3VtZW50Jik7CiAKIC8vIEdpdmVuIGEgZm9udCBzaXplIGluIHBpeGVsLCB0aGlzIGZ1bmN0
aW9uIHdpbGwgcmV0dXJuIGxlZ2FjeSBmb250IHNpemUgYmV0d2VlbiAxIGFuZCA3LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcAppbmRleCAzNzg1
OGEzMDJlYTVlNjEyYzk1MzdlZDk3MGQ0ODg0ZjM1MmJiZWE0Li4wOWFkOTVkMTcyNWMxYzM3OTM3
YWRhOTRkOGUxMzAxNTUwNjI0NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVJlc29sdmVGb3JGb250UmF3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JGb250UmF3LmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiQ1NT
Rm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmgiCi0j
aW5jbHVkZSAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZURlc2Ny
aXB0aW9uLmgiCkBAIC00NywxNyArNDYsOCBAQCBuYW1lc3BhY2UgU3R5bGUgewogCiB1c2luZyBu
YW1lc3BhY2UgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOwogCi1PcHRpb25hbDxSZW5kZXJTdHls
ZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYmIGZvbnREZXNjcmlwdGlvbiwgRG9jdW1lbnQmIGRvY3VtZW50KQorT3B0aW9u
YWw8Rm9udENhc2NhZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcs
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mJiBmb250RGVzY3JpcHRpb24sIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKLSAgICBhdXRvIGZvbnRTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLQot
ICAgIGF1dG8gZ2V0UGFyZW50U3R5bGUgPSBbJl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiB7Ci0gICAgICAgIGF1dG8gcGFyZW50U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoZm9udFN0eWxlKTsKLSAgICAgICAgcGFyZW50U3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihG
b250Q2FzY2FkZURlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpOwotICAgICAgICBwYXJlbnRT
dHlsZS0+Zm9udENhc2NhZGUoKS51cGRhdGUoJmRvY3VtZW50LmZvbnRTZWxlY3RvcigpKTsKLSAg
ICAgICAgcmV0dXJuIHBhcmVudFN0eWxlOwotICAgIH07Ci0KICAgICAvLyBNYXAgdGhlIGZvbnQg
cHJvcGVydHkgbG9uZ2hhbmRzIGludG8gdGhlIHN0eWxlLgogICAgIGZsb2F0IHBhcmVudFNpemUg
PSBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpOwogCkBAIC05Myw3ICs4Myw3IEBAIE9w
dGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250
UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgIGlmIChDU1NWYWx1ZUlEIHNpemVJZGVudGlm
aWVyID0gZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplQXNJZGVudGlmaWVyKCkpIHsKICAgICAg
ICAgICAgIGF1dG8gc2l6ZSA9IFN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQoc2l6ZUlkZW50aWZp
ZXIsICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSwgZG9jdW1lbnQpOwogICAgICAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7Ci0gICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZvbnRTaXplRnJv
bVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZh
bHNlLCAmZm9udFN0eWxlLCBkb2N1bWVudCkpOworICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXpl
KHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCAxLjAsIE1pbmltdW1Gb250
U2l6ZVJ1bGU6Ok5vbmUsIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTk2LDkgKzE4Niw5IEBAIE9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZl
Rm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAg
ICAgIH0KICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3Ro
T3JQZXJjZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKICAgICAgICAgcmV0dXJuIHN3aXRjaE9u
KGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxl
bmd0aFJhdyYgbGVuZ3RoKSB7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudFN0eWxlID0gZ2V0UGFy
ZW50U3R5bGUoKTsKLSAgICAgICAgICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVy
c2lvbkRhdGEgeyBwYXJlbnRTdHlsZS5nZXQoKSwgbnVsbHB0ciwgcGFyZW50U3R5bGUuZ2V0KCks
IGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMS4wZiwgQ1NTUHJvcGVydHlGb250U2l6ZSB9OwotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29udmVyc2lvbkRhdGEsIGxlbmd0aC50eXBlLCBsZW5n
dGgudmFsdWUpKTsKKyAgICAgICAgICAgIGF1dG8gZm9udENhc2NhZGUgPSBGb250Q2FzY2FkZShG
b250Q2FzY2FkZURlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbikpOworICAgICAgICAgICAgZm9u
dENhc2NhZGUudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29t
ZWROb25DYWxjTGVuZ3RoRG91YmxlKGxlbmd0aC50eXBlLCBsZW5ndGgudmFsdWUsIENTU1Byb3Bl
cnR5Rm9udFNpemUsICZmb250Q2FzY2FkZS5mb250TWV0cmljcygpLCAmZm9udENhc2NhZGUuZm9u
dERlc2NyaXB0aW9uKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgZG9jdW1lbnQu
cmVuZGVyVmlldygpKSk7CiAgICAgICAgIH0sIFsmXSAoZG91YmxlIHBlcmNlbnRhZ2UpIHsKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oKHBhcmVudFNpemUgKiBwZXJjZW50
YWdlKSAvIDEwMC4wKTsKICAgICAgICAgfSk7CkBAIC0yMDksMzEgKzE5OSwxMSBAQCBPcHRpb25h
bDxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywg
Rm9udENhc2NhZGVEZXNjcgogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXpl
KHNpemUpOwogICAgIH0KIAotICAgIGlmIChmb250UmF3LmxpbmVIZWlnaHQpIHsKLSAgICAgICAg
T3B0aW9uYWw8TGVuZ3RoPiBsaW5lSGVpZ2h0ID0gc3dpdGNoT24oKmZvbnRSYXcubGluZUhlaWdo
dCwgWyZdIChDU1NWYWx1ZUlEIGlkZW50KSB7Ci0gICAgICAgICAgICBpZiAoaWRlbnQgPT0gQ1NT
VmFsdWVOb3JtYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oUmVu
ZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPExlbmd0aD4oV1RGOjpudWxsb3B0KTsKLSAgICAgICAgfSwgWyZdIChkb3VibGUgbnVtYmVy
KSB7Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgobnVtYmVyICog
MTAwLjAsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsKLSAgICAgICAgfSwgWyZdIChjb25zdCBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aE9yUGVyY2VudFJhdyYgbGVuZ3RoT3JQZXJjZW50
KSB7Ci0gICAgICAgICAgICByZXR1cm4gc3dpdGNoT24obGVuZ3RoT3JQZXJjZW50LCBbJl0gKGNv
bnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoUmF3JiBsZW5ndGgpIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHBhcmVudFN0eWxlID0gZ2V0UGFyZW50U3R5bGUoKTsKLSAgICAgICAg
ICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhIHsgcGFyZW50
U3R5bGUuZ2V0KCksIG51bGxwdHIsIHBhcmVudFN0eWxlLmdldCgpLCBkb2N1bWVudC5yZW5kZXJW
aWV3KCksIDEuMGYsIENTU1Byb3BlcnR5TGluZUhlaWdodCB9OwotICAgICAgICAgICAgICAgIHJl
dHVybiBPcHRpb25hbDxMZW5ndGg+KExlbmd0aChjbGFtcFRvPGZsb2F0PihDU1NQcmltaXRpdmVW
YWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29udmVyc2lvbkRhdGEsIGxlbmd0aC50
eXBlLCBsZW5ndGgudmFsdWUpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NM
ZW5ndGgpLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwotICAgICAgICAgICAgfSwgWyZdIChkb3VibGUg
cGVyY2VudGFnZSkgewotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxMZW5ndGg+KExl
bmd0aCgoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgpICogc3RhdGljX2Nhc3Q8aW50Pihw
ZXJjZW50YWdlKSkgLyAxMDAsIExlbmd0aFR5cGU6OkZpeGVkKSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgaWYgKGxpbmVIZWlnaHQpCi0gICAgICAgICAgICBmb250
U3R5bGUuc2V0TGluZUhlaWdodChXVEZNb3ZlKGxpbmVIZWlnaHQudmFsdWUoKSkpOwotICAgIH0K
LQotICAgIGZvbnRTdHlsZS5zZXRGb250RGVzY3JpcHRpb24oV1RGTW92ZShmb250RGVzY3JpcHRp
b24pKTsKLSAgICBmb250U3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUoJmRvY3VtZW50LmZvbnRT
ZWxlY3RvcigpKTsKKyAgICAvLyBMaW5lIGhlaWdodCBpcyBub24tZXhpc3RlbnQgb24gRm9udENh
c2NhZGUsIHNvIGlzIGxlZnQgdW5oYW5kbGVkLgogCi0gICAgcmV0dXJuIGZvbnRTdHlsZTsKKyAg
ICBhdXRvIGZvbnRDYXNjYWRlID0gRm9udENhc2NhZGUoV1RGTW92ZShmb250RGVzY3JpcHRpb24p
KTsKKyAgICBmb250Q2FzY2FkZS51cGRhdGUoJmRvY3VtZW50LmZvbnRTZWxlY3RvcigpKTsKKyAg
ICByZXR1cm4gZm9udENhc2NhZGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZUZvckZvbnRSYXcuaAppbmRleCAwNjI1Mjk1ZThjYWNlMTM0YjYyMDhmMTkyYzRh
ODkzZGRlMTJhMmZjLi4xYTg2YTlmMTU4OGRjZTE3OGE0MzkwZDc0OTM1NDBmZjg5MmFiM2IwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCkBAIC0z
Myw4ICszMyw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xh
c3MgRm9udENhc2NhZGU7CiBjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOwotY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMgewogc3RydWN0
IEZvbnRSYXc7CkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBGb250UmF3OwogCiBuYW1lc3BhY2Ug
U3R5bGUgewogCi1PcHRpb25hbDxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3Qg
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3JiwgRm9udENhc2NhZGVEZXNjcmlwdGlv
biYmLCBEb2N1bWVudCYpOworT3B0aW9uYWw8Rm9udENhc2NhZGU+IHJlc29sdmVGb3JGb250UmF3
KGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Rm9udFJhdyYsIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mJiwgRG9jdW1lbnQmKTsKIAogfQogfQo=
</data>
<flag name="commit-queue"
          id="441270"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422222</attachid>
            <date>2021-03-04 06:40:11 -0800</date>
            <delta_ts>2021-03-05 01:38:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222665-20210304144008.patch</filename>
            <type>text/plain</type>
            <size>32971</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIwYzExYjhjZjhjNDAx
ZTU1YTY5YjQyMTA4ZDJkNTNmNGNjYjUyYi4uNzQyYWQzZGNhOTQ5NzM5MmUxZDc2NzczYmRiNWYx
YTZmZDA5YmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBBbGxvdyBDU1MgZm9udC1zdHls
aW5nIGZvciBjYW52YXMgd2l0aG91dCBSZW5kZXJTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUHJpbWl0aXZlVmFsdWU6OmNv
bXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlIHRvIGFsbG93IGZvcgorICAgICAgICBpdHMgdXNlIHdp
dGhvdXQgcmVxdWlyaW5nIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgYW5kIFJlbmRlclN0eWxl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2Fs
Y0xlbmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnByb3BlcnR5VG9Db21wdXRlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlbmRlclZpZXcgY29u
c3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgICogc3R5bGUvU3R5bGVGb250U2l6ZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRT
aXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpmb250U2l6ZUZvcktleXdvcmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9udFNp
emVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oOgorCiAyMDIxLTAzLTA0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlUmVhZGVyOjplbnF1ZXVl
VGFzayBzaG91bGQgdmFsaWRhdGUgdGhhdCBpdHMgY29udGV4dCBpcyBub3Qgc3RvcHBlZCBiZWZv
cmUgZXhlY3V0aW5nIHRoZSB0YXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcAppbmRleCA0ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2NkYWY0MWRmZDg3NjZiOGE3ZTljLi41NWJk
Zjc3ODViNGYwZDcyNGMzNzZkZDMwMjcwZjMyNTlhOWQ5OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CkBAIC01ODMsOTYgKzU4NCwxMzkgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbW1QZXJJ
bmNoID0gMjUuNDsKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGNtUGVySW5jaCA9IDIuNTQ7CiBz
dGF0aWMgY29uc3RleHByIGRvdWJsZSBRUGVySW5jaCA9IDI1LjQgKiA0LjA7CiAKLWRvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1VuaXRUeXBlIHByaW1pdGl2
ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVu
em9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3Vi
bGUgdmFsdWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRNZXRy
aWNzKiBmb250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2Ny
aXB0aW9uLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9u
LCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewotICAgIGRvdWJsZSBmYWN0b3I7Ci0g
ICAgYm9vbCBhcHBseVpvb20gPSB0cnVlOworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewor
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1FVSVJLWV9FTVM6CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAgICBy
ZXR1cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnRE
ZXNjcmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNp
emUoKSkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgorICAgICAgICBB
U1NFUlQoZm9udE1ldHJpY3MpOworICAgICAgICBpZiAoZm9udE1ldHJpY3MtPmhhc1hIZWlnaHQo
KSkKKyAgICAgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+eEhlaWdodCgpICogdmFsdWU7Cisg
ICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm4gKChwcm9wZXJ0
eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3Bl
Y2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgLyAyLjAgKiB2
YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICAgICAgaWYgKCFyb290
Rm9udERlc2NyaXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1
cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IHJvb3RGb250
RGVzY3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6IHJvb3RGb250RGVzY3JpcHRpb24tPmNvbXB1
dGVkU2l6ZSgpKSAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CisgICAg
ICAgIEFTU0VSVChmb250TWV0cmljcyk7CisgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+emVy
b1dpZHRoKCkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CisgICAgICAg
IHJldHVybiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006CisgICAgICAgIHJl
dHVybiBjc3NQaXhlbHNQZXJJbmNoIC8gY21QZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBDU1NV
bml0VHlwZTo6Q1NTX01NOgorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIG1tUGVy
SW5jaCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgICAgICByZXR1
cm4gY3NzUGl4ZWxzUGVySW5jaCAvIFFQZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX0xIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19JTjoKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggKiB2YWx1
ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6CisgICAgICAgIHJldHVybiBjc3NQaXhl
bHNQZXJJbmNoIC8gNzIuMCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoK
KyAgICAgICAgLy8gMSBwYyA9PSAxMiBwdAorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5j
aCAqIDEyLjAgLyA3Mi4wICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENf
UEVSQ0VOVEFHRV9XSVRIX0xFTkdUSDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19Q
RVJDRU5UQUdFX1dJVEhfTlVNQkVSOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIC0xLjA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgorICAgICAg
ICByZXR1cm4gcmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMoKS5oZWlnaHQoKSAvIDEwMC4wICogdmFsdWUgOiAwOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WVzoKKyAgICAgICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT52
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAvIDEwMC4wICogdmFsdWUg
OiAwOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgorICAgICAgICBpZiAocmVuZGVy
VmlldykgeworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMu
d2lkdGgoKSwgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy5oZWlnaHQoKSkgLyAxMDAu
MCAqIHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfVk1JTjoKKyAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKKyAgICAgICAg
ICAgIEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyA9IHJlbmRlclZpZXct
PnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1pbih2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLndpZHRoKCksIHZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAwLjAgKiB2YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KK30KIAorZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTVW5pdFR5cGUgcHJpbWl0
aXZlVHlwZSwgZG91YmxlIHZhbHVlKQorewogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewog
ICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X1FVSVJLWV9FTVM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKLSAg
ICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwor
ICAgICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0
aXZlVHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIG51bGxw
dHIsICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7CiAgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICAgICAgQVNTRVJU
KGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1
ZyByaWdodCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIHR3aWNlIHRvIEVYIHVu
aXRzLgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRN
ZXRyaWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAg
ICAvLyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgotICAgICAgICBpZiAo
Y29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5oYXNYSGVpZ2h0KCkpCi0gICAg
ICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLnhI
ZWlnaHQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFjdG9yID0gKGNvbnZlcnNpb25E
YXRhLmNvbXB1dGluZ0ZvbnRTaXplKCkgPyBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVz
Y3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250
RGVzY3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSkgLyAyLjA7CisgICAgICAgIEFTU0VSVChjb252
ZXJzaW9uRGF0YS5zdHlsZSgpKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25D
YWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9w
ZXJ0eVRvQ29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSwg
JmNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJl
YWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICAgICAgaWYgKGNvbnZl
cnNpb25EYXRhLnJvb3RTdHlsZSgpKQotICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRh
dGEuY29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250
RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUo
KS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGZhY3RvciA9IDEuMDsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25D
YWxjTGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9w
ZXJ0eVRvQ29tcHV0ZSgpLCBudWxscHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yb290U3R5
bGUoKSA/ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkgOiBu
dWxscHRyKTsKICAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hT
OgogICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIGZhY3Rv
ciA9IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkuemVyb1dpZHRoKCk7Cisg
ICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRp
dmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAgICAgICBicmVhazsKKwogICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICAgICAgZmFjdG9yID0gMS4wOwotICAgICAg
ICBicmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgICAgIGZhY3RvciA9
IGNzc1BpeGVsc1BlckluY2ggLyBjbVBlckluY2g7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19NTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAv
IG1tUGVySW5jaDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6
Ci0gICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaDsKKyAgICBjYXNl
IENTU1VuaXRUeXBlOjpDU1NfSU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FM
Q19QRVJDRU5UQUdFX1dJVEhfTEVOR1RIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxD
X1BFUkNFTlRBR0VfV0lUSF9OVU1CRVI6CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVk
Tm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEu
cHJvcGVydHlUb0NvbXB1dGUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX1ZIOgorICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3
cG9ydEhlaWdodEZhY3RvcigpOworCisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgorICAg
ICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3cG9ydFdpZHRoRmFjdG9yKCk7
CisKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAgICAgICAgcmV0dXJuIHZhbHVl
ICogY29udmVyc2lvbkRhdGEudmlld3BvcnRNYXhGYWN0b3IoKTsKKworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19WTUlOOgorICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52
aWV3cG9ydE1pbkZhY3RvcigpOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKICAg
ICAgICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICBpZiAoY29udmVy
c2lvbkRhdGEuY29tcHV0aW5nTGluZUhlaWdodCgpIHx8IGNvbnZlcnNpb25EYXRhLmNvbXB1dGlu
Z0ZvbnRTaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHBhcmVudCdzIGNv
bXB1dGVkIGxpbmUtaGVpZ2h0LCBvciBmYWxsIGJhY2sgdG8gdGhlIGluaXRpYWwgbGluZS1oZWln
aHQgb2YgdGhpcyBlbGVtZW50J3MgZm9udCBzcGFjaW5nLgotICAgICAgICAgICAgZmFjdG9yID0g
Y29udmVyc2lvbkRhdGEucGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxl
KCktPmNvbXB1dGVkTGluZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1l
dHJpY3MoKS5saW5lU3BhY2luZygpOworICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRh
dGEucGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCktPmNvbXB1dGVk
TGluZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5saW5l
U3BhY2luZygpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgICAgICAgICAgdmFsdWUg
Kj0gY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CiAgICAgICAgIGlmIChj
b252ZXJzaW9uRGF0YS5yb290U3R5bGUoKSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnNpb25E
YXRhLmNvbXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250
U2l6ZSgpKQotICAgICAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnJvb3RTdHls
ZSgpLT5jb21wdXRlTGluZUhlaWdodChjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+c3BlY2lm
aWVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0
YS5yb290U3R5bGUoKS0+Y29tcHV0ZUxpbmVIZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxl
KCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNvbXB1dGVkTGluZUhl
aWdodCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGZhY3RvciA9IDEuMDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgICAgICBmYWN0b3Ig
PSBjc3NQaXhlbHNQZXJJbmNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUFQ6Ci0gICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyA3Mi4wOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAgICAgIC8vIDEg
cGMgPT0gMTIgcHQKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAqIDEyLjAgLyA3
Mi4wOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJD
RU5UQUdFX1dJVEhfTEVOR1RIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNF
TlRBR0VfV0lUSF9OVU1CRVI6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gLTEuMDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgICAgIGZh
Y3RvciA9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0SGVpZ2h0RmFjdG9yKCk7Ci0gICAgICAgIGFw
cGx5Wm9vbSA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVlc6Ci0gICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0V2lkdGhGYWN0
b3IoKTsKLSAgICAgICAgYXBwbHlab29tID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0
YS52aWV3cG9ydE1heEZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgICAgIGZhY3Rv
ciA9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0TWluRmFjdG9yKCk7Ci0gICAgICAgIGFwcGx5Wm9v
bSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnJvb3RT
dHlsZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsK
KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBy
ZXR1cm4gLTEuMDsKQEAgLTY4MSwxNCArNzI1LDEwIEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
CiAgICAgLy8gV2UgZG8gbm90IGFwcGx5IHRoZSB6b29tIGZhY3RvciB3aGVuIHdlIGFyZSBjb21w
dXRpbmcgdGhlIHZhbHVlIG9mIHRoZSBmb250LXNpemUgcHJvcGVydHkuIFRoZSB6b29taW5nCiAg
ICAgLy8gZm9yIGZvbnQgc2l6ZXMgaXMgbXVjaCBtb3JlIGNvbXBsaWNhdGVkLCBzaW5jZSB3ZSBo
YXZlIHRvIHdvcnJ5IGFib3V0IGVuZm9yY2luZyB0aGUgbWluaW11bSBmb250IHNpemUgcHJlZmVy
ZW5jZQogICAgIC8vIGFzIHdlbGwgYXMgZW5mb3JjaW5nIHRoZSBpbXBsaWNpdCAic21hcnQgbWlu
aW11bS4iCi0gICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlICogZmFjdG9yOwogICAgIGlmIChjb252
ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpIHx8IGlzRm9udFJlbGF0aXZlTGVuZ3RoKHBy
aW1pdGl2ZVR5cGUpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYgKGFwcGx5Wm9v
bSkKLSAgICAgICAgcmVzdWx0ICo9IGNvbnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdmFsdWUgKiBjb252
ZXJzaW9uRGF0YS56b29tKCk7CiB9CiAKIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9y
TGVuZ3RoUmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGVCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAz
OTg2OTFiYjFmZDc0YTczMjEwYjEyY2YxOTk4MTg3NTMxYzBiNTljLi5kNjg2Y2MxYmE5NTc0MjE1
MGUwY2Q1NmM4MGEwYWQ4MTY5NjBmMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaApAQCAtMzksMTEgKzM5LDE0IEBAIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGVwcmVjYXRl
ZENTU09NUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOworY2xh
c3MgRm9udE1ldHJpY3M7CiBjbGFzcyBQYWlyOwogY2xhc3MgUXVhZDsKIGNsYXNzIFJHQkNvbG9y
OwogY2xhc3MgUmVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVmlldzsKIAog
c3RydWN0IENTU0ZvbnRGYW1pbHk7CiBzdHJ1Y3QgTGVuZ3RoOwpAQCAtMTg4LDYgKzE5MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2Nh
bGVGYWN0b3IoQ1NTVW5pdFR5cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdW5pdFR5cGVTdHJpbmco
Q1NTVW5pdFR5cGUpOwogCisgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56b29tZWROb25DYWxj
TGVuZ3RoRG91YmxlKENTU1VuaXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQsIGNv
bnN0IEZvbnRNZXRyaWNzKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24q
ID0gbnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlw
dGlvbiA9IG51bGxwdHIsIGNvbnN0IFJlbmRlclZpZXcqID0gbnVsbHB0cik7CiAgICAgc3RhdGlj
IGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSk7CiAgICAgLy8gVHJ1ZSBpZiBj
b21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZSB3b3VsZCBwcm9kdWNlIGlkZW50aWNhbCByZXN1bHRz
IHdoZW4gcmVzb2x2ZWQgYWdhaW5zdCBib3RoIHRoZXNlIHN0eWxlcy4KICAgICBzdGF0aWMgYm9v
bCBlcXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhLmgKaW5kZXggNjQ5NWQ4NTZlZDYxMjY0YjRkYzUxNmRiYmFlOWJhMDEwYmFjZDE1ZC4uYTM4
OTBlNGFhYzRiNjkyY2ViMGJhMmE5NDY2MjA4ZjU5NGM1MGZhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC03NSw2ICs3NSw4IEBAIHB1
YmxpYzoKICAgICBmbG9hdCB6b29tKCkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRpbmdGb250U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250
U2l6ZTsgfQogICAgIGJvb2wgY29tcHV0aW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OyB9CisgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0Nv
bXB1dGUgPyAqbV9wcm9wZXJ0eVRvQ29tcHV0ZSA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQorICAg
IGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclZp
ZXc7IH0KIAogICAgIGRvdWJsZSB2aWV3cG9ydFdpZHRoRmFjdG9yKCkgY29uc3Q7CiAgICAgZG91
YmxlIHZpZXdwb3J0SGVpZ2h0RmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCBjZjRi
MGQ2ZGE2OTMxZDk5OGNmZjhhNDdhM2FiZDZjYTU4ZDM3NDYwLi42NzMwOWM3MzY0OTIwZjhlNzM2
Y2U5Zjk1NzQzMWEwZmI3NzBkOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNiwxNSArMTI2LDE1
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250KGNvbnN0IFN0cmluZyYg
bmV3Rm9udCkKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShEZWZhdWx0
Rm9udFNpemUpOwogICAgIH0KIAotICAgIGF1dG8gZm9udFN0eWxlID0gU3R5bGU6OnJlc29sdmVG
b3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50KTsK
LSAgICBpZiAoIWZvbnRTdHlsZSkKKyAgICBhdXRvIGZvbnRDYXNjYWRlID0gU3R5bGU6OnJlc29s
dmVGb3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50
KTsKKyAgICBpZiAoIWZvbnRDYXNjYWRlKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcg
bmV3Rm9udFNhZmVDb3B5KG5ld0ZvbnQpOyAvLyBDcmVhdGUgYSBzdHJpbmcgY29weSBzaW5jZSBu
ZXdGb250IGNhbiBiZSBkZWxldGVkIGluc2lkZSByZWFsaXplU2F2ZXMuCiAgICAgcmVhbGl6ZVNh
dmVzKCk7CiAgICAgbW9kaWZpYWJsZVN0YXRlKCkudW5wYXJzZWRGb250ID0gbmV3Rm9udFNhZmVD
b3B5OwogCi0gICAgbW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZv
bnRTZWxlY3RvcigpLCAqZm9udFN0eWxlKTsKKyAgICBtb2RpZmlhYmxlU3RhdGUoKS5mb250Lmlu
aXRpYWxpemUoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpmb250Q2FzY2FkZSk7CiAgICAgQVNT
RVJUKHN0YXRlKCkuZm9udC5yZWFsaXplZCgpKTsKICAgICBBU1NFUlQoc3RhdGUoKS5mb250Lmlz
UG9wdWxhdGVkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA5ZmYyMmE3YzNkNWRl
Y2NlNmE2NGJhYWE2YWNiZWMxMTZiMTAyYzBiLi41MTZjNzNjYjBjMWY2OWZiNjlkYzgwOWIyZWJm
OGJhZTc3ZDY0N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMjkyLDEzICsyOTIsMTMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmZvbnRzTmVl
ZFVwZGF0ZShGb250U2VsZWN0b3ImIHNlbGUKICAgICB1cGRhdGUoc2VsZWN0b3IpOwogfQogCi12
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShG
b250U2VsZWN0b3ImIGZvbnRTZWxlY3RvciwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQor
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpGb250UHJveHk6OmluaXRpYWxpemUo
Rm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2Fk
ZSkKIHsKICAgICAvLyBCZXdhcmUhIG1fZm9udC5mb250U2VsZWN0b3IoKSBtaWdodCBub3QgcG9p
bnQgdG8gZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkhCi0gICAgQVNTRVJUKG5ld1N0eWxlLmZvbnRD
YXNjYWRlKCkuZm9udFNlbGVjdG9yKCkgPT0gJmZvbnRTZWxlY3Rvcik7CisgICAgQVNTRVJUKGZv
bnRDYXNjYWRlLmZvbnRTZWxlY3RvcigpID09ICZmb250U2VsZWN0b3IpOwogICAgIGlmIChyZWFs
aXplZCgpKQogICAgICAgICBtX2ZvbnQuZm9udFNlbGVjdG9yKCktPnVucmVnaXN0ZXJGb3JJbnZh
bGlkYXRpb25DYWxsYmFja3MoKnRoaXMpOwotICAgIG1fZm9udCA9IG5ld1N0eWxlLmZvbnRDYXNj
YWRlKCk7CisgICAgbV9mb250ID0gZm9udENhc2NhZGU7CiAgICAgbV9mb250LnVwZGF0ZSgmZm9u
dFNlbGVjdG9yKTsKICAgICBBU1NFUlQoJmZvbnRTZWxlY3RvciA9PSBtX2ZvbnQuZm9udFNlbGVj
dG9yKCkpOwogICAgIG1fZm9udC5mb250U2VsZWN0b3IoKS0+cmVnaXN0ZXJGb3JJbnZhbGlkYXRp
b25DYWxsYmFja3MoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCmluZGV4IDEwZjI3OGFjNWI3ZGJk
NTIwOWIwMDgzYWIwMTE1YzQ1MWRlNWYxNTkuLjk0YWZlYTM5ZjAxODkyMDNjY2Y1YTg0ZDg1YmM3
NmY1NjgwNWY0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKQEAgLTY0LDcgKzY0LDYgQEAgY2xhc3Mg
SW1hZ2VCaXRtYXA7CiBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBPZmZzY3JlZW5DYW52YXM7CiBj
bGFzcyBQYXRoMkQ7Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFRleHRNZXRyaWNzOwogCkBAIC0yMzUsNyArMjM0LDcgQEAgcHVibGljOgogICAgICAgICBG
b250UHJveHkmIG9wZXJhdG9yPShjb25zdCBGb250UHJveHkmKTsKIAogICAgICAgICBib29sIHJl
YWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9mb250LmZvbnRTZWxlY3RvcigpOyB9Ci0gICAgICAg
IHZvaWQgaW5pdGlhbGl6ZShGb250U2VsZWN0b3ImLCBjb25zdCBSZW5kZXJTdHlsZSYpOworICAg
ICAgICB2b2lkIGluaXRpYWxpemUoRm9udFNlbGVjdG9yJiwgY29uc3QgRm9udENhc2NhZGUmKTsK
ICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzKCkgY29uc3Q7CiAgICAgICAg
IGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0Owog
ICAgICAgICBmbG9hdCB3aWR0aChjb25zdCBUZXh0UnVuJiwgR2x5cGhPdmVyZmxvdyogPSAwKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDQzMjM1NDRlNWVmNWM3
ZDk1YjY0ZTBkMGRiZGJhMjMyMzFjY2QwYzcuLjY0YWNmMWFhZWVjODAyOTM4MGJkZTBkZjQ0OGMy
NDZhNDEzMzZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtOTEsMTAg
KzkxLDEwIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRGb250
KGNvbnN0IFN0cmluZyYgbmV3Rm9udCkKICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRT
aXplKERlZmF1bHRGb250U2l6ZSk7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KTsKLSAgICBhdXRvIGZvbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9y
Rm9udFJhdygqZm9udFJhdywgV1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7Cisg
ICAgYXV0byBmb250Q2FzY2FkZSA9IFN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdygqZm9udFJhdywg
V1RGTW92ZShmb250RGVzY3JpcHRpb24pLCBkb2N1bWVudCk7CiAKLSAgICBpZiAoZm9udFN0eWxl
KQotICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5mb250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9u
dFNlbGVjdG9yKCksICpmb250U3R5bGUpOworICAgIGlmIChmb250Q2FzY2FkZSkKKyAgICAgICAg
bW9kaWZpYWJsZVN0YXRlKCkuZm9udC5pbml0aWFsaXplKGRvY3VtZW50LmZvbnRTZWxlY3Rvcigp
LCAqZm9udENhc2NhZGUpOwogfQogCiBDYW52YXNEaXJlY3Rpb24gT2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkaXJlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmNwcAppbmRleCA1ZTZhMzMyMmEzMDIxMTJmNThm
YmY5ZmExZWRlNWFjMmZmYTY0NWQ5Li5kNTRmZDUxYzA4MDhjM2Q1YWY0MDIzOTE1MzVjY2FhMWZk
OGFkZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVu
Y3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rp
b25zLmNwcApAQCAtMzksMTMgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgU3R5bGUgewogCi1lbnVtIGNsYXNzIE1pbmltdW1Gb250U2l6ZVJ1bGUgewotICAgIE5vbmUs
Ci0gICAgQWJzb2x1dGUsCi0gICAgQWJzb2x1dGVBbmRSZWxhdGl2ZQotfTsKLQotc3RhdGljIGZs
b2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXpl
LCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBNaW5pbXVtRm9udFNpemVS
dWxlIG1pbmltdW1TaXplUnVsZSwgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzKQorZmxvYXQgY29t
cHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wg
aXNBYnNvbHV0ZVNpemUsIGZsb2F0IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUgbWlu
aW11bVNpemVSdWxlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5ncykKIHsKICAgICAv
LyBUZXh0IHdpdGggYSAwcHggZm9udCBzaXplIHNob3VsZCBub3QgYmUgdmlzaWJsZSBhbmQgdGhl
cmVmb3JlIG5lZWRzIHRvIGJlCiAgICAgLy8gZXhlbXB0IGZyb20gbWluaW11bSBmb250IHNpemUg
cnVsZXMuIEFjaWQzIHJlbGllcyBvbiB0aGlzIGZvciBwaXhlbC1wZXJmZWN0CkBAIC02Nyw4ICs2
MSw4IEBAIHN0YXRpYyBmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoZmxv
YXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sCiAgICAgaWYgKG1pbmltdW1TaXplUnVsZSA9
PSBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25lKQogICAgICAgICByZXR1cm4gc3BlY2lmaWVkU2l6
ZTsKIAotICAgIGludCBtaW5TaXplID0gc2V0dGluZ3MubWluaW11bUZvbnRTaXplKCk7Ci0gICAg
aW50IG1pbkxvZ2ljYWxTaXplID0gc2V0dGluZ3MubWluaW11bUxvZ2ljYWxGb250U2l6ZSgpOwor
ICAgIGludCBtaW5TaXplID0gc2V0dGluZ3MubWluaW11bUZvbnRTaXplOworICAgIGludCBtaW5M
b2dpY2FsU2l6ZSA9IHNldHRpbmdzLm1pbmltdW1Mb2dpY2FsRm9udFNpemU7CiAgICAgZmxvYXQg
em9vbWVkU2l6ZSA9IHNwZWNpZmllZFNpemUgKiB6b29tRmFjdG9yOwogCiAgICAgLy8gQXBwbHkg
dGhlIGhhcmQgbWluaW11bSBmaXJzdC4gV2Ugb25seSBhcHBseSB0aGUgaGFyZCBtaW5pbXVtIGlm
IGFmdGVyIHpvb21pbmcgd2UncmUgc3RpbGwgdG9vIHNtYWxsLgpAQCAtOTUsMTIgKzg5LDEyIEBA
IGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRT
aXplLCBib29sIGlzQWJzb2x1dGVTaXplCiAgICAgICAgIGlmIChmcmFtZSAmJiBzdHlsZS0+dGV4
dFpvb20oKSAhPSBUZXh0Wm9vbTo6UmVzZXQpCiAgICAgICAgICAgICB6b29tRmFjdG9yICo9IGZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIH0KLSAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6
ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFj
dG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25lIDogTWluaW11
bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0dGluZ3MoKSk7
CisgICAgcmV0dXJuIGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVjaWZpZWRT
aXplLCBpc0Fic29sdXRlU2l6ZSwgem9vbUZhY3RvciwgdXNlU1ZHWm9vbVJ1bGVzID8gTWluaW11
bUZvbnRTaXplUnVsZTo6Tm9uZSA6IE1pbmltdW1Gb250U2l6ZVJ1bGU6OkFic29sdXRlQW5kUmVs
YXRpdmUsIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCkpOwogfQogCiBmbG9hdCBjb21wdXRlZEZv
bnRTaXplRnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KGZsb2F0IHNwZWNpZmllZFNp
emUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHpvb21GYWN0b3IsIGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRT
aXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFjdG9yLCBNaW5pbXVtRm9u
dFNpemVSdWxlOjpBYnNvbHV0ZSwgZG9jdW1lbnQuc2V0dGluZ3MoKSk7CisgICAgcmV0dXJuIGNv
bXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzcGVjaWZpZWRTaXplLCBpc0Fic29sdXRl
U2l6ZSwgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGUsIGRvY3VtZW50
LnNldHRpbmdzVmFsdWVzKCkpOwogfQogCiBjb25zdCBpbnQgZm9udFNpemVUYWJsZU1heCA9IDE2
OwpAQCAtMTQ1LDIyICsxMzksMjYgQEAgc3RhdGljIGNvbnN0IGludCBzdHJpY3RGb250U2l6ZVRh
YmxlW2ZvbnRTaXplVGFibGVNYXggLSBmb250U2l6ZVRhYmxlTWluICsgMV1bdG8KIC8vIGZhY3Rv
cnMgZm9yIGVhY2gga2V5d29yZCB2YWx1ZS4KIHN0YXRpYyBjb25zdCBmbG9hdCBmb250U2l6ZUZh
Y3RvcnNbdG90YWxLZXl3b3Jkc10gPSB7IDAuNjBmLCAwLjc1ZiwgMC44OWYsIDEuMGYsIDEuMmYs
IDEuNWYsIDIuMGYsIDMuMGYgfTsKIAotZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVk
IGtleXdvcmRJRCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpCitmbG9hdCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElE
LCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMm
IHNldHRpbmdzLCBib29sIGluUXVpcmtzTW9kZSkKIHsKLSAgICBib29sIHF1aXJrc01vZGUgPSBk
b2N1bWVudC5pblF1aXJrc01vZGUoKTsKLSAgICBpbnQgbWVkaXVtU2l6ZSA9IHNob3VsZFVzZUZp
eGVkRGVmYXVsdFNpemUgPyBkb2N1bWVudC5zZXR0aW5ncygpLmRlZmF1bHRGaXhlZEZvbnRTaXpl
KCkgOiBkb2N1bWVudC5zZXR0aW5ncygpLmRlZmF1bHRGb250U2l6ZSgpOworICAgIGludCBtZWRp
dW1TaXplID0gc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSA/IHNldHRpbmdzLmRlZmF1bHRGaXhl
ZEZvbnRTaXplIDogc2V0dGluZ3MuZGVmYXVsdEZvbnRTaXplOwogICAgIGlmIChtZWRpdW1TaXpl
ID49IGZvbnRTaXplVGFibGVNaW4gJiYgbWVkaXVtU2l6ZSA8PSBmb250U2l6ZVRhYmxlTWF4KSB7
CiAgICAgICAgIC8vIExvb2sgdXAgdGhlIGVudHJ5IGluIHRoZSB0YWJsZS4KICAgICAgICAgaW50
IHJvdyA9IG1lZGl1bVNpemUgLSBmb250U2l6ZVRhYmxlTWluOwogICAgICAgICBpbnQgY29sID0g
KGtleXdvcmRJRCAtIENTU1ZhbHVlWHhTbWFsbCk7Ci0gICAgICAgIHJldHVybiBxdWlya3NNb2Rl
ID8gcXVpcmtzRm9udFNpemVUYWJsZVtyb3ddW2NvbF0gOiBzdHJpY3RGb250U2l6ZVRhYmxlW3Jv
d11bY29sXTsKKyAgICAgICAgcmV0dXJuIGluUXVpcmtzTW9kZSA/IHF1aXJrc0ZvbnRTaXplVGFi
bGVbcm93XVtjb2xdIDogc3RyaWN0Rm9udFNpemVUYWJsZVtyb3ddW2NvbF07CiAgICAgfQogCiAg
ICAgLy8gVmFsdWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdGhlIHRhYmxlLiBBcHBseSB0aGUg
c2NhbGUgZmFjdG9yIGluc3RlYWQuCi0gICAgZmxvYXQgbWluTG9naWNhbFNpemUgPSBzdGQ6Om1h
eDxmbG9hdD4oZG9jdW1lbnQuc2V0dGluZ3MoKS5taW5pbXVtTG9naWNhbEZvbnRTaXplKCksIDEp
OworICAgIGZsb2F0IG1pbkxvZ2ljYWxTaXplID0gc3RkOjptYXg8ZmxvYXQ+KHNldHRpbmdzLm1p
bmltdW1Mb2dpY2FsRm9udFNpemUsIDEpOwogICAgIHJldHVybiBzdGQ6Om1heChmb250U2l6ZUZh
Y3RvcnNba2V5d29yZElEIC0gQ1NTVmFsdWVYeFNtYWxsXSAqIG1lZGl1bVNpemUsIG1pbkxvZ2lj
YWxTaXplKTsKIH0KIAorZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVuc2lnbmVkIGtleXdvcmRJ
RCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCit7CisgICAgcmV0dXJuIGZvbnRTaXplRm9yS2V5d29yZChrZXl3b3JkSUQsIHNob3VsZFVz
ZUZpeGVkRGVmYXVsdFNpemUsIGRvY3VtZW50LnNldHRpbmdzVmFsdWVzKCksIGRvY3VtZW50Lmlu
UXVpcmtzTW9kZSgpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyBpbnQgZmlu
ZE5lYXJlc3RMZWdhY3lGb250U2l6ZShpbnQgcGl4ZWxGb250U2l6ZSwgY29uc3QgVCogdGFibGUs
IGludCBtdWx0aXBsaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVGb250U2l6ZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVGb250U2l6
ZUZ1bmN0aW9ucy5oCmluZGV4IGQzODViOWEwMjQ4ODUyZDRhYTEyNmZmMTE2NTgwMTVhNzZkYjBl
NmQuLjRlMzkxMmU2ZTU3NTRlZjA5NmJjMjg1ZDZmNmNkNmM1NzAyYmExMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTMzLDExICszNCwxOSBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFt
ZXNwYWNlIFN0eWxlIHsKIAorZW51bSBjbGFzcyBNaW5pbXVtRm9udFNpemVSdWxlIHsKKyAgICBO
b25lLAorICAgIEFic29sdXRlLAorICAgIEFic29sdXRlQW5kUmVsYXRpdmUKK307CisKK2Zsb2F0
IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBi
b29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBNaW5pbXVtRm9udFNpemVSdWxl
LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJik7CiBmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgYm9v
bCB1c2VTVkdab29tUnVsZXMsIGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgRG9jdW1lbnQmKTsK
IGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZUZvclNWR0lubGluZVRleHQo
ZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxvYXQgem9vbUZhY3Rv
ciwgY29uc3QgRG9jdW1lbnQmKTsKIAogLy8gR2l2ZW4gYSBDU1Mga2V5d29yZCBpZCBpbiB0aGUg
cmFuZ2UgKENTU1ZhbHVlWHhTbWFsbCB0byBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlKSwgdGhpcyBm
dW5jdGlvbiB3aWxsIHJldHVybgogLy8gdGhlIGNvcnJlY3QgZm9udCBzaXplIHNjYWxlZCByZWxh
dGl2ZSB0byB0aGUgdXNlcidzIGRlZmF1bHQgKG1lZGl1bSkuCitmbG9hdCBmb250U2l6ZUZvcktl
eXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNob3VsZFVzZUZpeGVkRGVmYXVsdFNpemUs
IGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBib29sIGluUXVpcmtzTW9kZSA9IGZhbHNlKTsKIGZs
b2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxkVXNl
Rml4ZWREZWZhdWx0U2l6ZSwgY29uc3QgRG9jdW1lbnQmKTsKIAogLy8gR2l2ZW4gYSBmb250IHNp
emUgaW4gcGl4ZWwsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGVnYWN5IGZvbnQgc2l6ZSBi
ZXR3ZWVuIDEgYW5kIDcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckZvbnRSYXcuY3BwCmluZGV4IDM3ODU4YTMwMmVhNWU2MTJjOTUzN2VkOTcwZDQ4ODRmMzUyYmJl
YTQuLjA5YWQ5NWQxNzI1YzFjMzc5MzdhZGE5NGQ4ZTEzMDE1NTA2MjQ0YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAKICNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaCIKLSNpbmNsdWRlICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2lu
Y2x1ZGUgIkZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCIKQEAgLTQ3LDE3ICs0Niw4IEBAIG5hbWVz
cGFjZSBTdHlsZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM7
CiAKLU9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3
JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYgZm9udERlc2NyaXB0aW9uLCBEb2N1
bWVudCYgZG9jdW1lbnQpCitPcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXco
Y29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmIGZvbnREZXNj
cmlwdGlvbiwgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8gZm9udFN0eWxlID0gUmVu
ZGVyU3R5bGU6OmNyZWF0ZSgpOwotCi0gICAgYXV0byBnZXRQYXJlbnRTdHlsZSA9IFsmXSAoKSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IHsKLSAgICAgICAgYXV0byBwYXJlbnRTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihmb250U3R5bGUpOwotICAgICAgICBwYXJlbnRTdHls
ZS0+c2V0Rm9udERlc2NyaXB0aW9uKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSk7Ci0gICAgICAgIHBhcmVudFN0eWxlLT5mb250Q2FzY2FkZSgpLnVwZGF0ZSgmZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOwotICAgICAgICByZXR1cm4gcGFyZW50U3R5bGU7Ci0gICAgfTsK
LQogICAgIC8vIE1hcCB0aGUgZm9udCBwcm9wZXJ0eSBsb25naGFuZHMgaW50byB0aGUgc3R5bGUu
CiAgICAgZmxvYXQgcGFyZW50U2l6ZSA9IGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCk7
CiAKQEAgLTkzLDcgKzgzLDcgQEAgT3B0aW9uYWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250
UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgaWYg
KENTU1ZhbHVlSUQgc2l6ZUlkZW50aWZpZXIgPSBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemVB
c0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgYXV0byBzaXplID0gU3R5bGU6OmZvbnRTaXpl
Rm9yS2V5d29yZChzaXplSWRlbnRpZmllciwgIW9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXpl
LCBkb2N1bWVudCk7CiAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6
ZShzaXplKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoU3R5
bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShzaXplLCBmb250RGVzY3JpcHRp
b24uaXNBYnNvbHV0ZVNpemUoKSwgZmFsc2UsICZmb250U3R5bGUsIGRvY3VtZW50KSk7CisgICAg
ICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFN0eWxlOjpjb21wdXRlZEZv
bnRTaXplRnJvbVNwZWNpZmllZFNpemUoc2l6ZSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVT
aXplKCksIDEuMCwgTWluaW11bUZvbnRTaXplUnVsZTo6Tm9uZSwgZG9jdW1lbnQuc2V0dGluZ3NW
YWx1ZXMoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xOTYsOSArMTg2LDkgQEAgT3B0aW9u
YWw8UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcs
IEZvbnRDYXNjYWRlRGVzY3IKICAgICAgICAgfQogICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVyY2VudCkgewog
ICAgICAgICByZXR1cm4gc3dpdGNoT24obGVuZ3RoT3JQZXJjZW50LCBbJl0gKGNvbnN0IENTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoUmF3JiBsZW5ndGgpIHsKLSAgICAgICAgICAgIGF1
dG8gcGFyZW50U3R5bGUgPSBnZXRQYXJlbnRTdHlsZSgpOwotICAgICAgICAgICAgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSB7IHBhcmVudFN0eWxlLmdldCgpLCBudWxs
cHRyLCBwYXJlbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVuZGVyVmlldygpLCAxLjBmLCBDU1NQ
cm9wZXJ0eUZvbnRTaXplIH07Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9u
RGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSkpOworICAgICAgICAgICAgYXV0byBmb250
Q2FzY2FkZSA9IEZvbnRDYXNjYWRlKEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKSk7CisgICAgICAgICAgICBmb250Q2FzY2FkZS51cGRhdGUoJmRvY3VtZW50LmZvbnRTZWxl
Y3RvcigpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUobGVuZ3RoLnR5cGUs
IGxlbmd0aC52YWx1ZSwgQ1NTUHJvcGVydHlGb250U2l6ZSwgJmZvbnRDYXNjYWRlLmZvbnRNZXRy
aWNzKCksICZmb250Q2FzY2FkZS5mb250RGVzY3JpcHRpb24oKSwgJmZvbnRDYXNjYWRlLmZvbnRE
ZXNjcmlwdGlvbigpLCBkb2N1bWVudC5yZW5kZXJWaWV3KCkpKTsKICAgICAgICAgfSwgWyZdIChk
b3VibGUgcGVyY2VudGFnZSkgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0
PigocGFyZW50U2l6ZSAqIHBlcmNlbnRhZ2UpIC8gMTAwLjApOwogICAgICAgICB9KTsKQEAgLTIw
OSwzMSArMTk5LDExIEBAIE9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRm9udFJhdyhj
b25zdCBGb250UmF3JiBmb250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoc2l6ZSk7CiAgICAgfQogCi0gICAgaWYgKGZvbnRSYXcu
bGluZUhlaWdodCkgewotICAgICAgICBPcHRpb25hbDxMZW5ndGg+IGxpbmVIZWlnaHQgPSBzd2l0
Y2hPbigqZm9udFJhdy5saW5lSGVpZ2h0LCBbJl0gKENTU1ZhbHVlSUQgaWRlbnQpIHsKLSAgICAg
ICAgICAgIGlmIChpZGVudCA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8TGVuZ3RoPihSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihXVEY6Om51bGxvcHQpOwotICAgICAg
ICB9LCBbJl0gKGRvdWJsZSBudW1iZXIpIHsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxM
ZW5ndGg+KExlbmd0aChudW1iZXIgKiAxMDAuMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCkpOwotICAg
ICAgICB9LCBbJl0gKGNvbnN0IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6TGVuZ3RoT3JQZXJj
ZW50UmF3JiBsZW5ndGhPclBlcmNlbnQpIHsKLSAgICAgICAgICAgIHJldHVybiBzd2l0Y2hPbihs
ZW5ndGhPclBlcmNlbnQsIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5n
dGhSYXcmIGxlbmd0aCkgewotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50U3R5bGUgPSBnZXRQ
YXJlbnRTdHlsZSgpOwotICAgICAgICAgICAgICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
Y29udmVyc2lvbkRhdGEgeyBwYXJlbnRTdHlsZS5nZXQoKSwgbnVsbHB0ciwgcGFyZW50U3R5bGUu
Z2V0KCksIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMS4wZiwgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
IH07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKGNsYW1w
VG88ZmxvYXQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShj
b252ZXJzaW9uRGF0YSwgbGVuZ3RoLnR5cGUsIGxlbmd0aC52YWx1ZSksIG1pblZhbHVlRm9yQ3Nz
TGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIExlbmd0aFR5cGU6OkZpeGVkKSk7Ci0gICAg
ICAgICAgICB9LCBbJl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKChmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXpl
KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnRhZ2UpKSAvIDEwMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBpZiAobGluZUhl
aWdodCkKLSAgICAgICAgICAgIGZvbnRTdHlsZS5zZXRMaW5lSGVpZ2h0KFdURk1vdmUobGluZUhl
aWdodC52YWx1ZSgpKSk7Ci0gICAgfQotCi0gICAgZm9udFN0eWxlLnNldEZvbnREZXNjcmlwdGlv
bihXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOwotICAgIGZvbnRTdHlsZS5mb250Q2FzY2FkZSgp
LnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOworICAgIC8vIExpbmUgaGVpZ2h0IGlz
IG5vbi1leGlzdGVudCBvbiBGb250Q2FzY2FkZSwgc28gaXMgbGVmdCB1bmhhbmRsZWQuCiAKLSAg
ICByZXR1cm4gZm9udFN0eWxlOworICAgIGF1dG8gZm9udENhc2NhZGUgPSBGb250Q2FzY2FkZShX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGZvbnRDYXNjYWRlLnVwZGF0ZSgmZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkpOworICAgIHJldHVybiBmb250Q2FzY2FkZTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCmluZGV4IDA2MjUy
OTVlOGNhY2UxMzRiNjIwOGYxOTJjNGE4OTNkZGUxMmEyZmMuLjFhODZhOWYxNTg4ZGNlMTc4YTQz
OTBkNzQ5MzU0MGZmODkyYWIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZUZvckZvbnRSYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmgKQEAgLTMzLDggKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRDYXNjYWRl
RGVzY3JpcHRpb247Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFtZXNwYWNlIENTU1Byb3BlcnR5
UGFyc2VySGVscGVycyB7CiBzdHJ1Y3QgRm9udFJhdzsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0
IEZvbnRSYXc7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLU9wdGlvbmFsPFJlbmRlclN0eWxlPiBy
ZXNvbHZlRm9yRm9udFJhdyhjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXcm
LCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiYsIERvY3VtZW50Jik7CitPcHRpb25hbDxGb250Q2Fz
Y2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpG
b250UmF3JiwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBEb2N1bWVudCYpOwogCiB9CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiODVhMWFhMjE0MjUwNTQ3ZjE5YWI5ZWM2
ODFkN2ZmNjdlMzk2NjgwLi5hZTU5ODg5MzhmMjQ0OWJjZTU2YTEzNTIyYjliZmQxZTdlYTVhYTNh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisKKyAgICAgICAgQWxsb3cgQ1NT
IGZvbnQtc3R5bGluZyBmb3IgY2FudmFzIHdpdGhvdXQgUmVuZGVyU3R5bGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjY2NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5k
cmF3LmZvbnRmYWNlLm5vdGlucGFnZS1leHBlY3RlZC50eHQ6IE5vdyBwYXNzZXMKKwogMjAyMS0w
My0wMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbY3NzLWZsZXhib3hdIEltcG9ydCBsYXRlc3QgV1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZvbnRmYWNlLm5vdGlu
cGFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQu
dGV4dC5kcmF3LmZvbnRmYWNlLm5vdGlucGFnZS1leHBlY3RlZC50eHQKaW5kZXggNGE4YTA4ZjQ4
NzU4YjM5ZmRkODcxNTg0MjhjNzRjNzQ5ZmY0OGM3YS4uZWY2MGYwNWI3YjEyMjE3OTJiNDhlOWU1
OWQ1Njc5NWMxZGM2NGY0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUt
Y2FudmFzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC9kcmF3aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZm9udGZhY2Uu
bm90aW5wYWdlLWV4cGVjdGVkLnR4dApAQCAtNCw1ICs0LDUgQEAgQWN0dWFsIG91dHB1dDoKIEV4
cGVjdGVkIG91dHB1dDoKIAogCi1GQUlMIEBmb250LWZhY2UgZm9udHMgc2hvdWxkIHdvcmsgZXZl
biBpZiB0aGV5IGFyZSBub3QgdXNlZCBpbiB0aGUgcGFnZSBhc3NlcnRfYXBwcm94X2VxdWFsczog
UmVkIGNoYW5uZWwgb2YgdGhlIHBpeGVsIGF0ICg1LCA1KSBleHBlY3RlZCAwICsvLSAyIGJ1dCBn
b3QgMjU1CitQQVNTIEBmb250LWZhY2UgZm9udHMgc2hvdWxkIHdvcmsgZXZlbiBpZiB0aGV5IGFy
ZSBub3QgdXNlZCBpbiB0aGUgcGFnZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422350</attachid>
            <date>2021-03-05 01:38:41 -0800</date>
            <delta_ts>2021-03-05 07:05:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222665-20210305093840.patch</filename>
            <type>text/plain</type>
            <size>33016</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIwYzExYjhjZjhjNDAx
ZTU1YTY5YjQyMTA4ZDJkNTNmNGNjYjUyYi4uMmU1YWQzZWE4YmMyNTlkMjRkMWMxMzQ5NGMxOTFl
OGNhYTU0YzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTAzLTAzICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBBbGxvdyBDU1MgZm9udC1zdHls
aW5nIGZvciBjYW52YXMgd2l0aG91dCBSZW5kZXJTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVmYWN0b3IgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVOb25DYWxjTGVuZ3RoRG91YmxlIHRvIGFsbG93IGZvcgorICAgICAgICBpdHMgdXNlIHdpdGhv
dXQgcmVxdWlyaW5nIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgYW5kIFJlbmRlclN0eWxlLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgYWxyZWFkeSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVW56b29tZWROb25DYWxjTGVuZ3RoRG91Ymxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xl
bmd0aERvdWJsZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAg
ICogY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnByb3BlcnR5VG9Db21wdXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE6OnJlbmRlclZpZXcgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0Rm9udCk6CisgICAgICAgICogc3R5bGUvU3R5bGVGb250U2l6ZUZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZyb21T
cGVjaWZpZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wdXRlZEZvbnRTaXpl
RnJvbVNwZWNpZmllZFNpemVGb3JTVkdJbmxpbmVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpmb250U2l6ZUZvcktleXdvcmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlRm9udFNpemVG
dW5jdGlvbnMuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRm9udFJhdyk6CisgICAgICAgICog
c3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oOgorCiAyMDIxLTAzLTA0ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlUmVhZGVyOjplbnF1ZXVlVGFz
ayBzaG91bGQgdmFsaWRhdGUgdGhhdCBpdHMgY29udGV4dCBpcyBub3Qgc3RvcHBlZCBiZWZvcmUg
ZXhlY3V0aW5nIHRoZSB0YXNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAppbmRleCA0ZGRkMTQ2NWQ5MDA2ZDhmYTcyN2NkYWY0MWRmZDg3NjZiOGE3ZTljLi41NWJkZjc3
ODViNGYwZDcyNGMzNzZkZDMwMjcwZjMyNTlhOWQ5OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYWlyLmgi
CiAjaW5jbHVkZSAiUmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkBAIC01ODMsOTYgKzU4NCwxMzkgQEAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbW1QZXJJbmNo
ID0gMjUuNDsKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGNtUGVySW5jaCA9IDIuNTQ7CiBzdGF0
aWMgY29uc3RleHByIGRvdWJsZSBRUGVySW5jaCA9IDI1LjQgKiA0LjA7CiAKLWRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1VuaXRUeXBlIHByaW1pdGl2ZVR5
cGUsIGRvdWJsZSB2YWx1ZSkKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9v
bWVkTm9uQ2FsY0xlbmd0aERvdWJsZShDU1NVbml0VHlwZSBwcmltaXRpdmVUeXBlLCBkb3VibGUg
dmFsdWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUsIGNvbnN0IEZvbnRNZXRyaWNz
KiBmb250TWV0cmljcywgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogZm9udERlc2NyaXB0
aW9uLCBjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKiByb290Rm9udERlc2NyaXB0aW9uLCBj
b25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewotICAgIGRvdWJsZSBmYWN0b3I7Ci0gICAg
Ym9vbCBhcHBseVpvb20gPSB0cnVlOworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgeworICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FV
SVJLWV9FTVM6CisgICAgICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1
cm4gKChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNj
cmlwdGlvbi0+c3BlY2lmaWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUo
KSkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRVhTOgorICAgICAgICBBU1NF
UlQoZm9udE1ldHJpY3MpOworICAgICAgICBpZiAoZm9udE1ldHJpY3MtPmhhc1hIZWlnaHQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+eEhlaWdodCgpICogdmFsdWU7CisgICAg
ICAgIEFTU0VSVChmb250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm4gKChwcm9wZXJ0eVRv
Q29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IGZvbnREZXNjcmlwdGlvbi0+c3BlY2lm
aWVkU2l6ZSgpIDogZm9udERlc2NyaXB0aW9uLT5jb21wdXRlZFNpemUoKSkgLyAyLjAgKiB2YWx1
ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKKyAgICAgICAgaWYgKCFyb290Rm9u
dERlc2NyaXB0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICByZXR1cm4g
KChwcm9wZXJ0eVRvQ29tcHV0ZSA9PSBDU1NQcm9wZXJ0eUZvbnRTaXplKSA/IHJvb3RGb250RGVz
Y3JpcHRpb24tPnNwZWNpZmllZFNpemUoKSA6IHJvb3RGb250RGVzY3JpcHRpb24tPmNvbXB1dGVk
U2l6ZSgpKSAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DSFM6CisgICAgICAg
IEFTU0VSVChmb250TWV0cmljcyk7CisgICAgICAgIHJldHVybiBmb250TWV0cmljcy0+emVyb1dp
ZHRoKCkgKiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFg6CisgICAgICAgIHJl
dHVybiB2YWx1ZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006CisgICAgICAgIHJldHVy
biBjc3NQaXhlbHNQZXJJbmNoIC8gY21QZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0
VHlwZTo6Q1NTX01NOgorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAvIG1tUGVySW5j
aCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19ROgorICAgICAgICByZXR1cm4g
Y3NzUGl4ZWxzUGVySW5jaCAvIFFQZXJJbmNoICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX0xIUzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkxIUzoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIGNhc2UgQ1NTVW5p
dFR5cGU6OkNTU19JTjoKKyAgICAgICAgcmV0dXJuIGNzc1BpeGVsc1BlckluY2ggKiB2YWx1ZTsK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6CisgICAgICAgIHJldHVybiBjc3NQaXhlbHNQ
ZXJJbmNoIC8gNzIuMCAqIHZhbHVlOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKKyAg
ICAgICAgLy8gMSBwYyA9PSAxMiBwdAorICAgICAgICByZXR1cm4gY3NzUGl4ZWxzUGVySW5jaCAq
IDEyLjAgLyA3Mi4wICogdmFsdWU7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0NBTENfUEVS
Q0VOVEFHRV9XSVRIX0xFTkdUSDoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJD
RU5UQUdFX1dJVEhfTlVNQkVSOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIC0xLjA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZIOgorICAgICAgICBy
ZXR1cm4gcmVuZGVyVmlldyA/IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoKS5oZWlnaHQoKSAvIDEwMC4wICogdmFsdWUgOiAwOworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19WVzoKKyAgICAgICAgcmV0dXJuIHJlbmRlclZpZXcgPyByZW5kZXJWaWV3LT52aWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkud2lkdGgoKSAvIDEwMC4wICogdmFsdWUgOiAw
OworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19WTUFYOgorICAgICAgICBpZiAocmVuZGVyVmll
dykgeworICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
ID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpOworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMud2lk
dGgoKSwgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy5oZWlnaHQoKSkgLyAxMDAuMCAq
IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVk1JTjoKKyAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKKyAgICAgICAgICAg
IEludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyA9IHJlbmRlclZpZXctPnZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om1pbih2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLndpZHRoKCksIHZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMuaGVpZ2h0KCkpIC8gMTAwLjAgKiB2YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KK30KIAorZG91YmxlIENT
U1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTVW5pdFR5cGUgcHJpbWl0aXZl
VHlwZSwgZG91YmxlIHZhbHVlKQorewogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkgewogICAg
IGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19FTVM6CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FV
SVJLWV9FTVM6CiAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uRGF0YS5zdHlsZSgpKTsKLSAgICAg
ICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEuY29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSA6IGNvbnZl
cnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAg
ICAgICB2YWx1ZSA9IGNvbXB1dGVVbnpvb21lZE5vbkNhbGNMZW5ndGhEb3VibGUocHJpbWl0aXZl
VHlwZSwgdmFsdWUsIGNvbnZlcnNpb25EYXRhLnByb3BlcnR5VG9Db21wdXRlKCksIG51bGxwdHIs
ICZjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGJy
ZWFrOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0VYUzoKLSAgICAgICAgQVNTRVJUKGNv
bnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSBhIGJ1ZyBy
aWdodCBub3cgd2hlcmUgdGhlIHpvb20gd2lsbCBiZSBhcHBsaWVkIHR3aWNlIHRvIEVYIHVuaXRz
LgogICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byBjb21wdXRlIEVYIHVzaW5nIGZvbnRNZXRy
aWNzIGZvciB0aGUgb3JpZ2luYWwgc3BlY2lmaWVkU2l6ZSBhbmQgbm90IHVzZQogICAgICAgICAv
LyBvdXIgYWN0dWFsIGNvbnN0cnVjdGVkIHJlbmRlcmluZyBmb250LgotICAgICAgICBpZiAoY29u
dmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5oYXNYSGVpZ2h0KCkpCi0gICAgICAg
ICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250TWV0cmljcygpLnhIZWln
aHQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFjdG9yID0gKGNvbnZlcnNpb25EYXRh
LmNvbXB1dGluZ0ZvbnRTaXplKCkgPyBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVzY3Jp
cHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5zdHlsZSgpLT5mb250RGVz
Y3JpcHRpb24oKS5jb21wdXRlZFNpemUoKSkgLyAyLjA7CisgICAgICAgIEFTU0VSVChjb252ZXJz
aW9uRGF0YS5zdHlsZSgpKTsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxj
TGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0
eVRvQ29tcHV0ZSgpLCAmY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKSwgJmNv
bnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpKTsKICAgICAgICAgYnJlYWs7
CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKLSAgICAgICAgaWYgKGNvbnZlcnNp
b25EYXRhLnJvb3RTdHlsZSgpKQotICAgICAgICAgICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEu
Y29tcHV0aW5nRm9udFNpemUoKSA/IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgpLT5mb250RGVz
Y3JpcHRpb24oKS5zcGVjaWZpZWRTaXplKCkgOiBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGZhY3RvciA9IDEuMDsKKyAgICAgICAgdmFsdWUgPSBjb21wdXRlVW56b29tZWROb25DYWxj
TGVuZ3RoRG91YmxlKHByaW1pdGl2ZVR5cGUsIHZhbHVlLCBjb252ZXJzaW9uRGF0YS5wcm9wZXJ0
eVRvQ29tcHV0ZSgpLCBudWxscHRyLCBudWxscHRyLCBjb252ZXJzaW9uRGF0YS5yb290U3R5bGUo
KSA/ICZjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkgOiBudWxs
cHRyKTsKICAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0hTOgog
ICAgICAgICBBU1NFUlQoY29udmVyc2lvbkRhdGEuc3R5bGUoKSk7Ci0gICAgICAgIGZhY3RvciA9
IGNvbnZlcnNpb25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkuemVyb1dpZHRoKCk7CisgICAg
ICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9uQ2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVU
eXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJvcGVydHlUb0NvbXB1dGUoKSwgJmNvbnZlcnNp
b25EYXRhLnN0eWxlKCktPmZvbnRNZXRyaWNzKCkpOwogICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QWDoKLSAgICAgICAgZmFjdG9yID0gMS4wOwotICAgICAgICBi
cmVhazsKICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Ci0gICAgICAgIGZhY3RvciA9IGNz
c1BpeGVsc1BlckluY2ggLyBjbVBlckluY2g7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NT
VW5pdFR5cGU6OkNTU19NTToKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAvIG1t
UGVySW5jaDsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6Ci0g
ICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyBRUGVySW5jaDsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfSU46CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1BUOgorICAgIGNh
c2UgQ1NTVW5pdFR5cGU6OkNTU19QQzoKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19Q
RVJDRU5UQUdFX1dJVEhfTEVOR1RIOgorICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BF
UkNFTlRBR0VfV0lUSF9OVU1CRVI6CisgICAgICAgIHZhbHVlID0gY29tcHV0ZVVuem9vbWVkTm9u
Q2FsY0xlbmd0aERvdWJsZShwcmltaXRpdmVUeXBlLCB2YWx1ZSwgY29udmVyc2lvbkRhdGEucHJv
cGVydHlUb0NvbXB1dGUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDU1NVbml0VHlw
ZTo6Q1NTX1ZIOgorICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3cG9y
dEhlaWdodEZhY3RvcigpOworCisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZXOgorICAgICAg
ICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3cG9ydFdpZHRoRmFjdG9yKCk7CisK
KyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVk1BWDoKKyAgICAgICAgcmV0dXJuIHZhbHVlICog
Y29udmVyc2lvbkRhdGEudmlld3BvcnRNYXhGYWN0b3IoKTsKKworICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19WTUlOOgorICAgICAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJzaW9uRGF0YS52aWV3
cG9ydE1pbkZhY3RvcigpOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0xIUzoKICAgICAg
ICAgQVNTRVJUKGNvbnZlcnNpb25EYXRhLnN0eWxlKCkpOwogICAgICAgICBpZiAoY29udmVyc2lv
bkRhdGEuY29tcHV0aW5nTGluZUhlaWdodCgpIHx8IGNvbnZlcnNpb25EYXRhLmNvbXB1dGluZ0Zv
bnRTaXplKCkpIHsKICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHBhcmVudCdzIGNvbXB1
dGVkIGxpbmUtaGVpZ2h0LCBvciBmYWxsIGJhY2sgdG8gdGhlIGluaXRpYWwgbGluZS1oZWlnaHQg
b2YgdGhpcyBlbGVtZW50J3MgZm9udCBzcGFjaW5nLgotICAgICAgICAgICAgZmFjdG9yID0gY29u
dmVyc2lvbkRhdGEucGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCkt
PmNvbXB1dGVkTGluZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJp
Y3MoKS5saW5lU3BhY2luZygpOworICAgICAgICAgICAgdmFsdWUgKj0gY29udmVyc2lvbkRhdGEu
cGFyZW50U3R5bGUoKSA/IGNvbnZlcnNpb25EYXRhLnBhcmVudFN0eWxlKCktPmNvbXB1dGVkTGlu
ZUhlaWdodCgpIDogY29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Zm9udE1ldHJpY3MoKS5saW5lU3Bh
Y2luZygpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25E
YXRhLnN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgICAgICAgICAgdmFsdWUgKj0g
Y29udmVyc2lvbkRhdGEuc3R5bGUoKS0+Y29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgIGJy
ZWFrOworCiAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JMSFM6CiAgICAgICAgIGlmIChjb252
ZXJzaW9uRGF0YS5yb290U3R5bGUoKSkgewogICAgICAgICAgICAgaWYgKGNvbnZlcnNpb25EYXRh
LmNvbXB1dGluZ0xpbmVIZWlnaHQoKSB8fCBjb252ZXJzaW9uRGF0YS5jb21wdXRpbmdGb250U2l6
ZSgpKQotICAgICAgICAgICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnJvb3RTdHlsZSgp
LT5jb21wdXRlTGluZUhlaWdodChjb252ZXJzaW9uRGF0YS5yb290U3R5bGUoKS0+c3BlY2lmaWVk
TGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSAqPSBjb252ZXJzaW9uRGF0YS5y
b290U3R5bGUoKS0+Y29tcHV0ZUxpbmVIZWlnaHQoY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCkt
PnNwZWNpZmllZExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZmFjdG9yID0gY29udmVyc2lvbkRhdGEucm9vdFN0eWxlKCktPmNvbXB1dGVkTGluZUhlaWdo
dCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGZhY3RvciA9IDEuMDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgotICAgICAgICBmYWN0b3IgPSBj
c3NQaXhlbHNQZXJJbmNoOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfUFQ6Ci0gICAgICAgIGZhY3RvciA9IGNzc1BpeGVsc1BlckluY2ggLyA3Mi4wOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6Ci0gICAgICAgIC8vIDEgcGMg
PT0gMTIgcHQKLSAgICAgICAgZmFjdG9yID0gY3NzUGl4ZWxzUGVySW5jaCAqIDEyLjAgLyA3Mi4w
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ0FMQ19QRVJDRU5U
QUdFX1dJVEhfTEVOR1RIOgotICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19DQUxDX1BFUkNFTlRB
R0VfV0lUSF9OVU1CRVI6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gLTEuMDsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVkg6Ci0gICAgICAgIGZhY3Rv
ciA9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0SGVpZ2h0RmFjdG9yKCk7Ci0gICAgICAgIGFwcGx5
Wm9vbSA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
Vlc6Ci0gICAgICAgIGZhY3RvciA9IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0V2lkdGhGYWN0b3Io
KTsKLSAgICAgICAgYXBwbHlab29tID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTVW5pdFR5cGU6OkNTU19WTUFYOgotICAgICAgICBmYWN0b3IgPSBjb252ZXJzaW9uRGF0YS52
aWV3cG9ydE1heEZhY3RvcigpOwotICAgICAgICBhcHBseVpvb20gPSBmYWxzZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1ZNSU46Ci0gICAgICAgIGZhY3RvciA9
IGNvbnZlcnNpb25EYXRhLnZpZXdwb3J0TWluRmFjdG9yKCk7Ci0gICAgICAgIGFwcGx5Wm9vbSA9
IGZhbHNlOworICAgICAgICAgICAgICAgIHZhbHVlICo9IGNvbnZlcnNpb25EYXRhLnJvb3RTdHls
ZSgpLT5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKKwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gLTEuMDsKQEAgLTY4MSwxNCArNzI1LDEwIEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiAg
ICAgLy8gV2UgZG8gbm90IGFwcGx5IHRoZSB6b29tIGZhY3RvciB3aGVuIHdlIGFyZSBjb21wdXRp
bmcgdGhlIHZhbHVlIG9mIHRoZSBmb250LXNpemUgcHJvcGVydHkuIFRoZSB6b29taW5nCiAgICAg
Ly8gZm9yIGZvbnQgc2l6ZXMgaXMgbXVjaCBtb3JlIGNvbXBsaWNhdGVkLCBzaW5jZSB3ZSBoYXZl
IHRvIHdvcnJ5IGFib3V0IGVuZm9yY2luZyB0aGUgbWluaW11bSBmb250IHNpemUgcHJlZmVyZW5j
ZQogICAgIC8vIGFzIHdlbGwgYXMgZW5mb3JjaW5nIHRoZSBpbXBsaWNpdCAic21hcnQgbWluaW11
bS4iCi0gICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlICogZmFjdG9yOwogICAgIGlmIChjb252ZXJz
aW9uRGF0YS5jb21wdXRpbmdGb250U2l6ZSgpIHx8IGlzRm9udFJlbGF0aXZlTGVuZ3RoKHByaW1p
dGl2ZVR5cGUpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgaWYgKGFwcGx5Wm9vbSkK
LSAgICAgICAgcmVzdWx0ICo9IGNvbnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlOwogCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdmFsdWUgKiBjb252ZXJz
aW9uRGF0YS56b29tKCk7CiB9CiAKIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmVxdWFsRm9yTGVu
Z3RoUmVzb2x1dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGVBLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGVCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCAzOTg2
OTFiYjFmZDc0YTczMjEwYjEyY2YxOTk4MTg3NTMxYzBiNTljLi5kNjg2Y2MxYmE5NTc0MjE1MGUw
Y2Q1NmM4MGEwYWQ4MTY5NjBmMjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaApAQCAtMzksMTEgKzM5LDE0IEBAIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGVwcmVjYXRlZENT
U09NUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBGb250Q2FzY2FkZURlc2NyaXB0aW9uOworY2xhc3Mg
Rm9udE1ldHJpY3M7CiBjbGFzcyBQYWlyOwogY2xhc3MgUXVhZDsKIGNsYXNzIFJHQkNvbG9yOwog
Y2xhc3MgUmVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVyVmlldzsKIAogc3Ry
dWN0IENTU0ZvbnRGYW1pbHk7CiBzdHJ1Y3QgTGVuZ3RoOwpAQCAtMTg4LDYgKzE5MSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVG
YWN0b3IoQ1NTVW5pdFR5cGUpOwogICAgIHN0YXRpYyBTdHJpbmcgdW5pdFR5cGVTdHJpbmcoQ1NT
VW5pdFR5cGUpOwogCisgICAgc3RhdGljIGRvdWJsZSBjb21wdXRlVW56b29tZWROb25DYWxjTGVu
Z3RoRG91YmxlKENTU1VuaXRUeXBlLCBkb3VibGUgdmFsdWUsIENTU1Byb3BlcnR5SUQsIGNvbnN0
IEZvbnRNZXRyaWNzKiA9IG51bGxwdHIsIGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24qID0g
bnVsbHB0ciwgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiogcm9vdEZvbnREZXNjcmlwdGlv
biA9IG51bGxwdHIsIGNvbnN0IFJlbmRlclZpZXcqID0gbnVsbHB0cik7CiAgICAgc3RhdGljIGRv
dWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiwgQ1NTVW5pdFR5cGUsIGRvdWJsZSB2YWx1ZSk7CiAgICAgLy8gVHJ1ZSBpZiBjb21w
dXRlTm9uQ2FsY0xlbmd0aERvdWJsZSB3b3VsZCBwcm9kdWNlIGlkZW50aWNhbCByZXN1bHRzIHdo
ZW4gcmVzb2x2ZWQgYWdhaW5zdCBib3RoIHRoZXNlIHN0eWxlcy4KICAgICBzdGF0aWMgYm9vbCBl
cXVhbEZvckxlbmd0aFJlc29sdXRpb24oY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSZW5kZXJT
dHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmgKaW5kZXggNjQ5NWQ4NTZlZDYxMjY0YjRkYzUxNmRiYmFlOWJhMDEwYmFjZDE1ZC4uODk0MzNh
ZmU2ZDJmZThlNzMyYWE2ZDc5ZDYyNDgyYzY1ZjA3NzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC03NSw2ICs3NSw4IEBAIHB1Ymxp
YzoKICAgICBmbG9hdCB6b29tKCkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRpbmdGb250U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6
ZTsgfQogICAgIGJvb2wgY29tcHV0aW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
cGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OyB9CisgICAgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1
dGUudmFsdWVPcihDU1NQcm9wZXJ0eUludmFsaWQpOyB9CisgICAgY29uc3QgUmVuZGVyVmlldyog
cmVuZGVyVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyVmlldzsgfQogCiAgICAgZG91Ymxl
IHZpZXdwb3J0V2lkdGhGYWN0b3IoKSBjb25zdDsKICAgICBkb3VibGUgdmlld3BvcnRIZWlnaHRG
YWN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IGNmNGIwZDZkYTY5MzFkOTk4Y2ZmOGE0
N2EzYWJkNmNhNThkMzc0NjAuLjY3MzA5YzczNjQ5MjBmOGU3MzZjZTlmOTU3NDMxYTBmYjc3MGQ5
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdGb250KQogICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKERlZmF1bHRGb250U2l6ZSk7CiAgICAgfQog
Ci0gICAgYXV0byBmb250U3R5bGUgPSBTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcoKmZvbnRSYXcs
IFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgZG9jdW1lbnQpOwotICAgIGlmICghZm9udFN0eWxl
KQorICAgIGF1dG8gZm9udENhc2NhZGUgPSBTdHlsZTo6cmVzb2x2ZUZvckZvbnRSYXcoKmZvbnRS
YXcsIFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgZG9jdW1lbnQpOworICAgIGlmICghZm9udENh
c2NhZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBuZXdGb250U2FmZUNvcHkobmV3
Rm9udCk7IC8vIENyZWF0ZSBhIHN0cmluZyBjb3B5IHNpbmNlIG5ld0ZvbnQgY2FuIGJlIGRlbGV0
ZWQgaW5zaWRlIHJlYWxpemVTYXZlcy4KICAgICByZWFsaXplU2F2ZXMoKTsKICAgICBtb2RpZmlh
YmxlU3RhdGUoKS51bnBhcnNlZEZvbnQgPSBuZXdGb250U2FmZUNvcHk7CiAKLSAgICBtb2RpZmlh
YmxlU3RhdGUoKS5mb250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpmb250
U3R5bGUpOworICAgIG1vZGlmaWFibGVTdGF0ZSgpLmZvbnQuaW5pdGlhbGl6ZShkb2N1bWVudC5m
b250U2VsZWN0b3IoKSwgKmZvbnRDYXNjYWRlKTsKICAgICBBU1NFUlQoc3RhdGUoKS5mb250LnJl
YWxpemVkKCkpOwogICAgIEFTU0VSVChzdGF0ZSgpLmZvbnQuaXNQb3B1bGF0ZWQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDlmZjIyYTdjM2Q1ZGVjY2U2YTY0YmFhYTZhY2JlYzEx
NmIxMDJjMGIuLjUxNmM3M2NiMGMxZjY5ZmI2OWRjODA5YjJlYmY4YmFlNzdkNjQ3YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2UuY3BwCkBAIC0yOTIsMTMgKzI5MiwxMyBAQCB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6Zm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3Rv
ciYgc2VsZQogICAgIHVwZGF0ZShzZWxlY3Rvcik7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6Rm9udFByb3h5Ojppbml0aWFsaXplKEZvbnRTZWxlY3RvciYgZm9udFNl
bGVjdG9yLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OkZvbnRQcm94eTo6aW5pdGlhbGl6ZShGb250U2VsZWN0b3ImIGZvbnRT
ZWxlY3RvciwgY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlKQogewogICAgIC8vIEJld2Fy
ZSEgbV9mb250LmZvbnRTZWxlY3RvcigpIG1pZ2h0IG5vdCBwb2ludCB0byBkb2N1bWVudC5mb250
U2VsZWN0b3IoKSEKLSAgICBBU1NFUlQobmV3U3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0
b3IoKSA9PSAmZm9udFNlbGVjdG9yKTsKKyAgICBBU1NFUlQoZm9udENhc2NhZGUuZm9udFNlbGVj
dG9yKCkgPT0gJmZvbnRTZWxlY3Rvcik7CiAgICAgaWYgKHJlYWxpemVkKCkpCiAgICAgICAgIG1f
Zm9udC5mb250U2VsZWN0b3IoKS0+dW5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygq
dGhpcyk7Ci0gICAgbV9mb250ID0gbmV3U3R5bGUuZm9udENhc2NhZGUoKTsKKyAgICBtX2ZvbnQg
PSBmb250Q2FzY2FkZTsKICAgICBtX2ZvbnQudXBkYXRlKCZmb250U2VsZWN0b3IpOwogICAgIEFT
U0VSVCgmZm9udFNlbGVjdG9yID09IG1fZm9udC5mb250U2VsZWN0b3IoKSk7CiAgICAgbV9mb250
LmZvbnRTZWxlY3RvcigpLT5yZWdpc3RlckZvckludmFsaWRhdGlvbkNhbGxiYWNrcygqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlLmgKaW5kZXggMTBmMjc4YWM1YjdkYmQ1MjA5YjAwODNhYjAxMTVjNDUx
ZGU1ZjE1OS4uOTRhZmVhMzlmMDE4OTIwM2NjZjVhODRkODViYzc2ZjU2ODA1ZjQ3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuaApAQCAtNjQsNyArNjQsNiBAQCBjbGFzcyBJbWFnZUJpdG1hcDsKIGNsYXNz
IEltYWdlRGF0YTsKIGNsYXNzIE9mZnNjcmVlbkNhbnZhczsKIGNsYXNzIFBhdGgyRDsKLWNsYXNz
IFJlbmRlclN0eWxlOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgVGV4dE1ldHJpY3M7CiAK
QEAgLTIzNSw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZvbnRQcm94eSYgb3BlcmF0b3I9
KGNvbnN0IEZvbnRQcm94eSYpOwogCiAgICAgICAgIGJvb2wgcmVhbGl6ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQuZm9udFNlbGVjdG9yKCk7IH0KLSAgICAgICAgdm9pZCBpbml0aWFsaXplKEZv
bnRTZWxlY3RvciYsIGNvbnN0IFJlbmRlclN0eWxlJik7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZShGb250U2VsZWN0b3ImLCBjb25zdCBGb250Q2FzY2FkZSYpOwogICAgICAgICBjb25zdCBGb250
TWV0cmljcyYgZm9udE1ldHJpY3MoKSBjb25zdDsKICAgICAgICAgY29uc3QgRm9udENhc2NhZGVE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgICAgIGZsb2F0IHdpZHRo
KGNvbnN0IFRleHRSdW4mLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNDMyMzU0NGU1ZWY1YzdkOTViNjRlMGQwZGJkYmEyMzIz
MWNjZDBjNy4uNjRhY2YxYWFlZWM4MDI5MzgwYmRlMGRmNDQ4YzI0NmE0MTMzNmIwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgdm9pZCBPZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEZvbnQoY29uc3QgU3RyaW5nJiBuZXdG
b250KQogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoRGVmYXVsdEZvbnRTaXpl
KTsKIAogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwot
ICAgIGF1dG8gZm9udFN0eWxlID0gU3R5bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBX
VEZNb3ZlKGZvbnREZXNjcmlwdGlvbiksIGRvY3VtZW50KTsKKyAgICBhdXRvIGZvbnRDYXNjYWRl
ID0gU3R5bGU6OnJlc29sdmVGb3JGb250UmF3KCpmb250UmF3LCBXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIGRvY3VtZW50KTsKIAotICAgIGlmIChmb250U3R5bGUpCi0gICAgICAgIG1vZGlmaWFi
bGVTdGF0ZSgpLmZvbnQuaW5pdGlhbGl6ZShkb2N1bWVudC5mb250U2VsZWN0b3IoKSwgKmZvbnRT
dHlsZSk7CisgICAgaWYgKGZvbnRDYXNjYWRlKQorICAgICAgICBtb2RpZmlhYmxlU3RhdGUoKS5m
b250LmluaXRpYWxpemUoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCksICpmb250Q2FzY2FkZSk7CiB9
CiAKIENhbnZhc0RpcmVjdGlvbiBPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRp
cmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZv
bnRTaXplRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVG
dW5jdGlvbnMuY3BwCmluZGV4IDVlNmEzMzIyYTMwMjExMmY1OGZiZjlmYTFlZGU1YWMyZmZhNjQ1
ZDkuLmQ1NGZkNTFjMDgwOGMzZDVhZjQwMjM5MTUzNWNjYWExZmQ4YWRkOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlRm9udFNpemVGdW5jdGlvbnMuY3BwCkBAIC0zOSwxMyAr
MzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLWVudW0g
Y2xhc3MgTWluaW11bUZvbnRTaXplUnVsZSB7Ci0gICAgTm9uZSwKLSAgICBBYnNvbHV0ZSwKLSAg
ICBBYnNvbHV0ZUFuZFJlbGF0aXZlCi19OwotCi1zdGF0aWMgZmxvYXQgY29tcHV0ZWRGb250U2l6
ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0ZVNp
emUsIGZsb2F0IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUgbWluaW11bVNpemVSdWxl
LCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MpCitmbG9hdCBjb21wdXRlZEZvbnRTaXplRnJvbVNw
ZWNpZmllZFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxv
YXQgem9vbUZhY3RvciwgTWluaW11bUZvbnRTaXplUnVsZSBtaW5pbXVtU2l6ZVJ1bGUsIGNvbnN0
IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzKQogewogICAgIC8vIFRleHQgd2l0aCBhIDBweCBm
b250IHNpemUgc2hvdWxkIG5vdCBiZSB2aXNpYmxlIGFuZCB0aGVyZWZvcmUgbmVlZHMgdG8gYmUK
ICAgICAvLyBleGVtcHQgZnJvbSBtaW5pbXVtIGZvbnQgc2l6ZSBydWxlcy4gQWNpZDMgcmVsaWVz
IG9uIHRoaXMgZm9yIHBpeGVsLXBlcmZlY3QKQEAgLTY3LDggKzYxLDggQEAgc3RhdGljIGZsb2F0
IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBi
b29sIGlzQWJzb2wKICAgICBpZiAobWluaW11bVNpemVSdWxlID09IE1pbmltdW1Gb250U2l6ZVJ1
bGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBzcGVjaWZpZWRTaXplOwogCi0gICAgaW50IG1pblNp
emUgPSBzZXR0aW5ncy5taW5pbXVtRm9udFNpemUoKTsKLSAgICBpbnQgbWluTG9naWNhbFNpemUg
PSBzZXR0aW5ncy5taW5pbXVtTG9naWNhbEZvbnRTaXplKCk7CisgICAgaW50IG1pblNpemUgPSBz
ZXR0aW5ncy5taW5pbXVtRm9udFNpemU7CisgICAgaW50IG1pbkxvZ2ljYWxTaXplID0gc2V0dGlu
Z3MubWluaW11bUxvZ2ljYWxGb250U2l6ZTsKICAgICBmbG9hdCB6b29tZWRTaXplID0gc3BlY2lm
aWVkU2l6ZSAqIHpvb21GYWN0b3I7CiAKICAgICAvLyBBcHBseSB0aGUgaGFyZCBtaW5pbXVtIGZp
cnN0LiBXZSBvbmx5IGFwcGx5IHRoZSBoYXJkIG1pbmltdW0gaWYgYWZ0ZXIgem9vbWluZyB3ZSdy
ZSBzdGlsbCB0b28gc21hbGwuCkBAIC05NSwxMiArODksMTIgQEAgZmxvYXQgY29tcHV0ZWRGb250
U2l6ZUZyb21TcGVjaWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0
ZVNpemUKICAgICAgICAgaWYgKGZyYW1lICYmIHN0eWxlLT50ZXh0Wm9vbSgpICE9IFRleHRab29t
OjpSZXNldCkKICAgICAgICAgICAgIHpvb21GYWN0b3IgKj0gZnJhbWUtPnRleHRab29tRmFjdG9y
KCk7CiAgICAgfQotICAgIHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUo
c3BlY2lmaWVkU2l6ZSwgaXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIHVzZVNWR1pvb21SdWxl
cyA/IE1pbmltdW1Gb250U2l6ZVJ1bGU6Ok5vbmUgOiBNaW5pbXVtRm9udFNpemVSdWxlOjpBYnNv
bHV0ZUFuZFJlbGF0aXZlLCBkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICByZXR1cm4gY29tcHV0
ZWRGb250U2l6ZUZyb21TcGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXpl
LCB6b29tRmFjdG9yLCB1c2VTVkdab29tUnVsZXMgPyBNaW5pbXVtRm9udFNpemVSdWxlOjpOb25l
IDogTWluaW11bUZvbnRTaXplUnVsZTo6QWJzb2x1dGVBbmRSZWxhdGl2ZSwgZG9jdW1lbnQuc2V0
dGluZ3NWYWx1ZXMoKSk7CiB9CiAKIGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVk
U2l6ZUZvclNWR0lubGluZVRleHQoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCBpc0Fic29sdXRl
U2l6ZSwgZmxvYXQgem9vbUZhY3RvciwgY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IHJldHVybiBjb21wdXRlZEZvbnRTaXplRnJvbVNwZWNpZmllZFNpemUoc3BlY2lmaWVkU2l6ZSwg
aXNBYnNvbHV0ZVNpemUsIHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGU6OkFic29sdXRl
LCBkb2N1bWVudC5zZXR0aW5ncygpKTsKKyAgICByZXR1cm4gY29tcHV0ZWRGb250U2l6ZUZyb21T
cGVjaWZpZWRTaXplKHNwZWNpZmllZFNpemUsIGlzQWJzb2x1dGVTaXplLCB6b29tRmFjdG9yLCBN
aW5pbXVtRm9udFNpemVSdWxlOjpBYnNvbHV0ZSwgZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKSk7
CiB9CiAKIGNvbnN0IGludCBmb250U2l6ZVRhYmxlTWF4ID0gMTY7CkBAIC0xNDUsMjIgKzEzOSwy
NiBAQCBzdGF0aWMgY29uc3QgaW50IHN0cmljdEZvbnRTaXplVGFibGVbZm9udFNpemVUYWJsZU1h
eCAtIGZvbnRTaXplVGFibGVNaW4gKyAxXVt0bwogLy8gZmFjdG9ycyBmb3IgZWFjaCBrZXl3b3Jk
IHZhbHVlLgogc3RhdGljIGNvbnN0IGZsb2F0IGZvbnRTaXplRmFjdG9yc1t0b3RhbEtleXdvcmRz
XSA9IHsgMC42MGYsIDAuNzVmLCAwLjg5ZiwgMS4wZiwgMS4yZiwgMS41ZiwgMi4wZiwgMy4wZiB9
OwogCi1mbG9hdCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNo
b3VsZFVzZUZpeGVkRGVmYXVsdFNpemUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK2Zsb2F0
IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQsIGJvb2wgc2hvdWxkVXNlRml4
ZWREZWZhdWx0U2l6ZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3MsIGJvb2wgaW5R
dWlya3NNb2RlKQogewotICAgIGJvb2wgcXVpcmtzTW9kZSA9IGRvY3VtZW50LmluUXVpcmtzTW9k
ZSgpOwotICAgIGludCBtZWRpdW1TaXplID0gc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSA/IGRv
Y3VtZW50LnNldHRpbmdzKCkuZGVmYXVsdEZpeGVkRm9udFNpemUoKSA6IGRvY3VtZW50LnNldHRp
bmdzKCkuZGVmYXVsdEZvbnRTaXplKCk7CisgICAgaW50IG1lZGl1bVNpemUgPSBzaG91bGRVc2VG
aXhlZERlZmF1bHRTaXplID8gc2V0dGluZ3MuZGVmYXVsdEZpeGVkRm9udFNpemUgOiBzZXR0aW5n
cy5kZWZhdWx0Rm9udFNpemU7CiAgICAgaWYgKG1lZGl1bVNpemUgPj0gZm9udFNpemVUYWJsZU1p
biAmJiBtZWRpdW1TaXplIDw9IGZvbnRTaXplVGFibGVNYXgpIHsKICAgICAgICAgLy8gTG9vayB1
cCB0aGUgZW50cnkgaW4gdGhlIHRhYmxlLgogICAgICAgICBpbnQgcm93ID0gbWVkaXVtU2l6ZSAt
IGZvbnRTaXplVGFibGVNaW47CiAgICAgICAgIGludCBjb2wgPSAoa2V5d29yZElEIC0gQ1NTVmFs
dWVYeFNtYWxsKTsKLSAgICAgICAgcmV0dXJuIHF1aXJrc01vZGUgPyBxdWlya3NGb250U2l6ZVRh
YmxlW3Jvd11bY29sXSA6IHN0cmljdEZvbnRTaXplVGFibGVbcm93XVtjb2xdOworICAgICAgICBy
ZXR1cm4gaW5RdWlya3NNb2RlID8gcXVpcmtzRm9udFNpemVUYWJsZVtyb3ddW2NvbF0gOiBzdHJp
Y3RGb250U2l6ZVRhYmxlW3Jvd11bY29sXTsKICAgICB9CiAKICAgICAvLyBWYWx1ZSBpcyBvdXRz
aWRlIHRoZSByYW5nZSBvZiB0aGUgdGFibGUuIEFwcGx5IHRoZSBzY2FsZSBmYWN0b3IgaW5zdGVh
ZC4KLSAgICBmbG9hdCBtaW5Mb2dpY2FsU2l6ZSA9IHN0ZDo6bWF4PGZsb2F0Pihkb2N1bWVudC5z
ZXR0aW5ncygpLm1pbmltdW1Mb2dpY2FsRm9udFNpemUoKSwgMSk7CisgICAgZmxvYXQgbWluTG9n
aWNhbFNpemUgPSBzdGQ6Om1heDxmbG9hdD4oc2V0dGluZ3MubWluaW11bUxvZ2ljYWxGb250U2l6
ZSwgMSk7CiAgICAgcmV0dXJuIHN0ZDo6bWF4KGZvbnRTaXplRmFjdG9yc1trZXl3b3JkSUQgLSBD
U1NWYWx1ZVh4U21hbGxdICogbWVkaXVtU2l6ZSwgbWluTG9naWNhbFNpemUpOwogfQogCitmbG9h
dCBmb250U2l6ZUZvcktleXdvcmQodW5zaWduZWQga2V5d29yZElELCBib29sIHNob3VsZFVzZUZp
eGVkRGVmYXVsdFNpemUsIGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4g
Zm9udFNpemVGb3JLZXl3b3JkKGtleXdvcmRJRCwgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSwg
ZG9jdW1lbnQuc2V0dGluZ3NWYWx1ZXMoKSwgZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkpOworfQor
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIGludCBmaW5kTmVhcmVzdExlZ2FjeUZvbnRT
aXplKGludCBwaXhlbEZvbnRTaXplLCBjb25zdCBUKiB0YWJsZSwgaW50IG11bHRpcGxpZXIpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUZvbnRTaXplRnVuY3Rpb25zLmgKaW5kZXgg
ZDM4NWI5YTAyNDg4NTJkNGFhMTI2ZmYxMTY1ODAxNWE3NmRiMGU2ZC4uYThmMjM3MmVhOWMxZDFl
Yzk5OWQ1MWJjNjk3NzNlYmRiNjJkMWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVGb250U2l6ZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlRm9udFNpemVGdW5jdGlvbnMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzMs
MTEgKzM0LDE1IEBAIGNsYXNzIFJlbmRlclN0eWxlOwogCiBuYW1lc3BhY2UgU3R5bGUgewogCitl
bnVtIGNsYXNzIE1pbmltdW1Gb250U2l6ZVJ1bGUgOiB1aW50OF90IHsgTm9uZSwgQWJzb2x1dGUs
IEFic29sdXRlQW5kUmVsYXRpdmUgfTsKKworZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZyb21TcGVj
aWZpZWRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0
IHpvb21GYWN0b3IsIE1pbmltdW1Gb250U2l6ZVJ1bGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMm
KTsKIGZsb2F0IGNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShmbG9hdCBzcGVjaWZp
ZWRTaXplLCBib29sIGlzQWJzb2x1dGVTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcywgY29uc3Qg
UmVuZGVyU3R5bGUqLCBjb25zdCBEb2N1bWVudCYpOwogZmxvYXQgY29tcHV0ZWRGb250U2l6ZUZy
b21TcGVjaWZpZWRTaXplRm9yU1ZHSW5saW5lVGV4dChmbG9hdCBzcGVjaWZpZWRTaXplLCBib29s
IGlzQWJzb2x1dGVTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBjb25zdCBEb2N1bWVudCYpOwogCiAv
LyBHaXZlbiBhIENTUyBrZXl3b3JkIGlkIGluIHRoZSByYW5nZSAoQ1NTVmFsdWVYeFNtYWxsIHRv
IENTU1ZhbHVlV2Via2l0WHh4TGFyZ2UpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCiAvLyB0
aGUgY29ycmVjdCBmb250IHNpemUgc2NhbGVkIHJlbGF0aXZlIHRvIHRoZSB1c2VyJ3MgZGVmYXVs
dCAobWVkaXVtKS4KK2Zsb2F0IGZvbnRTaXplRm9yS2V5d29yZCh1bnNpZ25lZCBrZXl3b3JkSUQs
IGJvb2wgc2hvdWxkVXNlRml4ZWREZWZhdWx0U2l6ZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYs
IGJvb2wgaW5RdWlya3NNb2RlID0gZmFsc2UpOwogZmxvYXQgZm9udFNpemVGb3JLZXl3b3JkKHVu
c2lnbmVkIGtleXdvcmRJRCwgYm9vbCBzaG91bGRVc2VGaXhlZERlZmF1bHRTaXplLCBjb25zdCBE
b2N1bWVudCYpOwogCiAvLyBHaXZlbiBhIGZvbnQgc2l6ZSBpbiBwaXhlbCwgdGhpcyBmdW5jdGlv
biB3aWxsIHJldHVybiBsZWdhY3kgZm9udCBzaXplIGJldHdlZW4gMSBhbmQgNy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggMzc4NThh
MzAyZWE1ZTYxMmM5NTM3ZWQ5NzBkNDg4NGYzNTJiYmVhNC4uMWY1Y2M0MTQ4ZDVhMGJmZjg1ZWUw
MTEyMTM3NTUyZjFmOGQzOWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVS
ZXNvbHZlRm9yRm9udFJhdy5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNTU0Zv
bnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgotI2lu
Y2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGVEZXNjcmlw
dGlvbi5oIgpAQCAtNDcsMTcgKzQ2LDggQEAgbmFtZXNwYWNlIFN0eWxlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVscGVyczsKIAotT3B0aW9uYWw8UmVuZGVyU3R5bGU+
IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24mJiBmb250RGVzY3JpcHRpb24sIERvY3VtZW50JiBkb2N1bWVudCkKK09wdGlvbmFs
PEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250UmF3LCBG
b250Q2FzY2FkZURlc2NyaXB0aW9uJiYgZm9udERlc2NyaXB0aW9uLCBEb2N1bWVudCYgZG9jdW1l
bnQpCiB7Ci0gICAgYXV0byBmb250U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7Ci0KLSAg
ICBhdXRvIGdldFBhcmVudFN0eWxlID0gWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gewotICAgICAgICBhdXRvIHBhcmVudFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRy
KGZvbnRTdHlsZSk7Ci0gICAgICAgIHBhcmVudFN0eWxlLT5zZXRGb250RGVzY3JpcHRpb24oRm9u
dENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsKLSAgICAgICAgcGFyZW50U3R5
bGUtPmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2VsZWN0b3IoKSk7Ci0gICAg
ICAgIHJldHVybiBwYXJlbnRTdHlsZTsKLSAgICB9OwotCiAgICAgLy8gTWFwIHRoZSBmb250IHBy
b3BlcnR5IGxvbmdoYW5kcyBpbnRvIHRoZSBzdHlsZS4KICAgICBmbG9hdCBwYXJlbnRTaXplID0g
Zm9udERlc2NyaXB0aW9uLnNwZWNpZmllZFNpemUoKTsKIApAQCAtOTMsNyArODMsNyBAQCBPcHRp
b25hbDxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJh
dywgRm9udENhc2NhZGVEZXNjcgogICAgICAgICBpZiAoQ1NTVmFsdWVJRCBzaXplSWRlbnRpZmll
ciA9IGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZUFzSWRlbnRpZmllcigpKSB7CiAgICAgICAg
ICAgICBhdXRvIHNpemUgPSBTdHlsZTo6Zm9udFNpemVGb3JLZXl3b3JkKHNpemVJZGVudGlmaWVy
LCAhb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUsIGRvY3VtZW50KTsKICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKHNpemUpOwotICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShTdHlsZTo6Y29tcHV0ZWRGb250U2l6ZUZyb21T
cGVjaWZpZWRTaXplKHNpemUsIGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmYWxz
ZSwgJmZvbnRTdHlsZSwgZG9jdW1lbnQpKTsKKyAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRDb21wdXRlZFNpemUoU3R5bGU6OmNvbXB1dGVkRm9udFNpemVGcm9tU3BlY2lmaWVkU2l6ZShz
aXplLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgMS4wLCBNaW5pbXVtRm9udFNp
emVSdWxlOjpOb25lLCBkb2N1bWVudC5zZXR0aW5nc1ZhbHVlcygpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE5Niw5ICsxODYsOSBAQCBPcHRpb25hbDxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZv
ckZvbnRSYXcoY29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcgogICAgICAg
ICB9CiAgICAgfSwgWyZdIChjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aE9y
UGVyY2VudFJhdyYgbGVuZ3RoT3JQZXJjZW50KSB7CiAgICAgICAgIHJldHVybiBzd2l0Y2hPbihs
ZW5ndGhPclBlcmNlbnQsIFsmXSAoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpMZW5n
dGhSYXcmIGxlbmd0aCkgewotICAgICAgICAgICAgYXV0byBwYXJlbnRTdHlsZSA9IGdldFBhcmVu
dFN0eWxlKCk7Ci0gICAgICAgICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNp
b25EYXRhIHsgcGFyZW50U3R5bGUuZ2V0KCksIG51bGxwdHIsIHBhcmVudFN0eWxlLmdldCgpLCBk
b2N1bWVudC5yZW5kZXJWaWV3KCksIDEuMGYsIENTU1Byb3BlcnR5Rm9udFNpemUgfTsKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBsZW5ndGgudHlwZSwgbGVuZ3Ro
LnZhbHVlKSk7CisgICAgICAgICAgICBhdXRvIGZvbnRDYXNjYWRlID0gRm9udENhc2NhZGUoRm9u
dENhc2NhZGVEZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKTsKKyAgICAgICAgICAgIGZvbnRD
YXNjYWRlLnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpOworICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0PihDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVVuem9vbWVk
Tm9uQ2FsY0xlbmd0aERvdWJsZShsZW5ndGgudHlwZSwgbGVuZ3RoLnZhbHVlLCBDU1NQcm9wZXJ0
eUZvbnRTaXplLCAmZm9udENhc2NhZGUuZm9udE1ldHJpY3MoKSwgJmZvbnRDYXNjYWRlLmZvbnRE
ZXNjcmlwdGlvbigpLCAmZm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCksIGRvY3VtZW50LnJl
bmRlclZpZXcoKSkpOwogICAgICAgICB9LCBbJl0gKGRvdWJsZSBwZXJjZW50YWdlKSB7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChwYXJlbnRTaXplICogcGVyY2VudGFn
ZSkgLyAxMDAuMCk7CiAgICAgICAgIH0pOwpAQCAtMjA5LDMxICsxOTksMTIgQEAgT3B0aW9uYWw8
UmVuZGVyU3R5bGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZv
bnRDYXNjYWRlRGVzY3IKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShz
aXplKTsKICAgICB9CiAKLSAgICBpZiAoZm9udFJhdy5saW5lSGVpZ2h0KSB7Ci0gICAgICAgIE9w
dGlvbmFsPExlbmd0aD4gbGluZUhlaWdodCA9IHN3aXRjaE9uKCpmb250UmF3LmxpbmVIZWlnaHQs
IFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgewotICAgICAgICAgICAgaWYgKGlkZW50ID09IENTU1Zh
bHVlTm9ybWFsKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxMZW5ndGg+KFJlbmRl
clN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxMZW5ndGg+KFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIH0sIFsmXSAoZG91YmxlIG51bWJlcikg
ewotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExlbmd0aD4oTGVuZ3RoKG51bWJlciAqIDEw
MC4wLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7Ci0gICAgICAgIH0sIFsmXSAoY29uc3QgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjpMZW5ndGhPclBlcmNlbnRSYXcmIGxlbmd0aE9yUGVyY2VudCkg
ewotICAgICAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGxlbmd0aE9yUGVyY2VudCwgWyZdIChjb25z
dCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6Okxlbmd0aFJhdyYgbGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBwYXJlbnRTdHlsZSA9IGdldFBhcmVudFN0eWxlKCk7Ci0gICAgICAgICAg
ICAgICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSB7IHBhcmVudFN0
eWxlLmdldCgpLCBudWxscHRyLCBwYXJlbnRTdHlsZS5nZXQoKSwgZG9jdW1lbnQucmVuZGVyVmll
dygpLCAxLjBmLCBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQgfTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5ndGgoY2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBsZW5ndGgudHlw
ZSwgbGVuZ3RoLnZhbHVlKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVu
Z3RoKSwgTGVuZ3RoVHlwZTo6Rml4ZWQpKTsKLSAgICAgICAgICAgIH0sIFsmXSAoZG91YmxlIHBl
cmNlbnRhZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGVuZ3RoPihMZW5n
dGgoKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSAqIHN0YXRpY19jYXN0PGludD4ocGVy
Y2VudGFnZSkpIC8gMTAwLCBMZW5ndGhUeXBlOjpGaXhlZCkpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIGlmIChsaW5lSGVpZ2h0KQotICAgICAgICAgICAgZm9udFN0
eWxlLnNldExpbmVIZWlnaHQoV1RGTW92ZShsaW5lSGVpZ2h0LnZhbHVlKCkpKTsKLSAgICB9Ci0K
LSAgICBmb250U3R5bGUuc2V0Rm9udERlc2NyaXB0aW9uKFdURk1vdmUoZm9udERlc2NyaXB0aW9u
KSk7Ci0gICAgZm9udFN0eWxlLmZvbnRDYXNjYWRlKCkudXBkYXRlKCZkb2N1bWVudC5mb250U2Vs
ZWN0b3IoKSk7CisgICAgLy8gQXMgdGhlcmUgaXMgbm8gbGluZS1oZWlnaHQgb24gRm9udENhc2Nh
ZGUsIHRoZXJlJ3Mgbm8gbmVlZCB0byByZXNvbHZlCisgICAgLy8gaXQsIGV2ZW4gdGhvdWdoIHRo
ZXJlIGlzIGxpbmUtaGVpZ2h0IGluZm9ybWF0aW9uIG9uIEZvbnRSYXcuCiAKLSAgICByZXR1cm4g
Zm9udFN0eWxlOworICAgIGF1dG8gZm9udENhc2NhZGUgPSBGb250Q2FzY2FkZShXVEZNb3ZlKGZv
bnREZXNjcmlwdGlvbikpOworICAgIGZvbnRDYXNjYWRlLnVwZGF0ZSgmZG9jdW1lbnQuZm9udFNl
bGVjdG9yKCkpOworICAgIHJldHVybiBmb250Q2FzY2FkZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5oCmluZGV4IDA2MjUyOTVlOGNhY2Ux
MzRiNjIwOGYxOTJjNGE4OTNkZGUxMmEyZmMuLjFhODZhOWYxNTg4ZGNlMTc4YTQzOTBkNzQ5MzU0
MGZmODkyYWIzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckZvbnRSYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JG
b250UmF3LmgKQEAgLTMzLDggKzMzLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b247Ci1jbGFzcyBSZW5kZXJTdHlsZTsKIAogbmFtZXNwYWNlIENTU1Byb3BlcnR5UGFyc2VySGVs
cGVycyB7CiBzdHJ1Y3QgRm9udFJhdzsKQEAgLTQyLDcgKzQyLDcgQEAgc3RydWN0IEZvbnRSYXc7
CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiAKLU9wdGlvbmFsPFJlbmRlclN0eWxlPiByZXNvbHZlRm9y
Rm9udFJhdyhjb25zdCBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OkZvbnRSYXcmLCBGb250Q2Fz
Y2FkZURlc2NyaXB0aW9uJiYsIERvY3VtZW50Jik7CitPcHRpb25hbDxGb250Q2FzY2FkZT4gcmVz
b2x2ZUZvckZvbnRSYXcoY29uc3QgQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpGb250UmF3Jiwg
Rm9udENhc2NhZGVEZXNjcmlwdGlvbiYmLCBEb2N1bWVudCYpOwogCiB9CiB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBiODVhMWFhMjE0MjUwNTQ3ZjE5YWI5ZWM2ODFkN2ZmNjdl
Mzk2NjgwLi42NzQyZTRlZGYzYTNmYWQzZTIxODJkNzBiZDk1YzUzNzU4ZjY2YzBjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMy0wNCAgQ2hy
aXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CisKKyAgICAgICAgQWxsb3cgQ1NTIGZvbnQtc3R5
bGluZyBmb3IgY2FudmFzIHdpdGhvdXQgUmVuZGVyU3R5bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjY2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFz
L2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZvbnRmYWNl
Lm5vdGlucGFnZS1leHBlY3RlZC50eHQ6IE5vdyBwYXNzZXMKKwogMjAyMS0wMy0wMyAgU2VyZ2lv
IFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWZsZXhi
b3hdIEltcG9ydCBsYXRlc3QgV1BUIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZHJhd2luZy10
ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZvbnRmYWNlLm5vdGlucGFnZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvZHJhd2luZy10ZXh0LXRvLXRoZS1jYW52YXMvMmQudGV4dC5kcmF3LmZv
bnRmYWNlLm5vdGlucGFnZS1leHBlY3RlZC50eHQKaW5kZXggNGE4YTA4ZjQ4NzU4YjM5ZmRkODcx
NTg0MjhjNzRjNzQ5ZmY0OGM3YS4uZWY2MGYwNWI3YjEyMjE3OTJiNDhlOWU1OWQ1Njc5NWMxZGM2
NGY0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2RyYXdpbmctdGV4dC10by10aGUtY2FudmFzLzJkLnRl
eHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9kcmF3
aW5nLXRleHQtdG8tdGhlLWNhbnZhcy8yZC50ZXh0LmRyYXcuZm9udGZhY2Uubm90aW5wYWdlLWV4
cGVjdGVkLnR4dApAQCAtNCw1ICs0LDUgQEAgQWN0dWFsIG91dHB1dDoKIEV4cGVjdGVkIG91dHB1
dDoKIAogCi1GQUlMIEBmb250LWZhY2UgZm9udHMgc2hvdWxkIHdvcmsgZXZlbiBpZiB0aGV5IGFy
ZSBub3QgdXNlZCBpbiB0aGUgcGFnZSBhc3NlcnRfYXBwcm94X2VxdWFsczogUmVkIGNoYW5uZWwg
b2YgdGhlIHBpeGVsIGF0ICg1LCA1KSBleHBlY3RlZCAwICsvLSAyIGJ1dCBnb3QgMjU1CitQQVNT
IEBmb250LWZhY2UgZm9udHMgc2hvdWxkIHdvcmsgZXZlbiBpZiB0aGV5IGFyZSBub3QgdXNlZCBp
biB0aGUgcGFnZQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>