<?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>205706</bug_id>
          
          <creation_ts>2020-01-02 19:16:38 -0800</creation_ts>
          <short_desc>Enable the offset assertion in HTMLTextFormControlElement::indexForPosition</short_desc>
          <delta_ts>2020-02-13 16:20:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=207724</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>207725</dependson>
          <blocked>207724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602314</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-02 19:16:38 -0800</bug_when>
    <thetext>The assertion was guarded by a #ifndef ASSERT_DISABLED.  ASSERT_DISABLED is always defined, either as 0 or 1.  Hence, this assertion code is never ever built.  Changing the #ifndef ASSERT_DISABLED to #if !ASSERT_DISABLED results in a build error.  We should either fix this assertion, or remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602315</commentid>
    <comment_count>1</comment_count>
      <attachid>386653</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-02 19:20:14 -0800</bug_when>
    <thetext>Created attachment 386653
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602708</commentid>
    <comment_count>2</comment_count>
      <attachid>386653</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-03 19:43:35 -0800</bug_when>
    <thetext>Comment on attachment 386653
proposed patch.

I think this was valuable assertion code; too bad it was left turned off. I understand the code didn’t compile when enabled, but it shouldn’t be too hard to fix. I think it’s likely worth fixing rather than deleting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602710</commentid>
    <comment_count>3</comment_count>
      <attachid>386653</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-03 19:50:04 -0800</bug_when>
    <thetext>Comment on attachment 386653
proposed patch.

Let&apos;s fix the assertion instead of deleting it as Darin requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602711</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-03 19:51:00 -0800</bug_when>
    <thetext>By the way, there&apos;s a chance that when we turn on the assertion we&apos;ll see failures, which will mean we&apos;ll have to turn it back off again until someone can investigate!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606255</commentid>
    <comment_count>5</comment_count>
      <attachid>387618</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-13 22:42:02 -0800</bug_when>
    <thetext>Created attachment 387618
Enables the assertion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606261</commentid>
    <comment_count>6</comment_count>
      <attachid>387621</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-13 23:01:31 -0800</bug_when>
    <thetext>Created attachment 387621
Fixed GTK+ builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606263</commentid>
    <comment_count>7</comment_count>
      <attachid>387621</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-13 23:04:21 -0800</bug_when>
    <thetext>Comment on attachment 387621
Fixed GTK+ builds

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

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:647
&gt;      // https://bugs.webkit.org/show_bug.cgi?id=205706.

Please remove the above FIXME and bug url comment now that you’re fixing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606265</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-13 23:09:27 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #7)
&gt; Comment on attachment 387621 [details]
&gt; Fixed GTK+ builds
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387621&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:647
&gt; &gt;      // https://bugs.webkit.org/show_bug.cgi?id=205706.
&gt; 
&gt; Please remove the above FIXME and bug url comment now that you’re fixing it.

Oh oops, removed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606274</commentid>
    <comment_count>9</comment_count>
      <attachid>387625</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-13 23:21:58 -0800</bug_when>
    <thetext>Created attachment 387625
Updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606425</commentid>
    <comment_count>10</comment_count>
      <attachid>387625</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-14 09:07:37 -0800</bug_when>
    <thetext>Comment on attachment 387625
Updated

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2035
&gt; +    return WebCore::indexForVisiblePosition(*node, position, { TextIteratorLegnthOption::GenerateSpacesForReplacedElements });

Typo here: &quot;legnth&quot;.

&gt; Source/WebCore/editing/TextIteratorBehavior.h:64
&gt;  typedef unsigned short TextIteratorBehavior;

Should move this one to OptionSet too later, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606768</commentid>
    <comment_count>11</comment_count>
      <attachid>387747</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 19:34:03 -0800</bug_when>
    <thetext>Created attachment 387747
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606769</commentid>
    <comment_count>12</comment_count>
      <attachid>387747</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 19:34:28 -0800</bug_when>
    <thetext>Comment on attachment 387747
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606777</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 21:07:21 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 387625 [details]
&gt; Updated
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2035
&gt; &gt; +    return WebCore::indexForVisiblePosition(*node, position, { TextIteratorLegnthOption::GenerateSpacesForReplacedElements });
&gt; 
&gt; Typo here: &quot;legnth&quot;.

Fixed.

&gt; &gt; Source/WebCore/editing/TextIteratorBehavior.h:64
&gt; &gt;  typedef unsigned short TextIteratorBehavior;
&gt; 
&gt; Should move this one to OptionSet too later, right?

Yes, but in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606783</commentid>
    <comment_count>14</comment_count>
      <attachid>387751</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 21:15:50 -0800</bug_when>
    <thetext>Created attachment 387751
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606785</commentid>
    <comment_count>15</comment_count>
      <attachid>387751</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 21:16:07 -0800</bug_when>
    <thetext>Comment on attachment 387751
Patch for landing

Wait for EWS again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606794</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-14 21:57:41 -0800</bug_when>
    <thetext>Committed r254557: &lt;https://trac.webkit.org/changeset/254557&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606795</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-14 21:58:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58595369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618739</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 15:17:21 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 207725</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386653</attachid>
            <date>2020-01-02 19:20:14 -0800</date>
            <delta_ts>2020-01-13 22:41:59 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-205706.patch</filename>
            <type>text/plain</type>
            <size>2102</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Mzk4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTAyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgbmV2ZXIgZW5hYmxlZCBh
c3NlcnRpb24gaW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yUG9zaXRpb24o
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTcw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBh
c3NlcnRpb24gd2FzIGd1YXJkZWQgYnkgYSAjaWZuZGVmIEFTU0VSVF9ESVNBQkxFRC4gIEFTU0VS
VF9ESVNBQkxFRCBpcyBhbHdheXMKKyAgICAgICAgZGVmaW5lZCwgZWl0aGVyIGFzIDAgb3IgMS4g
IEhlbmNlLCB0aGlzIGFzc2VydGlvbiBjb2RlIGlzIG5ldmVyIGV2ZXIgYnVpbHQuCisgICAgICAg
IENoYW5naW5nIHRoZSAjaWZuZGVmIEFTU0VSVF9ESVNBQkxFRCB0byAjaWYgIUFTU0VSVF9ESVNB
QkxFRCByZXN1bHRzIGluIGEgYnVpbGQKKyAgICAgICAgZXJyb3IuICBUaGlzIHBhdGNoIGZpeGVz
IHRoaXMgYnkgcmVtb3ZpbmcgdGhlIGFzc2VydGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yUG9zaXRpb24gY29uc3QpOgorCiAyMDIwLTAxLTAyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgWE1MU2VyaWFsaXplciBk
b2Vzbid0IGNvcnJlY3RseSBlbmNvZGUgZW50aXRpZXMgaW4gPHN0eWxlPiBlbGVtZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAkocmV2aXNpb24gMjUzOTg4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MiwxNSArNjQyLDcgQEAg
dW5zaWduZWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZAogICAgIH0KIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IGlubmVyVGV4dFZhbHVlKCkubGVuZ3RoKCk7Ci0gICAgaW5kZXggPSBz
dGQ6Om1pbihpbmRleCwgbGVuZ3RoKTsgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGNh
bGwgaW5uZXJUZXh0VmFsdWUoKSBqdXN0IHRvIGlnbm9yZSB0aGUgbGFzdCBMRi4gU2VlIGZpbmlz
aFRleHQuCi0jaWZuZGVmIEFTU0VSVF9ESVNBQkxFRAotICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb24gPSBwYXNzZWRQb3NpdGlvbjsKLSAgICB1bnNpZ25lZCBpbmRleENvbXB1dGVk
QnlWaXNpYmxlUG9zaXRpb24gPSAwOwotICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOb3ROdWxs
KCkpCi0gICAgICAgIGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9IFdlYkNvcmU6Omlu
ZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGlubmVyVGV4dCwgdmlzaWJsZVBvc2l0aW9uLCBmYWxzZSAv
KiBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gKi8pOwotICAgIEFTU0VSVChpbmRleCA9PSBpbmRl
eENvbXB1dGVkQnlWaXNpYmxlUG9zaXRpb24pOwotI2VuZGlmCi0gICAgcmV0dXJuIGluZGV4Owor
ICAgIHJldHVybiBzdGQ6Om1pbihpbmRleCwgbGVuZ3RoKTsgLy8gRklYTUU6IFdlIHNob3VsZG4n
dCBoYXZlIHRvIGNhbGwgaW5uZXJUZXh0VmFsdWUoKSBqdXN0IHRvIGlnbm9yZSB0aGUgbGFzdCBM
Ri4gU2VlIGZpbmlzaFRleHQuCiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387618</attachid>
            <date>2020-01-13 22:42:02 -0800</date>
            <delta_ts>2020-01-13 23:01:29 -0800</delta_ts>
            <desc>Enables the assertion</desc>
            <filename>bug-205706-20200113224201.patch</filename>
            <type>text/plain</type>
            <size>22042</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAxLTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFz
c2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaXhlcyB0aGUgZXJyb25lb3VzbHkgZGlzYWJsZWQgZGVidWcgYXNzZXJ0aW9uIGluIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9uLgorCisgICAgICAgIEl0IGFs
c28gZml4ZXMgdGhlIGJ1ZyB0aGF0IGl0IHdhcyBhc3NlcnRpbmcgZXZlbiB3aGVuIFZpc2libGVQ
b3NpdGlvbiB3YXMgbnVsbCwgYW5kIGNvbXB1dGVkIGEgd3Jvbmcgb2Zmc2V0CisgICAgICAgIHdo
ZW4gdGhlIGVudGlyZSBpbnB1dCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIChlLmcuIGJlY2F1ZSBo
ZWlnaHQgaXMgMHB4KS4KKworICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIGFuZCBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG5vdyB0YWtlcyBhbiBPcHRp
b25TZXQgb2YKKyAgICAgICAgbmV3bHkgYWRkZWQgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JMZW5n
dGhPcHRpb24gaW5zdGVhZCBvZiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BhY2Ug
c2hvdWxkIGJlCisgICAgICAgIGdlbmVyYXRlZCBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBNb3N0
IGNvZGUgY2hhbmdlcyBhcmUgZHVlIHRvIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6CisgICAgICAg
ICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6CisgICAgICAgICog
ZWRpdGluZy9FZGl0aW5nLmg6CisgICAgICAgIChXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3Np
dGlvbik6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YmVoYXZpb3JGcm9tTGVnbnRoT3B0aW9ucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24pOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmluZGV4Rm9yUG9zaXRpb24gY29uc3QpOiBFbmFibGVkIHRoZSBhc3NlcnRp
b24gd2hlbiBWaXNpYmxlUG9zaXRpb24KKyAgICAgICAgaXMgbm90IG51bGwsIGFuZCBmaXhlZCB0
aGUgYnVnIHRoYXQgdGhlIG9mZnNldCBjb21wdXRlZCBmcm9tIFZpc2libGVQb3NpdGlvbiB3ZXJl
IGFsd2F5cyAwIHdoZW4gdGhlIGlucHV0CisgICAgICAgIGVsZW1lbnQgaXMgbm90IHZpc2libGUg
KGUuZy4gaGFzIDBweCBzaXplIG9yIGhhcyB2aXNpYmlsaXR5OiBoaWRkZW4pLgorICAgICAgICAq
IHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6
CisKIDIwMjAtMDEtMTMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBQbGF5U3RhdGlvbiBhbmQgY2xhbmct
Y2wuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzMsNyArMTkzMyw3IEBAIFJl
ZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGUKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9kb2N1bWVudCwg
c3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigp
LCB0cnVlKTsKKyAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVT
cGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWlu
VGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdldE9mZnNldCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAzMiwxMiArMjAzMiwxMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aW5kZXhGb3JWCiAjaWYgVVNFKEFUSykKICAgICAvLyBXZSBuZWVkIHRvIGNvbnNp
ZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFzIHRoZXkgd2lsbCBiZQogICAgIC8vIHBy
ZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3RlcicgKDB4RkZGQyku
Ci0gICAgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSB0cnVlOworICAgIHJldHVybiBX
ZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24sIHsgVGV4dEl0
ZXJhdG9yTGVnbnRoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7
CiAjZWxzZQotICAgIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID0gZmFsc2U7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKCpub2RlLCBwb3NpdGlvbik7
CiAjZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigq
bm9kZSwgcG9zaXRpb24sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CiB9CiAKIEVsZW1lbnQq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gMjU0NDcyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1Miw4ICsyNTIsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5
bGUoCiAKICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZp
cnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5w
YXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpj
cmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZSksIHZpc2libGVFbmQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IHN0
YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRy
dWUpOwotICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFu
Z2UucHRyKCksIHRydWUpOworICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2Vu
ZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOworICAgIGludCBlbmRJbmRleCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAKICAgICBW
aXNpYmxlUG9zaXRpb24gcGFyYWdyYXBoU3RhcnQoc3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3Rh
cnQpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFN0YXJ0KGVuZE9mUGFyYWdy
YXBoKHBhcmFncmFwaFN0YXJ0KS5uZXh0KCkpOwpAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQgQXBw
bHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSgKICAgICB9CiAgICAgCiAgICAgewotICAg
ICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgYXV0byBlbmRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGVuZElu
ZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgeyBUZXh0SXRl
cmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsK
KyAgICAgICAgYXV0byBlbmRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoc2NvcGUsIGVuZEluZGV4LCAwLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgICAgICBpZiAoc3RhcnRS
YW5nZSAmJiBlbmRSYW5nZSkKICAgICAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKHN0YXJ0UmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKSwgZW5kUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJ
KHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMzLDEzICsxNDMzLDEzIEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgICAgIHN0YXJ0SW5k
ZXggPSAwOwogICAgICAgICAgICAgaWYgKHN0YXJ0SW5QYXJhZ3JhcGgpIHsKICAgICAgICAgICAg
ICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQo
KSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCkpOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVu
Z3RoKHN0YXJ0UmFuZ2UucHRyKCksIHRydWUpOworICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgg
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJh
dG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVuZEluZGV4ID0gMDsKICAgICAgICAgICAgIGlm
IChlbmRJblBhcmFncmFwaCkgewogICAgICAgICAgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVu
dCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBlbmRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHRydWUpOworICAg
ICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5n
ZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE1
MTAsNyArMTUxMCw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgK
ICAgICAgICAgZWRpdGFibGVSb290ID0gJmRvY3VtZW50KCk7CiAKICAgICBhdXRvIHN0YXJ0VG9E
ZXN0aW5hdGlvblJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9u
SW5Ob2RlKGVkaXRhYmxlUm9vdC5nZXQoKSksIGRlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCku
cGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGRlc3RpbmF0aW9uSW5kZXggPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdlLnB0cigpLCB0cnVl
KTsKKyAgICBkZXN0aW5hdGlvbkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFy
dFRvRGVzdGluYXRpb25SYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246Okdl
bmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKIAogICAgIHNldEVuZGluZ1NlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKGRlc3RpbmF0aW9uLCBvcmlnaW5hbElzRGlyZWN0aW9uYWwp
KTsKICAgICBBU1NFUlQoZW5kaW5nU2VsZWN0aW9uKCkuaXNDYXJldE9yUmFuZ2UoKSk7CkBAIC0x
NTMyLDggKzE1MzIsMTAgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFw
aAogICAgICAgICAvLyBjYXVzZXMgc3BhY2VzIHRvIGJlIGNvbGxhcHNlZCBkdXJpbmcgdGhlIG1v
dmUgb3BlcmF0aW9uLiAgVGhpcyByZXN1bHRzCiAgICAgICAgIC8vIGluIGEgY2FsbCB0byByYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aCB3aXRoIGEgbG9jYXRpb24gcGFzdCB0aGUgZW5kCiAgICAg
ICAgIC8vIG9mIHRoZSBkb2N1bWVudCAod2hpY2ggd2lsbCByZXR1cm4gbnVsbCkuCi0gICAgICAg
IFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIHN0YXJ0SW5kZXgs
IDAsIHRydWUpOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbklu
ZGV4ICsgZW5kSW5kZXgsIDAsIHRydWUpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0
KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAwLAorICAgICAgICAgICAgeyBUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9
KTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIGVu
ZEluZGV4LCAwLAorICAgICAgICAgICAgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVy
YXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAgICAgaWYgKHN0YXJ0ICYmIGVu
ZCkKICAgICAgICAgICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0
LT5zdGFydFBvc2l0aW9uKCksIGVuZC0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNLCBvcmln
aW5hbElzRGlyZWN0aW9uYWwpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODQsMTQgKzEwODQsMTQgQEAgaW50IGluZGV4Rm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libAogICAgIH0KIAogICAgIGF1dG8gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlLmdldCgpKSwg
cG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIHJldHVybiBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICByZXR1cm4gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRp
b246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKIH0KIAogLy8gRklYTUU6
IE1lcmdlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgb25lIGFib3ZlLgotaW50IGluZGV4Rm9yVmlz
aWJsZVBvc2l0aW9uKE5vZGUmIG5vZGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKK2ludCBpbmRleEZvclZpc2li
bGVQb3NpdGlvbihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbiwgT3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gb3B0aW9ucykKIHsKICAg
ICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLmRvY3VtZW50KCksIGZpcnN0UG9zaXRp
b25Jbk5vZGUoJm5vZGUpLCB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgocmFuZ2UucHRyKCksIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CisgICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIG9wdGlvbnMpOwogfQogCiBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvZmZzZXQpCkBAIC0xMTA2LDcgKzExMDYsNyBA
QCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpCiAKIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5vZGUqIHNj
b3BlKQogewotICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgdHJ1ZSk7CisgICAgYXV0byByYW5nZSA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGluZGV4LCAwLCB7IFRl
eHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRz
IH0pOwogICAgIC8vIENoZWNrIGZvciBhbiBpbnZhbGlkIGluZGV4LiBDZXJ0YWluIGVkaXRpbmcg
b3BlcmF0aW9ucyBpbnZhbGlkYXRlIGluZGljZXMgYmVjYXVzZSAKICAgICAvLyBvZiBwcm9ibGVt
cyB3aXRoIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRp
b25zLgogICAgIGlmICghcmFuZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAkocmV2
aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlBv
c2l0aW9uLmgiCisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0OSw3ICsxNTEsNyBAQCBib29sIGxpbmVCcmVha0V4aXN0
c0F0VmlzaWJsZVBvc2l0aW9uKGNvCiBXRUJDT1JFX0VYUE9SVCBpbnQgY29tcGFyZVBvc2l0aW9u
cyhjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIAogV0VC
Q09SRV9FWFBPUlQgaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIFJlZlB0cjxDb250YWluZXJOb2RlPiYgc2NvcGUpOwotaW50IGluZGV4Rm9yVmlzaWJs
ZVBvc2l0aW9uKE5vZGUmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGZvclNlbGVjdGlv
blByZXNlcnZhdGlvbik7CitpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYsIE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+ID0g
eyB9KTsKIFdFQkNPUkVfRVhQT1JUIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQ
b3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgaW50IG9mZnNldCk7CiBX
RUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50
IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSk7CiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9ySW5kZXhVc2luZ0NoYXJhY3Rlckl0ZXJhdG9yKE5vZGUmLCBpbnQgaW5kZXgpOyAv
LyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdGhpcyB2ZXJzaW9uPwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzk2LDEw
ICsyMzk2LDIwIEBAIHNpemVfdCBTZWFyY2hCdWZmZXI6Omxlbmd0aCgpIGNvbnN0CiAKIC8vIC0t
LS0tLS0tCiAKLWludCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiByYW5n
ZSwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitzdGF0aWMgVGV4dEl0ZXJhdG9yQmVo
YXZpb3IgYmVoYXZpb3JGcm9tTGVnbnRoT3B0aW9ucyhPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uPiBvcHRpb25zKQoreworICAgIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1l
bnRzKSkKKyAgICAgICAgYmVoYXZpb3IgfD0gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnM7CisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoVGV4dEl0
ZXJhdG9yTGVuZ3RoT3B0aW9uOjpJZ25vcmVWaXNpYmlsaXR5KSkKKyAgICAgICAgYmVoYXZpb3Ig
fD0gVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eTsKKyAgICByZXR1cm4gYmVoYXZp
b3I7Cit9CisKK2ludCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiByYW5n
ZSwgT3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLCBmb3JT
ZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpCisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGJl
aGF2aW9yRnJvbUxlZ250aE9wdGlvbnMob3B0aW9ucykpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5j
ZSgpKQogICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgIHJldHVybiBs
ZW5ndGg7CiB9CkBAIC0yNDE4LDcgKzI0MjgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnNp
ZGVSZXBsYWNlZEVsZW1lCiAgICAgcmV0dXJuIG5vZGUgJiYgaXNSZW5kZXJlclJlcGxhY2VkRWxl
bWVudChub2RlLT5yZW5kZXJlcigpKTsKIH0KIAotUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFu
Z2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlv
bikKK1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCwgT3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gb3B0aW9ucykKIHsKICAgICBS
ZWY8UmFuZ2U+IHJlc3VsdFJhbmdlID0gc2NvcGUtPmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsK
IApAQCAtMjQyOCw3ICsyNDM4LDcgQEAgUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvYwogCiAgICAgUmVmPFJhbmdlPiB0ZXh0UnVuUmFuZ2UgPSByYW5nZU9mQ29udGVudHMo
KnNjb3BlKTsKIAotICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0UnVuUmFuZ2UucHRyKCksIGZvclNl
bGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zIDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsKKyAgICBU
ZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBiZWhhdmlvckZyb21MZWdudGhPcHRp
b25zKG9wdGlvbnMpKTsKICAgICAKICAgICAvLyBGSVhNRTogdGhlIGF0RW5kKCkgY2hlY2sgc2hv
dWxkbid0IGJlIG5lY2Vzc2FyeSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYyODk+LgogICAgIGlmICghcmFuZ2VMb2NhdGlvbiAmJiAhcmFu
Z2VMZW5ndGggJiYgaXQuYXRFbmQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5oCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
TGluZUxheW91dFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIApAQCAt
MTIxLDggKzEyMiw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBUZXh0SXRlcmF0b3JDb3B5YWJsZVRl
eHQmIGNvcHlhYmxlVGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fY29w
eWFibGVUZXh0OyB9CiAgICAgdm9pZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIpIGNvbnN0IHsgY29weWFibGVUZXh0KCkuYXBwZW5kVG9TdHJpbmdCdWls
ZGVyKGJ1aWxkZXIpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgaW50IHJhbmdlTGVu
Z3RoKGNvbnN0IFJhbmdlKiwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2Up
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50
IHJhbmdlTGVuZ3RoLCBib29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGludCByYW5nZUxlbmd0aChjb25zdCBSYW5nZSosIE9w
dGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+ID0geyB9KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250
YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgT3B0
aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKE5vZGUqIHNjb3Bl
LCBjb25zdCBSYW5nZSosIHNpemVfdCYgbG9jYXRpb24sIHNpemVfdCYgbGVuZ3RoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJhbmdlPiBzdWJyYW5nZShSYW5nZSYgZW50aXJlUmFu
Z2UsIGludCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFyYWN0ZXJDb3VudCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgJKHJldmlzaW9u
IDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNCArNjMsOSBAQCBlbnVtIFRleHRJdGVyYXRvckJlaGF2
aW9yRmxhZyB7CiAKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVGV4dEl0ZXJhdG9yQmVoYXZpb3I7
CiAKK2VudW0gY2xhc3MgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uIDogdWludDhfdCB7CisgICAg
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gMSA8PCAwLAorICAgIElnbm9yZVZp
c2liaWxpdHkgPSAxIDw8IDEsCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNw
cAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDExICs2OCwxMiBAQCB2b2lk
IERpY3RhdGlvbkNvbW1hbmRJT1M6OmRvQXBwbHkoKQogCiAgICAgLy8gRklYTUU6IEFkZCB0aGUg
cmVzdWx0IG1hcmtlciB1c2luZyBhIFBvc2l0aW9uIGNhY2hlZCBiZWZvcmUgcmVzdWx0cyBhcmUg
aW5zZXJ0ZWQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBUZXh0SXRlcmF0b3JzLgogICAgIGF1dG8g
cmFuZ2VUb0VuZCA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgY3JlYXRlTGVnYWN5RWRpdGlu
Z1Bvc2l0aW9uKChOb2RlICopcm9vdCwgMCksIGFmdGVyUmVzdWx0cy5kZWVwRXF1aXZhbGVudCgp
KTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9F
bmQucHRyKCksIHRydWUpOworICAgIGludCBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgocmFuZ2VUb0VuZC5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVy
YXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICBpbnQgc3RhcnRJbmRleCA9IGVu
ZEluZGV4IC0gcmVzdWx0TGVuZ3RoOwogCiAgICAgaWYgKHN0YXJ0SW5kZXggPj0gMCkgewotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCBzdGFydEluZGV4
LCBlbmRJbmRleCwgdHJ1ZSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCksIHN0YXJ0SW5kZXgsIGVuZEluZGV4LAorICAgICAgICAgICAgeyBUZXh0SXRl
cmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsK
ICAgICAgICAgQVNTRVJUKHJlc3VsdFJhbmdlKTsgLy8gRklYTUU6IFdoYXQgZ3VhcmFudGVlcyB0
aGlzPwogICAgICAgICBkb2N1bWVudCgpLm1hcmtlcnMoKS5hZGREaWN0YXRpb25SZXN1bHRNYXJr
ZXIoKnJlc3VsdFJhbmdlLCBtX21ldGFkYXRhKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24g
MjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MywxNiArNjQzLDE1IEBAIHVuc2lnbmVkIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmQKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGlubmVy
VGV4dFZhbHVlKCkubGVuZ3RoKCk7CiAgICAgaW5kZXggPSBzdGQ6Om1pbihpbmRleCwgbGVuZ3Ro
KTsgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGNhbGwgaW5uZXJUZXh0VmFsdWUoKSBq
dXN0IHRvIGlnbm9yZSB0aGUgbGFzdCBMRi4gU2VlIGZpbmlzaFRleHQuCi0jaWYgMAogICAgIC8v
IEZJWE1FOiBUaGlzIGFzc2VydGlvbiBjb2RlIHdhcyBuZXZlciBidWlsdCwgaGFzIGJpdCByb3R0
ZWQsIGFuZCBuZWVkcyB0byBiZSBmaXhlZCBiZWZvcmUgaXQgY2FuIGJlIGVuYWJsZWQ6CiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTcwNi4KICNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24gPSBwYXNz
ZWRQb3NpdGlvbjsKLSAgICB1bnNpZ25lZCBpbmRleENvbXB1dGVkQnlWaXNpYmxlUG9zaXRpb24g
PSAwOwotICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgIGluZGV4
Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9IFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0
aW9uKGlubmVyVGV4dCwgdmlzaWJsZVBvc2l0aW9uLCBmYWxzZSAvKiBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24gKi8pOwotICAgIEFTU0VSVChpbmRleCA9PSBpbmRleENvbXB1dGVkQnlWaXNpYmxl
UG9zaXRpb24pOwotI2VuZGlmCisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc05vdE51bGwoKSkg
eworICAgICAgICB1bnNpZ25lZCBpbmRleENvbXB1dGVkQnlWaXNpYmxlUG9zaXRpb24gPSBXZWJD
b3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigqaW5uZXJUZXh0LCB2aXNpYmxlUG9zaXRpb24s
CisgICAgICAgICAgICB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNG
b3JSZXBsYWNlZEVsZW1lbnRzLCBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246Oklnbm9yZVZpc2li
aWxpdHkgfSk7CisgICAgICAgIEFTU0VSVChpbmRleCA9PSBpbmRleENvbXB1dGVkQnlWaXNpYmxl
UG9zaXRpb24pOworICAgIH0KICNlbmRpZgogICAgIHJldHVybiBpbmRleDsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDcg
KzY1Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQKIHN0YXRp
YyBpbnQgdGV4dERpc3RhbmNlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCkKIHsKICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShzdGFydC5hbmNob3JOb2Rl
KCktPmRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVy
YXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIGV2ZW50KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjAtMDEtMTMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRW5h
YmxlIHRoZSBvZmZzZXQgYXNzZXJ0aW9uIGluIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpp
bmRleEZvclBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6cmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dCk6CisKIDIwMjAtMDEtMTMgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkgc2hvdWxkIGJlIGZvcndhcmQgZGVjbGFyZWQg
bm90IGltcG9ydGVkIGluIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NTcsNyArMTk1Nyw3IEBA
IHZvaWQgV2ViUGFnZTo6c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmkKIHN0YXRpYyBSZWZQdHI8
UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbiwgUmVmUHRyPFJhbmdlPiBvcmlnaW5hbFJhbmdlLCBjb25zdCBTdHJpbmcmIG1h
dGNoVGV4dCwgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSkKIHsKICAgICBhdXRvIHJhbmdl
ID0gUmFuZ2U6OmNyZWF0ZShzZWxlY3Rpb25SYW5nZS0+b3duZXJEb2N1bWVudCgpLCBzZWxlY3Rp
b25SYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICB1bnNpZ25lZCB0
YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB7IFRl
eHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRz
IH0pOwogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4dCgqc2VsZWN0aW9uUmFuZ2UuZ2V0
KCksIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387621</attachid>
            <date>2020-01-13 23:01:31 -0800</date>
            <delta_ts>2020-01-13 23:21:57 -0800</delta_ts>
            <desc>Fixed GTK+ builds</desc>
            <filename>bug-205706-20200113230130.patch</filename>
            <type>text/plain</type>
            <size>24197</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAxLTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFz
c2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaXhlcyB0aGUgZXJyb25lb3VzbHkgZGlzYWJsZWQgZGVidWcgYXNzZXJ0aW9uIGluIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9uLgorCisgICAgICAgIEl0IGFs
c28gZml4ZXMgdGhlIGJ1ZyB0aGF0IGl0IHdhcyBhc3NlcnRpbmcgZXZlbiB3aGVuIFZpc2libGVQ
b3NpdGlvbiB3YXMgbnVsbCwgYW5kIGNvbXB1dGVkIGEgd3Jvbmcgb2Zmc2V0CisgICAgICAgIHdo
ZW4gdGhlIGVudGlyZSBpbnB1dCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIChlLmcuIGJlY2F1ZSBo
ZWlnaHQgaXMgMHB4KS4KKworICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIGFuZCBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG5vdyB0YWtlcyBhbiBPcHRp
b25TZXQgb2YKKyAgICAgICAgbmV3bHkgYWRkZWQgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JMZW5n
dGhPcHRpb24gaW5zdGVhZCBvZiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BhY2Ug
c2hvdWxkIGJlCisgICAgICAgIGdlbmVyYXRlZCBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBNb3N0
IGNvZGUgY2hhbmdlcyBhcmUgZHVlIHRvIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAg
ICAgICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICog
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWhhdmlvckZyb21M
ZWdudGhPcHRpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9E
aWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1h
bmRJT1M6OmRvQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6Omlu
ZGV4Rm9yUG9zaXRpb24gY29uc3QpOiBFbmFibGVkIHRoZSBhc3NlcnRpb24gd2hlbiBWaXNpYmxl
UG9zaXRpb24KKyAgICAgICAgaXMgbm90IG51bGwsIGFuZCBmaXhlZCB0aGUgYnVnIHRoYXQgdGhl
IG9mZnNldCBjb21wdXRlZCBmcm9tIFZpc2libGVQb3NpdGlvbiB3ZXJlIGFsd2F5cyAwIHdoZW4g
dGhlIGlucHV0CisgICAgICAgIGVsZW1lbnQgaXMgbm90IHZpc2libGUgKGUuZy4gaGFzIDBweCBz
aXplIG9yIGhhcyB2aXNpYmlsaXR5OiBoaWRkZW4pLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisKIDIwMjAtMDEtMTMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xs
YmFyIGhpZGluZyBvbiBpT1MgdmlhIDo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25l
IH0gZG9lc24ndCB3b3JrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzMsNyAr
MTkzMyw3IEBAIFJlZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGUKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlv
bjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgIHJldHVybiBmaW5k
Q2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdl
dE9mZnNldCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjU0NDcy
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzMiwxMiArMjAzMiwxMCBAQCBpbnQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWCiAjaWYgVVNFKEFUSykKICAgICAvLyBXZSBu
ZWVkIHRvIGNvbnNpZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFzIHRoZXkgd2lsbCBi
ZQogICAgIC8vIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3Rl
cicgKDB4RkZGQykuCi0gICAgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSB0cnVlOwor
ICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRp
b24sIHsgVGV4dEl0ZXJhdG9yTGVnbnRoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgfSk7CiAjZWxzZQotICAgIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID0g
ZmFsc2U7CisgICAgcmV0dXJuIFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKCpub2Rl
LCBwb3NpdGlvbik7CiAjZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CiB9
CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvb3RFZGl0YWJsZUVsZW1l
bnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgdm9pZCBnZXRT
ZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0CiAKICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBv
ZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2Ug
dmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0g
ICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAg
c3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB7IFRleHRJdGVyYXRvckxl
bmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pKTsKICAgICBh
dXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdl
U3RhcnQsIG5vZGVSYW5nZUVuZCk7CiAgICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0
aWwuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NywxMCAr
MjQ3LDEwIEBAIEFYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2UKICAgICAg
ICAgb2Zmc2V0ID0gMDsKICAgICBlbHNlIGlmICghaXNTdGFydE9mTGluZShlbmRQb3NpdGlvbikp
IHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbi5wcmV2aW91cygpKTsKLSAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSkgKyAxOworICAgICAgICBvZmZzZXQgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB7IFRleHRJdGVyYXRvckxlbmd0
aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pICsgMTsKICAgICB9
IGVsc2UgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpH
ZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZpcnN0VW5pZ25vcmVkUGFyZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCAr
MjUyLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKAogCiAgICAg
YXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9u
SW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwogICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKLSAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0
cnVlKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3Rh
cnRSYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2Vz
Rm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogCiAgICAgVmlzaWJsZVBvc2l0
aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFydChlbmRPZlBhcmFncmFwaChwYXJhZ3Jh
cGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgYXV0byBz
dGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29w
ZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1
ZSk7CisgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CisgICAgICAgIGF1
dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBlbmRJbmRleCwgMCwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3Bh
Y2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5k
UmFuZ2UpCiAgICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAy
NTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzMywxMyArMTQzMywxMyBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgICAgICBzdGFydEluZGV4ID0gMDsKICAg
ICAgICAgICAgIGlmIChzdGFydEluUGFyYWdyYXBoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVT
dGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAg
ICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJh
bmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9w
dGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJh
Z3JhcGgpIHsKICAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHsg
VGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVu
dHMgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEwLDcgKzE1MTAs
NyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIGVk
aXRhYmxlUm9vdCA9ICZkb2N1bWVudCgpOwogCiAgICAgYXV0byBzdGFydFRvRGVzdGluYXRpb25S
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShlZGl0
YWJsZVJvb3QuZ2V0KCkpLCBkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKLSAgICBkZXN0aW5hdGlvbkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgZGVz
dGluYXRpb25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0
aW9uUmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNl
c0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAgICAgQVNT
RVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwpAQCAtMTUzMiw4ICsxNTMy
LDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAg
Ly8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3ZlIG9wZXJhdGlv
bi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAgICAvLyBvZiB0
aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAgICAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0
YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAwLCB0cnVlKTsK
LSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIGVuZElu
ZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5h
dGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwKKyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CisgICAgICAg
IFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwK
KyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpCiAgICAgICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydC0+c3RhcnRQb3Np
dGlvbigpLCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVj
dGlvbmFsKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZp
c2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIGludCBpbmRleEZvclZpc2libGVQb3Np
dGlvbihjb25zdCBWaXNpYmwKICAgICB9CiAKICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZS5nZXQoKSksIHBvc2l0aW9uLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0
ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB0aGlz
IGZ1bmN0aW9uIHdpdGggdGhlIG9uZSBhYm92ZS4KLWludCBpbmRleEZvclZpc2libGVQb3NpdGlv
bihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgYm9v
bCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
Tm9kZSYgbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIE9wdGlv
blNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKCZu
b2RlKSwgdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0
cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCBvcHRpb25zKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uLCBpbnQgb2Zmc2V0KQpAQCAtMTEwNiw3ICsxMTA2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsKLSAg
ICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgaW5kZXgsIDAsIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgeyBUZXh0SXRlcmF0b3JM
ZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAv
LyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRleC4gQ2VydGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMg
aW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2UgCiAgICAgLy8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0
SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucy4KICAgICBp
ZiAoIXJhbmdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgJKHJldmlzaW9uIDI1NDQ3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw4ICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQb3NpdGlvbi5oIgor
I2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xNDksNyArMTUxLDcgQEAgYm9vbCBsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQ
b3NpdGlvbihjbwogV0VCQ09SRV9FWFBPUlQgaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVfRVhQT1JU
IGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQ
dHI8Q29udGFpbmVyTm9kZT4mIHNjb3BlKTsKLWludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihO
b2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24pOworaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKE5vZGUmLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mLCBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiA9IHsgfSk7CiBXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRo
T2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBvZmZzZXQpOwogV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29u
dGFpbmVyTm9kZSogc2NvcGUpOwogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvcklu
ZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiwgaW50IGluZGV4KTsgLy8gRklYTUU6IFdo
eSBkbyB3ZSBuZWVkIHRoaXMgdmVyc2lvbj8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5NiwxMCArMjM5NiwyMCBA
QCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1p
bnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uKQorc3RhdGljIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2
aW9yRnJvbUxlZ250aE9wdGlvbnMoT3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4g
b3B0aW9ucykKK3sKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvciA9IFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvcjsKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhUZXh0SXRlcmF0
b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cykpCisgICAg
ICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFRleHRJdGVyYXRvckxlbmd0
aE9wdGlvbjo6SWdub3JlVmlzaWJpbGl0eSkpCisgICAgICAgIGJlaGF2aW9yIHw9IFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHk7CisgICAgcmV0dXJuIGJlaGF2aW9yOworfQorCitp
bnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIE9wdGlvblNl
dDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgZm9yU2VsZWN0aW9uUHJl
c2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQu
YWR2YW5jZSgpKQorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLCBiZWhhdmlvckZyb21M
ZWdudGhPcHRpb25zKG9wdGlvbnMpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAg
ICAgbGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQpA
QCAtMjQxOCw3ICsyNDI4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW5zaWRlUmVwbGFjZWRF
bGVtZQogICAgIHJldHVybiBub2RlICYmIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQobm9kZS0+
cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24s
IGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitSZWZQdHI8
UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVy
Tm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIE9wdGlvblNl
dDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgUmVmPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CiAKQEAgLTI0Mjgs
NyArMjQzOCw3IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2MKIAog
ICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CiAK
LSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgVGV4dEl0ZXJhdG9y
IGl0KHRleHRSdW5SYW5nZS5wdHIoKSwgYmVoYXZpb3JGcm9tTGVnbnRoT3B0aW9ucyhvcHRpb25z
KSk7CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBu
ZWNlc3NhcnksIHdvcmthcm91bmQgZm9yIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mjg5Pi4KICAgICBpZiAoIXJhbmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYm
IGl0LmF0RW5kKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAko
cmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxpbmVMYXlvdXRU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJl
aGF2aW9yLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAgLTEyMSw4ICsxMjIs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0JiBjb3B5YWJs
ZVRleHQoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX2NvcHlhYmxlVGV4dDsg
fQogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVy
KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGludCByYW5nZUxlbmd0aChjb25zdCBS
YW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBPcHRpb25TZXQ8VGV4
dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSog
c2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIE9wdGlvblNldDxUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb24+ID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFu
Z2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hh
cmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCShyZXZpc2lvbiAyNTQ0NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDQgKzYzLDkgQEAgZW51bSBUZXh0SXRlcmF0b3JCZWhhdmlvckZsYWcgewog
CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFRleHRJdGVyYXRvckJlaGF2aW9yOwogCitlbnVtIGNs
YXNzIFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbiA6IHVpbnQ4X3QgeworICAgIEdlbmVyYXRlU3Bh
Y2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IDEgPDwgMCwKKyAgICBJZ25vcmVWaXNpYmlsaXR5ID0g
MSA8PCAxLAorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAJKHJldmlzaW9u
IDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMSArNjgsMTIgQEAgdm9pZCBEaWN0YXRpb25D
b21tYW5kSU9TOjpkb0FwcGx5KCkKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJr
ZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBp
bnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KICAgICBhdXRvIHJhbmdlVG9FbmQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigo
Tm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50
IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0
cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdl
VG9FbmQucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJl
c3VsdExlbmd0aDsKIAogICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKLSAgICAgICAgUmVmUHRy
PFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgs
IHRydWUpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgp
LCBzdGFydEluZGV4LCBlbmRJbmRleCwKKyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIEFT
U0VSVChyZXN1bHRSYW5nZSk7IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhpcz8KICAgICAg
ICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRS
YW5nZSwgbV9tZXRhZGF0YSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDMsMTYgKzY0MywxNSBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aW5kCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbm5lclRleHRWYWx1ZSgp
Lmxlbmd0aCgpOwogICAgIGluZGV4ID0gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIGlubmVyVGV4dFZhbHVlKCkganVzdCB0byBpZ25v
cmUgdGhlIGxhc3QgTEYuIFNlZSBmaW5pc2hUZXh0LgotI2lmIDAKICAgICAvLyBGSVhNRTogVGhp
cyBhc3NlcnRpb24gY29kZSB3YXMgbmV2ZXIgYnVpbHQsIGhhcyBiaXQgcm90dGVkLCBhbmQgbmVl
ZHMgdG8gYmUgZml4ZWQgYmVmb3JlIGl0IGNhbiBiZSBlbmFibGVkOgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MDYuCiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gcGFzc2VkUG9zaXRpb247
Ci0gICAgdW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gMDsKLSAgICBp
ZiAodmlzaWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKQotICAgICAgICBpbmRleENvbXB1dGVkQnlW
aXNpYmxlUG9zaXRpb24gPSBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbihpbm5lclRl
eHQsIHZpc2libGVQb3NpdGlvbiwgZmFsc2UgLyogZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uICov
KTsKLSAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsK
LSNlbmRpZgorICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKKyAgICAgICAg
dW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gV2ViQ29yZTo6aW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oKmlubmVyVGV4dCwgdmlzaWJsZVBvc2l0aW9uLAorICAgICAgICAg
ICAgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRF
bGVtZW50cywgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpJZ25vcmVWaXNpYmlsaXR5IH0pOwor
ICAgICAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsK
KyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gaW5kZXg7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiBzdGF0aWMgaW50IHRleHRE
aXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7CiAg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVu
dCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTEzICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zm
c2V0IGFzc2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3Np
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OnJh
bmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQpOgorCiAyMDIwLTAxLTEzICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5IHNob3VsZCBiZSBmb3J3YXJkIGRlY2xhcmVkIG5vdCBpbXBvcnRl
ZCBpbiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlz
aW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIFdlYlBh
Z2U6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5n
ZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24s
IFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW5nZSwgY29uc3QgU3RyaW5nJiBtYXRjaFRleHQsIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UpCiB7CiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoc2VsZWN0aW9uUmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgc2VsZWN0aW9uUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JM
ZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICBy
ZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlvblJhbmdlLmdldCgpLCBtYXRjaFRl
eHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387625</attachid>
            <date>2020-01-13 23:21:58 -0800</date>
            <delta_ts>2020-01-14 19:34:00 -0800</delta_ts>
            <desc>Updated</desc>
            <filename>bug-205706-20200113232158.patch</filename>
            <type>text/plain</type>
            <size>24197</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAxLTEzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFz
c2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaXhlcyB0aGUgZXJyb25lb3VzbHkgZGlzYWJsZWQgZGVidWcgYXNzZXJ0aW9uIGluIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9uLgorCisgICAgICAgIEl0IGFs
c28gZml4ZXMgdGhlIGJ1ZyB0aGF0IGl0IHdhcyBhc3NlcnRpbmcgZXZlbiB3aGVuIFZpc2libGVQ
b3NpdGlvbiB3YXMgbnVsbCwgYW5kIGNvbXB1dGVkIGEgd3Jvbmcgb2Zmc2V0CisgICAgICAgIHdo
ZW4gdGhlIGVudGlyZSBpbnB1dCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIChlLmcuIGJlY2F1ZSBo
ZWlnaHQgaXMgMHB4KS4KKworICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIGFuZCBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG5vdyB0YWtlcyBhbiBPcHRp
b25TZXQgb2YKKyAgICAgICAgbmV3bHkgYWRkZWQgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JMZW5n
dGhPcHRpb24gaW5zdGVhZCBvZiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BhY2Ug
c2hvdWxkIGJlCisgICAgICAgIGdlbmVyYXRlZCBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBNb3N0
IGNvZGUgY2hhbmdlcyBhcmUgZHVlIHRvIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAg
ICAgICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICog
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0
ZUVkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5k
Ojptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBl
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWhhdmlvckZyb21M
ZWdudGhPcHRpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJh
bmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAq
IGVkaXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9E
aWN0YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1h
bmRJT1M6OmRvQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6Omlu
ZGV4Rm9yUG9zaXRpb24gY29uc3QpOiBFbmFibGVkIHRoZSBhc3NlcnRpb24gd2hlbiBWaXNpYmxl
UG9zaXRpb24KKyAgICAgICAgaXMgbm90IG51bGwsIGFuZCBmaXhlZCB0aGUgYnVnIHRoYXQgdGhl
IG9mZnNldCBjb21wdXRlZCBmcm9tIFZpc2libGVQb3NpdGlvbiB3ZXJlIGFsd2F5cyAwIHdoZW4g
dGhlIGlucHV0CisgICAgICAgIGVsZW1lbnQgaXMgbm90IHZpc2libGUgKGUuZy4gaGFzIDBweCBz
aXplIG9yIGhhcyB2aXNpYmlsaXR5OiBoaWRkZW4pLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisKIDIwMjAtMDEtMTMg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xs
YmFyIGhpZGluZyBvbiBpT1MgdmlhIDo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25l
IH0gZG9lc24ndCB3b3JrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzMsNyAr
MTkzMyw3IEBAIFJlZlB0cjxSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGUKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
bV9kb2N1bWVudCwgc3RhcnRQb3NpdGlvbiwgb3JpZ2luYWxSYW5nZS0+c3RhcnRQb3NpdGlvbigp
KTsKLSAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICB1bnNpZ25lZCB0YXJnZXRPZmZzZXQgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlv
bjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgIHJldHVybiBmaW5k
Q2xvc2VzdFBsYWluVGV4dChzZWFyY2hSYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRhcmdl
dE9mZnNldCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjU0NDcy
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzMiwxMiArMjAzMiwxMCBAQCBpbnQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWCiAjaWYgVVNFKEFUSykKICAgICAvLyBXZSBu
ZWVkIHRvIGNvbnNpZGVyIHJlcGxhY2VkIGVsZW1lbnRzIGZvciBHVEssIGFzIHRoZXkgd2lsbCBi
ZQogICAgIC8vIHByZXNlbnRlZCB3aXRoIHRoZSAnb2JqZWN0IHJlcGxhY2VtZW50IGNoYXJhY3Rl
cicgKDB4RkZGQykuCi0gICAgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPSB0cnVlOwor
ICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRp
b24sIHsgVGV4dEl0ZXJhdG9yTGVnbnRoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgfSk7CiAjZWxzZQotICAgIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID0g
ZmFsc2U7CisgICAgcmV0dXJuIFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKCpub2Rl
LCBwb3NpdGlvbik7CiAjZW5kaWYKLQotICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZpc2li
bGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7CiB9
CiAKIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJvb3RFZGl0YWJsZUVsZW1l
bnRGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgdm9pZCBnZXRT
ZWxlY3Rpb25PZmZzZXRzRm9yT2JqZWN0CiAKICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBv
ZmZzZXRzIGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2Ug
dmFsdWVzIG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0g
ICAgc3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAg
c3RhcnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB7IFRleHRJdGVyYXRvckxl
bmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pKTsKICAgICBh
dXRvIG5vZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdl
U3RhcnQsIG5vZGVSYW5nZUVuZCk7CiAgICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0
aWwuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NywxMCAr
MjQ3LDEwIEBAIEFYQ29yZU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2UKICAgICAg
ICAgb2Zmc2V0ID0gMDsKICAgICBlbHNlIGlmICghaXNTdGFydE9mTGluZShlbmRQb3NpdGlvbikp
IHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbi5wcmV2aW91cygpKTsKLSAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSkgKyAxOworICAgICAgICBvZmZzZXQgPSBU
ZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdldCgpLCB7IFRleHRJdGVyYXRvckxlbmd0
aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pICsgMTsKICAgICB9
IGVsc2UgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpH
ZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZpcnN0VW5pZ25vcmVkUGFyZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCAr
MjUyLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKAogCiAgICAg
YXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9u
SW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCkpOwogICAgIGF1dG8gZW5kUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIGludCBzdGFydEluZGV4ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKLSAgICBp
bnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0
cnVlKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3Rh
cnRSYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2Vz
Rm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogCiAgICAgVmlzaWJsZVBvc2l0
aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSk7CiAgICAg
VmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFydChlbmRPZlBhcmFncmFwaChwYXJhZ3Jh
cGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAgfQogICAgIAogICAgIHsKLSAgICAgICAgYXV0byBz
dGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29w
ZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRl
cmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1
ZSk7CisgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgsIDAsIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CisgICAgICAgIGF1
dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNj
b3BlLCBlbmRJbmRleCwgMCwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3Bh
Y2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAgICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5k
UmFuZ2UpCiAgICAgICAgICAgICB1cGRhdGVTdGFydEVuZChzdGFydFJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAy
NTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzMywxMyArMTQzMywxMyBAQCB2b2lkIENvbXBvc2l0ZUVk
aXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgICAgICBzdGFydEluZGV4ID0gMDsKICAg
ICAgICAgICAgIGlmIChzdGFydEluUGFyYWdyYXBoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBz
dGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVT
dGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICAg
ICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJh
bmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9w
dGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAgICAgICAgICAgICBpZiAoZW5kSW5QYXJh
Z3JhcGgpIHsKICAgICAgICAgICAgICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoZW5kUmFuZ2UucHRyKCksIHsg
VGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVu
dHMgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTEwLDcgKzE1MTAs
NyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIGVk
aXRhYmxlUm9vdCA9ICZkb2N1bWVudCgpOwogCiAgICAgYXV0byBzdGFydFRvRGVzdGluYXRpb25S
YW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShlZGl0
YWJsZVJvb3QuZ2V0KCkpLCBkZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKLSAgICBkZXN0aW5hdGlvbkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgZGVz
dGluYXRpb25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0
aW9uUmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNl
c0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJs
ZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAgICAgQVNT
RVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwpAQCAtMTUzMiw4ICsxNTMy
LDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAgICAg
Ly8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQgZHVyaW5nIHRoZSBtb3ZlIG9wZXJhdGlv
bi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBhIGNhbGwgdG8gcmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3QgdGhlIGVuZAogICAgICAgICAvLyBvZiB0
aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51bGwpLgotICAgICAgICBSZWZQdHI8UmFu
Z2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0
YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBzdGFydEluZGV4LCAwLCB0cnVlKTsK
LSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRleCArIGVuZElu
ZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFydCA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290LmdldCgpLCBkZXN0aW5h
dGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwKKyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CisgICAgICAg
IFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwK
KyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIGlmIChzdGFydCAmJiBlbmQpCiAgICAgICAg
ICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihzdGFydC0+c3RhcnRQb3Np
dGlvbigpLCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVj
dGlvbmFsKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZp
c2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBAIGludCBpbmRleEZvclZpc2libGVQb3Np
dGlvbihjb25zdCBWaXNpYmwKICAgICB9CiAKICAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0
ZShkb2N1bWVudCwgZmlyc3RQb3NpdGlvbkluTm9kZShzY29wZS5nZXQoKSksIHBvc2l0aW9uLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgocmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0
ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB0aGlz
IGZ1bmN0aW9uIHdpdGggdGhlIG9uZSBhYm92ZS4KLWludCBpbmRleEZvclZpc2libGVQb3NpdGlv
bihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgYm9v
bCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24o
Tm9kZSYgbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIE9wdGlv
blNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgYXV0byByYW5n
ZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKCZu
b2RlKSwgdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCkpOwotICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0
cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6
OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCBvcHRpb25zKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHBvc2l0aW9uLCBpbnQgb2Zmc2V0KQpAQCAtMTEwNiw3ICsxMTA2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aQogCiBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250YWluZXJOb2RlKiBzY29wZSkKIHsKLSAg
ICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChz
Y29wZSwgaW5kZXgsIDAsIHRydWUpOworICAgIGF1dG8gcmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBpbmRleCwgMCwgeyBUZXh0SXRlcmF0b3JM
ZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAv
LyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRleC4gQ2VydGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMg
aW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2UgCiAgICAgLy8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0
SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucy4KICAgICBp
ZiAoIXJhbmdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgJKHJldmlzaW9uIDI1NDQ3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw4ICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQb3NpdGlvbi5oIgor
I2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
ICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xNDksNyArMTUxLDcgQEAgYm9vbCBsaW5lQnJlYWtFeGlzdHNBdFZpc2libGVQ
b3NpdGlvbihjbwogV0VCQ09SRV9FWFBPUlQgaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKIFdFQkNPUkVfRVhQT1JU
IGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQ
dHI8Q29udGFpbmVyTm9kZT4mIHNjb3BlKTsKLWludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihO
b2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24pOworaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKE5vZGUmLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mLCBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiA9IHsgfSk7CiBXRUJD
T1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRo
T2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGludCBvZmZzZXQpOwogV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCwgQ29u
dGFpbmVyTm9kZSogc2NvcGUpOwogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvcklu
ZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiwgaW50IGluZGV4KTsgLy8gRklYTUU6IFdo
eSBkbyB3ZSBuZWVkIHRoaXMgdmVyc2lvbj8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5NiwxMCArMjM5NiwyMCBA
QCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBjb25zdAogCiAvLyAtLS0tLS0tLQogCi1p
bnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uKQorc3RhdGljIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2
aW9yRnJvbUxlZ250aE9wdGlvbnMoT3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4g
b3B0aW9ucykKK3sKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvciA9IFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvcjsKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhUZXh0SXRlcmF0
b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cykpCisgICAg
ICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFRleHRJdGVyYXRvckxlbmd0
aE9wdGlvbjo6SWdub3JlVmlzaWJpbGl0eSkpCisgICAgICAgIGJlaGF2aW9yIHw9IFRleHRJdGVy
YXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHk7CisgICAgcmV0dXJuIGJlaGF2aW9yOworfQorCitp
bnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25zdCBSYW5nZSogcmFuZ2UsIE9wdGlvblNl
dDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgZm9yU2VsZWN0aW9uUHJl
c2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQu
YWR2YW5jZSgpKQorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLCBiZWhhdmlvckZyb21M
ZWdudGhPcHRpb25zKG9wdGlvbnMpKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkKICAgICAg
ICAgbGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQpA
QCAtMjQxOCw3ICsyNDI4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW5zaWRlUmVwbGFjZWRF
bGVtZQogICAgIHJldHVybiBub2RlICYmIGlzUmVuZGVyZXJSZXBsYWNlZEVsZW1lbnQobm9kZS0+
cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24s
IGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitSZWZQdHI8
UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVy
Tm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIE9wdGlvblNl
dDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgUmVmPFJhbmdlPiBy
ZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CiAKQEAgLTI0Mjgs
NyArMjQzOCw3IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2MKIAog
ICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFuZ2VPZkNvbnRlbnRzKCpzY29wZSk7CiAK
LSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdlLnB0cigpLCBmb3JTZWxlY3Rpb25QcmVz
ZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBv
c2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CisgICAgVGV4dEl0ZXJhdG9y
IGl0KHRleHRSdW5SYW5nZS5wdHIoKSwgYmVoYXZpb3JGcm9tTGVnbnRoT3B0aW9ucyhvcHRpb25z
KSk7CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSBhdEVuZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBu
ZWNlc3NhcnksIHdvcmthcm91bmQgZm9yIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02Mjg5Pi4KICAgICBpZiAoIXJhbmdlTG9jYXRpb24gJiYgIXJhbmdlTGVuZ3RoICYm
IGl0LmF0RW5kKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAko
cmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxpbmVMYXlvdXRU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJl
aGF2aW9yLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKQEAgLTEyMSw4ICsxMjIs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0JiBjb3B5YWJs
ZVRleHQoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVybiBtX2NvcHlhYmxlVGV4dDsg
fQogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVpbGRlcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVuZFRvU3RyaW5nQnVpbGRlcihidWlsZGVy
KTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGludCByYW5nZUxlbmd0aChjb25zdCBS
YW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0
aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzID0gZmFsc2UpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBPcHRpb25TZXQ8VGV4
dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSog
c2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIE9wdGlvblNldDxUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb24+ID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShOb2RlKiBzY29wZSwgY29uc3QgUmFu
Z2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxlbmd0aCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFuZ2UmIGVudGlyZVJhbmdlLCBpbnQgY2hh
cmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCShyZXZpc2lvbiAyNTQ0NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDQgKzYzLDkgQEAgZW51bSBUZXh0SXRlcmF0b3JCZWhhdmlvckZsYWcgewog
CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFRleHRJdGVyYXRvckJlaGF2aW9yOwogCitlbnVtIGNs
YXNzIFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbiA6IHVpbnQ4X3QgeworICAgIEdlbmVyYXRlU3Bh
Y2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IDEgPDwgMCwKKyAgICBJZ25vcmVWaXNpYmlsaXR5ID0g
MSA8PCAxLAorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAJKHJldmlzaW9u
IDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMSArNjgsMTIgQEAgdm9pZCBEaWN0YXRpb25D
b21tYW5kSU9TOjpkb0FwcGx5KCkKIAogICAgIC8vIEZJWE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJr
ZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3JlIHJlc3VsdHMgYXJlIGluc2VydGVkLCBp
bnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9ycy4KICAgICBhdXRvIHJhbmdlVG9FbmQg
PSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigo
Tm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50
IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0cigpLCB0
cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdl
VG9FbmQucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgaW50IHN0YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJl
c3VsdExlbmd0aDsKIAogICAgIGlmIChzdGFydEluZGV4ID49IDApIHsKLSAgICAgICAgUmVmUHRy
PFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJbmRleCwgZW5kSW5kZXgs
IHRydWUpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgp
LCBzdGFydEluZGV4LCBlbmRJbmRleCwKKyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIEFT
U0VSVChyZXN1bHRSYW5nZSk7IC8vIEZJWE1FOiBXaGF0IGd1YXJhbnRlZXMgdGhpcz8KICAgICAg
ICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRS
YW5nZSwgbV9tZXRhZGF0YSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDMsMTYgKzY0MywxMyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aW5kCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbm5lclRleHRWYWx1ZSgp
Lmxlbmd0aCgpOwogICAgIGluZGV4ID0gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIGlubmVyVGV4dFZhbHVlKCkganVzdCB0byBpZ25v
cmUgdGhlIGxhc3QgTEYuIFNlZSBmaW5pc2hUZXh0LgotI2lmIDAKLSAgICAvLyBGSVhNRTogVGhp
cyBhc3NlcnRpb24gY29kZSB3YXMgbmV2ZXIgYnVpbHQsIGhhcyBiaXQgcm90dGVkLCBhbmQgbmVl
ZHMgdG8gYmUgZml4ZWQgYmVmb3JlIGl0IGNhbiBiZSBlbmFibGVkOgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3MDYuCiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gcGFzc2VkUG9zaXRpb247
Ci0gICAgdW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gMDsKLSAgICBp
ZiAodmlzaWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKQotICAgICAgICBpbmRleENvbXB1dGVkQnlW
aXNpYmxlUG9zaXRpb24gPSBXZWJDb3JlOjppbmRleEZvclZpc2libGVQb3NpdGlvbihpbm5lclRl
eHQsIHZpc2libGVQb3NpdGlvbiwgZmFsc2UgLyogZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uICov
KTsKLSAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsK
LSNlbmRpZgorICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKKyAgICAgICAg
dW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gV2ViQ29yZTo6aW5kZXhG
b3JWaXNpYmxlUG9zaXRpb24oKmlubmVyVGV4dCwgdmlzaWJsZVBvc2l0aW9uLAorICAgICAgICAg
ICAgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRF
bGVtZW50cywgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpJZ25vcmVWaXNpYmlsaXR5IH0pOwor
ICAgICAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsK
KyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gaW5kZXg7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiBzdGF0aWMgaW50IHRleHRE
aXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7CiAg
ICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3RhcnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVu
dCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChy
YW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0Zv
clJlcGxhY2VkRWxlbWVudHMgfSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTEzICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zm
c2V0IGFzc2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3Np
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OnJh
bmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQpOgorCiAyMDIwLTAxLTEzICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIF9XS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NGaXJzdFBhcnR5IHNob3VsZCBiZSBmb3J3YXJkIGRlY2xhcmVkIG5vdCBpbXBvcnRl
ZCBpbiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlz
aW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIFdlYlBh
Z2U6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiByYW5n
ZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24s
IFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW5nZSwgY29uc3QgU3RyaW5nJiBtYXRjaFRleHQsIFJl
ZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UpCiB7CiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpj
cmVhdGUoc2VsZWN0aW9uUmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgc2VsZWN0aW9uUmFuZ2UtPnN0
YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JM
ZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICBy
ZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlvblJhbmdlLmdldCgpLCBtYXRjaFRl
eHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387747</attachid>
            <date>2020-01-14 19:34:03 -0800</date>
            <delta_ts>2020-01-14 21:15:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205706-20200114193402.patch</filename>
            <type>text/plain</type>
            <size>24471</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAxLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFz
c2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBm
aXhlcyB0aGUgZXJyb25lb3VzbHkgZGlzYWJsZWQgZGVidWcgYXNzZXJ0aW9uIGluIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9uLgorCisgICAgICAgIEl0IGFsc28g
Zml4ZXMgdGhlIGJ1ZyB0aGF0IGl0IHdhcyBhc3NlcnRpbmcgZXZlbiB3aGVuIFZpc2libGVQb3Np
dGlvbiB3YXMgbnVsbCwgYW5kIGNvbXB1dGVkIGEgd3Jvbmcgb2Zmc2V0CisgICAgICAgIHdoZW4g
dGhlIGVudGlyZSBpbnB1dCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIChlLmcuIGJlY2F1ZSBoZWln
aHQgaXMgMHB4KS4KKworICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIGFuZCBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG5vdyB0YWtlcyBhbiBPcHRpb25T
ZXQgb2YKKyAgICAgICAgbmV3bHkgYWRkZWQgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JMZW5ndGhP
cHRpb24gaW5zdGVhZCBvZiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BhY2Ugc2hv
dWxkIGJlCisgICAgICAgIGdlbmVyYXRlZCBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBNb3N0IGNv
ZGUgY2hhbmdlcyBhcmUgZHVlIHRvIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAg
ICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICogZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnZp
c2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWhhdmlvckZyb21MZWdu
dGhPcHRpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4
Rm9yUG9zaXRpb24gY29uc3QpOiBFbmFibGVkIHRoZSBhc3NlcnRpb24gd2hlbiBWaXNpYmxlUG9z
aXRpb24KKyAgICAgICAgaXMgbm90IG51bGwsIGFuZCBmaXhlZCB0aGUgYnVnIHRoYXQgdGhlIG9m
ZnNldCBjb21wdXRlZCBmcm9tIFZpc2libGVQb3NpdGlvbiB3ZXJlIGFsd2F5cyAwIHdoZW4gdGhl
IGlucHV0CisgICAgICAgIGVsZW1lbnQgaXMgbm90IHZpc2libGUgKGUuZy4gaGFzIDBweCBzaXpl
IG9yIGhhcyB2aXNpYmlsaXR5OiBoaWRkZW4pLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisKIDIwMjAtMDEtMTQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBkb2N1bWVudC5jb29raWUg
c2hvdWxkIG5vdCBkbyBhIHN5bmMgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgZm9yIGlmcmFt
ZXMgdGhhdCBkbyBub3QgaGF2ZSBzdG9yYWdlIGFjY2VzcwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6
OnJhbmdlTWF0Y2hlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGF1dG8gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9
KTsKICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIG1h
dGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzIsMTIgKzIw
MzIsMTAgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVgogI2lmIFVT
RShBVEspCiAgICAgLy8gV2UgbmVlZCB0byBjb25zaWRlciByZXBsYWNlZCBlbGVtZW50cyBmb3Ig
R1RLLCBhcyB0aGV5IHdpbGwgYmUKICAgICAvLyBwcmVzZW50ZWQgd2l0aCB0aGUgJ29iamVjdCBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXInICgweEZGRkMpLgotICAgIGJvb2wgZm9yU2VsZWN0aW9uUHJl
c2VydmF0aW9uID0gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oKm5vZGUsIHBvc2l0aW9uLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJh
dGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogI2Vsc2UKLSAgICBib29sIGZvclNlbGVj
dGlvblByZXNlcnZhdGlvbiA9IGZhbHNlOworICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZp
c2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24pOwogI2VuZGlmCi0KLSAgICByZXR1cm4gV2Vi
Q29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oKm5vZGUsIHBvc2l0aW9uLCBmb3JTZWxlY3Rp
b25QcmVzZXJ2YXRpb24pOwogfQogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpyb290RWRpdGFibGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkocmV2aXNp
b24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDkg
QEAgc3RhdGljIHZvaWQgZ2V0U2VsZWN0aW9uT2Zmc2V0c0Zvck9iamVjdAogCiAgICAgLy8gU2V0
IHZhbHVlcyBmb3Igc3RhcnQgb2Zmc2V0cyBhbmQgY2FsY3VsYXRlIGluaXRpYWwgcmFuZ2UgbGVu
Z3RoLgogICAgIC8vIFRoZXNlIHZhbHVlcyBtaWdodCBiZSBhZGp1c3RlZCBsYXRlciB0byBjb3Zl
ciBzcGVjaWFsIGNhc2VzLgotICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zm
c2V0KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5w
dHIoKSwgdHJ1ZSkpOworICAgIHN0YXJ0T2Zmc2V0ID0gd2ViQ29yZU9mZnNldFRvQXRrT2Zmc2V0
KGNvcmVPYmplY3QsIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VJblBhcmVudC5wdHIo
KSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRF
bGVtZW50cyB9KSk7CiAgICAgYXV0byBub2RlUmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRv
Y3VtZW50KCksIG5vZGVSYW5nZVN0YXJ0LCBub2RlUmFuZ2VFbmQpOwotICAgIGludCByYW5nZUxl
bmd0aCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB0cnVlKTsK
KyAgICBpbnQgcmFuZ2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKG5vZGVSYW5n
ZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyB9KTsKIAogICAgIC8vIFNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgb25seSBy
ZWxldmFudCB3aGVuIHdvcmtpbmcgd2l0aCAqX0VORCBib3VuZGFyaWVzLgogICAgIGlmIChzZWxl
Y3Rpb24uYWZmaW5pdHkoKSA9PSBVUFNUUkVBTSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcAko
cmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVV0aWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMTAgKzI0NywxMCBA
QCBBWENvcmVPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNlCiAgICAgICAgIG9mZnNl
dCA9IDA7CiAgICAgZWxzZSBpZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7CiAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9z
aXRpb24ucHJldmlvdXMoKSk7Ci0gICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpICsgMTsKKyAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246
OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KSArIDE7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBl
bmRQb3NpdGlvbik7Ci0gICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UuZ2V0KCksIHRydWUpOworICAgICAgICBvZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKHJhbmdlLmdldCgpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVT
cGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgIH0KIAogICAgIHJldHVybiBmaXJzdFVu
aWdub3JlZFBhcmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDggKzI1Miw4IEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSgKIAogICAgIGF1dG8gc3Rh
cnRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShz
Y29wZSksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpKTsKICAgICBhdXRvIGVuZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBm
aXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBh
cmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgdHJ1ZSk7Ci0gICAgaW50IGVuZElu
ZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7Cisg
ICAgaW50IHN0YXJ0SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0UmFuZ2Uu
cHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxh
Y2VkRWxlbWVudHMgfSk7CisgICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChlbmRSYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRl
U3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKIAogICAgIFZpc2libGVQb3NpdGlvbiBwYXJh
Z3JhcGhTdGFydChzdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpOwogICAgIFZpc2libGVQ
b3NpdGlvbiBuZXh0UGFyYWdyYXBoU3RhcnQoZW5kT2ZQYXJhZ3JhcGgocGFyYWdyYXBoU3RhcnQp
Lm5leHQoKSk7CkBAIC0yODUsOCArMjg1LDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBw
bHlCbG9ja1N0eWxlKAogICAgIH0KICAgICAKICAgICB7Ci0gICAgICAgIGF1dG8gc3RhcnRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0
SW5kZXgsIDAsIHRydWUpOwotICAgICAgICBhdXRvIGVuZFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5kSW5kZXgsIDAsIHRydWUpOworICAg
ICAgICBhdXRvIHN0YXJ0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCBzdGFydEluZGV4LCAwLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOworICAgICAgICBhdXRvIGVuZFJh
bmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgZW5k
SW5kZXgsIDAsIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJl
cGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIGlmIChzdGFydFJhbmdlICYmIGVuZFJhbmdlKQog
ICAgICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc3RhcnRSYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBl
bmRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gMjU0NDcyKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0MzMsMTMgKzE0MzMsMTMgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6bW92ZVBhcmFncmFwaAogICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7CiAgICAgICAgICAg
ICBpZiAoc3RhcnRJblBhcmFncmFwaCkgewogICAgICAgICAgICAgICAgIGF1dG8gc3RhcnRSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCB2aXNpYmxlU3RhcnQuZGVl
cEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIo
KSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246Okdl
bmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgZW5kSW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKGVuZEluUGFyYWdyYXBoKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBlbmRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQo
KSwgc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRF
cXVpdmFsZW50KCkpOwotICAgICAgICAgICAgICAgIGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpy
YW5nZUxlbmd0aChlbmRSYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgZW5kSW5k
ZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB7IFRleHRJdGVy
YXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTUxMCw3ICsxNTEwLDcgQEAgdm9p
ZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogICAgICAgICBlZGl0YWJsZVJv
b3QgPSAmZG9jdW1lbnQoKTsKIAogICAgIGF1dG8gc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoZWRpdGFibGVSb290
LmdldCgpKSwgZGVzdGluYXRpb24uZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2
YWxlbnQoKSk7Ci0gICAgZGVzdGluYXRpb25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5n
dGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UucHRyKCksIHRydWUpOworICAgIGRlc3RpbmF0aW9u
SW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHN0YXJ0VG9EZXN0aW5hdGlvblJhbmdl
LnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBs
YWNlZEVsZW1lbnRzIH0pOwogCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oZGVzdGluYXRpb24sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwogICAgIEFTU0VSVChlbmRp
bmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKQEAgLTE1MzIsOCArMTUzMiwxMCBAQCB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAgIC8vIGNhdXNl
cyBzcGFjZXMgdG8gYmUgY29sbGFwc2VkIGR1cmluZyB0aGUgbW92ZSBvcGVyYXRpb24uICBUaGlz
IHJlc3VsdHMKICAgICAgICAgLy8gaW4gYSBjYWxsIHRvIHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoIHdpdGggYSBsb2NhdGlvbiBwYXN0IHRoZSBlbmQKICAgICAgICAgLy8gb2YgdGhlIGRvY3Vt
ZW50ICh3aGljaCB3aWxsIHJldHVybiBudWxsKS4KLSAgICAgICAgUmVmUHRyPFJhbmdlPiBzdGFy
dCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRpdGFibGVSb290
LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAg
IFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXggKyBlbmRJbmRleCwgMCwg
dHJ1ZSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gc3RhcnQgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwgZGVzdGluYXRpb25JbmRl
eCArIHN0YXJ0SW5kZXgsIDAsCisgICAgICAgICAgICB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlv
bjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOworICAgICAgICBSZWZQdHI8
UmFuZ2U+IGVuZCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRp
dGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgZW5kSW5kZXgsIDAsCisgICAgICAg
ICAgICB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzIH0pOwogICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKQogICAgICAgICAgICAgc2V0
RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oc3RhcnQtPnN0YXJ0UG9zaXRpb24oKSwg
ZW5kLT5zdGFydFBvc2l0aW9uKCksIERPV05TVFJFQU0sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkocmV2aXNpb24gMjU0
NDcyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4NCwxNCArMTA4NCwxNCBAQCBpbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oY29u
c3QgVmlzaWJsCiAgICAgfQogCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1l
bnQsIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUuZ2V0KCkpLCBwb3NpdGlvbi5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UucHRyKCksIHRydWUpOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNG
b3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogfQogCiAvLyBGSVhNRTogTWVyZ2UgdGhpcyBmdW5jdGlv
biB3aXRoIHRoZSBvbmUgYWJvdmUuCi1pbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYg
bm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGJvb2wgZm9yU2Vs
ZWN0aW9uUHJlc2VydmF0aW9uKQoraW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKE5vZGUmIG5v
ZGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBPcHRpb25TZXQ8VGV4
dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiBvcHRpb25zKQogewogICAgIGF1dG8gcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKG5vZGUuZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZSgmbm9kZSksIHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKLSAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uKTsKKyAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChyYW5nZS5wdHIoKSwgb3B0aW9ucyk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JQb3NpdGlvbldpdGhPZmZzZXQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbiwgaW50IG9mZnNldCkKQEAgLTExMDYsNyArMTEwNiw3IEBAIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb25Gb3JQb3NpdGkKIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpCiB7Ci0gICAgYXV0byBy
YW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIGlu
ZGV4LCAwLCB0cnVlKTsKKyAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21M
b2NhdGlvbkFuZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0
aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgLy8gQ2hlY2sg
Zm9yIGFuIGludmFsaWQgaW5kZXguIENlcnRhaW4gZWRpdGluZyBvcGVyYXRpb25zIGludmFsaWRh
dGUgaW5kaWNlcyBiZWNhdXNlIAogICAgIC8vIG9mIHByb2JsZW1zIHdpdGggVGV4dEl0ZXJhdG9y
RW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMuCiAgICAgaWYgKCFyYW5n
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUG9zaXRpb24uaCIKKyNpbmNsdWRl
ICJUZXh0SXRlcmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTQ5LDcgKzE1MSw3IEBAIGJvb2wgbGluZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24o
Y28KIFdFQkNPUkVfRVhQT1JUIGludCBjb21wYXJlUG9zaXRpb25zKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCiBXRUJDT1JFX0VYUE9SVCBpbnQgaW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgUmVmUHRyPENvbnRh
aW5lck5vZGU+JiBzY29wZSk7Ci1pbnQgaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKTsKK2lu
dCBpbmRleEZvclZpc2libGVQb3NpdGlvbihOb2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
T3B0aW9uU2V0PFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gPSB7IH0pOwogV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9mZnNldChj
b25zdCBWaXNpYmxlUG9zaXRpb24mLCBpbnQgb2Zmc2V0KTsKIFdFQkNPUkVfRVhQT1JUIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQgaW5kZXgsIENvbnRhaW5lck5v
ZGUqIHNjb3BlKTsKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleFVzaW5n
Q2hhcmFjdGVySXRlcmF0b3IoTm9kZSYsIGludCBpbmRleCk7IC8vIEZJWE1FOiBXaHkgZG8gd2Ug
bmVlZCB0aGlzIHZlcnNpb24/CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOTYsMTAgKzIzOTYsMjAgQEAgc2l6ZV90
IFNlYXJjaEJ1ZmZlcjo6bGVuZ3RoKCkgY29uc3QKIAogLy8gLS0tLS0tLS0KIAotaW50IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqIHJhbmdlLCBib29sIGZvclNlbGVjdGlv
blByZXNlcnZhdGlvbikKK3N0YXRpYyBUZXh0SXRlcmF0b3JCZWhhdmlvciBiZWhhdmlvckZyb21M
ZWdudGhPcHRpb25zKE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlvbnMp
Cit7CisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZh
dWx0QmVoYXZpb3I7CisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMpKQorICAgICAgICBiZWhh
dmlvciB8PSBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0
aW9uczsKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246
Oklnbm9yZVZpc2liaWxpdHkpKQorICAgICAgICBiZWhhdmlvciB8PSBUZXh0SXRlcmF0b3JJZ25v
cmVzU3R5bGVWaXNpYmlsaXR5OworICAgIHJldHVybiBiZWhhdmlvcjsKK30KKworaW50IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqIHJhbmdlLCBPcHRpb25TZXQ8VGV4dEl0
ZXJhdG9yTGVuZ3RoT3B0aW9uPiBvcHRpb25zKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
Ci0gICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UsIGZvclNlbGVjdGlvblByZXNlcnZhdGlv
biA/IFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
IDogVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2Uo
KSkKKyAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSwgYmVoYXZpb3JGcm9tTGVnbnRoT3B0
aW9ucyhvcHRpb25zKSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0
aCArPSBpdC50ZXh0KCkubGVuZ3RoKCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KQEAgLTI0MTgs
NyArMjQyOCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luc2lkZVJlcGxhY2VkRWxlbWUKICAg
ICByZXR1cm4gbm9kZSAmJiBpc1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KG5vZGUtPnJlbmRlcmVy
KCkpOwogfQogCi1SZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFu
Z2VMZW5ndGgsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorUmVmUHRyPFJhbmdlPiBU
ZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNj
b3BlLCBpbnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBPcHRpb25TZXQ8VGV4dEl0
ZXJhdG9yTGVuZ3RoT3B0aW9uPiBvcHRpb25zKQogewogICAgIFJlZjxSYW5nZT4gcmVzdWx0UmFu
Z2UgPSBzY29wZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwogCkBAIC0yNDI4LDcgKzI0Mzgs
NyBAQCBSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jCiAKICAgICBSZWY8
UmFuZ2U+IHRleHRSdW5SYW5nZSA9IHJhbmdlT2ZDb250ZW50cygqc2NvcGUpOwogCi0gICAgVGV4
dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZS5wdHIoKSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9u
ID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMg
OiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFRleHRJdGVyYXRvciBpdCh0ZXh0
UnVuUmFuZ2UucHRyKCksIGJlaGF2aW9yRnJvbUxlZ250aE9wdGlvbnMob3B0aW9ucykpOwogICAg
IAogICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5
LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjI4OT4uCiAgICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAmJiBpdC5hdEVu
ZCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9u
IDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3JCZWhhdmlvci5o
IgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCkBAIC0xMjEsOCArMTIyLDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dCYgY29weWFibGVUZXh0KCkg
Y29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9jb3B5YWJsZVRleHQ7IH0KICAgICB2
b2lkIGFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29u
c3QgeyBjb3B5YWJsZVRleHQoKS5hcHBlbmRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqLCBi
b29sIHNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgPSBmYWxzZSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFp
bmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFuZ2VMZW5ndGgsIGJvb2wg
c3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IGZhbHNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgaW50IHJhbmdlTGVuZ3RoKGNvbnN0IFJhbmdlKiwgT3B0aW9uU2V0PFRleHRJdGVyYXRv
ckxlbmd0aE9wdGlvbj4gPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
UmFuZ2U+IHJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBp
bnQgcmFuZ2VMb2NhdGlvbiwgaW50IHJhbmdlTGVuZ3RoLCBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9y
TGVuZ3RoT3B0aW9uPiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0
TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9kZSogc2NvcGUsIGNvbnN0IFJhbmdlKiwgc2l6
ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBsZW5ndGgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlJiBlbnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9m
ZnNldCwgaW50IGNoYXJhY3RlckNvdW50KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw0ICs2Myw5IEBAIGVudW0gVGV4dEl0ZXJhdG9yQmVoYXZpb3JGbGFnIHsKIAogdHlwZWRl
ZiB1bnNpZ25lZCBzaG9ydCBUZXh0SXRlcmF0b3JCZWhhdmlvcjsKIAorZW51bSBjbGFzcyBUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb24gOiB1aW50OF90IHsKKyAgICBHZW5lcmF0ZVNwYWNlc0ZvclJl
cGxhY2VkRWxlbWVudHMgPSAxIDw8IDAsCisgICAgSWdub3JlVmlzaWJpbGl0eSA9IDEgPDwgMSwK
K307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCShyZXZpc2lvbiAyNTQ0NzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsMTEgKzY4LDEyIEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZElP
Uzo6ZG9BcHBseSgpCiAKICAgICAvLyBGSVhNRTogQWRkIHRoZSByZXN1bHQgbWFya2VyIHVzaW5n
IGEgUG9zaXRpb24gY2FjaGVkIGJlZm9yZSByZXN1bHRzIGFyZSBpbnNlcnRlZCwgaW5zdGVhZCBv
ZiByZWx5aW5nIG9uIFRleHRJdGVyYXRvcnMuCiAgICAgYXV0byByYW5nZVRvRW5kID0gUmFuZ2U6
OmNyZWF0ZShkb2N1bWVudCgpLCBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24oKE5vZGUgKily
b290LCAwKSwgYWZ0ZXJSZXN1bHRzLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIGludCBlbmRJbmRl
eCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VUb0VuZC5wdHIoKSwgdHJ1ZSk7Cisg
ICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZVRvRW5kLnB0
cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzIH0pOwogICAgIGludCBzdGFydEluZGV4ID0gZW5kSW5kZXggLSByZXN1bHRMZW5n
dGg7CiAKICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmVzdWx0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRv
Y3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCksIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0cnVlKTsK
KyAgICAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSwgc3RhcnRJ
bmRleCwgZW5kSW5kZXgsCisgICAgICAgICAgICB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6
R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogICAgICAgICBBU1NFUlQocmVz
dWx0UmFuZ2UpOyAvLyBGSVhNRTogV2hhdCBndWFyYW50ZWVzIHRoaXM/CiAgICAgICAgIGRvY3Vt
ZW50KCkubWFya2VycygpLmFkZERpY3RhdGlvblJlc3VsdE1hcmtlcigqcmVzdWx0UmFuZ2UsIG1f
bWV0YWRhdGEpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQzLDE2ICs2NDMsMTMgQEAgdW5zaWduZWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmluZAogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gaW5uZXJUZXh0VmFsdWUoKS5sZW5ndGgo
KTsKICAgICBpbmRleCA9IHN0ZDo6bWluKGluZGV4LCBsZW5ndGgpOyAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IGhhdmUgdG8gY2FsbCBpbm5lclRleHRWYWx1ZSgpIGp1c3QgdG8gaWdub3JlIHRoZSBs
YXN0IExGLiBTZWUgZmluaXNoVGV4dC4KLSNpZiAwCi0gICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0
aW9uIGNvZGUgd2FzIG5ldmVyIGJ1aWx0LCBoYXMgYml0IHJvdHRlZCwgYW5kIG5lZWRzIHRvIGJl
IGZpeGVkIGJlZm9yZSBpdCBjYW4gYmUgZW5hYmxlZDoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2LgogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHBhc3NlZFBvc2l0aW9uOwotICAgIHVu
c2lnbmVkIGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9IDA7Ci0gICAgaWYgKHZpc2li
bGVQb3NpdGlvbi5pc05vdE51bGwoKSkKLSAgICAgICAgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBv
c2l0aW9uID0gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oaW5uZXJUZXh0LCB2aXNp
YmxlUG9zaXRpb24sIGZhbHNlIC8qIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiAqLyk7Ci0gICAg
QVNTRVJUKGluZGV4ID09IGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbik7Ci0jZW5kaWYK
KyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKSB7CisgICAgICAgIHVuc2lnbmVk
IGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9IFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJs
ZVBvc2l0aW9uKCppbm5lclRleHQsIHZpc2libGVQb3NpdGlvbiwKKyAgICAgICAgICAgIHsgVGV4
dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMs
IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6SWdub3JlVmlzaWJpbGl0eSB9KTsKKyAgICAgICAg
QVNTRVJUKGluZGV4ID09IGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbik7CisgICAgfQog
I2VuZGlmCiAgICAgcmV0dXJuIGluZGV4OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogc3RhdGljIGludCB0ZXh0RGlzdGFuY2Uo
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewogICAgIGF1dG8g
cmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHN0YXJ0LmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3Rh
cnQsIGVuZCk7Ci0gICAgcmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRy
KCksIHRydWUpOworICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0
cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzIH0pOwogfQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0xNCAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBFbmFibGUgdGhlIG9mZnNldCBhc3Nl
cnRpb24gaW4gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yUG9zaXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTcwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpyYW5nZU5lYXJQb3Np
dGlvbk1hdGNoZXNUZXh0KToKKwogMjAyMC0wMS0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eSBzaG91bGQgYmUgZm9yd2FyZCBkZWNsYXJlZCBub3QgaW1wb3J0ZWQgaW4gX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyNTQ0NzIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgdm9pZCBXZWJQYWdlOjpzdG9yZVNl
bGVjdGlvbkZvckFjY2Vzc2liaQogc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VOZWFyUG9zaXRp
b25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBSZWZQdHI8UmFu
Z2U+IG9yaWdpbmFsUmFuZ2UsIGNvbnN0IFN0cmluZyYgbWF0Y2hUZXh0LCBSZWZQdHI8UmFuZ2U+
IHNlbGVjdGlvblJhbmdlKQogewogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNlbGVj
dGlvblJhbmdlLT5vd25lckRvY3VtZW50KCksIHNlbGVjdGlvblJhbmdlLT5zdGFydFBvc2l0aW9u
KCksIHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkp
OwotICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgo
cmFuZ2UucHRyKCksIHRydWUpOworICAgIHVuc2lnbmVkIHRhcmdldE9mZnNldCA9IFRleHRJdGVy
YXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9u
OjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgcmV0dXJuIGZpbmRD
bG9zZXN0UGxhaW5UZXh0KCpzZWxlY3Rpb25SYW5nZS5nZXQoKSwgbWF0Y2hUZXh0LCB7IH0sIHRh
cmdldE9mZnNldCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387751</attachid>
            <date>2020-01-14 21:15:50 -0800</date>
            <delta_ts>2020-01-14 21:16:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205706-20200114211549.patch</filename>
            <type>text/plain</type>
            <size>25301</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDU1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTAxLTE0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFz
c2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBm
aXhlcyB0aGUgZXJyb25lb3VzbHkgZGlzYWJsZWQgZGVidWcgYXNzZXJ0aW9uIGluIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9uLgorCisgICAgICAgIEl0IGFsc28g
Zml4ZXMgdGhlIGJ1ZyB0aGF0IGl0IHdhcyBhc3NlcnRpbmcgZXZlbiB3aGVuIFZpc2libGVQb3Np
dGlvbiB3YXMgbnVsbCwgYW5kIGNvbXB1dGVkIGEgd3Jvbmcgb2Zmc2V0CisgICAgICAgIHdoZW4g
dGhlIGVudGlyZSBpbnB1dCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIChlLmcuIGJlY2F1ZSBoZWln
aHQgaXMgMHB4KS4KKworICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoIGFuZCBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoIG5vdyB0YWtlcyBhbiBPcHRpb25T
ZXQgb2YKKyAgICAgICAgbmV3bHkgYWRkZWQgZW51bSBjbGFzcyBUZXh0SXRlcmF0b3JMZW5ndGhP
cHRpb24gaW5zdGVhZCBvZiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIGEgc3BhY2Ugc2hv
dWxkIGJlCisgICAgICAgIGdlbmVyYXRlZCBmb3IgYSByZXBsYWNlZCBlbGVtZW50LiBNb3N0IGNv
ZGUgY2hhbmdlcyBhcmUgZHVlIHRvIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIHNpbmNlIGV4aXN0aW5nIHRlc3RzIGV4ZXJjaXNlIHRoaXMgY29kZS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpyYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24gY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUZXh0LmNwcDoKKyAgICAgICAgKGdldFNlbGVjdGlvbk9mZnNldHNGb3JPYmplY3QpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAg
ICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICogZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnZp
c2libGVQb3NpdGlvbkZvckluZGV4KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiZWhhdmlvckZyb21MZWdu
dGhPcHRpb25zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OmRvQXBwbHkpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4
Rm9yUG9zaXRpb24gY29uc3QpOiBFbmFibGVkIHRoZSBhc3NlcnRpb24gd2hlbiBWaXNpYmxlUG9z
aXRpb24KKyAgICAgICAgaXMgbm90IG51bGwsIGFuZCBmaXhlZCB0aGUgYnVnIHRoYXQgdGhlIG9m
ZnNldCBjb21wdXRlZCBmcm9tIFZpc2libGVQb3NpdGlvbiB3ZXJlIGFsd2F5cyAwIHdoZW4gdGhl
IGlucHV0CisgICAgICAgIGVsZW1lbnQgaXMgbm90IHZpc2libGUgKGUuZy4gaGFzIDBweCBzaXpl
IG9yIGhhcyB2aXNpYmlsaXR5OiBoaWRkZW4pLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHREaXN0YW5jZSk6CisKIDIwMjAtMDEtMTQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBkb2N1bWVudC5jb29raWUg
c2hvdWxkIG5vdCBkbyBhIHN5bmMgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MgZm9yIGlmcmFt
ZXMgdGhhdCBkbyBub3QgaGF2ZSBzdG9yYWdlIGFjY2VzcwpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBSZWZQdHI8UmFuZ2U+IEFYT2JqZWN0Q2FjaGU6
OnJhbmdlTWF0Y2hlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGF1dG8gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKG1fZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24sIG9yaWdpbmFsUmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0
ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgeyBUZXh0
SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9
KTsKICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoc2VhcmNoUmFuZ2UuZ2V0KCksIG1h
dGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMzIsMTIgKzIw
MzIsMTAgQEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVgogI2lmIFVT
RShBVEspCiAgICAgLy8gV2UgbmVlZCB0byBjb25zaWRlciByZXBsYWNlZCBlbGVtZW50cyBmb3Ig
R1RLLCBhcyB0aGV5IHdpbGwgYmUKICAgICAvLyBwcmVzZW50ZWQgd2l0aCB0aGUgJ29iamVjdCBy
ZXBsYWNlbWVudCBjaGFyYWN0ZXInICgweEZGRkMpLgotICAgIGJvb2wgZm9yU2VsZWN0aW9uUHJl
c2VydmF0aW9uID0gdHJ1ZTsKKyAgICByZXR1cm4gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oKm5vZGUsIHBvc2l0aW9uLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJh
dGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogI2Vsc2UKLSAgICBib29sIGZvclNlbGVj
dGlvblByZXNlcnZhdGlvbiA9IGZhbHNlOworICAgIHJldHVybiBXZWJDb3JlOjppbmRleEZvclZp
c2libGVQb3NpdGlvbigqbm9kZSwgcG9zaXRpb24pOwogI2VuZGlmCi0KLSAgICByZXR1cm4gV2Vi
Q29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oKm5vZGUsIHBvc2l0aW9uLCBmb3JTZWxlY3Rp
b25QcmVzZXJ2YXRpb24pOwogfQogCiBFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpyb290RWRpdGFibGVFbGVtZW50Rm9yUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUh5cGVybGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAJKHJldmlzaW9uIDI1NDQ3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVI
eXBlcmxpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIEF0
a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUh5cGVybAogc3RhdGljIGdpbnQgcmFuZ2VMZW5ndGhG
b3JPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqLCBSYW5nZSogcmFuZ2UpCiB7CiAgICAg
Ly8gVGhpcyBpcyBnb2luZyB0byBiZSB0aGUgYWN0dWFsIGxlbmd0aCBpbiBtb3N0IG9mIHRoZSBj
YXNlcwotICAgIGludCBiYXNlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5n
ZSwgdHJ1ZSk7CisgICAgaW50IGJhc2VMZW5ndGggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3Ro
KHJhbmdlLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBs
YWNlZEVsZW1lbnRzIH0pOwogCiAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBoeXBl
cmxpbmsgYmVsb25ncyB0byBhIGxpc3QgaXRlbS4KICAgICAvLyBJZiBzbywgd2UgbmVlZCB0byBj
b25zaWRlciB0aGUgbGVuZ3RoIG9mIHRoZSBpdGVtJ3MgbWFya2VyCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMCw5ICs0MTAsOSBAQCBzdGF0aWMgdm9pZCBnZXRTZWxlY3Rp
b25PZmZzZXRzRm9yT2JqZWN0CiAKICAgICAvLyBTZXQgdmFsdWVzIGZvciBzdGFydCBvZmZzZXRz
IGFuZCBjYWxjdWxhdGUgaW5pdGlhbCByYW5nZSBsZW5ndGguCiAgICAgLy8gVGhlc2UgdmFsdWVz
IG1pZ2h0IGJlIGFkanVzdGVkIGxhdGVyIHRvIGNvdmVyIHNwZWNpYWwgY2FzZXMuCi0gICAgc3Rh
cnRPZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB0cnVlKSk7CisgICAgc3RhcnRP
ZmZzZXQgPSB3ZWJDb3JlT2Zmc2V0VG9BdGtPZmZzZXQoY29yZU9iamVjdCwgVGV4dEl0ZXJhdG9y
OjpyYW5nZUxlbmd0aChyYW5nZUluUGFyZW50LnB0cigpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9w
dGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pKTsKICAgICBhdXRvIG5v
ZGVSYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgbm9kZVJhbmdlU3RhcnQs
IG5vZGVSYW5nZUVuZCk7Ci0gICAgaW50IHJhbmdlTGVuZ3RoID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChub2RlUmFuZ2UucHRyKCksIHRydWUpOworICAgIGludCByYW5nZUxlbmd0aCA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgobm9kZVJhbmdlLnB0cigpLCB7IFRleHRJdGVyYXRvckxl
bmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRzIH0pOwogCiAgICAg
Ly8gU3BlY2lhbCBjYXNlcyB0aGF0IGFyZSBvbmx5IHJlbGV2YW50IHdoZW4gd29ya2luZyB3aXRo
ICpfRU5EIGJvdW5kYXJpZXMuCiAgICAgaWYgKHNlbGVjdGlvbi5hZmZpbml0eSgpID09IFVQU1RS
RUFNKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlVXRpbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0NywxMCArMjQ3LDEwIEBAIEFYQ29yZU9iamVjdCogb2JqZWN0Rm9j
dXNlZEFuZENhcmV0T2Zmc2UKICAgICAgICAgb2Zmc2V0ID0gMDsKICAgICBlbHNlIGlmICghaXNT
dGFydE9mTGluZShlbmRQb3NpdGlvbikpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IG1ha2VSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbi5wcmV2aW91cygpKTsKLSAgICAg
ICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSkg
KyAxOworICAgICAgICBvZmZzZXQgPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLmdl
dCgpLCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNl
ZEVsZW1lbnRzIH0pICsgMTsKICAgICB9IGVsc2UgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gbWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICAgICAgb2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAg
ICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHsgVGV4
dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMg
fSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDI1
NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
YXBwbHlCbG9ja1N0eWxlKAogCiAgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShk
b2N1bWVudCgpLCBmaXJzdFBvc2l0aW9uSW5Ob2RlKHNjb3BlKSwgdmlzaWJsZVN0YXJ0LmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwogICAgIGF1dG8gZW5kUmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUoc2NvcGUp
LCB2aXNpYmxlRW5kLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkp
OwotICAgIGludCBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJh
bmdlLnB0cigpLCB0cnVlKTsKLSAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdl
TGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgc3RhcnRJbmRleCA9IFRleHRJ
dGVyYXRvcjo6cmFuZ2VMZW5ndGgoc3RhcnRSYW5nZS5wdHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5n
dGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKKyAgICBpbnQg
ZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigpLCB7IFRl
eHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRz
IH0pOwogCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBhcmFncmFwaFN0YXJ0KHN0YXJ0T2ZQYXJhZ3Jh
cGgodmlzaWJsZVN0YXJ0KSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQYXJhZ3JhcGhTdGFy
dChlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKQEAgLTI4NSw4ICsyODUs
OCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAgfQogICAg
IAogICAgIHsKLSAgICAgICAgYXV0byBzdGFydFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgc3RhcnRJbmRleCwgMCwgdHJ1ZSk7Ci0gICAgICAg
IGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
KHNjb3BlLCBlbmRJbmRleCwgMCwgdHJ1ZSk7CisgICAgICAgIGF1dG8gc3RhcnRSYW5nZSA9IFRl
eHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHN0YXJ0SW5kZXgs
IDAsIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgfSk7CisgICAgICAgIGF1dG8gZW5kUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBlbmRJbmRleCwgMCwgeyBUZXh0SXRlcmF0b3JM
ZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyB9KTsKICAgICAg
ICAgaWYgKHN0YXJ0UmFuZ2UgJiYgZW5kUmFuZ2UpCiAgICAgICAgICAgICB1cGRhdGVTdGFydEVu
ZChzdGFydFJhbmdlLT5zdGFydFBvc2l0aW9uKCksIGVuZFJhbmdlLT5zdGFydFBvc2l0aW9uKCkp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMywxMyArMTQz
MywxMyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgICAg
ICAgICBzdGFydEluZGV4ID0gMDsKICAgICAgICAgICAgIGlmIChzdGFydEluUGFyYWdyYXBoKSB7
CiAgICAgICAgICAgICAgICAgYXV0byBzdGFydFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVu
dCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9y
ZWRFcXVpdmFsZW50KCksIHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hv
cmVkRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gVGV4dEl0ZXJh
dG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigpLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICBzdGFydEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFJhbmdlLnB0cigp
LCB7IFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6R2VuZXJhdGVTcGFjZXNGb3JSZXBsYWNlZEVs
ZW1lbnRzIH0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlbmRJbmRleCA9IDA7CiAg
ICAgICAgICAgICBpZiAoZW5kSW5QYXJhZ3JhcGgpIHsKICAgICAgICAgICAgICAgICBhdXRvIGVu
ZFJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE9mUGFyYWdyYXBoVG9Nb3Zl
LmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIHZpc2libGVFbmQu
ZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgICAgICAg
ICAgICAgZW5kSW5kZXggPSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGVuZFJhbmdlLnB0cigp
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICBlbmRJbmRleCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VM
ZW5ndGgoZW5kUmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0
ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTEwLDcgKzE1MTAsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpt
b3ZlUGFyYWdyYXBoCiAgICAgICAgIGVkaXRhYmxlUm9vdCA9ICZkb2N1bWVudCgpOwogCiAgICAg
YXV0byBzdGFydFRvRGVzdGluYXRpb25SYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSwg
Zmlyc3RQb3NpdGlvbkluTm9kZShlZGl0YWJsZVJvb3QuZ2V0KCkpLCBkZXN0aW5hdGlvbi5kZWVw
RXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBkZXN0aW5hdGlv
bkluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChzdGFydFRvRGVzdGluYXRpb25SYW5n
ZS5wdHIoKSwgdHJ1ZSk7CisgICAgZGVzdGluYXRpb25JbmRleCA9IFRleHRJdGVyYXRvcjo6cmFu
Z2VMZW5ndGgoc3RhcnRUb0Rlc3RpbmF0aW9uUmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAKICAgICBz
ZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJ
c0RpcmVjdGlvbmFsKSk7CiAgICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJh
bmdlKCkpOwpAQCAtMTUzMiw4ICsxNTMyLDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
Om1vdmVQYXJhZ3JhcGgKICAgICAgICAgLy8gY2F1c2VzIHNwYWNlcyB0byBiZSBjb2xsYXBzZWQg
ZHVyaW5nIHRoZSBtb3ZlIG9wZXJhdGlvbi4gIFRoaXMgcmVzdWx0cwogICAgICAgICAvLyBpbiBh
IGNhbGwgdG8gcmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGggd2l0aCBhIGxvY2F0aW9uIHBhc3Qg
dGhlIGVuZAogICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQgKHdoaWNoIHdpbGwgcmV0dXJuIG51
bGwpLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHN0YXJ0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0aW9uSW5kZXgg
KyBzdGFydEluZGV4LCAwLCB0cnVlKTsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiBlbmQgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGVkaXRhYmxlUm9vdC5nZXQoKSwg
ZGVzdGluYXRpb25JbmRleCArIGVuZEluZGV4LCAwLCB0cnVlKTsKKyAgICAgICAgUmVmUHRyPFJh
bmdlPiBzdGFydCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZWRp
dGFibGVSb290LmdldCgpLCBkZXN0aW5hdGlvbkluZGV4ICsgc3RhcnRJbmRleCwgMCwKKyAgICAg
ICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxh
Y2VkRWxlbWVudHMgfSk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gZW5kID0gVGV4dEl0ZXJhdG9y
OjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChlZGl0YWJsZVJvb3QuZ2V0KCksIGRlc3RpbmF0
aW9uSW5kZXggKyBlbmRJbmRleCwgMCwKKyAgICAgICAgICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgICAgIGlm
IChzdGFydCAmJiBlbmQpCiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbihzdGFydC0+c3RhcnRQb3NpdGlvbigpLCBlbmQtPnN0YXJ0UG9zaXRpb24oKSwgRE9X
TlNUUkVBTSwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0LDE0ICsxMDg0LDE0IEBA
IGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmwKICAgICB9CiAKICAgICBh
dXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwgZmlyc3RQb3NpdGlvbkluTm9kZShz
Y29wZS5nZXQoKSksIHBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBy
ZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
cmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJh
dG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiB9
CiAKIC8vIEZJWE1FOiBNZXJnZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG9uZSBhYm92ZS4KLWlu
dCBpbmRleEZvclZpc2libGVQb3NpdGlvbihOb2RlJiBub2RlLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbiwgYm9vbCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pCitpbnQg
aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oTm9kZSYgbm9kZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlUG9zaXRpb24sIE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9w
dGlvbnMpCiB7CiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS5kb2N1bWVudCgp
LCBmaXJzdFBvc2l0aW9uSW5Ob2RlKCZub2RlKSwgdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFs
ZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIHJldHVybiBUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOwor
ICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlLnB0cigpLCBvcHRpb25z
KTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aW9uV2l0aE9m
ZnNldChjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBpbnQgb2Zmc2V0KQpAQCAtMTEw
Niw3ICsxMTA2LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvc2l0aQog
CiBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4LCBDb250
YWluZXJOb2RlKiBzY29wZSkKIHsKLSAgICBhdXRvIHJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aChzY29wZSwgaW5kZXgsIDAsIHRydWUpOworICAgIGF1dG8g
cmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCBp
bmRleCwgMCwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVw
bGFjZWRFbGVtZW50cyB9KTsKICAgICAvLyBDaGVjayBmb3IgYW4gaW52YWxpZCBpbmRleC4gQ2Vy
dGFpbiBlZGl0aW5nIG9wZXJhdGlvbnMgaW52YWxpZGF0ZSBpbmRpY2VzIGJlY2F1c2UgCiAgICAg
Ly8gb2YgcHJvYmxlbXMgd2l0aCBUZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxs
VmlzaWJsZVBvc2l0aW9ucy4KICAgICBpZiAoIXJhbmdlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmgJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJO
YW1lcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDksNyArMTUxLDcgQEAgYm9vbCBs
aW5lQnJlYWtFeGlzdHNBdFZpc2libGVQb3NpdGlvbihjbwogV0VCQ09SRV9FWFBPUlQgaW50IGNv
bXBhcmVQb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CiAKIFdFQkNPUkVfRVhQT1JUIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBSZWZQdHI8Q29udGFpbmVyTm9kZT4mIHNjb3BlKTsKLWludCBp
bmRleEZvclZpc2libGVQb3NpdGlvbihOb2RlJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgYm9v
bCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworaW50IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KE5vZGUmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yTGVu
Z3RoT3B0aW9uPiA9IHsgfSk7CiBXRUJDT1JFX0VYUE9SVCBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yUG9zaXRpb25XaXRoT2Zmc2V0KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGlu
dCBvZmZzZXQpOwogV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvckluZGV4KGludCBpbmRleCwgQ29udGFpbmVyTm9kZSogc2NvcGUpOwogVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZvckluZGV4VXNpbmdDaGFyYWN0ZXJJdGVyYXRvcihOb2RlJiwg
aW50IGluZGV4KTsgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRoaXMgdmVyc2lvbj8KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDQ3MikK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjM5NiwxMCArMjM5NiwyMCBAQCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBj
b25zdAogCiAvLyAtLS0tLS0tLQogCi1pbnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25z
dCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uKQorc3RhdGljIFRl
eHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yRnJvbUxlZ250aE9wdGlvbnMoT3B0aW9uU2V0PFRl
eHRJdGVyYXRvckxlbmd0aE9wdGlvbj4gb3B0aW9ucykKK3sKKyAgICBUZXh0SXRlcmF0b3JCZWhh
dmlvciBiZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcjsKKyAgICBpZiAob3B0
aW9ucy5jb250YWlucyhUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9y
UmVwbGFjZWRFbGVtZW50cykpCisgICAgICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRvckVtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zOworICAgIGlmIChvcHRpb25zLmNv
bnRhaW5zKFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbjo6SWdub3JlVmlzaWJpbGl0eSkpCisgICAg
ICAgIGJlaGF2aW9yIHw9IFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHk7CisgICAg
cmV0dXJuIGJlaGF2aW9yOworfQorCitpbnQgVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChjb25z
dCBSYW5nZSogcmFuZ2UsIE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlv
bnMpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBp
dChyYW5nZSwgZm9yU2VsZWN0aW9uUHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yRW1pdHNDaGFy
YWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JEZWZhdWx0QmVo
YXZpb3IpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKQorICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0KHJhbmdlLCBiZWhhdmlvckZyb21MZWdudGhPcHRpb25zKG9wdGlvbnMpKTsgIWl0LmF0RW5k
KCk7IGl0LmFkdmFuY2UoKSkKICAgICAgICAgbGVuZ3RoICs9IGl0LnRleHQoKS5sZW5ndGgoKTsK
ICAgICByZXR1cm4gbGVuZ3RoOwogfQpAQCAtMjQxOCw3ICsyNDI4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzSW5zaWRlUmVwbGFjZWRFbGVtZQogICAgIHJldHVybiBub2RlICYmIGlzUmVuZGVy
ZXJSZXBsYWNlZEVsZW1lbnQobm9kZS0+cmVuZGVyZXIoKSk7CiB9CiAKLVJlZlB0cjxSYW5nZT4g
VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBz
Y29wZSwgaW50IHJhbmdlTG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBmb3JTZWxlY3Rp
b25QcmVzZXJ2YXRpb24pCitSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBp
bnQgcmFuZ2VMZW5ndGgsIE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+IG9wdGlv
bnMpCiB7CiAgICAgUmVmPFJhbmdlPiByZXN1bHRSYW5nZSA9IHNjb3BlLT5kb2N1bWVudCgpLmNy
ZWF0ZVJhbmdlKCk7CiAKQEAgLTI0MjgsNyArMjQzOCw3IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0
ZXJhdG9yOjpyYW5nZUZyb21Mb2MKIAogICAgIFJlZjxSYW5nZT4gdGV4dFJ1blJhbmdlID0gcmFu
Z2VPZkNvbnRlbnRzKCpzY29wZSk7CiAKLSAgICBUZXh0SXRlcmF0b3IgaXQodGV4dFJ1blJhbmdl
LnB0cigpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRlcmF0b3JFbWl0c0NoYXJh
Y3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckRlZmF1bHRCZWhh
dmlvcik7CisgICAgVGV4dEl0ZXJhdG9yIGl0KHRleHRSdW5SYW5nZS5wdHIoKSwgYmVoYXZpb3JG
cm9tTGVnbnRoT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSBhdEVu
ZCgpIGNoZWNrIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHdvcmthcm91bmQgZm9yIDxodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjg5Pi4KICAgICBpZiAoIXJhbmdlTG9j
YXRpb24gJiYgIXJhbmdlTGVuZ3RoICYmIGl0LmF0RW5kKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gMjU0NDcyKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+CiAKQEAgLTEyMSw4ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVGV4dEl0ZXJh
dG9yQ29weWFibGVUZXh0JiBjb3B5YWJsZVRleHQoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7
IHJldHVybiBtX2NvcHlhYmxlVGV4dDsgfQogICAgIHZvaWQgYXBwZW5kVGV4dFRvU3RyaW5nQnVp
bGRlcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdCB7IGNvcHlhYmxlVGV4dCgpLmFwcGVu
ZFRvU3RyaW5nQnVpbGRlcihidWlsZGVyKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGludCByYW5nZUxlbmd0aChjb25zdCBSYW5nZSosIGJvb2wgc3BhY2VzRm9yUmVwbGFjZWRFbGVt
ZW50cyA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFJhbmdlPiBy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50IHJhbmdl
TG9jYXRpb24sIGludCByYW5nZUxlbmd0aCwgYm9vbCBzcGFjZXNGb3JSZXBsYWNlZEVsZW1lbnRz
ID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBpbnQgcmFuZ2VMZW5ndGgoY29u
c3QgUmFuZ2UqLCBPcHRpb25TZXQ8VGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uPiA9IHsgfSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxSYW5nZT4gcmFuZ2VGcm9tTG9jYXRpb25B
bmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludCByYW5nZUxvY2F0aW9uLCBpbnQgcmFu
Z2VMZW5ndGgsIE9wdGlvblNldDxUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb24+ID0geyB9KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5n
ZShOb2RlKiBzY29wZSwgY29uc3QgUmFuZ2UqLCBzaXplX3QmIGxvY2F0aW9uLCBzaXplX3QmIGxl
bmd0aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSYW5nZT4gc3VicmFuZ2UoUmFu
Z2UmIGVudGlyZVJhbmdlLCBpbnQgY2hhcmFjdGVyT2Zmc2V0LCBpbnQgY2hhcmFjdGVyQ291bnQp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvckJlaGF2aW9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3JCZWhhdmlv
ci5oCShyZXZpc2lvbiAyNTQ0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvckJlaGF2aW9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDQgKzYzLDkgQEAgZW51bSBUZXh0
SXRlcmF0b3JCZWhhdmlvckZsYWcgewogCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFRleHRJdGVy
YXRvckJlaGF2aW9yOwogCitlbnVtIGNsYXNzIFRleHRJdGVyYXRvckxlbmd0aE9wdGlvbiA6IHVp
bnQ4X3QgeworICAgIEdlbmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cyA9IDEgPDwgMCwK
KyAgICBJZ25vcmVWaXNpYmlsaXR5ID0gMSA8PCAxLAorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElP
Uy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9u
Q29tbWFuZElPUy5jcHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMSAr
NjgsMTIgQEAgdm9pZCBEaWN0YXRpb25Db21tYW5kSU9TOjpkb0FwcGx5KCkKIAogICAgIC8vIEZJ
WE1FOiBBZGQgdGhlIHJlc3VsdCBtYXJrZXIgdXNpbmcgYSBQb3NpdGlvbiBjYWNoZWQgYmVmb3Jl
IHJlc3VsdHMgYXJlIGluc2VydGVkLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gVGV4dEl0ZXJhdG9y
cy4KICAgICBhdXRvIHJhbmdlVG9FbmQgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIGNyZWF0
ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbigoTm9kZSAqKXJvb3QsIDApLCBhZnRlclJlc3VsdHMuZGVl
cEVxdWl2YWxlbnQoKSk7Ci0gICAgaW50IGVuZEluZGV4ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxl
bmd0aChyYW5nZVRvRW5kLnB0cigpLCB0cnVlKTsKKyAgICBpbnQgZW5kSW5kZXggPSBUZXh0SXRl
cmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlVG9FbmQucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiAgICAgaW50IHN0
YXJ0SW5kZXggPSBlbmRJbmRleCAtIHJlc3VsdExlbmd0aDsKIAogICAgIGlmIChzdGFydEluZGV4
ID49IDApIHsKLSAgICAgICAgUmVmUHRyPFJhbmdlPiByZXN1bHRSYW5nZSA9IFRleHRJdGVyYXRv
cjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQo
KSwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRydWUpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJl
c3VsdFJhbmdlID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChkb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLCBzdGFydEluZGV4LCBlbmRJbmRleCwKKyAgICAgICAg
ICAgIHsgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2Vk
RWxlbWVudHMgfSk7CiAgICAgICAgIEFTU0VSVChyZXN1bHRSYW5nZSk7IC8vIEZJWE1FOiBXaGF0
IGd1YXJhbnRlZXMgdGhpcz8KICAgICAgICAgZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkRGljdGF0
aW9uUmVzdWx0TWFya2VyKCpyZXN1bHRSYW5nZSwgbV9tZXRhZGF0YSk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDMsMTYgKzY0MywxMyBAQCB1
bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kCiAKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBpbm5lclRleHRWYWx1ZSgpLmxlbmd0aCgpOwogICAgIGluZGV4ID0gc3RkOjptaW4o
aW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIGlubmVy
VGV4dFZhbHVlKCkganVzdCB0byBpZ25vcmUgdGhlIGxhc3QgTEYuIFNlZSBmaW5pc2hUZXh0Lgot
I2lmIDAKLSAgICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gY29kZSB3YXMgbmV2ZXIgYnVpbHQs
IGhhcyBiaXQgcm90dGVkLCBhbmQgbmVlZHMgdG8gYmUgZml4ZWQgYmVmb3JlIGl0IGNhbiBiZSBl
bmFibGVkOgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU3MDYuCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uID0gcGFzc2VkUG9zaXRpb247Ci0gICAgdW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5Vmlz
aWJsZVBvc2l0aW9uID0gMDsKLSAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTm90TnVsbCgpKQot
ICAgICAgICBpbmRleENvbXB1dGVkQnlWaXNpYmxlUG9zaXRpb24gPSBXZWJDb3JlOjppbmRleEZv
clZpc2libGVQb3NpdGlvbihpbm5lclRleHQsIHZpc2libGVQb3NpdGlvbiwgZmFsc2UgLyogZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uICovKTsKLSAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21w
dXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsKLSNlbmRpZgorICAgIGlmICh2aXNpYmxlUG9zaXRpb24u
aXNOb3ROdWxsKCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBv
c2l0aW9uID0gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oKmlubmVyVGV4dCwgdmlz
aWJsZVBvc2l0aW9uLAorICAgICAgICAgICAgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246Okdl
bmVyYXRlU3BhY2VzRm9yUmVwbGFjZWRFbGVtZW50cywgVGV4dEl0ZXJhdG9yTGVuZ3RoT3B0aW9u
OjpJZ25vcmVWaXNpYmlsaXR5IH0pOworICAgICAgICBBU1NFUlQoaW5kZXggPT0gaW5kZXhDb21w
dXRlZEJ5VmlzaWJsZVBvc2l0aW9uKTsKKyAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gaW5kZXg7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTQ0
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50CiBzdGF0aWMgaW50IHRleHREaXN0YW5jZShjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IFBvc2l0aW9uJiBlbmQpCiB7CiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc3Rh
cnQuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBzdGFydCwgZW5kKTsKLSAgICByZXR1cm4gVGV4
dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAgcmV0dXJuIFRl
eHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UucHRyKCksIHsgVGV4dEl0ZXJhdG9yTGVuZ3Ro
T3B0aW9uOjpHZW5lcmF0ZVNwYWNlc0ZvclJlcGxhY2VkRWxlbWVudHMgfSk7CiB9CiAKIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTQ0NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAxLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEVuYWJsZSB0aGUgb2Zmc2V0IGFzc2VydGlvbiBpbiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6aW5kZXhGb3JQb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OnJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQpOgorCiAyMDIw
LTAxLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAg
ICAgIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5IHNob3VsZCBiZSBmb3J3YXJk
IGRlY2xhcmVkIG5vdCBpbXBvcnRlZCBpbiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQ
YXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI1NDQ3MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTU3LDcg
KzE5NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JlU2VsZWN0aW9uRm9yQWNjZXNzaWJpCiBzdGF0
aWMgUmVmUHRyPFJhbmdlPiByYW5nZU5lYXJQb3NpdGlvbk1hdGNoZXNUZXh0KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24sIFJlZlB0cjxSYW5nZT4gb3JpZ2luYWxSYW5nZSwgY29uc3Qg
U3RyaW5nJiBtYXRjaFRleHQsIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UpCiB7CiAgICAg
YXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoc2VsZWN0aW9uUmFuZ2UtPm93bmVyRG9jdW1lbnQo
KSwgc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5wdHIoKSwgdHJ1ZSk7CisgICAg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5w
dHIoKSwgeyBUZXh0SXRlcmF0b3JMZW5ndGhPcHRpb246OkdlbmVyYXRlU3BhY2VzRm9yUmVwbGFj
ZWRFbGVtZW50cyB9KTsKICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFpblRleHQoKnNlbGVjdGlv
blJhbmdlLmdldCgpLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>