<?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>228613</bug_id>
          
          <creation_ts>2021-07-29 15:12:51 -0700</creation_ts>
          <short_desc>[JSC] Yarr BoyerMoore search should support character-class</short_desc>
          <delta_ts>2021-08-03 13:25:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1780593</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 15:12:51 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780705</commentid>
    <comment_count>1</comment_count>
      <attachid>434606</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 23:45:13 -0700</bug_when>
    <thetext>Created attachment 434606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780706</commentid>
    <comment_count>2</comment_count>
      <attachid>434607</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-29 23:52:00 -0700</bug_when>
    <thetext>Created attachment 434607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780917</commentid>
    <comment_count>3</comment_count>
      <attachid>434655</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 12:53:44 -0700</bug_when>
    <thetext>Created attachment 434655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780926</commentid>
    <comment_count>4</comment_count>
      <attachid>434659</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 13:14:35 -0700</bug_when>
    <thetext>Created attachment 434659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780928</commentid>
    <comment_count>5</comment_count>
      <attachid>434661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 13:22:01 -0700</bug_when>
    <thetext>Created attachment 434661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781028</commentid>
    <comment_count>6</comment_count>
      <attachid>434681</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 18:26:20 -0700</bug_when>
    <thetext>Created attachment 434681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781036</commentid>
    <comment_count>7</comment_count>
      <attachid>434682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 19:40:48 -0700</bug_when>
    <thetext>Created attachment 434682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781037</commentid>
    <comment_count>8</comment_count>
      <attachid>434682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-30 19:42:56 -0700</bug_when>
    <thetext>Comment on attachment 434682
Patch

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

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:2462
&gt;                          if (!m_pattern.m_body-&gt;m_hasFixedSize) {

Previously, this path was dead code since we run this only when `disjunction-&gt;m_hasFixedSize` is true. After removing that restriction, I found the bug that we didn&apos;t update that when the match is failed, that&apos;s the above change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781098</commentid>
    <comment_count>9</comment_count>
      <attachid>434704</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-07-31 13:56:40 -0700</bug_when>
    <thetext>Created attachment 434704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781311</commentid>
    <comment_count>10</comment_count>
      <attachid>434770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 10:55:45 -0700</bug_when>
    <thetext>Created attachment 434770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781321</commentid>
    <comment_count>11</comment_count>
      <attachid>434773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 11:12:03 -0700</bug_when>
    <thetext>Created attachment 434773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781430</commentid>
    <comment_count>12</comment_count>
      <attachid>434773</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-08-02 15:50:14 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:3974
&gt; +                    if (!characterClass.m_rangesUnicode.isEmpty())
&gt; +                        bmInfo.addRanges(cursor, characterClass.m_rangesUnicode);
&gt; +                    if (!characterClass.m_matchesUnicode.isEmpty())
&gt; +                        bmInfo.addCharacters(cursor, characterClass.m_matchesUnicode);

don&apos;t we check that the regex isn&apos;t unicode before collecting BM info?

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:111
&gt; +            if (static_cast&lt;unsigned&gt;(range.end - range.begin + 1) &gt;= mapSize) {

why isn&apos;t this looking at m_count + (range.end-range.begin+1)?

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:122
&gt; +        m_count = mapSize;

we don&apos;t need to set the actual bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781439</commentid>
    <comment_count>13</comment_count>
      <attachid>434773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 16:00:25 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.cpp:3974
&gt;&gt; +                        bmInfo.addCharacters(cursor, characterClass.m_matchesUnicode);
&gt; 
&gt; don&apos;t we check that the regex isn&apos;t unicode before collecting BM info?

unicode() flag is whether we decode surrogate-pairs. This is different concept from including unicode in RegExp, so RegExp can include non-ASCII characters without unicode flag.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:111
&gt;&gt; +            if (static_cast&lt;unsigned&gt;(range.end - range.begin + 1) &gt;= mapSize) {
&gt; 
&gt; why isn&apos;t this looking at m_count + (range.end-range.begin+1)?

It is possible that these characters overlaps with the already included characters in the bitmap. In that case, `m_count + (range.end-range.begin+1)` is too restrictive.
On the other hand, if the range exceeds the mapSize, then we can definitely say &quot;this range does not fit in mapSize&quot;.

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:122
&gt;&gt; +        m_count = mapSize;
&gt; 
&gt; we don&apos;t need to set the actual bits?

This map-count value is used to check whether we should care this bitmap in `findBestCharacterSequence`. So by setting it to mapSize, we can say &quot;the collected characters are not sure, but this map is not useful&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781443</commentid>
    <comment_count>14</comment_count>
      <attachid>434773</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-08-02 16:06:01 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

r=me

&gt;&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:122
&gt;&gt;&gt; +        m_count = mapSize;
&gt;&gt; 
&gt;&gt; we don&apos;t need to set the actual bits?
&gt; 
&gt; This map-count value is used to check whether we should care this bitmap in `findBestCharacterSequence`. So by setting it to mapSize, we can say &quot;the collected characters are not sure, but this map is not useful&quot;.

can we static assert that the limit is &lt;= mapSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781454</commentid>
    <comment_count>15</comment_count>
      <attachid>434773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 16:31:20 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:122
&gt;&gt;&gt;&gt; +        m_count = mapSize;
&gt;&gt;&gt; 
&gt;&gt;&gt; we don&apos;t need to set the actual bits?
&gt;&gt; 
&gt;&gt; This map-count value is used to check whether we should care this bitmap in `findBestCharacterSequence`. So by setting it to mapSize, we can say &quot;the collected characters are not sure, but this map is not useful&quot;.
&gt; 
&gt; can we static assert that the limit is &lt;= mapSize?

Yes, done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781460</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 16:43:24 -0700</bug_when>
    <thetext>Committed r280570 (240194@main): &lt;https://commits.webkit.org/240194@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781461</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-02 16:44:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/81435189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781485</commentid>
    <comment_count>18</comment_count>
      <attachid>434773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-02 17:40:06 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt; Source/JavaScriptCore/yarr/YarrJIT.h:98
&gt; +        for (UChar character : characters)

Why is this narrowing the UChar32 to UChar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781494</commentid>
    <comment_count>19</comment_count>
      <attachid>434773</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 18:05:48 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:98
&gt;&gt; +        for (UChar character : characters)
&gt; 
&gt; Why is this narrowing the UChar32 to UChar?

Oops, I&apos;ll change it. (but this is not an issue since we mask this character with 0x7f anyway in `add`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781495</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-08-02 18:11:38 -0700</bug_when>
    <thetext>Committed r280577 (240199@main): &lt;https://commits.webkit.org/240199@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781724</commentid>
    <comment_count>21</comment_count>
      <attachid>434773</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-03 13:25:30 -0700</bug_when>
    <thetext>Comment on attachment 434773
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/yarr/YarrJIT.h:98
&gt;&gt;&gt; +        for (UChar character : characters)
&gt;&gt; 
&gt;&gt; Why is this narrowing the UChar32 to UChar?
&gt; 
&gt; Oops, I&apos;ll change it. (but this is not an issue since we mask this character with 0x7f anyway in `add`.

Glad this didn’t matter. It’s an example of why I like auto so much.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434606</attachid>
            <date>2021-07-29 23:45:13 -0700</date>
            <delta_ts>2021-07-29 23:51:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210729234512.patch</filename>
            <type>text/plain</type>
            <size>13745</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmE3ZTIwYjY4NjM1OWEwODUwMjc4MGU0NmUxZTVhNjQzNTI0NWNlLi5mZWQ5MzUxOTZlOTcxODBk
MjllYWU2Y2JiYzVmYTFlNGVjYzZjZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVJbmZvOjpzaG9ydGVuTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUlu
Zm86OnNldEFsbCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRDaGFy
YWN0ZXJzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZFJhbmdlcyk6
CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVCaXRtYXA6OmFkZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFk
ZENoYXJhY3RlcnMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRS
YW5nZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpzZXRBbGwpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjppc0FsbFNldCBjb25zdCk6CisK
IDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBjYW5Q
ZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCBiMWI2ZDU2N2JhZDk4MmI3Njg1ZTNiMWZmNzhiZDI1ODZkMWUwNGE2Li4xY2QxYjg0MWVl
NmNjYjYzYTk5OTBkZDg4NWIxOGZjYTcwMGYzNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtNjMsMTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnMuc2l6ZSgpOyB9CisgICAgdm9pZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBt
X2NoYXJhY3RlcnMuc2hyaW5rKGxlbmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0
b3I8VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5k
ZXhdLmFkZENoYXJhY3RlcnMoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5n
ZXModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQor
ICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAg
IHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDgg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIFttYXAsIGlz
TWFza0VmZmVjdGl2ZV0gPSBvcC5tX2JtSW5mby0+Y3JlYXRlQ2FuZGlkYXRlQml0bWFwKGJlZ2lu
SW5kZXgsIGVuZEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hcENv
dW50ID0gbWFwLmNvdW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBjYW5kaWF0
ZSBjaGFyYWN0ZXJzIGFyZSA8PSAyLCBjaGVja2luZyBlYWNoIGlzIGJldHRlciB0aGFuIHVzaW5n
IHZlY3Rvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG91dE9mTGVuZ3RoRmFp
bHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoZWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPD0gMikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMSA9IG1hcC5maW5kQml0KDAsIHRydWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIxICE9IEJveWVyTW9vcmVC
aXRtYXA6Ok1hcDo6c2l6ZSgpKTsKQEAgLTIzOTMsNyArMjQxNSw2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZv
dW5kIDEtb3ItMiBjaGFyYWN0ZXJzIGxvb2thaGVhZCBjaGFyYWN0ZXI6KDB4IiwgaGV4KGNoYXJh
Y3RlcjEpLCAiKSxjaGFyYWN0ZXIyOigiLCBoZXgoY2hhcmFjdGVyMiksICIpLGlzTWFza0VmZmVj
dGl2ZTooIiwgaXNNYXNrRWZmZWN0aXZlLCIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBl
bmRJbmRleCwgIikiKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1h
dGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNNYXNrRWZmZWN0aXZlKQpAQCAtMjQwMSw5ICsyNDIyLDEwIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKGNoYXJhY3RlcjIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGVuZEluZGV4IC0gYmVn
aW5JbmRleCksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0
aEZhaWx1cmUuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCBpbmRleCwgbGVuZ3RoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90KiBwb2ludGVyID0gZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3Iob3AubV9ibUluZm8tPmlu
ZGV4KCksIG1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFk
IGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZElu
ZGV4LCAiKSIpOwpAQCAtMjQxMiwxMiArMjQzNCwyNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZElu
ZGV4ICsgMSwgcmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0
ZWRJbW0zMihCb3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVy
bywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZElu
ZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
YXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBCYXNlSW5kZXgocmVnVDEsIHJlZ1QwLCBUaW1l
c09uZSkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGVuZElu
ZGV4IC0gYmVnaW5JbmRleCksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCBpbmRleCwgbGVuZ3RoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhp
cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXgg
Zm9yIHVzZSBpZiB3ZSBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0
ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRPZkxlbmd0aEZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1Qw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChv
dXRPZkxlbmd0aEZhaWx1cmUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxp
bmsodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXpl
IGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBt
YXRjaC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9o
YXNGaXhlZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemUpIHsKQEAgLTM4MTgsNyArMzg1NSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAvLyBpdCBmYWlscyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRv
IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgb2Zmc2V0LgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCB1bmljb2RlIGZsYWcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjg2MTEKLSAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXpl
ICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYm
ICFtX3BhdHRlcm4udW5pY29kZSgpKSB7CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYmICFtX3BhdHRlcm4udW5pY29kZSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJveWVyTW9vcmVJbmZvOjpjcmVhdGUoc3RkOjpt
aW48dW5zaWduZWQ+KGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplLCBCb3llck1vb3JlSW5mbzo6
bWF4TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAoY29sbGVjdEJveWVyTW9vcmVJbmZvKGRpc2p1
bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgewogICAgICAg
ICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKQEAgLTM4Njcs
MTMgKzM5MDQsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxl
Y3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4s
IGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9t
CiAgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcg
c3RyaWRlLgogCi0gICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAv
LyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCb3llck1vb3JlIHNl
YXJjaC4KICAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplKTsKIAogICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQgZGlzanVuY3Rpb25zIChlLmcuIC8oPzphYmN8
ZGVmfGcoPzpoaXxqaykpLykuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2MTQKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2hhcmFjdGVy
LWNsYXNzIChlLmcuIC9bXGRddGVzdC8pLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEzCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5v
bi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUuZy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJjIiBz
ZXF1ZW5jZSkuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg2MTIKICAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOwpAQCAtMzg4NiwyMCArMzkyMCw0NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToK
LSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoK
ICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJw
YXR0ZXJuOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
dGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6
RG90U3RhckVuY2xvc3VyZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpDaGFyYWN0ZXJDbGFzczogeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0
eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBjaGFyYWN0ZXJD
bGFzcyA9ICp0ZXJtLmNoYXJhY3RlckNsYXNzOworICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5pbnZlcnQoKSB8fCBjaGFyYWN0ZXJDbGFzcy5tX2FueUNoYXJhY3RlcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3IpOworICAgICAgICAgICAgICAgICAg
ICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyQ2xhc3Mu
bV90YWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3Ip
OworICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uYWRkUmFuZ2VzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3Mu
bV9yYW5nZXNVbmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFz
cy5tX21hdGNoZXNVbmljb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5hZGRDaGFyYWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5pY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3Is
IGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFy
YWN0ZXJDbGFzcy5tX21hdGNoZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Ym1JbmZvLmFkZENoYXJhY3RlcnMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXMpOwor
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRp
dHlNYXhDb3VudCAhPSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVj
b2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgLy8g
Rm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2Ug
cmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFz
cy4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8
IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlx
dWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKQEAgLTM5MDksMTMg
KzM5NjksMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRlcm0ucGF0dGVybkNo
YXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBibUluZm8uc2hvcnRlbkxl
bmd0aChjdXJzb3IpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRlcm5hbDo6dmVyYm9zZSwgIkNo
YXJhY3RlcnMgY29sbGVjdGVkIik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gYm1JbmZvLmxlbmd0aCgpOwogICAgIH0KIAogICAgIGNvbnN0IHVpbnQ4X3QqIGdldEJveWVy
TW9vcmVCeXRlVmVjdG9yKHVuc2lnbmVkIGluZGV4LCBjb25zdCBCb3llck1vb3JlQml0bWFwOjpN
YXAmIG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCBmZmM5ZTMyY2Qw
Mzc3NzUxOGNlZWEwNjIwNmIxZGZkNzYyMWM5MzY3Li4xYjViNjA2Y2FjYWVhZmQ2MThhMTlhOTMz
NzU3MjRmM2EyMDU1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC02
MSw2ICs2MSw3IEBAIGVudW0gY2xhc3MgSklURmFpbHVyZVJlYXNvbiA6IHVpbnQ4X3QgewogfTsK
IAogY2xhc3MgQm95ZXJNb29yZUJpdG1hcCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQm95
ZXJNb29yZUJpdG1hcCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoQm95ZXJNb29yZUJp
dG1hcCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXBTaXplID0g
MTI4OwpAQCAtNzUsNiArNzYsOCBAQCBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKIAogICAgIHZv
aWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKKyAgICAgICAgaWYgKGlzQWxsU2V0KCkp
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gY2hhcmFj
dGVyICYgbWFwTWFzazsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihjaGFyYWN0ZXIpKQogICAgICAgICAgICAgbV9pc01hc2tFZmZlY3RpdmUgPSB0cnVlOwpA
QCAtODQsNiArODcsNDMgQEAgY2xhc3MgQm95ZXJNb29yZUJpdG1hcCB7CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVmVjdG9yPFVDaGFyMzI+JiBjaGFy
YWN0ZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGlzQWxsU2V0KCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGlmIChjaGFyYWN0ZXJzLnNpemUoKSA+PSBtYXBTaXplKSB7CisgICAgICAg
ICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKFVDaGFyIGNoYXJhY3RlciA6IGNoYXJhY3RlcnMpCisgICAgICAgICAgICBhZGQoY2hhcmFj
dGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFJhbmdlcyhjb25zdCBWZWN0b3I8Q2hhcmFjdGVy
UmFuZ2U+JiByYW5nZXMpCisgICAgeworICAgICAgICBpZiAocmFuZ2VzLnNpemUoKSA+PSBtYXBT
aXplKSB7CisgICAgICAgICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKENoYXJhY3RlclJhbmdlIHJhbmdlIDogcmFuZ2VzKSB7CisgICAg
ICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLmVuZCAtIHJhbmdlLmJlZ2luICsg
MSkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoVUNoYXIzMiBjaGFy
YWN0ZXIgPSByYW5nZS5iZWdpbjsgY2hhcmFjdGVyIDw9IHJhbmdlLmVuZDsgKytjaGFyYWN0ZXIp
CisgICAgICAgICAgICAgICAgYWRkKGNoYXJhY3Rlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIHNldEFsbCgpCisgICAgeworICAgICAgICBtX2NvdW50ID0gbWFwU2l6ZTsKKyAgICB9
CisKKyAgICBib29sIGlzQWxsU2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudCA9PSBtYXBTaXpl
OyB9CisKIHByaXZhdGU6CiAgICAgTWFwIG1fbWFwIHsgfTsKICAgICB1bnNpZ25lZCBtX2NvdW50
IHsgMCB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434607</attachid>
            <date>2021-07-29 23:52:00 -0700</date>
            <delta_ts>2021-07-30 12:53:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210729235200.patch</filename>
            <type>text/plain</type>
            <size>15470</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmE3ZTIwYjY4NjM1OWEwODUwMjc4MGU0NmUxZTVhNjQzNTI0NWNlLi5mZWQ5MzUxOTZlOTcxODBk
MjllYWU2Y2JiYzVmYTFlNGVjYzZjZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVJbmZvOjpzaG9ydGVuTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUlu
Zm86OnNldEFsbCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRDaGFy
YWN0ZXJzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZFJhbmdlcyk6
CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVCaXRtYXA6OmFkZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFk
ZENoYXJhY3RlcnMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRS
YW5nZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpzZXRBbGwpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjppc0FsbFNldCBjb25zdCk6CisK
IDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBjYW5Q
ZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCBiMWI2ZDU2N2JhZDk4MmI3Njg1ZTNiMWZmNzhiZDI1ODZkMWUwNGE2Li4xZTBmYWEzOTY2
YjdhZDc4NmE2N2FmMWVlODBlNjJjYjlmNjAxZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtNjMsMTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnMuc2l6ZSgpOyB9CisgICAgdm9pZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBt
X2NoYXJhY3RlcnMuc2hyaW5rKGxlbmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0
b3I8VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5k
ZXhdLmFkZENoYXJhY3RlcnMoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5n
ZXModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQor
ICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAg
IHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDgg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0
ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIFttYXAsIGlz
TWFza0VmZmVjdGl2ZV0gPSBvcC5tX2JtSW5mby0+Y3JlYXRlQ2FuZGlkYXRlQml0bWFwKGJlZ2lu
SW5kZXgsIGVuZEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1hcENv
dW50ID0gbWFwLmNvdW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBjYW5kaWF0
ZSBjaGFyYWN0ZXJzIGFyZSA8PSAyLCBjaGVja2luZyBlYWNoIGlzIGJldHRlciB0aGFuIHVzaW5n
IHZlY3Rvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG91dE9mTGVuZ3RoRmFp
bHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoZWQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPD0gMikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMSA9IG1hcC5maW5kQml0KDAsIHRydWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIxICE9IEJveWVyTW9vcmVC
aXRtYXA6Ok1hcDo6c2l6ZSgpKTsKQEAgLTIzOTMsNyArMjQxNSw2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZv
dW5kIDEtb3ItMiBjaGFyYWN0ZXJzIGxvb2thaGVhZCBjaGFyYWN0ZXI6KDB4IiwgaGV4KGNoYXJh
Y3RlcjEpLCAiKSxjaGFyYWN0ZXIyOigiLCBoZXgoY2hhcmFjdGVyMiksICIpLGlzTWFza0VmZmVj
dGl2ZTooIiwgaXNNYXNrRWZmZWN0aXZlLCIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBl
bmRJbmRleCwgIikiKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1h
dGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNNYXNrRWZmZWN0aXZlKQpAQCAtMjQwMSw5ICsyNDIyLDEwIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMy
KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKGNoYXJhY3RlcjIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1w
cy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGVuZEluZGV4IC0gYmVn
aW5JbmRleCksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0
aEZhaWx1cmUuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCBpbmRleCwgbGVuZ3RoKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90KiBwb2ludGVyID0gZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3Iob3AubV9ibUluZm8tPmlu
ZGV4KCksIG1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0
aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFk
IGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZElu
ZGV4LCAiKSIpOwpAQCAtMjQxMiwxMiArMjQzNCwyNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZElu
ZGV4ICsgMSwgcmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0
ZWRJbW0zMihCb3llck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVy
bywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZElu
ZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQu
YXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBCYXNlSW5kZXgocmVnVDEsIHJlZ1QwLCBUaW1l
c09uZSkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZDMyKEltbTMyKGVuZElu
ZGV4IC0gYmVnaW5JbmRleCksIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGJyYW5jaDMyKEFib3ZlLCBpbmRleCwgbGVuZ3RoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhp
cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0
aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXgg
Zm9yIHVzZSBpZiB3ZSBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0
ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRPZkxlbmd0aEZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1Qw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChv
dXRPZkxlbmd0aEZhaWx1cmUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxp
bmsodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXpl
IGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBt
YXRjaC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9o
YXNGaXhlZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemUpIHsKQEAgLTM4MTgsNyArMzg1NSw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAvLyBpdCBmYWlscyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRv
IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgb2Zmc2V0LgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCB1bmljb2RlIGZsYWcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjg2MTEKLSAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXpl
ICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYm
ICFtX3BhdHRlcm4udW5pY29kZSgpKSB7CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYmICFtX3BhdHRlcm4udW5pY29kZSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJveWVyTW9vcmVJbmZvOjpjcmVhdGUoc3RkOjpt
aW48dW5zaWduZWQ+KGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplLCBCb3llck1vb3JlSW5mbzo6
bWF4TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAoY29sbGVjdEJveWVyTW9vcmVJbmZvKGRpc2p1
bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgewogICAgICAg
ICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKQEAgLTM4Njcs
MTMgKzM5MDQsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxl
Y3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4s
IGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9t
CiAgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcg
c3RyaWRlLgogCi0gICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAv
LyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCb3llck1vb3JlIHNl
YXJjaC4KICAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplKTsKIAogICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQgZGlzanVuY3Rpb25zIChlLmcuIC8oPzphYmN8
ZGVmfGcoPzpoaXxqaykpLykuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2MTQKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2hhcmFjdGVy
LWNsYXNzIChlLmcuIC9bXGRddGVzdC8pLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEzCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5v
bi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUuZy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJjIiBz
ZXF1ZW5jZSkuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg2MTIKICAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOwpAQCAtMzg4NiwyMCArMzkyMCw0NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToK
LSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoK
ICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJw
YXR0ZXJuOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
dGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6
RG90U3RhckVuY2xvc3VyZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpDaGFyYWN0ZXJDbGFzczogeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0
eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBjaGFyYWN0ZXJD
bGFzcyA9ICp0ZXJtLmNoYXJhY3RlckNsYXNzOworICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5pbnZlcnQoKSB8fCBjaGFyYWN0ZXJDbGFzcy5tX2FueUNoYXJhY3RlcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3IpOworICAgICAgICAgICAgICAgICAg
ICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyQ2xhc3Mu
bV90YWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3Ip
OworICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uYWRkUmFuZ2VzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3Mu
bV9yYW5nZXNVbmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFz
cy5tX21hdGNoZXNVbmljb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5hZGRDaGFyYWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5pY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3Is
IGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFy
YWN0ZXJDbGFzcy5tX21hdGNoZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Ym1JbmZvLmFkZENoYXJhY3RlcnMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXMpOwor
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRp
dHlNYXhDb3VudCAhPSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVj
b2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgLy8g
Rm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2Ug
cmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFz
cy4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8
IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlx
dWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKQEAgLTM5MDksMTMg
KzM5NjksMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRlcm0ucGF0dGVybkNo
YXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJy
SklUSW50ZXJuYWw6OnZlcmJvc2UsICJTaG9ydGVuaW5nIHRvICIsIGN1cnNvcik7CisgICAgICAg
ICAgICAgICAgYm1JbmZvLnNob3J0ZW5MZW5ndGgoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBkYXRhTG9nTG5JZihZYXJy
SklUSW50ZXJuYWw6OnZlcmJvc2UsICJDaGFyYWN0ZXJzIGNvbGxlY3RlZCIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGJtSW5mby5sZW5ndGgoKTsKICAgICB9CiAKICAg
ICBjb25zdCB1aW50OF90KiBnZXRCb3llck1vb3JlQnl0ZVZlY3Rvcih1bnNpZ25lZCBpbmRleCwg
Y29uc3QgQm95ZXJNb29yZUJpdG1hcDo6TWFwJiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKaW5kZXggZmZjOWUzMmNkMDM3Nzc1MThjZWVhMDYyMDZiMWRmZDc2MjFjOTM2Ny4u
MWI1YjYwNmNhY2FlYWZkNjE4YTE5YTkzMzc1NzI0ZjNhMjA1NTM2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNjEsNiArNjEsNyBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1
cmVSZWFzb24gOiB1aW50OF90IHsKIH07CiAKIGNsYXNzIEJveWVyTW9vcmVCaXRtYXAgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVyTW9vcmVCaXRtYXApOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRtYXApOwogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEyODsKQEAgLTc1LDYgKzc2LDggQEAgY2xhc3MgQm95
ZXJNb29yZUJpdG1hcCB7CiAKICAgICB2b2lkIGFkZChVQ2hhcjMyIGNoYXJhY3RlcikKICAgICB7
CisgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IGNoYXJhY3RlciAmIG1hcE1hc2s7CiAgICAgICAgIGlmIChwb3Np
dGlvbiAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyKSkKICAgICAgICAgICAgIG1f
aXNNYXNrRWZmZWN0aXZlID0gdHJ1ZTsKQEAgLTg0LDYgKzg3LDQzIEBAIGNsYXNzIEJveWVyTW9v
cmVCaXRtYXAgewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKGNv
bnN0IFZlY3RvcjxVQ2hhcjMyPiYgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIGlmIChpc0Fs
bFNldCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoY2hhcmFjdGVycy5zaXpl
KCkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChVQ2hhciBjaGFyYWN0ZXIgOiBjaGFyYWN0ZXJz
KQorICAgICAgICAgICAgYWRkKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5n
ZXMoY29uc3QgVmVjdG9yPENoYXJhY3RlclJhbmdlPiYgcmFuZ2VzKQorICAgIHsKKyAgICAgICAg
aWYgKHJhbmdlcy5zaXplKCkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgc2V0QWxsKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChDaGFyYWN0ZXJSYW5n
ZSByYW5nZSA6IHJhbmdlcykgeworICAgICAgICAgICAgaWYgKGlzQWxsU2V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YW5nZS5lbmQgLSByYW5nZS5iZWdpbiArIDEpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgICAg
ICBzZXRBbGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBmb3IgKFVDaGFyMzIgY2hhcmFjdGVyID0gcmFuZ2UuYmVnaW47IGNoYXJhY3RlciA8
PSByYW5nZS5lbmQ7ICsrY2hhcmFjdGVyKQorICAgICAgICAgICAgICAgIGFkZChjaGFyYWN0ZXIp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRBbGwoKQorICAgIHsKKyAgICAgICAg
bV9jb3VudCA9IG1hcFNpemU7CisgICAgfQorCisgICAgYm9vbCBpc0FsbFNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fY291bnQgPT0gbWFwU2l6ZTsgfQorCiBwcml2YXRlOgogICAgIE1hcCBtX21hcCB7
IH07CiAgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjQzZGJiOTI0MzU2ZDZmODUxYjEzZjc5
NDQyNGVjNzgwNGM5OWMxYy4uZGUzOTc3Yzg0YTE4ZWMxZTMyNzFiN2E4MmM4NTk5ZGY3NGYxYmY5
NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1
cHBvcnQgY2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHN0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXpl
cm8tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHJlZ2V4
cC5hLmIuYy5kLmUuZi5nLmguaS5qLmsubC5tLm4uby5wLnEuci5zLnQudS52LncueC55LnouMC4x
LjIuMy40LjUuNi43LjguOS50LnYubi5yKToKKwogMjAyMS0wNy0yOSAgVGFkZXUgWmFnYWxsbyAg
PHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIg
c2hvdWxkIGNoZWNrIGlmIHJlY2VpdmVyIGNhblBlcmZvcm1GYXN0UHV0SW5saW5lCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8t
bGVuZ3RoLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0
ZS16ZXJvLWxlbmd0aC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzAxNmE1MjdhZDA4ZDY4NDAwMmIyZGFlYzVl
ZjI1YmUwYmZhYjcyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJt
LXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5qcwpAQCAtMCwwICsxLDE0IEBACitm
dW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFs
KTsKK30KKwordmFyIHJlZ2V4cCA9IC9hfGJ8Y3xkfGV8ZnxnfGh8aXxqfGt8bHxtfG58b3xwfHF8
cnxzfHR8dXx2fHd8eHx5fHp8MHwxfDJ8M3w0fDV8Nnw3fDh8OXwgfFx0fFx2fFxufFxyfFwkfFxe
fFwmfFwqfFwofFwpLworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hv
dWxkQmUocmVnZXhwLnRlc3QoYCUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JWApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoYOODhuOCueODiGApLCBmYWxz
ZSk7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoYHRlc3RpbmdgKSwgdHJ1ZSk7CisgICAgc2hv
dWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCBgYCk7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0
Q29udGV4dCwgYGVzdGluZ2ApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434655</attachid>
            <date>2021-07-30 12:53:44 -0700</date>
            <delta_ts>2021-07-30 13:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210730125343.patch</filename>
            <type>text/plain</type>
            <size>15750</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmE3ZTIwYjY4NjM1OWEwODUwMjc4MGU0NmUxZTVhNjQzNTI0NWNlLi40ZTY3MDg3YTk2NzRmZjc1
NmJlNWMzNjI4NjNkNzhhOTg3MWI0YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHlhcnIvWWFyckpJVC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVJbmZvOjpzaG9ydGVuTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUlu
Zm86OnNldEFsbCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRDaGFy
YWN0ZXJzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZFJhbmdlcyk6
CisgICAgICAgICogeWFyci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9v
cmVCaXRtYXA6OmFkZCk6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFk
ZENoYXJhY3RlcnMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRS
YW5nZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpzZXRBbGwpOgor
ICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjppc0FsbFNldCBjb25zdCk6CisK
IDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBjYW5Q
ZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApp
bmRleCBiMWI2ZDU2N2JhZDk4MmI3Njg1ZTNiMWZmNzhiZDI1ODZkMWUwNGE2Li40ODEzMWRjZDhm
MmQ2YTMxNDZiMGE2MjRiNzc0MTBiMzVhZjExZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcApAQCAtNjMsMTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3Rl
cnMuc2l6ZSgpOyB9CisgICAgdm9pZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBt
X2NoYXJhY3RlcnMuc2hyaW5rKGxlbmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWdu
ZWQgaW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJz
W2luZGV4XS5hZGQoY2hhcmFjdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7Cisg
ICAgfQorCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0
b3I8VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5k
ZXhdLmFkZENoYXJhY3RlcnMoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5n
ZXModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQor
ICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAg
IH0KKwogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAg
IHZvaWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDEy
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBp
c01hc2tFZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdp
bkluZGV4LCBlbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBD
b3VudCA9IG1hcC5jb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlh
dGUgY2hhcmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2lu
ZyB2ZWN0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRPZkxlbmd0aEZh
aWx1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAi
Qk0gQml0bWFwIGlzICIsIG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJu
cyBsaWtlIC9bXS8gaGF2ZSB6ZXJvIGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJhcmUsIHdlIGRv
IG5vdCBkbyBub3RoaW5nIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1h
cENvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFw
OjpNYXA6OnNpemUoKSk7CkBAIC0yMzkzLDcgKzI0MTksNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAx
LW9yLTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIx
KSwgIiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6
KCIsIGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5k
ZXgsICIpIik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVk
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0
IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzTWFza0VmZmVjdGl2ZSkKQEAgLTI0MDEsOSArMjQyNiwxMCBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVh
bCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtYXBDb3VudCA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihj
aGFyYWN0ZXIyKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBw
ZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihlbmRJbmRleCAtIGJlZ2luSW5k
ZXgpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWls
dXJlLmFwcGVuZChicmFuY2gzMihBYm92ZSwgaW5kZXgsIGxlbmd0aCkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCogcG9pbnRlciA9IGdldEJveWVyTW9vcmVCeXRlVmVjdG9yKG9wLm1fYm1JbmZvLT5pbmRleCgp
LCBtYXApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgYml0bWFwIGxvb2thaGVhZCBjb3Vu
dDooIiwgbWFwQ291bnQsICIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwg
IikiKTsKQEAgLTI0MTIsMTIgKzI0MzgsMjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6
IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCAr
IDEsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1t
MzIoQm95ZXJNb29yZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJh
c2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAt
IGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVu
ZChicmFuY2hUZXN0MzIoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUp
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQzMihJbW0zMihlbmRJbmRleCAt
IGJlZ2luSW5kZXgpLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZM
ZW5ndGhGYWlsdXJlLmFwcGVuZChicmFuY2gzMihBYm92ZSwgaW5kZXgsIGxlbmd0aCkpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBh
dHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1
c2UgaWYgd2UgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5t
X2JvZHktPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
T2ZMZW5ndGhGYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZWdUMCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVnVDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQob3V0T2ZM
ZW5ndGhGYWlsdXJlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRo
aXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBu
b3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2gu
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4
ZWRTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplKSB7CkBAIC0zODE4LDcgKzM4NTksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgLy8gaXQgZmFpbHMgd2hlbiB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRj
aCB3aXRoIHRoZSBjdXJyZW50IG9mZnNldC4KICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5p
Y29kZSBmbGFnLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI4NjExCi0gICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBk
aXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9w
YXR0ZXJuLnVuaWNvZGUoKSkgeworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNp
emUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkgewogICAg
ICAgICAgICAgYXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVu
c2lnbmVkPihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86Om1heExl
bmd0aCkpOwogICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNqdW5jdGlv
biwgY3VycmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKICAgICAgICAgICAg
ICAgICBtX29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CkBAIC0zODY3LDEzICsz
OTA4LDEwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8s
IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBv
c3NpYmxlIGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBs
eSBoZXVyaXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQogICAg
ICAgICAvLyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlk
ZS4KIAotICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ug
b25seSBzdXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQm95ZXJNb29yZSBzZWFyY2gu
CiAgICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CiAKICAgICAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgbmVzdGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAvKD86YWJjfGRlZnxn
KD86aGl8amspKS8pLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4NjE0Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFz
cyAoZS5nLiAvW1xkXXRlc3QvKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyODYxMwogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tZml4
ZWQtc2l6ZWQgbG9va2FoZWFkIChlLmcuIC8uKmFiYy8gYW5kIGV4dHJhY3QgImFiYyIgc2VxdWVu
Y2UpLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4NjEyCiAgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVy
bmF0aXZlczsKQEAgLTM4ODYsMjAgKzM5MjQsNDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
ICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVy
bjoKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0
YXJFbmNsb3N1cmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6Q2hhcmFjdGVyQ2xhc3M6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRp
dHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhD
b3VudCAhPSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgY2hhcmFjdGVyQ2xhc3Mg
PSAqdGVybS5jaGFyYWN0ZXJDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW52
ZXJ0KCkgfHwgY2hhcmFjdGVyQ2xhc3MubV9hbnlDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzLm1fdGFi
bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFjaGFyYWN0ZXJDbGFzcy5tX3Jhbmdlc1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fcmFu
Z2VzVW5pY29kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9t
YXRjaGVzVW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8u
YWRkQ2hhcmFjdGVycyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlc1VuaWNvZGUpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFy
YWN0ZXJDbGFzcy5tX3Jhbmdlcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVy
Q2xhc3MubV9tYXRjaGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5m
by5hZGRDaGFyYWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBl
OjpQYXR0ZXJuQ2hhcmFjdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4
Q291bnQgIT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5p
bnB1dFBvc2l0aW9uICE9IGluZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChVMTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1
cnJvZ2F0ZVBhaXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBj
YXNlLWluc2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBk
aWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJl
c2VudGF0aW9ucyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCiAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FT
Q0lJQWxwaGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRl
cm0ucGF0dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CkBAIC0zOTA5LDEzICszOTcz
LDE1IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHBy
aXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0
ZXIpOwogICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVElu
dGVybmFsOjp2ZXJib3NlLCAiU2hvcnRlbmluZyB0byAiLCBjdXJzb3IpOworICAgICAgICAgICAg
ICAgIGJtSW5mby5zaG9ydGVuTGVuZ3RoKGN1cnNvcik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVElu
dGVybmFsOjp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiBibUluZm8ubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgY29u
c3QgdWludDhfdCogZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3IodW5zaWduZWQgaW5kZXgsIGNvbnN0
IEJveWVyTW9vcmVCaXRtYXA6Ok1hcCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJ
VC5oCmluZGV4IGZmYzllMzJjZDAzNzc3NTE4Y2VlYTA2MjA2YjFkZmQ3NjIxYzkzNjcuLjFiNWI2
MDZjYWNhZWFmZDYxOGExOWE5MzM3NTcyNGYzYTIwNTUzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySklULmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJlUmVh
c29uIDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShCb3llck1vb3JlQml0bWFwKTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRChCb3llck1vb3JlQml0bWFwKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIG1hcFNpemUgPSAxMjg7CkBAIC03NSw2ICs3Niw4IEBAIGNsYXNzIEJveWVyTW9v
cmVCaXRtYXAgewogCiAgICAgdm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgeworICAg
ICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOwogICAgICAgICBpZiAocG9zaXRpb24g
IT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCiAgICAgICAgICAgICBtX2lzTWFz
a0VmZmVjdGl2ZSA9IHRydWU7CkBAIC04NCw2ICs4Nyw0MyBAQCBjbGFzcyBCb3llck1vb3JlQml0
bWFwIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBW
ZWN0b3I8VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBpZiAoaXNBbGxTZXQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID49
IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGZvciAoVUNoYXIgY2hhcmFjdGVyIDogY2hhcmFjdGVycykKKyAg
ICAgICAgICAgIGFkZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkUmFuZ2VzKGNv
bnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlcykKKyAgICB7CisgICAgICAgIGlmIChy
YW5nZXMuc2l6ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoQ2hhcmFjdGVyUmFuZ2UgcmFu
Z2UgOiByYW5nZXMpIHsKKyAgICAgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2Uu
ZW5kIC0gcmFuZ2UuYmVnaW4gKyAxKSA+PSBtYXBTaXplKSB7CisgICAgICAgICAgICAgICAgc2V0
QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yIChVQ2hhcjMyIGNoYXJhY3RlciA9IHJhbmdlLmJlZ2luOyBjaGFyYWN0ZXIgPD0gcmFu
Z2UuZW5kOyArK2NoYXJhY3RlcikKKyAgICAgICAgICAgICAgICBhZGQoY2hhcmFjdGVyKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc2V0QWxsKCkKKyAgICB7CisgICAgICAgIG1fY291
bnQgPSBtYXBTaXplOworICAgIH0KKworICAgIGJvb2wgaXNBbGxTZXQoKSBjb25zdCB7IHJldHVy
biBtX2NvdW50ID09IG1hcFNpemU7IH0KKwogcHJpdmF0ZToKICAgICBNYXAgbV9tYXAgeyB9Owog
ICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0M2RiYjkyNDM1NmQ2Zjg1MWIxM2Y3OTQ0MjRl
Yzc4MDRjOTljMWMuLjQ2ZTlmN2Q1MDM1Mjc1ZTgzYTgwMzIxMjk2NzQxMDcxYTM3ODZjZGUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjEtMDctMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBZYXJyIEJveWVyTW9vcmUgc2VhcmNoIHNob3VsZCBzdXBwb3J0
IGNoYXJhY3Rlci1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI4NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxl
bmd0aC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChyZWdleHAuYS5i
LmMuZC5lLmYuZy5oLmkuai5rLmwubS5uLm8ucC5xLnIucy50LnUudi53LngueS56LjAuMS4yLjMu
NC41LjYuNy44LjkudC52Lm4ucik6CisKIDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3Vs
ZCBjaGVjayBpZiByZWNlaXZlciBjYW5QZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0
aC5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVy
by1sZW5ndGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMwMTZhNTI3YWQwOGQ2ODQwMDJiMmRhZWM1ZWYyNWJl
MGJmYWI3MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFy
Y2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK3ZhciByZWdleHAgPSAvYXxifGN8ZHxlfGZ8Z3xofGl8anxrfGx8bXxufG98cHxxfHJ8c3x0
fHV8dnx3fHh8eXx6fDB8MXwyfDN8NHw1fDZ8N3w4fDl8IHxcdHxcdnxcbnxccnxcJHxcXnxcJnxc
KnxcKHxcKS8KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIHNob3VsZEJl
KHJlZ2V4cC50ZXN0KGAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSVgKSwg
ZmFsc2UpOworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KGDjg4bjgrnjg4hgKSwgZmFsc2UpOwor
ICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KGB0ZXN0aW5nYCksIHRydWUpOworICAgIHNob3VsZEJl
KFJlZ0V4cC5sZWZ0Q29udGV4dCwgYGApOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENvbnRl
eHQsIGBlc3RpbmdgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434659</attachid>
            <date>2021-07-30 13:14:35 -0700</date>
            <delta_ts>2021-07-30 13:22:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210730131434.patch</filename>
            <type>text/plain</type>
            <size>20118</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmE3ZTIwYjY4NjM1OWEwODUwMjc4MGU0NmUxZTVhNjQzNTI0NWNlLi4xY2I2MGQ4NjI4NWM5YmY0
YTQ0ZTJiNTQ1MGI5NDFlYjdjNDVjNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDE3JS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTc5LjI2NjEr
LTEuNjc2MCAgICAgXiAgICA0OTQuODIwNCstMS43NDk0ICAgICAgICBeIGRlZmluaXRlbHkgMS4x
NzA3eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAxLjUlLgorCisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgc3VidGVzdCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAg
IHwgICAgIG1zICAgICAgfCAgYiAvIGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZh
bHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgICAgICB8IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTIzLjM4NzUw
MCAgIHwxMjIuOTY2NjY3ICAgfDAuOTk2NTg5ICB8IDAuMzEzNjQ3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZ1ZUpTLVRvZG9NVkMgICAg
ICAgICAgICAgICAgICAgICAgICB8MjcuMTU4MzMzICAgIHwyNy4xMDAwMDAgICAgfDAuOTk3ODUy
ICB8IDAuODc3NzE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICAgICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI3LjAz
NzUwMCAgIHwxMjcuMTYyNTAwICAgfDEuMDAwOTg0ICB8IDAuNzkyMDUyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEJhY2tib25lSlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICB8NTAuNDc5MTY3ICAgIHw1MC40MzMzMzMgICAgfDAuOTk5
MDkyICB8IDAuODY0OTQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB8IFByZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjAu
NzMzMzMzICAgIHwyMC43MDgzMzMgICAgfDAuOTk4Nzk0ICB8IDAuOTQxMzA4ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTM3LjI5NTgzMyAgIHwxMzYuNzM3NTAwICAgfDAu
OTk1OTMzICB8IDAuMjkzODg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8
NjguNjIwODMzICAgIHw2OC40NTQxNjcgICAgfDAuOTk3NTcxICB8IDAuNDIwMzkxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEluZmVybm8t
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8NjUuNjEyNTAwICAgIHw2NS40NTgzMzMgICAg
fDAuOTk3NjUwICB8IDAuNjQxMzkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8NzYuODM3NTAwICAgIHw3Ni4wMzc1MDAgICAgfDAuOTg5NTg4ICB8IDAuMTA5NzA3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3Vs
YXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDAuNjM3NTAwICAgIHw0MC41ODc1MDAg
ICAgfDAuOTk4NzcwICB8IDAuOTExMzU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICB8NTQuNjI1MDAwICAgIHw1NC44OTU4MzMgICAgfDEuMDA0OTU4ICB8IDAuNDAxNTU3ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IGpR
dWVyeS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjU2Ljk5NTgzMyAgIHwyNTMuNTQ1
ODMzICAgfDAuOTg2NTc2ICB8IDAuMDAwMDAwIChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzQxLjU1NDE2NyAgIHwzNDIuNTc1MDAwICAgfDEuMDAyOTg5ICB8IDAuMjEzOTYz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
IFJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8ODguNDU0MTY3ICAgIHw4OC4z
MDgzMzMgICAgfDAuOTk4MzUxICB8IDAuNTM2MjcwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAg
ICAgICAgICAgICB8MTUwLjIxMjUwMCAgIHwxNTAuNjA4MzMzICAgfDEuMDAyNjM1ICB8IDAuMjg5
NDU3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8IFZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjUuNDcwODMzICAgIHw2
NS4yNzUwMDAgICAgfDAuOTk3MDA5ICB8IDAuMjAzNjc2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
ICAgICBhIG1lYW4gPSAyNDYuOTU2OTkKKyAgICAgICAgICAgIGIgbWVhbiA9IDI0Ny40ODU5NAor
ICAgICAgICAgICAgcFZhbHVlID0gMC4yMDgzMjIxNDM0CisgICAgICAgICAgICAoQmlnZ2VyIG1l
YW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAgICAgMS4wMDIgdGltZXMgYmV0dGVyCisgICAgICAg
ICAgICBSZXN1bHRzIEFSRSBOT1Qgc2lnbmlmaWNhbnQKKworICAgICAgICAqIHlhcnIvWWFyckpJ
VC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzaG9ydGVuTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OnNldEFsbCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZFJhbmdlcyk6CisgICAgICAgICogeWFyci9ZYXJy
SklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZENoYXJhY3RlcnMpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRSYW5nZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpzZXRBbGwpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlQml0bWFwOjppc0FsbFNldCBjb25zdCk6CisKIDIwMjEtMDctMjkgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZGVmaW5lUHJvcGVydHlPblJl
Y2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBjYW5QZXJmb3JtRmFzdFB1dElubGluZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBiMWI2ZDU2N2JhZDk4MmI3
Njg1ZTNiMWZmNzhiZDI1ODZkMWUwNGE2Li40ODEzMWRjZDhmMmQ2YTMxNDZiMGE2MjRiNzc0MTBi
MzVhZjExZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNjMs
MTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMuc2l6ZSgpOyB9CisgICAgdm9p
ZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChs
ZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBtX2NoYXJhY3RlcnMuc2hyaW5rKGxl
bmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFVDaGFyMzIgY2hh
cmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGQoY2hhcmFjdGVy
KTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAg
ICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7CisgICAgfQorCisgICAgdm9pZCBhZGRD
aGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8VUNoYXIzMj4mIGNoYXJhY3Rl
cnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZENoYXJhY3RlcnMoY2hh
cmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5nZXModW5zaWduZWQgaW5kZXgsIGNv
bnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQorICAgIHsKKyAgICAgICAgbV9jaGFy
YWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAgIH0KKwogICAgIHVuc2lnbmVkIGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIHZvaWQgc2V0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01hc2tFZmZlY3RpdmVdID0gb3Au
bV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUgY2hhcmFjdGVycyBhcmUgPD0g
MiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2ZWN0b3IuCisgICAgICAgICAg
ICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRPZkxlbmd0aEZhaWx1cmU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQk0gQml0bWFwIGlzICIsIG1hcCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtlIC9bXS8gaGF2ZSB6ZXJv
IGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJhcmUsIHdlIGRvIG5vdCBkbyBub3RoaW5nIGZvciBu
b3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcENvdW50KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENv
dW50IDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CkBAIC0y
MzkzLDcgKzI0MTksNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29r
YWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwg
aGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwi
KSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdU
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKQEAg
LTI0MDEsOSArMjQyNiwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0z
MihjaGFyYWN0ZXIxKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBDb3Vu
dCA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChi
cmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIyKSkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxl
SW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGQzMihJbW0zMihlbmRJbmRleCAtIGJlZ2luSW5kZXgpLCBpbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmFwcGVuZChicmFuY2gzMihB
Ym92ZSwgaW5kZXgsIGxlbmd0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAo
KS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcG9pbnRlciA9IGdldEJveWVy
TW9vcmVCeXRlVmVjdG9yKG9wLm1fYm1JbmZvLT5pbmRleCgpLCBtYXApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxh
dGlvbigpLCAiRm91bmQgYml0bWFwIGxvb2thaGVhZCBjb3VudDooIiwgbWFwQ291bnQsICIpLHJh
bmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIikiKTsKQEAgLTI0MTIsMTIgKzI0
MzgsMjcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBsb29wSGVhZCA9IGxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENo
YXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQm95ZXJNb29yZUJpdG1hcDo6
bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBtYXRjaGVkID0gYnJhbmNoVGVzdDMyKE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAs
IFRpbWVzT25lKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBl
bmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVy
bywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhZGQzMihJbW0zMihlbmRJbmRleCAtIGJlZ2luSW5kZXgpLCBpbmRleCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmFwcGVuZChi
cmFuY2gzMihBYm92ZSwgaW5kZXgsIGxlbmd0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4
ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXpl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmxpbmso
dGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21p
bmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgs
IHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0
ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0
KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChq
dW1wKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQob3V0T2ZMZW5ndGhGYWlsdXJlKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUg
dGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CkBAIC0z
ODE4LDcgKzM4NTksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8gaXQgZmFpbHMgd2hl
biB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRjaCB3aXRoIHRoZSBjdXJyZW50IG9m
ZnNldC4KICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5pY29kZSBmbGFnLgogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjExCi0gICAgICAg
IGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlvbi0+bV9oYXNGaXhl
ZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkgewor
ICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgIW1fcGF0dGVybi5zdGlj
a3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkgewogICAgICAgICAgICAgYXV0byBibUluZm8g
PSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVkPihkaXNqdW5jdGlvbi0+
bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86Om1heExlbmd0aCkpOwogICAgICAgICAgICAg
aWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNqdW5jdGlvbiwgY3VycmVudEFsdGVybmF0aXZl
SW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBtX29wcy5sYXN0KCkubV9i
bUluZm8gPSBibUluZm8ucHRyKCk7CkBAIC0zODY3LDEzICszOTA4LDEwIEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNoYXJhY3RlcnMgZm9y
IGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0aWNzIHRvIGV4dHJh
Y3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQogICAgICAgICAvLyB0aGF0IGFuZCBjb25z
dHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KIAotICAgICAgICBBU1NFUlQo
ZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBzdXBwb3J0IGZpeGVkLXNp
emVkIGxvb2thaGVhZCBmb3IgQm95ZXJNb29yZSBzZWFyY2guCiAgICAgICAgIEFTU0VSVChkaXNq
dW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CiAKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbmVz
dGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAvKD86YWJjfGRlZnxnKD86aGl8amspKS8pLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjE0Ci0gICAg
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5nLiAvW1xkXXRlc3QvKS4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODYx
MwogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tZml4ZWQtc2l6ZWQgbG9va2FoZWFkIChl
LmcuIC8uKmFiYy8gYW5kIGV4dHJhY3QgImFiYyIgc2VxdWVuY2UpLgogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEyCiAgICAgICAgIGF1dG8m
IGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsKQEAgLTM4ODYsMjAg
KzM5MjQsNDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJu
VGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRl
cm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0
dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKICAgICAgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1cmU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6IHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlucHV0
UG9zaXRpb24gIT0gaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byYgY2hhcmFjdGVyQ2xhc3MgPSAqdGVybS5jaGFyYWN0ZXJDbGFz
czsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW52ZXJ0KCkgfHwgY2hhcmFjdGVyQ2xh
c3MubV9hbnlDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXRB
bGwoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzLm1fdGFibGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFzcy5tX3Jh
bmdlc1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFk
ZFJhbmdlcyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5pY29kZSk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5pY29kZS5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRkQ2hhcmFjdGVycyhjdXJzb3Is
IGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlc1VuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX3Jhbmdlcyk7
CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRDaGFyYWN0ZXJzKGN1cnNv
ciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzKTsKKyAgICAgICAgICAgICAgICAgICAgKytjdXJz
b3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJuQ2hhcmFjdGVyOiB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVy
VHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQgIT0gMSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmIChVMTZfTEVOR1RIKHRlcm0u
cGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBjYXNlLWluc2VzaXRpdmUgY29tcGFy
ZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJlbnQKICAgICAgICAgICAg
ICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0aW9ucyBhcmUgYWxyZWFk
eSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEodGVybS5wYXR0ZXJu
Q2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVybkNoYXJhY3Rlciwg
bV9jYW5vbmljYWxNb2RlKSk7CkBAIC0zOTA5LDEzICszOTczLDE1IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpOwogICAgICAgICAgICAgICAg
ICAgICArK2N1cnNvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiU2hv
cnRlbmluZyB0byAiLCBjdXJzb3IpOworICAgICAgICAgICAgICAgIGJtSW5mby5zaG9ydGVuTGVu
Z3RoKGN1cnNvcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQ2hh
cmFjdGVycyBjb2xsZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBibUluZm8ubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgY29uc3QgdWludDhfdCogZ2V0Qm95ZXJN
b29yZUJ5dGVWZWN0b3IodW5zaWduZWQgaW5kZXgsIGNvbnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1h
cCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4IGZmYzllMzJjZDAz
Nzc3NTE4Y2VlYTA2MjA2YjFkZmQ3NjIxYzkzNjcuLjFiNWI2MDZjYWNhZWFmZDYxOGExOWE5MzM3
NTcyNGYzYTIwNTUzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTYx
LDYgKzYxLDcgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJlUmVhc29uIDogdWludDhfdCB7CiB9Owog
CiBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCb3ll
ck1vb3JlQml0bWFwKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlQml0
bWFwKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG1hcFNpemUgPSAx
Mjg7CkBAIC03NSw2ICs3Niw4IEBAIGNsYXNzIEJveWVyTW9vcmVCaXRtYXAgewogCiAgICAgdm9p
ZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgeworICAgICAgICBpZiAoaXNBbGxTZXQoKSkK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBjaGFyYWN0
ZXIgJiBtYXBNYXNrOwogICAgICAgICBpZiAocG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNoYXJhY3RlcikpCiAgICAgICAgICAgICBtX2lzTWFza0VmZmVjdGl2ZSA9IHRydWU7CkBA
IC04NCw2ICs4Nyw0MyBAQCBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBWZWN0b3I8VUNoYXIzMj4mIGNoYXJh
Y3RlcnMpCisgICAgeworICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAg
ICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZv
ciAoVUNoYXIgY2hhcmFjdGVyIDogY2hhcmFjdGVycykKKyAgICAgICAgICAgIGFkZChjaGFyYWN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkUmFuZ2VzKGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJS
YW5nZT4mIHJhbmdlcykKKyAgICB7CisgICAgICAgIGlmIChyYW5nZXMuc2l6ZSgpID49IG1hcFNp
emUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGZvciAoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UgOiByYW5nZXMpIHsKKyAgICAg
ICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UuZW5kIC0gcmFuZ2UuYmVnaW4gKyAx
KSA+PSBtYXBTaXplKSB7CisgICAgICAgICAgICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChVQ2hhcjMyIGNoYXJh
Y3RlciA9IHJhbmdlLmJlZ2luOyBjaGFyYWN0ZXIgPD0gcmFuZ2UuZW5kOyArK2NoYXJhY3RlcikK
KyAgICAgICAgICAgICAgICBhZGQoY2hhcmFjdGVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgc2V0QWxsKCkKKyAgICB7CisgICAgICAgIG1fY291bnQgPSBtYXBTaXplOworICAgIH0K
KworICAgIGJvb2wgaXNBbGxTZXQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ID09IG1hcFNpemU7
IH0KKwogcHJpdmF0ZToKICAgICBNYXAgbV9tYXAgeyB9OwogICAgIHVuc2lnbmVkIG1fY291bnQg
eyAwIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY0M2RiYjkyNDM1NmQ2Zjg1MWIxM2Y3OTQ0MjRlYzc4MDRjOTljMWMuLjQ2ZTlmN2Q1
MDM1Mjc1ZTgzYTgwMzIxMjk2NzQxMDcxYTM3ODZjZGUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDct
MzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZ
YXJyIEJveWVyTW9vcmUgc2VhcmNoIHNob3VsZCBzdXBwb3J0IGNoYXJhY3Rlci1jbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVn
ZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChyZWdleHAuYS5iLmMuZC5lLmYuZy5oLmkuai5rLmwu
bS5uLm8ucC5xLnIucy50LnUudi53LngueS56LjAuMS4yLjMuNC41LjYuNy44LjkudC52Lm4ucik6
CisKIDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBj
YW5QZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhw
LWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmMwMTZhNTI3YWQwOGQ2ODQwMDJiMmRhZWM1ZWYyNWJlMGJmYWI3MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVy
by1sZW5ndGguanMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciByZWdleHAgPSAvYXxi
fGN8ZHxlfGZ8Z3xofGl8anxrfGx8bXxufG98cHxxfHJ8c3x0fHV8dnx3fHh8eXx6fDB8MXwyfDN8
NHw1fDZ8N3w4fDl8IHxcdHxcdnxcbnxccnxcJHxcXnxcJnxcKnxcKHxcKS8KKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIHNob3VsZEJlKHJlZ2V4cC50ZXN0KGAlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSVgKSwgZmFsc2UpOworICAgIHNob3VsZEJl
KHJlZ2V4cC50ZXN0KGDjg4bjgrnjg4hgKSwgZmFsc2UpOworICAgIHNob3VsZEJlKHJlZ2V4cC50
ZXN0KGB0ZXN0aW5nYCksIHRydWUpOworICAgIHNob3VsZEJlKFJlZ0V4cC5sZWZ0Q29udGV4dCwg
YGApOworICAgIHNob3VsZEJlKFJlZ0V4cC5yaWdodENvbnRleHQsIGBlc3RpbmdgKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434661</attachid>
            <date>2021-07-30 13:22:01 -0700</date>
            <delta_ts>2021-07-30 18:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210730132201.patch</filename>
            <type>text/plain</type>
            <size>20345</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZmE3ZTIwYjY4NjM1OWEwODUwMjc4MGU0NmUxZTVhNjQzNTI0NWNlLi4xY2I2MGQ4NjI4NWM5YmY0
YTQ0ZTJiNTQ1MGI5NDFlYjdjNDVjNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDE3JS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTc5LjI2NjEr
LTEuNjc2MCAgICAgXiAgICA0OTQuODIwNCstMS43NDk0ICAgICAgICBeIGRlZmluaXRlbHkgMS4x
NzA3eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAxLjUlLgorCisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgc3VidGVzdCAgICAgICAgICAgICAgICB8ICAgICBtcyAgICAg
IHwgICAgIG1zICAgICAgfCAgYiAvIGEgICB8IHBWYWx1ZSAoc2lnbmlmaWNhbmNlIHVzaW5nIEZh
bHNlIERpc2NvdmVyeSBSYXRlKSB8CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg
ICAgICAgICB8IEVsbS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgICB8MTIzLjM4NzUw
MCAgIHwxMjIuOTY2NjY3ICAgfDAuOTk2NTg5ICB8IDAuMzEzNjQ3ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFZ1ZUpTLVRvZG9NVkMgICAg
ICAgICAgICAgICAgICAgICAgICB8MjcuMTU4MzMzICAgIHwyNy4xMDAwMDAgICAgfDAuOTk3ODUy
ICB8IDAuODc3NzE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cisg
ICAgICAgICAgICB8IEVtYmVySlMtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8MTI3LjAz
NzUwMCAgIHwxMjcuMTYyNTAwICAgfDEuMDAwOTg0ICB8IDAuNzkyMDUyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEJhY2tib25lSlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICB8NTAuNDc5MTY3ICAgIHw1MC40MzMzMzMgICAgfDAuOTk5
MDkyICB8IDAuODY0OTQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgICAgICAgICB8IFByZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjAu
NzMzMzMzICAgIHwyMC43MDgzMzMgICAgfDAuOTk4Nzk0ICB8IDAuOTQxMzA4ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3VsYXJKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgICB8MTM3LjI5NTgzMyAgIHwxMzYuNzM3NTAwICAgfDAu
OTk1OTMzICB8IDAuMjkzODg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICB8IFZhbmlsbGEtRVMyMDE1LVRvZG9NVkMgICAgICAgICAgICAgICB8
NjguNjIwODMzICAgIHw2OC40NTQxNjcgICAgfDAuOTk3NTcxICB8IDAuNDIwMzkxICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEluZmVybm8t
VG9kb01WQyAgICAgICAgICAgICAgICAgICAgICB8NjUuNjEyNTAwICAgIHw2NS40NTgzMzMgICAg
fDAuOTk3NjUwICB8IDAuNjQxMzkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICB8IEZsaWdodC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAg
ICB8NzYuODM3NTAwICAgIHw3Ni4wMzc1MDAgICAgfDAuOTg5NTg4ICB8IDAuMTA5NzA3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IEFuZ3Vs
YXIyLVR5cGVTY3JpcHQtVG9kb01WQyAgICAgICAgICB8NDAuNjM3NTAwICAgIHw0MC41ODc1MDAg
ICAgfDAuOTk4NzcwICB8IDAuOTExMzU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICB8IFZhbmlsbGFKUy1Ub2RvTVZDICAgICAgICAgICAgICAg
ICAgICB8NTQuNjI1MDAwICAgIHw1NC44OTU4MzMgICAgfDEuMDA0OTU4ICB8IDAuNDAxNTU3ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IGpR
dWVyeS1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICB8MjU2Ljk5NTgzMyAgIHwyNTMuNTQ1
ODMzICAgfDAuOTg2NTc2ICB8IDAuMDAwMDAwIChzaWduaWZpY2FudCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICB8IEVtYmVySlMtRGVidWctVG9kb01WQyAgICAgICAg
ICAgICAgICB8MzQxLjU1NDE2NyAgIHwzNDIuNTc1MDAwICAgfDEuMDAyOTg5ICB8IDAuMjEzOTYz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8
IFJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICB8ODguNDU0MTY3ICAgIHw4OC4z
MDgzMzMgICAgfDAuOTk4MzUxICB8IDAuNTM2MjcwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8IFJlYWN0LVJlZHV4LVRvZG9NVkMgICAgICAg
ICAgICAgICAgICB8MTUwLjIxMjUwMCAgIHwxNTAuNjA4MzMzICAgfDEuMDAyNjM1ICB8IDAuMjg5
NDU3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICB8IFZhbmlsbGEtRVMyMDE1LUJhYmVsLVdlYnBhY2stVG9kb01WQyB8NjUuNDcwODMzICAgIHw2
NS4yNzUwMDAgICAgfDAuOTk3MDA5ICB8IDAuMjAzNjc2ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg
ICAgICBhIG1lYW4gPSAyNDYuOTU2OTkKKyAgICAgICAgICAgIGIgbWVhbiA9IDI0Ny40ODU5NAor
ICAgICAgICAgICAgcFZhbHVlID0gMC4yMDgzMjIxNDM0CisgICAgICAgICAgICAoQmlnZ2VyIG1l
YW5zIGFyZSBiZXR0ZXIuKQorICAgICAgICAgICAgMS4wMDIgdGltZXMgYmV0dGVyCisgICAgICAg
ICAgICBSZXN1bHRzIEFSRSBOT1Qgc2lnbmlmaWNhbnQKKworICAgICAgICAqIHlhcnIvWWFyckpJ
VC5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzaG9ydGVuTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OnNldEFsbCk6CisgICAgICAg
IChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZFJhbmdlcyk6CisgICAgICAgICogeWFyci9ZYXJy
SklULmg6CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZCk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZENoYXJhY3RlcnMpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRSYW5nZXMpOgorICAgICAgICAoSlND
OjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjpzZXRBbGwpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlQml0bWFwOjppc0FsbFNldCBjb25zdCk6CisKIDIwMjEtMDctMjkgIFRhZGV1IFph
Z2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZGVmaW5lUHJvcGVydHlPblJl
Y2VpdmVyIHNob3VsZCBjaGVjayBpZiByZWNlaXZlciBjYW5QZXJmb3JtRmFzdFB1dElubGluZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCBiMWI2ZDU2N2JhZDk4MmI3
Njg1ZTNiMWZmNzhiZDI1ODZkMWUwNGE2Li5kNDhiYTQ1NzcyMTAxMmU3NWVmNDUwMzMxMTNmYzJh
NGE4MGMwYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcApAQCAtNjMs
MTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMuc2l6ZSgpOyB9CisgICAgdm9p
ZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChs
ZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBtX2NoYXJhY3RlcnMuc2hyaW5rKGxl
bmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFVDaGFyMzIgY2hh
cmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGQoY2hhcmFjdGVy
KTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAg
ICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7CisgICAgfQorCisgICAgdm9pZCBhZGRD
aGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8VUNoYXIzMj4mIGNoYXJhY3Rl
cnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZENoYXJhY3RlcnMoY2hh
cmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5nZXModW5zaWduZWQgaW5kZXgsIGNv
bnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQorICAgIHsKKyAgICAgICAgbV9jaGFy
YWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAgIH0KKwogICAgIHVuc2lnbmVkIGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIHZvaWQgc2V0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewog
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01hc2tFZmZlY3RpdmVdID0gb3Au
bV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUgY2hhcmFjdGVycyBhcmUgPD0g
MiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2ZWN0b3IuCisgICAgICAgICAg
ICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRPZkxlbmd0aEZhaWx1cmU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQk0gQml0bWFwIGlzICIsIG1hcCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtlIC9bXS8gaGF2ZSB6ZXJv
IGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJhcmUsIHdlIGRvIG5vdCBkbyBub3RoaW5nIGZvciBu
b3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcENvdW50KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENv
dW50IDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CkBAIC0y
MzkzLDcgKzI0MTksNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJK
SVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29r
YWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwg
aGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwi
KSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIpIik7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdU
MCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKQEAg
LTI0MDEsOSArMjQyNiw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFy
ckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50
ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJy
YW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjIpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJ
bnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5k
ZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxp
bmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hl
ZC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwb2ludGVyID0gZ2V0Qm95ZXJNb29y
ZUJ5dGVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIG1hcCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9u
KCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6
WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOwpAQCAtMjQxMiwxMyArMjQzNiwy
OSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxv
b3BIZWFkID0gbGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFj
dGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgcmVnVDApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihCb3llck1vb3JlQml0bWFwOjptYXBN
YXNrKSwgcmVnVDAsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1h
dGNoZWQgPSBicmFuY2hUZXN0MzIoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGlt
ZXNPbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChq
dW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCBC
YXNlSW5kZXgocmVnVDEsIHJlZ1QwLCBUaW1lc09uZSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQo
ZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVt
cCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhl
biBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYWRqdXN0aW5nIG1hdGNoLXN0YXJ0IHdo
ZW4gd2UgZmFpbGVkIHRvIGZpbmQgdGhlIHN0YXJ0IHdpdGggQm95ZXJNb29yZSBzZWFyY2guCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRT
aXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmxp
bmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5t
X21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5k
ZXgsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIo
YWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0
YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVu
ZChqdW1wKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQob3V0T2ZMZW5ndGhGYWlsdXJlKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3Rv
cmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2guCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGFkanVzdGluZyBtYXRjaC1zdGFydCB3aGVuIHdl
IHN0YXJ0IHBhdHRlcm4gbWF0Y2hpbmcgd2l0aCB0aGUgdXBkYXRlZCBpbmRleAorICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gYnkgQm95ZXJNb29yZSBzZWFyY2guCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKQEAgLTM4
MTgsNyArMzg1OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJ
VEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBpdCBmYWlscyB3aGVu
IHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRvIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgb2Zm
c2V0LgogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCB1bmljb2RlIGZsYWcuCiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MTEKLSAgICAgICAg
aWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVk
U2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYmICFtX3BhdHRlcm4udW5pY29kZSgpKSB7Cisg
ICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNr
eSgpICYmICFtX3BhdHRlcm4udW5pY29kZSgpKSB7CiAgICAgICAgICAgICBhdXRvIGJtSW5mbyA9
IEJveWVyTW9vcmVJbmZvOjpjcmVhdGUoc3RkOjptaW48dW5zaWduZWQ+KGRpc2p1bmN0aW9uLT5t
X21pbmltdW1TaXplLCBCb3llck1vb3JlSW5mbzo6bWF4TGVuZ3RoKSk7CiAgICAgICAgICAgICBp
ZiAoY29sbGVjdEJveWVyTW9vcmVJbmZvKGRpc2p1bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJ
bmRleCwgYm1JbmZvLmdldCgpKSkgewogICAgICAgICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2Jt
SW5mbyA9IGJtSW5mby5wdHIoKTsKQEAgLTM4NjcsMTMgKzM5MDcsMTAgQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxlY3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3Ig
ZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4sIGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFj
dCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9tCiAgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0
cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcgc3RyaWRlLgogCi0gICAgICAgIEFTU0VSVChk
aXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAvLyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6
ZWQgbG9va2FoZWFkIGZvciBCb3llck1vb3JlIHNlYXJjaC4KICAgICAgICAgQVNTRVJUKGRpc2p1
bmN0aW9uLT5tX21pbmltdW1TaXplKTsKIAogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0
ZWQgZGlzanVuY3Rpb25zIChlLmcuIC8oPzphYmN8ZGVmfGcoPzpoaXxqaykpLykuCiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MTQKLSAgICAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgY2hhcmFjdGVyLWNsYXNzIChlLmcuIC9bXGRddGVzdC8pLgot
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEz
CiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUu
Zy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJjIiBzZXF1ZW5jZSkuCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MTIKICAgICAgICAgYXV0byYg
YWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVzOwpAQCAtMzg4NiwyMCAr
MzkyMyw0NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5U
ZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVy
bTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToKLSAgICAgICAgICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRl
cm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVy
blRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0
ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJwYXR0ZXJuOgogICAgICAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhldGljYWxBc3NlcnRpb246CiAgICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6RG90U3RhckVuY2xvc3VyZToKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczogewor
ICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5
cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0eU1heENvdW50ICE9IDEpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQ
b3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBhdXRvJiBjaGFyYWN0ZXJDbGFzcyA9ICp0ZXJtLmNoYXJhY3RlckNsYXNz
OworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnZlcnQoKSB8fCBjaGFyYWN0ZXJDbGFz
cy5tX2FueUNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldEFs
bChjdXJzb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBpZiAoY2hhcmFjdGVyQ2xhc3MubV90YWJsZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3IpOworICAgICAgICAgICAgICAgICAgICAgICAg
KytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFu
Z2VzVW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRk
UmFuZ2VzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXNVbmljb2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXNVbmljb2RlLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRDaGFyYWN0ZXJzKGN1cnNvciwg
Y2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5pY29kZSk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFkZENoYXJhY3RlcnMoY3Vyc29y
LCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXMpOworICAgICAgICAgICAgICAgICAgICArK2N1cnNv
cjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJU
eXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAxKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5w
YXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVjb2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJl
cywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGRpZmZlcmVudAogICAgICAgICAgICAg
ICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2UgcmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5
IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFzcy4KICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5D
aGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlxdWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBt
X2Nhbm9uaWNhbE1vZGUpKTsKQEAgLTM5MDksMTMgKzM5NzIsMTUgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYm1J
bmZvLnNldChjdXJzb3IsIHRlcm0ucGF0dGVybkNoYXJhY3Rlcik7CiAgICAgICAgICAgICAgICAg
ICAgICsrY3Vyc29yOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJvc2UsICJTaG9y
dGVuaW5nIHRvICIsIGN1cnNvcik7CisgICAgICAgICAgICAgICAgYm1JbmZvLnNob3J0ZW5MZW5n
dGgoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJvc2UsICJDaGFy
YWN0ZXJzIGNvbGxlY3RlZCIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IGJtSW5mby5sZW5ndGgoKTsKICAgICB9CiAKICAgICBjb25zdCB1aW50OF90KiBnZXRCb3llck1v
b3JlQnl0ZVZlY3Rvcih1bnNpZ25lZCBpbmRleCwgY29uc3QgQm95ZXJNb29yZUJpdG1hcDo6TWFw
JiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggZmZjOWUzMmNkMDM3
Nzc1MThjZWVhMDYyMDZiMWRmZDc2MjFjOTM2Ny4uMWI1YjYwNmNhY2FlYWZkNjE4YTE5YTkzMzc1
NzI0ZjNhMjA1NTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNjEs
NiArNjEsNyBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1cmVSZWFzb24gOiB1aW50OF90IHsKIH07CiAK
IGNsYXNzIEJveWVyTW9vcmVCaXRtYXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVy
TW9vcmVCaXRtYXApOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRt
YXApOwogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEy
ODsKQEAgLTc1LDYgKzc2LDggQEAgY2xhc3MgQm95ZXJNb29yZUJpdG1hcCB7CiAKICAgICB2b2lk
IGFkZChVQ2hhcjMyIGNoYXJhY3RlcikKICAgICB7CisgICAgICAgIGlmIChpc0FsbFNldCgpKQor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbiA9IGNoYXJhY3Rl
ciAmIG1hcE1hc2s7CiAgICAgICAgIGlmIChwb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY2hhcmFjdGVyKSkKICAgICAgICAgICAgIG1faXNNYXNrRWZmZWN0aXZlID0gdHJ1ZTsKQEAg
LTg0LDYgKzg3LDQzIEBAIGNsYXNzIEJveWVyTW9vcmVCaXRtYXAgewogICAgICAgICB9CiAgICAg
fQogCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0IFZlY3RvcjxVQ2hhcjMyPiYgY2hhcmFj
dGVycykKKyAgICB7CisgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoY2hhcmFjdGVycy5zaXplKCkgPj0gbWFwU2l6ZSkgeworICAgICAgICAg
ICAgc2V0QWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChVQ2hhciBjaGFyYWN0ZXIgOiBjaGFyYWN0ZXJzKQorICAgICAgICAgICAgYWRkKGNoYXJhY3Rl
cik7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5nZXMoY29uc3QgVmVjdG9yPENoYXJhY3RlclJh
bmdlPiYgcmFuZ2VzKQorICAgIHsKKyAgICAgICAgaWYgKHJhbmdlcy5zaXplKCkgPj0gbWFwU2l6
ZSkgeworICAgICAgICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChDaGFyYWN0ZXJSYW5nZSByYW5nZSA6IHJhbmdlcykgeworICAgICAg
ICAgICAgaWYgKGlzQWxsU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS5lbmQgLSByYW5nZS5iZWdpbiArIDEp
ID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKFVDaGFyMzIgY2hhcmFj
dGVyID0gcmFuZ2UuYmVnaW47IGNoYXJhY3RlciA8PSByYW5nZS5lbmQ7ICsrY2hhcmFjdGVyKQor
ICAgICAgICAgICAgICAgIGFkZChjaGFyYWN0ZXIpOworICAgICAgICB9CisgICAgfQorCisgICAg
dm9pZCBzZXRBbGwoKQorICAgIHsKKyAgICAgICAgbV9jb3VudCA9IG1hcFNpemU7CisgICAgfQor
CisgICAgYm9vbCBpc0FsbFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bnQgPT0gbWFwU2l6ZTsg
fQorCiBwcml2YXRlOgogICAgIE1hcCBtX21hcCB7IH07CiAgICAgdW5zaWduZWQgbV9jb3VudCB7
IDAgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNjQzZGJiOTI0MzU2ZDZmODUxYjEzZjc5NDQyNGVjNzgwNGM5OWMxYy4uNDZlOWY3ZDUw
MzUyNzVlODNhODAzMjEyOTY3NDEwNzFhMzc4NmNkZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNy0z
MCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFlh
cnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQgY2hhcmFjdGVyLWNsYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg2MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9yZWdl
eHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHJlZ2V4cC5hLmIuYy5kLmUuZi5nLmguaS5qLmsubC5t
Lm4uby5wLnEuci5zLnQudS52LncueC55LnouMC4xLjIuMy40LjUuNi43LjguOS50LnYubi5yKToK
KwogMjAyMS0wNy0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBkZWZpbmVQcm9wZXJ0eU9uUmVjZWl2ZXIgc2hvdWxkIGNoZWNrIGlmIHJlY2VpdmVyIGNh
blBlcmZvcm1GYXN0UHV0SW5saW5lCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAt
Ym0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYzAxNmE1MjdhZDA4ZDY4NDAwMmIyZGFlYzVlZjI1YmUwYmZhYjcyCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJv
LWxlbmd0aC5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC9hfGJ8
Y3xkfGV8ZnxnfGh8aXxqfGt8bHxtfG58b3xwfHF8cnxzfHR8dXx2fHd8eHx5fHp8MHwxfDJ8M3w0
fDV8Nnw3fDh8OXwgfFx0fFx2fFxufFxyfFwkfFxefFwmfFwqfFwofFwpLworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoYCUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJWApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUo
cmVnZXhwLnRlc3QoYOODhuOCueODiGApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVnZXhwLnRl
c3QoYHRlc3RpbmdgKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCBg
YCk7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgYGVzdGluZ2ApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434681</attachid>
            <date>2021-07-30 18:26:20 -0700</date>
            <delta_ts>2021-07-30 19:40:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210730182619.patch</filename>
            <type>text/plain</type>
            <size>20305</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTI3ZjkzZjYzYWQyZjk4NTY1OWI3ZTQ4NjNiYmZlNDE5ZTYwNGRiLi44YzA0MTdhNjk4OGE0MDk5
ZGM5ZjhiOTBkZmMwMzE4N2M4ZjFmMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDIwJS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTQ1LjM1NjEr
LTAuNjk2OCAgICAgXiAgICA0NTEuNjExNystMC40NjEzICAgICAgICBeIGRlZmluaXRlbHkgMS4y
MDc2eCBmYXN0ZXIKKworCisgICAgICAgIFRoaXMgaW1wcm92ZXMgU3BlZWRvbWV0ZXIyL2pRdWVy
eS1Ub2RvTVZDIGJ5IDEuNSUuCisKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICBzdWJ0ZXN0ICAgICAgICAgICAgICAgIHwgICAgIG1zICAg
ICAgfCAgICAgbXMgICAgICB8ICBiIC8gYSAgIHwgcFZhbHVlIChzaWduaWZpY2FuY2UgdXNpbmcg
RmFsc2UgRGlzY292ZXJ5IFJhdGUpIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg
ICAgICAgICAgIHwgRWxtLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMjMuMzg3
NTAwICAgfDEyMi45NjY2NjcgICB8MC45OTY1ODkgIHwgMC4zMTM2NDcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVnVlSlMtVG9kb01WQyAg
ICAgICAgICAgICAgICAgICAgICAgIHwyNy4xNTgzMzMgICAgfDI3LjEwMDAwMCAgICB8MC45OTc4
NTIgIHwgMC44Nzc3MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
KyAgICAgICAgICAgIHwgRW1iZXJKUy1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHwxMjcu
MDM3NTAwICAgfDEyNy4xNjI1MDAgICB8MS4wMDA5ODQgIHwgMC43OTIwNTIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQmFja2JvbmVKUy1U
b2RvTVZDICAgICAgICAgICAgICAgICAgIHw1MC40NzkxNjcgICAgfDUwLjQzMzMzMyAgICB8MC45
OTkwOTIgIHwgMC44NjQ5NDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgIHwgUHJlYWN0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwy
MC43MzMzMzMgICAgfDIwLjcwODMzMyAgICB8MC45OTg3OTQgIHwgMC45NDEzMDggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5ndWxhckpT
LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgIHwxMzcuMjk1ODMzICAgfDEzNi43Mzc1MDAgICB8
MC45OTU5MzMgIHwgMC4yOTM4ODggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgIHwgVmFuaWxsYS1FUzIwMTUtVG9kb01WQyAgICAgICAgICAgICAg
IHw2OC42MjA4MzMgICAgfDY4LjQ1NDE2NyAgICB8MC45OTc1NzEgIHwgMC40MjAzOTEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgSW5mZXJu
by1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgIHw2NS42MTI1MDAgICAgfDY1LjQ1ODMzMyAg
ICB8MC45OTc2NTAgIHwgMC42NDEzOTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgIHwgRmxpZ2h0LVRvZG9NVkMgICAgICAgICAgICAgICAgICAg
ICAgIHw3Ni44Mzc1MDAgICAgfDc2LjAzNzUwMCAgICB8MC45ODk1ODggIHwgMC4xMDk3MDcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgQW5n
dWxhcjItVHlwZVNjcmlwdC1Ub2RvTVZDICAgICAgICAgIHw0MC42Mzc1MDAgICAgfDQwLjU4NzUw
MCAgICB8MC45OTg3NzAgIHwgMC45MTEzNTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgVmFuaWxsYUpTLVRvZG9NVkMgICAgICAgICAgICAg
ICAgICAgIHw1NC42MjUwMDAgICAgfDU0Ljg5NTgzMyAgICB8MS4wMDQ5NTggIHwgMC40MDE1NTcg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwg
alF1ZXJ5LVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgIHwyNTYuOTk1ODMzICAgfDI1My41
NDU4MzMgICB8MC45ODY1NzYgIHwgMC4wMDAwMDAgKHNpZ25pZmljYW50KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgRW1iZXJKUy1EZWJ1Zy1Ub2RvTVZDICAgICAg
ICAgICAgICAgIHwzNDEuNTU0MTY3ICAgfDM0Mi41NzUwMDAgICB8MS4wMDI5ODkgIHwgMC4yMTM5
NjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAg
IHwgUmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgIHw4OC40NTQxNjcgICAgfDg4
LjMwODMzMyAgICB8MC45OTgzNTEgIHwgMC41MzYyNzAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIHwgUmVhY3QtUmVkdXgtVG9kb01WQyAgICAg
ICAgICAgICAgICAgIHwxNTAuMjEyNTAwICAgfDE1MC42MDgzMzMgICB8MS4wMDI2MzUgIHwgMC4y
ODk0NTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAg
ICAgIHwgVmFuaWxsYS1FUzIwMTUtQmFiZWwtV2VicGFjay1Ub2RvTVZDIHw2NS40NzA4MzMgICAg
fDY1LjI3NTAwMCAgICB8MC45OTcwMDkgIHwgMC4yMDM2NzYgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg
ICAgICAgIGEgbWVhbiA9IDI0Ni45NTY5OQorICAgICAgICAgICAgYiBtZWFuID0gMjQ3LjQ4NTk0
CisgICAgICAgICAgICBwVmFsdWUgPSAwLjIwODMyMjE0MzQKKyAgICAgICAgICAgIChCaWdnZXIg
bWVhbnMgYXJlIGJldHRlci4pCisgICAgICAgICAgICAxLjAwMiB0aW1lcyBiZXR0ZXIKKyAgICAg
ICAgICAgIFJlc3VsdHMgQVJFIE5PVCBzaWduaWZpY2FudAorCisgICAgICAgICogeWFyci9ZYXJy
SklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OnNob3J0ZW5MZW5n
dGgpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2V0QWxsKToKKyAgICAg
ICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUluZm86OmFkZENoYXJhY3RlcnMpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6YWRkUmFuZ2VzKToKKyAgICAgICAgKiB5YXJyL1lh
cnJKSVQuaDoKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkQ2hhcmFjdGVycyk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OmFkZFJhbmdlcyk6CisgICAgICAgIChK
U0M6OllhcnI6OkJveWVyTW9vcmVCaXRtYXA6OnNldEFsbCk6CisgICAgICAgIChKU0M6OllhcnI6
OkJveWVyTW9vcmVCaXRtYXA6OmlzQWxsU2V0IGNvbnN0KToKKwogMjAyMS0wNy0zMCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB3
cm9uZyBhY2Nlc3Mgd2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5k
ZXggMGE5MjQwNjE2YzY4NGJkMGRjZjQzOGRhZTE5N2IzNmZlNGY1OWNjYi4uOWU2MDQ0M2I0MTY2
NDMyM2Y4ZTE5YmQ3Y2VhYjg5ZWY5YzNiZDdlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAKQEAgLTYzLDEyICs2MywzMiBAQCBjbGFzcyBCb3llck1vb3JlSW5mbyB7CiAg
ICAgfQogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJz
LnNpemUoKTsgfQorICAgIHZvaWQgc2hvcnRlbkxlbmd0aCh1bnNpZ25lZCBsZW5ndGgpCisgICAg
eworICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IHRoaXMtPmxlbmd0aCgpKTsKKyAgICAgICAgbV9j
aGFyYWN0ZXJzLnNocmluayhsZW5ndGgpOworICAgIH0KIAogICAgIHZvaWQgc2V0KHVuc2lnbmVk
IGluZGV4LCBVQ2hhcjMyIGNoYXJhY3RlcikKICAgICB7CiAgICAgICAgIG1fY2hhcmFjdGVyc1tp
bmRleF0uYWRkKGNoYXJhY3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBzZXRBbGwodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLnNldEFsbCgpOworICAg
IH0KKworICAgIHZvaWQgYWRkQ2hhcmFjdGVycyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9y
PFVDaGFyMzI+JiBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4
XS5hZGRDaGFyYWN0ZXJzKGNoYXJhY3RlcnMpOworICAgIH0KKworICAgIHZvaWQgYWRkUmFuZ2Vz
KHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8Q2hhcmFjdGVyUmFuZ2U+JiByYW5nZSkKKyAg
ICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uYWRkUmFuZ2VzKHJhbmdlKTsKKyAgICB9
CisKICAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KICAgICB2
b2lkIHNldEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTIzODMsNiArMjQwMywxMiBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gW21hcCwgaXNN
YXNrRWZmZWN0aXZlXSA9IG9wLm1fYm1JbmZvLT5jcmVhdGVDYW5kaWRhdGVCaXRtYXAoYmVnaW5J
bmRleCwgZW5kSW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWFwQ291
bnQgPSBtYXAuY291bnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGNhbmRpYXRl
IGNoYXJhY3RlcnMgYXJlIDw9IDIsIGNoZWNraW5nIGVhY2ggaXMgYmV0dGVyIHRoYW4gdXNpbmcg
dmVjdG9yLgorICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3Qgb3V0T2ZMZW5ndGhGYWls
dXJlOworICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRlcm5hbDo6dmVyYm9zZSwgIkJN
IEJpdG1hcCBpcyAiLCBtYXApOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0dGVybnMg
bGlrZSAvW10vIGhhdmUgemVybyBjYW5kaWRhdGVzLiBTaW5jZSBpdCBpcyByYXJlLCB3ZSBkbyBu
b3QgZG8gbm90aGluZyBmb3Igbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXBD
b3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtYXBDb3VudCA8PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVUNoYXIzMiBjaGFyYWN0ZXIxID0gbWFwLmZpbmRCaXQoMCwgdHJ1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYXJhY3RlcjEgIT0gQm95ZXJNb29yZUJpdG1hcDo6
TWFwOjpzaXplKCkpOwpAQCAtMjM5Myw3ICsyNDE5LDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBm
aW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgMS1v
ci0yIGNoYXJhY3RlcnMgbG9va2FoZWFkIGNoYXJhY3RlcjooMHgiLCBoZXgoY2hhcmFjdGVyMSks
ICIpLGNoYXJhY3RlcjI6KCIsIGhleChjaGFyYWN0ZXIyKSwgIiksaXNNYXNrRWZmZWN0aXZlOigi
LCBpc01hc2tFZmZlY3RpdmUsIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4
LCAiKSIpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcExpc3QgbWF0Y2hlZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAt
IGVuZEluZGV4ICsgMSwgcmVnVDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
c01hc2tFZmZlY3RpdmUpCkBAIC0yNDAxLDkgKzI0MjYsOCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW0zMihjaGFyYWN0ZXIxKSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXBDb3VudCA9PSAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkLmFwcGVuZChicmFuY2gzMihFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihjaGFy
YWN0ZXIyKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5k
KGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmFwcGVuZChqdW1wSWZOb0F2
YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCogcG9p
bnRlciA9IGdldEJveWVyTW9vcmVCeXRlVmVjdG9yKG9wLm1fYm1JbmZvLT5pbmRleCgpLCBtYXAp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VSZWdFeHBDb21waWxhdGlvbigpLCAiRm91bmQgYml0bWFwIGxvb2thaGVhZCBjb3VudDooIiwg
bWFwQ291bnQsICIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIikiKTsK
QEAgLTI0MTIsMTMgKzI0MzYsMjkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRPZmZzZXQgLSBlbmRJbmRleCArIDEsIHJl
Z1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQzMihUcnVzdGVkSW1tMzIoQm95
ZXJNb29yZUJpdG1hcDo6bWFwTWFzayksIHJlZ1QwLCByZWdUMCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQmFzZUluZGV4
KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cC5tX2p1bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5J
bmRleCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5j
aFRlc3Q4KE5vblplcm8sIEJhc2VJbmRleChyZWdUMSwgcmVnVDAsIFRpbWVzT25lKSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dE9mTGVuZ3RoRmFpbHVyZS5hcHBlbmQoanVtcElm
Tm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUg
aXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1h
dGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBhZGp1c3Rp
bmcgbWF0Y2gtc3RhcnQgd2hlbiB3ZSBmYWlsZWQgdG8gZmluZCB0aGUgc3RhcnQgd2l0aCBCb3ll
ck1vb3JlIHNlYXJjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1f
Ym9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRP
Zkxlbmd0aEZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1QwKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wLm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChvdXRPZkxl
bmd0aEZhaWx1cmUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhp
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXplIGlzIG5v
dCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBtYXRjaC4K
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYWRqdXN0aW5nIG1h
dGNoLXN0YXJ0IHdoZW4gd2Ugc3RhcnQgcGF0dGVybiBtYXRjaGluZyB3aXRoIHRoZSB1cGRhdGVk
IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBCb3llck1vb3JlIHNlYXJjaC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9oYXNGaXhl
ZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1f
bWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRl
eCwgcmVnVDApOwpAQCAtMzgxOCw3ICszODU4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAg
IC8vIGl0IGZhaWxzIHdoZW4gdGhlIGJvZHkgYWx0ZXJuYXRpdmVzIGZhaWwgdG8gbWF0Y2ggd2l0
aCB0aGUgY3VycmVudCBvZmZzZXQuCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHVuaWNvZGUg
ZmxhZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODYxMQotICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgZGlzanVu
Y3Rpb24tPm1faGFzRml4ZWRTaXplICYmICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0dGVy
bi51bmljb2RlKCkpIHsKKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplICYm
ICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0dGVybi51bmljb2RlKCkpIHsKICAgICAgICAg
ICAgIGF1dG8gYm1JbmZvID0gQm95ZXJNb29yZUluZm86OmNyZWF0ZShzdGQ6Om1pbjx1bnNpZ25l
ZD4oZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUsIEJveWVyTW9vcmVJbmZvOjptYXhMZW5ndGgp
KTsKICAgICAgICAgICAgIGlmIChjb2xsZWN0Qm95ZXJNb29yZUluZm8oZGlzanVuY3Rpb24sIGN1
cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8uZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAg
bV9vcHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZvLnB0cigpOwpAQCAtMzg2NywxMyArMzkwNywx
MCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2
YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8gV2UgZmlyc3QgY29sbGVjdCBwb3NzaWJs
ZSBjaGFyYWN0ZXJzIGZvciBlYWNoIGNoYXJhY3RlciBwb3NpdGlvbi4gVGhlbiwgYXBwbHkgaGV1
cmlzdGljcyB0byBleHRyYWN0IGdvb2QgY2hhcmFjdGVyIHNlcXVlbmNlIGZyb20KICAgICAgICAg
Ly8gdGhhdCBhbmQgY29uc3RydWN0IGZhc3Qgc2VhcmNoaW5nIHdpdGggbG9uZyBzdHJpZGUuCiAK
LSAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSk7IC8vIFdlIG9ubHkg
c3VwcG9ydCBmaXhlZC1zaXplZCBsb29rYWhlYWQgZm9yIEJveWVyTW9vcmUgc2VhcmNoLgogICAg
ICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG5lc3RlZCBkaXNqdW5jdGlvbnMgKGUuZy4gLyg/OmFiY3xkZWZ8Zyg/Omhp
fGprKSkvKS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODYxNAotICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjaGFyYWN0ZXItY2xhc3MgKGUu
Zy4gL1tcZF10ZXN0LykuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjg2MTMKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLWZpeGVkLXNp
emVkIGxvb2thaGVhZCAoZS5nLiAvLiphYmMvIGFuZCBleHRyYWN0ICJhYmMiIHNlcXVlbmNlKS4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODYx
MgogICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2
ZXM7CkBAIC0zODg2LDIwICszOTIzLDQ2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBw
dWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgotICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgogICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAgICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKICAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRlcm46CiAg
ICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNhbEFzc2Vy
dGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RTdGFyRW5j
bG9zdXJlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNo
YXJhY3RlckNsYXNzOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlw
ZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQg
IT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIGNoYXJhY3RlckNsYXNzID0gKnRl
cm0uY2hhcmFjdGVyQ2xhc3M7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmludmVydCgp
IHx8IGNoYXJhY3RlckNsYXNzLm1fYW55Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBibUluZm8uc2V0QWxsKGN1cnNvcik7CisgICAgICAgICAgICAgICAgICAgICAgICArK2N1
cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJDbGFzcy5tX3RhYmxlKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0QWxsKGN1cnNvcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hh
cmFjdGVyQ2xhc3MubV9yYW5nZXNVbmljb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX3Jhbmdlc1Vu
aWNvZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fbWF0Y2hl
c1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFkZENo
YXJhY3RlcnMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXNVbmljb2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFzcy5tX3Jhbmdlcy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRkUmFuZ2VzKGN1cnNvciwgY2hhcmFjdGVy
Q2xhc3MubV9yYW5nZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNz
Lm1fbWF0Y2hlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRk
Q2hhcmFjdGVycyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlcyk7CisgICAgICAgICAg
ICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGF0
dGVybkNoYXJhY3RlcjogewogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFudGl0eVR5
cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0eU1heENvdW50
ICE9IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQ
b3NpdGlvbiAhPSBpbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAo
VTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVTdXJyb2dh
dGVQYWlycykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAvLyBGb3IgY2FzZS1p
bnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNjaWkgY2hhcmFjdGVycyB0aGF0IGhhdmUgZGlmZmVy
ZW50CiAgICAgICAgICAgICAgICAgICAgIC8vIHVwcGVyICYgbG93ZXIgY2FzZSByZXByZXNlbnRh
dGlvbnMgYXJlIGFscmVhZHkgY29udmVydGVkIHRvIGEgY2hhcmFjdGVyIGNsYXNzLgogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkgfHwgaXNBU0NJSUFs
cGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgfHwgaXNDYW5vbmljYWxseVVuaXF1ZSh0ZXJtLnBh
dHRlcm5DaGFyYWN0ZXIsIG1fY2Fub25pY2FsTW9kZSkpOwpAQCAtMzkwOSwxMyArMzk3MiwxNSBA
QCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRl
IE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFjdGVyKTsK
ICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRlcm5h
bDo6dmVyYm9zZSwgIlNob3J0ZW5pbmcgdG8gIiwgY3Vyc29yKTsKKyAgICAgICAgICAgICAgICBi
bUluZm8uc2hvcnRlbkxlbmd0aChjdXJzb3IpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJbnRlcm5h
bDo6dmVyYm9zZSwgIkNoYXJhY3RlcnMgY29sbGVjdGVkIik7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gYm1JbmZvLmxlbmd0aCgpOwogICAgIH0KIAogICAgIGNvbnN0IHVp
bnQ4X3QqIGdldEJveWVyTW9vcmVCeXRlVmVjdG9yKHVuc2lnbmVkIGluZGV4LCBjb25zdCBCb3ll
ck1vb3JlQml0bWFwOjpNYXAmIG1hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApp
bmRleCA1OTI5YjEyYmY1ODg1YTJkZDA4YTAzZDcwNDdhMzA4MzUzZDU2OWQxLi4yZTFlZTI5NzY2
OGNmZDA5ZTU4MTRkZDA5NzhmMjQzZDJlMjRjNmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5oCkBAIC02MSw2ICs2MSw3IEBAIGVudW0gY2xhc3MgSklURmFpbHVyZVJlYXNvbiA6
IHVpbnQ4X3QgewogfTsKIAogY2xhc3MgQm95ZXJNb29yZUJpdG1hcCB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQm95ZXJNb29yZUJpdG1hcCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoQm95ZXJNb29yZUJpdG1hcCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBtYXBTaXplID0gMTI4OwpAQCAtNzUsNiArNzYsOCBAQCBjbGFzcyBCb3llck1vb3JlQml0
bWFwIHsKIAogICAgIHZvaWQgYWRkKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKKyAgICAgICAg
aWYgKGlzQWxsU2V0KCkpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHVuc2lnbmVkIHBv
c2l0aW9uID0gY2hhcmFjdGVyICYgbWFwTWFzazsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjaGFyYWN0ZXIpKQogICAgICAgICAgICAgbV9pc01hc2tFZmZl
Y3RpdmUgPSB0cnVlOwpAQCAtODQsNiArODcsNDMgQEAgY2xhc3MgQm95ZXJNb29yZUJpdG1hcCB7
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVmVjdG9y
PFVDaGFyMzI+JiBjaGFyYWN0ZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGlzQWxsU2V0KCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChjaGFyYWN0ZXJzLnNpemUoKSA+PSBtYXBT
aXplKSB7CisgICAgICAgICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKFVDaGFyIGNoYXJhY3RlciA6IGNoYXJhY3RlcnMpCisgICAgICAg
ICAgICBhZGQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFJhbmdlcyhjb25zdCBW
ZWN0b3I8Q2hhcmFjdGVyUmFuZ2U+JiByYW5nZXMpCisgICAgeworICAgICAgICBpZiAocmFuZ2Vz
LnNpemUoKSA+PSBtYXBTaXplKSB7CisgICAgICAgICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKENoYXJhY3RlclJhbmdlIHJhbmdlIDog
cmFuZ2VzKSB7CisgICAgICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLmVuZCAt
IHJhbmdlLmJlZ2luICsgMSkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgICAgIHNldEFsbCgp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZv
ciAoVUNoYXIzMiBjaGFyYWN0ZXIgPSByYW5nZS5iZWdpbjsgY2hhcmFjdGVyIDw9IHJhbmdlLmVu
ZDsgKytjaGFyYWN0ZXIpCisgICAgICAgICAgICAgICAgYWRkKGNoYXJhY3Rlcik7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2b2lkIHNldEFsbCgpCisgICAgeworICAgICAgICBtX2NvdW50ID0g
bWFwU2l6ZTsKKyAgICB9CisKKyAgICBib29sIGlzQWxsU2V0KCkgY29uc3QgeyByZXR1cm4gbV9j
b3VudCA9PSBtYXBTaXplOyB9CisKIHByaXZhdGU6CiAgICAgTWFwIG1fbWFwIHsgfTsKICAgICB1
bnNpZ25lZCBtX2NvdW50IHsgMCB9OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2NDNkYmI5MjQzNTZkNmY4NTFiMTNmNzk0NDI0ZWM3ODA0
Yzk5YzFjLi40NmU5ZjdkNTAzNTI3NWU4M2E4MDMyMTI5Njc0MTA3MWEzNzg2Y2RlIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA3LTMwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gWWFyciBCb3llck1vb3JlIHNlYXJjaCBzaG91bGQgc3VwcG9ydCBjaGFy
YWN0ZXItY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGgu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocmVnZXhwLmEuYi5jLmQu
ZS5mLmcuaC5pLmouay5sLm0ubi5vLnAucS5yLnMudC51LnYudy54Lnkuei4wLjEuMi4zLjQuNS42
LjcuOC45LnQudi5uLnIpOgorCiAyMDIxLTA3LTI5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9A
YXBwbGUuY29tPgogCiAgICAgICAgIGRlZmluZVByb3BlcnR5T25SZWNlaXZlciBzaG91bGQgY2hl
Y2sgaWYgcmVjZWl2ZXIgY2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanMg
Yi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVu
Z3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJjMDE2YTUyN2FkMDhkNjg0MDAyYjJkYWVjNWVmMjViZTBiZmFi
NzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1h
bnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2
YXIgcmVnZXhwID0gL2F8YnxjfGR8ZXxmfGd8aHxpfGp8a3xsfG18bnxvfHB8cXxyfHN8dHx1fHZ8
d3x4fHl8enwwfDF8MnwzfDR8NXw2fDd8OHw5fCB8XHR8XHZ8XG58XHJ8XCR8XF58XCZ8XCp8XCh8
XCkvCisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdl
eHAudGVzdChgJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlYCksIGZhbHNl
KTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdChg44OG44K544OIYCksIGZhbHNlKTsKKyAgICBz
aG91bGRCZShyZWdleHAudGVzdChgdGVzdGluZ2ApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdF
eHAubGVmdENvbnRleHQsIGBgKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCBg
ZXN0aW5nYCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434682</attachid>
            <date>2021-07-30 19:40:48 -0700</date>
            <delta_ts>2021-07-31 13:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210730194047.patch</filename>
            <type>text/plain</type>
            <size>22568</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTI3ZjkzZjYzYWQyZjk4NTY1OWI3ZTQ4NjNiYmZlNDE5ZTYwNGRiLi5jNGY1Njc0NTQ5YTk4MGE2
OGM5MWVkODNlMjlmZTE5NDhhNDAxNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNy0zMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDIwJS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTQ1LjM1NjEr
LTAuNjk2OCAgICAgXiAgICA0NTEuNjExNystMC40NjEzICAgICAgICBeIGRlZmluaXRlbHkgMS4y
MDc2eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAyJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8
ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxz
ZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy40NzA4MzMg
ICB8MTIzLjU1MDAwMCAgIHwxLjAwMDY0MSAgfCAwLjg0MTYwMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgICAgICAgfDI2Ljg4MzMzMyAgICB8MjYuOTUwMDAwICAgIHwxLjAwMjQ4MCAg
fCAwLjg0NjczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy43MDgz
MzMgICB8MTI3Ljc1NDE2NyAgIHwxLjAwMDM1OSAgfCAwLjkzNDIwNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRvZG9N
VkMgICAgICAgICAgICAgICAgICAgfDUwLjU0NTgzMyAgICB8NTAuNDQ1ODMzICAgIHwwLjk5ODAy
MiAgfCAwLjY3OTYxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjg3
OTE2NyAgICB8MjAuNzkxNjY3ICAgIHwwLjk5NTgwOSAgfCAwLjc5NjU0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICAgfDEzNy40NzkxNjcgICB8MTM3LjI3NTAwMCAgIHwwLjk5
ODUxNSAgfCAwLjcyOTgxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAgfDY5
LjA3OTE2NyAgICB8NjguOTEyNTAwICAgIHwwLjk5NzU4NyAgfCAwLjUyNDMyNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5vLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjYwNDE2NyAgICB8NjYuMTIwODMzICAgIHwx
LjAwNzg3NiAgfCAwLjE0NTU0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDc3LjAyOTE2NyAgICB8NzYuNzA4MzMzICAgIHwwLjk5NTgzNSAgfCAwLjUxODU2MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFy
Mi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjUxNjY2NyAgICB8NDAuODEyNTAwICAg
IHwxLjAwNzMwMiAgfCAwLjUxMzM4NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgfDU0Ljc2MjUwMCAgICB8NTQuODk1ODMzICAgIHwxLjAwMjQzNSAgfCAwLjY0NzM4MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBqUXVl
cnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI1NS45NTAwMDAgICB8MjUwLjQyNTAw
MCAgIHwwLjk3ODQxNCAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAg
ICAgICAgfDM0MS43NDU4MzMgICB8MzQyLjgwNDE2NyAgIHwxLjAwMzA5NyAgfCAwLjIxOTkzNyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBS
ZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4Ljg1NDE2NyAgICB8ODguNzAw
MDAwICAgIHwwLjk5ODI2NSAgfCAwLjU2ODQwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgfDE1MS4yNjY2NjcgICB8MTUwLjgwNDE2NyAgIHwwLjk5Njk0MiAgfCAwLjI1NjQw
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1Ljc4MzMzMyAgICB8NjUu
NjQ1ODMzICAgIHwwLjk5NzkxMCAgfCAwLjQzNzQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgYSBtZWFuID0gMjQ2LjUyODk4CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODUxMjgKKyAg
ICAgICAgICAgIHBWYWx1ZSA9IDAuMzkyNzMzMDI3OAorICAgICAgICAgICAgKEJpZ2dlciBtZWFu
cyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDAxIHRpbWVzIGJldHRlcgorICAgICAgICAg
ICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2hvcnRlbkxlbmd0aCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRBbGwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6YWRkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6
OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRSYW5nZXMpOgorICAgICAgICAqIHlhcnIvWWFyckpJ
VC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGQpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkUmFuZ2VzKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6c2V0QWxsKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95
ZXJNb29yZUJpdG1hcDo6aXNBbGxTZXQgY29uc3QpOgorCiAyMDIxLTA3LTMwICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHdyb25n
IGFjY2VzcyB3aWR0aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCAw
YTkyNDA2MTZjNjg0YmQwZGNmNDM4ZGFlMTk3YjM2ZmU0ZjU5Y2NiLi45ZTYwNDQzYjQxNjY0MzIz
ZjhlMTliZDdjZWFiODllZjljM2JkN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmNwcApAQCAtNjMsMTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMuc2l6
ZSgpOyB9CisgICAgdm9pZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBtX2NoYXJh
Y3RlcnMuc2hyaW5rKGxlbmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWduZWQgaW5k
ZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4
XS5hZGQoY2hhcmFjdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7CisgICAgfQor
CisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8VUNo
YXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFk
ZENoYXJhY3RlcnMoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5nZXModW5z
aWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQorICAgIHsK
KyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAgIH0KKwog
ICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIHZvaWQg
c2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4Myw2ICsyNDAzLDEyIEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01hc2tF
ZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbkluZGV4
LCBlbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3VudCA9
IG1hcC5jb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUgY2hh
cmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2ZWN0
b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRPZkxlbmd0aEZhaWx1cmU7
CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQk0gQml0
bWFwIGlzICIsIG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJucyBsaWtl
IC9bXS8gaGF2ZSB6ZXJvIGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJhcmUsIHdlIGRvIG5vdCBk
byBub3RoaW5nIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcENvdW50
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
Q2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpNYXA6
OnNpemUoKSk7CkBAIC0yMzkzLDcgKzI0MTksNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9yLTIg
Y2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwgIiks
Y2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIsIGlz
TWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgsICIp
Iik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0gZW5k
SW5kZXggKyAxLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWFz
a0VmZmVjdGl2ZSkKQEAgLTI0MDEsOSArMjQyNiw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdU
MCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1hcENvdW50ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3Rl
cjIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQoanVt
cElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGp1bXBJZk5vQXZhaWxh
YmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwb2ludGVy
ID0gZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIG1hcCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJl
Z0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBD
b3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOwpAQCAt
MjQxMiwxMyArMjQzNiwyOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlh
cnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgcmVnVDAp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihCb3llck1v
b3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBCYXNlSW5kZXgocmVn
VDEsIHJlZ1QwLCBUaW1lc09uZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1f
anVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNoVGVz
dDgoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmFwcGVuZChqdW1wSWZOb0F2
YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBpcyBu
b3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0Y2gu
CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGFkanVzdGluZyBt
YXRjaC1zdGFydCB3aGVuIHdlIGZhaWxlZCB0byBmaW5kIHRoZSBzdGFydCB3aXRoIEJveWVyTW9v
cmUgc2VhcmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5
LT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dE9mTGVu
Z3RoRmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChh
bHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb3ZlKGluZGV4LCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN1YjMyKEltbTMyKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmVnVDApOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Au
bV9qdW1wcy5hcHBlbmQoanVtcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG91dE9mTGVuZ3Ro
RmFpbHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90IGZp
eGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBhZGp1c3RpbmcgbWF0Y2gt
c3RhcnQgd2hlbiB3ZSBzdGFydCBwYXR0ZXJuIG1hdGNoaW5nIHdpdGggdGhlIHVwZGF0ZWQgaW5k
ZXgKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IEJveWVyTW9vcmUgc2VhcmNoLgogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVkU2l6
ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9taW5p
bXVtU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4LCBy
ZWdUMCk7CkBAIC0zODE4LDcgKzM4NTgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8g
aXQgZmFpbHMgd2hlbiB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRjaCB3aXRoIHRo
ZSBjdXJyZW50IG9mZnNldC4KICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5pY29kZSBmbGFn
LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4
NjExCi0gICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5jdGlv
bi0+bV9oYXNGaXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVu
aWNvZGUoKSkgeworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYgIW1f
cGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkgewogICAgICAgICAgICAg
YXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVkPihk
aXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86Om1heExlbmd0aCkpOwog
ICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNqdW5jdGlvbiwgY3VycmVu
dEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBtX29w
cy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CkBAIC0zODY3LDEzICszOTA3LDEwIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxlIGNo
YXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVyaXN0
aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQogICAgICAgICAvLyB0
aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KIAotICAg
ICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBzdXBw
b3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQm95ZXJNb29yZSBzZWFyY2guCiAgICAgICAg
IEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CiAKICAgICAgICAgLy8gRklYTUU6
IFN1cHBvcnQgbmVzdGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAvKD86YWJjfGRlZnxnKD86aGl8amsp
KS8pLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4NjE0Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5nLiAv
W1xkXXRlc3QvKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODYxMwogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tZml4ZWQtc2l6ZWQg
bG9va2FoZWFkIChlLmcuIC8uKmFiYy8gYW5kIGV4dHJhY3QgImFiYyIgc2VxdWVuY2UpLgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEyCiAg
ICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZlczsK
QEAgLTM4ODYsMjAgKzM5MjMsNDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1Ymxp
YyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAg
Y2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgICAgIGNh
c2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAgICAgICBjYXNl
IFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAgICAg
ICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKICAgICAg
ICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
OgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNsb3N1
cmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFj
dGVyQ2xhc3M6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBlICE9
IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAhPSAx
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgY2hhcmFjdGVyQ2xhc3MgPSAqdGVybS5j
aGFyYWN0ZXJDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW52ZXJ0KCkgfHwg
Y2hhcmFjdGVyQ2xhc3MubV9hbnlDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29y
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzLm1fdGFibGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0
ZXJDbGFzcy5tX3Jhbmdlc1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5pY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5p
Y29kZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRkQ2hhcmFj
dGVycyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlc1VuaWNvZGUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFz
cy5tX3Jhbmdlcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9t
YXRjaGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRDaGFy
YWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzKTsKKyAgICAgICAgICAgICAg
ICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0ZXJu
Q2hhcmFjdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAh
PSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQgIT0g
MSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0
aW9uICE9IGluZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmIChVMTZf
TEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1cnJvZ2F0ZVBh
aXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBjYXNlLWluc2Vz
aXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJlbnQK
ICAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0aW9u
cyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxwaGEo
dGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0dGVy
bkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CkBAIC0zOTA5LDEzICszOTcyLDE1IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFj
cm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpOwogICAg
ICAgICAgICAgICAgICAgICArK2N1cnNvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2
ZXJib3NlLCAiU2hvcnRlbmluZyB0byAiLCBjdXJzb3IpOworICAgICAgICAgICAgICAgIGJtSW5m
by5zaG9ydGVuTGVuZ3RoKGN1cnNvcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2
ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBibUluZm8ubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgY29uc3QgdWludDhf
dCogZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3IodW5zaWduZWQgaW5kZXgsIGNvbnN0IEJveWVyTW9v
cmVCaXRtYXA6Ok1hcCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4
IDU5MjliMTJiZjU4ODVhMmRkMDhhMDNkNzA0N2EzMDgzNTNkNTY5ZDEuLjJlMWVlMjk3NjY4Y2Zk
MDllNTgxNGRkMDk3OGYyNDNkMmUyNGM2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SklULmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJlUmVhc29uIDogdWlu
dDhfdCB7CiB9OwogCiBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShCb3llck1vb3JlQml0bWFwKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChC
b3llck1vb3JlQml0bWFwKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IG1hcFNpemUgPSAxMjg7CkBAIC03NSw2ICs3Niw4IEBAIGNsYXNzIEJveWVyTW9vcmVCaXRtYXAg
ewogCiAgICAgdm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgeworICAgICAgICBpZiAo
aXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9zaXRp
b24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOwogICAgICAgICBpZiAocG9zaXRpb24gIT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCiAgICAgICAgICAgICBtX2lzTWFza0VmZmVjdGl2
ZSA9IHRydWU7CkBAIC04NCw2ICs4Nyw0MyBAQCBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBWZWN0b3I8VUNo
YXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID49IG1hcFNpemUp
IHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZvciAoVUNoYXIgY2hhcmFjdGVyIDogY2hhcmFjdGVycykKKyAgICAgICAgICAg
IGFkZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkUmFuZ2VzKGNvbnN0IFZlY3Rv
cjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlcykKKyAgICB7CisgICAgICAgIGlmIChyYW5nZXMuc2l6
ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UgOiByYW5n
ZXMpIHsKKyAgICAgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UuZW5kIC0gcmFu
Z2UuYmVnaW4gKyAxKSA+PSBtYXBTaXplKSB7CisgICAgICAgICAgICAgICAgc2V0QWxsKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChV
Q2hhcjMyIGNoYXJhY3RlciA9IHJhbmdlLmJlZ2luOyBjaGFyYWN0ZXIgPD0gcmFuZ2UuZW5kOyAr
K2NoYXJhY3RlcikKKyAgICAgICAgICAgICAgICBhZGQoY2hhcmFjdGVyKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgc2V0QWxsKCkKKyAgICB7CisgICAgICAgIG1fY291bnQgPSBtYXBT
aXplOworICAgIH0KKworICAgIGJvb2wgaXNBbGxTZXQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50
ID09IG1hcFNpemU7IH0KKwogcHJpdmF0ZToKICAgICBNYXAgbV9tYXAgeyB9OwogICAgIHVuc2ln
bmVkIG1fY291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDY0M2RiYjkyNDM1NmQ2Zjg1MWIxM2Y3OTQ0MjRlYzc4MDRjOTlj
MWMuLmE5MDViYTU1NzAxYTY4ZmJlNGFiZjk0MzM0NzczMDRkZGU1ODZkNDUgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMjEtMDctMzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbSlNDXSBZYXJyIEJveWVyTW9vcmUgc2VhcmNoIHNob3VsZCBzdXBwb3J0IGNoYXJhY3Rl
ci1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9uLWZpeGVkLXNpemUuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtYm0tc2Vh
cmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZEJlKToKKyAgICAgICAgKHJlZ2V4cC5hLmIuYy5kLmUuZi5nLmguaS5qLmsubC5tLm4uby5wLnEu
ci5zLnQudS52LncueC55LnouMC4xLjIuMy40LjUuNi43LjguOS50LnYubi5yKToKKyAgICAgICAg
KiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6ZS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisKIDIwMjEtMDctMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgZGVmaW5lUHJvcGVydHlPblJlY2VpdmVyIHNob3VsZCBjaGVj
ayBpZiByZWNlaXZlciBjYW5QZXJmb3JtRmFzdFB1dElubGluZQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9uLWZpeGVkLXNpemUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLWNoYXJhY3Rlci1ub24tZml4ZWQtc2l6ZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YzQzNzAxNzg3YWVhZDM5MGFjYTYzNzM4OTIyZmZmNGEwNGU2NmUzCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0
ZXItbm9uLWZpeGVkLXNpemUuanMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2xldCByZWdl
eHAgPSAvc3Nzc3NzLipzcy87CitsZXQgcmVnZXhwRmFpbCA9IC9vb29vb28uKm9vLzsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIGxldCBtYXRjaGVkID0gYGFhYWFhYWFh
YWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2NjY2NjcHBwcHBwcHBwcHBwdHR0
dHR0dHR0dHR0PDw8PDw8PDw8PDw8PDxkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkampqampqampqanNzc3NzcyBzcmM9ImhleS5qcyIgc3NIZXlgLm1hdGNoKHJlZ2V4cCk7
CisgICAgc2hvdWxkQmUobWF0Y2hlZFswXSwgYHNzc3NzcyBzcmM9ImhleS5qcyIgc3NgKTsKKyAg
ICBsZXQgbm90TWF0Y2hlZCA9IGBhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJi
YmJiYmJiY2NjY2NjY3BwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dDw8PDw8PDw8PDw8PDw8ZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGpqampqampqampzc3Nzc3Mgc3JjPSJo
ZXkuanMiIHNzSGV5YC5tYXRjaChyZWdleHBGYWlsKTsKKyAgICBzaG91bGRCZShub3RNYXRjaGVk
LCBudWxsKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gt
bWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0t
c2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMDE2YTUy
N2FkMDhkNjg0MDAyYjJkYWVjNWVmMjViZTBiZmFiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpz
CkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdi
YWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhwID0gL2F8YnxjfGR8ZXxmfGd8
aHxpfGp8a3xsfG18bnxvfHB8cXxyfHN8dHx1fHZ8d3x4fHl8enwwfDF8MnwzfDR8NXw2fDd8OHw5
fCB8XHR8XHZ8XG58XHJ8XCR8XF58XCZ8XCp8XCh8XCkvCisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdChgJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlYCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVz
dChg44OG44K544OIYCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdChgdGVzdGlu
Z2ApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENvbnRleHQsIGBgKTsKKyAgICBz
aG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCBgZXN0aW5nYCk7Cit9CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW5vbi1maXhlZC1zaXplLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MWZjNjZkMmJiZDIzODY0MGRhMzUyYWJkODVjMjVhNTg2ZGVjYWRjCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6ZS5qcwpAQCAt
MCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworbGV0IHJlZ2V4cCA9IC88c2NyaXB0LipcLz4vaTsKK2xl
dCByZWdleHBGYWlsID0gLzxzY3JpcHAuKlwvPi9pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFl
MjsgKytpKSB7CisgICAgbGV0IG1hdGNoZWQgPSBgYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJi
YmJiYmJiYmJiYmJiYmJiYmNjY2NjY2NwcHBwcHBwcHBwcHB0dHR0dHR0dHR0dHQ8PDw8PDw8PDw8
PDw8PGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRqampqampqampqPHNj
cmlwdCBzcmM9ImhleS5qcyIgLz5IZXlgLm1hdGNoKHJlZ2V4cCk7CisgICAgc2hvdWxkQmUobWF0
Y2hlZFswXSwgYDxzY3JpcHQgc3JjPSJoZXkuanMiIC8+YCk7CisgICAgbGV0IG5vdE1hdGNoZWQg
PSBgYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmNjY2NjY2NwcHBw
cHBwcHBwcHB0dHR0dHR0dHR0dHQ8PDw8PDw8PDw8PDw8PGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRqampqampqampqPHNjcmlwdCBzcmM9ImhleS5qcyIgLz5IZXlgLm1h
dGNoKHJlZ2V4cEZhaWwpOworICAgIHNob3VsZEJlKG5vdE1hdGNoZWQsIG51bGwpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434704</attachid>
            <date>2021-07-31 13:56:40 -0700</date>
            <delta_ts>2021-08-02 10:55:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210731135639.patch</filename>
            <type>text/plain</type>
            <size>22575</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ODIxNmMxMjgwMDY5MjhkMzg5ODczZTU5YjFkZGZjZjI0OGY4ODk2Li4xYjYzNmUxZmYwYTcwYzIw
YmY2NDgyODQzNDBlZjE0OTE4NjQ3ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wNy0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDIwJS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTQ1LjM1NjEr
LTAuNjk2OCAgICAgXiAgICA0NTEuNjExNystMC40NjEzICAgICAgICBeIGRlZmluaXRlbHkgMS4y
MDc2eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAyJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8
ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxz
ZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy40NzA4MzMg
ICB8MTIzLjU1MDAwMCAgIHwxLjAwMDY0MSAgfCAwLjg0MTYwMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgICAgICAgfDI2Ljg4MzMzMyAgICB8MjYuOTUwMDAwICAgIHwxLjAwMjQ4MCAg
fCAwLjg0NjczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy43MDgz
MzMgICB8MTI3Ljc1NDE2NyAgIHwxLjAwMDM1OSAgfCAwLjkzNDIwNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRvZG9N
VkMgICAgICAgICAgICAgICAgICAgfDUwLjU0NTgzMyAgICB8NTAuNDQ1ODMzICAgIHwwLjk5ODAy
MiAgfCAwLjY3OTYxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjg3
OTE2NyAgICB8MjAuNzkxNjY3ICAgIHwwLjk5NTgwOSAgfCAwLjc5NjU0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICAgfDEzNy40NzkxNjcgICB8MTM3LjI3NTAwMCAgIHwwLjk5
ODUxNSAgfCAwLjcyOTgxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAgfDY5
LjA3OTE2NyAgICB8NjguOTEyNTAwICAgIHwwLjk5NzU4NyAgfCAwLjUyNDMyNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5vLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjYwNDE2NyAgICB8NjYuMTIwODMzICAgIHwx
LjAwNzg3NiAgfCAwLjE0NTU0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDc3LjAyOTE2NyAgICB8NzYuNzA4MzMzICAgIHwwLjk5NTgzNSAgfCAwLjUxODU2MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFy
Mi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjUxNjY2NyAgICB8NDAuODEyNTAwICAg
IHwxLjAwNzMwMiAgfCAwLjUxMzM4NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgfDU0Ljc2MjUwMCAgICB8NTQuODk1ODMzICAgIHwxLjAwMjQzNSAgfCAwLjY0NzM4MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBqUXVl
cnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI1NS45NTAwMDAgICB8MjUwLjQyNTAw
MCAgIHwwLjk3ODQxNCAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAg
ICAgICAgfDM0MS43NDU4MzMgICB8MzQyLjgwNDE2NyAgIHwxLjAwMzA5NyAgfCAwLjIxOTkzNyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBS
ZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4Ljg1NDE2NyAgICB8ODguNzAw
MDAwICAgIHwwLjk5ODI2NSAgfCAwLjU2ODQwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgfDE1MS4yNjY2NjcgICB8MTUwLjgwNDE2NyAgIHwwLjk5Njk0MiAgfCAwLjI1NjQw
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1Ljc4MzMzMyAgICB8NjUu
NjQ1ODMzICAgIHwwLjk5NzkxMCAgfCAwLjQzNzQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgYSBtZWFuID0gMjQ2LjUyODk4CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODUxMjgKKyAg
ICAgICAgICAgIHBWYWx1ZSA9IDAuMzkyNzMzMDI3OAorICAgICAgICAgICAgKEJpZ2dlciBtZWFu
cyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDAxIHRpbWVzIGJldHRlcgorICAgICAgICAg
ICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2hvcnRlbkxlbmd0aCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRBbGwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6YWRkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6
OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRSYW5nZXMpOgorICAgICAgICAqIHlhcnIvWWFyckpJ
VC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGQpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkUmFuZ2VzKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6c2V0QWxsKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95
ZXJNb29yZUJpdG1hcDo6aXNBbGxTZXQgY29uc3QpOgorCiAyMDIxLTA3LTMxICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTW92ZSBKSVRfVU5JQ09E
RV9FWFBSRVNTSU9OUyB0byBFTkFCTEUoWUFSUl9KSVRfVU5JQ09ERV9FWFBSRVNTSU9OUykgaW4g
UGxhdGZvcm1FbmFibGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRl
eCBjY2E3NDgyYzg5MDhlMDAxMzlkMzE2ZTgxNzZhZDdjMmVmNWM4YWFlLi5kZWQyOTljNjMwZjI1
ZjA2MjhkNzJjNzgxODVhNzA5Njc1NTNmOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmNwcApAQCAtNjMsMTIgKzYzLDMyIEBAIGNsYXNzIEJveWVyTW9vcmVJbmZvIHsKICAg
ICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnMu
c2l6ZSgpOyB9CisgICAgdm9pZCBzaG9ydGVuTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOworICAgICAgICBtX2No
YXJhY3RlcnMuc2hyaW5rKGxlbmd0aCk7CisgICAgfQogCiAgICAgdm9pZCBzZXQodW5zaWduZWQg
aW5kZXgsIFVDaGFyMzIgY2hhcmFjdGVyKQogICAgIHsKICAgICAgICAgbV9jaGFyYWN0ZXJzW2lu
ZGV4XS5hZGQoY2hhcmFjdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHNldEFsbCh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uc2V0QWxsKCk7CisgICAg
fQorCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKHVuc2lnbmVkIGluZGV4LCBjb25zdCBWZWN0b3I8
VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhd
LmFkZENoYXJhY3RlcnMoY2hhcmFjdGVycyk7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5nZXMo
dW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlKQorICAg
IHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2luZGV4XS5hZGRSYW5nZXMocmFuZ2UpOworICAgIH0K
KwogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQogICAgIHZv
aWQgc2V0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewpAQCAtMjM4MSw2ICsyNDAxLDEyIEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBbbWFwLCBpc01h
c2tFZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJpdG1hcChiZWdpbklu
ZGV4LCBlbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtYXBDb3Vu
dCA9IG1hcC5jb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgY2FuZGlhdGUg
Y2hhcmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIgdGhhbiB1c2luZyB2
ZWN0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRPZkxlbmd0aEZhaWx1
cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOworICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2ZXJib3NlLCAiQk0g
Qml0bWFwIGlzICIsIG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXR0ZXJucyBs
aWtlIC9bXS8gaGF2ZSB6ZXJvIGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJhcmUsIHdlIGRvIG5v
dCBkbyBub3RoaW5nIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcENv
dW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1vb3JlQml0bWFwOjpN
YXA6OnNpemUoKSk7CkBAIC0yMzkxLDcgKzI0MTcsNiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZp
bmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCAxLW9y
LTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChjaGFyYWN0ZXIxKSwg
IiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tFZmZlY3RpdmU6KCIs
IGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwgIiwgZW5kSW5kZXgs
ICIpIik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVkOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBsYWJlbCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVja2VkT2Zmc2V0IC0g
ZW5kSW5kZXggKyAxLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlz
TWFza0VmZmVjdGl2ZSkKQEAgLTIzOTksOSArMjQyNCw4IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBy
ZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hcENvdW50ID09IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJh
Y3RlcjIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBlbmQo
anVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5kKGp1bXBJZk5vQXZh
aWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90KiBwb2lu
dGVyID0gZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3Iob3AubV9ibUluZm8tPmluZGV4KCksIG1hcCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9z
ZVJlZ0V4cENvbXBpbGF0aW9uKCksICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBt
YXBDb3VudCwgIikscmFuZ2U6WyIsIGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOwpA
QCAtMjQxMCwxMyArMjQzNCwyOSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGlj
IFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIGxvb3BIZWFkID0gbGFiZWwoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkQ2hhcmFjdGVyKG1fY2hlY2tlZE9mZnNldCAtIGVuZEluZGV4ICsgMSwgcmVn
VDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMihCb3ll
ck1vb3JlQml0bWFwOjptYXBNYXNrKSwgcmVnVDAsIHJlZ1QwKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBCYXNlSW5kZXgo
cmVnVDEsIHJlZ1QwLCBUaW1lc09uZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Lm1fanVtcHMuYXBwZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbklu
ZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNo
VGVzdDgoTm9uWmVybywgQmFzZUluZGV4KHJlZ1QxLCByZWdUMCwgVGltZXNPbmUpKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmFwcGVuZChqdW1wSWZO
b0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGp1bXAoKS5saW5rVG8obG9vcEhlYWQsIHRoaXMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4gc2l6ZSBp
cyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYgd2UgbWF0
Y2guCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGFkanVzdGlu
ZyBtYXRjaC1zdGFydCB3aGVuIHdlIGZhaWxlZCB0byBmaW5kIHRoZSBzdGFydCB3aXRoIEJveWVy
TW9vcmUgc2VhcmNoLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9i
b2R5LT5tX2hhc0ZpeGVkU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dE9m
TGVuZ3RoRmFpbHVyZS5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb3ZlKGluZGV4LCByZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YjMyKEltbTMyKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSwgcmVnVDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KHJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0TWF0Y2hTdGFydChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3AubV9qdW1wcy5hcHBlbmQoanVtcCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKG91dE9mTGVu
Z3RoRmFpbHVyZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQubGluayh0aGlz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIHNpemUgaXMgbm90
IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlmIHdlIG1hdGNoLgor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBhZGp1c3RpbmcgbWF0
Y2gtc3RhcnQgd2hlbiB3ZSBzdGFydCBwYXR0ZXJuIG1hdGNoaW5nIHdpdGggdGhlIHVwZGF0ZWQg
aW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IEJveWVyTW9vcmUgc2VhcmNoLgog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3BhdHRlcm4ubV9ib2R5LT5tX2hhc0ZpeGVk
U2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbHRlcm5hdGl2ZS0+bV9t
aW5pbXVtU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlKGluZGV4
LCByZWdUMCk7CkBAIC0zODE2LDcgKzM4NTYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
Ly8gaXQgZmFpbHMgd2hlbiB0aGUgYm9keSBhbHRlcm5hdGl2ZXMgZmFpbCB0byBtYXRjaCB3aXRo
IHRoZSBjdXJyZW50IG9mZnNldC4KICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgdW5pY29kZSBm
bGFnLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4NjExCi0gICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSAmJiBkaXNqdW5j
dGlvbi0+bV9oYXNGaXhlZFNpemUgJiYgIW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJu
LnVuaWNvZGUoKSkgeworICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYg
IW1fcGF0dGVybi5zdGlja3koKSAmJiAhbV9wYXR0ZXJuLnVuaWNvZGUoKSkgewogICAgICAgICAg
ICAgYXV0byBibUluZm8gPSBCb3llck1vb3JlSW5mbzo6Y3JlYXRlKHN0ZDo6bWluPHVuc2lnbmVk
PihkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSwgQm95ZXJNb29yZUluZm86Om1heExlbmd0aCkp
OwogICAgICAgICAgICAgaWYgKGNvbGxlY3RCb3llck1vb3JlSW5mbyhkaXNqdW5jdGlvbiwgY3Vy
cmVudEFsdGVybmF0aXZlSW5kZXgsIGJtSW5mby5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBt
X29wcy5sYXN0KCkubV9ibUluZm8gPSBibUluZm8ucHRyKCk7CkBAIC0zODY1LDEzICszOTA1LDEw
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAvLyBXZSBmaXJzdCBjb2xsZWN0IHBvc3NpYmxl
IGNoYXJhY3RlcnMgZm9yIGVhY2ggY2hhcmFjdGVyIHBvc2l0aW9uLiBUaGVuLCBhcHBseSBoZXVy
aXN0aWNzIHRvIGV4dHJhY3QgZ29vZCBjaGFyYWN0ZXIgc2VxdWVuY2UgZnJvbQogICAgICAgICAv
LyB0aGF0IGFuZCBjb25zdHJ1Y3QgZmFzdCBzZWFyY2hpbmcgd2l0aCBsb25nIHN0cmlkZS4KIAot
ICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplKTsgLy8gV2Ugb25seSBz
dXBwb3J0IGZpeGVkLXNpemVkIGxvb2thaGVhZCBmb3IgQm95ZXJNb29yZSBzZWFyY2guCiAgICAg
ICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9taW5pbXVtU2l6ZSk7CiAKICAgICAgICAgLy8gRklY
TUU6IFN1cHBvcnQgbmVzdGVkIGRpc2p1bmN0aW9ucyAoZS5nLiAvKD86YWJjfGRlZnxnKD86aGl8
amspKS8pLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI4NjE0Ci0gICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNoYXJhY3Rlci1jbGFzcyAoZS5n
LiAvW1xkXXRlc3QvKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODYxMwogICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tZml4ZWQtc2l6
ZWQgbG9va2FoZWFkIChlLmcuIC8uKmFiYy8gYW5kIGV4dHJhY3QgImFiYyIgc2VxdWVuY2UpLgog
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEy
CiAgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2FsdGVybmF0aXZl
czsKQEAgLTM4ODQsMjAgKzM5MjEsNDYgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1
YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAg
ICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uQk9MOgogICAgICAgICAgICAgICAg
IGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkVPTDoKICAgICAgICAgICAgICAgICBj
YXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25Xb3JkQm91bmRhcnk6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hhcmFjdGVyQ2xhc3M6CiAgICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QmFja1JlZmVyZW5jZToKICAgICAgICAgICAg
ICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpGb3J3YXJkUmVmZXJlbmNlOgogICAgICAgICAg
ICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhlc2VzU3VicGF0dGVybjoKICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXRpY2FsQXNzZXJ0
aW9uOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkRvdFN0YXJFbmNs
b3N1cmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Q2hh
cmFjdGVyQ2xhc3M6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0ucXVhbnRpdHlUeXBl
ICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRpdHlNYXhDb3VudCAh
PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGlmICh0ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgY2hhcmFjdGVyQ2xhc3MgPSAqdGVy
bS5jaGFyYWN0ZXJDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0uaW52ZXJ0KCkg
fHwgY2hhcmFjdGVyQ2xhc3MubV9hbnlDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrY3Vy
c29yOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlckNsYXNzLm1fdGFibGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5zZXRBbGwoY3Vyc29yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFy
YWN0ZXJDbGFzcy5tX3Jhbmdlc1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5p
Y29kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVz
VW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRkQ2hh
cmFjdGVycyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlc1VuaWNvZGUpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFyYWN0ZXJD
bGFzcy5tX3Jhbmdlcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3Mu
bV9tYXRjaGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJtSW5mby5hZGRD
aGFyYWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzKTsKKyAgICAgICAgICAg
ICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXR0
ZXJuQ2hhcmFjdGVyOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlw
ZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4Q291bnQg
IT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5pbnB1dFBv
c2l0aW9uICE9IGluZGV4KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmIChV
MTZfTEVOR1RIKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgIT0gMSAmJiBtX2RlY29kZVN1cnJvZ2F0
ZVBhaXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBjYXNlLWlu
c2VzaXRpdmUgY29tcGFyZXMsIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBkaWZmZXJl
bnQKICAgICAgICAgICAgICAgICAgICAgLy8gdXBwZXIgJiBsb3dlciBjYXNlIHJlcHJlc2VudGF0
aW9ucyBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gYSBjaGFyYWN0ZXIgY2xhc3MuCiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9wYXR0ZXJuLmlnbm9yZUNhc2UoKSB8fCBpc0FTQ0lJQWxw
aGEodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSB8fCBpc0Nhbm9uaWNhbGx5VW5pcXVlKHRlcm0ucGF0
dGVybkNoYXJhY3RlciwgbV9jYW5vbmljYWxNb2RlKSk7CkBAIC0zOTA3LDEzICszOTcwLDE1IEBA
IGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJtSW5mby5zZXQoY3Vyc29yLCB0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpOwog
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFs
Ojp2ZXJib3NlLCAiU2hvcnRlbmluZyB0byAiLCBjdXJzb3IpOworICAgICAgICAgICAgICAgIGJt
SW5mby5zaG9ydGVuTGVuZ3RoKGN1cnNvcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFs
Ojp2ZXJib3NlLCAiQ2hhcmFjdGVycyBjb2xsZWN0ZWQiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybiBibUluZm8ubGVuZ3RoKCk7CiAgICAgfQogCiAgICAgY29uc3QgdWlu
dDhfdCogZ2V0Qm95ZXJNb29yZUJ5dGVWZWN0b3IodW5zaWduZWQgaW5kZXgsIGNvbnN0IEJveWVy
TW9vcmVCaXRtYXA6Ok1hcCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmlu
ZGV4IDU5MjliMTJiZjU4ODVhMmRkMDhhMDNkNzA0N2EzMDgzNTNkNTY5ZDEuLjJlMWVlMjk3NjY4
Y2ZkMDllNTgxNGRkMDk3OGYyNDNkMmUyNGM2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBKSVRGYWlsdXJlUmVhc29uIDog
dWludDhfdCB7CiB9OwogCiBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCb3llck1vb3JlQml0bWFwKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RChCb3llck1vb3JlQml0bWFwKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG1hcFNpemUgPSAxMjg7CkBAIC03NSw2ICs3Niw4IEBAIGNsYXNzIEJveWVyTW9vcmVCaXRt
YXAgewogCiAgICAgdm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgeworICAgICAgICBp
ZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9z
aXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOwogICAgICAgICBpZiAocG9zaXRpb24gIT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCiAgICAgICAgICAgICBtX2lzTWFza0VmZmVj
dGl2ZSA9IHRydWU7CkBAIC04NCw2ICs4Nyw0MyBAQCBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsK
ICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhjb25zdCBWZWN0b3I8
VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnMuc2l6ZSgpID49IG1hcFNp
emUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGZvciAoVUNoYXIgY2hhcmFjdGVyIDogY2hhcmFjdGVycykKKyAgICAgICAg
ICAgIGFkZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRkUmFuZ2VzKGNvbnN0IFZl
Y3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlcykKKyAgICB7CisgICAgICAgIGlmIChyYW5nZXMu
c2l6ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoQ2hhcmFjdGVyUmFuZ2UgcmFuZ2UgOiBy
YW5nZXMpIHsKKyAgICAgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UuZW5kIC0g
cmFuZ2UuYmVnaW4gKyAxKSA+PSBtYXBTaXplKSB7CisgICAgICAgICAgICAgICAgc2V0QWxsKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9y
IChVQ2hhcjMyIGNoYXJhY3RlciA9IHJhbmdlLmJlZ2luOyBjaGFyYWN0ZXIgPD0gcmFuZ2UuZW5k
OyArK2NoYXJhY3RlcikKKyAgICAgICAgICAgICAgICBhZGQoY2hhcmFjdGVyKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgc2V0QWxsKCkKKyAgICB7CisgICAgICAgIG1fY291bnQgPSBt
YXBTaXplOworICAgIH0KKworICAgIGJvb2wgaXNBbGxTZXQoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50ID09IG1hcFNpemU7IH0KKwogcHJpdmF0ZToKICAgICBNYXAgbV9tYXAgeyB9OwogICAgIHVu
c2lnbmVkIG1fY291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBiOGVjNTZlYjgwOTIyYTA5N2MyMDJjZWVkOGQ1ZmI3YjUz
ZGY0YjcuLjJlZmI1ZTY4M2RhOThhZTc5MDlhODE3M2ZhNmE0YjQzMjkzODU0NzEgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMjEtMDctMzEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbSlNDXSBZYXJyIEJveWVyTW9vcmUgc2VhcmNoIHNob3VsZCBzdXBwb3J0IGNoYXJh
Y3Rlci1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI4NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9uLWZpeGVkLXNpemUuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtYm0t
c2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHJlZ2V4cC5hLmIuYy5kLmUuZi5nLmguaS5qLmsubC5tLm4uby5w
LnEuci5zLnQudS52LncueC55LnouMC4xLjIuMy40LjUuNi43LjguOS50LnYubi5yKToKKyAgICAg
ICAgKiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6ZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisKIDIwMjEtMDctMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGdyYWRlIHRlc3QyNjIKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtY2hhcmFjdGVyLW5vbi1maXhlZC1zaXpl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9uLWZpeGVk
LXNpemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM0MzcwMTc4N2FlYWQzOTBhY2E2MzczODkyMmZmZjRhMDRl
NjZlMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gt
Y2hhcmFjdGVyLW5vbi1maXhlZC1zaXplLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCits
ZXQgcmVnZXhwID0gL3Nzc3Nzcy4qc3MvOworbGV0IHJlZ2V4cEZhaWwgPSAvb29vb29vLipvby87
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBsZXQgbWF0Y2hlZCA9IGBh
YWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiY2NjY2NjY3BwcHBwcHBw
cHBwcHR0dHR0dHR0dHR0dDw8PDw8PDw8PDw8PDw8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGpqampqampqampzc3Nzc3Mgc3JjPSJoZXkuanMiIHNzSGV5YC5tYXRjaChy
ZWdleHApOworICAgIHNob3VsZEJlKG1hdGNoZWRbMF0sIGBzc3Nzc3Mgc3JjPSJoZXkuanMiIHNz
YCk7CisgICAgbGV0IG5vdE1hdGNoZWQgPSBgYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJi
YmJiYmJiYmJiYmJiYmNjY2NjY2NwcHBwcHBwcHBwcHB0dHR0dHR0dHR0dHQ8PDw8PDw8PDw8PDw8
PGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRqampqampqampqc3Nzc3Nz
IHNyYz0iaGV5LmpzIiBzc0hleWAubWF0Y2gocmVnZXhwRmFpbCk7CisgICAgc2hvdWxkQmUobm90
TWF0Y2hlZCwgbnVsbCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0t
c2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVn
ZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
YzAxNmE1MjdhZDA4ZDY4NDAwMmIyZGFlYzVlZjI1YmUwYmZhYjcyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxl
bmd0aC5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJlZ2V4cCA9IC9hfGJ8Y3xk
fGV8ZnxnfGh8aXxqfGt8bHxtfG58b3xwfHF8cnxzfHR8dXx2fHd8eHx5fHp8MHwxfDJ8M3w0fDV8
Nnw3fDh8OXwgfFx0fFx2fFxufFxyfFwkfFxefFwmfFwqfFwofFwpLworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoYCUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJWApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVn
ZXhwLnRlc3QoYOODhuOCueODiGApLCBmYWxzZSk7CisgICAgc2hvdWxkQmUocmVnZXhwLnRlc3Qo
YHRlc3RpbmdgKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxlZnRDb250ZXh0LCBgYCk7
CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgYGVzdGluZ2ApOworfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6ZS5qcyBi
L0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbm9uLWZpeGVkLXNpemUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTFmYzY2ZDJiYmQyMzg2NDBkYTM1MmFiZDg1YzI1YTU4NmRlY2FkYwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbm9uLWZpeGVkLXNpemUu
anMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2xldCByZWdleHAgPSAvPHNjcmlwdC4qXC8+
L2k7CitsZXQgcmVnZXhwRmFpbCA9IC88c2NyaXBwLipcLz4vaTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTI7ICsraSkgeworICAgIGxldCBtYXRjaGVkID0gYGFhYWFhYWFhYWFhYWFhYWFhYWFi
YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2NjY2NjcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0PDw8
PDw8PDw8PDw8PDxkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkampqampq
ampqajxzY3JpcHQgc3JjPSJoZXkuanMiIC8+SGV5YC5tYXRjaChyZWdleHApOworICAgIHNob3Vs
ZEJlKG1hdGNoZWRbMF0sIGA8c2NyaXB0IHNyYz0iaGV5LmpzIiAvPmApOworICAgIGxldCBub3RN
YXRjaGVkID0gYGFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2Nj
Y2NjcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0PDw8PDw8PDw8PDw8PDxkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkampqampqampqajxzY3JpcHQgc3JjPSJoZXkuanMiIC8+
SGV5YC5tYXRjaChyZWdleHBGYWlsKTsKKyAgICBzaG91bGRCZShub3RNYXRjaGVkLCBudWxsKTsK
K30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434770</attachid>
            <date>2021-08-02 10:55:45 -0700</date>
            <delta_ts>2021-08-02 11:13:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210802105544.patch</filename>
            <type>text/plain</type>
            <size>24353</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTE1OTBmZTZjMWNkYTlhYWM1YTBmN2U3ODM3ZWYwMDMxZTkxZTllLi42MTBjZTljMmYwZWUwNjU1
YzNiNDgxNDlmMjZhYTVmZTc3YjdlMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDIwJS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTQ1LjM1NjEr
LTAuNjk2OCAgICAgXiAgICA0NTEuNjExNystMC40NjEzICAgICAgICBeIGRlZmluaXRlbHkgMS4y
MDc2eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAyJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8
ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxz
ZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy40NzA4MzMg
ICB8MTIzLjU1MDAwMCAgIHwxLjAwMDY0MSAgfCAwLjg0MTYwMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgICAgICAgfDI2Ljg4MzMzMyAgICB8MjYuOTUwMDAwICAgIHwxLjAwMjQ4MCAg
fCAwLjg0NjczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy43MDgz
MzMgICB8MTI3Ljc1NDE2NyAgIHwxLjAwMDM1OSAgfCAwLjkzNDIwNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRvZG9N
VkMgICAgICAgICAgICAgICAgICAgfDUwLjU0NTgzMyAgICB8NTAuNDQ1ODMzICAgIHwwLjk5ODAy
MiAgfCAwLjY3OTYxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjg3
OTE2NyAgICB8MjAuNzkxNjY3ICAgIHwwLjk5NTgwOSAgfCAwLjc5NjU0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICAgfDEzNy40NzkxNjcgICB8MTM3LjI3NTAwMCAgIHwwLjk5
ODUxNSAgfCAwLjcyOTgxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAgfDY5
LjA3OTE2NyAgICB8NjguOTEyNTAwICAgIHwwLjk5NzU4NyAgfCAwLjUyNDMyNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5vLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjYwNDE2NyAgICB8NjYuMTIwODMzICAgIHwx
LjAwNzg3NiAgfCAwLjE0NTU0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDc3LjAyOTE2NyAgICB8NzYuNzA4MzMzICAgIHwwLjk5NTgzNSAgfCAwLjUxODU2MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFy
Mi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjUxNjY2NyAgICB8NDAuODEyNTAwICAg
IHwxLjAwNzMwMiAgfCAwLjUxMzM4NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgfDU0Ljc2MjUwMCAgICB8NTQuODk1ODMzICAgIHwxLjAwMjQzNSAgfCAwLjY0NzM4MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBqUXVl
cnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI1NS45NTAwMDAgICB8MjUwLjQyNTAw
MCAgIHwwLjk3ODQxNCAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAg
ICAgICAgfDM0MS43NDU4MzMgICB8MzQyLjgwNDE2NyAgIHwxLjAwMzA5NyAgfCAwLjIxOTkzNyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBS
ZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4Ljg1NDE2NyAgICB8ODguNzAw
MDAwICAgIHwwLjk5ODI2NSAgfCAwLjU2ODQwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgfDE1MS4yNjY2NjcgICB8MTUwLjgwNDE2NyAgIHwwLjk5Njk0MiAgfCAwLjI1NjQw
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1Ljc4MzMzMyAgICB8NjUu
NjQ1ODMzICAgIHwwLjk5NzkxMCAgfCAwLjQzNzQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgYSBtZWFuID0gMjQ2LjUyODk4CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODUxMjgKKyAg
ICAgICAgICAgIHBWYWx1ZSA9IDAuMzkyNzMzMDI3OAorICAgICAgICAgICAgKEJpZ2dlciBtZWFu
cyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDAxIHRpbWVzIGJldHRlcgorICAgICAgICAg
ICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2hvcnRlbkxlbmd0aCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRBbGwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6YWRkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6
OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRSYW5nZXMpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlSW5mbzo6aW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1v
b3JlSW5mbzo6c2V0SW5kZXgpOgorICAgICAgICAqIHlhcnIvWWFyckpJVC5oOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGQpOgorICAgICAgICAoSlNDOjpZYXJyOjpC
b3llck1vb3JlQml0bWFwOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95
ZXJNb29yZUJpdG1hcDo6YWRkUmFuZ2VzKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29y
ZUJpdG1hcDo6c2V0QWxsKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6
aXNBbGxTZXQgY29uc3QpOgorCiAyMDIxLTA4LTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgdXNlIEJpdG1hcCBpbnN0ZWFk
IG9mIEJ5dGVWZWN0b3IgZm9yIEJveWVyTW9vcmUgc2VhcmNoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJKSVQuY3BwCmluZGV4IGRlMmVlYWFkOGIyYThlNGRiZDQ4ZWNjNjdjYjg0ODY3Y2Rj
ZjVkYjkuLjJkYWQ5NTY1YmMzYjYyNDc4ZTQ2NjkzMjYwYzI4NGFmOWJjM2ZjMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC02MywxMiArNjMsMzggQEAgY2xhc3Mg
Qm95ZXJNb29yZUluZm8gewogICAgIH0KIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2hhcmFjdGVycy5zaXplKCk7IH0KKyAgICB2b2lkIHNob3J0ZW5MZW5ndGgodW5z
aWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0aCA8PSB0aGlzLT5sZW5n
dGgoKSk7CisgICAgICAgIG1fY2hhcmFjdGVycy5zaHJpbmsobGVuZ3RoKTsKKyAgICB9CiAKICAg
ICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgewogICAg
ICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIpOwogICAgIH0KIAorICAgIHZv
aWQgc2V0QWxsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzW2lu
ZGV4XS5zZXRBbGwoKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZENoYXJhY3RlcnModW5zaWduZWQg
aW5kZXgsIGNvbnN0IFZlY3RvcjxVQ2hhcjMyPiYgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAg
IG1fY2hhcmFjdGVyc1tpbmRleF0uYWRkQ2hhcmFjdGVycyhjaGFyYWN0ZXJzKTsKKyAgICB9CisK
KyAgICB2b2lkIGFkZFJhbmdlcyh1bnNpZ25lZCBpbmRleCwgY29uc3QgVmVjdG9yPENoYXJhY3Rl
clJhbmdlPiYgcmFuZ2UpCisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZFJh
bmdlcyhyYW5nZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9CisgICAgdm9pZCBzZXRJbmRleCh1bnNpZ25lZCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIG1faW5kZXggPSBpbmRleDsKKyAgICB9CisKICAgICBzdGF0aWMgVW5pcXVlUmVmPEJv
eWVyTW9vcmVJbmZvPiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8Qm95ZXJNb29yZUluZm8+KGxlbmd0aCk7CkBAIC0yMzgxLDYgKzI0
MDcsMTIgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIFtt
YXAsIGlzTWFza0VmZmVjdGl2ZV0gPSBvcC5tX2JtSW5mby0+Y3JlYXRlQ2FuZGlkYXRlQml0bWFw
KGJlZ2luSW5kZXgsIGVuZEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG1hcENvdW50ID0gbWFwLmNvdW50KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBj
YW5kaWF0ZSBjaGFyYWN0ZXJzIGFyZSA8PSAyLCBjaGVja2luZyBlYWNoIGlzIGJldHRlciB0aGFu
IHVzaW5nIHZlY3Rvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG91dE9mTGVu
Z3RoRmFpbHVyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1hdGNoZWQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJySklUSW50ZXJuYWw6OnZlcmJv
c2UsICJCTSBCaXRtYXAgaXMgIiwgbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBh
dHRlcm5zIGxpa2UgL1tdLyBoYXZlIHplcm8gY2FuZGlkYXRlcy4gU2luY2UgaXQgaXMgcmFyZSwg
d2UgZG8gbm90IGRvIG5vdGhpbmcgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghbWFwQ291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPD0gMikgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyMSA9IG1hcC5maW5kQml0KDAsIHRydWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXIxICE9IEJveWVyTW9vcmVC
aXRtYXA6Ok1hcDo6c2l6ZSgpKTsKQEAgLTIzOTEsNyArMjQyMyw2IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlUmVnRXhwQ29tcGlsYXRpb24oKSwgIkZv
dW5kIDEtb3ItMiBjaGFyYWN0ZXJzIGxvb2thaGVhZCBjaGFyYWN0ZXI6KDB4IiwgaGV4KGNoYXJh
Y3RlcjEpLCAiKSxjaGFyYWN0ZXIyOigiLCBoZXgoY2hhcmFjdGVyMiksICIpLGlzTWFza0VmZmVj
dGl2ZTooIiwgaXNNYXNrRWZmZWN0aXZlLCIpLHJhbmdlOlsiLCBiZWdpbkluZGV4LCAiLCAiLCBl
bmRJbmRleCwgIikiKTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXBMaXN0IG1h
dGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBsb29wSGVhZCA9IGxhYmVs
KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZENoYXJhY3RlcihtX2NoZWNrZWRP
ZmZzZXQgLSBlbmRJbmRleCArIDEsIHJlZ1QwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNNYXNrRWZmZWN0aXZlKQpAQCAtMjM5OSw5ICsyNDMwLDggQEAgY2xhc3MgWWFyckdl
bmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxl
ciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNoMzIo
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoY2hhcmFjdGVyMSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobWFwQ291bnQgPT0gMikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNoMzIoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1t
MzIoY2hhcmFjdGVyMikpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBz
LmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dE9mTGVuZ3RoRmFpbHVyZS5hcHBlbmQoanVt
cElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8q
IHBvaW50ZXIgPSBnZXRCb3llck1vb3JlQml0bWFwKG1hcCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCks
ICJGb3VuZCBiaXRtYXAgbG9va2FoZWFkIGNvdW50OigiLCBtYXBDb3VudCwgIikscmFuZ2U6WyIs
IGJlZ2luSW5kZXgsICIsICIsIGVuZEluZGV4LCAiKSIpOwpAQCAtMjQxNiw3ICsyNDQ2LDcgQEAg
Y2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdFVuc2ln
bmVkQml0ZmllbGQzMihyZWdUMCwgVHJ1c3RlZEltbTMyKDYpLCBUcnVzdGVkSW1tMzIoMSksIHJl
Z1QyKTsgLy8gRXh0cmFjdCAxIGJpdCBmb3IgaW5kZXguCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZDY0KEJhc2VJbmRleChyZWdUMSwgcmVnVDIsIFRpbWVzRWlnaHQpLCByZWdUMik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJzaGlmdDY0KHJlZ1QwLCByZWdUMik7IC8v
IFdlIGNhbiBpZ25vcmUgdXBwZXIgYml0cyBhbmQgb25seSBsb3dlciA2Yml0cyBhcmUgZWZmZWN0
aXZlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5jaFRl
c3Q2NChOb25aZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDIsIFRy
dXN0ZWRJbW0zMigxKSkpOwogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihCb3llck1vb3JlQml0bWFwOjpNYXA6OldvcmRU
eXBlKSA9PSBzaXplb2YodWludDY0X3QpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfYXNzZXJ0KDEgPDwgNiA9PSA2NCk7CkBAIC0yNDI1LDcgKzI0NTUsNyBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cnNoaWZ0MzIoVHJ1c3RlZElt
bTMyKDYpLCByZWdUMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kMzIoVHJ1c3Rl
ZEltbTMyKDEpLCByZWdUMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDY0KEJh
c2VJbmRleChyZWdUMSwgcmVnVDIsIFRpbWVzRWlnaHQpLCByZWdUMik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdEJpdDY0KE5vblplcm8sIHJl
Z1QyLCByZWdUMCk7IC8vIFdlIGNhbiBpZ25vcmUgdXBwZXIgYml0cyBzaW5jZSBtb2R1bG8tNjQg
aXMgcGVyZm9ybWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5k
KGJyYW5jaFRlc3RCaXQ2NChOb25aZXJvLCByZWdUMiwgcmVnVDApKTsgLy8gV2UgY2FuIGlnbm9y
ZSB1cHBlciBiaXRzIHNpbmNlIG1vZHVsby02NCBpcyBwZXJmb3JtZWQuCiAjZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJveWVyTW9vcmVCaXRt
YXA6Ok1hcDo6V29yZFR5cGUpID09IHNpemVvZih1aW50MzJfdCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCA1ID09IDMyKTsKQEAgLTI0MzUsMTQgKzI0
NjUsMzAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywg
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5k
MzIoVHJ1c3RlZEltbTMyKDBiMTEpLCByZWdUMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMSwgcmVnVDIsIFRpbWVzRm91ciksIHJlZ1QyKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1cnNoaWZ0MzIocmVnVDAsIHJlZ1QyKTsgLy8gV2Ug
Y2FuIGlnbm9yZSB1cHBlciBiaXRzIGFuZCBvbmx5IGxvd2VyIDViaXRzIGFyZSBlZmZlY3RpdmUu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBtYXRjaGVkID0gYnJhbmNoVGVzdDMy
KE5vblplcm8sIHJlZ1QyLCBUcnVzdGVkSW1tMzIoMSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMiwgVHJ1c3Rl
ZEltbTMyKDEpKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1
bXBzLmFwcGVuZChqdW1wSWZOb0F2YWlsYWJsZUlucHV0KGVuZEluZGV4IC0gYmVnaW5JbmRleCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dE9mTGVuZ3RoRmFpbHVyZS5hcHBlbmQo
anVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqdW1wKCkubGlua1RvKGxvb3BIZWFkLCB0aGlzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxpbmsodGhpcyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJu
IHNpemUgaXMgbm90IGZpeGVkLCB0aGVuIHN0b3JlIHRoZSBzdGFydCBpbmRleCBmb3IgdXNlIGlm
IHdlIG1hdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBh
ZGp1c3RpbmcgbWF0Y2gtc3RhcnQgd2hlbiB3ZSBmYWlsZWQgdG8gZmluZCB0aGUgc3RhcnQgd2l0
aCBCb3llck1vb3JlIHNlYXJjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0
ZXJuLm1fYm9keS0+bV9oYXNGaXhlZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRPZkxlbmd0aEZhaWx1cmUubGluayh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW92ZShpbmRleCwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWIzMihJbW0zMihhbHRlcm5hdGl2ZS0+bV9taW5pbXVtU2l6ZSksIHJlZ1Qw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWF0Y2hTdGFydChyZWdUMCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wLm1fanVtcHMuYXBwZW5kKGp1bXAoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChv
dXRPZkxlbmd0aEZhaWx1cmUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmxp
bmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0dGVybiBzaXpl
IGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVzZSBpZiB3ZSBt
YXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYWRqdXN0
aW5nIG1hdGNoLXN0YXJ0IHdoZW4gd2Ugc3RhcnQgcGF0dGVybiBtYXRjaGluZyB3aXRoIHRoZSB1
cGRhdGVkIGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBCb3llck1vb3JlIHNl
YXJjaC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYXR0ZXJuLm1fYm9keS0+bV9o
YXNGaXhlZFNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWx0ZXJuYXRp
dmUtPm1fbWluaW11bVNpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92
ZShpbmRleCwgcmVnVDApOwpAQCAtMzg0Miw3ICszODg4LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRv
ciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAg
ICAgICAgIC8vIGl0IGZhaWxzIHdoZW4gdGhlIGJvZHkgYWx0ZXJuYXRpdmVzIGZhaWwgdG8gbWF0
Y2ggd2l0aCB0aGUgY3VycmVudCBvZmZzZXQuCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHVu
aWNvZGUgZmxhZy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyODYxMQotICAgICAgICBpZiAoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUgJiYg
ZGlzanVuY3Rpb24tPm1faGFzRml4ZWRTaXplICYmICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1f
cGF0dGVybi51bmljb2RlKCkpIHsKKyAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1T
aXplICYmICFtX3BhdHRlcm4uc3RpY2t5KCkgJiYgIW1fcGF0dGVybi51bmljb2RlKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gYm1JbmZvID0gQm95ZXJNb29yZUluZm86OmNyZWF0ZShzdGQ6Om1pbjx1
bnNpZ25lZD4oZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUsIEJveWVyTW9vcmVJbmZvOjptYXhM
ZW5ndGgpKTsKICAgICAgICAgICAgIGlmIChjb2xsZWN0Qm95ZXJNb29yZUluZm8oZGlzanVuY3Rp
b24sIGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4LCBibUluZm8uZ2V0KCkpKSB7CiAgICAgICAgICAg
ICAgICAgbV9vcHMubGFzdCgpLm1fYm1JbmZvID0gYm1JbmZvLnB0cigpOwpAQCAtMzg5MCwxMyAr
MzkzNiwxMCBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZv
LCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgLy8gV2UgZmlyc3QgY29sbGVjdCBw
b3NzaWJsZSBjaGFyYWN0ZXJzIGZvciBlYWNoIGNoYXJhY3RlciBwb3NpdGlvbi4gVGhlbiwgYXBw
bHkgaGV1cmlzdGljcyB0byBleHRyYWN0IGdvb2QgY2hhcmFjdGVyIHNlcXVlbmNlIGZyb20KICAg
ICAgICAgLy8gdGhhdCBhbmQgY29uc3RydWN0IGZhc3Qgc2VhcmNoaW5nIHdpdGggbG9uZyBzdHJp
ZGUuCiAKLSAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSk7IC8vIFdl
IG9ubHkgc3VwcG9ydCBmaXhlZC1zaXplZCBsb29rYWhlYWQgZm9yIEJveWVyTW9vcmUgc2VhcmNo
LgogICAgICAgICBBU1NFUlQoZGlzanVuY3Rpb24tPm1fbWluaW11bVNpemUpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IG5lc3RlZCBkaXNqdW5jdGlvbnMgKGUuZy4gLyg/OmFiY3xkZWZ8
Zyg/OmhpfGprKSkvKS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODYxNAotICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjaGFyYWN0ZXItY2xh
c3MgKGUuZy4gL1tcZF10ZXN0LykuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjg2MTMKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLWZp
eGVkLXNpemVkIGxvb2thaGVhZCAoZS5nLiAvLiphYmMvIGFuZCBleHRyYWN0ICJhYmMiIHNlcXVl
bmNlKS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyODYxMgogICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRl
cm5hdGl2ZXM7CkBAIC0zOTA5LDIwICszOTUyLDQ2IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmlu
YWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbkJPTDoKICAgICAgICAg
ICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25FT0w6CiAgICAgICAgICAg
ICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uV29yZEJvdW5kYXJ5OgotICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkNoYXJhY3RlckNsYXNzOgogICAg
ICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkJhY2tSZWZlcmVuY2U6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6Rm9yd2FyZFJlZmVyZW5jZToKICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpQYXJlbnRoZXNlc1N1YnBhdHRl
cm46CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGV0aWNh
bEFzc2VydGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpEb3RT
dGFyRW5jbG9zdXJlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5
cGU6OkNoYXJhY3RlckNsYXNzOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyVHlwZTo6Rml4ZWRDb3VudCB8fCB0ZXJtLnF1YW50aXR5TWF4
Q291bnQgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBpZiAodGVybS5pbnB1dFBvc2l0aW9uICE9IGluZGV4KQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIGNoYXJhY3RlckNsYXNz
ID0gKnRlcm0uY2hhcmFjdGVyQ2xhc3M7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLmlu
dmVydCgpIHx8IGNoYXJhY3RlckNsYXNzLm1fYW55Q2hhcmFjdGVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBibUluZm8uc2V0QWxsKGN1cnNvcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJDbGFzcy5tX3Rh
YmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0QWxsKGN1cnNvcik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
ICghY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXNVbmljb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJtSW5mby5hZGRSYW5nZXMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX3Jh
bmdlc1VuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3RlckNsYXNzLm1f
bWF0Y2hlc1VuaWNvZGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZv
LmFkZENoYXJhY3RlcnMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXNVbmljb2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFzcy5tX3Jhbmdlcy5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUluZm8uYWRkUmFuZ2VzKGN1cnNvciwgY2hh
cmFjdGVyQ2xhc3MubV9yYW5nZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNoYXJhY3Rl
ckNsYXNzLm1fbWF0Y2hlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBibUlu
Zm8uYWRkQ2hhcmFjdGVycyhjdXJzb3IsIGNoYXJhY3RlckNsYXNzLm1fbWF0Y2hlcyk7CisgICAg
ICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlw
ZTo6UGF0dGVybkNoYXJhY3RlcjogewogICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5xdWFu
dGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0eU1h
eENvdW50ICE9IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
aW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoVTE2X0xFTkdUSCh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpICE9IDEgJiYgbV9kZWNvZGVT
dXJyb2dhdGVQYWlycykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAvLyBGb3Ig
Y2FzZS1pbnNlc2l0aXZlIGNvbXBhcmVzLCBub24tYXNjaWkgY2hhcmFjdGVycyB0aGF0IGhhdmUg
ZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgIC8vIHVwcGVyICYgbG93ZXIgY2FzZSByZXBy
ZXNlbnRhdGlvbnMgYXJlIGFscmVhZHkgY29udmVydGVkIHRvIGEgY2hhcmFjdGVyIGNsYXNzLgog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGF0dGVybi5pZ25vcmVDYXNlKCkgfHwgaXNB
U0NJSUFscGhhKHRlcm0ucGF0dGVybkNoYXJhY3RlcikgfHwgaXNDYW5vbmljYWxseVVuaXF1ZSh0
ZXJtLnBhdHRlcm5DaGFyYWN0ZXIsIG1fY2Fub25pY2FsTW9kZSkpOwpAQCAtMzkzMiwxMyArNDAw
MSwxNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBw
cml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICBibUluZm8uc2V0KGN1cnNvciwgdGVybS5wYXR0ZXJuQ2hhcmFj
dGVyKTsKICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJ
bnRlcm5hbDo6dmVyYm9zZSwgIlNob3J0ZW5pbmcgdG8gIiwgY3Vyc29yKTsKKyAgICAgICAgICAg
ICAgICBibUluZm8uc2hvcnRlbkxlbmd0aChjdXJzb3IpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGRhdGFMb2dMbklmKFlhcnJKSVRJ
bnRlcm5hbDo6dmVyYm9zZSwgIkNoYXJhY3RlcnMgY29sbGVjdGVkIik7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gYm1JbmZvLmxlbmd0aCgpOwogICAgIH0KIAogICAgIGNv
bnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1hcDo6V29yZFR5cGUqIGdldEJveWVyTW9vcmVCaXRtYXAo
Y29uc3QgQm95ZXJNb29yZUJpdG1hcDo6TWFwJiBtYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJySklULmgKaW5kZXggNTg5Zjg2MzMyZmIzNTI0MTQzZjdiMjI5MTYwNzEyNDliMDBiNmRjOS4u
OGQ0MWZkNjdjYTVlNzMwMGJmMDg1YmQ0ZTBmNTE0YzEyYmRlZGY4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtNjEsNiArNjEsNyBAQCBlbnVtIGNsYXNzIEpJVEZhaWx1
cmVSZWFzb24gOiB1aW50OF90IHsKIH07CiAKIGNsYXNzIEJveWVyTW9vcmVCaXRtYXAgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJveWVyTW9vcmVCaXRtYXApOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEKEJveWVyTW9vcmVCaXRtYXApOwogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgbWFwU2l6ZSA9IDEyODsKQEAgLTc1LDYgKzc2LDggQEAgY2xhc3MgQm95
ZXJNb29yZUJpdG1hcCB7CiAKICAgICB2b2lkIGFkZChVQ2hhcjMyIGNoYXJhY3RlcikKICAgICB7
CisgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IGNoYXJhY3RlciAmIG1hcE1hc2s7CiAgICAgICAgIGlmIChwb3Np
dGlvbiAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hhcmFjdGVyKSkKICAgICAgICAgICAgIG1f
aXNNYXNrRWZmZWN0aXZlID0gdHJ1ZTsKQEAgLTg0LDYgKzg3LDQzIEBAIGNsYXNzIEJveWVyTW9v
cmVCaXRtYXAgewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzKGNv
bnN0IFZlY3RvcjxVQ2hhcjMyPiYgY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIGlmIChpc0Fs
bFNldCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoY2hhcmFjdGVycy5zaXpl
KCkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChVQ2hhciBjaGFyYWN0ZXIgOiBjaGFyYWN0ZXJz
KQorICAgICAgICAgICAgYWRkKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhZGRSYW5n
ZXMoY29uc3QgVmVjdG9yPENoYXJhY3RlclJhbmdlPiYgcmFuZ2VzKQorICAgIHsKKyAgICAgICAg
aWYgKHJhbmdlcy5zaXplKCkgPj0gbWFwU2l6ZSkgeworICAgICAgICAgICAgc2V0QWxsKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChDaGFyYWN0ZXJSYW5n
ZSByYW5nZSA6IHJhbmdlcykgeworICAgICAgICAgICAgaWYgKGlzQWxsU2V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YW5nZS5lbmQgLSByYW5nZS5iZWdpbiArIDEpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgICAg
ICBzZXRBbGwoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBmb3IgKFVDaGFyMzIgY2hhcmFjdGVyID0gcmFuZ2UuYmVnaW47IGNoYXJhY3RlciA8
PSByYW5nZS5lbmQ7ICsrY2hhcmFjdGVyKQorICAgICAgICAgICAgICAgIGFkZChjaGFyYWN0ZXIp
OworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRBbGwoKQorICAgIHsKKyAgICAgICAg
bV9jb3VudCA9IG1hcFNpemU7CisgICAgfQorCisgICAgYm9vbCBpc0FsbFNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fY291bnQgPT0gbWFwU2l6ZTsgfQorCiBwcml2YXRlOgogICAgIE1hcCBtX21hcCB7
IH07CiAgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGI4ZWM1NmViODA5MjJhMDk3YzIwMmNl
ZWQ4ZDVmYjdiNTNkZjRiNy4uMWRkYzVjNzU5NTdhODIwNmJlYTMxOGI5ZGYzZWNmYTJjYTQzMzJh
YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1
cHBvcnQgY2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHN0cmVzcy9yZWdleHAtYm0tc2VhcmNoLWNoYXJhY3Rlci1ub24tZml4
ZWQtc2l6ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICogc3RyZXNz
L3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAocmVnZXhwLmEuYi5jLmQuZS5mLmcuaC5pLmou
ay5sLm0ubi5vLnAucS5yLnMudC51LnYudy54Lnkuei4wLjEuMi4zLjQuNS42LjcuOC45LnQudi5u
LnIpOgorICAgICAgICAqIHN0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW5vbi1maXhlZC1zaXplLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAyMS0wNy0yOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZ3JhZGUgdGVzdDI2Mgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9u
LWZpeGVkLXNpemUuanMgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLWNoYXJhY3Rl
ci1ub24tZml4ZWQtc2l6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzQzNzAxNzg3YWVhZDM5MGFjYTYzNzM4
OTIyZmZmNGEwNGU2NmUzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhw
LWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9uLWZpeGVkLXNpemUuanMKQEAgLTAsMCArMSwxNCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2xldCByZWdleHAgPSAvc3Nzc3NzLipzcy87CitsZXQgcmVnZXhwRmFpbCA9IC9v
b29vb28uKm9vLzsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIGxldCBt
YXRjaGVkID0gYGFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2Nj
Y2NjcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0PDw8PDw8PDw8PDw8PDxkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkampqampqampqanNzc3NzcyBzcmM9ImhleS5qcyIgc3NI
ZXlgLm1hdGNoKHJlZ2V4cCk7CisgICAgc2hvdWxkQmUobWF0Y2hlZFswXSwgYHNzc3NzcyBzcmM9
ImhleS5qcyIgc3NgKTsKKyAgICBsZXQgbm90TWF0Y2hlZCA9IGBhYWFhYWFhYWFhYWFhYWFhYWFh
YmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiY2NjY2NjY3BwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dDw8
PDw8PDw8PDw8PDw8ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGpqampq
ampqampzc3Nzc3Mgc3JjPSJoZXkuanMiIHNzSGV5YC5tYXRjaChyZWdleHBGYWlsKTsKKyAgICBz
aG91bGRCZShub3RNYXRjaGVkLCBudWxsKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3JlZ2V4cC1ibS1zZWFyY2gtbWFueS1jYW5kaWRhdGUtemVyby1sZW5ndGguanMgYi9KU1Rlc3Rz
L3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJjMDE2YTUyN2FkMDhkNjg0MDAyYjJkYWVjNWVmMjViZTBiZmFiNzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlk
YXRlLXplcm8tbGVuZ3RoLmpzCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgcmVnZXhw
ID0gL2F8YnxjfGR8ZXxmfGd8aHxpfGp8a3xsfG18bnxvfHB8cXxyfHN8dHx1fHZ8d3x4fHl8enww
fDF8MnwzfDR8NXw2fDd8OHw5fCB8XHR8XHZ8XG58XHJ8XCR8XF58XCZ8XCp8XCh8XCkvCisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBzaG91bGRCZShyZWdleHAudGVzdChg
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlYCksIGZhbHNlKTsKKyAgICBz
aG91bGRCZShyZWdleHAudGVzdChg44OG44K544OIYCksIGZhbHNlKTsKKyAgICBzaG91bGRCZShy
ZWdleHAudGVzdChgdGVzdGluZ2ApLCB0cnVlKTsKKyAgICBzaG91bGRCZShSZWdFeHAubGVmdENv
bnRleHQsIGBgKTsKKyAgICBzaG91bGRCZShSZWdFeHAucmlnaHRDb250ZXh0LCBgZXN0aW5nYCk7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9yZWdleHAtYm0tc2VhcmNoLW5vbi1maXhl
ZC1zaXplLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MWZjNjZkMmJiZDIzODY0MGRhMzUyYWJkODVjMjVhNTg2ZGVjYWRj
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24t
Zml4ZWQtc2l6ZS5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworbGV0IHJlZ2V4cCA9IC88
c2NyaXB0LipcLz4vaTsKK2xldCByZWdleHBGYWlsID0gLzxzY3JpcHAuKlwvPi9pOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgbGV0IG1hdGNoZWQgPSBgYWFhYWFhYWFh
YWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmNjY2NjY2NwcHBwcHBwcHBwcHB0dHR0
dHR0dHR0dHQ8PDw8PDw8PDw8PDw8PGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRqampqampqampqPHNjcmlwdCBzcmM9ImhleS5qcyIgLz5IZXlgLm1hdGNoKHJlZ2V4cCk7
CisgICAgc2hvdWxkQmUobWF0Y2hlZFswXSwgYDxzY3JpcHQgc3JjPSJoZXkuanMiIC8+YCk7Cisg
ICAgbGV0IG5vdE1hdGNoZWQgPSBgYWFhYWFhYWFhYWFhYWFhYWFhYWJiYmJiYmJiYmJiYmJiYmJi
YmJiYmJiYmNjY2NjY2NwcHBwcHBwcHBwcHB0dHR0dHR0dHR0dHQ8PDw8PDw8PDw8PDw8PGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRqampqampqampqPHNjcmlwdCBzcmM9
ImhleS5qcyIgLz5IZXlgLm1hdGNoKHJlZ2V4cEZhaWwpOworICAgIHNob3VsZEJlKG5vdE1hdGNo
ZWQsIG51bGwpOworfQo=
</data>
<flag name="commit-queue"
          id="457343"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434773</attachid>
            <date>2021-08-02 11:12:03 -0700</date>
            <delta_ts>2021-08-02 16:06:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228613-20210802111202.patch</filename>
            <type>text/plain</type>
            <size>24129</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
OTE1OTBmZTZjMWNkYTlhYWM1YTBmN2U3ODM3ZWYwMDMxZTkxZTllLi42MzhmMmUyNTk4NTQyN2E5
YmQzZWQwYWM4ZmU5MWIxZWI3M2FkOTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OSBAQAorMjAyMS0wOC0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFlhcnIgQm95ZXJNb29yZSBzZWFyY2ggc2hvdWxkIHN1cHBvcnQg
Y2hhcmFjdGVyLWNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjg2MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgY2hhcmFjdGVyLWNsYXNzIHN1cHBvcnQgZm9yIEJveWVy
TW9vcmUgbG9va2FoZWFkIHNlYXJjaCBpbiBZYXJyLgorICAgICAgICBDdXJyZW50bHksIHdlIG9u
bHkgc3VwcG9ydCBmaXhlZC1zaXplZCBjaGFyYWN0ZXItY2xhc3MuIFdlIGNhbiBleHRlbmQgaXQg
Zm9yIHJlcGVhdCBjYXNlcyBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgIFRvIGFwcGx5IHRoaXMg
Y2hhcmFjdGVyLWNsYXNzIHRoaW5nIHRvIGpRdWVyeSdzIFJlZ0V4cCwgd2UgYWxzbyBhbGxvdyBu
b24tZml4ZWQtc2l6ZWQgZGlzanVuY3Rpb24uCisgICAgICAgIEZvciBleGFtcGxlLCAvYWFhYS4q
fGJiYmIvJ3MgZGlzanVuY3Rpb24gaXMgbm90IGZpeGVkLXNpemVkLiBCdXQgc3RpbGwgd2UgY2Fu
IHVzZSAoYWFhYXxiYmJiKSBwcmVmaXggc2luY2UKKyAgICAgICAgdGhpcyBwYXJ0IGlzIGZpeGVk
LXNpemVkIGFuZCB3ZSBrbm93IG1pbmltdW0tc2l6ZSBvZiB0aGlzIGRpc2p1bmN0aW9uIGlzIDQu
CisKKyAgICAgICAgUGx1cywgaW5zdGVhZCBvZiBnaXZpbmcgdXAgQm95ZXJNb29yZSBzZWFyY2gg
d2hlbiB3ZSBmb3VuZCBub24tc3VwcG9ydGVkIHRlcm1zLCB3ZSBzaG9ydGVuIEJveWVyTW9vcmUg
c2VhcmNoCisgICAgICAgIGxlbmd0aCBub3QgdG8gaW5jbHVkZSB0aGlzIHRlcm0gc28gdGhhdCB3
ZSBjYW4gc3RpbGwgaGF2ZSBhIGNoYW5jZSB0byBsZXZlcmFnZSBCb3llck1vb3JlIHNlYXJjaC4g
SW4gdGhlIGNhc2UKKyAgICAgICAgb2YgL2FhYWF8YmJiYnxjY2MoZHxlfGYpLywgd2UgcHJldmlv
dXNseSBnYXZlIHVwIHNpbmNlIGl0IGZpbmRzIGAoZHxlfGYpYC4gQnV0IG5vdywgaW5zdGVhZCB3
ZSBzaG9ydGVuIHRoZSBsZW5ndGgKKyAgICAgICAgZnJvbSA0IHRvIDMsIGFuZCBjb25zdHJ1Y3Qg
c2VhcmNoIHBhdHRlcm4gd2l0aCBgYWFhfGJiYnxjY2NgLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aW1wcm92ZXMganF1ZXJ5LXRvZG9tdmMtcmVnZXhwIGJ5IDIwJS4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgIFBh
dGNoZWQKKworICAgICAgICAgICAganF1ZXJ5LXRvZG9tdmMtcmVnZXhwICAgICAgNTQ1LjM1NjEr
LTAuNjk2OCAgICAgXiAgICA0NTEuNjExNystMC40NjEzICAgICAgICBeIGRlZmluaXRlbHkgMS4y
MDc2eCBmYXN0ZXIKKworICAgICAgICBUaGlzIGltcHJvdmVzIFNwZWVkb21ldGVyMi9qUXVlcnkt
VG9kb01WQyBieSAyJS4KKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgIHN1YnRlc3QgICAgICAgICAgICAgICAgfCAgICAgbXMgICAgICB8
ICAgICBtcyAgICAgIHwgIGIgLyBhICAgfCBwVmFsdWUgKHNpZ25pZmljYW5jZSB1c2luZyBGYWxz
ZSBEaXNjb3ZlcnkgUmF0ZSkgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAg
ICAgICAgfCBFbG0tVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgICAgfDEyMy40NzA4MzMg
ICB8MTIzLjU1MDAwMCAgIHwxLjAwMDY0MSAgfCAwLjg0MTYwMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBWdWVKUy1Ub2RvTVZDICAgICAg
ICAgICAgICAgICAgICAgICAgfDI2Ljg4MzMzMyAgICB8MjYuOTUwMDAwICAgIHwxLjAwMjQ4MCAg
fCAwLjg0NjczMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgfCBFbWJlckpTLVRvZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDEyNy43MDgz
MzMgICB8MTI3Ljc1NDE2NyAgIHwxLjAwMDM1OSAgfCAwLjkzNDIwNiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBCYWNrYm9uZUpTLVRvZG9N
VkMgICAgICAgICAgICAgICAgICAgfDUwLjU0NTgzMyAgICB8NTAuNDQ1ODMzICAgIHwwLjk5ODAy
MiAgfCAwLjY3OTYxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgfCBQcmVhY3QtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDIwLjg3
OTE2NyAgICB8MjAuNzkxNjY3ICAgIHwwLjk5NTgwOSAgfCAwLjc5NjU0MSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFySlMtVG9k
b01WQyAgICAgICAgICAgICAgICAgICAgfDEzNy40NzkxNjcgICB8MTM3LjI3NTAwMCAgIHwwLjk5
ODUxNSAgfCAwLjcyOTgxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgfCBWYW5pbGxhLUVTMjAxNS1Ub2RvTVZDICAgICAgICAgICAgICAgfDY5
LjA3OTE2NyAgICB8NjguOTEyNTAwICAgIHwwLjk5NzU4NyAgfCAwLjUyNDMyNSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBJbmZlcm5vLVRv
ZG9NVkMgICAgICAgICAgICAgICAgICAgICAgfDY1LjYwNDE2NyAgICB8NjYuMTIwODMzICAgIHwx
LjAwNzg3NiAgfCAwLjE0NTU0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgfCBGbGlnaHQtVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAg
fDc3LjAyOTE2NyAgICB8NzYuNzA4MzMzICAgIHwwLjk5NTgzNSAgfCAwLjUxODU2MiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBBbmd1bGFy
Mi1UeXBlU2NyaXB0LVRvZG9NVkMgICAgICAgICAgfDQwLjUxNjY2NyAgICB8NDAuODEyNTAwICAg
IHwxLjAwNzMwMiAgfCAwLjUxMzM4NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgfCBWYW5pbGxhSlMtVG9kb01WQyAgICAgICAgICAgICAgICAg
ICAgfDU0Ljc2MjUwMCAgICB8NTQuODk1ODMzICAgIHwxLjAwMjQzNSAgfCAwLjY0NzM4MSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBqUXVl
cnktVG9kb01WQyAgICAgICAgICAgICAgICAgICAgICAgfDI1NS45NTAwMDAgICB8MjUwLjQyNTAw
MCAgIHwwLjk3ODQxNCAgfCAwLjAwMDAwMCAoc2lnbmlmaWNhbnQpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgfCBFbWJlckpTLURlYnVnLVRvZG9NVkMgICAgICAgICAg
ICAgICAgfDM0MS43NDU4MzMgICB8MzQyLjgwNDE2NyAgIHwxLjAwMzA5NyAgfCAwLjIxOTkzNyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBS
ZWFjdC1Ub2RvTVZDICAgICAgICAgICAgICAgICAgICAgICAgfDg4Ljg1NDE2NyAgICB8ODguNzAw
MDAwICAgIHwwLjk5ODI2NSAgfCAwLjU2ODQwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICAgfCBSZWFjdC1SZWR1eC1Ub2RvTVZDICAgICAgICAg
ICAgICAgICAgfDE1MS4yNjY2NjcgICB8MTUwLjgwNDE2NyAgIHwwLjk5Njk0MiAgfCAwLjI1NjQw
MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAg
fCBWYW5pbGxhLUVTMjAxNS1CYWJlbC1XZWJwYWNrLVRvZG9NVkMgfDY1Ljc4MzMzMyAgICB8NjUu
NjQ1ODMzICAgIHwwLjk5NzkxMCAgfCAwLjQzNzQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg
ICAgYSBtZWFuID0gMjQ2LjUyODk4CisgICAgICAgICAgICBiIG1lYW4gPSAyNDYuODUxMjgKKyAg
ICAgICAgICAgIHBWYWx1ZSA9IDAuMzkyNzMzMDI3OAorICAgICAgICAgICAgKEJpZ2dlciBtZWFu
cyBhcmUgYmV0dGVyLikKKyAgICAgICAgICAgIDEuMDAxIHRpbWVzIGJldHRlcgorICAgICAgICAg
ICAgUmVzdWx0cyBBUkUgTk9UIHNpZ25pZmljYW50CisKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6c2hvcnRlbkxlbmd0aCk6
CisgICAgICAgIChKU0M6OllhcnI6OkJveWVyTW9vcmVJbmZvOjpzZXRBbGwpOgorICAgICAgICAo
SlNDOjpZYXJyOjpCb3llck1vb3JlSW5mbzo6YWRkQ2hhcmFjdGVycyk6CisgICAgICAgIChKU0M6
OllhcnI6OkJveWVyTW9vcmVJbmZvOjphZGRSYW5nZXMpOgorICAgICAgICAqIHlhcnIvWWFyckpJ
VC5oOgorICAgICAgICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGQpOgorICAgICAg
ICAoSlNDOjpZYXJyOjpCb3llck1vb3JlQml0bWFwOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6YWRkUmFuZ2VzKToKKyAgICAgICAgKEpTQzo6
WWFycjo6Qm95ZXJNb29yZUJpdG1hcDo6c2V0QWxsKToKKyAgICAgICAgKEpTQzo6WWFycjo6Qm95
ZXJNb29yZUJpdG1hcDo6aXNBbGxTZXQgY29uc3QpOgorCiAyMDIxLTA4LTAyICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gWWFyciBzaG91bGQgdXNl
IEJpdG1hcCBpbnN0ZWFkIG9mIEJ5dGVWZWN0b3IgZm9yIEJveWVyTW9vcmUgc2VhcmNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmluZGV4IGRlMmVlYWFkOGIyYThlNGRiZDQ4
ZWNjNjdjYjg0ODY3Y2RjZjVkYjkuLmYzZmZkMmJkYjc1MWRlM2MzNmM4YTlhYjY1OTRlZTliNWVj
ZTk4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCkBAIC02MywxMiAr
NjMsMzIgQEAgY2xhc3MgQm95ZXJNb29yZUluZm8gewogICAgIH0KIAogICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVycy5zaXplKCk7IH0KKyAgICB2b2lkIHNo
b3J0ZW5MZW5ndGgodW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGxlbmd0
aCA8PSB0aGlzLT5sZW5ndGgoKSk7CisgICAgICAgIG1fY2hhcmFjdGVycy5zaHJpbmsobGVuZ3Ro
KTsKKyAgICB9CiAKICAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgVUNoYXIzMiBjaGFyYWN0
ZXIpCiAgICAgewogICAgICAgICBtX2NoYXJhY3RlcnNbaW5kZXhdLmFkZChjaGFyYWN0ZXIpOwog
ICAgIH0KIAorICAgIHZvaWQgc2V0QWxsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAg
bV9jaGFyYWN0ZXJzW2luZGV4XS5zZXRBbGwoKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZENoYXJh
Y3RlcnModW5zaWduZWQgaW5kZXgsIGNvbnN0IFZlY3RvcjxVQ2hhcjMyPiYgY2hhcmFjdGVycykK
KyAgICB7CisgICAgICAgIG1fY2hhcmFjdGVyc1tpbmRleF0uYWRkQ2hhcmFjdGVycyhjaGFyYWN0
ZXJzKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFJhbmdlcyh1bnNpZ25lZCBpbmRleCwgY29uc3Qg
VmVjdG9yPENoYXJhY3RlclJhbmdlPiYgcmFuZ2UpCisgICAgeworICAgICAgICBtX2NoYXJhY3Rl
cnNbaW5kZXhdLmFkZFJhbmdlcyhyYW5nZSk7CisgICAgfQorCiAgICAgc3RhdGljIFVuaXF1ZVJl
ZjxCb3llck1vb3JlSW5mbz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPEJveWVyTW9vcmVJbmZvPihsZW5ndGgpOwpAQCAtMjM4MSw2
ICsyNDAxLDEyIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBbbWFwLCBpc01hc2tFZmZlY3RpdmVdID0gb3AubV9ibUluZm8tPmNyZWF0ZUNhbmRpZGF0ZUJp
dG1hcChiZWdpbkluZGV4LCBlbmRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBtYXBDb3VudCA9IG1hcC5jb3VudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
SWYgY2FuZGlhdGUgY2hhcmFjdGVycyBhcmUgPD0gMiwgY2hlY2tpbmcgZWFjaCBpcyBiZXR0ZXIg
dGhhbiB1c2luZyB2ZWN0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBvdXRP
Zkxlbmd0aEZhaWx1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlzdCBtYXRjaGVk
OworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoWWFyckpJVEludGVybmFsOjp2
ZXJib3NlLCAiQk0gQml0bWFwIGlzICIsIG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBQYXR0ZXJucyBsaWtlIC9bXS8gaGF2ZSB6ZXJvIGNhbmRpZGF0ZXMuIFNpbmNlIGl0IGlzIHJh
cmUsIHdlIGRvIG5vdCBkbyBub3RoaW5nIGZvciBub3cuCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1hcENvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50IDw9IDIpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjEgPSBtYXAuZmluZEJpdCgwLCB0cnVlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhcmFjdGVyMSAhPSBCb3llck1v
b3JlQml0bWFwOjpNYXA6OnNpemUoKSk7CkBAIC0yMzkxLDcgKzI0MTcsNiBAQCBjbGFzcyBZYXJy
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1i
bGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZVJlZ0V4cENvbXBpbGF0aW9uKCks
ICJGb3VuZCAxLW9yLTIgY2hhcmFjdGVycyBsb29rYWhlYWQgY2hhcmFjdGVyOigweCIsIGhleChj
aGFyYWN0ZXIxKSwgIiksY2hhcmFjdGVyMjooIiwgaGV4KGNoYXJhY3RlcjIpLCAiKSxpc01hc2tF
ZmZlY3RpdmU6KCIsIGlzTWFza0VmZmVjdGl2ZSwiKSxyYW5nZTpbIiwgYmVnaW5JbmRleCwgIiwg
IiwgZW5kSW5kZXgsICIpIik7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wTGlz
dCBtYXRjaGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbG9vcEhlYWQgPSBs
YWJlbCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDaGFyYWN0ZXIobV9jaGVj
a2VkT2Zmc2V0IC0gZW5kSW5kZXggKyAxLCByZWdUMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzTWFza0VmZmVjdGl2ZSkKQEAgLTIzOTksOSArMjQyNCw4IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3Nl
bWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5j
aDMyKEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKGNoYXJhY3RlcjEpKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hcENvdW50ID09IDIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZWQuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgVHJ1c3Rl
ZEltbTMyKGNoYXJhY3RlcjIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9q
dW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5kZXgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBwZW5k
KGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBh
dXRvKiBwb2ludGVyID0gZ2V0Qm95ZXJNb29yZUJpdG1hcChtYXApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VSZWdFeHBDb21waWxhdGlv
bigpLCAiRm91bmQgYml0bWFwIGxvb2thaGVhZCBjb3VudDooIiwgbWFwQ291bnQsICIpLHJhbmdl
OlsiLCBiZWdpbkluZGV4LCAiLCAiLCBlbmRJbmRleCwgIikiKTsKQEAgLTI0MTYsNyArMjQ0MCw3
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RV
bnNpZ25lZEJpdGZpZWxkMzIocmVnVDAsIFRydXN0ZWRJbW0zMig2KSwgVHJ1c3RlZEltbTMyKDEp
LCByZWdUMik7IC8vIEV4dHJhY3QgMSBiaXQgZm9yIGluZGV4LgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWQ2NChCYXNlSW5kZXgocmVnVDEsIHJlZ1QyLCBUaW1lc0VpZ2h0KSwgcmVn
VDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVyc2hpZnQ2NChyZWdUMCwgcmVnVDIp
OyAvLyBXZSBjYW4gaWdub3JlIHVwcGVyIGJpdHMgYW5kIG9ubHkgbG93ZXIgNmJpdHMgYXJlIGVm
ZmVjdGl2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG1hdGNoZWQgPSBicmFu
Y2hUZXN0NjQoTm9uWmVybywgcmVnVDIsIFRydXN0ZWRJbW0zMigxKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZC5hcHBlbmQoYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1Qy
LCBUcnVzdGVkSW1tMzIoMSkpKTsKICNlbGlmIENQVShYODZfNjQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoQm95ZXJNb29yZUJpdG1hcDo6TWFwOjpX
b3JkVHlwZSkgPT0gc2l6ZW9mKHVpbnQ2NF90KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Fzc2VydCgxIDw8IDYgPT0gNjQpOwpAQCAtMjQyNSw3ICsyNDQ5LDcgQEAgY2xh
c3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJpdmF0ZSBNYWNy
b0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJzaGlmdDMyKFRydXN0
ZWRJbW0zMig2KSwgcmVnVDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZDMyKFRy
dXN0ZWRJbW0zMigxKSwgcmVnVDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ2
NChCYXNlSW5kZXgocmVnVDEsIHJlZ1QyLCBUaW1lc0VpZ2h0KSwgcmVnVDIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5jaFRlc3RCaXQ2NChOb25aZXJv
LCByZWdUMiwgcmVnVDApOyAvLyBXZSBjYW4gaWdub3JlIHVwcGVyIGJpdHMgc2luY2UgbW9kdWxv
LTY0IGlzIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLmFw
cGVuZChicmFuY2hUZXN0Qml0NjQoTm9uWmVybywgcmVnVDIsIHJlZ1QwKSk7IC8vIFdlIGNhbiBp
Z25vcmUgdXBwZXIgYml0cyBzaW5jZSBtb2R1bG8tNjQgaXMgcGVyZm9ybWVkLgogI2Vsc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihCb3llck1vb3Jl
Qml0bWFwOjpNYXA6OldvcmRUeXBlKSA9PSBzaXplb2YodWludDMyX3QpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgNSA9PSAzMik7CkBAIC0yNDM1LDE0
ICsyNDU5LDMwIEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVElu
Zm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZDMyKFRydXN0ZWRJbW0zMigwYjExKSwgcmVnVDIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDEsIHJlZ1QyLCBUaW1lc0ZvdXIpLCByZWdUMik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJzaGlmdDMyKHJlZ1QwLCByZWdUMik7IC8v
IFdlIGNhbiBpZ25vcmUgdXBwZXIgYml0cyBhbmQgb25seSBsb3dlciA1Yml0cyBhcmUgZWZmZWN0
aXZlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gbWF0Y2hlZCA9IGJyYW5jaFRl
c3QzMihOb25aZXJvLCByZWdUMiwgVHJ1c3RlZEltbTMyKDEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaGVkLmFwcGVuZChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDIsIFRy
dXN0ZWRJbW0zMigxKSkpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Au
bV9qdW1wcy5hcHBlbmQoanVtcElmTm9BdmFpbGFibGVJbnB1dChlbmRJbmRleCAtIGJlZ2luSW5k
ZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRPZkxlbmd0aEZhaWx1cmUuYXBw
ZW5kKGp1bXBJZk5vQXZhaWxhYmxlSW5wdXQoZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAganVtcCgpLmxpbmtUbyhsb29wSGVhZCwgdGhpcyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5saW5rKHRoaXMpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcGF0
dGVybiBzaXplIGlzIG5vdCBmaXhlZCwgdGhlbiBzdG9yZSB0aGUgc3RhcnQgaW5kZXggZm9yIHVz
ZSBpZiB3ZSBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBm
b3IgYWRqdXN0aW5nIG1hdGNoLXN0YXJ0IHdoZW4gd2UgZmFpbGVkIHRvIGZpbmQgdGhlIHN0YXJ0
IHdpdGggQm95ZXJNb29yZSBzZWFyY2guCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1f
cGF0dGVybi5tX2JvZHktPm1faGFzRml4ZWRTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0T2ZMZW5ndGhGYWlsdXJlLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGFsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vdmUoaW5kZXgsIHJlZ1QwKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoYWx0ZXJuYXRpdmUtPm1fbWluaW11bVNpemUpLCBy
ZWdUMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1hdGNoU3RhcnQocmVn
VDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRNYXRjaFN0YXJ0KGluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1wKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AubV9qdW1wcy5hcHBl
bmQob3V0T2ZMZW5ndGhGYWlsdXJlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hl
ZC5saW5rKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhdHRlcm4g
c2l6ZSBpcyBub3QgZml4ZWQsIHRoZW4gc3RvcmUgdGhlIHN0YXJ0IGluZGV4IGZvciB1c2UgaWYg
d2UgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIGFk
anVzdGluZyBtYXRjaC1zdGFydCB3aGVuIHdlIHN0YXJ0IHBhdHRlcm4gbWF0Y2hpbmcgd2l0aCB0
aGUgdXBkYXRlZCBpbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkgQm95ZXJNb29y
ZSBzZWFyY2guCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1fcGF0dGVybi5tX2JvZHkt
Pm1faGFzRml4ZWRTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsdGVy
bmF0aXZlLT5tX21pbmltdW1TaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vdmUoaW5kZXgsIHJlZ1QwKTsKQEAgLTM4NDIsNyArMzg4Miw3IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIg
ewogICAgICAgICAvLyBpdCBmYWlscyB3aGVuIHRoZSBib2R5IGFsdGVybmF0aXZlcyBmYWlsIHRv
IG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgb2Zmc2V0LgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCB1bmljb2RlIGZsYWcuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjg2MTEKLSAgICAgICAgaWYgKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXpl
ICYmIGRpc2p1bmN0aW9uLT5tX2hhc0ZpeGVkU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYm
ICFtX3BhdHRlcm4udW5pY29kZSgpKSB7CisgICAgICAgIGlmIChkaXNqdW5jdGlvbi0+bV9taW5p
bXVtU2l6ZSAmJiAhbV9wYXR0ZXJuLnN0aWNreSgpICYmICFtX3BhdHRlcm4udW5pY29kZSgpKSB7
CiAgICAgICAgICAgICBhdXRvIGJtSW5mbyA9IEJveWVyTW9vcmVJbmZvOjpjcmVhdGUoc3RkOjpt
aW48dW5zaWduZWQ+KGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplLCBCb3llck1vb3JlSW5mbzo6
bWF4TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAoY29sbGVjdEJveWVyTW9vcmVJbmZvKGRpc2p1
bmN0aW9uLCBjdXJyZW50QWx0ZXJuYXRpdmVJbmRleCwgYm1JbmZvLmdldCgpKSkgewogICAgICAg
ICAgICAgICAgIG1fb3BzLmxhc3QoKS5tX2JtSW5mbyA9IGJtSW5mby5wdHIoKTsKQEAgLTM4OTAs
MTMgKzM5MzAsMTAgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklU
SW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIC8vIFdlIGZpcnN0IGNvbGxl
Y3QgcG9zc2libGUgY2hhcmFjdGVycyBmb3IgZWFjaCBjaGFyYWN0ZXIgcG9zaXRpb24uIFRoZW4s
IGFwcGx5IGhldXJpc3RpY3MgdG8gZXh0cmFjdCBnb29kIGNoYXJhY3RlciBzZXF1ZW5jZSBmcm9t
CiAgICAgICAgIC8vIHRoYXQgYW5kIGNvbnN0cnVjdCBmYXN0IHNlYXJjaGluZyB3aXRoIGxvbmcg
c3RyaWRlLgogCi0gICAgICAgIEFTU0VSVChkaXNqdW5jdGlvbi0+bV9oYXNGaXhlZFNpemUpOyAv
LyBXZSBvbmx5IHN1cHBvcnQgZml4ZWQtc2l6ZWQgbG9va2FoZWFkIGZvciBCb3llck1vb3JlIHNl
YXJjaC4KICAgICAgICAgQVNTRVJUKGRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplKTsKIAogICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBuZXN0ZWQgZGlzanVuY3Rpb25zIChlLmcuIC8oPzphYmN8
ZGVmfGcoPzpoaXxqaykpLykuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjg2MTQKLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2hhcmFjdGVy
LWNsYXNzIChlLmcuIC9bXGRddGVzdC8pLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEzCiAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5v
bi1maXhlZC1zaXplZCBsb29rYWhlYWQgKGUuZy4gLy4qYWJjLyBhbmQgZXh0cmFjdCAiYWJjIiBz
ZXF1ZW5jZSkuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjg2MTIKICAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gZGlzanVuY3Rpb24tPm1f
YWx0ZXJuYXRpdmVzOwpAQCAtMzkwOSwyMCArMzk0Niw0NiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IGZpbmFsIDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpBc3NlcnRpb25CT0w6CiAgICAg
ICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6QXNzZXJ0aW9uRU9MOgogICAgICAg
ICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkFzc2VydGlvbldvcmRCb3VuZGFyeToK
LSAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpDaGFyYWN0ZXJDbGFzczoK
ICAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJtOjpUeXBlOjpCYWNrUmVmZXJlbmNlOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OkZvcndhcmRSZWZlcmVuY2U6
CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6UGFyZW50aGVzZXNTdWJw
YXR0ZXJuOgogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06OlR5cGU6OlBhcmVudGhl
dGljYWxBc3NlcnRpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQYXR0ZXJuVGVybTo6VHlwZTo6
RG90U3RhckVuY2xvc3VyZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFBhdHRlcm5UZXJt
OjpUeXBlOjpDaGFyYWN0ZXJDbGFzczogeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybS5x
dWFudGl0eVR5cGUgIT0gUXVhbnRpZmllclR5cGU6OkZpeGVkQ291bnQgfHwgdGVybS5xdWFudGl0
eU1heENvdW50ICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRlcm0uaW5wdXRQb3NpdGlvbiAhPSBpbmRleCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBhdXRvJiBjaGFyYWN0ZXJD
bGFzcyA9ICp0ZXJtLmNoYXJhY3RlckNsYXNzOworICAgICAgICAgICAgICAgICAgICBpZiAodGVy
bS5pbnZlcnQoKSB8fCBjaGFyYWN0ZXJDbGFzcy5tX2FueUNoYXJhY3RlcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3IpOworICAgICAgICAgICAgICAgICAg
ICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyQ2xhc3Mu
bV90YWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldEFsbChjdXJzb3Ip
OworICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzVW5pY29kZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBibUluZm8uYWRkUmFuZ2VzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3Mu
bV9yYW5nZXNVbmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFyYWN0ZXJDbGFz
cy5tX21hdGNoZXNVbmljb2RlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJt
SW5mby5hZGRDaGFyYWN0ZXJzKGN1cnNvciwgY2hhcmFjdGVyQ2xhc3MubV9tYXRjaGVzVW5pY29k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2hhcmFjdGVyQ2xhc3MubV9yYW5nZXMuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLmFkZFJhbmdlcyhjdXJzb3Is
IGNoYXJhY3RlckNsYXNzLm1fcmFuZ2VzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGFy
YWN0ZXJDbGFzcy5tX21hdGNoZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Ym1JbmZvLmFkZENoYXJhY3RlcnMoY3Vyc29yLCBjaGFyYWN0ZXJDbGFzcy5tX21hdGNoZXMpOwor
ICAgICAgICAgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgUGF0dGVyblRlcm06
OlR5cGU6OlBhdHRlcm5DaGFyYWN0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0u
cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJUeXBlOjpGaXhlZENvdW50IHx8IHRlcm0ucXVhbnRp
dHlNYXhDb3VudCAhPSAxKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtLmlucHV0UG9zaXRpb24gIT0gaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKFUxNl9MRU5HVEgodGVybS5wYXR0ZXJuQ2hhcmFjdGVyKSAhPSAxICYmIG1fZGVj
b2RlU3Vycm9nYXRlUGFpcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgLy8g
Rm9yIGNhc2UtaW5zZXNpdGl2ZSBjb21wYXJlcywgbm9uLWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBo
YXZlIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAvLyB1cHBlciAmIGxvd2VyIGNhc2Ug
cmVwcmVzZW50YXRpb25zIGFyZSBhbHJlYWR5IGNvbnZlcnRlZCB0byBhIGNoYXJhY3RlciBjbGFz
cy4KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3BhdHRlcm4uaWdub3JlQ2FzZSgpIHx8
IGlzQVNDSUlBbHBoYSh0ZXJtLnBhdHRlcm5DaGFyYWN0ZXIpIHx8IGlzQ2Fub25pY2FsbHlVbmlx
dWUodGVybS5wYXR0ZXJuQ2hhcmFjdGVyLCBtX2Nhbm9uaWNhbE1vZGUpKTsKQEAgLTM5MzIsMTMg
KzM5OTUsMTUgQEAgY2xhc3MgWWFyckdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBZYXJySklUSW5m
bywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgYm1JbmZvLnNldChjdXJzb3IsIHRlcm0ucGF0dGVybkNo
YXJhY3Rlcik7CiAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihZYXJy
SklUSW50ZXJuYWw6OnZlcmJvc2UsICJTaG9ydGVuaW5nIHRvICIsIGN1cnNvcik7CisgICAgICAg
ICAgICAgICAgYm1JbmZvLnNob3J0ZW5MZW5ndGgoY3Vyc29yKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBkYXRhTG9nTG5JZihZYXJy
SklUSW50ZXJuYWw6OnZlcmJvc2UsICJDaGFyYWN0ZXJzIGNvbGxlY3RlZCIpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGJtSW5mby5sZW5ndGgoKTsKICAgICB9CiAKICAg
ICBjb25zdCBCb3llck1vb3JlQml0bWFwOjpNYXA6OldvcmRUeXBlKiBnZXRCb3llck1vb3JlQml0
bWFwKGNvbnN0IEJveWVyTW9vcmVCaXRtYXA6Ok1hcCYgbWFwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5oCmluZGV4IDU4OWY4NjMzMmZiMzUyNDE0M2Y3YjIyOTE2MDcxMjQ5YjAwYjZk
YzkuLjhkNDFmZDY3Y2E1ZTczMDBiZjA4NWJkNGUwZjUxNGMxMmJkZWRmOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBKSVRG
YWlsdXJlUmVhc29uIDogdWludDhfdCB7CiB9OwogCiBjbGFzcyBCb3llck1vb3JlQml0bWFwIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCb3llck1vb3JlQml0bWFwKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChCb3llck1vb3JlQml0bWFwKTsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG1hcFNpemUgPSAxMjg7CkBAIC03NSw2ICs3Niw4IEBAIGNsYXNz
IEJveWVyTW9vcmVCaXRtYXAgewogCiAgICAgdm9pZCBhZGQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAg
ICAgeworICAgICAgICBpZiAoaXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdW5zaWduZWQgcG9zaXRpb24gPSBjaGFyYWN0ZXIgJiBtYXBNYXNrOwogICAgICAgICBpZiAo
cG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoYXJhY3RlcikpCiAgICAgICAgICAg
ICBtX2lzTWFza0VmZmVjdGl2ZSA9IHRydWU7CkBAIC04NCw2ICs4Nyw0MyBAQCBjbGFzcyBCb3ll
ck1vb3JlQml0bWFwIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgYWRkQ2hhcmFjdGVy
cyhjb25zdCBWZWN0b3I8VUNoYXIzMj4mIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICBpZiAo
aXNBbGxTZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGNoYXJhY3RlcnMu
c2l6ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoVUNoYXIgY2hhcmFjdGVyIDogY2hhcmFj
dGVycykKKyAgICAgICAgICAgIGFkZChjaGFyYWN0ZXIpOworICAgIH0KKworICAgIHZvaWQgYWRk
UmFuZ2VzKGNvbnN0IFZlY3RvcjxDaGFyYWN0ZXJSYW5nZT4mIHJhbmdlcykKKyAgICB7CisgICAg
ICAgIGlmIChyYW5nZXMuc2l6ZSgpID49IG1hcFNpemUpIHsKKyAgICAgICAgICAgIHNldEFsbCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAoQ2hhcmFjdGVy
UmFuZ2UgcmFuZ2UgOiByYW5nZXMpIHsKKyAgICAgICAgICAgIGlmIChpc0FsbFNldCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmFuZ2UuZW5kIC0gcmFuZ2UuYmVnaW4gKyAxKSA+PSBtYXBTaXplKSB7CisgICAgICAgICAg
ICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZm9yIChVQ2hhcjMyIGNoYXJhY3RlciA9IHJhbmdlLmJlZ2luOyBjaGFyYWN0
ZXIgPD0gcmFuZ2UuZW5kOyArK2NoYXJhY3RlcikKKyAgICAgICAgICAgICAgICBhZGQoY2hhcmFj
dGVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc2V0QWxsKCkKKyAgICB7CisgICAg
ICAgIG1fY291bnQgPSBtYXBTaXplOworICAgIH0KKworICAgIGJvb2wgaXNBbGxTZXQoKSBjb25z
dCB7IHJldHVybiBtX2NvdW50ID09IG1hcFNpemU7IH0KKwogcHJpdmF0ZToKICAgICBNYXAgbV9t
YXAgeyB9OwogICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBiOGVjNTZlYjgwOTIyYTA5N2My
MDJjZWVkOGQ1ZmI3YjUzZGY0YjcuLjFkZGM1Yzc1OTU3YTgyMDZiZWEzMThiOWRmM2VjZmEyY2E0
MzMyYWIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBZYXJyIEJveWVyTW9vcmUgc2VhcmNoIHNob3Vs
ZCBzdXBwb3J0IGNoYXJhY3Rlci1jbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4NjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFyYWN0ZXItbm9u
LWZpeGVkLXNpemUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAqIHN0
cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHJlZ2V4cC5hLmIuYy5kLmUuZi5nLmgu
aS5qLmsubC5tLm4uby5wLnEuci5zLnQudS52LncueC55LnouMC4xLjIuMy40LjUuNi43LjguOS50
LnYubi5yKToKKyAgICAgICAgKiBzdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24tZml4ZWQtc2l6
ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisKIDIwMjEtMDctMjkgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGdyYWRlIHRlc3Qy
NjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtY2hhcmFjdGVy
LW5vbi1maXhlZC1zaXplLmpzIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1jaGFy
YWN0ZXItbm9uLWZpeGVkLXNpemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM0MzcwMTc4N2FlYWQzOTBhY2E2
MzczODkyMmZmZjRhMDRlNjZlMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Jl
Z2V4cC1ibS1zZWFyY2gtY2hhcmFjdGVyLW5vbi1maXhlZC1zaXplLmpzCkBAIC0wLDAgKzEsMTQg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCitsZXQgcmVnZXhwID0gL3Nzc3Nzcy4qc3MvOworbGV0IHJlZ2V4cEZhaWwg
PSAvb29vb29vLipvby87CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICBs
ZXQgbWF0Y2hlZCA9IGBhYWFhYWFhYWFhYWFhYWFhYWFhYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi
Y2NjY2NjY3BwcHBwcHBwcHBwcHR0dHR0dHR0dHR0dDw8PDw8PDw8PDw8PDw8ZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGpqampqampqampzc3Nzc3Mgc3JjPSJoZXkuanMi
IHNzSGV5YC5tYXRjaChyZWdleHApOworICAgIHNob3VsZEJlKG1hdGNoZWRbMF0sIGBzc3Nzc3Mg
c3JjPSJoZXkuanMiIHNzYCk7CisgICAgbGV0IG5vdE1hdGNoZWQgPSBgYWFhYWFhYWFhYWFhYWFh
YWFhYWJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmNjY2NjY2NwcHBwcHBwcHBwcHB0dHR0dHR0dHR0
dHQ8PDw8PDw8PDw8PDw8PGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRq
ampqampqampqc3Nzc3NzIHNyYz0iaGV5LmpzIiBzc0hleWAubWF0Y2gocmVnZXhwRmFpbCk7Cisg
ICAgc2hvdWxkQmUobm90TWF0Y2hlZCwgbnVsbCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9yZWdleHAtYm0tc2VhcmNoLW1hbnktY2FuZGlkYXRlLXplcm8tbGVuZ3RoLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNhbmRpZGF0ZS16ZXJvLWxlbmd0aC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYzAxNmE1MjdhZDA4ZDY4NDAwMmIyZGFlYzVlZjI1YmUwYmZhYjcyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1tYW55LWNh
bmRpZGF0ZS16ZXJvLWxlbmd0aC5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwordmFyIHJl
Z2V4cCA9IC9hfGJ8Y3xkfGV8ZnxnfGh8aXxqfGt8bHxtfG58b3xwfHF8cnxzfHR8dXx2fHd8eHx5
fHp8MHwxfDJ8M3w0fDV8Nnw3fDh8OXwgfFx0fFx2fFxufFxyfFwkfFxefFwmfFwqfFwofFwpLwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgc2hvdWxkQmUocmVnZXhwLnRl
c3QoYCUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJWApLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUocmVnZXhwLnRlc3QoYOODhuOCueODiGApLCBmYWxzZSk7CisgICAgc2hvdWxk
QmUocmVnZXhwLnRlc3QoYHRlc3RpbmdgKSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoUmVnRXhwLmxl
ZnRDb250ZXh0LCBgYCk7CisgICAgc2hvdWxkQmUoUmVnRXhwLnJpZ2h0Q29udGV4dCwgYGVzdGlu
Z2ApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcmVnZXhwLWJtLXNlYXJjaC1ub24t
Zml4ZWQtc2l6ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gtbm9uLWZpeGVk
LXNpemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFmYzY2ZDJiYmQyMzg2NDBkYTM1MmFiZDg1YzI1YTU4NmRl
Y2FkYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3JlZ2V4cC1ibS1zZWFyY2gt
bm9uLWZpeGVkLXNpemUuanMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2xldCByZWdleHAg
PSAvPHNjcmlwdC4qXC8+L2k7CitsZXQgcmVnZXhwRmFpbCA9IC88c2NyaXBwLipcLz4vaTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgIGxldCBtYXRjaGVkID0gYGFhYWFh
YWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2NjY2NjcHBwcHBwcHBwcHBw
dHR0dHR0dHR0dHR0PDw8PDw8PDw8PDw8PDxkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk
ZGRkZGRkZGRkampqampqampqajxzY3JpcHQgc3JjPSJoZXkuanMiIC8+SGV5YC5tYXRjaChyZWdl
eHApOworICAgIHNob3VsZEJlKG1hdGNoZWRbMF0sIGA8c2NyaXB0IHNyYz0iaGV5LmpzIiAvPmAp
OworICAgIGxldCBub3RNYXRjaGVkID0gYGFhYWFhYWFhYWFhYWFhYWFhYWFiYmJiYmJiYmJiYmJi
YmJiYmJiYmJiYmJjY2NjY2NjcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0PDw8PDw8PDw8PDw8PDxk
ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkampqampqampqajxzY3JpcHQg
c3JjPSJoZXkuanMiIC8+SGV5YC5tYXRjaChyZWdleHBGYWlsKTsKKyAgICBzaG91bGRCZShub3RN
YXRjaGVkLCBudWxsKTsKK30K
</data>
<flag name="review"
          id="457342"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="457378"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>