<?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>255387</bug_id>
          
          <creation_ts>2023-04-12 21:15:45 -0700</creation_ts>
          <short_desc>[IFC] InlineLevelBox::LayoutBounds is a glorified AscentAndDescent</short_desc>
          <delta_ts>2023-04-13 20:49:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1948435</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-04-12 21:15:45 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948436</commentid>
    <comment_count>1</comment_count>
      <attachid>465880</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-04-12 21:20:41 -0700</bug_when>
    <thetext>Created attachment 465880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948481</commentid>
    <comment_count>2</comment_count>
      <attachid>465880</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2023-04-13 06:56:09 -0700</bug_when>
    <thetext>Comment on attachment 465880
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineLevelBox.h:76
&gt;      struct LayoutBounds {
&gt; -        InlineLayoutUnit height() const { return ascent + descent; }
&gt; -        bool operator==(const LayoutBounds&amp; other) const { return ascent == other.ascent &amp;&amp; descent == other.descent; }
&gt; +        LayoutBounds(AscentAndDescent);
&gt; +        LayoutBounds() = default;
&gt;  
&gt; -        InlineLayoutUnit ascent { 0 };
&gt; -        InlineLayoutUnit descent { 0 };
&gt; +        InlineLayoutUnit ascent() const { return m_ascentAndDescent.ascent; }
&gt; +        InlineLayoutUnit descent() const { return m_ascentAndDescent.descent; }
&gt; +
&gt; +        InlineLayoutUnit height() const { return m_ascentAndDescent.height(); }
&gt; +        bool operator==(const LayoutBounds&amp; other) const { return m_ascentAndDescent == other.m_ascentAndDescent; }
&gt; +
&gt; +    private:
&gt; +        AscentAndDescent m_ascentAndDescent;
&gt;      };

Maybe this type can be just replaced with AscentAndDescent directly? Or `using LayoutBounds = AscentAndDescent`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948505</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-04-13 08:58:20 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 465880 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=465880&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineLevelBox.h:76
&gt; &gt;      struct LayoutBounds {
&gt; &gt; -        InlineLayoutUnit height() const { return ascent + descent; }
&gt; &gt; -        bool operator==(const LayoutBounds&amp; other) const { return ascent == other.ascent &amp;&amp; descent == other.descent; }
&gt; &gt; +        LayoutBounds(AscentAndDescent);
&gt; &gt; +        LayoutBounds() = default;
&gt; &gt;  
&gt; &gt; -        InlineLayoutUnit ascent { 0 };
&gt; &gt; -        InlineLayoutUnit descent { 0 };
&gt; &gt; +        InlineLayoutUnit ascent() const { return m_ascentAndDescent.ascent; }
&gt; &gt; +        InlineLayoutUnit descent() const { return m_ascentAndDescent.descent; }
&gt; &gt; +
&gt; &gt; +        InlineLayoutUnit height() const { return m_ascentAndDescent.height(); }
&gt; &gt; +        bool operator==(const LayoutBounds&amp; other) const { return m_ascentAndDescent == other.m_ascentAndDescent; }
&gt; &gt; +
&gt; &gt; +    private:
&gt; &gt; +        AscentAndDescent m_ascentAndDescent;
&gt; &gt;      };
&gt; 
&gt; Maybe this type can be just replaced with AscentAndDescent directly? Or
&gt; `using LayoutBounds = AscentAndDescent`?
yeah it was going to be one of the next steps, but you are right, there&apos;s no need for this intermediate step. will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948513</commentid>
    <comment_count>4</comment_count>
      <attachid>465888</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-04-13 09:25:30 -0700</bug_when>
    <thetext>Created attachment 465888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948537</commentid>
    <comment_count>5</comment_count>
      <attachid>465895</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-04-13 10:18:53 -0700</bug_when>
    <thetext>Created attachment 465895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948596</commentid>
    <comment_count>6</comment_count>
      <attachid>465897</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-04-13 13:40:18 -0700</bug_when>
    <thetext>Created attachment 465897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948664</commentid>
    <comment_count>7</comment_count>
      <attachid>465906</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-04-13 18:52:47 -0700</bug_when>
    <thetext>Created attachment 465906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948677</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-04-13 20:48:08 -0700</bug_when>
    <thetext>Committed 262942@main (a055bb114d45): &lt;https://commits.webkit.org/262942@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 465906.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1948678</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-04-13 20:49:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/108030264&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465880</attachid>
            <date>2023-04-12 21:20:41 -0700</date>
            <delta_ts>2023-04-13 09:25:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255387-20230412212040.patch</filename>
            <type>text/plain</type>
            <size>39118</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1YzQ1OTU4MmE3YTAwMGUzMmNiNGYyOTlhN2UzMTE5NmMzMjY5NDhkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMTIgQXByIDIwMjMgMjE6MTU6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGlzIGEgZ2xvcmlmaWVkCiBBc2NlbnRBbmREZXNj
ZW50IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzODcKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKMS4gTW92ZSBBc2NlbnRBbmREZXNjZW50IGZyb20gSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIHVuZGVyIElubGluZUxldmVsQm94CjIuIE1ha2UgSW5saW5l
TGV2ZWxCb3g6OkxheW91dEJvdW5kcyBhIHdyYXBwZXIgYXJvdW5kIEFzY2VudEFuZERlc2NlbnQK
My4gVHVybiBJbmxpbmVMZXZlbEJveCdzIG1fYXNjZW50L21fZGVzY2VudCBpbnRvIGEgQXNjZW50
QW5kRGVzY2VudAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMZXZlbEJveC5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6
QXNjZW50QW5kRGVzY2VudDo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
TGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6Om9wZXJhdG9yPT0gY29uc3QpOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6YXNjZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lTGV2ZWxCb3g6OmRlc2NlbnQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVM
ZXZlbEJveDo6TGF5b3V0Qm91bmRzOjphc2NlbnQgY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjpkZXNjZW50IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kczo6aGVpZ2h0IGNvbnN0KToKKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kczo6b3BlcmF0b3I9PSBjb25z
dCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpzZXRBc2NlbnRBbmREZXNjZW50
KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OnNldExheW91dEJvdW5kcyk6CihX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHM6OkxheW91dEJvdW5k
cyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50Ojpy
b3VuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpzZXRBc2NlbnQpOiBEZWxl
dGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6c2V0RGVzY2VudCk6IERlbGV0
ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpwcmltYXJ5Rm9udE1ldHJp
Y3NGb3JJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0Ojphc2NlbnRBbmREZXNjZW50V2l0aFRl
eHRFZGdlRm9ySW5saW5lQm94KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveEJ1aWxkZXI6OmVu
Y2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tGb250cyBjb25zdCk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3ggY29uc3Qp
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVz
Rm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hC
dWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9yTGluZUJveENvbnRhaW5JZkFwcGxpY2Fi
bGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNC
YXNlbGluZUlmQXBwbGljYWJsZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpj
b21wdXRlTGluZUJveEdlb21ldHJ5IGNvbnN0KToKKCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlv
dXQ6OkFzY2VudEFuZERlc2NlbnQ6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OnJvdW5kIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVp
bGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5l
Qm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNhbEhlaWdodEFuZEFsaWduIGNvbnN0KToK
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6c2ltcGxpZmllZFZlcnRp
Y2FsQWxpZ25tZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxp
Z25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBv
c2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6
bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlcyBjb25zdCk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFkanVzdEZvckFubm90YXRp
b25JZk5lZWRlZCBjb25zdCk6Ci0tLQogLi4uL2lubGluZS9JbmxpbmVMZXZlbEJveC5oICAgICAg
ICAgICAgICAgICAgIHwgNDggKysrKysrKysrLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hC
dWlsZGVyLmNwcCAgICAgICAgICAgfCA3NSArKysrKysrKy0tLS0tLS0tLS0tCiAuLi4vaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmggICAgICAgICAgICAgfCAgMyArLQogLi4uL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCAgIHwgNjYgKysrKysrKystLS0tLS0tLQog
NCBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKaW5kZXggOGNmMGNlNzE3NjQyLi5mNTRhZmI1ZDg3
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxldmVsQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNDcsMTUgKzQ3LDMyIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlTGluZUJyZWFrQm94KGNv
bnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCk7CiAgICAgc3RhdGljIElubGluZUxldmVsQm94IGNyZWF0ZUdlbmVyaWNJbmxpbmVMZXZlbEJv
eChjb25zdCBCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNh
bExlZnQpOwogCi0gICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQoKSBjb25zdCB7IHJldHVybiBt
X2FzY2VudDsgfQotICAgIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gZGVzY2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzY2VudDsgfQorICAgIHN0cnVjdCBBc2NlbnRBbmREZXNjZW50
IHsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQgeyAwIH07CisgICAgICAgIElubGlu
ZUxheW91dFVuaXQgZGVzY2VudCB7IDAgfTsKKworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCArIGRlc2NlbnQ7IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEFzY2VudEFuZERlc2NlbnQmIG90aGVyKSBjb25zdCB7IHJldHVybiBh
c2NlbnQgPT0gb3RoZXIuYXNjZW50ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQorICAg
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuCisgICAgICAgIC8vIFdlIG5lZWQgZmxvb3IvY2Vp
bCB0byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgICAgICB2
b2lkIHJvdW5kKCk7CisgICAgfTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVzY2VudC5hc2NlbnQ7IH0KKyAgICBJbmxpbmVMYXlvdXRV
bml0IGRlc2NlbnQoKSBjb25zdCB7IHJldHVybiBtX2FzY2VudEFuZERlc2NlbnQuZGVzY2VudDsg
fQorCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91
dC1ib3VuZHMKICAgICBzdHJ1Y3QgTGF5b3V0Qm91bmRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7IHJldHVy
biBhc2NlbnQgPT0gb3RoZXIuYXNjZW50ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQor
ICAgICAgICBMYXlvdXRCb3VuZHMoQXNjZW50QW5kRGVzY2VudCk7CisgICAgICAgIExheW91dEJv
dW5kcygpID0gZGVmYXVsdDsKIAotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAg
fTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OworICAgICAgICBJbmxp
bmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVzY2VudC5h
c2NlbnQ7IH0KKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KCkgY29uc3QgeyByZXR1
cm4gbV9hc2NlbnRBbmREZXNjZW50LmRlc2NlbnQ7IH0KKworICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKTsg
fQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0Qm91bmRzJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9hc2NlbnRBbmREZXNjZW50ID09IG90aGVyLm1fYXNjZW50QW5kRGVzY2Vu
dDsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXNjZW50QW5kRGVzY2VudCBtX2FzY2VudEFu
ZERlc2NlbnQ7CiAgICAgfTsKICAgICBMYXlvdXRCb3VuZHMgbGF5b3V0Qm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXlvdXRCb3VuZHM7IH0KIApAQCAtMTM1LDkgKzE1Miw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KElubGluZUxheW91dFVuaXQgbG9naWNhbEhlaWdo
dCkgeyBtX2xvZ2ljYWxSZWN0LnNldEhlaWdodChyb3VuZFRvSW50KGxvZ2ljYWxIZWlnaHQpKTsg
fQogICAgIHZvaWQgc2V0TG9naWNhbFRvcChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIHsg
bV9sb2dpY2FsUmVjdC5zZXRUb3AobG9naWNhbFRvcCA+PSAwID8gcm91bmRUb0ludChsb2dpY2Fs
VG9wKSA6IC1yb3VuZFRvSW50KC1sb2dpY2FsVG9wKSk7IH0KICAgICB2b2lkIHNldExvZ2ljYWxM
ZWZ0KElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpIHsgbV9sb2dpY2FsUmVjdC5zZXRMZWZ0
KGxvZ2ljYWxMZWZ0KTsgfQotICAgIHZvaWQgc2V0QXNjZW50KElubGluZUxheW91dFVuaXQgYXNj
ZW50KSB7IG1fYXNjZW50ID0gcm91bmRUb0ludChhc2NlbnQpOyB9Ci0gICAgdm9pZCBzZXREZXNj
ZW50KElubGluZUxheW91dFVuaXQgZGVzY2VudCkgeyBtX2Rlc2NlbnQgPSByb3VuZFRvSW50KGRl
c2NlbnQpOyB9Ci0gICAgdm9pZCBzZXRMYXlvdXRCb3VuZHMoY29uc3QgTGF5b3V0Qm91bmRzJiBs
YXlvdXRCb3VuZHMpIHsgbV9sYXlvdXRCb3VuZHMgPSB7IElubGluZUxheW91dFVuaXQocm91bmRU
b0ludChsYXlvdXRCb3VuZHMuYXNjZW50KSksIElubGluZUxheW91dFVuaXQocm91bmRUb0ludChs
YXlvdXRCb3VuZHMuZGVzY2VudCkpIH07IH0KKyAgICB2b2lkIHNldEFzY2VudEFuZERlc2NlbnQo
QXNjZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50KSB7IG1fYXNjZW50QW5kRGVzY2VudCA9
IGFzY2VudEFuZERlc2NlbnQ7IH0KKyAgICB2b2lkIHNldExheW91dEJvdW5kcyhjb25zdCBMYXlv
dXRCb3VuZHMmIGxheW91dEJvdW5kcykgeyBtX2xheW91dEJvdW5kcyA9IGxheW91dEJvdW5kczsg
fQogICAgIHZvaWQgc2V0SW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRpbmdUcmltKElubGlu
ZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1faW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRpbmdU
cmltID0gb2Zmc2V0OyB9CiAKICAgICB2b2lkIHNldElzRmlyc3RCb3goKSB7IG1faXNGaXJzdFdp
dGhpbkxheW91dEJveCA9IHRydWU7IH0KQEAgLTE0OSw4ICsxNjUsNyBAQCBwcml2YXRlOgogICAg
IElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKICAgICBMYXlvdXRCb3VuZHMgbV9sYXlvdXRCb3Vu
ZHM7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2lubGluZUJveENvbnRlbnRPZmZzZXRGb3JMZWFk
aW5nVHJpbSB7IDAuZiB9OwotICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Ci0g
ICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2Rlc2NlbnQ7CisgICAgQXNjZW50
QW5kRGVzY2VudCBtX2FzY2VudEFuZERlc2NlbnQ7CiAgICAgYm9vbCBtX2hhc0NvbnRlbnQgeyBm
YWxzZSB9OwogICAgIC8vIFRoZXNlIGJpdHMgYXJlIGFib3V0IHdoZXRoZXIgdGhpcyBpbmxpbmUg
bGV2ZWwgYm94IGlzIHRoZSBmaXJzdC9sYXN0IGdlbmVyYXRlZCBib3ggb2YgdGhlIGFzc29jaWF0
ZWQgTGF5b3V0OjpCb3gKICAgICAvLyAoZS5nLiBhbHdheXMgdHJ1ZSBmb3IgYXRvbWljIGlubGlu
ZSBsZXZlbCBib3hlcywgYnV0IGlubGluZSBib3hlcyBzcGFubmluZyBvdmVyIG11bHRpcGxlIGxp
bmVzIGNhbiBwcm9kdWNlIHNlcGFyYXRlIGZpcnN0L2xhc3QgYm94ZXMpLgpAQCAtMjg3LDYgKzMw
MiwxNyBAQCBpbmxpbmUgYm9vbCBJbmxpbmVMZXZlbEJveDo6bGluZUJveENvbnRhaW4oKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgSW5saW5lTGV2ZWxCb3g6OkxheW91dEJv
dW5kczo6TGF5b3V0Qm91bmRzKElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IGFzY2Vu
dEFuZERlc2NlbnQpCisgICAgOiBtX2FzY2VudEFuZERlc2NlbnQoYXNjZW50QW5kRGVzY2VudCkK
K3sKK30KKworaW5saW5lIHZvaWQgSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6OnJv
dW5kKCkKK3sKKyAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKKyAgICBkZXNjZW50ID0gY2Vp
bGYoZGVzY2VudCk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwCmluZGV4IDc2OWZmNGY1MmE2MS4uMDUyODRkYjZkNzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCkBAIC05MCwxNiArOTAs
NyBAQCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCBMaW5lQm94QnVpbGRlcjo6Y29sbGVjdEZh
bGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZQogICAgIHJldHVybiBmYWxsYmFja0ZvbnRzOwog
fQogCi1zdHJ1Y3QgQXNjZW50QW5kRGVzY2VudCB7Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBhc2Nl
bnQgeyAwIH07Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OwotCi0gICAgSW5s
aW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQgKyBkZXNjZW50OyB9
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzLgotICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0
byBtYXRjaCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgotICAgIEFzY2VudEFu
ZERlc2NlbnQgcm91bmQoKSBjb25zdCB7IHJldHVybiB7IGZsb29yZihhc2NlbnQpLCBjZWlsZihk
ZXNjZW50KSB9OyB9Ci19Owotc3RhdGljIEFzY2VudEFuZERlc2NlbnQgcHJpbWFyeUZvbnRNZXRy
aWNzRm9ySW5saW5lQm94KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIEZvbnRCYXNl
bGluZSBmb250QmFzZWxpbmUgPSBBbHBoYWJldGljQmFzZWxpbmUpCitzdGF0aWMgSW5saW5lTGV2
ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgcHJpbWFyeUZvbnRNZXRyaWNzRm9ySW5saW5lQm94KGNv
bnN0IElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIEZvbnRCYXNlbGluZSBmb250QmFzZWxpbmUg
PSBBbHBoYWJldGljQmFzZWxpbmUpCiB7CiAgICAgQVNTRVJUKGlubGluZUJveC5pc0lubGluZUJv
eCgpKTsKICAgICBhdXRvJiBmb250TWV0cmljcyA9IGlubGluZUJveC5wcmltYXJ5bWV0cmljc09m
UHJpbWFyeUZvbnQoKTsKQEAgLTExNiw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBpc1RleHRFZGdl
TGVhZGluZyhjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94KQogICAgIHJldHVybiB0ZXh0
RWRnZS5vdmVyID09IFRleHRFZGdlVHlwZTo6TGVhZGluZzsKIH0KIAotc3RhdGljIEFzY2VudEFu
ZERlc2NlbnQgYXNjZW50QW5kRGVzY2VudFdpdGhUZXh0RWRnZUZvcklubGluZUJveChjb25zdCBJ
bmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3Ms
IEZvbnRCYXNlbGluZSBmb250QmFzZWxpbmUpCitzdGF0aWMgSW5saW5lTGV2ZWxCb3g6OkFzY2Vu
dEFuZERlc2NlbnQgYXNjZW50QW5kRGVzY2VudFdpdGhUZXh0RWRnZUZvcklubGluZUJveChjb25z
dCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJp
Y3MsIEZvbnRCYXNlbGluZSBmb250QmFzZWxpbmUpCiB7CiAgICAgQVNTRVJUKGlubGluZUJveC5p
c0lubGluZUJveCgpKTsKIApAQCAtMTYzLDcgKzE1NCw3IEBAIHN0YXRpYyBBc2NlbnRBbmREZXNj
ZW50IGFzY2VudEFuZERlc2NlbnRXaXRoVGV4dEVkZ2VGb3JJbmxpbmVCb3goY29uc3QgSW5saW5l
TGV2CiAgICAgcmV0dXJuIHsgYXNjZW50KCksIGRlc2NlbnQoKSB9OwogfQogCi1Bc2NlbnRBbmRE
ZXNjZW50IExpbmVCb3hCdWlsZGVyOjplbmNsb3NpbmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNr
Rm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgVGV4dFV0aWw6OkZh
bGxiYWNrRm9udExpc3QmIGZhbGxiYWNrRm9udHNGb3JDb250ZW50LCBGb250QmFzZWxpbmUgZm9u
dEJhc2VsaW5lKSBjb25zdAorSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgTGluZUJv
eEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tGb250cyhjb25zdCBJ
bmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlz
dCYgZmFsbGJhY2tGb250c0ZvckNvbnRlbnQsIEZvbnRCYXNlbGluZSBmb250QmFzZWxpbmUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFmYWxsYmFja0ZvbnRzRm9yQ29udGVudC5pc0VtcHR5KCkpOwog
ICAgIEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CkBAIC0yMzAsMjAgKzIyMSwyMSBA
QCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3goSW5saW5l
TGV2ZWxCb3gmIGlubGluZUJveCwgRm9udAogICAgICAgICBhc2NlbnQgKz0gaW5saW5lQm94R2Vv
bWV0cnkubWFyZ2luQm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwogICAgICAgICBkZXNjZW50ICs9
IGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdBZnRlcigpOwogICAgIH0K
LSAgICBpbmxpbmVCb3guc2V0TGF5b3V0Qm91bmRzKHsgZmxvb3JmKGFzY2VudCksIGNlaWxmKGRl
c2NlbnQpIH0pOworICAgIGlubGluZUJveC5zZXRMYXlvdXRCb3VuZHMoSW5saW5lTGV2ZWxCb3g6
OkFzY2VudEFuZERlc2NlbnQgeyBmbG9vcmYoYXNjZW50KSwgY2VpbGYoZGVzY2VudCkgfSk7CiB9
CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxl
dmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZUxldmVsQm94JiBpbmxpbmVMZXZl
bEJveCkgY29uc3QKIHsKLSAgICBhdXRvIHNldEFzY2VudEFuZERlc2NlbnQgPSBbJl0gKGF1dG8g
YXNjZW50QW5kRGVzY2VudCwgYm9vbCBhcHBseUxlZ2FjeVJvdW5kaW5nID0gdHJ1ZSkgewotICAg
ICAgICBhdXRvIGFkanVzdGVkQXNjZW50QW5kRGVzY2VudCA9IGFwcGx5TGVnYWN5Um91bmRpbmcg
PyBhc2NlbnRBbmREZXNjZW50LnJvdW5kKCkgOiBhc2NlbnRBbmREZXNjZW50OwotICAgICAgICBp
bmxpbmVMZXZlbEJveC5zZXRBc2NlbnQoYWRqdXN0ZWRBc2NlbnRBbmREZXNjZW50LmFzY2VudCk7
Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoYWRqdXN0ZWRBc2NlbnRBbmREZXNj
ZW50LmRlc2NlbnQpOwotICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoeyBh
ZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuYXNjZW50LCBhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQu
ZGVzY2VudCB9KTsKKyAgICBhdXRvIHNldFZlcnRpY2FsUHJvcGVydGllcyA9IFsmXSAoSW5saW5l
TGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5kRGVzY2VudCwgYm9vbCBhcHBseUxl
Z2FjeVJvdW5kaW5nID0gdHJ1ZSkgeworICAgICAgICBpZiAoYXBwbHlMZWdhY3lSb3VuZGluZykK
KyAgICAgICAgICAgIGFzY2VudEFuZERlc2NlbnQucm91bmQoKTsKKyAgICAgICAgaW5saW5lTGV2
ZWxCb3guc2V0QXNjZW50QW5kRGVzY2VudChhc2NlbnRBbmREZXNjZW50KTsKKyAgICAgICAgaW5s
aW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChhc2NlbnRBbmREZXNjZW50LmhlaWdodCgpKTsK
KyAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKGFzY2VudEFuZERlc2NlbnQp
OwogICAgIH07CiAKICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkgewotICAg
ICAgICBhdXRvIGFzY2VudEFuZERlc2NlbnQgPSBbJl0oKSAtPiBBc2NlbnRBbmREZXNjZW50IHsK
KyAgICAgICAgYXV0byBhc2NlbnRBbmREZXNjZW50ID0gWyZdKCkgLT4gSW5saW5lTGV2ZWxCb3g6
OkFzY2VudEFuZERlc2NlbnQgewogICAgICAgICAgICAgYXV0byBsZWFkaW5nVHJpbSA9IGlubGlu
ZUxldmVsQm94LmxlYWRpbmdUcmltKCk7CiAgICAgICAgICAgICBhdXRvIGZvbnRCYXNlbGluZSA9
IGxpbmVCb3guYmFzZWxpbmVUeXBlKCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gu
aXNSb290SW5saW5lQm94KCkgfHwgbGVhZGluZ1RyaW0gPT0gTGVhZGluZ1RyaW06Ok5vcm1hbCkK
QEAgLTI1Niw4ICsyNDgsOCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbFByb3Bl
cnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBsaW5lQgogICAgICAgICAgICAg
cmV0dXJuIHsgYXNjZW50LCBkZXNjZW50IH07CiAgICAgICAgIH0oKTsKIAotICAgICAgICBzZXRB
c2NlbnRBbmREZXNjZW50KGFzY2VudEFuZERlc2NlbnQpOwotICAgICAgICBpbmxpbmVMZXZlbEJv
eC5zZXRMb2dpY2FsSGVpZ2h0KGFzY2VudEFuZERlc2NlbnQuaGVpZ2h0KCkpOworICAgICAgICBz
ZXRWZXJ0aWNhbFByb3BlcnRpZXMoYXNjZW50QW5kRGVzY2VudCk7CisgICAgICAgIC8vIE92ZXJy
aWRlIGRlZmF1bHQgbGF5b3V0IGJvdW5kcy4KICAgICAgICAgc2V0TGF5b3V0Qm91bmRzRm9ySW5s
aW5lQm94KGlubGluZUxldmVsQm94LCBsaW5lQm94LmJhc2VsaW5lVHlwZSgpKTsKIAogICAgICAg
ICAvLyBXaXRoIGxlYWRpbmctdHJpbSwgdGhlIGlubGluZSBib3ggdG9wIGlzIG5vdCBhbHdheXMg
d2hlcmUgdGhlIGNvbnRlbnQgc3RhcnRzLgpAQCAtMjY3LDggKzI1OSw3IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94KGNvbnN0IExp
bmVCb3gmIGxpbmVCCiAgICAgfQogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0xpbmVCcmVha0Jv
eCgpKSB7CiAgICAgICAgIGF1dG8gcGFyZW50QXNjZW50QW5kRGVzY2VudCA9IHByaW1hcnlGb250
TWV0cmljc0ZvcklubGluZUJveChsaW5lQm94LnBhcmVudElubGluZUJveChpbmxpbmVMZXZlbEJv
eCksIGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpOwotICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50
KHBhcmVudEFzY2VudEFuZERlc2NlbnQpOwotICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dp
Y2FsSGVpZ2h0KHBhcmVudEFzY2VudEFuZERlc2NlbnQuaGVpZ2h0KCkpOworICAgICAgICBzZXRW
ZXJ0aWNhbFByb3BlcnRpZXMocGFyZW50QXNjZW50QW5kRGVzY2VudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzTGlzdE1hcmtlcigpKSB7CkBAIC0y
NzcsMTUgKzI2OCwxNSBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbFByb3BlcnRp
ZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBsaW5lQgogICAgICAgICBhdXRvJiBs
aXN0TWFya2VyQm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94
KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gbWFyZ2luQm94SGVpZ2h0ID0gbGlzdE1hcmtlckJv
eEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpOwogCi0gICAgICAgIGlubGluZUxldmVsQm94LnNl
dExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsKICAgICAgICAgaWYgKGxpbmVCb3guYmFz
ZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBoaWNCYXNlbGluZSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCByZWx5IG9uIHRoZSBpbnRlZ3JhdGlvbiBiYXNlbGluZS4KLSAgICAgICAg
ICAgIHNldEFzY2VudEFuZERlc2NlbnQocHJpbWFyeUZvbnRNZXRyaWNzRm9ySW5saW5lQm94KGxp
bmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwgbGluZUJveC5iYXNlbGluZVR5
cGUoKSkpOworICAgICAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzKHByaW1hcnlGb250TWV0
cmljc0ZvcklubGluZUJveChsaW5lQm94LnBhcmVudElubGluZUJveChpbmxpbmVMZXZlbEJveCks
IGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpKTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNl
dExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoYXV0byBhc2NlbnQgPSBkb3duY2FzdDxFbGVtZW50Qm94Pihs
YXlvdXRCb3gpLmJhc2VsaW5lRm9ySW50ZWdyYXRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiBz
ZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgeyAqYXNjZW50LCBtYXJnaW5Cb3hI
ZWlnaHQgLSAqYXNjZW50IH0pOwotICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFu
ZERlc2NlbnQgeyBtYXJnaW5Cb3hIZWlnaHQsIHsgfSB9KTsKKyAgICAgICAgICAgIHJldHVybiBz
ZXRWZXJ0aWNhbFByb3BlcnRpZXMoeyAqYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQgLSAqYXNjZW50
IH0pOworICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMoeyBtYXJnaW5Cb3hIZWlnaHQsIHsg
fSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNB
dG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CkBAIC0zMTAsOCArMzAxLDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3goY29uc3QgTGlu
ZUJveCYgbGluZUIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBtYXJnaW5Cb3hI
ZWlnaHQ7CiAgICAgICAgIH0oKTsKLSAgICAgICAgc2V0QXNjZW50QW5kRGVzY2VudChBc2NlbnRB
bmREZXNjZW50IHsgYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQgLSBhc2NlbnQgfSwgZmFsc2UpOwot
ICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KG1hcmdpbkJveEhlaWdodCk7
CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyh7IGFzY2VudCwgbWFyZ2luQm94SGVpZ2h0
IC0gYXNjZW50IH0sIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQxNSw3ICs0MDUsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpj
b25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gpCiAgICAgICAgICAgICAg
ICAgaWYgKHBhcmVudElubGluZUJveC5pc1ByZWZlcnJlZExpbmVIZWlnaHRGb250TWV0cmljc0Jh
c2VkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBlbmNsb3NpbmdBc2NlbnRBbmREZXNj
ZW50ID0gZW5jbG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKHBhcmVudElubGlu
ZUJveCwgZmFsbGJhY2tGb250cywgQWxwaGFiZXRpY0Jhc2VsaW5lKTsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byBsYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudElubGluZUJveC5zZXRMYXlvdXRCb3VuZHMoeyBz
dGQ6Om1heChsYXlvdXRCb3VuZHMuYXNjZW50LCBlbmNsb3NpbmdBc2NlbnRBbmREZXNjZW50LmFz
Y2VudCksIHN0ZDo6bWF4KGxheW91dEJvdW5kcy5kZXNjZW50LCBlbmNsb3NpbmdBc2NlbnRBbmRE
ZXNjZW50LmRlc2NlbnQpIH0pOworICAgICAgICAgICAgICAgICAgICBwYXJlbnRJbmxpbmVCb3gu
c2V0TGF5b3V0Qm91bmRzKElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgc3RkOjpt
YXgobGF5b3V0Qm91bmRzLmFzY2VudCgpLCBlbmNsb3NpbmdBc2NlbnRBbmREZXNjZW50LmFzY2Vu
dCksIHN0ZDo6bWF4KGxheW91dEJvdW5kcy5kZXNjZW50KCksIGVuY2xvc2luZ0FzY2VudEFuZERl
c2NlbnQuZGVzY2VudCkgfSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY29udGludWU7CkBAIC00NzIsNyArNDYyLDcgQEAgdm9pZCBMaW5lQm94QnVpbGRl
cjo6YWRqdXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKExp
bmVCb3gKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZUJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVM
ZXZlbEJveC5sYXlvdXRCb3goKSk7CiAgICAgICAgICAgICBhdXRvIGFzY2VudCA9IGlubGluZUxl
dmVsQm94LmFzY2VudCgpICsgaW5saW5lQm94R2VvbWV0cnkubWFyZ2luQm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpOwotICAgICAgICAgICAgYXV0byBkZXNjZW50ID0gdmFsdWVPckRlZmF1bHQoaW5s
aW5lTGV2ZWxCb3guZGVzY2VudCgpKSArIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFu
ZFBhZGRpbmdBZnRlcigpOworICAgICAgICAgICAgYXV0byBkZXNjZW50ID0gaW5saW5lTGV2ZWxC
b3guZGVzY2VudCgpICsgaW5saW5lQm94R2VvbWV0cnkubWFyZ2luQm9yZGVyQW5kUGFkZGluZ0Fm
dGVyKCk7CiAgICAgICAgICAgICBpbmxpbmVCb3hCb3VuZHNNYXAuc2V0KCZpbmxpbmVMZXZlbEJv
eCwgVGV4dFV0aWw6OkVuY2xvc2luZ0FzY2VudERlc2NlbnQgeyBhc2NlbnQsIGRlc2NlbnQgfSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC01NTQsOSArNTQ0LDkgQEAgdm9pZCBMaW5lQm94QnVpbGRl
cjo6YWRqdXN0SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKExp
bmVCb3gKIAogICAgICAgICAvLyAibGluZS1ib3gtY29udGFpbmVyOiBibG9jayIgVGhlIGV4dGVu
ZGVkIGJsb2NrIHByb2dyZXNzaW9uIGRpbWVuc2lvbiBvZiB0aGUgcm9vdCBpbmxpbmUgYm94IG11
c3QgZml0IHdpdGhpbiB0aGUgbGluZSBib3guCiAgICAgICAgIGF1dG8gbWF5U2hyaW5rTGluZUJv
eCA9IGlubGluZUJveC0+aXNSb290SW5saW5lQm94KCkgPyAhbGluZUJveENvbnRhaW4uY29udGFp
bnMoTGluZUJveENvbnRhaW46OkJsb2NrKSA6IHRydWU7Ci0gICAgICAgIGF1dG8gYXNjZW50ID0g
bWF5U2hyaW5rTGluZUJveCA/IGVuY2xvc2luZ0FzY2VudERlc2NlbnRGb3JJbmxpbmVCb3guYXNj
ZW50IDogc3RkOjptYXgoZW5jbG9zaW5nQXNjZW50RGVzY2VudEZvcklubGluZUJveC5hc2NlbnQs
IGlubGluZUJveExheW91dEJvdW5kcy5hc2NlbnQpOwotICAgICAgICBhdXRvIGRlc2NlbnQgPSBt
YXlTaHJpbmtMaW5lQm94ID8gZW5jbG9zaW5nQXNjZW50RGVzY2VudEZvcklubGluZUJveC5kZXNj
ZW50IDogc3RkOjptYXgoZW5jbG9zaW5nQXNjZW50RGVzY2VudEZvcklubGluZUJveC5kZXNjZW50
LCBpbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCk7Ci0gICAgICAgIGlubGluZUJveC0+c2V0
TGF5b3V0Qm91bmRzKHsgY2VpbGYoYXNjZW50KSwgY2VpbGYoZGVzY2VudCkgfSk7CisgICAgICAg
IGF1dG8gYXNjZW50ID0gbWF5U2hyaW5rTGluZUJveCA/IGVuY2xvc2luZ0FzY2VudERlc2NlbnRG
b3JJbmxpbmVCb3guYXNjZW50IDogc3RkOjptYXgoZW5jbG9zaW5nQXNjZW50RGVzY2VudEZvcklu
bGluZUJveC5hc2NlbnQsIGlubGluZUJveExheW91dEJvdW5kcy5hc2NlbnQoKSk7CisgICAgICAg
IGF1dG8gZGVzY2VudCA9IG1heVNocmlua0xpbmVCb3ggPyBlbmNsb3NpbmdBc2NlbnREZXNjZW50
Rm9ySW5saW5lQm94LmRlc2NlbnQgOiBzdGQ6Om1heChlbmNsb3NpbmdBc2NlbnREZXNjZW50Rm9y
SW5saW5lQm94LmRlc2NlbnQsIGlubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50KCkpOworICAg
ICAgICBpbmxpbmVCb3gtPnNldExheW91dEJvdW5kcyhJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5k
RGVzY2VudCB7IGNlaWxmKGFzY2VudCksIGNlaWxmKGRlc2NlbnQpIH0pOwogICAgIH0KIH0KIApA
QCAtNjAzLDkgKzU5Myw4IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdElkZW9ncmFwaGlj
QmFzZWxpbmVJZkFwcGxpY2FibGUoTGluZUJveCYgbGluZUJveCkKICAgICAgICAgICAgIGF1dG8g
aW5saW5lTGV2ZWxCb3hIZWlnaHQgPSBpbmxpbmVMZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCk7CiAg
ICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGlkZW9ncmFwaGljQmFzZWxpbmUgPSByb3VuZFRv
SW50KGlubGluZUxldmVsQm94SGVpZ2h0IC8gMik7CiAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBi
YXNlbGluZSBwb3NpdGlvbiBidXQga2VlcCB0aGUgc2FtZSBsb2dpY2FsIGhlaWdodC4KLSAgICAg
ICAgICAgIGlubGluZUxldmVsQm94LnNldEFzY2VudChpZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKLSAg
ICAgICAgICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoaW5saW5lTGV2ZWxCb3hIZWlnaHQg
LSBpZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKLSAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldExh
eW91dEJvdW5kcyh7IGlkZW9ncmFwaGljQmFzZWxpbmUsIGlubGluZUxldmVsQm94SGVpZ2h0IC0g
aWRlb2dyYXBoaWNCYXNlbGluZSB9KTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldEFz
Y2VudEFuZERlc2NlbnQoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxpbmVMZXZlbEJveEhlaWdo
dCAtIGlkZW9ncmFwaGljQmFzZWxpbmUgfSk7CisgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC5z
ZXRMYXlvdXRCb3VuZHMoSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgeyBpZGVvZ3Jh
cGhpY0Jhc2VsaW5lLCBpbmxpbmVMZXZlbEJveEhlaWdodCAtIGlkZW9ncmFwaGljQmFzZWxpbmUg
fSk7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIG5lZWRzRm9udEZhbGxiYWNrQWRqdXN0bWVu
dCA9IGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCk7CkBAIC02MTMsNyArNjAyLDcgQEAgdm9p
ZCBMaW5lQm94QnVpbGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZShM
aW5lQm94JiBsaW5lQm94KQogICAgICAgICAgICAgaWYgKGF1dG8gZmFsbGJhY2tGb250cyA9IG1f
ZmFsbGJhY2tGb250c0ZvcklubGluZUJveGVzLmdldCgmaW5saW5lTGV2ZWxCb3gpOyAhZmFsbGJh
Y2tGb250cy5pc0VtcHR5KCkgJiYgaW5saW5lTGV2ZWxCb3guaXNQcmVmZXJyZWRMaW5lSGVpZ2h0
Rm9udE1ldHJpY3NCYXNlZCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBlbmNsb3NpbmdBc2Nl
bnRBbmREZXNjZW50ID0gZW5jbG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKGlu
bGluZUxldmVsQm94LCBmYWxsYmFja0ZvbnRzLCBJZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKICAgICAg
ICAgICAgICAgICBhdXRvIGxheW91dEJvdW5kcyA9IGlubGluZUxldmVsQm94LmxheW91dEJvdW5k
cygpOwotICAgICAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyh7IHN0
ZDo6bWF4KGxheW91dEJvdW5kcy5hc2NlbnQsIGVuY2xvc2luZ0FzY2VudEFuZERlc2NlbnQuYXNj
ZW50KSwgc3RkOjptYXgobGF5b3V0Qm91bmRzLmRlc2NlbnQsIGVuY2xvc2luZ0FzY2VudEFuZERl
c2NlbnQuZGVzY2VudCkgfSk7CisgICAgICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5
b3V0Qm91bmRzKElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgc3RkOjptYXgobGF5
b3V0Qm91bmRzLmFzY2VudCgpLCBlbmNsb3NpbmdBc2NlbnRBbmREZXNjZW50LmFzY2VudCksIHN0
ZDo6bWF4KGxheW91dEJvdW5kcy5kZXNjZW50KCksIGVuY2xvc2luZ0FzY2VudEFuZERlc2NlbnQu
ZGVzY2VudCkgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjQ5LDkg
KzYzOCw5IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkoTGlu
ZUJveCYgbGluZUJveCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBs
aW5lQm94LnJvb3RJbmxpbmVCb3goKTsKICAgICAgICAgICAgIHN3aXRjaCAocm9vdFN0eWxlLnRl
eHRFZGdlKCkudW5kZXIpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpUZXh0Ogot
ICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmRlc2Nl
bnQgLSAqcm9vdElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJv
b3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCgpIC0gcm9vdElubGluZUJveC5kZXNj
ZW50KCk7CiAgICAgICAgICAgICBjYXNlIFRleHRFZGdlVHlwZTo6QWxwaGFiZXRpYzoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50Owor
ICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmRlc2Nl
bnQoKTsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpDSktJZGVvZ3JhcGhpYzoKICAg
ICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpDSktJZGVvZ3JhcGhpY0luazoKICAgICAgICAg
ICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwpAQCAtNjY5LDExICs2NTgsMTEg
QEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hHZW9tZXRyeShMaW5lQm94JiBs
aW5lQm94KSBjb25zdAogICAgICAgICBhdXRvIHRleHRFZGdlT3ZlckhlaWdodCA9IFsmXSB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKHJvb3RTdHlsZS50ZXh0RWRnZSgpLm92ZXIpIHsKICAgICAgICAg
ICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpUZXh0OgotICAgICAgICAgICAgICAgIHJldHVybiByb290
SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIHJvb3RJbmxpbmVCb3guYXNjZW50KCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNj
ZW50KCkgLSByb290SW5saW5lQm94LmFzY2VudCgpOwogICAgICAgICAgICAgY2FzZSBUZXh0RWRn
ZVR5cGU6OkNhcEhlaWdodDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9vdElubGluZUJveC5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQgLSByb290SW5saW5lQm94LnByaW1hcnltZXRyaWNzT2ZQcmlt
YXJ5Rm9udCgpLmZsb2F0Q2FwSGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50KCkgLSByb290SW5saW5lQm94LnByaW1hcnlt
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLmZsb2F0Q2FwSGVpZ2h0KCk7CiAgICAgICAgICAgICBjYXNl
IFRleHRFZGdlVHlwZTo6RXhIZWlnaHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJbmxp
bmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcm9vdElubGluZUJveC5wcmltYXJ5bWV0cmlj
c09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50KCkgLSByb290SW5saW5lQm94LnByaW1hcnlt
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKTsKICAgICAgICAgICAgIGNhc2UgVGV4dEVk
Z2VUeXBlOjpDSktJZGVvZ3JhcGhpYzoKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpD
SktJZGVvZ3JhcGhpY0luazoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVE
X1lFVCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXgg
ZWJiN2Y2OTM5Y2YyLi5hN2U3ZmE1YjU0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveEJ1aWxkZXIuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIGNs
YXNzIEJveDsKIGNsYXNzIEVsZW1lbnRCb3g7CiBjbGFzcyBMYXlvdXRTdGF0ZTsKLXN0cnVjdCBB
c2NlbnRBbmREZXNjZW50OwogCiBjbGFzcyBMaW5lQm94QnVpbGRlciB7CiBwdWJsaWM6CkBAIC00
OSw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYXlvdXRCb3VuZHNGb3JJbmxpbmVC
b3goSW5saW5lTGV2ZWxCb3gmLCBGb250QmFzZWxpbmUpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0
SW5saW5lQm94SGVpZ2h0c0ZvckxpbmVCb3hDb250YWluSWZBcHBsaWNhYmxlKExpbmVCb3gmKTsK
ICAgICB2b2lkIGNvbXB1dGVMaW5lQm94R2VvbWV0cnkoTGluZUJveCYpIGNvbnN0OwotICAgIEFz
Y2VudEFuZERlc2NlbnQgZW5jbG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKGNv
bnN0IElubGluZUxldmVsQm94JiwgY29uc3QgVGV4dFV0aWw6OkZhbGxiYWNrRm9udExpc3QmIGZh
bGxiYWNrRm9udHNGb3JDb250ZW50LCBGb250QmFzZWxpbmUpIGNvbnN0OworICAgIElubGluZUxl
dmVsQm94OjpBc2NlbnRBbmREZXNjZW50IGVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJh
Y2tGb250cyhjb25zdCBJbmxpbmVMZXZlbEJveCYsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0Zv
bnRMaXN0JiBmYWxsYmFja0ZvbnRzRm9yQ29udGVudCwgRm9udEJhc2VsaW5lKSBjb25zdDsKICAg
ICBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCBjb2xsZWN0RmFsbGJhY2tGb250cyhjb25zdCBJ
bmxpbmVMZXZlbEJveCYgcGFyZW50SW5saW5lQm94LCBjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBS
ZW5kZXJTdHlsZSYpOwogCiAgICAgdm9pZCBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVC
b3gmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2Fs
QWxpZ25lci5jcHAKaW5kZXggMGQ4ZjkwMjllZTcyLi43N2VkNTU4MDczNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCkBA
IC02MywxMSArNjMsMTEgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGljYWxBbGlnbmVy
Ojpjb21wdXRlTG9naWNhbEhlaWdodEFuZEFsaWduKExpbmVCb3gmIGwKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCZsYXlvdXRCb3gucGFyZW50KCkgIT0gJnJvb3RJbmxpbmVCb3gubGF5b3V0Qm94
KCkgfHwgaW5saW5lTGV2ZWxCb3gudmVydGljYWxBbGlnbigpLnR5cGUgIT0gVmVydGljYWxBbGln
bjo6QmFzZWxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94R2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAhaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSAmJiAhaW5saW5l
TGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpICYmIGlubGluZUxldmVsQm94R2VvbWV0cnku
bWFyZ2luQm94SGVpZ2h0KCkgPD0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJn
aW5CZWZvcmUoKSAmJiAhaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpICYmIGlu
bGluZUxldmVsQm94R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCkgPD0gcm9vdElubGluZUJveC5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gQmFzZWxpbmUgYWxpZ25lZCwgbm9uLXN0cmV0Y2h5IGxpbmUgYnJlYWtzIGUuZy4g
PGRpdj48c3Bhbj48YnI+PC9zcGFuPjwvZGl2PiBidXQgbm90IDxkaXY+PHNwYW4gc3R5bGU9ImZv
bnQtc2l6ZTogMTAwcHg7Ij48YnI+PC9zcGFuPjwvZGl2Pi4KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGlubGluZUxldmVsQm94LnZlcnRpY2FsQWxpZ24oKS50eXBlID09IFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lICYmIGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmFzY2VudCA8PSBy
b290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGlubGluZUxldmVsQm94LnZlcnRpY2FsQWxpZ24oKS50eXBlID09IFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lICYmIGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmFzY2VudCgpIDw9
IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50KCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEJhc2VsaW5lIGFsaWduZWQsIG5vbi1zdHJldGNoeSBpbmxp
bmUgYm94ZXMgZS5nLiA8ZGl2PjxzcGFuPjwvc3Bhbj48L2Rpdj4gYnV0IG5vdCA8ZGl2PjxzcGFu
IHN0eWxlPSJmb250LXNpemU6IDEwMHB4OyI+PC9zcGFuPjwvZGl2Pi4KQEAgLTExMywxNSArMTEz
LDE1IEBAIElubGluZUxheW91dFVuaXQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6c2ltcGxpZmll
ZFZlcnRpY2FsQWxpZ25tZW50KExpbmVCb3gmIGxpCiAgICAgYXV0byByb290SW5saW5lQm94TGF5
b3V0Qm91bmRzID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKICAgICBhdXRvIGxpbmVC
b3hMb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IDAgfTsKICAgICBhdXRvIGxpbmVCb3hM
b2dpY2FsQm90dG9tID0gcm9vdElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKTsKLSAgICBh
dXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gcm9vdElubGluZUJveExheW91dEJvdW5kcy5h
c2NlbnQgLSByb290SW5saW5lQm94QXNjZW50OworICAgIGF1dG8gcm9vdElubGluZUJveExvZ2lj
YWxUb3AgPSByb290SW5saW5lQm94TGF5b3V0Qm91bmRzLmFzY2VudCgpIC0gcm9vdElubGluZUJv
eEFzY2VudDsKICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290
SW5saW5lTGV2ZWxCb3hlcygpKSB7CiAgICAgICAgIC8vIE9ubHkgYmFzZWxpbmUgYWxpZ25tZW50
IGZvciBub3cuCiAgICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGlu
ZUJveEFzY2VudCAtIGlubGluZUxldmVsQm94LmFzY2VudCgpKTsKICAgICAgICAgYXV0byBsYXlv
dXRCb3VuZHMgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgYXV0byBs
YXlvdXRCb3VuZHNMb2dpY2FsVG9wID0gcm9vdElubGluZUJveExheW91dEJvdW5kcy5hc2NlbnQg
LSBsYXlvdXRCb3VuZHMuYXNjZW50OworICAgICAgICBhdXRvIGxheW91dEJvdW5kc0xvZ2ljYWxU
b3AgPSByb290SW5saW5lQm94TGF5b3V0Qm91bmRzLmFzY2VudCgpIC0gbGF5b3V0Qm91bmRzLmFz
Y2VudCgpOwogICAgICAgICBsaW5lQm94TG9naWNhbFRvcCA9IHN0ZDo6bWluKGxpbmVCb3hMb2dp
Y2FsVG9wLCBsYXlvdXRCb3VuZHNMb2dpY2FsVG9wKTsKICAgICAgICAgbGluZUJveExvZ2ljYWxC
b3R0b20gPSBzdGQ6Om1heChsaW5lQm94TG9naWNhbEJvdHRvbSwgbGF5b3V0Qm91bmRzTG9naWNh
bFRvcCArIGxheW91dEJvdW5kcy5oZWlnaHQoKSk7Ci0gICAgICAgIHJvb3RJbmxpbmVCb3hMb2dp
Y2FsVG9wID0gc3RkOjptYXgocm9vdElubGluZUJveExvZ2ljYWxUb3AsIGxheW91dEJvdW5kcy5h
c2NlbnQgLSByb290SW5saW5lQm94QXNjZW50KTsKKyAgICAgICAgcm9vdElubGluZUJveExvZ2lj
YWxUb3AgPSBzdGQ6Om1heChyb290SW5saW5lQm94TG9naWNhbFRvcCwgbGF5b3V0Qm91bmRzLmFz
Y2VudCgpIC0gcm9vdElubGluZUJveEFzY2VudCk7CiAgICAgfQogICAgIHJvb3RJbmxpbmVCb3gu
c2V0TG9naWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiAgICAgcmV0dXJuIGxpbmVC
b3hMb2dpY2FsQm90dG9tIC0gbGluZUJveExvZ2ljYWxUb3A7CkBAIC0xNzEsMTEgKzE3MSwxMSBA
QCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94QWxpZ25tZW50Q29udGVudCBMaW5lQm94
VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTAogCiAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbiA9
IGlubGluZUxldmVsQm94LnZlcnRpY2FsQWxpZ24oKTsKICAgICAgICAgYXV0byBsYXlvdXRCb3Vu
ZHMgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgYXV0byBwYXJlbnRJ
bmxpbmVCb3hBc2NlbnQgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50Owor
ICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFzY2VudCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQoKTsKIAogICAgICAgICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ24udHlw
ZSkgewogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgICAgICAgICAg
bG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveEFzY2VudCAtIGxheW91dEJvdW5kcy5hc2NlbnQ7
CisgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94QXNjZW50IC0gbGF5b3V0
Qm91bmRzLmFzY2VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6TWlkZGxlOiB7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBsYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5l
Qm94LnByaW1hcnltZXRyaWNzT2ZQcmltYXJ5Rm9udCgpLnhIZWlnaHQoKSAvIDI7CkBAIC0xODgs
NyArMTg4LDcgQEAgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6TGluZUJveEFsaWdubWVudENvbnRl
bnQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUwKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Ci0gICAgICAg
ICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAqdmVydGljYWxB
bGlnbi5iYXNlbGluZU9mZnNldCArIGxheW91dEJvdW5kcy5hc2NlbnQ7CisgICAgICAgICAgICBh
dXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSAqdmVydGljYWxBbGlnbi5i
YXNlbGluZU9mZnNldCArIGxheW91dEJvdW5kcy5hc2NlbnQoKTsKICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwMCwxNyArMjAw
LDE3IEBAIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExp
bmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dEJvdHRvbTogewogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFs
aWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkg
YW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsK
LSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBhdXRv
IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3Vu
ZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCgpICsgcGFy
ZW50SW5saW5lQm94LmRlc2NlbnQoKTsKICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gbGF5b3V0Qm91bmRzLmhlaWdodCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6IHsK
LSAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxh
eW91dEJvdW5kcy5hc2NlbnQgLSAocGFyZW50SW5saW5lQm94LmZvbnRTaXplKCkgLyA1ICsgMSk7
CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBs
YXlvdXRCb3VuZHMuYXNjZW50KCkgLSAocGFyZW50SW5saW5lQm94LmZvbnRTaXplKCkgLyA1ICsg
MSk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94QXNjZW50IC0gbG9n
aWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6IHsKLSAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5h
c2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZm9udFNpemUoKSAvIDMgKyAxOworICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbGF5b3V0Qm91bmRzLmFz
Y2VudCgpICsgcGFyZW50SW5saW5lQm94LmZvbnRTaXplKCkgLyAzICsgMTsKICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI2Mywx
MSArMjYzLDExIEBAIHZvaWQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZVJvb3RJbmxp
bmVCb3hWZXJ0aWNhbFBvc2l0aW9uKExpbmVCb3gmIGxpbmVCCiAKICAgICBhdXRvIG1heGltdW1U
b3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjpvcHRpb25hbDxJbmxpbmVM
YXlvdXRVbml0PiB7IH07CiAgICAgaWYgKGZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJv
eEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gpKQotICAgICAgICBtYXhpbXVtVG9wT2Zmc2V0
RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGlu
ZSA9IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50KCk7CiAKICAgICBhdXRvIGFm
ZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXShhdXRvJiBpbmxpbmVMZXZl
bEJveCkgewogICAgICAgICBhdXRvIGlubGluZUxldmVsQm94U3RyZWNoZXNMaW5lQm94ID0gZm9y
bWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxC
b3gpOwotICAgICAgICByZXR1cm4gaW5saW5lTGV2ZWxCb3hTdHJlY2hlc0xpbmVCb3ggfHwgKChp
bmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkgJiYgIWlubGluZUxldmVsQm94
LmlzTGlzdE1hcmtlcigpKSAmJiBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQg
JiYgaW5saW5lTGV2ZWxCb3gubGluZUJveENvbnRhaW4oKSk7CisgICAgICAgIHJldHVybiBpbmxp
bmVMZXZlbEJveFN0cmVjaGVzTGluZUJveCB8fCAoKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5s
aW5lTGV2ZWxCb3goKSAmJiAhaW5saW5lTGV2ZWxCb3guaXNMaXN0TWFya2VyKCkpICYmIGlubGlu
ZUxldmVsQm94LmxheW91dEJvdW5kcygpLmFzY2VudCgpICYmIGlubGluZUxldmVsQm94LmxpbmVC
b3hDb250YWluKCkpOwogICAgIH07CiAKICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDog
bGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CkBAIC0yNzcsOSArMjc3LDkgQEAg
dm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2Fs
UG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgaWYgKGlubGluZUxldmVsQm94Lmhhc0xp
bmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7CiAgICAgICAgICAgICBpZiAodmVydGljYWxBbGln
bi50eXBlID09IFZlcnRpY2FsQWxpZ246OlRvcCkgewogICAgICAgICAgICAgICAgIGhhc1RvcEFs
aWduZWRJbmxpbmVMZXZlbEJveCA9IGhhc1RvcEFsaWduZWRJbmxpbmVMZXZlbEJveCB8fCBhZmZl
Y3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oaW5saW5lTGV2ZWxCb3gpOwotICAgICAg
ICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoJmlu
bGluZUxldmVsQm94LCByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxheW91
dEJvdW5kcy5hc2NlbnQpOworICAgICAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVC
YXNlbGluZU9mZnNldE1hcC5hZGQoJmlubGluZUxldmVsQm94LCByb290SW5saW5lQm94LmxheW91
dEJvdW5kcygpLmFzY2VudCgpIC0gbGF5b3V0Qm91bmRzLmFzY2VudCgpKTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAodmVydGljYWxBbGlnbi50eXBlID09IFZlcnRpY2FsQWxpZ246OkJvdHRvbSkK
LSAgICAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAu
YWRkKCZpbmxpbmVMZXZlbEJveCwgbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSByb290SW5saW5lQm94
LmxheW91dEJvdW5kcygpLmRlc2NlbnQpOworICAgICAgICAgICAgICAgIGlubGluZUxldmVsQm94
QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoJmlubGluZUxldmVsQm94LCBsYXlvdXRCb3Vu
ZHMuZGVzY2VudCgpIC0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50KCkpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTMsMTIgKzI5MywxMiBAQCB2b2lkIExpbmVCb3hW
ZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5l
Qm94JiBsaW5lQgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6TWlkZGxlOiB7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSAobGF5b3V0Qm91bmRzLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5w
cmltYXJ5bWV0cmljc09mUHJpbWFyeUZvbnQoKS54SGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgICAg
IGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSAtIGxheW91dEJvdW5kcy5hc2NlbnQ7CisgICAgICAgICAgICBiYXNlbGlu
ZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmUgLSBsYXlvdXRCb3VuZHMuYXNjZW50KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CiAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlvdXRC
b3VuZHMuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gbGF5b3V0Qm91
bmRzLmFzY2VudDsKKyAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5l
ID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGxheW91dEJvdW5kcy5hc2Nl
bnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6TGVuZ3RoOiB7CkBAIC0zMDcsMTAgKzMwNywxMCBAQCB2b2lkIExpbmVCb3hWZXJ0
aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5lQm94
JiBsaW5lQgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpUZXh0VG9wOgotICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3guYXNjZW50KCkgLSBsYXlvdXRCb3VuZHMuYXNjZW50
OworICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBwYXJlbnRJ
bmxpbmVCb3guYXNjZW50KCkgLSBsYXlvdXRCb3VuZHMuYXNjZW50KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgotICAgICAgICAg
ICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlvdXRCb3VuZHMuZGVzY2Vu
dCAtICpwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpOworICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlvdXRCb3VuZHMuZGVzY2VudCgpIC0gcGFyZW50SW5s
aW5lQm94LmRlc2NlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlN1YjoKICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0gLShwYXJlbnRJbmxpbmVCb3guZm9udFNpemUoKSAvIDUgKyAxKTsKQEAgLTMyNiwxMyAr
MzI2LDEzIEBAIHZvaWQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZVJvb3RJbmxpbmVC
b3hWZXJ0aWNhbFBvc2l0aW9uKExpbmVCb3gmIGxpbmVCCiAgICAgICAgIGlubGluZUxldmVsQm94
QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoJmlubGluZUxldmVsQm94LCBhYnNvbHV0ZUJh
c2VsaW5lT2Zmc2V0KTsKIAogICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNh
bFBvc2l0aW9uKGlubGluZUxldmVsQm94KSkgewotICAgICAgICAgICAgYXV0byB0b3BPZmZzZXRG
cm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gYWJzb2x1dGVCYXNlbGluZU9mZnNldCArIGxheW91
dEJvdW5kcy5hc2NlbnQ7CisgICAgICAgICAgICBhdXRvIHRvcE9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUgPSBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ICsgbGF5b3V0Qm91bmRzLmFzY2Vu
dCgpOwogICAgICAgICAgICAgaWYgKG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJh
c2VsaW5lKQogICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJv
eEJhc2VsaW5lID0gc3RkOjptYXgoKm1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJh
c2VsaW5lLCB0b3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lKTsKICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpcyBxdWlyayBtb2RlIGFuZCB0aGUg
cm9vdCBpbmxpbmUgYm94IGhhcyBubyBjb250ZW50LiBUaGUgcm9vdCBpbmxpbmUgYm94J3MgYmFz
ZWxpbmUgaXMgYW5jaG9yZWQgYXQgMC4KICAgICAgICAgICAgICAgICAvLyBIb3dldmVyIG5lZ2F0
aXZlIGFzY2VudCAoZS5nIG5lZ2F0aXZlIHRvcCBtYXJnaW4pIGNhbiAicHVzaCIgdGhlIHJvb3Qg
aW5saW5lIGJveCB1cHdhcmRzIGFuZCBoYXZlIGEgbmVnYXRpdmUgdmFsdWUuCi0gICAgICAgICAg
ICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBsYXlvdXRC
b3VuZHMuYXNjZW50ID49IDAKKyAgICAgICAgICAgICAgICBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJv
b3RJbmxpbmVCb3hCYXNlbGluZSA9IGxheW91dEJvdW5kcy5hc2NlbnQoKSA+PSAwCiAgICAgICAg
ICAgICAgICAgICAgID8gc3RkOjptYXgoMC4wZiwgdG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hC
YXNlbGluZSkKICAgICAgICAgICAgICAgICAgICAgOiB0b3BPZmZzZXRGcm9tUm9vdElubGluZUJv
eEJhc2VsaW5lOwogICAgICAgICAgICAgfQpAQCAtMzc2LDcgKzM3Niw3IEBAIElubGluZUxldmVs
Qm94OjpMYXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9y
SW5saW5lQm94U3ViCiAgICAgLy8gVGhlIHRvcCBvZiB0aGUgYWxpZ25lZCBzdWJ0cmVlIGlzIHRo
ZSBoaWdoZXN0IG9mIHRoZSB0b3BzIG9mIHRoZSBib3hlcyBpbiB0aGUgc3VidHJlZSwgYW5kIHRo
ZSBib3R0b20gaXMgYW5hbG9nb3VzLgogICAgIEFTU0VSVChub25Sb290SW5saW5lTGV2ZWxCb3hl
c1tpbmxpbmVCb3hJbmRleF0uaXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9ybWF0dGluZ0dl
b21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgYXV0byBlbmNsb3NpbmdM
YXlvdXRCb3VuZHMgPSBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgfTsKKyAgICBhdXRv
IGVuY2xvc2luZ0xheW91dEJvdW5kcyA9IElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50
IHsgfTsKICAgICBhdXRvJiBpbmxpbmVCb3hQYXJlbnQgPSBub25Sb290SW5saW5lTGV2ZWxCb3hl
c1tpbmxpbmVCb3hJbmRleF0ubGF5b3V0Qm94KCkucGFyZW50KCk7CiAgICAgZm9yIChzaXplX3Qg
aW5kZXggPSBpbmxpbmVCb3hJbmRleCArIDE7IGluZGV4IDwgbm9uUm9vdElubGluZUxldmVsQm94
ZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRJbmxpbmVMZXZl
bEJveCA9IG5vblJvb3RJbmxpbmVMZXZlbEJveGVzW2luZGV4XTsKQEAgLTM4NiwxMCArMzg2LDEw
IEBAIElubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6
bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3ViCiAgICAgICAgIH0KICAgICAgICAgaWYgKCFmb3Jt
YXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChkZXNjZW5kYW50SW5s
aW5lTGV2ZWxCb3gpIHx8IGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5oYXNMaW5lQm94UmVsYXRp
dmVBbGlnbm1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbmNsb3NpbmdM
YXlvdXRCb3VuZHMuYXNjZW50ID0gc3RkOjptYXgoZGVzY2VuZGFudElubGluZUxldmVsQm94Lmxh
eW91dEJvdW5kcygpLmFzY2VudCwgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmFzY2VudCk7Ci0gICAg
ICAgIGVuY2xvc2luZ0xheW91dEJvdW5kcy5kZXNjZW50ID0gc3RkOjptYXgoZGVzY2VuZGFudElu
bGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmRlc2NlbnQsIGVuY2xvc2luZ0xheW91dEJvdW5k
cy5kZXNjZW50KTsKKyAgICAgICAgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmFzY2VudCA9IHN0ZDo6
bWF4KGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQoKSwgZW5j
bG9zaW5nTGF5b3V0Qm91bmRzLmFzY2VudCk7CisgICAgICAgIGVuY2xvc2luZ0xheW91dEJvdW5k
cy5kZXNjZW50ID0gc3RkOjptYXgoZGVzY2VuZGFudElubGluZUxldmVsQm94LmxheW91dEJvdW5k
cygpLmRlc2NlbnQoKSwgZW5jbG9zaW5nTGF5b3V0Qm91bmRzLmRlc2NlbnQpOwogICAgIH0KLSAg
ICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0Qm91bmRzOworICAgIHJldHVybiB7IGVuY2xvc2luZ0xh
eW91dEJvdW5kcyB9OwogfQogCiB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVMYXlvdXRVbml0IGxpbmVCb3hM
b2dpY2FsSGVpZ2h0KSBjb25zdApAQCAtNDM3LDEwICs0MzcsMTAgQEAgdm9pZCBMaW5lQm94VmVy
dGljYWxBbGlnbmVyOjphbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgSW5s
aW5lTGF5b3UKICAgICAgICAgfQogICAgICAgICAvLyBOb3RlIHRoYXQgKHRleHQpdG9wL2JvdHRv
bSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRUb3A6Ci0gICAgICAgICAgICBsb2dpY2FsVG9wID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0
Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3guYXNjZW50KCk7CisgICAgICAgICAgICBs
b2dpY2FsVG9wID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50KCkgLSBpbmxp
bmVMZXZlbEJveC5hc2NlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ246OlRleHRCb3R0b206Ci0gICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50
SW5saW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygp
LmRlc2NlbnQgLSBpbmxpbmVMZXZlbEJveC5hc2NlbnQoKTsKKyAgICAgICAgICAgIGxvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3gubG9naWNhbEhlaWdodCgpIC0gaW5saW5lTGV2ZWxCb3gubGF5
b3V0Qm91bmRzKCkuZGVzY2VudCgpIC0gaW5saW5lTGV2ZWxCb3guYXNjZW50KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1Q
TEVNRU5URURfWUVUKCk7CkBAIC00NTQsMTcgKzQ1NCwxNyBAQCB2b2lkIExpbmVCb3hWZXJ0aWNh
bEFsaWduZXI6OmFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVM
YXlvdQogICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAg
ICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC52ZXJ0aWNhbEFsaWduKCkudHlwZSkgewogICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogewotICAgICAgICAgICAgYXV0byBhc2NlbnQg
PSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICBhdXRv
IGFzY2VudCA9IGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmFzY2VudCgpOwogICAgICAg
ICAgICAgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpCi0gICAgICAgICAgICAgICAg
YXNjZW50ID0gc3RkOjptYXgobGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZShub25Sb290
SW5saW5lTGV2ZWxCb3hlcywgaW5kZXgpLmFzY2VudCwgYXNjZW50KTsKKyAgICAgICAgICAgICAg
ICBhc2NlbnQgPSBzdGQ6Om1heChsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKG5vblJv
b3RJbmxpbmVMZXZlbEJveGVzLCBpbmRleCkuYXNjZW50KCksIGFzY2VudCk7CiAgICAgICAgICAg
ICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBh
cmVudCBpbmxpbmUgYm94LgogICAgICAgICAgICAgbG9naWNhbFRvcCA9IGFzY2VudCAtIGlubGlu
ZUxldmVsQm94LmFzY2VudCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKLSAgICAgICAgICAgIGF1dG8gZGVzY2Vu
dCA9IGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmRlc2NlbnQ7CisgICAgICAgICAgICBh
dXRvIGRlc2NlbnQgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50KCk7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkKLSAgICAgICAgICAg
ICAgICBkZXNjZW50ID0gc3RkOjptYXgobGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZShu
b25Sb290SW5saW5lTGV2ZWxCb3hlcywgaW5kZXgpLmRlc2NlbnQsIGRlc2NlbnQpOworICAgICAg
ICAgICAgICAgIGRlc2NlbnQgPSBzdGQ6Om1heChsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0
cmVlKG5vblJvb3RJbmxpbmVMZXZlbEJveGVzLCBpbmRleCkuZGVzY2VudCgpLCBkZXNjZW50KTsK
ICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlzIG5vdCByZWxhdGl2
ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgLSAoaW5saW5lTGV2ZWxCb3guYXNjZW50KCkgKyBkZXNjZW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTM2LDEyICs1MzYsMTIgQEAgSW5saW5lTGF5b3V0VW5p
dCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjphZGp1c3RGb3JBbm5vdGF0aW9uSWZOZWVkZWQoTGlu
ZUJveCYgbGkKICAgICAgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94
Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlu
bGluZUxldmVsQm94LnZlcnRpY2FsQWxpZ24oKS50eXBlKSB7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUb3A6IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVC
b3hUb3AgPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZl
bEJveC5hc2NlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hUb3AgPSBp
bmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQoKSAtIGlubGluZUxldmVsQm94LmFz
Y2VudCgpOwogICAgICAgICAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsVG9w
KGlubGluZUxldmVsQm94LmFubm90YXRpb25BYm92ZSgpLnZhbHVlX29yKDAuZikgKyBpbmxpbmVC
b3hUb3ApOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byBpbmxpbmVCb3hUb3AgPSBhZGp1c3RlZExpbmVCb3hIZWlnaHQgLSAoaW5s
aW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCArIGlubGluZUxldmVsQm94LmFzY2Vu
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hUb3AgPSBhZGp1c3RlZExp
bmVCb3hIZWlnaHQgLSAoaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCgpICsg
aW5saW5lTGV2ZWxCb3guYXNjZW50KCkpOwogICAgICAgICAgICAgICAgICAgICBpbmxpbmVMZXZl
bEJveC5zZXRMb2dpY2FsVG9wKGlubGluZUJveFRvcCAtIGlubGluZUxldmVsQm94LmFubm90YXRp
b25CZWxvdygpLnZhbHVlX29yKDAuZikpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465888</attachid>
            <date>2023-04-13 09:25:30 -0700</date>
            <delta_ts>2023-04-13 10:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255387-20230413092529.patch</filename>
            <type>text/plain</type>
            <size>21596</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA3N2I5ZGEzMDdhYzcyNzI2YzQ3ZDkyZjdmY2VkMGEwNjc0ODhjZTFlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMTIgQXByIDIwMjMgMjE6MTU6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGlzIGEgZ2xvcmlmaWVkCiBBc2NlbnRBbmREZXNj
ZW50IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzODcKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKMS4gTW92ZSBBc2NlbnRBbmREZXNjZW50IGZyb20gSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIHVuZGVyIElubGluZUxldmVsQm94CjIuIFR1cm4gYm90aCBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGFuZCBJbmxpbmVMZXZlbEJveCdzIG1fYXNjZW50
L21fZGVzY2VudCBpbnRvIGEgQXNjZW50QW5kRGVzY2VudAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudDo6aGVpZ2h0IGNvbnN0KToK
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6Om9wZXJh
dG9yPT0gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6YXNjZW50IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmRlc2NlbnQgY29uc3QpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjphc2NlbnQgY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjpkZXNj
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5k
czo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91
dEJvdW5kczo6b3BlcmF0b3I9PSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpzZXRBc2NlbnRBbmREZXNjZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxC
b3g6OnNldExheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHM6OkxheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxl
dmVsQm94OjpzZXRBc2NlbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0
Ojphc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tG
b250cyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRC
b3VuZHNGb3JJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9y
TGluZUJveENvbnRhaW5JZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZSk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5IGNvbnN0KToKKCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OmhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OnJvdW5kIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNh
bEhlaWdodEFuZEFsaWduIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2Fs
QWxpZ25lcjo6c2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0
ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBj
b25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZCBjb25zdCk6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVMZXZlbEJveC5oICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKy0tLS0tCiAu
Li4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCAgICAgICAgICAgfCA1MyArKysrKysr
Ky0tLS0tLS0tLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmggICAgICAgICAg
ICAgfCAgMyArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCAg
IHwgIDggKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCAgICAg
fCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAppbmRleCA4Y2YwY2U3MTc2NDIuLmI5
MWNkZmRmMzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC00NywxNyAr
NDcsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVMaW5lQnJl
YWtCb3goY29uc3QgQm94JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KTsKICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlR2VuZXJpY0lubGlu
ZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCk7CiAKLSAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXNjZW50OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBk
ZXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW50OyB9Ci0gICAgLy8gU2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKLSAgICBzdHJ1Y3QgTGF5
b3V0Qm91bmRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
YXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50
ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQotCisgICAgc3RydWN0IEFzY2VudEFuZERl
c2NlbnQgewogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAgfTsKICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OworCisgICAgICAgIElubGluZUxheW91dFVu
aXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXNjZW50QW5kRGVzY2VudCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGFzY2VudCA9PSBvdGhlci5hc2NlbnQgJiYgZGVzY2VudCA9PSBvdGhlci5kZXNjZW50OyB9
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAg
ICAgIHZvaWQgcm91bmQoKTsKICAgICB9OwotICAgIExheW91dEJvdW5kcyBsYXlvdXRCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dEJvdW5kczsgfQorICAgIElubGluZUxheW91dFVuaXQg
YXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9hc2NlbnRBbmREZXNjZW50LmFzY2VudDsgfQorICAg
IElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVz
Y2VudC5kZXNjZW50OyB9CisgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5s
aW5lLTMvI2xheW91dC1ib3VuZHMKKyAgICBBc2NlbnRBbmREZXNjZW50IGxheW91dEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm91bmRzOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnQo
KTsKQEAgLTEzNSw5ICsxMzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWln
aHQocm91bmRUb0ludChsb2dpY2FsSGVpZ2h0KSk7IH0KICAgICB2b2lkIHNldExvZ2ljYWxUb3Ao
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2lj
YWxUb3AgPj0gMCA/IHJvdW5kVG9JbnQobG9naWNhbFRvcCkgOiAtcm91bmRUb0ludCgtbG9naWNh
bFRvcCkpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0KLSAgICB2b2lk
IHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkgeyBtX2FzY2VudCA9IHJvdW5kVG9J
bnQoYXNjZW50KTsgfQotICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpIHsgbV9kZXNjZW50ID0gcm91bmRUb0ludChkZXNjZW50KTsgfQotICAgIHZvaWQgc2V0TGF5
b3V0Qm91bmRzKGNvbnN0IExheW91dEJvdW5kcyYgbGF5b3V0Qm91bmRzKSB7IG1fbGF5b3V0Qm91
bmRzID0geyBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmFzY2VudCkp
LCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmRlc2NlbnQpKSB9OyB9
CisgICAgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5k
RGVzY2VudCkgeyBtX2FzY2VudEFuZERlc2NlbnQgPSBhc2NlbnRBbmREZXNjZW50OyB9CisgICAg
dm9pZCBzZXRMYXlvdXRCb3VuZHMoY29uc3QgQXNjZW50QW5kRGVzY2VudCYgbGF5b3V0Qm91bmRz
KSB7IG1fbGF5b3V0Qm91bmRzID0gbGF5b3V0Qm91bmRzOyB9CiAgICAgdm9pZCBzZXRJbmxpbmVC
b3hDb250ZW50T2Zmc2V0Rm9yTGVhZGluZ1RyaW0oSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsg
bV9pbmxpbmVCb3hDb250ZW50T2Zmc2V0Rm9yTGVhZGluZ1RyaW0gPSBvZmZzZXQ7IH0KIAogICAg
IHZvaWQgc2V0SXNGaXJzdEJveCgpIHsgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94ID0gdHJ1ZTsg
fQpAQCAtMTQ3LDEwICsxNDksOSBAQCBwcml2YXRlOgogICAgIENoZWNrZWRSZWY8Y29uc3QgQm94
PiBtX2xheW91dEJveDsKICAgICAvLyBUaGlzIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBtYXJnaW4g
YW5kIGJvcmRlciBib3hlcy4gSW5saW5lIGxldmVsIGJveGVzIGFyZSB2ZXJ0aWNhbGx5IGFsaWdu
ZWQgdXNpbmcgdGhlaXIgbWFyZ2luIGJveGVzLgogICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVj
dDsKLSAgICBMYXlvdXRCb3VuZHMgbV9sYXlvdXRCb3VuZHM7CisgICAgQXNjZW50QW5kRGVzY2Vu
dCBtX2xheW91dEJvdW5kczsKKyAgICBBc2NlbnRBbmREZXNjZW50IG1fYXNjZW50QW5kRGVzY2Vu
dDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1faW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRp
bmdUcmltIHsgMC5mIH07Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fZGVzY2VudDsKICAgICBib29sIG1f
aGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAgLy8gVGhlc2UgYml0cyBhcmUgYWJvdXQgd2hldGhl
ciB0aGlzIGlubGluZSBsZXZlbCBib3ggaXMgdGhlIGZpcnN0L2xhc3QgZ2VuZXJhdGVkIGJveCBv
ZiB0aGUgYXNzb2NpYXRlZCBMYXlvdXQ6OkJveAogICAgIC8vIChlLmcuIGFsd2F5cyB0cnVlIGZv
ciBhdG9taWMgaW5saW5lIGxldmVsIGJveGVzLCBidXQgaW5saW5lIGJveGVzIHNwYW5uaW5nIG92
ZXIgbXVsdGlwbGUgbGluZXMgY2FuIHByb2R1Y2Ugc2VwYXJhdGUgZmlyc3QvbGFzdCBib3hlcyku
CkBAIC0yODcsNiArMjg4LDEyIEBAIGlubGluZSBib29sIElubGluZUxldmVsQm94OjpsaW5lQm94
Q29udGFpbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSB2b2lkIElubGlu
ZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCgpCit7CisgICAgYXNjZW50ID0gZmxv
b3JmKGFzY2VudCk7CisgICAgZGVzY2VudCA9IGNlaWxmKGRlc2NlbnQpOworfQorCiB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCA3Njlm
ZjRmNTJhNjEuLjU2MDI5NDBmMTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hCdWlsZGVyLmNwcApAQCAtOTAsMTYgKzkwLDcgQEAgVGV4dFV0aWw6OkZhbGxiYWNrRm9u
dExpc3QgTGluZUJveEJ1aWxkZXI6OmNvbGxlY3RGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxl
dmUKICAgICByZXR1cm4gZmFsbGJhY2tGb250czsKIH0KIAotc3RydWN0IEFzY2VudEFuZERlc2Nl
bnQgewotICAgIElubGluZUxheW91dFVuaXQgYXNjZW50IHsgMCB9OwotICAgIElubGluZUxheW91
dFVuaXQgZGVzY2VudCB7IDAgfTsKLQotICAgIElubGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cy4KLSAgICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRl
Z3JhbCBwb3NpdGlvbmluZy4KLSAgICBBc2NlbnRBbmREZXNjZW50IHJvdW5kKCkgY29uc3QgeyBy
ZXR1cm4geyBmbG9vcmYoYXNjZW50KSwgY2VpbGYoZGVzY2VudCkgfTsgfQotfTsKLXN0YXRpYyBB
c2NlbnRBbmREZXNjZW50IHByaW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChjb25zdCBJbmxp
bmVMZXZlbEJveCYgaW5saW5lQm94LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lID0gQWxwaGFi
ZXRpY0Jhc2VsaW5lKQorc3RhdGljIElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHBy
aW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5l
Qm94LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lID0gQWxwaGFiZXRpY0Jhc2VsaW5lKQogewog
ICAgIEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9udE1ldHJp
Y3MgPSBpbmxpbmVCb3gucHJpbWFyeW1ldHJpY3NPZlByaW1hcnlGb250KCk7CkBAIC0xMTYsNyAr
MTA3LDcgQEAgc3RhdGljIGJvb2wgaXNUZXh0RWRnZUxlYWRpbmcoY29uc3QgSW5saW5lTGV2ZWxC
b3gmIGlubGluZUJveCkKICAgICByZXR1cm4gdGV4dEVkZ2Uub3ZlciA9PSBUZXh0RWRnZVR5cGU6
OkxlYWRpbmc7CiB9CiAKLXN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2NlbnRX
aXRoVGV4dEVkZ2VGb3JJbmxpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5l
KQorc3RhdGljIElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2Nl
bnRXaXRoVGV4dEVkZ2VGb3JJbmxpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJv
eCwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2Vs
aW5lKQogewogICAgIEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKQEAgLTE2Myw3
ICsxNTQsNyBAQCBzdGF0aWMgQXNjZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50V2l0aFRl
eHRFZGdlRm9ySW5saW5lQm94KGNvbnN0IElubGluZUxldgogICAgIHJldHVybiB7IGFzY2VudCgp
LCBkZXNjZW50KCkgfTsKIH0KIAotQXNjZW50QW5kRGVzY2VudCBMaW5lQm94QnVpbGRlcjo6ZW5j
bG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxldmVsQm94
JiBpbmxpbmVCb3gsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0Zv
bnRzRm9yQ29udGVudCwgRm9udEJhc2VsaW5lIGZvbnRCYXNlbGluZSkgY29uc3QKK0lubGluZUxl
dmVsQm94OjpBc2NlbnRBbmREZXNjZW50IExpbmVCb3hCdWlsZGVyOjplbmNsb3NpbmdBc2NlbnRE
ZXNjZW50V2l0aEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwg
Y29uc3QgVGV4dFV0aWw6OkZhbGxiYWNrRm9udExpc3QmIGZhbGxiYWNrRm9udHNGb3JDb250ZW50
LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lKSBjb25zdAogewogICAgIEFTU0VSVCghZmFsbGJh
Y2tGb250c0ZvckNvbnRlbnQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5s
aW5lQm94KCkpOwpAQCAtMjM1LDE1ICsyMjYsMTYgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0
TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIEZvbnQK
IAogdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2
ZWxCb3goY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVs
Qm94KSBjb25zdAogewotICAgIGF1dG8gc2V0QXNjZW50QW5kRGVzY2VudCA9IFsmXSAoYXV0byBh
c2NlbnRBbmREZXNjZW50LCBib29sIGFwcGx5TGVnYWN5Um91bmRpbmcgPSB0cnVlKSB7Ci0gICAg
ICAgIGF1dG8gYWRqdXN0ZWRBc2NlbnRBbmREZXNjZW50ID0gYXBwbHlMZWdhY3lSb3VuZGluZyA/
IGFzY2VudEFuZERlc2NlbnQucm91bmQoKSA6IGFzY2VudEFuZERlc2NlbnQ7Ci0gICAgICAgIGlu
bGluZUxldmVsQm94LnNldEFzY2VudChhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuYXNjZW50KTsK
LSAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChhZGp1c3RlZEFzY2VudEFuZERlc2Nl
bnQuZGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyh7IGFk
anVzdGVkQXNjZW50QW5kRGVzY2VudC5hc2NlbnQsIGFkanVzdGVkQXNjZW50QW5kRGVzY2VudC5k
ZXNjZW50IH0pOworICAgIGF1dG8gc2V0VmVydGljYWxQcm9wZXJ0aWVzID0gWyZdIChJbmxpbmVM
ZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50LCBib29sIGFwcGx5TGVn
YWN5Um91bmRpbmcgPSB0cnVlKSB7CisgICAgICAgIGlmIChhcHBseUxlZ2FjeVJvdW5kaW5nKQor
ICAgICAgICAgICAgYXNjZW50QW5kRGVzY2VudC5yb3VuZCgpOworICAgICAgICBpbmxpbmVMZXZl
bEJveC5zZXRBc2NlbnRBbmREZXNjZW50KGFzY2VudEFuZERlc2NlbnQpOworICAgICAgICBpbmxp
bmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoYXNjZW50QW5kRGVzY2VudCk7CisgICAgICAgIGlu
bGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQoYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7
CiAgICAgfTsKIAogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpKSB7Ci0gICAg
ICAgIGF1dG8gYXNjZW50QW5kRGVzY2VudCA9IFsmXSgpIC0+IEFzY2VudEFuZERlc2NlbnQgewor
ICAgICAgICBhdXRvIGFzY2VudEFuZERlc2NlbnQgPSBbJl0oKSAtPiBJbmxpbmVMZXZlbEJveDo6
QXNjZW50QW5kRGVzY2VudCB7CiAgICAgICAgICAgICBhdXRvIGxlYWRpbmdUcmltID0gaW5saW5l
TGV2ZWxCb3gubGVhZGluZ1RyaW0oKTsKICAgICAgICAgICAgIGF1dG8gZm9udEJhc2VsaW5lID0g
bGluZUJveC5iYXNlbGluZVR5cGUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5p
c1Jvb3RJbmxpbmVCb3goKSB8fCBsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Tm9ybWFsKQpA
QCAtMjU2LDggKzI0OCw4IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVy
dGllc0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgICAgICBy
ZXR1cm4geyBhc2NlbnQsIGRlc2NlbnQgfTsKICAgICAgICAgfSgpOwogCi0gICAgICAgIHNldEFz
Y2VudEFuZERlc2NlbnQoYXNjZW50QW5kRGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94
LnNldExvZ2ljYWxIZWlnaHQoYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNl
dFZlcnRpY2FsUHJvcGVydGllcyhhc2NlbnRBbmREZXNjZW50KTsKKyAgICAgICAgLy8gT3ZlcnJp
ZGUgZGVmYXVsdCBsYXlvdXQgYm91bmRzLgogICAgICAgICBzZXRMYXlvdXRCb3VuZHNGb3JJbmxp
bmVCb3goaW5saW5lTGV2ZWxCb3gsIGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpOwogCiAgICAgICAg
IC8vIFdpdGggbGVhZGluZy10cmltLCB0aGUgaW5saW5lIGJveCB0b3AgaXMgbm90IGFsd2F5cyB3
aGVyZSB0aGUgY29udGVudCBzdGFydHMuCkBAIC0yNjcsOCArMjU5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3goY29uc3QgTGlu
ZUJveCYgbGluZUIKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94
KCkpIHsKICAgICAgICAgYXV0byBwYXJlbnRBc2NlbnRBbmREZXNjZW50ID0gcHJpbWFyeUZvbnRN
ZXRyaWNzRm9ySW5saW5lQm94KGxpbmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94
KSwgbGluZUJveC5iYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQo
cGFyZW50QXNjZW50QW5kRGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2lj
YWxIZWlnaHQocGFyZW50QXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNldFZl
cnRpY2FsUHJvcGVydGllcyhwYXJlbnRBc2NlbnRBbmREZXNjZW50KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNMaXN0TWFya2VyKCkpIHsKQEAgLTI3
NywxNSArMjY4LDE1IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGll
c0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgIGF1dG8mIGxp
c3RNYXJrZXJCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBtYXJnaW5Cb3hIZWlnaHQgPSBsaXN0TWFya2VyQm94
R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCk7CiAKLSAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0
TG9naWNhbEhlaWdodChtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICBpZiAobGluZUJveC5iYXNl
bGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5lKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlbHkgb24gdGhlIGludGVncmF0aW9uIGJhc2VsaW5lLgotICAgICAgICAg
ICAgc2V0QXNjZW50QW5kRGVzY2VudChwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gobGlu
ZUJveC5wYXJlbnRJbmxpbmVCb3goaW5saW5lTGV2ZWxCb3gpLCBsaW5lQm94LmJhc2VsaW5lVHlw
ZSgpKSk7CisgICAgICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMocHJpbWFyeUZvbnRNZXRy
aWNzRm9ySW5saW5lQm94KGxpbmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwg
bGluZUJveC5iYXNlbGluZVR5cGUoKSkpOworICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0
TG9naWNhbEhlaWdodChtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChhdXRvIGFzY2VudCA9IGRvd25jYXN0PEVsZW1lbnRCb3g+KGxh
eW91dEJveCkuYmFzZWxpbmVGb3JJbnRlZ3JhdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHNl
dEFzY2VudEFuZERlc2NlbnQoQXNjZW50QW5kRGVzY2VudCB7ICphc2NlbnQsIG1hcmdpbkJveEhl
aWdodCAtICphc2NlbnQgfSk7Ci0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoQXNjZW50QW5k
RGVzY2VudCB7IG1hcmdpbkJveEhlaWdodCwgeyB9IH0pOworICAgICAgICAgICAgcmV0dXJuIHNl
dFZlcnRpY2FsUHJvcGVydGllcyh7ICphc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtICphc2NlbnQg
fSk7CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyh7IG1hcmdpbkJveEhlaWdodCwgeyB9
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0
b21pY0lubGluZUxldmVsQm94KCkpIHsKQEAgLTMxMCw4ICszMDEsNyBAQCB2b2lkIExpbmVCb3hC
dWlsZGVyOjpzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5l
Qm94JiBsaW5lQgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJveEhl
aWdodDsKICAgICAgICAgfSgpOwotICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFu
ZERlc2NlbnQgeyBhc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtIGFzY2VudCB9LCBmYWxzZSk7Ci0g
ICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsK
KyAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzKHsgYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQg
LSBhc2NlbnQgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNDcyLDcgKzQ2Miw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFk
anVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm94KCkpOwogICAgICAgICAgICAgYXV0byBhc2NlbnQgPSBpbmxpbmVMZXZlbEJv
eC5hc2NlbnQoKSArIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdCZWZv
cmUoKTsKLSAgICAgICAgICAgIGF1dG8gZGVzY2VudCA9IHZhbHVlT3JEZWZhdWx0KGlubGluZUxl
dmVsQm94LmRlc2NlbnQoKSkgKyBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5Cb3JkZXJBbmRQYWRk
aW5nQWZ0ZXIoKTsKKyAgICAgICAgICAgIGF1dG8gZGVzY2VudCA9IGlubGluZUxldmVsQm94LmRl
c2NlbnQoKSArIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdBZnRlcigp
OwogICAgICAgICAgICAgaW5saW5lQm94Qm91bmRzTWFwLnNldCgmaW5saW5lTGV2ZWxCb3gsIFRl
eHRVdGlsOjpFbmNsb3NpbmdBc2NlbnREZXNjZW50IHsgYXNjZW50LCBkZXNjZW50IH0pOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjAzLDggKzU5Myw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFk
anVzdElkZW9ncmFwaGljQmFzZWxpbmVJZkFwcGxpY2FibGUoTGluZUJveCYgbGluZUJveCkKICAg
ICAgICAgICAgIGF1dG8gaW5saW5lTGV2ZWxCb3hIZWlnaHQgPSBpbmxpbmVMZXZlbEJveC5sb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGlkZW9ncmFwaGljQmFz
ZWxpbmUgPSByb3VuZFRvSW50KGlubGluZUxldmVsQm94SGVpZ2h0IC8gMik7CiAgICAgICAgICAg
ICAvLyBNb3ZlIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBidXQga2VlcCB0aGUgc2FtZSBsb2dpY2Fs
IGhlaWdodC4KLSAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldEFzY2VudChpZGVvZ3JhcGhp
Y0Jhc2VsaW5lKTsKLSAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoaW5saW5l
TGV2ZWxCb3hIZWlnaHQgLSBpZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKKyAgICAgICAgICAgIGlubGlu
ZUxldmVsQm94LnNldEFzY2VudEFuZERlc2NlbnQoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxp
bmVMZXZlbEJveEhlaWdodCAtIGlkZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgICAgICBp
bmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxp
bmVMZXZlbEJveEhlaWdodCAtIGlkZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgIH0KIApA
QCAtNjQ5LDcgKzYzOCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2Vv
bWV0cnkoTGluZUJveCYgbGluZUJveCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIHJvb3RJbmxp
bmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKICAgICAgICAgICAgIHN3aXRjaCAocm9v
dFN0eWxlLnRleHRFZGdlKCkudW5kZXIpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBl
OjpUZXh0OgotICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5k
cygpLmRlc2NlbnQgLSAqcm9vdElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIHJvb3RJbmxpbmVC
b3guZGVzY2VudCgpOwogICAgICAgICAgICAgY2FzZSBUZXh0RWRnZVR5cGU6OkFscGhhYmV0aWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVz
Y2VudDsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpDSktJZGVvZ3JhcGhpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCmluZGV4IGViYjdmNjkzOWNm
Mi4uYTdlN2ZhNWI1NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCb3g7CiBj
bGFzcyBFbGVtZW50Qm94OwogY2xhc3MgTGF5b3V0U3RhdGU7Ci1zdHJ1Y3QgQXNjZW50QW5kRGVz
Y2VudDsKIAogY2xhc3MgTGluZUJveEJ1aWxkZXIgewogcHVibGljOgpAQCAtNDksNyArNDgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KElubGluZUxl
dmVsQm94JiwgRm9udEJhc2VsaW5lKSBjb25zdDsKICAgICB2b2lkIGFkanVzdElubGluZUJveEhl
aWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94Jik7CiAgICAgdm9pZCBj
b21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmKSBjb25zdDsKLSAgICBBc2NlbnRBbmREZXNj
ZW50IGVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tGb250cyhjb25zdCBJbmxpbmVM
ZXZlbEJveCYsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0ZvbnRz
Rm9yQ29udGVudCwgRm9udEJhc2VsaW5lKSBjb25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNj
ZW50QW5kRGVzY2VudCBlbmNsb3NpbmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNrRm9udHMoY29u
c3QgSW5saW5lTGV2ZWxCb3gmLCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFs
bGJhY2tGb250c0ZvckNvbnRlbnQsIEZvbnRCYXNlbGluZSkgY29uc3Q7CiAgICAgVGV4dFV0aWw6
OkZhbGxiYWNrRm9udExpc3QgY29sbGVjdEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxC
b3gmIHBhcmVudElubGluZUJveCwgY29uc3QgTGluZTo6UnVuJiwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKIAogICAgIHZvaWQgY29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
CmluZGV4IDBkOGY5MDI5ZWU3Mi4uOWU0ZDdmMTYxMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExp
bmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dEJvdHRvbTogewogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFs
aWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkg
YW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsK
LSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBhdXRv
IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3Vu
ZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVu
dElubGluZUJveC5kZXNjZW50KCk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94TG9naWNhbEJvdHRvbSAtIGxheW91dEJvdW5kcy5oZWlnaHQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYg
bGluZUIKICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFy
ZW50SW5saW5lQm94LmFzY2VudCgpIC0gbGF5b3V0Qm91bmRzLmFzY2VudDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206Ci0gICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5kZXNj
ZW50IC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBiYXNlbGluZU9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5kZXNjZW50IC0gcGFyZW50SW5s
aW5lQm94LmRlc2NlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlN1YjoKICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0gLShwYXJlbnRJbmxpbmVCb3guZm9udFNpemUoKSAvIDUgKyAxKTsKQEAgLTM2NCw3ICsz
NjQsNyBAQCB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbihMaW5lQm94JiBsaW5lQgogICAgIHJvb3RJbmxpbmVCb3guc2V0TG9n
aWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiB9CiAKLUlubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5l
Qm94U3VidHJlZShjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxp
bmVMZXZlbEJveGVzLCBzaXplX3QgaW5saW5lQm94SW5kZXgpIGNvbnN0CitJbmxpbmVMZXZlbEJv
eDo6QXNjZW50QW5kRGVzY2VudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNG
b3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9u
Um9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3QKIHsKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vY3Nzd2ctZHJhZnRzL2NzczIvI3Byb3BkZWYtdmVy
dGljYWwtYWxpZ24KICAgICAvLwpAQCAtMzc2LDcgKzM3Niw3IEBAIElubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5l
Qm94U3ViCiAgICAgLy8gVGhlIHRvcCBvZiB0aGUgYWxpZ25lZCBzdWJ0cmVlIGlzIHRoZSBoaWdo
ZXN0IG9mIHRoZSB0b3BzIG9mIHRoZSBib3hlcyBpbiB0aGUgc3VidHJlZSwgYW5kIHRoZSBib3R0
b20gaXMgYW5hbG9nb3VzLgogICAgIEFTU0VSVChub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxp
bmVCb3hJbmRleF0uaXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5
ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgYXV0byBlbmNsb3NpbmdMYXlvdXRC
b3VuZHMgPSBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgfTsKKyAgICBhdXRvIGVuY2xv
c2luZ0xheW91dEJvdW5kcyA9IElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgfTsK
ICAgICBhdXRvJiBpbmxpbmVCb3hQYXJlbnQgPSBub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxp
bmVCb3hJbmRleF0ubGF5b3V0Qm94KCkucGFyZW50KCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBpbmxpbmVCb3hJbmRleCArIDE7IGluZGV4IDwgbm9uUm9vdElubGluZUxldmVsQm94ZXMuc2l6
ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveCA9
IG5vblJvb3RJbmxpbmVMZXZlbEJveGVzW2luZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNh
bEFsaWduZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaAppbmRleCBlYWFlMTJhODk1NjAuLjA0
ODgzMzc5OTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hW
ZXJ0aWNhbEFsaWduZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cHV0ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKExpbmVCb3gmLCBjb25zdCBMaW5lQm94
QWxpZ25tZW50Q29udGVudCYpIGNvbnN0OwogICAgIHZvaWQgYWxpZ25JbmxpbmVMZXZlbEJveGVz
KExpbmVCb3gmLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVCb3hMb2dpY2FsSGVpZ2h0KSBjb25zdDsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94
JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94SGVpZ2h0KSBjb25zdDsKLSAgICBJbmxpbmVMZXZl
bEJveDo6TGF5b3V0Qm91bmRzIGxheW91dEJvdW5kc0ZvcklubGluZUJveFN1YnRyZWUoY29uc3Qg
TGluZUJveDo6SW5saW5lTGV2ZWxCb3hMaXN0JiBub25Sb290SW5saW5lTGV2ZWxCb3hlcywgc2l6
ZV90IGlubGluZUJveEluZGV4KSBjb25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5k
RGVzY2VudCBsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6Oklu
bGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVC
b3hJbmRleCkgY29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZv
cm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5OyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQo=
</data>
<flag name="commit-queue"
          id="493735"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465895</attachid>
            <date>2023-04-13 10:18:53 -0700</date>
            <delta_ts>2023-04-13 13:40:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255387-20230413101853.patch</filename>
            <type>text/plain</type>
            <size>21596</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmZTg1YmEzZWEzNzZhYmE3NDRiODY2ZGI1MDJhYmYxOTY1ZWI2NjI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMTIgQXByIDIwMjMgMjE6MTU6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGlzIGEgZ2xvcmlmaWVkCiBBc2NlbnRBbmREZXNj
ZW50IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzODcKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKMS4gTW92ZSBBc2NlbnRBbmREZXNjZW50IGZyb20gSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIHVuZGVyIElubGluZUxldmVsQm94CjIuIFR1cm4gYm90aCBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGFuZCBJbmxpbmVMZXZlbEJveCdzIG1fYXNjZW50
L21fZGVzY2VudCBpbnRvIGEgQXNjZW50QW5kRGVzY2VudAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudDo6aGVpZ2h0IGNvbnN0KToK
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6Om9wZXJh
dG9yPT0gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6YXNjZW50IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmRlc2NlbnQgY29uc3QpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjphc2NlbnQgY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjpkZXNj
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5k
czo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91
dEJvdW5kczo6b3BlcmF0b3I9PSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpzZXRBc2NlbnRBbmREZXNjZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxC
b3g6OnNldExheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHM6OkxheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxl
dmVsQm94OjpzZXRBc2NlbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0
Ojphc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tG
b250cyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRC
b3VuZHNGb3JJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9y
TGluZUJveENvbnRhaW5JZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZSk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5IGNvbnN0KToKKCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OmhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OnJvdW5kIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNh
bEhlaWdodEFuZEFsaWduIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2Fs
QWxpZ25lcjo6c2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0
ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBj
b25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZCBjb25zdCk6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVMZXZlbEJveC5oICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKy0tLS0tCiAu
Li4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCAgICAgICAgICAgfCA1MyArKysrKysr
Ky0tLS0tLS0tLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmggICAgICAgICAg
ICAgfCAgMyArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCAg
IHwgIDggKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCAgICAg
fCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAppbmRleCA4Y2YwY2U3MTc2NDIuLmI5
MWNkZmRmMzdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC00NywxNyAr
NDcsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVMaW5lQnJl
YWtCb3goY29uc3QgQm94JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KTsKICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlR2VuZXJpY0lubGlu
ZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCk7CiAKLSAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXNjZW50OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBk
ZXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW50OyB9Ci0gICAgLy8gU2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKLSAgICBzdHJ1Y3QgTGF5
b3V0Qm91bmRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
YXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50
ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQotCisgICAgc3RydWN0IEFzY2VudEFuZERl
c2NlbnQgewogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAgfTsKICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OworCisgICAgICAgIElubGluZUxheW91dFVu
aXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXNjZW50QW5kRGVzY2VudCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGFzY2VudCA9PSBvdGhlci5hc2NlbnQgJiYgZGVzY2VudCA9PSBvdGhlci5kZXNjZW50OyB9
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAg
ICAgIHZvaWQgcm91bmQoKTsKICAgICB9OwotICAgIExheW91dEJvdW5kcyBsYXlvdXRCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dEJvdW5kczsgfQorICAgIElubGluZUxheW91dFVuaXQg
YXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9hc2NlbnRBbmREZXNjZW50LmFzY2VudDsgfQorICAg
IElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVz
Y2VudC5kZXNjZW50OyB9CisgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5s
aW5lLTMvI2xheW91dC1ib3VuZHMKKyAgICBBc2NlbnRBbmREZXNjZW50IGxheW91dEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm91bmRzOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnQo
KTsKQEAgLTEzNSw5ICsxMzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWln
aHQocm91bmRUb0ludChsb2dpY2FsSGVpZ2h0KSk7IH0KICAgICB2b2lkIHNldExvZ2ljYWxUb3Ao
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2lj
YWxUb3AgPj0gMCA/IHJvdW5kVG9JbnQobG9naWNhbFRvcCkgOiAtcm91bmRUb0ludCgtbG9naWNh
bFRvcCkpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0KLSAgICB2b2lk
IHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkgeyBtX2FzY2VudCA9IHJvdW5kVG9J
bnQoYXNjZW50KTsgfQotICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpIHsgbV9kZXNjZW50ID0gcm91bmRUb0ludChkZXNjZW50KTsgfQotICAgIHZvaWQgc2V0TGF5
b3V0Qm91bmRzKGNvbnN0IExheW91dEJvdW5kcyYgbGF5b3V0Qm91bmRzKSB7IG1fbGF5b3V0Qm91
bmRzID0geyBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmFzY2VudCkp
LCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmRlc2NlbnQpKSB9OyB9
CisgICAgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5k
RGVzY2VudCkgeyBtX2FzY2VudEFuZERlc2NlbnQgPSBhc2NlbnRBbmREZXNjZW50OyB9CisgICAg
dm9pZCBzZXRMYXlvdXRCb3VuZHMoY29uc3QgQXNjZW50QW5kRGVzY2VudCYgbGF5b3V0Qm91bmRz
KSB7IG1fbGF5b3V0Qm91bmRzID0gbGF5b3V0Qm91bmRzOyB9CiAgICAgdm9pZCBzZXRJbmxpbmVC
b3hDb250ZW50T2Zmc2V0Rm9yTGVhZGluZ1RyaW0oSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsg
bV9pbmxpbmVCb3hDb250ZW50T2Zmc2V0Rm9yTGVhZGluZ1RyaW0gPSBvZmZzZXQ7IH0KIAogICAg
IHZvaWQgc2V0SXNGaXJzdEJveCgpIHsgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94ID0gdHJ1ZTsg
fQpAQCAtMTQ3LDEwICsxNDksOSBAQCBwcml2YXRlOgogICAgIENoZWNrZWRSZWY8Y29uc3QgQm94
PiBtX2xheW91dEJveDsKICAgICAvLyBUaGlzIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBtYXJnaW4g
YW5kIGJvcmRlciBib3hlcy4gSW5saW5lIGxldmVsIGJveGVzIGFyZSB2ZXJ0aWNhbGx5IGFsaWdu
ZWQgdXNpbmcgdGhlaXIgbWFyZ2luIGJveGVzLgogICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVj
dDsKLSAgICBMYXlvdXRCb3VuZHMgbV9sYXlvdXRCb3VuZHM7CisgICAgQXNjZW50QW5kRGVzY2Vu
dCBtX2xheW91dEJvdW5kczsKKyAgICBBc2NlbnRBbmREZXNjZW50IG1fYXNjZW50QW5kRGVzY2Vu
dDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG1faW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRp
bmdUcmltIHsgMC5mIH07Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IG1fZGVzY2VudDsKICAgICBib29sIG1f
aGFzQ29udGVudCB7IGZhbHNlIH07CiAgICAgLy8gVGhlc2UgYml0cyBhcmUgYWJvdXQgd2hldGhl
ciB0aGlzIGlubGluZSBsZXZlbCBib3ggaXMgdGhlIGZpcnN0L2xhc3QgZ2VuZXJhdGVkIGJveCBv
ZiB0aGUgYXNzb2NpYXRlZCBMYXlvdXQ6OkJveAogICAgIC8vIChlLmcuIGFsd2F5cyB0cnVlIGZv
ciBhdG9taWMgaW5saW5lIGxldmVsIGJveGVzLCBidXQgaW5saW5lIGJveGVzIHNwYW5uaW5nIG92
ZXIgbXVsdGlwbGUgbGluZXMgY2FuIHByb2R1Y2Ugc2VwYXJhdGUgZmlyc3QvbGFzdCBib3hlcyku
CkBAIC0yODcsNiArMjg4LDEyIEBAIGlubGluZSBib29sIElubGluZUxldmVsQm94OjpsaW5lQm94
Q29udGFpbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSB2b2lkIElubGlu
ZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCgpCit7CisgICAgYXNjZW50ID0gZmxv
b3JmKGFzY2VudCk7CisgICAgZGVzY2VudCA9IGNlaWxmKGRlc2NlbnQpOworfQorCiB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCA3Njlm
ZjRmNTJhNjEuLjU2MDI5NDBmMTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3hCdWlsZGVyLmNwcApAQCAtOTAsMTYgKzkwLDcgQEAgVGV4dFV0aWw6OkZhbGxiYWNrRm9u
dExpc3QgTGluZUJveEJ1aWxkZXI6OmNvbGxlY3RGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxl
dmUKICAgICByZXR1cm4gZmFsbGJhY2tGb250czsKIH0KIAotc3RydWN0IEFzY2VudEFuZERlc2Nl
bnQgewotICAgIElubGluZUxheW91dFVuaXQgYXNjZW50IHsgMCB9OwotICAgIElubGluZUxheW91
dFVuaXQgZGVzY2VudCB7IDAgfTsKLQotICAgIElubGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cy4KLSAgICAvLyBXZSBuZWVkIGZsb29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRl
Z3JhbCBwb3NpdGlvbmluZy4KLSAgICBBc2NlbnRBbmREZXNjZW50IHJvdW5kKCkgY29uc3QgeyBy
ZXR1cm4geyBmbG9vcmYoYXNjZW50KSwgY2VpbGYoZGVzY2VudCkgfTsgfQotfTsKLXN0YXRpYyBB
c2NlbnRBbmREZXNjZW50IHByaW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChjb25zdCBJbmxp
bmVMZXZlbEJveCYgaW5saW5lQm94LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lID0gQWxwaGFi
ZXRpY0Jhc2VsaW5lKQorc3RhdGljIElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHBy
aW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5l
Qm94LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lID0gQWxwaGFiZXRpY0Jhc2VsaW5lKQogewog
ICAgIEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9udE1ldHJp
Y3MgPSBpbmxpbmVCb3gucHJpbWFyeW1ldHJpY3NPZlByaW1hcnlGb250KCk7CkBAIC0xMTYsNyAr
MTA3LDcgQEAgc3RhdGljIGJvb2wgaXNUZXh0RWRnZUxlYWRpbmcoY29uc3QgSW5saW5lTGV2ZWxC
b3gmIGlubGluZUJveCkKICAgICByZXR1cm4gdGV4dEVkZ2Uub3ZlciA9PSBUZXh0RWRnZVR5cGU6
OkxlYWRpbmc7CiB9CiAKLXN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2NlbnRX
aXRoVGV4dEVkZ2VGb3JJbmxpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwg
Y29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5l
KQorc3RhdGljIElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2Nl
bnRXaXRoVGV4dEVkZ2VGb3JJbmxpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJv
eCwgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2Vs
aW5lKQogewogICAgIEFTU0VSVChpbmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKQEAgLTE2Myw3
ICsxNTQsNyBAQCBzdGF0aWMgQXNjZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50V2l0aFRl
eHRFZGdlRm9ySW5saW5lQm94KGNvbnN0IElubGluZUxldgogICAgIHJldHVybiB7IGFzY2VudCgp
LCBkZXNjZW50KCkgfTsKIH0KIAotQXNjZW50QW5kRGVzY2VudCBMaW5lQm94QnVpbGRlcjo6ZW5j
bG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxldmVsQm94
JiBpbmxpbmVCb3gsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0Zv
bnRzRm9yQ29udGVudCwgRm9udEJhc2VsaW5lIGZvbnRCYXNlbGluZSkgY29uc3QKK0lubGluZUxl
dmVsQm94OjpBc2NlbnRBbmREZXNjZW50IExpbmVCb3hCdWlsZGVyOjplbmNsb3NpbmdBc2NlbnRE
ZXNjZW50V2l0aEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwg
Y29uc3QgVGV4dFV0aWw6OkZhbGxiYWNrRm9udExpc3QmIGZhbGxiYWNrRm9udHNGb3JDb250ZW50
LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lKSBjb25zdAogewogICAgIEFTU0VSVCghZmFsbGJh
Y2tGb250c0ZvckNvbnRlbnQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5s
aW5lQm94KCkpOwpAQCAtMjM1LDE1ICsyMjYsMTYgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0
TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIEZvbnQK
IAogdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2
ZWxCb3goY29uc3QgTGluZUJveCYgbGluZUJveCwgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVs
Qm94KSBjb25zdAogewotICAgIGF1dG8gc2V0QXNjZW50QW5kRGVzY2VudCA9IFsmXSAoYXV0byBh
c2NlbnRBbmREZXNjZW50LCBib29sIGFwcGx5TGVnYWN5Um91bmRpbmcgPSB0cnVlKSB7Ci0gICAg
ICAgIGF1dG8gYWRqdXN0ZWRBc2NlbnRBbmREZXNjZW50ID0gYXBwbHlMZWdhY3lSb3VuZGluZyA/
IGFzY2VudEFuZERlc2NlbnQucm91bmQoKSA6IGFzY2VudEFuZERlc2NlbnQ7Ci0gICAgICAgIGlu
bGluZUxldmVsQm94LnNldEFzY2VudChhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuYXNjZW50KTsK
LSAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0RGVzY2VudChhZGp1c3RlZEFzY2VudEFuZERlc2Nl
bnQuZGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyh7IGFk
anVzdGVkQXNjZW50QW5kRGVzY2VudC5hc2NlbnQsIGFkanVzdGVkQXNjZW50QW5kRGVzY2VudC5k
ZXNjZW50IH0pOworICAgIGF1dG8gc2V0VmVydGljYWxQcm9wZXJ0aWVzID0gWyZdIChJbmxpbmVM
ZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50LCBib29sIGFwcGx5TGVn
YWN5Um91bmRpbmcgPSB0cnVlKSB7CisgICAgICAgIGlmIChhcHBseUxlZ2FjeVJvdW5kaW5nKQor
ICAgICAgICAgICAgYXNjZW50QW5kRGVzY2VudC5yb3VuZCgpOworICAgICAgICBpbmxpbmVMZXZl
bEJveC5zZXRBc2NlbnRBbmREZXNjZW50KGFzY2VudEFuZERlc2NlbnQpOworICAgICAgICBpbmxp
bmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoYXNjZW50QW5kRGVzY2VudCk7CisgICAgICAgIGlu
bGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQoYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7
CiAgICAgfTsKIAogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpKSB7Ci0gICAg
ICAgIGF1dG8gYXNjZW50QW5kRGVzY2VudCA9IFsmXSgpIC0+IEFzY2VudEFuZERlc2NlbnQgewor
ICAgICAgICBhdXRvIGFzY2VudEFuZERlc2NlbnQgPSBbJl0oKSAtPiBJbmxpbmVMZXZlbEJveDo6
QXNjZW50QW5kRGVzY2VudCB7CiAgICAgICAgICAgICBhdXRvIGxlYWRpbmdUcmltID0gaW5saW5l
TGV2ZWxCb3gubGVhZGluZ1RyaW0oKTsKICAgICAgICAgICAgIGF1dG8gZm9udEJhc2VsaW5lID0g
bGluZUJveC5iYXNlbGluZVR5cGUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5p
c1Jvb3RJbmxpbmVCb3goKSB8fCBsZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Tm9ybWFsKQpA
QCAtMjU2LDggKzI0OCw4IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVy
dGllc0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgICAgICBy
ZXR1cm4geyBhc2NlbnQsIGRlc2NlbnQgfTsKICAgICAgICAgfSgpOwogCi0gICAgICAgIHNldEFz
Y2VudEFuZERlc2NlbnQoYXNjZW50QW5kRGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94
LnNldExvZ2ljYWxIZWlnaHQoYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNl
dFZlcnRpY2FsUHJvcGVydGllcyhhc2NlbnRBbmREZXNjZW50KTsKKyAgICAgICAgLy8gT3ZlcnJp
ZGUgZGVmYXVsdCBsYXlvdXQgYm91bmRzLgogICAgICAgICBzZXRMYXlvdXRCb3VuZHNGb3JJbmxp
bmVCb3goaW5saW5lTGV2ZWxCb3gsIGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpOwogCiAgICAgICAg
IC8vIFdpdGggbGVhZGluZy10cmltLCB0aGUgaW5saW5lIGJveCB0b3AgaXMgbm90IGFsd2F5cyB3
aGVyZSB0aGUgY29udGVudCBzdGFydHMuCkBAIC0yNjcsOCArMjU5LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3goY29uc3QgTGlu
ZUJveCYgbGluZUIKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94
KCkpIHsKICAgICAgICAgYXV0byBwYXJlbnRBc2NlbnRBbmREZXNjZW50ID0gcHJpbWFyeUZvbnRN
ZXRyaWNzRm9ySW5saW5lQm94KGxpbmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94
KSwgbGluZUJveC5iYXNlbGluZVR5cGUoKSk7Ci0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQo
cGFyZW50QXNjZW50QW5kRGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2lj
YWxIZWlnaHQocGFyZW50QXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNldFZl
cnRpY2FsUHJvcGVydGllcyhwYXJlbnRBc2NlbnRBbmREZXNjZW50KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNMaXN0TWFya2VyKCkpIHsKQEAgLTI3
NywxNSArMjY4LDE1IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGll
c0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgIGF1dG8mIGxp
c3RNYXJrZXJCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBtYXJnaW5Cb3hIZWlnaHQgPSBsaXN0TWFya2VyQm94
R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCk7CiAKLSAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0
TG9naWNhbEhlaWdodChtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICBpZiAobGluZUJveC5iYXNl
bGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5lKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHJlbHkgb24gdGhlIGludGVncmF0aW9uIGJhc2VsaW5lLgotICAgICAgICAg
ICAgc2V0QXNjZW50QW5kRGVzY2VudChwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gobGlu
ZUJveC5wYXJlbnRJbmxpbmVCb3goaW5saW5lTGV2ZWxCb3gpLCBsaW5lQm94LmJhc2VsaW5lVHlw
ZSgpKSk7CisgICAgICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMocHJpbWFyeUZvbnRNZXRy
aWNzRm9ySW5saW5lQm94KGxpbmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwg
bGluZUJveC5iYXNlbGluZVR5cGUoKSkpOworICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0
TG9naWNhbEhlaWdodChtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChhdXRvIGFzY2VudCA9IGRvd25jYXN0PEVsZW1lbnRCb3g+KGxh
eW91dEJveCkuYmFzZWxpbmVGb3JJbnRlZ3JhdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHNl
dEFzY2VudEFuZERlc2NlbnQoQXNjZW50QW5kRGVzY2VudCB7ICphc2NlbnQsIG1hcmdpbkJveEhl
aWdodCAtICphc2NlbnQgfSk7Ci0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoQXNjZW50QW5k
RGVzY2VudCB7IG1hcmdpbkJveEhlaWdodCwgeyB9IH0pOworICAgICAgICAgICAgcmV0dXJuIHNl
dFZlcnRpY2FsUHJvcGVydGllcyh7ICphc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtICphc2NlbnQg
fSk7CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyh7IG1hcmdpbkJveEhlaWdodCwgeyB9
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0
b21pY0lubGluZUxldmVsQm94KCkpIHsKQEAgLTMxMCw4ICszMDEsNyBAQCB2b2lkIExpbmVCb3hC
dWlsZGVyOjpzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5l
Qm94JiBsaW5lQgogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJveEhl
aWdodDsKICAgICAgICAgfSgpOwotICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFu
ZERlc2NlbnQgeyBhc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtIGFzY2VudCB9LCBmYWxzZSk7Ci0g
ICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsK
KyAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0aWVzKHsgYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQg
LSBhc2NlbnQgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNDcyLDcgKzQ2Miw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFk
anVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm94KCkpOwogICAgICAgICAgICAgYXV0byBhc2NlbnQgPSBpbmxpbmVMZXZlbEJv
eC5hc2NlbnQoKSArIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdCZWZv
cmUoKTsKLSAgICAgICAgICAgIGF1dG8gZGVzY2VudCA9IHZhbHVlT3JEZWZhdWx0KGlubGluZUxl
dmVsQm94LmRlc2NlbnQoKSkgKyBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5Cb3JkZXJBbmRQYWRk
aW5nQWZ0ZXIoKTsKKyAgICAgICAgICAgIGF1dG8gZGVzY2VudCA9IGlubGluZUxldmVsQm94LmRl
c2NlbnQoKSArIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdBZnRlcigp
OwogICAgICAgICAgICAgaW5saW5lQm94Qm91bmRzTWFwLnNldCgmaW5saW5lTGV2ZWxCb3gsIFRl
eHRVdGlsOjpFbmNsb3NpbmdBc2NlbnREZXNjZW50IHsgYXNjZW50LCBkZXNjZW50IH0pOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjAzLDggKzU5Myw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFk
anVzdElkZW9ncmFwaGljQmFzZWxpbmVJZkFwcGxpY2FibGUoTGluZUJveCYgbGluZUJveCkKICAg
ICAgICAgICAgIGF1dG8gaW5saW5lTGV2ZWxCb3hIZWlnaHQgPSBpbmxpbmVMZXZlbEJveC5sb2dp
Y2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGlkZW9ncmFwaGljQmFz
ZWxpbmUgPSByb3VuZFRvSW50KGlubGluZUxldmVsQm94SGVpZ2h0IC8gMik7CiAgICAgICAgICAg
ICAvLyBNb3ZlIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBidXQga2VlcCB0aGUgc2FtZSBsb2dpY2Fs
IGhlaWdodC4KLSAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldEFzY2VudChpZGVvZ3JhcGhp
Y0Jhc2VsaW5lKTsKLSAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoaW5saW5l
TGV2ZWxCb3hIZWlnaHQgLSBpZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKKyAgICAgICAgICAgIGlubGlu
ZUxldmVsQm94LnNldEFzY2VudEFuZERlc2NlbnQoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxp
bmVMZXZlbEJveEhlaWdodCAtIGlkZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgICAgICBp
bmxpbmVMZXZlbEJveC5zZXRMYXlvdXRCb3VuZHMoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxp
bmVMZXZlbEJveEhlaWdodCAtIGlkZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgIH0KIApA
QCAtNjQ5LDcgKzYzOCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2Vv
bWV0cnkoTGluZUJveCYgbGluZUJveCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIHJvb3RJbmxp
bmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKICAgICAgICAgICAgIHN3aXRjaCAocm9v
dFN0eWxlLnRleHRFZGdlKCkudW5kZXIpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBl
OjpUZXh0OgotICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5k
cygpLmRlc2NlbnQgLSAqcm9vdElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIHJvb3RJbmxpbmVC
b3guZGVzY2VudCgpOwogICAgICAgICAgICAgY2FzZSBUZXh0RWRnZVR5cGU6OkFscGhhYmV0aWM6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVz
Y2VudDsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpDSktJZGVvZ3JhcGhpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCmluZGV4IGViYjdmNjkzOWNm
Mi4uYTdlN2ZhNWI1NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmgKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCb3g7CiBj
bGFzcyBFbGVtZW50Qm94OwogY2xhc3MgTGF5b3V0U3RhdGU7Ci1zdHJ1Y3QgQXNjZW50QW5kRGVz
Y2VudDsKIAogY2xhc3MgTGluZUJveEJ1aWxkZXIgewogcHVibGljOgpAQCAtNDksNyArNDgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KElubGluZUxl
dmVsQm94JiwgRm9udEJhc2VsaW5lKSBjb25zdDsKICAgICB2b2lkIGFkanVzdElubGluZUJveEhl
aWdodHNGb3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94Jik7CiAgICAgdm9pZCBj
b21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmKSBjb25zdDsKLSAgICBBc2NlbnRBbmREZXNj
ZW50IGVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tGb250cyhjb25zdCBJbmxpbmVM
ZXZlbEJveCYsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0ZvbnRz
Rm9yQ29udGVudCwgRm9udEJhc2VsaW5lKSBjb25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNj
ZW50QW5kRGVzY2VudCBlbmNsb3NpbmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNrRm9udHMoY29u
c3QgSW5saW5lTGV2ZWxCb3gmLCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFs
bGJhY2tGb250c0ZvckNvbnRlbnQsIEZvbnRCYXNlbGluZSkgY29uc3Q7CiAgICAgVGV4dFV0aWw6
OkZhbGxiYWNrRm9udExpc3QgY29sbGVjdEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxC
b3gmIHBhcmVudElubGluZUJveCwgY29uc3QgTGluZTo6UnVuJiwgY29uc3QgUmVuZGVyU3R5bGUm
KTsKIAogICAgIHZvaWQgY29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
CmluZGV4IDBkOGY5MDI5ZWU3Mi4uOWU0ZDdmMTYxMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGlj
YWxBbGlnbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExp
bmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMCiAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dEJvdHRvbTogewogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFs
aWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkg
YW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsK
LSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBhdXRv
IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3Vu
ZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVu
dElubGluZUJveC5kZXNjZW50KCk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94TG9naWNhbEJvdHRvbSAtIGxheW91dEJvdW5kcy5oZWlnaHQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYg
bGluZUIKICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFy
ZW50SW5saW5lQm94LmFzY2VudCgpIC0gbGF5b3V0Qm91bmRzLmFzY2VudDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206Ci0gICAgICAg
ICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5kZXNj
ZW50IC0gKnBhcmVudElubGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBiYXNlbGluZU9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5kZXNjZW50IC0gcGFyZW50SW5s
aW5lQm94LmRlc2NlbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlN1YjoKICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0gLShwYXJlbnRJbmxpbmVCb3guZm9udFNpemUoKSAvIDUgKyAxKTsKQEAgLTM2NCw3ICsz
NjQsNyBAQCB2b2lkIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbihMaW5lQm94JiBsaW5lQgogICAgIHJvb3RJbmxpbmVCb3guc2V0TG9n
aWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiB9CiAKLUlubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5l
Qm94U3VidHJlZShjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxp
bmVMZXZlbEJveGVzLCBzaXplX3QgaW5saW5lQm94SW5kZXgpIGNvbnN0CitJbmxpbmVMZXZlbEJv
eDo6QXNjZW50QW5kRGVzY2VudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNG
b3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9u
Um9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3QKIHsKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vY3Nzd2ctZHJhZnRzL2NzczIvI3Byb3BkZWYtdmVy
dGljYWwtYWxpZ24KICAgICAvLwpAQCAtMzc2LDcgKzM3Niw3IEBAIElubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHMgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5l
Qm94U3ViCiAgICAgLy8gVGhlIHRvcCBvZiB0aGUgYWxpZ25lZCBzdWJ0cmVlIGlzIHRoZSBoaWdo
ZXN0IG9mIHRoZSB0b3BzIG9mIHRoZSBib3hlcyBpbiB0aGUgc3VidHJlZSwgYW5kIHRoZSBib3R0
b20gaXMgYW5hbG9nb3VzLgogICAgIEFTU0VSVChub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxp
bmVCb3hJbmRleF0uaXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5
ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0gICAgYXV0byBlbmNsb3NpbmdMYXlvdXRC
b3VuZHMgPSBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgfTsKKyAgICBhdXRvIGVuY2xv
c2luZ0xheW91dEJvdW5kcyA9IElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgfTsK
ICAgICBhdXRvJiBpbmxpbmVCb3hQYXJlbnQgPSBub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxp
bmVCb3hJbmRleF0ubGF5b3V0Qm94KCkucGFyZW50KCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBpbmxpbmVCb3hJbmRleCArIDE7IGluZGV4IDwgbm9uUm9vdElubGluZUxldmVsQm94ZXMuc2l6
ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGF1dG8mIGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveCA9
IG5vblJvb3RJbmxpbmVMZXZlbEJveGVzW2luZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNh
bEFsaWduZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaAppbmRleCBlYWFlMTJhODk1NjAuLjA0
ODgzMzc5OTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hW
ZXJ0aWNhbEFsaWduZXIuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29t
cHV0ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKExpbmVCb3gmLCBjb25zdCBMaW5lQm94
QWxpZ25tZW50Q29udGVudCYpIGNvbnN0OwogICAgIHZvaWQgYWxpZ25JbmxpbmVMZXZlbEJveGVz
KExpbmVCb3gmLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVCb3hMb2dpY2FsSGVpZ2h0KSBjb25zdDsK
ICAgICBJbmxpbmVMYXlvdXRVbml0IGFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94
JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94SGVpZ2h0KSBjb25zdDsKLSAgICBJbmxpbmVMZXZl
bEJveDo6TGF5b3V0Qm91bmRzIGxheW91dEJvdW5kc0ZvcklubGluZUJveFN1YnRyZWUoY29uc3Qg
TGluZUJveDo6SW5saW5lTGV2ZWxCb3hMaXN0JiBub25Sb290SW5saW5lTGV2ZWxCb3hlcywgc2l6
ZV90IGlubGluZUJveEluZGV4KSBjb25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5k
RGVzY2VudCBsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6Oklu
bGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVC
b3hJbmRleCkgY29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZv
cm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5OyB9CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465897</attachid>
            <date>2023-04-13 13:40:18 -0700</date>
            <delta_ts>2023-04-13 18:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255387-20230413134017.patch</filename>
            <type>text/plain</type>
            <size>21689</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1MGI0YWVmMjk3ZTMzOWY1OWExMjYzZTgyMGFlNWY0Y2U3NGI4ZTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMTIgQXByIDIwMjMgMjE6MTU6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGlzIGEgZ2xvcmlmaWVkCiBBc2NlbnRBbmREZXNj
ZW50IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzODcKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKMS4gTW92ZSBBc2NlbnRBbmREZXNjZW50IGZyb20gSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIHVuZGVyIElubGluZUxldmVsQm94CjIuIFR1cm4gYm90aCBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGFuZCBJbmxpbmVMZXZlbEJveCdzIG1fYXNjZW50
L21fZGVzY2VudCBpbnRvIGEgQXNjZW50QW5kRGVzY2VudAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudDo6aGVpZ2h0IGNvbnN0KToK
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6Om9wZXJh
dG9yPT0gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6YXNjZW50IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmRlc2NlbnQgY29uc3QpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjphc2NlbnQgY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjpkZXNj
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5k
czo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91
dEJvdW5kczo6b3BlcmF0b3I9PSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpzZXRBc2NlbnRBbmREZXNjZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxC
b3g6OnNldExheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHM6OkxheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxl
dmVsQm94OjpzZXRBc2NlbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0
Ojphc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tG
b250cyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRC
b3VuZHNGb3JJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9y
TGluZUJveENvbnRhaW5JZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZSk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5IGNvbnN0KToKKCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OmhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OnJvdW5kIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNh
bEhlaWdodEFuZEFsaWduIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2Fs
QWxpZ25lcjo6c2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0
ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBj
b25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZCBjb25zdCk6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVMZXZlbEJveC5oICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKy0tLS0tCiAu
Li4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCAgICAgICAgICAgfCA1MyArKysrKysr
Ky0tLS0tLS0tLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmggICAgICAgICAg
ICAgfCAgMyArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCAg
IHwgIDggKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCAgICAg
fCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAppbmRleCA4Y2YwY2U3MTc2NDIuLmRh
Zjk3Y2M0MGY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC00NywxNyAr
NDcsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVMaW5lQnJl
YWtCb3goY29uc3QgQm94JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KTsKICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlR2VuZXJpY0lubGlu
ZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCk7CiAKLSAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXNjZW50OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBk
ZXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW50OyB9Ci0gICAgLy8gU2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKLSAgICBzdHJ1Y3QgTGF5
b3V0Qm91bmRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
YXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50
ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQotCisgICAgc3RydWN0IEFzY2VudEFuZERl
c2NlbnQgewogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAgfTsKICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OworCisgICAgICAgIElubGluZUxheW91dFVu
aXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXNjZW50QW5kRGVzY2VudCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGFzY2VudCA9PSBvdGhlci5hc2NlbnQgJiYgZGVzY2VudCA9PSBvdGhlci5kZXNjZW50OyB9
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAg
ICAgIHZvaWQgcm91bmQoKTsKICAgICB9OwotICAgIExheW91dEJvdW5kcyBsYXlvdXRCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dEJvdW5kczsgfQorICAgIElubGluZUxheW91dFVuaXQg
YXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9hc2NlbnRBbmREZXNjZW50LmFzY2VudDsgfQorICAg
IElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVz
Y2VudC5kZXNjZW50OyB9CisgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5s
aW5lLTMvI2xheW91dC1ib3VuZHMKKyAgICBBc2NlbnRBbmREZXNjZW50IGxheW91dEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm91bmRzOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnQo
KTsKQEAgLTEzNSw5ICsxMzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWln
aHQocm91bmRUb0ludChsb2dpY2FsSGVpZ2h0KSk7IH0KICAgICB2b2lkIHNldExvZ2ljYWxUb3Ao
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2lj
YWxUb3AgPj0gMCA/IHJvdW5kVG9JbnQobG9naWNhbFRvcCkgOiAtcm91bmRUb0ludCgtbG9naWNh
bFRvcCkpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0KLSAgICB2b2lk
IHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkgeyBtX2FzY2VudCA9IHJvdW5kVG9J
bnQoYXNjZW50KTsgfQotICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpIHsgbV9kZXNjZW50ID0gcm91bmRUb0ludChkZXNjZW50KTsgfQotICAgIHZvaWQgc2V0TGF5
b3V0Qm91bmRzKGNvbnN0IExheW91dEJvdW5kcyYgbGF5b3V0Qm91bmRzKSB7IG1fbGF5b3V0Qm91
bmRzID0geyBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmFzY2VudCkp
LCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmRlc2NlbnQpKSB9OyB9
CisgICAgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5k
RGVzY2VudCkgeyBtX2FzY2VudEFuZERlc2NlbnQgPSBhc2NlbnRBbmREZXNjZW50OyB9CisgICAg
dm9pZCBzZXRMYXlvdXRCb3VuZHMoY29uc3QgQXNjZW50QW5kRGVzY2VudCYgbGF5b3V0Qm91bmRz
KSB7IG1fbGF5b3V0Qm91bmRzID0geyBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0
Qm91bmRzLmFzY2VudCkpLCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRz
LmRlc2NlbnQpKSB9OyB9CiAgICAgdm9pZCBzZXRJbmxpbmVCb3hDb250ZW50T2Zmc2V0Rm9yTGVh
ZGluZ1RyaW0oSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsgbV9pbmxpbmVCb3hDb250ZW50T2Zm
c2V0Rm9yTGVhZGluZ1RyaW0gPSBvZmZzZXQ7IH0KIAogICAgIHZvaWQgc2V0SXNGaXJzdEJveCgp
IHsgbV9pc0ZpcnN0V2l0aGluTGF5b3V0Qm94ID0gdHJ1ZTsgfQpAQCAtMTQ3LDEwICsxNDksOSBA
QCBwcml2YXRlOgogICAgIENoZWNrZWRSZWY8Y29uc3QgQm94PiBtX2xheW91dEJveDsKICAgICAv
LyBUaGlzIGlzIHRoZSBjb21iaW5hdGlvbiBvZiBtYXJnaW4gYW5kIGJvcmRlciBib3hlcy4gSW5s
aW5lIGxldmVsIGJveGVzIGFyZSB2ZXJ0aWNhbGx5IGFsaWduZWQgdXNpbmcgdGhlaXIgbWFyZ2lu
IGJveGVzLgogICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKLSAgICBMYXlvdXRCb3VuZHMg
bV9sYXlvdXRCb3VuZHM7CisgICAgQXNjZW50QW5kRGVzY2VudCBtX2xheW91dEJvdW5kczsKKyAg
ICBBc2NlbnRBbmREZXNjZW50IG1fYXNjZW50QW5kRGVzY2VudDsKICAgICBJbmxpbmVMYXlvdXRV
bml0IG1faW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRpbmdUcmltIHsgMC5mIH07Ci0gICAg
SW5saW5lTGF5b3V0VW5pdCBtX2FzY2VudCB7IDAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IG1fZGVzY2VudDsKICAgICBib29sIG1faGFzQ29udGVudCB7IGZhbHNlIH07
CiAgICAgLy8gVGhlc2UgYml0cyBhcmUgYWJvdXQgd2hldGhlciB0aGlzIGlubGluZSBsZXZlbCBi
b3ggaXMgdGhlIGZpcnN0L2xhc3QgZ2VuZXJhdGVkIGJveCBvZiB0aGUgYXNzb2NpYXRlZCBMYXlv
dXQ6OkJveAogICAgIC8vIChlLmcuIGFsd2F5cyB0cnVlIGZvciBhdG9taWMgaW5saW5lIGxldmVs
IGJveGVzLCBidXQgaW5saW5lIGJveGVzIHNwYW5uaW5nIG92ZXIgbXVsdGlwbGUgbGluZXMgY2Fu
IHByb2R1Y2Ugc2VwYXJhdGUgZmlyc3QvbGFzdCBib3hlcykuCkBAIC0yODcsNiArMjg4LDEyIEBA
IGlubGluZSBib29sIElubGluZUxldmVsQm94OjpsaW5lQm94Q29udGFpbigpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSB2b2lkIElubGluZUxldmVsQm94OjpBc2NlbnRBbmRE
ZXNjZW50Ojpyb3VuZCgpCit7CisgICAgYXNjZW50ID0gZmxvb3JmKGFzY2VudCk7CisgICAgZGVz
Y2VudCA9IGNlaWxmKGRlc2NlbnQpOworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCA3NjlmZjRmNTJhNjEuLjU2MDI5NDBmMTdl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAt
OTAsMTYgKzkwLDcgQEAgVGV4dFV0aWw6OkZhbGxiYWNrRm9udExpc3QgTGluZUJveEJ1aWxkZXI6
OmNvbGxlY3RGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxldmUKICAgICByZXR1cm4gZmFsbGJh
Y2tGb250czsKIH0KIAotc3RydWN0IEFzY2VudEFuZERlc2NlbnQgewotICAgIElubGluZUxheW91
dFVuaXQgYXNjZW50IHsgMCB9OwotICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCB7IDAgfTsK
LQotICAgIElubGluZUxheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsg
ZGVzY2VudDsgfQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KLSAgICAvLyBXZSBuZWVkIGZs
b29yL2NlaWwgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBwb3NpdGlvbmluZy4KLSAg
ICBBc2NlbnRBbmREZXNjZW50IHJvdW5kKCkgY29uc3QgeyByZXR1cm4geyBmbG9vcmYoYXNjZW50
KSwgY2VpbGYoZGVzY2VudCkgfTsgfQotfTsKLXN0YXRpYyBBc2NlbnRBbmREZXNjZW50IHByaW1h
cnlGb250TWV0cmljc0ZvcklubGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94
LCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lID0gQWxwaGFiZXRpY0Jhc2VsaW5lKQorc3RhdGlj
IElubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHByaW1hcnlGb250TWV0cmljc0Zvcklu
bGluZUJveChjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBGb250QmFzZWxpbmUgZm9u
dEJhc2VsaW5lID0gQWxwaGFiZXRpY0Jhc2VsaW5lKQogewogICAgIEFTU0VSVChpbmxpbmVCb3gu
aXNJbmxpbmVCb3goKSk7CiAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVCb3gucHJpbWFy
eW1ldHJpY3NPZlByaW1hcnlGb250KCk7CkBAIC0xMTYsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wg
aXNUZXh0RWRnZUxlYWRpbmcoY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCkKICAgICBy
ZXR1cm4gdGV4dEVkZ2Uub3ZlciA9PSBUZXh0RWRnZVR5cGU6OkxlYWRpbmc7CiB9CiAKLXN0YXRp
YyBBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2NlbnRXaXRoVGV4dEVkZ2VGb3JJbmxpbmVC
b3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lKQorc3RhdGljIElubGluZUxldmVs
Qm94OjpBc2NlbnRBbmREZXNjZW50IGFzY2VudEFuZERlc2NlbnRXaXRoVGV4dEVkZ2VGb3JJbmxp
bmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzLCBGb250QmFzZWxpbmUgZm9udEJhc2VsaW5lKQogewogICAgIEFTU0VSVChp
bmxpbmVCb3guaXNJbmxpbmVCb3goKSk7CiAKQEAgLTE2Myw3ICsxNTQsNyBAQCBzdGF0aWMgQXNj
ZW50QW5kRGVzY2VudCBhc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KGNv
bnN0IElubGluZUxldgogICAgIHJldHVybiB7IGFzY2VudCgpLCBkZXNjZW50KCkgfTsKIH0KIAot
QXNjZW50QW5kRGVzY2VudCBMaW5lQm94QnVpbGRlcjo6ZW5jbG9zaW5nQXNjZW50RGVzY2VudFdp
dGhGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIGNvbnN0IFRl
eHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0ZvbnRzRm9yQ29udGVudCwgRm9udEJh
c2VsaW5lIGZvbnRCYXNlbGluZSkgY29uc3QKK0lubGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNj
ZW50IExpbmVCb3hCdWlsZGVyOjplbmNsb3NpbmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNrRm9u
dHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgVGV4dFV0aWw6OkZhbGxi
YWNrRm9udExpc3QmIGZhbGxiYWNrRm9udHNGb3JDb250ZW50LCBGb250QmFzZWxpbmUgZm9udEJh
c2VsaW5lKSBjb25zdAogewogICAgIEFTU0VSVCghZmFsbGJhY2tGb250c0ZvckNvbnRlbnQuaXNF
bXB0eSgpKTsKICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5saW5lQm94KCkpOwpAQCAtMjM1LDE1
ICsyMjYsMTYgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0TGF5b3V0Qm91bmRzRm9ySW5saW5l
Qm94KElubGluZUxldmVsQm94JiBpbmxpbmVCb3gsIEZvbnQKIAogdm9pZCBMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3goY29uc3QgTGluZUJveCYg
bGluZUJveCwgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVsQm94KSBjb25zdAogewotICAgIGF1
dG8gc2V0QXNjZW50QW5kRGVzY2VudCA9IFsmXSAoYXV0byBhc2NlbnRBbmREZXNjZW50LCBib29s
IGFwcGx5TGVnYWN5Um91bmRpbmcgPSB0cnVlKSB7Ci0gICAgICAgIGF1dG8gYWRqdXN0ZWRBc2Nl
bnRBbmREZXNjZW50ID0gYXBwbHlMZWdhY3lSb3VuZGluZyA/IGFzY2VudEFuZERlc2NlbnQucm91
bmQoKSA6IGFzY2VudEFuZERlc2NlbnQ7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldEFzY2Vu
dChhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuYXNjZW50KTsKLSAgICAgICAgaW5saW5lTGV2ZWxC
b3guc2V0RGVzY2VudChhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuZGVzY2VudCk7Ci0gICAgICAg
IGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyh7IGFkanVzdGVkQXNjZW50QW5kRGVzY2Vu
dC5hc2NlbnQsIGFkanVzdGVkQXNjZW50QW5kRGVzY2VudC5kZXNjZW50IH0pOworICAgIGF1dG8g
c2V0VmVydGljYWxQcm9wZXJ0aWVzID0gWyZdIChJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVz
Y2VudCBhc2NlbnRBbmREZXNjZW50LCBib29sIGFwcGx5TGVnYWN5Um91bmRpbmcgPSB0cnVlKSB7
CisgICAgICAgIGlmIChhcHBseUxlZ2FjeVJvdW5kaW5nKQorICAgICAgICAgICAgYXNjZW50QW5k
RGVzY2VudC5yb3VuZCgpOworICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRBc2NlbnRBbmREZXNj
ZW50KGFzY2VudEFuZERlc2NlbnQpOworICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMYXlvdXRC
b3VuZHMoYXNjZW50QW5kRGVzY2VudCk7CisgICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2lj
YWxIZWlnaHQoYXNjZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CiAgICAgfTsKIAogICAgIGlmIChp
bmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpKSB7Ci0gICAgICAgIGF1dG8gYXNjZW50QW5kRGVz
Y2VudCA9IFsmXSgpIC0+IEFzY2VudEFuZERlc2NlbnQgeworICAgICAgICBhdXRvIGFzY2VudEFu
ZERlc2NlbnQgPSBbJl0oKSAtPiBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCB7CiAg
ICAgICAgICAgICBhdXRvIGxlYWRpbmdUcmltID0gaW5saW5lTGV2ZWxCb3gubGVhZGluZ1RyaW0o
KTsKICAgICAgICAgICAgIGF1dG8gZm9udEJhc2VsaW5lID0gbGluZUJveC5iYXNlbGluZVR5cGUo
KTsKICAgICAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc1Jvb3RJbmxpbmVCb3goKSB8fCBs
ZWFkaW5nVHJpbSA9PSBMZWFkaW5nVHJpbTo6Tm9ybWFsKQpAQCAtMjU2LDggKzI0OCw4IEBAIHZv
aWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94
KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgICAgICByZXR1cm4geyBhc2NlbnQsIGRlc2Nl
bnQgfTsKICAgICAgICAgfSgpOwogCi0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoYXNjZW50
QW5kRGVzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQoYXNj
ZW50QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyhh
c2NlbnRBbmREZXNjZW50KTsKKyAgICAgICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBsYXlvdXQgYm91
bmRzLgogICAgICAgICBzZXRMYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3goaW5saW5lTGV2ZWxCb3gs
IGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpOwogCiAgICAgICAgIC8vIFdpdGggbGVhZGluZy10cmlt
LCB0aGUgaW5saW5lIGJveCB0b3AgaXMgbm90IGFsd2F5cyB3aGVyZSB0aGUgY29udGVudCBzdGFy
dHMuCkBAIC0yNjcsOCArMjU5LDcgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxQ
cm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3goY29uc3QgTGluZUJveCYgbGluZUIKICAgICB9CiAg
ICAgaWYgKGlubGluZUxldmVsQm94LmlzTGluZUJyZWFrQm94KCkpIHsKICAgICAgICAgYXV0byBw
YXJlbnRBc2NlbnRBbmREZXNjZW50ID0gcHJpbWFyeUZvbnRNZXRyaWNzRm9ySW5saW5lQm94KGxp
bmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwgbGluZUJveC5iYXNlbGluZVR5
cGUoKSk7Ci0gICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQocGFyZW50QXNjZW50QW5kRGVzY2Vu
dCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQocGFyZW50QXNjZW50
QW5kRGVzY2VudC5oZWlnaHQoKSk7CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyhwYXJl
bnRBc2NlbnRBbmREZXNjZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaW5s
aW5lTGV2ZWxCb3guaXNMaXN0TWFya2VyKCkpIHsKQEAgLTI3NywxNSArMjY4LDE1IEBAIHZvaWQg
TGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGluZUxldmVsQm94KGNv
bnN0IExpbmVCb3gmIGxpbmVCCiAgICAgICAgIGF1dG8mIGxpc3RNYXJrZXJCb3hHZW9tZXRyeSA9
IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAg
YXV0byBtYXJnaW5Cb3hIZWlnaHQgPSBsaXN0TWFya2VyQm94R2VvbWV0cnkubWFyZ2luQm94SGVp
Z2h0KCk7CiAKLSAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChtYXJnaW5C
b3hIZWlnaHQpOwogICAgICAgICBpZiAobGluZUJveC5iYXNlbGluZVR5cGUoKSA9PSBJZGVvZ3Jh
cGhpY0Jhc2VsaW5lKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbHkgb24g
dGhlIGludGVncmF0aW9uIGJhc2VsaW5lLgotICAgICAgICAgICAgc2V0QXNjZW50QW5kRGVzY2Vu
dChwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gobGluZUJveC5wYXJlbnRJbmxpbmVCb3go
aW5saW5lTGV2ZWxCb3gpLCBsaW5lQm94LmJhc2VsaW5lVHlwZSgpKSk7CisgICAgICAgICAgICBz
ZXRWZXJ0aWNhbFByb3BlcnRpZXMocHJpbWFyeUZvbnRNZXRyaWNzRm9ySW5saW5lQm94KGxpbmVC
b3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwgbGluZUJveC5iYXNlbGluZVR5cGUo
KSkpOworICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChtYXJnaW5C
b3hIZWlnaHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChh
dXRvIGFzY2VudCA9IGRvd25jYXN0PEVsZW1lbnRCb3g+KGxheW91dEJveCkuYmFzZWxpbmVGb3JJ
bnRlZ3JhdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHNldEFzY2VudEFuZERlc2NlbnQoQXNj
ZW50QW5kRGVzY2VudCB7ICphc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtICphc2NlbnQgfSk7Ci0g
ICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQoQXNjZW50QW5kRGVzY2VudCB7IG1hcmdpbkJveEhl
aWdodCwgeyB9IH0pOworICAgICAgICAgICAgcmV0dXJuIHNldFZlcnRpY2FsUHJvcGVydGllcyh7
ICphc2NlbnQsIG1hcmdpbkJveEhlaWdodCAtICphc2NlbnQgfSk7CisgICAgICAgIHNldFZlcnRp
Y2FsUHJvcGVydGllcyh7IG1hcmdpbkJveEhlaWdodCwgeyB9IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkp
IHsKQEAgLTMxMCw4ICszMDEsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpzZXRWZXJ0aWNhbFBy
b3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBsaW5lQgogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIG1hcmdpbkJveEhlaWdodDsKICAgICAgICAgfSgpOwot
ICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgeyBhc2NlbnQsIG1h
cmdpbkJveEhlaWdodCAtIGFzY2VudCB9LCBmYWxzZSk7Ci0gICAgICAgIGlubGluZUxldmVsQm94
LnNldExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgc2V0VmVydGljYWxQ
cm9wZXJ0aWVzKHsgYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQgLSBhc2NlbnQgfSwgZmFsc2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDcy
LDcgKzQ2Miw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdElubGluZUJveEhlaWdodHNG
b3JMaW5lQm94Q29udGFpbklmQXBwbGljYWJsZShMaW5lQm94CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkpOwogICAg
ICAgICAgICAgYXV0byBhc2NlbnQgPSBpbmxpbmVMZXZlbEJveC5hc2NlbnQoKSArIGlubGluZUJv
eEdlb21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKLSAgICAgICAgICAgIGF1
dG8gZGVzY2VudCA9IHZhbHVlT3JEZWZhdWx0KGlubGluZUxldmVsQm94LmRlc2NlbnQoKSkgKyBp
bmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5Cb3JkZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKKyAgICAgICAg
ICAgIGF1dG8gZGVzY2VudCA9IGlubGluZUxldmVsQm94LmRlc2NlbnQoKSArIGlubGluZUJveEdl
b21ldHJ5Lm1hcmdpbkJvcmRlckFuZFBhZGRpbmdBZnRlcigpOwogICAgICAgICAgICAgaW5saW5l
Qm94Qm91bmRzTWFwLnNldCgmaW5saW5lTGV2ZWxCb3gsIFRleHRVdGlsOjpFbmNsb3NpbmdBc2Nl
bnREZXNjZW50IHsgYXNjZW50LCBkZXNjZW50IH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtNjAz
LDggKzU5Myw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdElkZW9ncmFwaGljQmFzZWxp
bmVJZkFwcGxpY2FibGUoTGluZUJveCYgbGluZUJveCkKICAgICAgICAgICAgIGF1dG8gaW5saW5l
TGV2ZWxCb3hIZWlnaHQgPSBpbmxpbmVMZXZlbEJveC5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IGlkZW9ncmFwaGljQmFzZWxpbmUgPSByb3VuZFRvSW50KGlu
bGluZUxldmVsQm94SGVpZ2h0IC8gMik7CiAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBiYXNlbGlu
ZSBwb3NpdGlvbiBidXQga2VlcCB0aGUgc2FtZSBsb2dpY2FsIGhlaWdodC4KLSAgICAgICAgICAg
IGlubGluZUxldmVsQm94LnNldEFzY2VudChpZGVvZ3JhcGhpY0Jhc2VsaW5lKTsKLSAgICAgICAg
ICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoaW5saW5lTGV2ZWxCb3hIZWlnaHQgLSBpZGVv
Z3JhcGhpY0Jhc2VsaW5lKTsKKyAgICAgICAgICAgIGlubGluZUxldmVsQm94LnNldEFzY2VudEFu
ZERlc2NlbnQoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxpbmVMZXZlbEJveEhlaWdodCAtIGlk
ZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMYXlv
dXRCb3VuZHMoeyBpZGVvZ3JhcGhpY0Jhc2VsaW5lLCBpbmxpbmVMZXZlbEJveEhlaWdodCAtIGlk
ZW9ncmFwaGljQmFzZWxpbmUgfSk7CiAgICAgICAgIH0KIApAQCAtNjQ5LDcgKzYzOCw3IEBAIHZv
aWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94R2VvbWV0cnkoTGluZUJveCYgbGluZUJv
eCkgY29uc3QKICAgICAgICAgICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94LnJvb3RJ
bmxpbmVCb3goKTsKICAgICAgICAgICAgIHN3aXRjaCAocm9vdFN0eWxlLnRleHRFZGdlKCkudW5k
ZXIpIHsKICAgICAgICAgICAgIGNhc2UgVGV4dEVkZ2VUeXBlOjpUZXh0OgotICAgICAgICAgICAg
ICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmRlc2NlbnQgLSAqcm9vdElu
bGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RJbmxpbmVCb3gu
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIHJvb3RJbmxpbmVCb3guZGVzY2VudCgpOwogICAgICAg
ICAgICAgY2FzZSBUZXh0RWRnZVR5cGU6OkFscGhhYmV0aWM6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudDsKICAgICAgICAgICAgIGNh
c2UgVGV4dEVkZ2VUeXBlOjpDSktJZGVvZ3JhcGhpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94QnVpbGRlci5oCmluZGV4IGViYjdmNjkzOWNmMi4uYTdlN2ZhNWI1NDIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKQEAgLTM2LDcgKzM2LDYg
QEAgbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBCb3g7CiBjbGFzcyBFbGVtZW50Qm94OwogY2xh
c3MgTGF5b3V0U3RhdGU7Ci1zdHJ1Y3QgQXNjZW50QW5kRGVzY2VudDsKIAogY2xhc3MgTGluZUJv
eEJ1aWxkZXIgewogcHVibGljOgpAQCAtNDksNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KElubGluZUxldmVsQm94JiwgRm9udEJhc2VsaW5l
KSBjb25zdDsKICAgICB2b2lkIGFkanVzdElubGluZUJveEhlaWdodHNGb3JMaW5lQm94Q29udGFp
bklmQXBwbGljYWJsZShMaW5lQm94Jik7CiAgICAgdm9pZCBjb21wdXRlTGluZUJveEdlb21ldHJ5
KExpbmVCb3gmKSBjb25zdDsKLSAgICBBc2NlbnRBbmREZXNjZW50IGVuY2xvc2luZ0FzY2VudERl
c2NlbnRXaXRoRmFsbGJhY2tGb250cyhjb25zdCBJbmxpbmVMZXZlbEJveCYsIGNvbnN0IFRleHRV
dGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxsYmFja0ZvbnRzRm9yQ29udGVudCwgRm9udEJhc2Vs
aW5lKSBjb25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBlbmNsb3Np
bmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmLCBj
b25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFsbGJhY2tGb250c0ZvckNvbnRlbnQs
IEZvbnRCYXNlbGluZSkgY29uc3Q7CiAgICAgVGV4dFV0aWw6OkZhbGxiYWNrRm9udExpc3QgY29s
bGVjdEZhbGxiYWNrRm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmIHBhcmVudElubGluZUJveCwg
Y29uc3QgTGluZTo6UnVuJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIHZvaWQgY29uc3Ry
dWN0SW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxB
bGlnbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCmluZGV4IDBkOGY5MDI5ZWU3Mi4u
OWU0ZDdmMTYxMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Qm94VmVydGljYWxBbGlnbmVyLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIExpbmVCb3hWZXJ0aWNh
bEFsaWduZXI6OkxpbmVCb3hBbGlnbm1lbnRDb250ZW50IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6
OmNvbXB1dGVMCiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbTogewogICAg
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWducyB3aXRoIHRoZSBpbmxpbmUg
Ym94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJv
dW5kcyBib3R0b20uCiAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgIGF1dG8gcGFy
ZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5o
ZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsgKnBhcmVudElu
bGluZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2lj
YWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCk7
CiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAt
IGxheW91dEJvdW5kcy5oZWlnaHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0zMTAsNyArMzEwLDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlUm9v
dElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICAgICAgICAgIGJh
c2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmFzY2VudCgp
IC0gbGF5b3V0Qm91bmRzLmFzY2VudDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206Ci0gICAgICAgICAgICBiYXNlbGluZU9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IGxheW91dEJvdW5kcy5kZXNjZW50IC0gKnBhcmVudElubGluZUJv
eC5kZXNjZW50KCk7CisgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZSA9IGxheW91dEJvdW5kcy5kZXNjZW50IC0gcGFyZW50SW5saW5lQm94LmRlc2NlbnQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlN1YjoKICAgICAg
ICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gLShwYXJlbnRJbmxpbmVC
b3guZm9udFNpemUoKSAvIDUgKyAxKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIExpbmVCb3hW
ZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5l
Qm94JiBsaW5lQgogICAgIHJvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94
TG9naWNhbFRvcCk7CiB9CiAKLUlubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZShjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxpbmVMZXZlbEJveGVzLCBzaXplX3Qg
aW5saW5lQm94SW5kZXgpIGNvbnN0CitJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBM
aW5lQm94VmVydGljYWxBbGlnbmVyOjpsYXlvdXRCb3VuZHNGb3JJbmxpbmVCb3hTdWJ0cmVlKGNv
bnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElubGluZUxldmVsQm94ZXMs
IHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3QKIHsKICAgICAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vY3Nzd2ctZHJhZnRzL2NzczIvI3Byb3BkZWYtdmVydGljYWwtYWxpZ24KICAgICAvLwpA
QCAtMzc2LDcgKzM3Niw3IEBAIElubGluZUxldmVsQm94OjpMYXlvdXRCb3VuZHMgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3ViCiAgICAgLy8gVGhlIHRv
cCBvZiB0aGUgYWxpZ25lZCBzdWJ0cmVlIGlzIHRoZSBoaWdoZXN0IG9mIHRoZSB0b3BzIG9mIHRo
ZSBib3hlcyBpbiB0aGUgc3VidHJlZSwgYW5kIHRoZSBib3R0b20gaXMgYW5hbG9nb3VzLgogICAg
IEFTU0VSVChub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxpbmVCb3hJbmRleF0uaXNJbmxpbmVC
b3goKSk7CiAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dl
b21ldHJ5KCk7Ci0gICAgYXV0byBlbmNsb3NpbmdMYXlvdXRCb3VuZHMgPSBJbmxpbmVMZXZlbEJv
eDo6TGF5b3V0Qm91bmRzIHsgfTsKKyAgICBhdXRvIGVuY2xvc2luZ0xheW91dEJvdW5kcyA9IElu
bGluZUxldmVsQm94OjpBc2NlbnRBbmREZXNjZW50IHsgfTsKICAgICBhdXRvJiBpbmxpbmVCb3hQ
YXJlbnQgPSBub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmxpbmVCb3hJbmRleF0ubGF5b3V0Qm94
KCkucGFyZW50KCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSBpbmxpbmVCb3hJbmRleCArIDE7
IGluZGV4IDwgbm9uUm9vdElubGluZUxldmVsQm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAg
ICAgIGF1dG8mIGRlc2NlbmRhbnRJbmxpbmVMZXZlbEJveCA9IG5vblJvb3RJbmxpbmVMZXZlbEJv
eGVzW2luZGV4XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuaAppbmRleCBlYWFlMTJhODk1NjAuLjA0ODgzMzc5OTQ5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveFZlcnRpY2FsQWxpZ25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaApAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVJvb3RJbmxpbmVCb3hWZXJ0
aWNhbFBvc2l0aW9uKExpbmVCb3gmLCBjb25zdCBMaW5lQm94QWxpZ25tZW50Q29udGVudCYpIGNv
bnN0OwogICAgIHZvaWQgYWxpZ25JbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmLCBJbmxpbmVMYXlv
dXRVbml0IGxpbmVCb3hMb2dpY2FsSGVpZ2h0KSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0
IGFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZChMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBs
aW5lQm94SGVpZ2h0KSBjb25zdDsKLSAgICBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGxh
eW91dEJvdW5kc0ZvcklubGluZUJveFN1YnRyZWUoY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxC
b3hMaXN0JiBub25Sb290SW5saW5lTGV2ZWxCb3hlcywgc2l6ZV90IGlubGluZUJveEluZGV4KSBj
b25zdDsKKyAgICBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBsYXlvdXRCb3VuZHNG
b3JJbmxpbmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9u
Um9vdElubGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3Q7CiAKICAg
ICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkmIGZvcm1hdHRpbmdHZW9tZXRyeSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OyB9CiAgICAgY29uc3QgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465906</attachid>
            <date>2023-04-13 18:52:47 -0700</date>
            <delta_ts>2023-04-13 20:48:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-255387-20230413185244.patch</filename>
            <type>text/plain</type>
            <size>21786</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiYjgxODc3YjQ0NjliYzA4Zjg4ZTdiYjg4ZmZiYmU2MzM1YjMwZmFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMTIgQXByIDIwMjMgMjE6MTU6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGlzIGEgZ2xvcmlmaWVkCiBBc2NlbnRBbmREZXNj
ZW50IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUzODcKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKMS4gTW92ZSBBc2NlbnRBbmREZXNjZW50IGZyb20gSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIHVuZGVyIElubGluZUxldmVsQm94CjIuIFR1cm4gYm90aCBJ
bmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIGFuZCBJbmxpbmVMZXZlbEJveCdzIG1fYXNjZW50
L21fZGVzY2VudCBpbnRvIGEgQXNjZW50QW5kRGVzY2VudAoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oOgooV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudDo6aGVpZ2h0IGNvbnN0KToK
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQ6Om9wZXJh
dG9yPT0gY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6YXNjZW50IGNv
bnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmRlc2NlbnQgY29uc3QpOgoo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjphc2NlbnQgY29u
c3QpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzOjpkZXNj
ZW50IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5k
czo6aGVpZ2h0IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OkxheW91
dEJvdW5kczo6b3BlcmF0b3I9PSBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpzZXRBc2NlbnRBbmREZXNjZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxC
b3g6OnNldExheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVsQm94OjpM
YXlvdXRCb3VuZHM6OkxheW91dEJvdW5kcyk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxldmVs
Qm94OjpBc2NlbnRBbmREZXNjZW50Ojpyb3VuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxl
dmVsQm94OjpzZXRBc2NlbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVMZXZl
bEJveDo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3gpOgooV2ViQ29yZTo6TGF5b3V0
Ojphc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tG
b250cyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpzZXRMYXlvdXRC
b3VuZHNGb3JJbmxpbmVCb3ggY29uc3QpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRl
cjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5lTGV2ZWxCb3ggY29uc3QpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0SW5saW5lTGV2ZWxCb3hlcyk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9y
TGluZUJveENvbnRhaW5JZkFwcGxpY2FibGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6YWRqdXN0SWRlb2dyYXBoaWNCYXNlbGluZUlmQXBwbGljYWJsZSk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEdlb21ldHJ5IGNvbnN0KToKKCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OmhlaWdodCBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OkFzY2VudEFuZERlc2NlbnQ6OnJvdW5kIGNv
bnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTG9naWNh
bEhlaWdodEFuZEFsaWduIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2Fs
QWxpZ25lcjo6c2ltcGxpZmllZFZlcnRpY2FsQWxpZ25tZW50IGNvbnN0KToKKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0
IGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0
ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uIGNvbnN0KToKKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveFZlcnRpY2FsQWxpZ25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZSBj
b25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmFsaWduSW5s
aW5lTGV2ZWxCb3hlcyBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hWZXJ0aWNhbEFs
aWduZXI6OmFkanVzdEZvckFubm90YXRpb25JZk5lZWRlZCBjb25zdCk6Ci0tLQogLi4uL2lubGlu
ZS9JbmxpbmVMZXZlbEJveC5oICAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKy0tLS0tCiAu
Li4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCAgICAgICAgICAgfCA1MyArKysrKysr
Ky0tLS0tLS0tLS0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmggICAgICAgICAg
ICAgfCAgMyArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCAg
IHwgIDggKy0tCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuaCAgICAg
fCAgMiArLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAppbmRleCA4Y2YwY2U3MTc2NDIuLjk5
YWFlM2U3NGMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC00NywxNyAr
NDcsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVMaW5lQnJl
YWtCb3goY29uc3QgQm94JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KTsKICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlR2VuZXJpY0lubGlu
ZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCk7CiAKLSAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXNjZW50OyB9Ci0gICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBk
ZXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXNjZW50OyB9Ci0gICAgLy8gU2VlIGh0dHBzOi8v
d3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKLSAgICBzdHJ1Y3QgTGF5
b3V0Qm91bmRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
YXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50
ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2VudDsgfQotCisgICAgc3RydWN0IEFzY2VudEFuZERl
c2NlbnQgewogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAgfTsKICAgICAgICAg
SW5saW5lTGF5b3V0VW5pdCBkZXNjZW50IHsgMCB9OworCisgICAgICAgIElubGluZUxheW91dFVu
aXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXNjZW50QW5kRGVzY2VudCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGFzY2VudCA9PSBvdGhlci5hc2NlbnQgJiYgZGVzY2VudCA9PSBvdGhlci5kZXNjZW50OyB9
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcy4KKyAgICAgICAgLy8gV2UgbmVlZCBmbG9v
ci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCisgICAg
ICAgIHZvaWQgcm91bmQoKTsKICAgICB9OwotICAgIExheW91dEJvdW5kcyBsYXlvdXRCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBtX2xheW91dEJvdW5kczsgfQorICAgIElubGluZUxheW91dFVuaXQg
YXNjZW50KCkgY29uc3QgeyByZXR1cm4gbV9hc2NlbnRBbmREZXNjZW50LmFzY2VudDsgfQorICAg
IElubGluZUxheW91dFVuaXQgZGVzY2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fYXNjZW50QW5kRGVz
Y2VudC5kZXNjZW50OyB9CisgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5s
aW5lLTMvI2xheW91dC1ib3VuZHMKKyAgICBBc2NlbnRBbmREZXNjZW50IGxheW91dEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm91bmRzOyB9CiAKICAgICBib29sIGhhc0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KICAgICB2b2lkIHNldEhhc0NvbnRlbnQo
KTsKQEAgLTEzNSw5ICsxMzgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9sb2dpY2FsUmVjdC5zZXRIZWln
aHQocm91bmRUb0ludChsb2dpY2FsSGVpZ2h0KSk7IH0KICAgICB2b2lkIHNldExvZ2ljYWxUb3Ao
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSB7IG1fbG9naWNhbFJlY3Quc2V0VG9wKGxvZ2lj
YWxUb3AgPj0gMCA/IHJvdW5kVG9JbnQobG9naWNhbFRvcCkgOiAtcm91bmRUb0ludCgtbG9naWNh
bFRvcCkpOyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0KSB7IG1fbG9naWNhbFJlY3Quc2V0TGVmdChsb2dpY2FsTGVmdCk7IH0KLSAgICB2b2lk
IHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkgeyBtX2FzY2VudCA9IHJvdW5kVG9J
bnQoYXNjZW50KTsgfQotICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2Nl
bnQpIHsgbV9kZXNjZW50ID0gcm91bmRUb0ludChkZXNjZW50KTsgfQotICAgIHZvaWQgc2V0TGF5
b3V0Qm91bmRzKGNvbnN0IExheW91dEJvdW5kcyYgbGF5b3V0Qm91bmRzKSB7IG1fbGF5b3V0Qm91
bmRzID0geyBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmFzY2VudCkp
LCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9JbnQobGF5b3V0Qm91bmRzLmRlc2NlbnQpKSB9OyB9
CisgICAgdm9pZCBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5k
RGVzY2VudCkgeyBtX2FzY2VudEFuZERlc2NlbnQgPSB7IElubGluZUxheW91dFVuaXQocm91bmRU
b0ludChhc2NlbnRBbmREZXNjZW50LmFzY2VudCkpLCBJbmxpbmVMYXlvdXRVbml0KHJvdW5kVG9J
bnQoYXNjZW50QW5kRGVzY2VudC5kZXNjZW50KSkgfTsgfQorICAgIHZvaWQgc2V0TGF5b3V0Qm91
bmRzKGNvbnN0IEFzY2VudEFuZERlc2NlbnQmIGxheW91dEJvdW5kcykgeyBtX2xheW91dEJvdW5k
cyA9IHsgSW5saW5lTGF5b3V0VW5pdChyb3VuZFRvSW50KGxheW91dEJvdW5kcy5hc2NlbnQpKSwg
SW5saW5lTGF5b3V0VW5pdChyb3VuZFRvSW50KGxheW91dEJvdW5kcy5kZXNjZW50KSkgfTsgfQog
ICAgIHZvaWQgc2V0SW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRpbmdUcmltKElubGluZUxh
eW91dFVuaXQgb2Zmc2V0KSB7IG1faW5saW5lQm94Q29udGVudE9mZnNldEZvckxlYWRpbmdUcmlt
ID0gb2Zmc2V0OyB9CiAKICAgICB2b2lkIHNldElzRmlyc3RCb3goKSB7IG1faXNGaXJzdFdpdGhp
bkxheW91dEJveCA9IHRydWU7IH0KQEAgLTE0NywxMCArMTQ5LDkgQEAgcHJpdmF0ZToKICAgICBD
aGVja2VkUmVmPGNvbnN0IEJveD4gbV9sYXlvdXRCb3g7CiAgICAgLy8gVGhpcyBpcyB0aGUgY29t
YmluYXRpb24gb2YgbWFyZ2luIGFuZCBib3JkZXIgYm94ZXMuIElubGluZSBsZXZlbCBib3hlcyBh
cmUgdmVydGljYWxseSBhbGlnbmVkIHVzaW5nIHRoZWlyIG1hcmdpbiBib3hlcy4KICAgICBJbmxp
bmVSZWN0IG1fbG9naWNhbFJlY3Q7Ci0gICAgTGF5b3V0Qm91bmRzIG1fbGF5b3V0Qm91bmRzOwor
ICAgIEFzY2VudEFuZERlc2NlbnQgbV9sYXlvdXRCb3VuZHM7CisgICAgQXNjZW50QW5kRGVzY2Vu
dCBtX2FzY2VudEFuZERlc2NlbnQ7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2lubGluZUJveENv
bnRlbnRPZmZzZXRGb3JMZWFkaW5nVHJpbSB7IDAuZiB9OwotICAgIElubGluZUxheW91dFVuaXQg
bV9hc2NlbnQgeyAwIH07Ci0gICAgc3RkOjpvcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBtX2Rl
c2NlbnQ7CiAgICAgYm9vbCBtX2hhc0NvbnRlbnQgeyBmYWxzZSB9OwogICAgIC8vIFRoZXNlIGJp
dHMgYXJlIGFib3V0IHdoZXRoZXIgdGhpcyBpbmxpbmUgbGV2ZWwgYm94IGlzIHRoZSBmaXJzdC9s
YXN0IGdlbmVyYXRlZCBib3ggb2YgdGhlIGFzc29jaWF0ZWQgTGF5b3V0OjpCb3gKICAgICAvLyAo
ZS5nLiBhbHdheXMgdHJ1ZSBmb3IgYXRvbWljIGlubGluZSBsZXZlbCBib3hlcywgYnV0IGlubGlu
ZSBib3hlcyBzcGFubmluZyBvdmVyIG11bHRpcGxlIGxpbmVzIGNhbiBwcm9kdWNlIHNlcGFyYXRl
IGZpcnN0L2xhc3QgYm94ZXMpLgpAQCAtMjg3LDYgKzI4OCwxMiBAQCBpbmxpbmUgYm9vbCBJbmxp
bmVMZXZlbEJveDo6bGluZUJveENvbnRhaW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
CitpbmxpbmUgdm9pZCBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudDo6cm91bmQoKQor
eworICAgIGFzY2VudCA9IGZsb29yZihhc2NlbnQpOworICAgIGRlc2NlbnQgPSBjZWlsZihkZXNj
ZW50KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVp
bGRlci5jcHAKaW5kZXggNzY5ZmY0ZjUyYTYxLi41NjAyOTQwZjE3ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKQEAgLTkwLDE2ICs5MCw3IEBAIFRl
eHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0IExpbmVCb3hCdWlsZGVyOjpjb2xsZWN0RmFsbGJhY2tG
b250cyhjb25zdCBJbmxpbmVMZXZlCiAgICAgcmV0dXJuIGZhbGxiYWNrRm9udHM7CiB9CiAKLXN0
cnVjdCBBc2NlbnRBbmREZXNjZW50IHsKLSAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAg
fTsKLSAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQgeyAwIH07Ci0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCArIGRlc2NlbnQ7IH0KLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMuCi0gICAgLy8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNo
IGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRpb25pbmcuCi0gICAgQXNjZW50QW5kRGVzY2Vu
dCByb3VuZCgpIGNvbnN0IHsgcmV0dXJuIHsgZmxvb3JmKGFzY2VudCksIGNlaWxmKGRlc2NlbnQp
IH07IH0KLX07Ci1zdGF0aWMgQXNjZW50QW5kRGVzY2VudCBwcmltYXJ5Rm9udE1ldHJpY3NGb3JJ
bmxpbmVCb3goY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgRm9udEJhc2VsaW5lIGZv
bnRCYXNlbGluZSA9IEFscGhhYmV0aWNCYXNlbGluZSkKK3N0YXRpYyBJbmxpbmVMZXZlbEJveDo6
QXNjZW50QW5kRGVzY2VudCBwcmltYXJ5Rm9udE1ldHJpY3NGb3JJbmxpbmVCb3goY29uc3QgSW5s
aW5lTGV2ZWxCb3gmIGlubGluZUJveCwgRm9udEJhc2VsaW5lIGZvbnRCYXNlbGluZSA9IEFscGhh
YmV0aWNCYXNlbGluZSkKIHsKICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5saW5lQm94KCkpOwog
ICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lQm94LnByaW1hcnltZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOwpAQCAtMTE2LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIGlzVGV4dEVkZ2VMZWFkaW5n
KGNvbnN0IElubGluZUxldmVsQm94JiBpbmxpbmVCb3gpCiAgICAgcmV0dXJuIHRleHRFZGdlLm92
ZXIgPT0gVGV4dEVkZ2VUeXBlOjpMZWFkaW5nOwogfQogCi1zdGF0aWMgQXNjZW50QW5kRGVzY2Vu
dCBhc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KGNvbnN0IElubGluZUxl
dmVsQm94JiBpbmxpbmVCb3gsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgRm9udEJh
c2VsaW5lIGZvbnRCYXNlbGluZSkKK3N0YXRpYyBJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVz
Y2VudCBhc2NlbnRBbmREZXNjZW50V2l0aFRleHRFZGdlRm9ySW5saW5lQm94KGNvbnN0IElubGlu
ZUxldmVsQm94JiBpbmxpbmVCb3gsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgRm9u
dEJhc2VsaW5lIGZvbnRCYXNlbGluZSkKIHsKICAgICBBU1NFUlQoaW5saW5lQm94LmlzSW5saW5l
Qm94KCkpOwogCkBAIC0xNjMsNyArMTU0LDcgQEAgc3RhdGljIEFzY2VudEFuZERlc2NlbnQgYXNj
ZW50QW5kRGVzY2VudFdpdGhUZXh0RWRnZUZvcklubGluZUJveChjb25zdCBJbmxpbmVMZXYKICAg
ICByZXR1cm4geyBhc2NlbnQoKSwgZGVzY2VudCgpIH07CiB9CiAKLUFzY2VudEFuZERlc2NlbnQg
TGluZUJveEJ1aWxkZXI6OmVuY2xvc2luZ0FzY2VudERlc2NlbnRXaXRoRmFsbGJhY2tGb250cyhj
b25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lQm94LCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tG
b250TGlzdCYgZmFsbGJhY2tGb250c0ZvckNvbnRlbnQsIEZvbnRCYXNlbGluZSBmb250QmFzZWxp
bmUpIGNvbnN0CitJbmxpbmVMZXZlbEJveDo6QXNjZW50QW5kRGVzY2VudCBMaW5lQm94QnVpbGRl
cjo6ZW5jbG9zaW5nQXNjZW50RGVzY2VudFdpdGhGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxl
dmVsQm94JiBpbmxpbmVCb3gsIGNvbnN0IFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0JiBmYWxs
YmFja0ZvbnRzRm9yQ29udGVudCwgRm9udEJhc2VsaW5lIGZvbnRCYXNlbGluZSkgY29uc3QKIHsK
ICAgICBBU1NFUlQoIWZhbGxiYWNrRm9udHNGb3JDb250ZW50LmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKQEAgLTIzNSwxNSArMjI2LDE2IEBAIHZvaWQg
TGluZUJveEJ1aWxkZXI6OnNldExheW91dEJvdW5kc0ZvcklubGluZUJveChJbmxpbmVMZXZlbEJv
eCYgaW5saW5lQm94LCBGb250CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJv
cGVydGllc0ZvcklubGluZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIElubGluZUxl
dmVsQm94JiBpbmxpbmVMZXZlbEJveCkgY29uc3QKIHsKLSAgICBhdXRvIHNldEFzY2VudEFuZERl
c2NlbnQgPSBbJl0gKGF1dG8gYXNjZW50QW5kRGVzY2VudCwgYm9vbCBhcHBseUxlZ2FjeVJvdW5k
aW5nID0gdHJ1ZSkgewotICAgICAgICBhdXRvIGFkanVzdGVkQXNjZW50QW5kRGVzY2VudCA9IGFw
cGx5TGVnYWN5Um91bmRpbmcgPyBhc2NlbnRBbmREZXNjZW50LnJvdW5kKCkgOiBhc2NlbnRBbmRE
ZXNjZW50OwotICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRBc2NlbnQoYWRqdXN0ZWRBc2NlbnRB
bmREZXNjZW50LmFzY2VudCk7Ci0gICAgICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoYWRq
dXN0ZWRBc2NlbnRBbmREZXNjZW50LmRlc2NlbnQpOwotICAgICAgICBpbmxpbmVMZXZlbEJveC5z
ZXRMYXlvdXRCb3VuZHMoeyBhZGp1c3RlZEFzY2VudEFuZERlc2NlbnQuYXNjZW50LCBhZGp1c3Rl
ZEFzY2VudEFuZERlc2NlbnQuZGVzY2VudCB9KTsKKyAgICBhdXRvIHNldFZlcnRpY2FsUHJvcGVy
dGllcyA9IFsmXSAoSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5kRGVz
Y2VudCwgYm9vbCBhcHBseUxlZ2FjeVJvdW5kaW5nID0gdHJ1ZSkgeworICAgICAgICBpZiAoYXBw
bHlMZWdhY3lSb3VuZGluZykKKyAgICAgICAgICAgIGFzY2VudEFuZERlc2NlbnQucm91bmQoKTsK
KyAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0QXNjZW50QW5kRGVzY2VudChhc2NlbnRBbmREZXNj
ZW50KTsKKyAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKGFzY2VudEFuZERl
c2NlbnQpOworICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGFzY2VudEFu
ZERlc2NlbnQuaGVpZ2h0KCkpOwogICAgIH07CiAKICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNJ
bmxpbmVCb3goKSkgewotICAgICAgICBhdXRvIGFzY2VudEFuZERlc2NlbnQgPSBbJl0oKSAtPiBB
c2NlbnRBbmREZXNjZW50IHsKKyAgICAgICAgYXV0byBhc2NlbnRBbmREZXNjZW50ID0gWyZdKCkg
LT4gSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgewogICAgICAgICAgICAgYXV0byBs
ZWFkaW5nVHJpbSA9IGlubGluZUxldmVsQm94LmxlYWRpbmdUcmltKCk7CiAgICAgICAgICAgICBh
dXRvIGZvbnRCYXNlbGluZSA9IGxpbmVCb3guYmFzZWxpbmVUeXBlKCk7CiAgICAgICAgICAgICBp
ZiAoaW5saW5lTGV2ZWxCb3guaXNSb290SW5saW5lQm94KCkgfHwgbGVhZGluZ1RyaW0gPT0gTGVh
ZGluZ1RyaW06Ok5vcm1hbCkKQEAgLTI1Niw4ICsyNDgsOCBAQCB2b2lkIExpbmVCb3hCdWlsZGVy
OjpzZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBs
aW5lQgogICAgICAgICAgICAgcmV0dXJuIHsgYXNjZW50LCBkZXNjZW50IH07CiAgICAgICAgIH0o
KTsKIAotICAgICAgICBzZXRBc2NlbnRBbmREZXNjZW50KGFzY2VudEFuZERlc2NlbnQpOwotICAg
ICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KGFzY2VudEFuZERlc2NlbnQuaGVp
Z2h0KCkpOworICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMoYXNjZW50QW5kRGVzY2VudCk7
CisgICAgICAgIC8vIE92ZXJyaWRlIGRlZmF1bHQgbGF5b3V0IGJvdW5kcy4KICAgICAgICAgc2V0
TGF5b3V0Qm91bmRzRm9ySW5saW5lQm94KGlubGluZUxldmVsQm94LCBsaW5lQm94LmJhc2VsaW5l
VHlwZSgpKTsKIAogICAgICAgICAvLyBXaXRoIGxlYWRpbmctdHJpbSwgdGhlIGlubGluZSBib3gg
dG9wIGlzIG5vdCBhbHdheXMgd2hlcmUgdGhlIGNvbnRlbnQgc3RhcnRzLgpAQCAtMjY3LDggKzI1
OSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OnNldFZlcnRpY2FsUHJvcGVydGllc0ZvcklubGlu
ZUxldmVsQm94KGNvbnN0IExpbmVCb3gmIGxpbmVCCiAgICAgfQogICAgIGlmIChpbmxpbmVMZXZl
bEJveC5pc0xpbmVCcmVha0JveCgpKSB7CiAgICAgICAgIGF1dG8gcGFyZW50QXNjZW50QW5kRGVz
Y2VudCA9IHByaW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChsaW5lQm94LnBhcmVudElubGlu
ZUJveChpbmxpbmVMZXZlbEJveCksIGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpOwotICAgICAgICBz
ZXRBc2NlbnRBbmREZXNjZW50KHBhcmVudEFzY2VudEFuZERlc2NlbnQpOwotICAgICAgICBpbmxp
bmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0KHBhcmVudEFzY2VudEFuZERlc2NlbnQuaGVpZ2h0
KCkpOworICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMocGFyZW50QXNjZW50QW5kRGVzY2Vu
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVsQm94LmlzTGlz
dE1hcmtlcigpKSB7CkBAIC0yNzcsMTUgKzI2OCwxNSBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpz
ZXRWZXJ0aWNhbFByb3BlcnRpZXNGb3JJbmxpbmVMZXZlbEJveChjb25zdCBMaW5lQm94JiBsaW5l
QgogICAgICAgICBhdXRvJiBsaXN0TWFya2VyQm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgICAgIGF1dG8gbWFyZ2luQm94SGVp
Z2h0ID0gbGlzdE1hcmtlckJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpOwogCi0gICAgICAg
IGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsKICAgICAg
ICAgaWYgKGxpbmVCb3guYmFzZWxpbmVUeXBlKCkgPT0gSWRlb2dyYXBoaWNCYXNlbGluZSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWx5IG9uIHRoZSBpbnRlZ3JhdGlvbiBi
YXNlbGluZS4KLSAgICAgICAgICAgIHNldEFzY2VudEFuZERlc2NlbnQocHJpbWFyeUZvbnRNZXRy
aWNzRm9ySW5saW5lQm94KGxpbmVCb3gucGFyZW50SW5saW5lQm94KGlubGluZUxldmVsQm94KSwg
bGluZUJveC5iYXNlbGluZVR5cGUoKSkpOworICAgICAgICAgICAgc2V0VmVydGljYWxQcm9wZXJ0
aWVzKHByaW1hcnlGb250TWV0cmljc0ZvcklubGluZUJveChsaW5lQm94LnBhcmVudElubGluZUJv
eChpbmxpbmVMZXZlbEJveCksIGxpbmVCb3guYmFzZWxpbmVUeXBlKCkpKTsKKyAgICAgICAgICAg
IGlubGluZUxldmVsQm94LnNldExvZ2ljYWxIZWlnaHQobWFyZ2luQm94SGVpZ2h0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoYXV0byBhc2NlbnQgPSBkb3du
Y2FzdDxFbGVtZW50Qm94PihsYXlvdXRCb3gpLmJhc2VsaW5lRm9ySW50ZWdyYXRpb24oKSkKLSAg
ICAgICAgICAgIHJldHVybiBzZXRBc2NlbnRBbmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgeyAq
YXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQgLSAqYXNjZW50IH0pOwotICAgICAgICBzZXRBc2NlbnRB
bmREZXNjZW50KEFzY2VudEFuZERlc2NlbnQgeyBtYXJnaW5Cb3hIZWlnaHQsIHsgfSB9KTsKKyAg
ICAgICAgICAgIHJldHVybiBzZXRWZXJ0aWNhbFByb3BlcnRpZXMoeyAqYXNjZW50LCBtYXJnaW5C
b3hIZWlnaHQgLSAqYXNjZW50IH0pOworICAgICAgICBzZXRWZXJ0aWNhbFByb3BlcnRpZXMoeyBt
YXJnaW5Cb3hIZWlnaHQsIHsgfSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
aW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CkBAIC0zMTAsOCArMzAx
LDcgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxQcm9wZXJ0aWVzRm9ySW5saW5l
TGV2ZWxCb3goY29uc3QgTGluZUJveCYgbGluZUIKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBtYXJnaW5Cb3hIZWlnaHQ7CiAgICAgICAgIH0oKTsKLSAgICAgICAgc2V0QXNjZW50
QW5kRGVzY2VudChBc2NlbnRBbmREZXNjZW50IHsgYXNjZW50LCBtYXJnaW5Cb3hIZWlnaHQgLSBh
c2NlbnQgfSwgZmFsc2UpOwotICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVpZ2h0
KG1hcmdpbkJveEhlaWdodCk7CisgICAgICAgIHNldFZlcnRpY2FsUHJvcGVydGllcyh7IGFzY2Vu
dCwgbWFyZ2luQm94SGVpZ2h0IC0gYXNjZW50IH0sIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ3Miw3ICs0NjIsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjphZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9yTGluZUJveENvbnRhaW5J
ZkFwcGxpY2FibGUoTGluZUJveAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgYXV0byYgaW5saW5lQm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGlubGluZUxldmVsQm94LmxheW91dEJveCgpKTsKICAgICAgICAgICAgIGF1dG8gYXNj
ZW50ID0gaW5saW5lTGV2ZWxCb3guYXNjZW50KCkgKyBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5C
b3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7Ci0gICAgICAgICAgICBhdXRvIGRlc2NlbnQgPSB2YWx1
ZU9yRGVmYXVsdChpbmxpbmVMZXZlbEJveC5kZXNjZW50KCkpICsgaW5saW5lQm94R2VvbWV0cnku
bWFyZ2luQm9yZGVyQW5kUGFkZGluZ0FmdGVyKCk7CisgICAgICAgICAgICBhdXRvIGRlc2NlbnQg
PSBpbmxpbmVMZXZlbEJveC5kZXNjZW50KCkgKyBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5Cb3Jk
ZXJBbmRQYWRkaW5nQWZ0ZXIoKTsKICAgICAgICAgICAgIGlubGluZUJveEJvdW5kc01hcC5zZXQo
JmlubGluZUxldmVsQm94LCBUZXh0VXRpbDo6RW5jbG9zaW5nQXNjZW50RGVzY2VudCB7IGFzY2Vu
dCwgZGVzY2VudCB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTYwMyw4ICs1OTMsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjphZGp1c3RJZGVvZ3JhcGhpY0Jhc2VsaW5lSWZBcHBsaWNhYmxlKExp
bmVCb3gmIGxpbmVCb3gpCiAgICAgICAgICAgICBhdXRvIGlubGluZUxldmVsQm94SGVpZ2h0ID0g
aW5saW5lTGV2ZWxCb3gubG9naWNhbEhlaWdodCgpOwogICAgICAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBpZGVvZ3JhcGhpY0Jhc2VsaW5lID0gcm91bmRUb0ludChpbmxpbmVMZXZlbEJveEhlaWdo
dCAvIDIpOwogICAgICAgICAgICAgLy8gTW92ZSB0aGUgYmFzZWxpbmUgcG9zaXRpb24gYnV0IGtl
ZXAgdGhlIHNhbWUgbG9naWNhbCBoZWlnaHQuCi0gICAgICAgICAgICBpbmxpbmVMZXZlbEJveC5z
ZXRBc2NlbnQoaWRlb2dyYXBoaWNCYXNlbGluZSk7Ci0gICAgICAgICAgICBpbmxpbmVMZXZlbEJv
eC5zZXREZXNjZW50KGlubGluZUxldmVsQm94SGVpZ2h0IC0gaWRlb2dyYXBoaWNCYXNlbGluZSk7
CisgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC5zZXRBc2NlbnRBbmREZXNjZW50KHsgaWRlb2dy
YXBoaWNCYXNlbGluZSwgaW5saW5lTGV2ZWxCb3hIZWlnaHQgLSBpZGVvZ3JhcGhpY0Jhc2VsaW5l
IH0pOwogICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3guc2V0TGF5b3V0Qm91bmRzKHsgaWRlb2dy
YXBoaWNCYXNlbGluZSwgaW5saW5lTGV2ZWxCb3hIZWlnaHQgLSBpZGVvZ3JhcGhpY0Jhc2VsaW5l
IH0pOwogICAgICAgICB9CiAKQEAgLTY0OSw3ICs2MzgsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVy
Ojpjb21wdXRlTGluZUJveEdlb21ldHJ5KExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0CiAgICAgICAg
ICAgICBhdXRvJiByb290SW5saW5lQm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKHJvb3RTdHlsZS50ZXh0RWRnZSgpLnVuZGVyKSB7CiAgICAgICAgICAg
ICBjYXNlIFRleHRFZGdlVHlwZTo6VGV4dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gcm9vdElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gKnJvb3RJbmxpbmVCb3guZGVzY2VudCgp
OworICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmRl
c2NlbnQgLSByb290SW5saW5lQm94LmRlc2NlbnQoKTsKICAgICAgICAgICAgIGNhc2UgVGV4dEVk
Z2VUeXBlOjpBbHBoYWJldGljOgogICAgICAgICAgICAgICAgIHJldHVybiByb290SW5saW5lQm94
LmxheW91dEJvdW5kcygpLmRlc2NlbnQ7CiAgICAgICAgICAgICBjYXNlIFRleHRFZGdlVHlwZTo6
Q0pLSWRlb2dyYXBoaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIu
aAppbmRleCBlYmI3ZjY5MzljZjIuLmE3ZTdmYTViNTQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCkBAIC0zNiw3ICszNiw2IEBAIG5hbWVzcGFjZSBMYXlv
dXQgewogY2xhc3MgQm94OwogY2xhc3MgRWxlbWVudEJveDsKIGNsYXNzIExheW91dFN0YXRlOwot
c3RydWN0IEFzY2VudEFuZERlc2NlbnQ7CiAKIGNsYXNzIExpbmVCb3hCdWlsZGVyIHsKIHB1Ymxp
YzoKQEAgLTQ5LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheW91dEJvdW5kc0Zv
cklubGluZUJveChJbmxpbmVMZXZlbEJveCYsIEZvbnRCYXNlbGluZSkgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RJbmxpbmVCb3hIZWlnaHRzRm9yTGluZUJveENvbnRhaW5JZkFwcGxpY2FibGUoTGlu
ZUJveCYpOwogICAgIHZvaWQgY29tcHV0ZUxpbmVCb3hHZW9tZXRyeShMaW5lQm94JikgY29uc3Q7
Ci0gICAgQXNjZW50QW5kRGVzY2VudCBlbmNsb3NpbmdBc2NlbnREZXNjZW50V2l0aEZhbGxiYWNr
Rm9udHMoY29uc3QgSW5saW5lTGV2ZWxCb3gmLCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250
TGlzdCYgZmFsbGJhY2tGb250c0ZvckNvbnRlbnQsIEZvbnRCYXNlbGluZSkgY29uc3Q7CisgICAg
SW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgZW5jbG9zaW5nQXNjZW50RGVzY2VudFdp
dGhGYWxsYmFja0ZvbnRzKGNvbnN0IElubGluZUxldmVsQm94JiwgY29uc3QgVGV4dFV0aWw6OkZh
bGxiYWNrRm9udExpc3QmIGZhbGxiYWNrRm9udHNGb3JDb250ZW50LCBGb250QmFzZWxpbmUpIGNv
bnN0OwogICAgIFRleHRVdGlsOjpGYWxsYmFja0ZvbnRMaXN0IGNvbGxlY3RGYWxsYmFja0ZvbnRz
KGNvbnN0IElubGluZUxldmVsQm94JiBwYXJlbnRJbmxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1biYs
IGNvbnN0IFJlbmRlclN0eWxlJik7CiAKICAgICB2b2lkIGNvbnN0cnVjdElubGluZUxldmVsQm94
ZXMoTGluZUJveCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
VmVydGljYWxBbGlnbmVyLmNwcAppbmRleCAwZDhmOTAyOWVlNzIuLjllNGQ3ZjE2MTMxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25l
ci5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpMaW5lQm94
QWxpZ25tZW50Q29udGVudCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTAogICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKICAgICAgICAgICAgIC8vIE5vdGUg
dGhhdCB0ZXh0LWJvdHRvbSBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmlj
cyBib3R0b20gKGRlc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgYm90dG9tLgogICAg
ICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVC
b3gubGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2lj
YWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArICpwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgp
OworICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50
SW5saW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91
bmRzLmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpOwogICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gLSBsYXlvdXRCb3VuZHMuaGVp
Z2h0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzEwLDcgKzMxMCw3IEBA
IHZvaWQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0ZVJvb3RJbmxpbmVCb3hWZXJ0aWNh
bFBvc2l0aW9uKExpbmVCb3gmIGxpbmVCCiAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZSA9IHBhcmVudElubGluZUJveC5hc2NlbnQoKSAtIGxheW91dEJvdW5kcy5h
c2NlbnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0Qm90dG9tOgotICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSBsYXlvdXRCb3VuZHMuZGVzY2VudCAtICpwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpOworICAg
ICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlvdXRCb3VuZHMu
ZGVzY2VudCAtIHBhcmVudElubGluZUJveC5kZXNjZW50KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6CiAgICAgICAgICAgICBiYXNlbGluZU9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IC0ocGFyZW50SW5saW5lQm94LmZvbnRTaXplKCkgLyA1
ICsgMSk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpj
b21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oTGluZUJveCYgbGluZUIKICAgICBy
b290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3ApOwogfQog
Ci1JbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6Omxh
eW91dEJvdW5kc0ZvcklubGluZUJveFN1YnRyZWUoY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxC
b3hMaXN0JiBub25Sb290SW5saW5lTGV2ZWxCb3hlcywgc2l6ZV90IGlubGluZUJveEluZGV4KSBj
b25zdAorSW5saW5lTGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgTGluZUJveFZlcnRpY2FsQWxp
Z25lcjo6bGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJlZShjb25zdCBMaW5lQm94OjpJbmxp
bmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxpbmVMZXZlbEJveGVzLCBzaXplX3QgaW5saW5lQm94
SW5kZXgpIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Nzc3dnLWRyYWZ0
cy9jc3MyLyNwcm9wZGVmLXZlcnRpY2FsLWFsaWduCiAgICAgLy8KQEAgLTM3Niw3ICszNzYsNyBA
QCBJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6Omxh
eW91dEJvdW5kc0ZvcklubGluZUJveFN1YgogICAgIC8vIFRoZSB0b3Agb2YgdGhlIGFsaWduZWQg
c3VidHJlZSBpcyB0aGUgaGlnaGVzdCBvZiB0aGUgdG9wcyBvZiB0aGUgYm94ZXMgaW4gdGhlIHN1
YnRyZWUsIGFuZCB0aGUgYm90dG9tIGlzIGFuYWxvZ291cy4KICAgICBBU1NFUlQobm9uUm9vdElu
bGluZUxldmVsQm94ZXNbaW5saW5lQm94SW5kZXhdLmlzSW5saW5lQm94KCkpOwogICAgIGF1dG8m
IGZvcm1hdHRpbmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgIGF1
dG8gZW5jbG9zaW5nTGF5b3V0Qm91bmRzID0gSW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kcyB7
IH07CisgICAgYXV0byBlbmNsb3NpbmdMYXlvdXRCb3VuZHMgPSBJbmxpbmVMZXZlbEJveDo6QXNj
ZW50QW5kRGVzY2VudCB7IH07CiAgICAgYXV0byYgaW5saW5lQm94UGFyZW50ID0gbm9uUm9vdElu
bGluZUxldmVsQm94ZXNbaW5saW5lQm94SW5kZXhdLmxheW91dEJveCgpLnBhcmVudCgpOwogICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gaW5saW5lQm94SW5kZXggKyAxOyBpbmRleCA8IG5vblJvb3RJ
bmxpbmVMZXZlbEJveGVzLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBhdXRvJiBkZXNjZW5k
YW50SW5saW5lTGV2ZWxCb3ggPSBub25Sb290SW5saW5lTGV2ZWxCb3hlc1tpbmRleF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKaW5k
ZXggZWFhZTEyYTg5NTYwLi4wNDg4MzM3OTk0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFs
aWduZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbihMaW5l
Qm94JiwgY29uc3QgTGluZUJveEFsaWdubWVudENvbnRlbnQmKSBjb25zdDsKICAgICB2b2lkIGFs
aWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9n
aWNhbEhlaWdodCkgY29uc3Q7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBhZGp1c3RGb3JBbm5vdGF0
aW9uSWZOZWVkZWQoTGluZUJveCYsIElubGluZUxheW91dFVuaXQgbGluZUJveEhlaWdodCkgY29u
c3Q7Ci0gICAgSW5saW5lTGV2ZWxCb3g6OkxheW91dEJvdW5kcyBsYXlvdXRCb3VuZHNGb3JJbmxp
bmVCb3hTdWJ0cmVlKGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94TGlzdCYgbm9uUm9vdElu
bGluZUxldmVsQm94ZXMsIHNpemVfdCBpbmxpbmVCb3hJbmRleCkgY29uc3Q7CisgICAgSW5saW5l
TGV2ZWxCb3g6OkFzY2VudEFuZERlc2NlbnQgbGF5b3V0Qm91bmRzRm9ySW5saW5lQm94U3VidHJl
ZShjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveExpc3QmIG5vblJvb3RJbmxpbmVMZXZlbEJv
eGVzLCBzaXplX3QgaW5saW5lQm94SW5kZXgpIGNvbnN0OwogCiAgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5JiBmb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBtX2lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTsgfQogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>