<?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>205834</bug_id>
          
          <creation_ts>2020-01-06 14:31:11 -0800</creation_ts>
          <short_desc>[bmalloc] Extract constants from Heap and share it among Heaps.</short_desc>
          <delta_ts>2020-01-09 14:58:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</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="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1603280</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-06 14:31:11 -0800</bug_when>
    <thetext>The following member variables of Heap are dependent only for vmPageSize and calculating same value for each Heap.
  m_vmPageSizePhysical, m_smallLineMetadata and m_pageClasses

Extract them as a separate class and access them from each Heap reduces sizeof(Heap) for m_pageClasses and Vector for m_smallLineMetadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603645</commentid>
    <comment_count>1</comment_count>
      <attachid>386991</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-07 10:37:36 -0800</bug_when>
    <thetext>Created attachment 386991
PATCH

- Extracted member variables for metadata and initialization code of those.
- Merge LineMetadata.h and Metadata.h
- Add simple wrapper class to get metadata for specific sizeClass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603651</commentid>
    <comment_count>2</comment_count>
      <attachid>386995</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-07 10:50:50 -0800</bug_when>
    <thetext>Created attachment 386995
PATCH

build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603652</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-07 10:51:37 -0800</bug_when>
    <thetext>The style error is false positive and it will be solved by https://bugs.webkit.org/show_bug.cgi?id=205840 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603818</commentid>
    <comment_count>4</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-07 15:06:31 -0800</bug_when>
    <thetext>jsc fails because it uses old version of forwarding header. Heap.h doesn&apos;t include LineMetadata.h any more and the line doesn&apos;t exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604380</commentid>
    <comment_count>5</comment_count>
      <attachid>387165</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-08 17:08:17 -0800</bug_when>
    <thetext>Created attachment 387165
PATCH

Add ChangeLog description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604390</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-08 17:18:09 -0800</bug_when>
    <thetext>(In reply to Basuke Suzuki from comment #4)
&gt; jsc fails because it uses old version of forwarding header. Heap.h doesn&apos;t
&gt; include LineMetadata.h any more and the line doesn&apos;t exist.

I think the problem is that &quot;bmalloc.h&quot; and &quot;Heap.h&quot; are not copied correctly via CpHeader. Can you make it work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604391</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-08 17:19:21 -0800</bug_when>
    <thetext>What&apos;s the benefit here?

Heap is a per-process singleton, so I don&apos;t understand the value of moving its data into another per-process singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604392</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-08 17:20:28 -0800</bug_when>
    <thetext>Side note: I think the word &quot;metadata&quot; is too generic. Can you think of a name that describes the data recorded here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604401</commentid>
    <comment_count>9</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-08 17:28:55 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; What&apos;s the benefit here?
&gt; 
&gt; Heap is a per-process singleton, so I don&apos;t understand the value of moving
&gt; its data into another per-process singleton.

Heap is created as PerProcess&lt;PerHeapKind&gt;() singleton. So four copies of pageClass and smallLineMetadata tables are created. Also smallLineMetadata is a Vector, so it allocates another page for each Heap kind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604403</commentid>
    <comment_count>10</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-08 17:31:07 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; Side note: I think the word &quot;metadata&quot; is too generic. Can you think of a
&gt; name that describes the data recorded here?

How about HeapMetadata? Or I can merge them into Heap.(h|cpp) if that is more suitable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604405</commentid>
    <comment_count>11</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-08 17:32:12 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #6)
&gt; (In reply to Basuke Suzuki from comment #4)
&gt; &gt; jsc fails because it uses old version of forwarding header. Heap.h doesn&apos;t
&gt; &gt; include LineMetadata.h any more and the line doesn&apos;t exist.
&gt; 
&gt; I think the problem is that &quot;bmalloc.h&quot; and &quot;Heap.h&quot; are not copied
&gt; correctly via CpHeader. Can you make it work?

Does jsc build use different path than other Xcode targets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604408</commentid>
    <comment_count>12</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-08 17:33:35 -0800</bug_when>
    <thetext>Just in case this is the goal of this patch. I&apos;m working on making those values `constxpr`ed for specific VM page sizes.

https://github.com/WebKit/webkit/compare/master...basuke:basuke/bmalloc-metadata-constexpr?expand=1#diff-590a267487c8ee077df1036f99e1c38cR75-R98</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604413</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-08 17:39:12 -0800</bug_when>
    <thetext>Yes, Heap exists at least three due to Gigacage IIRC (Primitive, JSValue, FastMalloc).
And IIRC, Metadata takes measurable size (I noticed that when doing memory reduction work. If we avoid Heap initialization completely when Malloc=1 is enabled (we use DebugHeap), we get large improvement in RAMification LuaJSFight).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604492</commentid>
    <comment_count>14</comment_count>
      <attachid>387165</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-08 21:03:34 -0800</bug_when>
    <thetext>Comment on attachment 387165
PATCH

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

&gt; Source/bmalloc/bmalloc/Heap.cpp:284
&gt; -        size_t pageClass = m_pageClasses[sizeClass];
&gt; +        Metadata metadata { sizeClass };
&gt; +        size_t pageClass = metadata.pageClass();

This idiom surprised me. There&apos;s nothing about the Metadata class name that says to me &quot;I will look up the right page class for a size class upon initialization&quot;.

What do you think about &quot;m_constants.pageClass(sizeClass)&quot; instead?

&gt; Source/bmalloc/bmalloc/Metadata.hSource/bmalloc/bmalloc/LineMetadata.h:42
&gt; +class MetadataStorage : public StaticPerProcess&lt;MetadataStorage&gt; {

How about if we call this class &quot;HeapConstants&quot;, since it&apos;s the factored out set of constants shared by all heaps -- and then keep a reference m_heapConstants in each Heap?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604689</commentid>
    <comment_count>15</comment_count>
      <attachid>387165</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 10:10:30 -0800</bug_when>
    <thetext>Comment on attachment 387165
PATCH

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

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:284
&gt;&gt; +        size_t pageClass = metadata.pageClass();
&gt; 
&gt; This idiom surprised me. There&apos;s nothing about the Metadata class name that says to me &quot;I will look up the right page class for a size class upon initialization&quot;.
&gt; 
&gt; What do you think about &quot;m_constants.pageClass(sizeClass)&quot; instead?

I agree with that. Actually that was my first implementation. I saw lot of sizeClass passing to get value from metadata, so I decided to make helper class. But yes that idiom is not regular.

&gt;&gt; Source/bmalloc/bmalloc/Metadata.hSource/bmalloc/bmalloc/LineMetadata.h:42
&gt;&gt; +class MetadataStorage : public StaticPerProcess&lt;MetadataStorage&gt; {
&gt; 
&gt; How about if we call this class &quot;HeapConstants&quot;, since it&apos;s the factored out set of constants shared by all heaps -- and then keep a reference m_heapConstants in each Heap?

HeapConstants for class name and having a reference to that instance in Heap are good to me. I want to call it m_constants because it&apos;s already used in Heap object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604801</commentid>
    <comment_count>16</comment_count>
      <attachid>387259</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-09 13:15:39 -0800</bug_when>
    <thetext>Created attachment 387259
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604830</commentid>
    <comment_count>17</comment_count>
      <attachid>387259</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-09 13:40:09 -0800</bug_when>
    <thetext>Comment on attachment 387259
PATCH

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604877</commentid>
    <comment_count>18</comment_count>
      <attachid>387259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-09 14:57:51 -0800</bug_when>
    <thetext>Comment on attachment 387259
PATCH

Clearing flags on attachment: 387259

Committed r254303: &lt;https://trac.webkit.org/changeset/254303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604878</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-09 14:57:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604879</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-09 14:58:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58459009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386991</attachid>
            <date>2020-01-07 10:37:36 -0800</date>
            <delta_ts>2020-01-07 10:50:50 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-205834.diff</filename>
            <type>text/plain</type>
            <size>23730</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKaW5kZXggZjNiZWExOWQxOTQuLjdhZGY1OTZjMWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAg
Ym1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCiAgICAgYm1hbGxvYy9MYXJnZU1hcC5jcHAKICAgICBi
bWFsbG9jL0xvZ2dpbmcuY3BwCisgICAgYm1hbGxvYy9NZXRhZGF0YS5jcHAKICAgICBibWFsbG9j
L011dGV4LmNwcAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHAKICAgICBibWFsbG9jL1BlclBy
b2Nlc3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMTliODllOTJhY2YuLmY5ZjkxYjdjMmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDEtMDYgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uu
c3V6dWtpQHNvbnkuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBFeHRyYWN0IG1ldGFkYXRhIGZy
b20gSGVhcCBhbmQgc2hhcmUgaXQgYW1vbmcgSGVhcHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBNZXRhZGF0
YS5jcHAuCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOiBSZWZlcmVuY2luZyBNZXRhZGF0YSBvYmpl
Y3QgdG8gZ2V0IGluZm9ybWF0aW9uLgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6SGVhcCk6Cisg
ICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZSk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlNZXRhZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5T2JqZWN0KToKKyAgICAgICAgKGJtYWxsb2M6
OkhlYXA6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcDo6aW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogYm1h
bGxvYy9IZWFwLmg6IEV4dHJhY3QgbWV0YWRhdGEgaW5pdGlhbGl6YXRpb24gYW5kIG1lbWJlciB2
YXJpYWJsZXMuCisgICAgICAgICogYm1hbGxvYy9NZXRhZGF0YS5jcHA6IEFkZGVkLgorICAgICAg
ICAoYm1hbGxvYzo6TWV0YWRhdGFTdG9yYWdlOjpNZXRhZGF0YVN0b3JhZ2UpOgorICAgICAgICAo
Ym1hbGxvYzo6TWV0YWRhdGFTdG9yYWdlOjppbml0aWFsaXplTGluZU1ldGFkYXRhKToKKyAgICAg
ICAgKGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFnZTo6aW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSk6Cisg
ICAgICAgICogYm1hbGxvYy9NZXRhZGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9MaW5lTWV0YWRhdGEuaC4KKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFn
ZTo6cGFnZUNsYXNzIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFnZTo6
c21hbGxMaW5lQ291bnQgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRhdGFTdG9yYWdl
OjpsaW5lTWV0YWRhdGEpOgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRhdGE6Ok1ldGFkYXRhKToK
KyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhOjpwYWdlQ2xhc3MgY29uc3QpOgorICAgICAgICAo
Ym1hbGxvYzo6TWV0YWRhdGE6OnNtYWxsTGluZUNvdW50IGNvbnN0KToKKyAgICAgICAgKGJtYWxs
b2M6Ok1ldGFkYXRhOjpzdGFydE9mZnNldCk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YTo6
b2JqZWN0Q291bnQpOgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRhdGE6OmxpbmVNZXRhZGF0YSBj
b25zdCk6CisKIDIwMjAtMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4g
YW5kIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXhw
ZXJpbWVudDogY3JlYXRlIGxvdHMgb2YgZGlmZmVyZW50IG1hbGxvYyB6b25lcyBmb3IgZWFzaWVy
IGFjY291bnRpbmcgb2YgbWVtb3J5IHVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxYzI1OGJkNDgzLi5lYmQ5MjdkZjliYiAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtODAsNyArODAsNiBAQAogCQkxNDAwMjc0OTE4Rjg5QzEzMDAxMTVDOTcgLyogSGVhcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREQTMyMEMx
ODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNDAwMjc0QTE4Rjg5QzIzMDAxMTVDOTcgLyogVk1IZWFwLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRGN0JGQzE4
QkZDNTE3MDAzNTM3RjMgLyogVk1IZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwRkEwMDMxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5n
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwRkEw
MDIxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0MEZBMDA1MTlDRTRCNjgwMEZGRDNDOCAvKiBM
aW5lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MEZBMDA0MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDFEOUIwMDFDOEU1MUMw
MDAwQUJCQTAgLyogTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQxRDlBRkYxQzhFNTFDMDAwMEFCQkEwIC8qIExpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDJCNDQzNjFFMjgzOUU3MDAx
REE2RTkgLyogRGVidWdIZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0MkI0NDM0MUUyODM5RTcwMDFEQTZFOSAvKiBEZWJ1Z0hlYXAuY3BwICov
OyB9OwogCQkxNDJCNDQzNzFFMjgzOUU3MDAxREE2RTkgLyogRGVidWdIZWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJCNDQzNTFFMjgzOUU3MDAx
REE2RTkgLyogRGVidWdIZWFwLmggKi87IH07CkBAIC0xNDcsNiArMTQ2LDggQEAKIAkJRTNGQkI1
QTEyMjVFQURCMDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGQkI1OUUyMjVFQURCMDAwREI2RkJEIC8q
IElzb1NoYXJlZEhlYXAuY3BwICovOyB9OwogCQlFM0ZCQjVBMjIyNUVBREIwMDBEQjZGQkQgLyog
SXNvU2hhcmVkSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTNGQkI1OUYyMjVFQURCMDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0ZCQjVBNDIyNUVD
QUQyMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkJCNUEzMjI1RUNBRDIwMERCNkZCRCAvKiBJ
c29TaGFyZWRIZWFwSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUVCMTdEMTExMjNCRkNENDIwMDIwOTNBNyAvKiBNZXRhZGF0YS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDExMDIz
QkZDOEM0MDAyMDkzQTcgLyogTWV0YWRhdGEuY3BwICovOyB9OworCQlFQjE3RDExMjIzQkZDRDdB
MDAyMDkzQTcgLyogTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAvKiBNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMy
MUU4RDcwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVy
ZUFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIApAQCAtMjI1LDcgKzIyNiw2IEBACiAJ
CTBGN0VCODU5MUY5NTVBMEYwMEYxQUJDQiAvKiBEZWZlcnJlZERlY29tbWl0SW5saW5lcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEZWZlcnJlZERlY29tbWl0SW5saW5lcy5o
OyBwYXRoID0gYm1hbGxvYy9EZWZlcnJlZERlY29tbWl0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkQ1NTczMjFGN0VEQjdCMDBCMUYwQTMgLyogSGVhcEtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcEtpbmQuY3BwOyBwYXRo
ID0gYm1hbGxvYy9IZWFwS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQnVtcFJhbmdlLmg7IHBhdGggPSBibWFsbG9jL0J1bXBSYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDBGQTAwNDE5Q0U0QjY4MDBGRkQzQzggLyog
TGluZU1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpbmVNZXRh
ZGF0YS5oOyBwYXRoID0gYm1hbGxvYy9MaW5lTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQxMDVFODMxOEUxNDM3NDAwM0ExMDZFIC8qIE9iamVjdFR5cGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gT2JqZWN0VHlwZS5jcHA7IHBhdGgg
PSBibWFsbG9jL09iamVjdFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NDEzRTQ2MDE4OURDRTFFMDA1NDZENjggLyogQklubGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCSW5saW5lLmg7IHBhdGggPSBibWFsbG9jL0JJbmxpbmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxM0U0NjIxODlERTFDRDAwNTQ2RDY4IC8qIEJ1bXBB
bGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFt
ZSA9IEJ1bXBBbGxvY2F0b3IuaDsgcGF0aCA9IGJtYWxsb2MvQnVtcEFsbG9jYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAwLDYgKzMwMCw4IEBACiAJCUUzRkJCNTlFMjI1
RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IElzb1NoYXJlZEhlYXAuY3BwOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFy
ZWRIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGQkI1OUYyMjVFQURC
MDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSXNvU2hhcmVkSGVhcC5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRkJCNUEzMjI1RUNBRDIwMERCNkZCRCAvKiBJ
c29TaGFyZWRIZWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJ
c29TaGFyZWRIZWFwSW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjE3RDEwRTIzQkU2OTFEMDAyMDkz
QTcgLyogTWV0YWRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWV0YWRh
dGEuaDsgcGF0aCA9IGJtYWxsb2MvTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIE1ldGFkYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE1ldGFkYXRhLmNwcDsgcGF0aCA9IGJtYWxsb2Mv
TWV0YWRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFF
OENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGYWlsdXJlQWN0aW9uLmg7IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIApAQCAtNDgyLDcgKzQ4NCw4IEBACiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFE
IC8qIEdpZ2FjYWdlLmggKi8sCiAJCQkJMTREQTMyMEUxODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAu
Y3BwICovLAogCQkJCTE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi8sCi0JCQkJ
MTQwRkEwMDQxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0YS5oICovLAorCQkJCUVCMTdE
MTEwMjNCRkM4QzQwMDIwOTNBNyAvKiBNZXRhZGF0YS5jcHAgKi8sCisJCQkJRUIxN0QxMEUyM0JF
NjkxRDAwMjA5M0E3IC8qIE1ldGFkYXRhLmggKi8sCiAJCQkJMTQ0QkUxMUUxQ0EzNDY1MjAwOTlD
OEMwIC8qIE9iamVjdC5oICovLAogCQkJCTE0MTA1RTgzMThFMTQzNzQwMDNBMTA2RSAvKiBPYmpl
Y3RUeXBlLmNwcCAqLywKIAkJCQkxNDg1NjU2MDE4QTQzREJBMDBFRDY5NDIgLyogT2JqZWN0VHlw
ZS5oICovLApAQCAtNjMzLDEwICs2MzYsMTAgQEAKIAkJCQkwRjdFQjg0MDFGOTU0MUIwMDBGMUFC
Q0IgLyogSXNvVExTTGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDRDMDdGNTFDN0I3MDI2
MDA1MUJCNkEgLyogTGFyZ2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Qzg5OTJEMUNDNTc4
MzMwMDI3QTA1NyAvKiBMYXJnZVJhbmdlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDBGQTAwNTE5
Q0U0QjY4MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFE
OUIwMDFDOEU1MUMwMDAwQUJCQTAgLyogTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQyNkUy
ODExQzgzOEVFMDAwOEVCMDQyIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0Qzg5
OTJCMUNDNDg1RTcwMDI3QTA1NyAvKiBNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCMTdEMTEy
MjNCRkNEN0EwMDIwOTNBNyAvKiBNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJGNDcy
NDkyMTBCQTMwMjAwQjczMEJCIC8qIE1lbW9yeVN0YXR1c1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQzQ0I4MUQxOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDRCRTExRjFDQTM0NjUyMDA5OUM4QzAgLyogT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAg
LTc2OSw2ICs3NzIsNyBAQAogCQkJCTBGN0VCODNGMUY5NTQxQjAwMEYxQUJDQiAvKiBJc29UTFNM
YXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0QzA3RjQxQzdCNzAyNjAwNTFCQjZBIC8q
IExhcmdlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0MjZFMjgwMUM4MzhFRTAwMDhFQjA0
MiAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVCMTdEMTExMjNCRkNENDIwMDIw
OTNBNyAvKiBNZXRhZGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNDQjgxQzE5MDIyQkM5
MDBCMTZBNDUgLyogTXV0ZXguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRGMjcxQzgxOEVBMzk5
MDAwOEMxNTJGIC8qIE9iamVjdFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNkE3QTUy
MDU0ODMxMzAwOTBBMTQxIC8qIFBlclByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcAppbmRleCBlOThmNjU5NjBhMC4uNTBhNzJiMjFhZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcApAQCAtMzAsOSArMzAsMTAgQEAKICNpbmNsdWRlICJCdW1wQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiQ2h1bmsuaCIKICNpbmNsdWRlICJDcnlwdG9SYW5kb20uaCIKKyNpbmNs
dWRlICJEZWJ1Z0hlYXAuaCIKICNpbmNsdWRlICJFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkdp
Z2FjYWdlLmgiCi0jaW5jbHVkZSAiRGVidWdIZWFwLmgiCisjaW5jbHVkZSAiTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2NhdmVuZ2VyLmgiCiAjaW5jbHVk
ZSAiU21hbGxMaW5lLmgiCkBAIC00NiwxNCArNDcsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAK
IEhlYXA6OkhlYXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAgICAg
OiBtX2tpbmQoa2luZCkKLSAgICAsIG1fdm1QYWdlU2l6ZVBoeXNpY2FsKHZtUGFnZVNpemVQaHlz
aWNhbCgpKQogewotICAgIFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplUGh5c2ljYWwoKSA+PSBz
bWFsbFBhZ2VTaXplKTsKLSAgICBSRUxFQVNFX0JBU1NFUlQodm1QYWdlU2l6ZSgpID49IHZtUGFn
ZVNpemVQaHlzaWNhbCgpKTsKLQotICAgIGluaXRpYWxpemVMaW5lTWV0YWRhdGEoKTsKLSAgICBp
bml0aWFsaXplUGFnZU1ldGFkYXRhKCk7Ci0gICAgCiAgICAgQkFTU0VSVCghRW52aXJvbm1lbnQ6
OmdldCgpLT5pc0RlYnVnSGVhcEVuYWJsZWQoKSk7CiAKICAgICBHaWdhY2FnZTo6ZW5zdXJlR2ln
YWNhZ2UoKTsKQEAgLTg3LDYyICs4MSw2IEBAIHNpemVfdCBIZWFwOjpnaWdhY2FnZVNpemUoKQog
ICAgIHJldHVybiBHaWdhY2FnZTo6c2l6ZShnaWdhY2FnZUtpbmQobV9raW5kKSk7CiB9CiAKLXZv
aWQgSGVhcDo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCi17Ci0gICAgc2l6ZV90IHNpemVDbGFz
c0NvdW50ID0gYm1hbGxvYzo6c2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpOwotICAgIHNpemVfdCBz
bWFsbExpbmVDb3VudCA9IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIC8gc21hbGxMaW5lU2l6ZTsKLSAg
ICBtX3NtYWxsTGluZU1ldGFkYXRhLmdyb3coc2l6ZUNsYXNzQ291bnQgKiBzbWFsbExpbmVDb3Vu
dCk7Ci0KLSAgICBmb3IgKHNpemVfdCBzaXplQ2xhc3MgPSAwOyBzaXplQ2xhc3MgPCBzaXplQ2xh
c3NDb3VudDsgKytzaXplQ2xhc3MpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3RTaXpl
KHNpemVDbGFzcyk7Ci0gICAgICAgIExpbmVNZXRhZGF0YSogcGFnZU1ldGFkYXRhID0gJm1fc21h
bGxMaW5lTWV0YWRhdGFbc2l6ZUNsYXNzICogc21hbGxMaW5lQ291bnRdOwotCi0gICAgICAgIHNp
emVfdCBvYmplY3QgPSAwOwotICAgICAgICBzaXplX3QgbGluZSA9IDA7Ci0gICAgICAgIHdoaWxl
IChvYmplY3QgPCBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgewotICAgICAgICAgICAgbGluZSA9IG9i
amVjdCAvIHNtYWxsTGluZVNpemU7Ci0gICAgICAgICAgICBzaXplX3QgbGVmdG92ZXIgPSBvYmpl
Y3QgJSBzbWFsbExpbmVTaXplOwotCi0gICAgICAgICAgICBzaXplX3Qgb2JqZWN0Q291bnQ7Ci0g
ICAgICAgICAgICBzaXplX3QgcmVtYWluZGVyOwotICAgICAgICAgICAgZGl2aWRlUm91bmRpbmdV
cChzbWFsbExpbmVTaXplIC0gbGVmdG92ZXIsIHNpemUsIG9iamVjdENvdW50LCByZW1haW5kZXIp
OwotCi0gICAgICAgICAgICBwYWdlTWV0YWRhdGFbbGluZV0gPSB7IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGxlZnRvdmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ob2JqZWN0Q291
bnQpIH07Ci0KLSAgICAgICAgICAgIG9iamVjdCArPSBvYmplY3RDb3VudCAqIHNpemU7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUgbGFzdCBvYmplY3QgaW4gYSBwYWdl
IHRvIGVzY2FwZSB0aGUgcGFnZS4KLSAgICAgICAgaWYgKG9iamVjdCA+IG1fdm1QYWdlU2l6ZVBo
eXNpY2FsKSB7Ci0gICAgICAgICAgICBCQVNTRVJUKHBhZ2VNZXRhZGF0YVtsaW5lXS5vYmplY3RD
b3VudCk7Ci0gICAgICAgICAgICAtLXBhZ2VNZXRhZGF0YVtsaW5lXS5vYmplY3RDb3VudDsKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBIZWFwOjppbml0aWFsaXplUGFnZU1ldGFkYXRhKCkK
LXsKLSAgICBhdXRvIGNvbXB1dGVQYWdlU2l6ZSA9IFsmXShzaXplX3Qgc2l6ZUNsYXNzKSB7Ci0g
ICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwotICAgICAgICBpZiAo
c2l6ZUNsYXNzIDwgYm1hbGxvYzo6c2l6ZUNsYXNzKHNtYWxsTGluZVNpemUpKQotICAgICAgICAg
ICAgcmV0dXJuIG1fdm1QYWdlU2l6ZVBoeXNpY2FsOwotCi0gICAgICAgIGZvciAoc2l6ZV90IHBh
Z2VTaXplID0gbV92bVBhZ2VTaXplUGh5c2ljYWw7Ci0gICAgICAgICAgICBwYWdlU2l6ZSA8IHBh
Z2VTaXplTWF4OwotICAgICAgICAgICAgcGFnZVNpemUgKz0gbV92bVBhZ2VTaXplUGh5c2ljYWwp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChwYWdlU2l6ZSA8PSBjaHVua1NpemUgLyAy
KTsKLSAgICAgICAgICAgIHNpemVfdCB3YXN0ZSA9IHBhZ2VTaXplICUgc2l6ZTsKLSAgICAgICAg
ICAgIGlmICh3YXN0ZSA8PSBwYWdlU2l6ZSAvIHBhZ2VTaXplV2FzdGVGYWN0b3IpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHBhZ2VTaXplOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gcGFnZVNpemVNYXg7Ci0gICAgfTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZUNsYXNzQ291bnQ7ICsraSkKLSAgICAgICAgbV9wYWdlQ2xhc3Nlc1tpXSA9IChjb21wdXRl
UGFnZVNpemUoaSkgLSAxKSAvIHNtYWxsUGFnZVNpemU7Ci19Ci0KIHNpemVfdCBIZWFwOjpmcmVl
YWJsZU1lbW9yeShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIHsKICAgICByZXR1cm4gbV9mcmVl
YWJsZU1lbW9yeTsKQEAgLTM0Miw3ICsyODAsOCBAQCBTbWFsbFBhZ2UqIEhlYXA6OmFsbG9jYXRl
U21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZUNsYQog
ICAgIG1fc2NhdmVuZ2VyLT5kaWRTdGFydEdyb3dpbmcoKTsKICAgICAKICAgICBTbWFsbFBhZ2Uq
IHBhZ2UgPSBbJl0oKSAtPiBTbWFsbFBhZ2UqIHsKLSAgICAgICAgc2l6ZV90IHBhZ2VDbGFzcyA9
IG1fcGFnZUNsYXNzZXNbc2l6ZUNsYXNzXTsKKyAgICAgICAgTWV0YWRhdGEgbWV0YWRhdGEgeyBz
aXplQ2xhc3MgfTsKKyAgICAgICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1ldGFkYXRhLnBhZ2VDbGFz
cygpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fZnJlZVBhZ2VzW3BhZ2VDbGFzc10uaXNFbXB0
eSgpKQogICAgICAgICAgICAgYWxsb2NhdGVTbWFsbENodW5rKGxvY2ssIHBhZ2VDbGFzcywgYWN0
aW9uKTsKQEAgLTM5OSw4ICszMzgsOCBAQCB2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUo
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIE9iamVjdCBvYmplY3QsIExpbgogICAgIGlm
IChwYWdlLT5yZWZDb3VudChsb2NrKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6ZV90IHNp
emVDbGFzcyA9IHBhZ2UtPnNpemVDbGFzcygpOwotICAgIHNpemVfdCBwYWdlQ2xhc3MgPSBtX3Bh
Z2VDbGFzc2VzW3NpemVDbGFzc107CisgICAgTWV0YWRhdGEgbWV0YWRhdGEgeyBwYWdlLT5zaXpl
Q2xhc3MoKSB9OworICAgIHNpemVfdCBwYWdlQ2xhc3MgPSBtZXRhZGF0YS5wYWdlQ2xhc3MoKTsK
IAogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gcGh5c2ljYWxQYWdlU2l6ZVNsb3BweShwYWdlLT5i
ZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZShwYWdlQ2xhc3MpKTsKIApAQCAtNDQwLDEzICszNzks
MTIgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5TWV0YWRhdGEoCiAgICAg
fQogICAgIFNtYWxsTGluZSogbGluZXMgPSBwYWdlLT5iZWdpbigpOwogICAgIEJBU1NFUlQocGFn
ZS0+aGFzRnJlZUxpbmVzKGxvY2spKTsKLSAgICBzaXplX3Qgc21hbGxMaW5lQ291bnQgPSBtX3Zt
UGFnZVNpemVQaHlzaWNhbCAvIHNtYWxsTGluZVNpemU7Ci0gICAgTGluZU1ldGFkYXRhKiBwYWdl
TWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3Vu
dF07Ci0gICAgCisgICAgTWV0YWRhdGEgbWV0YWRhdGEgeyBzaXplQ2xhc3MgfTsKKwogICAgIGF1
dG8gZmluZFNtYWxsQnVtcFJhbmdlID0gWyZdKHNpemVfdCYgbGluZU51bWJlcikgewotICAgICAg
ICBmb3IgKCA7IGxpbmVOdW1iZXIgPCBzbWFsbExpbmVDb3VudDsgKytsaW5lTnVtYmVyKSB7Cisg
ICAgICAgIGZvciAoIDsgbGluZU51bWJlciA8IG1ldGFkYXRhLnNtYWxsTGluZUNvdW50KCk7ICsr
bGluZU51bWJlcikgewogICAgICAgICAgICAgaWYgKCFsaW5lc1tsaW5lTnVtYmVyXS5yZWZDb3Vu
dChsb2NrKSkgewotICAgICAgICAgICAgICAgIGlmIChwYWdlTWV0YWRhdGFbbGluZU51bWJlcl0u
b2JqZWN0Q291bnQpCisgICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm9iamVjdENvdW50KGxp
bmVOdW1iZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNDU0LDE4ICszOTIsMTkgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNt
YWxsQnVtcFJhbmdlc0J5TWV0YWRhdGEoCiAgICAgfTsKIAogICAgIGF1dG8gYWxsb2NhdGVTbWFs
bEJ1bXBSYW5nZSA9IFsmXShzaXplX3QmIGxpbmVOdW1iZXIpIC0+IEJ1bXBSYW5nZSB7Ci0gICAg
ICAgIGNoYXIqIGJlZ2luID0gbGluZXNbbGluZU51bWJlcl0uYmVnaW4oKSArIHBhZ2VNZXRhZGF0
YVtsaW5lTnVtYmVyXS5zdGFydE9mZnNldDsKKyAgICAgICAgY2hhciogYmVnaW4gPSBsaW5lc1ts
aW5lTnVtYmVyXS5iZWdpbigpICsgbWV0YWRhdGEuc3RhcnRPZmZzZXQobGluZU51bWJlcik7CiAg
ICAgICAgIHVuc2lnbmVkIHNob3J0IG9iamVjdENvdW50ID0gMDsKICAgICAgICAgCi0gICAgICAg
IGZvciAoIDsgbGluZU51bWJlciA8IHNtYWxsTGluZUNvdW50OyArK2xpbmVOdW1iZXIpIHsKKyAg
ICAgICAgZm9yICggOyBsaW5lTnVtYmVyIDwgbWV0YWRhdGEuc21hbGxMaW5lQ291bnQoKTsgKyts
aW5lTnVtYmVyKSB7CiAgICAgICAgICAgICBpZiAobGluZXNbbGluZU51bWJlcl0ucmVmQ291bnQo
bG9jaykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmICghcGFnZU1l
dGFkYXRhW2xpbmVOdW1iZXJdLm9iamVjdENvdW50KQorICAgICAgICAgICAgYXV0byBsaW5lT2Jq
ZWN0Q291bnQgPSBtZXRhZGF0YS5vYmplY3RDb3VudChsaW5lTnVtYmVyKTsKKyAgICAgICAgICAg
IGlmICghbGluZU9iamVjdENvdW50KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBvYmplY3RDb3VudCArPSBwYWdlTWV0YWRhdGFbbGluZU51bWJlcl0ub2JqZWN0Q291
bnQ7Ci0gICAgICAgICAgICBsaW5lc1tsaW5lTnVtYmVyXS5yZWYobG9jaywgcGFnZU1ldGFkYXRh
W2xpbmVOdW1iZXJdLm9iamVjdENvdW50KTsKKyAgICAgICAgICAgIG9iamVjdENvdW50ICs9IGxp
bmVPYmplY3RDb3VudDsKKyAgICAgICAgICAgIGxpbmVzW2xpbmVOdW1iZXJdLnJlZihsb2NrLCBs
aW5lT2JqZWN0Q291bnQpOwogICAgICAgICAgICAgcGFnZS0+cmVmKGxvY2spOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB7IGJlZ2luLCBvYmplY3RDb3VudCB9OwpAQCAtNTMyLDggKzQ3MSw5
IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9iamVjdCgKICAgICAgICAg
cmV0dXJuIHsgYmVnaW4sIG9iamVjdENvdW50IH07CiAgICAgfTsKIAorICAgIE1ldGFkYXRhIG1l
dGFkYXRhIHsgc2l6ZUNsYXNzIH07CiAgICAgT2JqZWN0IGl0KHBhZ2UtPmJlZ2luKCktPmJlZ2lu
KCkpOwotICAgIE9iamVjdCBlbmQoaXQgKyBwYWdlU2l6ZShtX3BhZ2VDbGFzc2VzW3NpemVDbGFz
c10pKTsKKyAgICBPYmplY3QgZW5kKGl0ICsgcGFnZVNpemUobWV0YWRhdGEucGFnZUNsYXNzKCkp
KTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICghZmluZFNtYWxsQnVtcFJhbmdlKGl0LCBl
bmQpKSB7CiAgICAgICAgICAgICBwYWdlLT5zZXRIYXNGcmVlTGluZXMobG9jaywgZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXAuaAppbmRleCAwM2I2NDg4Y2VhZi4uMGQ2YjdmZGMxMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSGVhcC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRmFpbHVyZUFjdGlvbi5o
IgogI2luY2x1ZGUgIkhlYXBLaW5kLmgiCiAjaW5jbHVkZSAiTGFyZ2VNYXAuaCIKLSNpbmNsdWRl
ICJMaW5lTWV0YWRhdGEuaCIKICNpbmNsdWRlICJMaXN0LmgiCiAjaW5jbHVkZSAiTWFwLmgiCiAj
aW5jbHVkZSAiTXV0ZXguaCIKQEAgLTQxLDcgKzQwLDYgQEAKICNpbmNsdWRlICJQaHlzaWNhbFBh
Z2VNYXAuaCIKICNpbmNsdWRlICJTbWFsbExpbmUuaCIKICNpbmNsdWRlICJTbWFsbFBhZ2UuaCIK
LSNpbmNsdWRlICJWZWN0b3IuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxjb25kaXRp
b25fdmFyaWFibGU+CiAjaW5jbHVkZSA8bXV0ZXg+CkBAIC0xMTAsOSArMTA4LDYgQEAgcHJpdmF0
ZToKICAgICBib29sIHVzaW5nR2lnYWNhZ2UoKTsKICAgICB2b2lkKiBnaWdhY2FnZUJhc2VQdHIo
KTsgLy8gTWF5IGNyYXNoIGlmICF1c2luZ0dpZ2FjYWdlKCkuCiAgICAgc2l6ZV90IGdpZ2FjYWdl
U2l6ZSgpOwotICAgIAotICAgIHZvaWQgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOwotICAgIHZv
aWQgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpOwogCiAgICAgdm9pZCBhbGxvY2F0ZVNtYWxsQnVt
cFJhbmdlc0J5TWV0YWRhdGEoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLAogICAgICAgICBzaXpl
X3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiwgQnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUm
LCBGYWlsdXJlQWN0aW9uKTsKQEAgLTEzNiwxMCArMTMxLDYgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzUGVuZGluZ0RlY29tbWl0cyB7IGZhbHNlIH07CiAgICAgc3RkOjpjb25kaXRpb25fdmFy
aWFibGVfYW55IG1fY29uZGl0aW9uOwogCi0gICAgc2l6ZV90IG1fdm1QYWdlU2l6ZVBoeXNpY2Fs
OwotICAgIFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGE7Ci0gICAgc3Rk
OjphcnJheTxzaXplX3QsIHNpemVDbGFzc0NvdW50PiBtX3BhZ2VDbGFzc2VzOwotCiAgICAgTGlu
ZUNhY2hlIG1fbGluZUNhY2hlOwogICAgIHN0ZDo6YXJyYXk8TGlzdDxDaHVuaz4sIHBhZ2VDbGFz
c0NvdW50PiBtX2ZyZWVQYWdlczsKICAgICBzdGQ6OmFycmF5PExpc3Q8Q2h1bms+LCBwYWdlQ2xh
c3NDb3VudD4gbV9jaHVua0NhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9NZXRhZGF0YS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01ldGFkYXRhLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmE2ZTlkYWQ1NGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01ldGFkYXRhLmNwcApAQCAtMCwwICsx
LDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgIk1ldGFkYXRhLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworREVGSU5F
X1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKE1ldGFkYXRhU3RvcmFnZSk7CisKK01ldGFkYXRh
U3RvcmFnZTo6TWV0YWRhdGFTdG9yYWdlKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorICAgIDog
bV92bVBhZ2VTaXplUGh5c2ljYWwgeyB2bVBhZ2VTaXplUGh5c2ljYWwoKSB9Cit7CisgICAgUkVM
RUFTRV9CQVNTRVJUKG1fdm1QYWdlU2l6ZVBoeXNpY2FsID49IHNtYWxsUGFnZVNpemUpOworICAg
IFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplKCkgPj0gbV92bVBhZ2VTaXplUGh5c2ljYWwpOwor
CisgICAgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOworICAgIGluaXRpYWxpemVQYWdlTWV0YWRh
dGEoKTsKK30KKwordm9pZCBNZXRhZGF0YVN0b3JhZ2U6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEo
KQoreworICAgIHNpemVfdCBzaXplQ2xhc3NDb3VudCA9IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFs
bExpbmVTaXplKTsKKyAgICBtX3NtYWxsTGluZU1ldGFkYXRhLmdyb3coc2l6ZUNsYXNzQ291bnQg
KiBzbWFsbExpbmVDb3VudCgpKTsKKworICAgIGZvciAoc2l6ZV90IHNpemVDbGFzcyA9IDA7IHNp
emVDbGFzcyA8IHNpemVDbGFzc0NvdW50OyArK3NpemVDbGFzcykgeworICAgICAgICBzaXplX3Qg
c2l6ZSA9IG9iamVjdFNpemUoc2l6ZUNsYXNzKTsKKyAgICAgICAgTGluZU1ldGFkYXRhKiBwYWdl
TWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3Vu
dCgpXTsKKworICAgICAgICBzaXplX3Qgb2JqZWN0ID0gMDsKKyAgICAgICAgc2l6ZV90IGxpbmUg
PSAwOworICAgICAgICB3aGlsZSAob2JqZWN0IDwgbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKKyAg
ICAgICAgICAgIGxpbmUgPSBvYmplY3QgLyBzbWFsbExpbmVTaXplOworICAgICAgICAgICAgc2l6
ZV90IGxlZnRvdmVyID0gb2JqZWN0ICUgc21hbGxMaW5lU2l6ZTsKKworICAgICAgICAgICAgc2l6
ZV90IG9iamVjdENvdW50OworICAgICAgICAgICAgc2l6ZV90IHJlbWFpbmRlcjsKKyAgICAgICAg
ICAgIGRpdmlkZVJvdW5kaW5nVXAoc21hbGxMaW5lU2l6ZSAtIGxlZnRvdmVyLCBzaXplLCBvYmpl
Y3RDb3VudCwgcmVtYWluZGVyKTsKKworICAgICAgICAgICAgcGFnZU1ldGFkYXRhW2xpbmVdID0g
eyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihsZWZ0b3ZlciksIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KG9iamVjdENvdW50KSB9OworCisgICAgICAgICAgICBvYmplY3QgKz0gb2JqZWN0
Q291bnQgKiBzaXplOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGxh
c3Qgb2JqZWN0IGluIGEgcGFnZSB0byBlc2NhcGUgdGhlIHBhZ2UuCisgICAgICAgIGlmIChvYmpl
Y3QgPiBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgeworICAgICAgICAgICAgQkFTU0VSVChwYWdlTWV0
YWRhdGFbbGluZV0ub2JqZWN0Q291bnQpOworICAgICAgICAgICAgLS1wYWdlTWV0YWRhdGFbbGlu
ZV0ub2JqZWN0Q291bnQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTWV0YWRhdGFTdG9y
YWdlOjppbml0aWFsaXplUGFnZU1ldGFkYXRhKCkKK3sKKyAgICBhdXRvIGNvbXB1dGVQYWdlU2l6
ZSA9IFsmXShzaXplX3Qgc2l6ZUNsYXNzKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gb2JqZWN0
U2l6ZShzaXplQ2xhc3MpOworICAgICAgICBpZiAoc2l6ZUNsYXNzIDwgYm1hbGxvYzo6c2l6ZUNs
YXNzKHNtYWxsTGluZVNpemUpKQorICAgICAgICAgICAgcmV0dXJuIG1fdm1QYWdlU2l6ZVBoeXNp
Y2FsOworCisgICAgICAgIGZvciAoc2l6ZV90IHBhZ2VTaXplID0gbV92bVBhZ2VTaXplUGh5c2lj
YWw7IHBhZ2VTaXplIDwgcGFnZVNpemVNYXg7IHBhZ2VTaXplICs9IG1fdm1QYWdlU2l6ZVBoeXNp
Y2FsKSB7CisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQocGFnZVNpemUgPD0gY2h1bmtTaXpl
IC8gMik7CisgICAgICAgICAgICBzaXplX3Qgd2FzdGUgPSBwYWdlU2l6ZSAlIHNpemU7CisgICAg
ICAgICAgICBpZiAod2FzdGUgPD0gcGFnZVNpemUgLyBwYWdlU2l6ZVdhc3RlRmFjdG9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiBwYWdlU2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biBwYWdlU2l6ZU1heDsKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
Q2xhc3NDb3VudDsgKytpKQorICAgICAgICBtX3BhZ2VDbGFzc2VzW2ldID0gKGNvbXB1dGVQYWdl
U2l6ZShpKSAtIDEpIC8gc21hbGxQYWdlU2l6ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgYm1hbGxv
YwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvTWV0YWRhdGEuaApzaW1pbGFyaXR5IGluZGV4IDUwJQpyZW5h
bWUgZnJvbSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCnJlbmFtZSB0byBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL01ldGFkYXRhLmgKaW5kZXggODBiMzM4MTExOTkuLjJjZTJj
NTcyMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTWV0YWRhdGEuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMywxNCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBMaW5lTWV0YWRhdGFfaAotI2RlZmluZSBM
aW5lTWV0YWRhdGFfaAorI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNdXRleC5oIgorI2luY2x1
ZGUgIlNpemVzLmgiCisjaW5jbHVkZSAiU3RhdGljUGVyUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlZl
Y3Rvci5oIgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG11dGV4PgogCiBuYW1lc3BhY2Ug
Ym1hbGxvYyB7CiAKQEAgLTMzLDYgKzM5LDQ5IEBAIHN0cnVjdCBMaW5lTWV0YWRhdGEgewogICAg
IHVuc2lnbmVkIGNoYXIgb2JqZWN0Q291bnQ7CiB9OwogCitjbGFzcyBNZXRhZGF0YVN0b3JhZ2Ug
OiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxNZXRhZGF0YVN0b3JhZ2U+IHsKK3B1YmxpYzoKKyAg
ICBNZXRhZGF0YVN0b3JhZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIH5NZXRhZGF0
YVN0b3JhZ2UoKSA9IGRlbGV0ZTsKKworICAgIGlubGluZSBzaXplX3QgcGFnZUNsYXNzKHNpemVf
dCBzaXplQ2xhc3MpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUNsYXNzZXNbc2l6ZUNsYXNzXTsgfQor
ICAgIGlubGluZSBzaXplX3Qgc21hbGxMaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3ZtUGFn
ZVNpemVQaHlzaWNhbCAvIHNtYWxsTGluZVNpemU7IH0KKworICAgIGlubGluZSBMaW5lTWV0YWRh
dGEmIGxpbmVNZXRhZGF0YShzaXplX3Qgc2l6ZUNsYXNzLCBzaXplX3QgbGluZU51bWJlcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxs
TGluZUNvdW50KCkgKyBsaW5lTnVtYmVyXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBp
bml0aWFsaXplTGluZU1ldGFkYXRhKCk7CisgICAgdm9pZCBpbml0aWFsaXplUGFnZU1ldGFkYXRh
KCk7CisKKyAgICBzaXplX3QgbV92bVBhZ2VTaXplUGh5c2ljYWw7CisgICAgVmVjdG9yPExpbmVN
ZXRhZGF0YT4gbV9zbWFsbExpbmVNZXRhZGF0YTsKKyAgICBzdGQ6OmFycmF5PHNpemVfdCwgc2l6
ZUNsYXNzQ291bnQ+IG1fcGFnZUNsYXNzZXM7Cit9OworREVDTEFSRV9TVEFUSUNfUEVSX1BST0NF
U1NfU1RPUkFHRShNZXRhZGF0YVN0b3JhZ2UpOworCitjbGFzcyBNZXRhZGF0YSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgTWV0YWRhdGEoc2l6ZV90IHNpemVDbGFzcykKKyAgICAgICAgOiBtX3Np
emVDbGFzcyB7IHNpemVDbGFzcyB9CisgICAgICAgICwgbV9zdG9yYWdlIHsgKk1ldGFkYXRhU3Rv
cmFnZTo6Z2V0KCkgfQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgc2l6ZV90IHBhZ2VDbGFz
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5wYWdlQ2xhc3MobV9zaXplQ2xhc3MpOyB9Cisg
ICAgaW5saW5lIHNpemVfdCBzbWFsbExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZS5zbWFsbExpbmVDb3VudCgpOyB9CisgICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgc3RhcnRPZmZz
ZXQoc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0YShsaW5lTnVtYmVyKS5z
dGFydE9mZnNldDsgfQorICAgIGlubGluZSB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50KHNpemVf
dCBsaW5lTnVtYmVyKSB7IHJldHVybiBsaW5lTWV0YWRhdGEobGluZU51bWJlcikub2JqZWN0Q291
bnQ7IH0KKworcHJpdmF0ZToKKyAgICBpbmxpbmUgY29uc3QgTGluZU1ldGFkYXRhJiBsaW5lTWV0
YWRhdGEoc2l6ZV90IGxpbmVOdW1iZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5saW5lTWV0
YWRhdGEobV9zaXplQ2xhc3MsIGxpbmVOdW1iZXIpOyB9CisKKyAgICBzaXplX3QgbV9zaXplQ2xh
c3M7CisgICAgTWV0YWRhdGFTdG9yYWdlJiBtX3N0b3JhZ2U7Cit9OworCiBzdGF0aWNfYXNzZXJ0
KAogICAgIHNtYWxsTGluZVNpemUgLSBhbGlnbm1lbnQgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZCBjaGFyPjo6bWF4KCksCiAgICAgIm1heGltdW0gb2JqZWN0IG9mZnNldCBtdXN0IGZp
dCBpbiBMaW5lTWV0YWRhdGE6OnN0YXJ0T2Zmc2V0Iik7CkBAIC00Miw1ICs5MSwzIEBAIHN0YXRp
Y19hc3NlcnQoCiAgICAgIm1heGltdW0gb2JqZWN0IGNvdW50IG11c3QgZml0IGluIExpbmVNZXRh
ZGF0YTo6b2JqZWN0Q291bnQiKTsKIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYg
Ly8gTGluZU1ldGFkYXRhX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386995</attachid>
            <date>2020-01-07 10:50:50 -0800</date>
            <delta_ts>2020-01-08 17:08:17 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-205834.diff</filename>
            <type>text/plain</type>
            <size>24040</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKaW5kZXggZjNiZWExOWQxOTQuLjkwZDZhOTE0MTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAg
Ym1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCiAgICAgYm1hbGxvYy9MYXJnZU1hcC5jcHAKICAgICBi
bWFsbG9jL0xvZ2dpbmcuY3BwCisgICAgYm1hbGxvYy9NZXRhZGF0YS5jcHAKICAgICBibWFsbG9j
L011dGV4LmNwcAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHAKICAgICBibWFsbG9jL1BlclBy
b2Nlc3MuY3BwCkBAIC0xMDMsMTAgKzEwNCwxMCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVS
UwogICAgIGJtYWxsb2MvSXNvVExTTGF5b3V0LmgKICAgICBibWFsbG9jL0xhcmdlTWFwLmgKICAg
ICBibWFsbG9jL0xhcmdlUmFuZ2UuaAotICAgIGJtYWxsb2MvTGluZU1ldGFkYXRhLmgKICAgICBi
bWFsbG9jL0xpc3QuaAogICAgIGJtYWxsb2MvTG9nZ2luZy5oCiAgICAgYm1hbGxvYy9NYXAuaAor
ICAgIGJtYWxsb2MvTWV0YWRhdGEuaAogICAgIGJtYWxsb2MvTXV0ZXguaAogICAgIGJtYWxsb2Mv
T2JqZWN0LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvQ2hhbmdlTG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDE5Yjg5ZTky
YWNmLi5mOWY5MWI3YzJiYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAxLTA2
ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBbYm1h
bGxvY10gRXh0cmFjdCBtZXRhZGF0YSBmcm9tIEhlYXAgYW5kIHNoYXJlIGl0IGFtb25nIEhlYXBz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1ODM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogQWRkZWQgTWV0YWRhdGEuY3BwLgorICAgICAgICAqIGJtYWxsb2MueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDog
UmVmZXJlbmNpbmcgTWV0YWRhdGEgb2JqZWN0IHRvIGdldCBpbmZvcm1hdGlvbi4KKyAgICAgICAg
KGJtYWxsb2M6OkhlYXA6OkhlYXApOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVT
bWFsbFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZSk6
CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5TWV0YWRh
dGEpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9i
amVjdCk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjppbml0aWFsaXplTGluZU1ldGFkYXRhKTog
RGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmluaXRpYWxpemVQYWdlTWV0YWRhdGEp
OiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5oOiBFeHRyYWN0IG1ldGFkYXRhIGlu
aXRpYWxpemF0aW9uIGFuZCBtZW1iZXIgdmFyaWFibGVzLgorICAgICAgICAqIGJtYWxsb2MvTWV0
YWRhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFnZTo6TWV0
YWRhdGFTdG9yYWdlKToKKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFnZTo6aW5pdGlh
bGl6ZUxpbmVNZXRhZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YVN0b3JhZ2U6Omlu
aXRpYWxpemVQYWdlTWV0YWRhdGEpOgorICAgICAgICAqIGJtYWxsb2MvTWV0YWRhdGEuaDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmguCisgICAgICAg
IChibWFsbG9jOjpNZXRhZGF0YVN0b3JhZ2U6OnBhZ2VDbGFzcyBjb25zdCk6CisgICAgICAgIChi
bWFsbG9jOjpNZXRhZGF0YVN0b3JhZ2U6OnNtYWxsTGluZUNvdW50IGNvbnN0KToKKyAgICAgICAg
KGJtYWxsb2M6Ok1ldGFkYXRhU3RvcmFnZTo6bGluZU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxs
b2M6Ok1ldGFkYXRhOjpNZXRhZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YTo6cGFn
ZUNsYXNzIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhOjpzbWFsbExpbmVDb3Vu
dCBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YTo6c3RhcnRPZmZzZXQpOgorICAg
ICAgICAoYm1hbGxvYzo6TWV0YWRhdGE6Om9iamVjdENvdW50KToKKyAgICAgICAgKGJtYWxsb2M6
Ok1ldGFkYXRhOjpsaW5lTWV0YWRhdGEgY29uc3QpOgorCiAyMDIwLTAxLTAyICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+IGFuZCBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEV4cGVyaW1lbnQ6IGNyZWF0ZSBsb3RzIG9mIGRpZmZlcmVu
dCBtYWxsb2Mgem9uZXMgZm9yIGVhc2llciBhY2NvdW50aW5nIG9mIG1lbW9yeSB1c2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1
MWMyNThiZDQ4My4uZWJkOTI3ZGY5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgwLDcgKzgwLDYgQEAKIAkJMTQwMDI3NDkx
OEY4OUMxMzAwMTE1Qzk3IC8qIEhlYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0REEzMjBDMTg4NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQwMDI3NEExOEY4
OUMyMzAwMTE1Qzk3IC8qIFZNSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ0RjdCRkMxOEJGQzUxNzAwMzUzN0YzIC8qIFZNSGVhcC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MEZBMDAzMTlD
RTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDE0MEZBMDAyMTlDRTQyOUMwMEZGRDNDOCAvKiBCdW1wUmFuZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNDBG
QTAwNTE5Q0U0QjY4MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBGQTAwNDE5Q0U0QjY4MDBGRkQzQzggLyog
TGluZU1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQxRDlCMDAxQzhFNTFDMDAwMEFCQkEwIC8qIExpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MUQ5QUZGMUM4RTUxQzAwMDBBQkJB
MCAvKiBMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTQyQjQ0MzYxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDJCNDQzNDFFMjgzOUU3MDAx
REE2RTkgLyogRGVidWdIZWFwLmNwcCAqLzsgfTsKIAkJMTQyQjQ0MzcxRTI4MzlFNzAwMURBNkU5
IC8qIERlYnVnSGVhcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQyQjQ0MzUxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5oICovOyB9OwpAQCAt
MTQ3LDYgKzE0Niw4IEBACiAJCUUzRkJCNUExMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRI
ZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RkJCNTlFMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRIZWFwLmNwcCAqLzsgfTsKIAkJRTNG
QkI1QTIyMjVFQURCMDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkJCNTlGMjI1RUFEQjAwMERCNkZCRCAv
KiBJc29TaGFyZWRIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTNGQkI1QTQyMjVFQ0FEMjAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXBJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZC
QjVBMzIyNUVDQUQyMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcElubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFQjE3RDExMTIzQkZDRDQy
MDAyMDkzQTcgLyogTWV0YWRhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIE1ldGFkYXRhLmNwcCAq
LzsgfTsKKwkJRUIxN0QxMTIyM0JGQ0Q3QTAwMjA5M0E3IC8qIE1ldGFkYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDEwRTIzQkU2OTFEMDAy
MDkzQTcgLyogTWV0YWRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRTQ4QkQzQjIzMjFFOEQ3MDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0OEJEM0Ey
MzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKQEAgLTIyNSw3ICsyMjYsNiBAQAogCQkwRjdFQjg1OTFGOTU1QTBGMDBGMUFCQ0IgLyogRGVm
ZXJyZWREZWNvbW1pdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
RGVmZXJyZWREZWNvbW1pdElubGluZXMuaDsgcGF0aCA9IGJtYWxsb2MvRGVmZXJyZWREZWNvbW1p
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZENTU3MzIxRjdFREI3
QjAwQjFGMEEzIC8qIEhlYXBLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEhlYXBLaW5kLmNwcDsgcGF0aCA9IGJtYWxsb2MvSGVhcEtpbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDBGQTAwMjE5Q0U0MjlDMDBGRkQzQzggLyogQnVtcFJh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJ1bXBSYW5nZS5oOyBwYXRo
ID0gYm1hbGxvYy9CdW1wUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQw
RkEwMDQxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMaW5lTWV0YWRhdGEuaDsgcGF0aCA9IGJtYWxsb2MvTGluZU1ldGFk
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTA1RTgzMThFMTQzNzQwMDNB
MTA2RSAvKiBPYmplY3RUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IE9iamVjdFR5cGUuY3BwOyBwYXRoID0gYm1hbGxvYy9PYmplY3RUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQxM0U0NjAxODlEQ0UxRTAwNTQ2RDY4IC8qIEJJbmxp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQklubGluZS5oOyBwYXRoID0g
Ym1hbGxvYy9CSW5saW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTNFNDYy
MTg5REUxQ0QwMDU0NkQ2OCAvKiBCdW1wQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBCdW1wQWxsb2NhdG9yLmg7IHBhdGggPSBibWFs
bG9jL0J1bXBBbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMCw2
ICszMDAsOCBAQAogCQlFM0ZCQjU5RTIyNUVBREIwMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBJc29TaGFyZWRIZWFwLmNw
cDsgcGF0aCA9IGJtYWxsb2MvSXNvU2hhcmVkSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRkJCNTlGMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRIZWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZEhlYXAuaDsgcGF0aCA9IGJt
YWxsb2MvSXNvU2hhcmVkSGVhcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ZC
QjVBMzIyNUVDQUQyMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcElubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSXNvU2hhcmVkSGVhcElubGluZXMuaDsgcGF0aCA9IGJt
YWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRUIxN0QxMEUyM0JFNjkxRDAwMjA5M0E3IC8qIE1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1ldGFkYXRhLmg7IHBhdGggPSBibWFsbG9jL01ldGFkYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMTdEMTEwMjNCRkM4QzQwMDIwOTNBNyAv
KiBNZXRhZGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZXRh
ZGF0YS5jcHA7IHBhdGggPSBibWFsbG9jL01ldGFkYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU0OEJEM0EyMzIxRThDQzAwRjEzNkQwIC8qIEZhaWx1cmVBY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmFpbHVyZUFjdGlvbi5oOyBwYXRoID0g
Ym1hbGxvYy9GYWlsdXJlQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKQEAgLTQ4Miw3ICs0ODQsOCBAQAogCQkJ
CTBGNUJGMTRDMUYyMkIwQzMwMDI5RDkxRCAvKiBHaWdhY2FnZS5oICovLAogCQkJCTE0REEzMjBF
MTg4NzVEOUYwMDcyNjlFMCAvKiBIZWFwLmNwcCAqLywKIAkJCQkxNERBMzIwQzE4ODc1QjA5MDA3
MjY5RTAgLyogSGVhcC5oICovLAotCQkJCTE0MEZBMDA0MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5l
TWV0YWRhdGEuaCAqLywKKwkJCQlFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogTWV0YWRhdGEu
Y3BwICovLAorCQkJCUVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAvKiBNZXRhZGF0YS5oICovLAog
CQkJCTE0NEJFMTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCAqLywKIAkJCQkxNDEwNUU4
MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8sCiAJCQkJMTQ4NTY1NjAxOEE0
M0RCQTAwRUQ2OTQyIC8qIE9iamVjdFR5cGUuaCAqLywKQEAgLTYzMywxMCArNjM2LDEwIEBACiAJ
CQkJMEY3RUI4NDAxRjk1NDFCMDAwRjFBQkNCIC8qIElzb1RMU0xheW91dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ0QzA3RjUxQzdCNzAyNjAwNTFCQjZBIC8qIExhcmdlTWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNEM4OTkyRDFDQzU3ODMzMDAyN0EwNTcgLyogTGFyZ2VSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMTQwRkEwMDUxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxRDlCMDAxQzhFNTFDMDAwMEFCQkEwIC8qIExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ0MjZFMjgxMUM4MzhFRTAwMDhFQjA0MiAvKiBMb2dnaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNEM4OTkyQjFDQzQ4NUU3MDAyN0EwNTcgLyogTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkzQTcgLyogTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTUyRjQ3MjQ5MjEwQkEzMDIwMEI3MzBCQiAvKiBNZW1vcnlTdGF0
dXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0M0NCODFEMTkwMjJCQzkwMEIxNkE0NSAvKiBN
dXRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0QkUxMUYxQ0EzNDY1MjAwOTlDOEMwIC8qIE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjksNiArNzcyLDcgQEAKIAkJCQkwRjdFQjgzRjFG
OTU0MUIwMDBGMUFCQ0IgLyogSXNvVExTTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0
NEMwN0Y0MUM3QjcwMjYwMDUxQkI2QSAvKiBMYXJnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0NDI2RTI4MDFDODM4RUUwMDA4RUIwNDIgLyogTG9nZ2luZy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFQjE3RDExMTIzQkZDRDQyMDAyMDkzQTcgLyogTWV0YWRhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQzQ0I4MUMxOTAyMkJDOTAwQjE2QTQ1IC8qIE11dGV4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0RjI3MUM4MThFQTM5OTAwMDhDMTUyRiAvKiBPYmplY3RUeXBlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjZBN0E1MjA1NDgzMTMwMDkwQTE0MSAvKiBQZXJQcm9jZXNzLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKaW5kZXggZTk4ZjY1OTYwYTAu
LjUwYTcyYjIxYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3Bw
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTMwLDkgKzMwLDEwIEBA
CiAjaW5jbHVkZSAiQnVtcEFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkNodW5rLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvUmFuZG9tLmgiCisjaW5jbHVkZSAiRGVidWdIZWFwLmgiCiAjaW5jbHVkZSAiRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJHaWdhY2FnZS5oIgotI2luY2x1ZGUgIkRlYnVnSGVhcC5o
IgorI2luY2x1ZGUgIk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlNjYXZlbmdlci5oIgogI2luY2x1ZGUgIlNtYWxsTGluZS5oIgpAQCAtNDYsMTQgKzQ3LDcg
QEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBIZWFwOjpIZWFwKEhlYXBLaW5kIGtpbmQsIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKQogICAgIDogbV9raW5kKGtpbmQpCi0gICAgLCBtX3ZtUGFnZVNp
emVQaHlzaWNhbCh2bVBhZ2VTaXplUGh5c2ljYWwoKSkKIHsKLSAgICBSRUxFQVNFX0JBU1NFUlQo
dm1QYWdlU2l6ZVBoeXNpY2FsKCkgPj0gc21hbGxQYWdlU2l6ZSk7Ci0gICAgUkVMRUFTRV9CQVNT
RVJUKHZtUGFnZVNpemUoKSA+PSB2bVBhZ2VTaXplUGh5c2ljYWwoKSk7Ci0KLSAgICBpbml0aWFs
aXplTGluZU1ldGFkYXRhKCk7Ci0gICAgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpOwotICAgIAog
ICAgIEJBU1NFUlQoIUVudmlyb25tZW50OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpOwog
CiAgICAgR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKCk7CkBAIC04Nyw2MiArODEsNiBAQCBzaXpl
X3QgSGVhcDo6Z2lnYWNhZ2VTaXplKCkKICAgICByZXR1cm4gR2lnYWNhZ2U6OnNpemUoZ2lnYWNh
Z2VLaW5kKG1fa2luZCkpOwogfQogCi12b2lkIEhlYXA6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEo
KQotewotICAgIHNpemVfdCBzaXplQ2xhc3NDb3VudCA9IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFs
bExpbmVTaXplKTsKLSAgICBzaXplX3Qgc21hbGxMaW5lQ291bnQgPSBtX3ZtUGFnZVNpemVQaHlz
aWNhbCAvIHNtYWxsTGluZVNpemU7Ci0gICAgbV9zbWFsbExpbmVNZXRhZGF0YS5ncm93KHNpemVD
bGFzc0NvdW50ICogc21hbGxMaW5lQ291bnQpOwotCi0gICAgZm9yIChzaXplX3Qgc2l6ZUNsYXNz
ID0gMDsgc2l6ZUNsYXNzIDwgc2l6ZUNsYXNzQ291bnQ7ICsrc2l6ZUNsYXNzKSB7Ci0gICAgICAg
IHNpemVfdCBzaXplID0gb2JqZWN0U2l6ZShzaXplQ2xhc3MpOwotICAgICAgICBMaW5lTWV0YWRh
dGEqIHBhZ2VNZXRhZGF0YSA9ICZtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxs
TGluZUNvdW50XTsKLQotICAgICAgICBzaXplX3Qgb2JqZWN0ID0gMDsKLSAgICAgICAgc2l6ZV90
IGxpbmUgPSAwOwotICAgICAgICB3aGlsZSAob2JqZWN0IDwgbV92bVBhZ2VTaXplUGh5c2ljYWwp
IHsKLSAgICAgICAgICAgIGxpbmUgPSBvYmplY3QgLyBzbWFsbExpbmVTaXplOwotICAgICAgICAg
ICAgc2l6ZV90IGxlZnRvdmVyID0gb2JqZWN0ICUgc21hbGxMaW5lU2l6ZTsKLQotICAgICAgICAg
ICAgc2l6ZV90IG9iamVjdENvdW50OwotICAgICAgICAgICAgc2l6ZV90IHJlbWFpbmRlcjsKLSAg
ICAgICAgICAgIGRpdmlkZVJvdW5kaW5nVXAoc21hbGxMaW5lU2l6ZSAtIGxlZnRvdmVyLCBzaXpl
LCBvYmplY3RDb3VudCwgcmVtYWluZGVyKTsKLQotICAgICAgICAgICAgcGFnZU1ldGFkYXRhW2xp
bmVdID0geyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihsZWZ0b3ZlciksIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KG9iamVjdENvdW50KSB9OwotCi0gICAgICAgICAgICBvYmplY3QgKz0g
b2JqZWN0Q291bnQgKiBzaXplOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRG9uJ3QgYWxsb3cg
dGhlIGxhc3Qgb2JqZWN0IGluIGEgcGFnZSB0byBlc2NhcGUgdGhlIHBhZ2UuCi0gICAgICAgIGlm
IChvYmplY3QgPiBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgewotICAgICAgICAgICAgQkFTU0VSVChw
YWdlTWV0YWRhdGFbbGluZV0ub2JqZWN0Q291bnQpOwotICAgICAgICAgICAgLS1wYWdlTWV0YWRh
dGFbbGluZV0ub2JqZWN0Q291bnQ7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgSGVhcDo6
aW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpCi17Ci0gICAgYXV0byBjb21wdXRlUGFnZVNpemUgPSBb
Jl0oc2l6ZV90IHNpemVDbGFzcykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUo
c2l6ZUNsYXNzKTsKLSAgICAgICAgaWYgKHNpemVDbGFzcyA8IGJtYWxsb2M6OnNpemVDbGFzcyhz
bWFsbExpbmVTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBtX3ZtUGFnZVNpemVQaHlzaWNhbDsK
LQotICAgICAgICBmb3IgKHNpemVfdCBwYWdlU2l6ZSA9IG1fdm1QYWdlU2l6ZVBoeXNpY2FsOwot
ICAgICAgICAgICAgcGFnZVNpemUgPCBwYWdlU2l6ZU1heDsKLSAgICAgICAgICAgIHBhZ2VTaXpl
ICs9IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQo
cGFnZVNpemUgPD0gY2h1bmtTaXplIC8gMik7Ci0gICAgICAgICAgICBzaXplX3Qgd2FzdGUgPSBw
YWdlU2l6ZSAlIHNpemU7Ci0gICAgICAgICAgICBpZiAod2FzdGUgPD0gcGFnZVNpemUgLyBwYWdl
U2l6ZVdhc3RlRmFjdG9yKQotICAgICAgICAgICAgICAgIHJldHVybiBwYWdlU2l6ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHBhZ2VTaXplTWF4OwotICAgIH07Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVDbGFzc0NvdW50OyArK2kpCi0gICAgICAgIG1f
cGFnZUNsYXNzZXNbaV0gPSAoY29tcHV0ZVBhZ2VTaXplKGkpIC0gMSkgLyBzbWFsbFBhZ2VTaXpl
OwotfQotCiBzaXplX3QgSGVhcDo6ZnJlZWFibGVNZW1vcnkoc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7CkBAIC0zNDIsNyArMjgwLDggQEAg
U21hbGxQYWdlKiBIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4
PiYgbG9jaywgc2l6ZV90IHNpemVDbGEKICAgICBtX3NjYXZlbmdlci0+ZGlkU3RhcnRHcm93aW5n
KCk7CiAgICAgCiAgICAgU21hbGxQYWdlKiBwYWdlID0gWyZdKCkgLT4gU21hbGxQYWdlKiB7Ci0g
ICAgICAgIHNpemVfdCBwYWdlQ2xhc3MgPSBtX3BhZ2VDbGFzc2VzW3NpemVDbGFzc107CisgICAg
ICAgIE1ldGFkYXRhIG1ldGFkYXRhIHsgc2l6ZUNsYXNzIH07CisgICAgICAgIHNpemVfdCBwYWdl
Q2xhc3MgPSBtZXRhZGF0YS5wYWdlQ2xhc3MoKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX2Zy
ZWVQYWdlc1twYWdlQ2xhc3NdLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFsbG9jYXRlU21hbGxD
aHVuayhsb2NrLCBwYWdlQ2xhc3MsIGFjdGlvbik7CkBAIC0zOTksOCArMzM4LDggQEAgdm9pZCBI
ZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBP
YmplY3Qgb2JqZWN0LCBMaW4KICAgICBpZiAocGFnZS0+cmVmQ291bnQobG9jaykpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNpemVfdCBzaXplQ2xhc3MgPSBwYWdlLT5zaXplQ2xhc3MoKTsKLSAg
ICBzaXplX3QgcGFnZUNsYXNzID0gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOworICAgIE1ldGFk
YXRhIG1ldGFkYXRhIHsgcGFnZS0+c2l6ZUNsYXNzKCkgfTsKKyAgICBzaXplX3QgcGFnZUNsYXNz
ID0gbWV0YWRhdGEucGFnZUNsYXNzKCk7CiAKICAgICBtX2ZyZWVhYmxlTWVtb3J5ICs9IHBoeXNp
Y2FsUGFnZVNpemVTbG9wcHkocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSwgcGFnZVNpemUocGFnZUNs
YXNzKSk7CiAKQEAgLTQ0MCwxMyArMzc5LDEyIEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1
bXBSYW5nZXNCeU1ldGFkYXRhKAogICAgIH0KICAgICBTbWFsbExpbmUqIGxpbmVzID0gcGFnZS0+
YmVnaW4oKTsKICAgICBCQVNTRVJUKHBhZ2UtPmhhc0ZyZWVMaW5lcyhsb2NrKSk7Ci0gICAgc2l6
ZV90IHNtYWxsTGluZUNvdW50ID0gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFsbExpbmVTaXpl
OwotICAgIExpbmVNZXRhZGF0YSogcGFnZU1ldGFkYXRhID0gJm1fc21hbGxMaW5lTWV0YWRhdGFb
c2l6ZUNsYXNzICogc21hbGxMaW5lQ291bnRdOwotICAgIAorICAgIE1ldGFkYXRhIG1ldGFkYXRh
IHsgc2l6ZUNsYXNzIH07CisKICAgICBhdXRvIGZpbmRTbWFsbEJ1bXBSYW5nZSA9IFsmXShzaXpl
X3QmIGxpbmVOdW1iZXIpIHsKLSAgICAgICAgZm9yICggOyBsaW5lTnVtYmVyIDwgc21hbGxMaW5l
Q291bnQ7ICsrbGluZU51bWJlcikgeworICAgICAgICBmb3IgKCA7IGxpbmVOdW1iZXIgPCBtZXRh
ZGF0YS5zbWFsbExpbmVDb3VudCgpOyArK2xpbmVOdW1iZXIpIHsKICAgICAgICAgICAgIGlmICgh
bGluZXNbbGluZU51bWJlcl0ucmVmQ291bnQobG9jaykpIHsKLSAgICAgICAgICAgICAgICBpZiAo
cGFnZU1ldGFkYXRhW2xpbmVOdW1iZXJdLm9iamVjdENvdW50KQorICAgICAgICAgICAgICAgIGlm
IChtZXRhZGF0YS5vYmplY3RDb3VudChsaW5lTnVtYmVyKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NCwxOCArMzkyLDE5
IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKAogICAgIH07
CiAKICAgICBhdXRvIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2UgPSBbJl0oc2l6ZV90JiBsaW5lTnVt
YmVyKSAtPiBCdW1wUmFuZ2UgewotICAgICAgICBjaGFyKiBiZWdpbiA9IGxpbmVzW2xpbmVOdW1i
ZXJdLmJlZ2luKCkgKyBwYWdlTWV0YWRhdGFbbGluZU51bWJlcl0uc3RhcnRPZmZzZXQ7CisgICAg
ICAgIGNoYXIqIGJlZ2luID0gbGluZXNbbGluZU51bWJlcl0uYmVnaW4oKSArIG1ldGFkYXRhLnN0
YXJ0T2Zmc2V0KGxpbmVOdW1iZXIpOwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBvYmplY3RDb3Vu
dCA9IDA7CiAgICAgICAgIAotICAgICAgICBmb3IgKCA7IGxpbmVOdW1iZXIgPCBzbWFsbExpbmVD
b3VudDsgKytsaW5lTnVtYmVyKSB7CisgICAgICAgIGZvciAoIDsgbGluZU51bWJlciA8IG1ldGFk
YXRhLnNtYWxsTGluZUNvdW50KCk7ICsrbGluZU51bWJlcikgewogICAgICAgICAgICAgaWYgKGxp
bmVzW2xpbmVOdW1iZXJdLnJlZkNvdW50KGxvY2spKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgICBpZiAoIXBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXS5vYmplY3RDb3VudCkK
KyAgICAgICAgICAgIGF1dG8gbGluZU9iamVjdENvdW50ID0gbWV0YWRhdGEub2JqZWN0Q291bnQo
bGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoIWxpbmVPYmplY3RDb3VudCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgb2JqZWN0Q291bnQgKz0gcGFnZU1ldGFk
YXRhW2xpbmVOdW1iZXJdLm9iamVjdENvdW50OwotICAgICAgICAgICAgbGluZXNbbGluZU51bWJl
cl0ucmVmKGxvY2ssIHBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXS5vYmplY3RDb3VudCk7CisgICAg
ICAgICAgICBvYmplY3RDb3VudCArPSBsaW5lT2JqZWN0Q291bnQ7CisgICAgICAgICAgICBsaW5l
c1tsaW5lTnVtYmVyXS5yZWYobG9jaywgbGluZU9iamVjdENvdW50KTsKICAgICAgICAgICAgIHBh
Z2UtPnJlZihsb2NrKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4geyBiZWdpbiwgb2JqZWN0
Q291bnQgfTsKQEAgLTUzMiw4ICs0NzEsOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1w
UmFuZ2VzQnlPYmplY3QoCiAgICAgICAgIHJldHVybiB7IGJlZ2luLCBvYmplY3RDb3VudCB9Owog
ICAgIH07CiAKKyAgICBNZXRhZGF0YSBtZXRhZGF0YSB7IHNpemVDbGFzcyB9OwogICAgIE9iamVj
dCBpdChwYWdlLT5iZWdpbigpLT5iZWdpbigpKTsKLSAgICBPYmplY3QgZW5kKGl0ICsgcGFnZVNp
emUobV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdKSk7CisgICAgT2JqZWN0IGVuZChpdCArIHBhZ2VT
aXplKG1ldGFkYXRhLnBhZ2VDbGFzcygpKSk7CiAgICAgZm9yICg7OykgewogICAgICAgICBpZiAo
IWZpbmRTbWFsbEJ1bXBSYW5nZShpdCwgZW5kKSkgewogICAgICAgICAgICAgcGFnZS0+c2V0SGFz
RnJlZUxpbmVzKGxvY2ssIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5kZXggMDNiNjQ4OGNl
YWYuLjBkNmI3ZmRjMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
aAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaApAQCAtMzEsNyArMzEsNiBAQAog
I2luY2x1ZGUgIkZhaWx1cmVBY3Rpb24uaCIKICNpbmNsdWRlICJIZWFwS2luZC5oIgogI2luY2x1
ZGUgIkxhcmdlTWFwLmgiCi0jaW5jbHVkZSAiTGluZU1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTGlz
dC5oIgogI2luY2x1ZGUgIk1hcC5oIgogI2luY2x1ZGUgIk11dGV4LmgiCkBAIC00MSw3ICs0MCw2
IEBACiAjaW5jbHVkZSAiUGh5c2ljYWxQYWdlTWFwLmgiCiAjaW5jbHVkZSAiU21hbGxMaW5lLmgi
CiAjaW5jbHVkZSAiU21hbGxQYWdlLmgiCi0jaW5jbHVkZSAiVmVjdG9yLmgiCiAjaW5jbHVkZSA8
YXJyYXk+CiAjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgogI2luY2x1ZGUgPG11dGV4PgpA
QCAtMTEwLDkgKzEwOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1c2luZ0dpZ2FjYWdlKCk7CiAg
ICAgdm9pZCogZ2lnYWNhZ2VCYXNlUHRyKCk7IC8vIE1heSBjcmFzaCBpZiAhdXNpbmdHaWdhY2Fn
ZSgpLgogICAgIHNpemVfdCBnaWdhY2FnZVNpemUoKTsKLSAgICAKLSAgICB2b2lkIGluaXRpYWxp
emVMaW5lTWV0YWRhdGEoKTsKLSAgICB2b2lkIGluaXRpYWxpemVQYWdlTWV0YWRhdGEoKTsKIAog
ICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKHN0ZDo6dW5pcXVlX2xv
Y2s8TXV0ZXg+JiwKICAgICAgICAgc2l6ZV90IHNpemVDbGFzcywgQnVtcEFsbG9jYXRvciYsIEJ1
bXBSYW5nZUNhY2hlJiwgTGluZUNhY2hlJiwgRmFpbHVyZUFjdGlvbik7CkBAIC0xMzYsMTAgKzEz
MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdEZWNvbW1pdHMgeyBmYWxzZSB9
OwogICAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlX2FueSBtX2NvbmRpdGlvbjsKIAotICAgIHNp
emVfdCBtX3ZtUGFnZVNpemVQaHlzaWNhbDsKLSAgICBWZWN0b3I8TGluZU1ldGFkYXRhPiBtX3Nt
YWxsTGluZU1ldGFkYXRhOwotICAgIHN0ZDo6YXJyYXk8c2l6ZV90LCBzaXplQ2xhc3NDb3VudD4g
bV9wYWdlQ2xhc3NlczsKLQogICAgIExpbmVDYWNoZSBtX2xpbmVDYWNoZTsKICAgICBzdGQ6OmFy
cmF5PExpc3Q8Q2h1bms+LCBwYWdlQ2xhc3NDb3VudD4gbV9mcmVlUGFnZXM7CiAgICAgc3RkOjph
cnJheTxMaXN0PENodW5rPiwgcGFnZUNsYXNzQ291bnQ+IG1fY2h1bmtDYWNoZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTWV0YWRhdGEuY3BwIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9NZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjJhNmU5ZGFkNTRlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9NZXRhZGF0YS5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJNZXRhZGF0YS5oIgorCituYW1l
c3BhY2UgYm1hbGxvYyB7CisKK0RFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShNZXRh
ZGF0YVN0b3JhZ2UpOworCitNZXRhZGF0YVN0b3JhZ2U6Ok1ldGFkYXRhU3RvcmFnZShzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+JikKKyAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsgdm1QYWdlU2l6
ZVBoeXNpY2FsKCkgfQoreworICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNpemVQaHlzaWNh
bCA+PSBzbWFsbFBhZ2VTaXplKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQodm1QYWdlU2l6ZSgpID49
IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKTsKKworICAgIGluaXRpYWxpemVMaW5lTWV0YWRhdGEoKTsK
KyAgICBpbml0aWFsaXplUGFnZU1ldGFkYXRhKCk7Cit9CisKK3ZvaWQgTWV0YWRhdGFTdG9yYWdl
Ojppbml0aWFsaXplTGluZU1ldGFkYXRhKCkKK3sKKyAgICBzaXplX3Qgc2l6ZUNsYXNzQ291bnQg
PSBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7CisgICAgbV9zbWFsbExpbmVNZXRh
ZGF0YS5ncm93KHNpemVDbGFzc0NvdW50ICogc21hbGxMaW5lQ291bnQoKSk7CisKKyAgICBmb3Ig
KHNpemVfdCBzaXplQ2xhc3MgPSAwOyBzaXplQ2xhc3MgPCBzaXplQ2xhc3NDb3VudDsgKytzaXpl
Q2xhc3MpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3RTaXplKHNpemVDbGFzcyk7Cisg
ICAgICAgIExpbmVNZXRhZGF0YSogcGFnZU1ldGFkYXRhID0gJm1fc21hbGxMaW5lTWV0YWRhdGFb
c2l6ZUNsYXNzICogc21hbGxMaW5lQ291bnQoKV07CisKKyAgICAgICAgc2l6ZV90IG9iamVjdCA9
IDA7CisgICAgICAgIHNpemVfdCBsaW5lID0gMDsKKyAgICAgICAgd2hpbGUgKG9iamVjdCA8IG1f
dm1QYWdlU2l6ZVBoeXNpY2FsKSB7CisgICAgICAgICAgICBsaW5lID0gb2JqZWN0IC8gc21hbGxM
aW5lU2l6ZTsKKyAgICAgICAgICAgIHNpemVfdCBsZWZ0b3ZlciA9IG9iamVjdCAlIHNtYWxsTGlu
ZVNpemU7CisKKyAgICAgICAgICAgIHNpemVfdCBvYmplY3RDb3VudDsKKyAgICAgICAgICAgIHNp
emVfdCByZW1haW5kZXI7CisgICAgICAgICAgICBkaXZpZGVSb3VuZGluZ1VwKHNtYWxsTGluZVNp
emUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291bnQsIHJlbWFpbmRlcik7CisKKyAgICAgICAg
ICAgIHBhZ2VNZXRhZGF0YVtsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obGVm
dG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkgfTsKKworICAg
ICAgICAgICAgb2JqZWN0ICs9IG9iamVjdENvdW50ICogc2l6ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9iamVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBlIHRo
ZSBwYWdlLgorICAgICAgICBpZiAob2JqZWN0ID4gbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKKyAg
ICAgICAgICAgIEJBU1NFUlQocGFnZU1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50KTsKKyAgICAg
ICAgICAgIC0tcGFnZU1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50OworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIE1ldGFkYXRhU3RvcmFnZTo6aW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpCit7
CisgICAgYXV0byBjb21wdXRlUGFnZVNpemUgPSBbJl0oc2l6ZV90IHNpemVDbGFzcykgeworICAg
ICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUoc2l6ZUNsYXNzKTsKKyAgICAgICAgaWYgKHNp
emVDbGFzcyA8IGJtYWxsb2M6OnNpemVDbGFzcyhzbWFsbExpbmVTaXplKSkKKyAgICAgICAgICAg
IHJldHVybiBtX3ZtUGFnZVNpemVQaHlzaWNhbDsKKworICAgICAgICBmb3IgKHNpemVfdCBwYWdl
U2l6ZSA9IG1fdm1QYWdlU2l6ZVBoeXNpY2FsOyBwYWdlU2l6ZSA8IHBhZ2VTaXplTWF4OyBwYWdl
U2l6ZSArPSBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgeworICAgICAgICAgICAgUkVMRUFTRV9CQVNT
RVJUKHBhZ2VTaXplIDw9IGNodW5rU2l6ZSAvIDIpOworICAgICAgICAgICAgc2l6ZV90IHdhc3Rl
ID0gcGFnZVNpemUgJSBzaXplOworICAgICAgICAgICAgaWYgKHdhc3RlIDw9IHBhZ2VTaXplIC8g
cGFnZVNpemVXYXN0ZUZhY3RvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFnZVNpemU7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gcGFnZVNpemVNYXg7CisgICAgfTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZUNsYXNzQ291bnQ7ICsraSkKKyAgICAgICAgbV9wYWdl
Q2xhc3Nlc1tpXSA9IChjb21wdXRlUGFnZVNpemUoaSkgLSAxKSAvIHNtYWxsUGFnZVNpemU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvTGluZU1ldGFkYXRhLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01ldGFkYXRhLmgK
c2ltaWxhcml0eSBpbmRleCA1MCUKcmVuYW1lIGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9M
aW5lTWV0YWRhdGEuaApyZW5hbWUgdG8gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9NZXRhZGF0YS5o
CmluZGV4IDgwYjMzODExMTk5Li4yY2UyYzU3MjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9MaW5lTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01l
dGFkYXRhLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsOCArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYg
TGluZU1ldGFkYXRhX2gKLSNkZWZpbmUgTGluZU1ldGFkYXRhX2gKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNsdWRlICJTaXplcy5oIgorI2luY2x1ZGUgIlN0YXRpY1Bl
clByb2Nlc3MuaCIKKyNpbmNsdWRlICJWZWN0b3IuaCIKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNs
dWRlIDxtdXRleD4KIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCkBAIC0zMyw2ICszOSw0OSBAQCBz
dHJ1Y3QgTGluZU1ldGFkYXRhIHsKICAgICB1bnNpZ25lZCBjaGFyIG9iamVjdENvdW50OwogfTsK
IAorY2xhc3MgTWV0YWRhdGFTdG9yYWdlIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8TWV0YWRh
dGFTdG9yYWdlPiB7CitwdWJsaWM6CisgICAgTWV0YWRhdGFTdG9yYWdlKHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKTsKKyAgICB+TWV0YWRhdGFTdG9yYWdlKCkgPSBkZWxldGU7CisKKyAgICBpbmxp
bmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VDbGFzc2VzW3NpemVDbGFzc107IH0KKyAgICBpbmxpbmUgc2l6ZV90IHNtYWxsTGluZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFsbExpbmVTaXplOyB9
CisKKyAgICBpbmxpbmUgTGluZU1ldGFkYXRhJiBsaW5lTWV0YWRhdGEoc2l6ZV90IHNpemVDbGFz
cywgc2l6ZV90IGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9zbWFsbExpbmVN
ZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudCgpICsgbGluZU51bWJlcl07CisgICAg
fQorCitwcml2YXRlOgorICAgIHZvaWQgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOworICAgIHZv
aWQgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpOworCisgICAgc2l6ZV90IG1fdm1QYWdlU2l6ZVBo
eXNpY2FsOworICAgIFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGE7Cisg
ICAgc3RkOjphcnJheTxzaXplX3QsIHNpemVDbGFzc0NvdW50PiBtX3BhZ2VDbGFzc2VzOworfTsK
K0RFQ0xBUkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoTWV0YWRhdGFTdG9yYWdlKTsKKwor
Y2xhc3MgTWV0YWRhdGEgeworcHVibGljOgorICAgIGV4cGxpY2l0IE1ldGFkYXRhKHNpemVfdCBz
aXplQ2xhc3MpCisgICAgICAgIDogbV9zaXplQ2xhc3MgeyBzaXplQ2xhc3MgfQorICAgICAgICAs
IG1fc3RvcmFnZSB7ICpNZXRhZGF0YVN0b3JhZ2U6OmdldCgpIH0KKyAgICB7CisgICAgfQorCisg
ICAgaW5saW5lIHNpemVfdCBwYWdlQ2xhc3MoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucGFn
ZUNsYXNzKG1fc2l6ZUNsYXNzKTsgfQorICAgIGlubGluZSBzaXplX3Qgc21hbGxMaW5lQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc21hbGxMaW5lQ291bnQoKTsgfQorICAgIGlubGlu
ZSB1bnNpZ25lZCBjaGFyIHN0YXJ0T2Zmc2V0KHNpemVfdCBsaW5lTnVtYmVyKSB7IHJldHVybiBs
aW5lTWV0YWRhdGEobGluZU51bWJlcikuc3RhcnRPZmZzZXQ7IH0KKyAgICBpbmxpbmUgdW5zaWdu
ZWQgY2hhciBvYmplY3RDb3VudChzaXplX3QgbGluZU51bWJlcikgeyByZXR1cm4gbGluZU1ldGFk
YXRhKGxpbmVOdW1iZXIpLm9iamVjdENvdW50OyB9CisKK3ByaXZhdGU6CisgICAgaW5saW5lIGNv
bnN0IExpbmVNZXRhZGF0YSYgbGluZU1ldGFkYXRhKHNpemVfdCBsaW5lTnVtYmVyKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UubGluZU1ldGFkYXRhKG1fc2l6ZUNsYXNzLCBsaW5lTnVtYmVyKTsg
fQorCisgICAgc2l6ZV90IG1fc2l6ZUNsYXNzOworICAgIE1ldGFkYXRhU3RvcmFnZSYgbV9zdG9y
YWdlOworfTsKKwogc3RhdGljX2Fzc2VydCgKICAgICBzbWFsbExpbmVTaXplIC0gYWxpZ25tZW50
IDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgY2hhcj46Om1heCgpLAogICAgICJtYXhp
bXVtIG9iamVjdCBvZmZzZXQgbXVzdCBmaXQgaW4gTGluZU1ldGFkYXRhOjpzdGFydE9mZnNldCIp
OwpAQCAtNDIsNSArOTEsMyBAQCBzdGF0aWNfYXNzZXJ0KAogICAgICJtYXhpbXVtIG9iamVjdCBj
b3VudCBtdXN0IGZpdCBpbiBMaW5lTWV0YWRhdGE6Om9iamVjdENvdW50Iik7CiAKIH0gLy8gbmFt
ZXNwYWNlIGJtYWxsb2MKLQotI2VuZGlmIC8vIExpbmVNZXRhZGF0YV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387165</attachid>
            <date>2020-01-08 17:08:17 -0800</date>
            <delta_ts>2020-01-09 13:15:39 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-205834.diff</filename>
            <type>text/plain</type>
            <size>24347</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKaW5kZXggZjNiZWExOWQxOTQuLjkwZDZhOTE0MTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dApAQCAtMjYsNiArMjYsNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAg
Ym1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCiAgICAgYm1hbGxvYy9MYXJnZU1hcC5jcHAKICAgICBi
bWFsbG9jL0xvZ2dpbmcuY3BwCisgICAgYm1hbGxvYy9NZXRhZGF0YS5jcHAKICAgICBibWFsbG9j
L011dGV4LmNwcAogICAgIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHAKICAgICBibWFsbG9jL1BlclBy
b2Nlc3MuY3BwCkBAIC0xMDMsMTAgKzEwNCwxMCBAQCBzZXQoYm1hbGxvY19QVUJMSUNfSEVBREVS
UwogICAgIGJtYWxsb2MvSXNvVExTTGF5b3V0LmgKICAgICBibWFsbG9jL0xhcmdlTWFwLmgKICAg
ICBibWFsbG9jL0xhcmdlUmFuZ2UuaAotICAgIGJtYWxsb2MvTGluZU1ldGFkYXRhLmgKICAgICBi
bWFsbG9jL0xpc3QuaAogICAgIGJtYWxsb2MvTG9nZ2luZy5oCiAgICAgYm1hbGxvYy9NYXAuaAor
ICAgIGJtYWxsb2MvTWV0YWRhdGEuaAogICAgIGJtYWxsb2MvTXV0ZXguaAogICAgIGJtYWxsb2Mv
T2JqZWN0LmgKICAgICBibWFsbG9jL09iamVjdFR5cGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvQ2hhbmdlTG9nIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDE5Yjg5ZTky
YWNmLi5hYTcyNjZlZGE5MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAxLTA2
ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBbYm1h
bGxvY10gRXh0cmFjdCBtZXRhZGF0YSBmcm9tIEhlYXAgYW5kIHNoYXJlIGl0IGFtb25nIEhlYXBz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1ODM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGVhcCBt
ZXRhZGF0YSAobV92bVBhZ2VTaXplUGh5c2ljYWwsIG1fc21hbGxMaW5lTWV0YWRhdGEgYW5kIG1f
cGFnZUNsYXNzZXMpIGFyZSBkZXBlbmRlbnQKKyAgICAgICAgb25seSB0byB2bVBhZ2VTaXplUGh5
c2ljYWwgYW5kIGlkZW50aWNhbCBmb3IgYWxsIEhlYXBzLiBFeHRyYWN0aW5nIHRoZW0gaW50byBh
IGNsYXNzIGFuZCBtYWtlCisgICAgICAgIGl0IHNoYXJhYmxlIGFtb25nIGhlYXBzLiBBbHNvIHRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgZm9yIG1ha2luZyBIZWFwIG1ldGFkYXRhIHRvIGBjb25zdGV4
cHJgLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIE1ldGFkYXRhLmNwcC4KKyAg
ICAgICAgKiBibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAg
ICAqIGJtYWxsb2MvSGVhcC5jcHA6IFJlZmVyZW5jaW5nIE1ldGFkYXRhIG9iamVjdCB0byBnZXQg
aW5mb3JtYXRpb24uCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVT
bWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9j
YXRlU21hbGxCdW1wUmFuZ2VzQnlPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6aW5p
dGlhbGl6ZUxpbmVNZXRhZGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpIZWFwOjpp
bml0aWFsaXplUGFnZU1ldGFkYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBibWFsbG9jL0hlYXAu
aDogRXh0cmFjdCBtZXRhZGF0YSBpbml0aWFsaXphdGlvbiBhbmQgbWVtYmVyIHZhcmlhYmxlcy4K
KyAgICAgICAgKiBibWFsbG9jL01ldGFkYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChibWFsbG9j
OjpNZXRhZGF0YVN0b3JhZ2U6Ok1ldGFkYXRhU3RvcmFnZSk6CisgICAgICAgIChibWFsbG9jOjpN
ZXRhZGF0YVN0b3JhZ2U6OmluaXRpYWxpemVMaW5lTWV0YWRhdGEpOgorICAgICAgICAoYm1hbGxv
Yzo6TWV0YWRhdGFTdG9yYWdlOjppbml0aWFsaXplUGFnZU1ldGFkYXRhKToKKyAgICAgICAgKiBi
bWFsbG9jL01ldGFkYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xp
bmVNZXRhZGF0YS5oLgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRhdGFTdG9yYWdlOjpwYWdlQ2xh
c3MgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRhdGFTdG9yYWdlOjpzbWFsbExpbmVD
b3VudCBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YVN0b3JhZ2U6OmxpbmVNZXRh
ZGF0YSk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YTo6TWV0YWRhdGEpOgorICAgICAgICAo
Ym1hbGxvYzo6TWV0YWRhdGE6OnBhZ2VDbGFzcyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpN
ZXRhZGF0YTo6c21hbGxMaW5lQ291bnQgY29uc3QpOgorICAgICAgICAoYm1hbGxvYzo6TWV0YWRh
dGE6OnN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKGJtYWxsb2M6Ok1ldGFkYXRhOjpvYmplY3RDb3Vu
dCk6CisgICAgICAgIChibWFsbG9jOjpNZXRhZGF0YTo6bGluZU1ldGFkYXRhIGNvbnN0KToKKwog
MjAyMC0wMS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPiBhbmQgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBlcmltZW50OiBj
cmVhdGUgbG90cyBvZiBkaWZmZXJlbnQgbWFsbG9jIHpvbmVzIGZvciBlYXNpZXIgYWNjb3VudGlu
ZyBvZiBtZW1vcnkgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNTFjMjU4YmQ0ODMuLmViZDkyN2RmOWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MCw3
ICs4MCw2IEBACiAJCTE0MDAyNzQ5MThGODlDMTMwMDExNUM5NyAvKiBIZWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNERBMzIwQzE4ODc1QjA5MDA3
MjY5RTAgLyogSGVhcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTE0MDAyNzRBMThGODlDMjMwMDExNUM5NyAvKiBWTUhlYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEY3QkZDMThCRkM1MTcwMDM1
MzdGMyAvKiBWTUhlYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxNDBGQTAwMzE5Q0U0MjlDMDBGRkQzQzggLyogQnVtcFJhbmdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDBGQTAwMjE5Q0U0MjlD
MDBGRkQzQzggLyogQnVtcFJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMTQwRkEwMDUxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQwRkEw
MDQxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRhZGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MUQ5QjAwMUM4RTUxQzAwMDBBQkJBMCAv
KiBMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDFEOUFGRjFDOEU1MUMwMDAwQUJCQTAgLyogTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0MkI0NDM2MUUyODM5RTcwMDFEQTZFOSAvKiBE
ZWJ1Z0hlYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTQyQjQ0MzQxRTI4MzlFNzAwMURBNkU5IC8qIERlYnVnSGVhcC5jcHAgKi87IH07CiAJCTE0
MkI0NDM3MUUyODM5RTcwMDFEQTZFOSAvKiBEZWJ1Z0hlYXAuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MkI0NDM1MUUyODM5RTcwMDFEQTZFOSAvKiBE
ZWJ1Z0hlYXAuaCAqLzsgfTsKQEAgLTE0Nyw2ICsxNDYsOCBAQAogCQlFM0ZCQjVBMTIyNUVBREIw
MDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZCQjU5RTIyNUVBREIwMDBEQjZGQkQgLyogSXNvU2hhcmVk
SGVhcC5jcHAgKi87IH07CiAJCUUzRkJCNUEyMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRI
ZWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0ZC
QjU5RjIyNUVBREIwMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRkJCNUE0MjI1RUNBRDIwMERCNkZC
RCAvKiBJc29TaGFyZWRIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNGQkI1QTMyMjVFQ0FEMjAwREI2RkJEIC8qIElzb1NoYXJlZEhl
YXBJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3IC8qIE1ldGFkYXRhLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMTdEMTEwMjNCRkM4QzQwMDIw
OTNBNyAvKiBNZXRhZGF0YS5jcHAgKi87IH07CisJCUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAv
KiBNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRUIxN0QxMEUyM0JFNjkxRDAwMjA5M0E3IC8qIE1ldGFkYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU0OEJEM0IyMzIxRThENzAwRjEz
NkQwIC8qIEZhaWx1cmVBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFNDhCRDNBMjMyMUU4Q0MwMEYxMzZEMCAvKiBGYWlsdXJlQWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCkBAIC0yMjUsNyArMjI2LDYgQEAKIAkJMEY3RUI4NTkx
Rjk1NUEwRjAwRjFBQkNCIC8qIERlZmVycmVkRGVjb21taXRJbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERlZmVycmVkRGVjb21taXRJbmxpbmVzLmg7IHBhdGggPSBi
bWFsbG9jL0RlZmVycmVkRGVjb21taXRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGRDU1NzMyMUY3RURCN0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIZWFwS2luZC5jcHA7IHBhdGggPSBibWFsbG9j
L0hlYXBLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwRkEwMDIxOUNF
NDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBCdW1wUmFuZ2UuaDsgcGF0aCA9IGJtYWxsb2MvQnVtcFJhbmdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTE0MEZBMDA0MTlDRTRCNjgwMEZGRDNDOCAvKiBMaW5lTWV0YWRh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGluZU1ldGFkYXRhLmg7IHBh
dGggPSBibWFsbG9jL0xpbmVNZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBPYmplY3RUeXBlLmNwcDsgcGF0aCA9IGJtYWxsb2Mv
T2JqZWN0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0MTNFNDYwMTg5
RENFMUUwMDU0NkQ2OCAvKiBCSW5saW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEJJbmxpbmUuaDsgcGF0aCA9IGJtYWxsb2MvQklubGluZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxNDEzRTQ2MjE4OURFMUNEMDA1NDZENjggLyogQnVtcEFsbG9jYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gQnVtcEFs
bG9jYXRvci5oOyBwYXRoID0gYm1hbGxvYy9CdW1wQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMDAsNiArMzAwLDggQEAKIAkJRTNGQkI1OUUyMjVFQURCMDAwREI2
RkJEIC8qIElzb1NoYXJlZEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gSXNvU2hhcmVkSGVhcC5jcHA7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZEhlYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0ZCQjU5RjIyNUVBREIwMDBEQjZGQkQg
LyogSXNvU2hhcmVkSGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJc29T
aGFyZWRIZWFwLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZEhlYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTNGQkI1QTMyMjVFQ0FEMjAwREI2RkJEIC8qIElzb1NoYXJlZEhl
YXBJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElzb1NoYXJlZEhl
YXBJbmxpbmVzLmg7IHBhdGggPSBibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAvKiBNZXRh
ZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZXRhZGF0YS5oOyBwYXRo
ID0gYm1hbGxvYy9NZXRhZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjE3
RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogTWV0YWRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTWV0YWRhdGEuY3BwOyBwYXRoID0gYm1hbGxvYy9NZXRhZGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDhCRDNBMjMyMUU4Q0MwMEYxMzZE
MCAvKiBGYWlsdXJlQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZh
aWx1cmVBY3Rpb24uaDsgcGF0aCA9IGJtYWxsb2MvRmFpbHVyZUFjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBA
IC00ODIsNyArNDg0LDggQEAKIAkJCQkwRjVCRjE0QzFGMjJCMEMzMDAyOUQ5MUQgLyogR2lnYWNh
Z2UuaCAqLywKIAkJCQkxNERBMzIwRTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCiAJ
CQkJMTREQTMyMEMxODg3NUIwOTAwNzI2OUUwIC8qIEhlYXAuaCAqLywKLQkJCQkxNDBGQTAwNDE5
Q0U0QjY4MDBGRkQzQzggLyogTGluZU1ldGFkYXRhLmggKi8sCisJCQkJRUIxN0QxMTAyM0JGQzhD
NDAwMjA5M0E3IC8qIE1ldGFkYXRhLmNwcCAqLywKKwkJCQlFQjE3RDEwRTIzQkU2OTFEMDAyMDkz
QTcgLyogTWV0YWRhdGEuaCAqLywKIAkJCQkxNDRCRTExRTFDQTM0NjUyMDA5OUM4QzAgLyogT2Jq
ZWN0LmggKi8sCiAJCQkJMTQxMDVFODMxOEUxNDM3NDAwM0ExMDZFIC8qIE9iamVjdFR5cGUuY3Bw
ICovLAogCQkJCTE0ODU2NTYwMThBNDNEQkEwMEVENjk0MiAvKiBPYmplY3RUeXBlLmggKi8sCkBA
IC02MzMsMTAgKzYzNiwxMCBAQAogCQkJCTBGN0VCODQwMUY5NTQxQjAwMEYxQUJDQiAvKiBJc29U
TFNMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEMwN0Y1MUM3QjcwMjYwMDUxQkI2QSAv
KiBMYXJnZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDODk5MkQxQ0M1NzgzMzAwMjdBMDU3
IC8qIExhcmdlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTE0MEZBMDA1MTlDRTRCNjgwMEZG
RDNDOCAvKiBMaW5lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MUQ5QjAwMUM4RTUx
QzAwMDBBQkJBMCAvKiBMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDI2RTI4MTFDODM4RUUw
MDA4RUIwNDIgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRDODk5MkIxQ0M0ODVF
NzAwMjdBMDU3IC8qIE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUIxN0QxMTIyM0JGQ0Q3QTAw
MjA5M0E3IC8qIE1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkY0NzI0OTIxMEJBMzAy
MDBCNzMwQkIgLyogTWVtb3J5U3RhdHVzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNDQjgx
RDE5MDIyQkM5MDBCMTZBNDUgLyogTXV0ZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEJFMTFG
MUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtNzY5LDYgKzc3
Miw3IEBACiAJCQkJMEY3RUI4M0YxRjk1NDFCMDAwRjFBQkNCIC8qIElzb1RMU0xheW91dC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDRDMDdGNDFDN0I3MDI2MDA1MUJCNkEgLyogTGFyZ2VNYXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQyNkUyODAxQzgzOEVFMDAwOEVCMDQyIC8qIExvZ2dp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUIxN0QxMTEyM0JGQ0Q0MjAwMjA5M0E3IC8qIE1l
dGFkYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0NCODFDMTkwMjJCQzkwMEIxNkE0NSAv
KiBNdXRleC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEYyNzFDODE4RUEzOTkwMDA4QzE1MkYg
LyogT2JqZWN0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI2QTdBNTIwNTQ4MzEzMDA5
MEExNDEgLyogUGVyUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCmluZGV4IGU5OGY2NTk2MGEwLi41MGE3MmIyMWFkZiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCkBAIC0zMCw5ICszMCwxMCBAQAogI2luY2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJDaHVuay5oIgogI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5oIgorI2luY2x1ZGUgIkRlYnVn
SGVhcC5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIK
LSNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKKyNpbmNsdWRlICJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
IlBlclByb2Nlc3MuaCIKICNpbmNsdWRlICJTY2F2ZW5nZXIuaCIKICNpbmNsdWRlICJTbWFsbExp
bmUuaCIKQEAgLTQ2LDE0ICs0Nyw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogSGVhcDo6SGVh
cChIZWFwS2luZCBraW5kLCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKICAgICA6IG1fa2luZChr
aW5kKQotICAgICwgbV92bVBhZ2VTaXplUGh5c2ljYWwodm1QYWdlU2l6ZVBoeXNpY2FsKCkpCiB7
Ci0gICAgUkVMRUFTRV9CQVNTRVJUKHZtUGFnZVNpemVQaHlzaWNhbCgpID49IHNtYWxsUGFnZVNp
emUpOwotICAgIFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplKCkgPj0gdm1QYWdlU2l6ZVBoeXNp
Y2FsKCkpOwotCi0gICAgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOwotICAgIGluaXRpYWxpemVQ
YWdlTWV0YWRhdGEoKTsKLSAgICAKICAgICBCQVNTRVJUKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlz
RGVidWdIZWFwRW5hYmxlZCgpKTsKIAogICAgIEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSgpOwpA
QCAtODcsNjIgKzgxLDYgQEAgc2l6ZV90IEhlYXA6OmdpZ2FjYWdlU2l6ZSgpCiAgICAgcmV0dXJu
IEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQpKTsKIH0KIAotdm9pZCBIZWFwOjpp
bml0aWFsaXplTGluZU1ldGFkYXRhKCkKLXsKLSAgICBzaXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBi
bWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7Ci0gICAgc2l6ZV90IHNtYWxsTGluZUNv
dW50ID0gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFsbExpbmVTaXplOwotICAgIG1fc21hbGxM
aW5lTWV0YWRhdGEuZ3JvdyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGluZUNvdW50KTsKLQotICAg
IGZvciAoc2l6ZV90IHNpemVDbGFzcyA9IDA7IHNpemVDbGFzcyA8IHNpemVDbGFzc0NvdW50OyAr
K3NpemVDbGFzcykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IG9iamVjdFNpemUoc2l6ZUNsYXNz
KTsKLSAgICAgICAgTGluZU1ldGFkYXRhKiBwYWdlTWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRh
ZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudF07Ci0KLSAgICAgICAgc2l6ZV90IG9iamVj
dCA9IDA7Ci0gICAgICAgIHNpemVfdCBsaW5lID0gMDsKLSAgICAgICAgd2hpbGUgKG9iamVjdCA8
IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAgICAgICBsaW5lID0gb2JqZWN0IC8gc21h
bGxMaW5lU2l6ZTsKLSAgICAgICAgICAgIHNpemVfdCBsZWZ0b3ZlciA9IG9iamVjdCAlIHNtYWxs
TGluZVNpemU7Ci0KLSAgICAgICAgICAgIHNpemVfdCBvYmplY3RDb3VudDsKLSAgICAgICAgICAg
IHNpemVfdCByZW1haW5kZXI7Ci0gICAgICAgICAgICBkaXZpZGVSb3VuZGluZ1VwKHNtYWxsTGlu
ZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291bnQsIHJlbWFpbmRlcik7Ci0KLSAgICAg
ICAgICAgIHBhZ2VNZXRhZGF0YVtsaW5lXSA9IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
bGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvYmplY3RDb3VudCkgfTsKLQot
ICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVjdENvdW50ICogc2l6ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9iamVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBl
IHRoZSBwYWdlLgotICAgICAgICBpZiAob2JqZWN0ID4gbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsK
LSAgICAgICAgICAgIEJBU1NFUlQocGFnZU1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50KTsKLSAg
ICAgICAgICAgIC0tcGFnZU1ldGFkYXRhW2xpbmVdLm9iamVjdENvdW50OwotICAgICAgICB9Ci0g
ICAgfQotfQotCi12b2lkIEhlYXA6OmluaXRpYWxpemVQYWdlTWV0YWRhdGEoKQotewotICAgIGF1
dG8gY29tcHV0ZVBhZ2VTaXplID0gWyZdKHNpemVfdCBzaXplQ2xhc3MpIHsKLSAgICAgICAgc2l6
ZV90IHNpemUgPSBvYmplY3RTaXplKHNpemVDbGFzcyk7Ci0gICAgICAgIGlmIChzaXplQ2xhc3Mg
PCBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4g
bV92bVBhZ2VTaXplUGh5c2ljYWw7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgcGFnZVNpemUgPSBt
X3ZtUGFnZVNpemVQaHlzaWNhbDsKLSAgICAgICAgICAgIHBhZ2VTaXplIDwgcGFnZVNpemVNYXg7
Ci0gICAgICAgICAgICBwYWdlU2l6ZSArPSBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgewotICAgICAg
ICAgICAgUkVMRUFTRV9CQVNTRVJUKHBhZ2VTaXplIDw9IGNodW5rU2l6ZSAvIDIpOwotICAgICAg
ICAgICAgc2l6ZV90IHdhc3RlID0gcGFnZVNpemUgJSBzaXplOwotICAgICAgICAgICAgaWYgKHdh
c3RlIDw9IHBhZ2VTaXplIC8gcGFnZVNpemVXYXN0ZUZhY3RvcikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFnZVNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBwYWdl
U2l6ZU1heDsKLSAgICB9OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplQ2xhc3ND
b3VudDsgKytpKQotICAgICAgICBtX3BhZ2VDbGFzc2VzW2ldID0gKGNvbXB1dGVQYWdlU2l6ZShp
KSAtIDEpIC8gc21hbGxQYWdlU2l6ZTsKLX0KLQogc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5
KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAgIHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5
OwpAQCAtMzQyLDcgKzI4MCw4IEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2Uo
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xhCiAgICAgbV9zY2F2
ZW5nZXItPmRpZFN0YXJ0R3Jvd2luZygpOwogICAgIAogICAgIFNtYWxsUGFnZSogcGFnZSA9IFsm
XSgpIC0+IFNtYWxsUGFnZSogewotICAgICAgICBzaXplX3QgcGFnZUNsYXNzID0gbV9wYWdlQ2xh
c3Nlc1tzaXplQ2xhc3NdOworICAgICAgICBNZXRhZGF0YSBtZXRhZGF0YSB7IHNpemVDbGFzcyB9
OworICAgICAgICBzaXplX3QgcGFnZUNsYXNzID0gbWV0YWRhdGEucGFnZUNsYXNzKCk7CiAgICAg
ICAgIAogICAgICAgICBpZiAobV9mcmVlUGFnZXNbcGFnZUNsYXNzXS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgcGFnZUNsYXNzLCBhY3Rpb24pOwpAQCAt
Mzk5LDggKzMzOCw4IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluCiAgICAgaWYgKHBhZ2UtPnJl
ZkNvdW50KGxvY2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3Qgc2l6ZUNsYXNzID0g
cGFnZS0+c2l6ZUNsYXNzKCk7Ci0gICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1fcGFnZUNsYXNzZXNb
c2l6ZUNsYXNzXTsKKyAgICBNZXRhZGF0YSBtZXRhZGF0YSB7IHBhZ2UtPnNpemVDbGFzcygpIH07
CisgICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1ldGFkYXRhLnBhZ2VDbGFzcygpOwogCiAgICAgbV9m
cmVlYWJsZU1lbW9yeSArPSBwaHlzaWNhbFBhZ2VTaXplU2xvcHB5KHBhZ2UtPmJlZ2luKCktPmJl
Z2luKCksIHBhZ2VTaXplKHBhZ2VDbGFzcykpOwogCkBAIC00NDAsMTMgKzM3OSwxMiBAQCB2b2lk
IEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlNZXRhZGF0YSgKICAgICB9CiAgICAgU21h
bGxMaW5lKiBsaW5lcyA9IHBhZ2UtPmJlZ2luKCk7CiAgICAgQkFTU0VSVChwYWdlLT5oYXNGcmVl
TGluZXMobG9jaykpOwotICAgIHNpemVfdCBzbWFsbExpbmVDb3VudCA9IG1fdm1QYWdlU2l6ZVBo
eXNpY2FsIC8gc21hbGxMaW5lU2l6ZTsKLSAgICBMaW5lTWV0YWRhdGEqIHBhZ2VNZXRhZGF0YSA9
ICZtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxsTGluZUNvdW50XTsKLSAgICAK
KyAgICBNZXRhZGF0YSBtZXRhZGF0YSB7IHNpemVDbGFzcyB9OworCiAgICAgYXV0byBmaW5kU21h
bGxCdW1wUmFuZ2UgPSBbJl0oc2l6ZV90JiBsaW5lTnVtYmVyKSB7Ci0gICAgICAgIGZvciAoIDsg
bGluZU51bWJlciA8IHNtYWxsTGluZUNvdW50OyArK2xpbmVOdW1iZXIpIHsKKyAgICAgICAgZm9y
ICggOyBsaW5lTnVtYmVyIDwgbWV0YWRhdGEuc21hbGxMaW5lQ291bnQoKTsgKytsaW5lTnVtYmVy
KSB7CiAgICAgICAgICAgICBpZiAoIWxpbmVzW2xpbmVOdW1iZXJdLnJlZkNvdW50KGxvY2spKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXS5vYmplY3RDb3Vu
dCkKKyAgICAgICAgICAgICAgICBpZiAobWV0YWRhdGEub2JqZWN0Q291bnQobGluZU51bWJlcikp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC00NTQsMTggKzM5MiwxOSBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFu
Z2VzQnlNZXRhZGF0YSgKICAgICB9OwogCiAgICAgYXV0byBhbGxvY2F0ZVNtYWxsQnVtcFJhbmdl
ID0gWyZdKHNpemVfdCYgbGluZU51bWJlcikgLT4gQnVtcFJhbmdlIHsKLSAgICAgICAgY2hhciog
YmVnaW4gPSBsaW5lc1tsaW5lTnVtYmVyXS5iZWdpbigpICsgcGFnZU1ldGFkYXRhW2xpbmVOdW1i
ZXJdLnN0YXJ0T2Zmc2V0OworICAgICAgICBjaGFyKiBiZWdpbiA9IGxpbmVzW2xpbmVOdW1iZXJd
LmJlZ2luKCkgKyBtZXRhZGF0YS5zdGFydE9mZnNldChsaW5lTnVtYmVyKTsKICAgICAgICAgdW5z
aWduZWQgc2hvcnQgb2JqZWN0Q291bnQgPSAwOwogICAgICAgICAKLSAgICAgICAgZm9yICggOyBs
aW5lTnVtYmVyIDwgc21hbGxMaW5lQ291bnQ7ICsrbGluZU51bWJlcikgeworICAgICAgICBmb3Ig
KCA7IGxpbmVOdW1iZXIgPCBtZXRhZGF0YS5zbWFsbExpbmVDb3VudCgpOyArK2xpbmVOdW1iZXIp
IHsKICAgICAgICAgICAgIGlmIChsaW5lc1tsaW5lTnVtYmVyXS5yZWZDb3VudChsb2NrKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgaWYgKCFwYWdlTWV0YWRhdGFbbGlu
ZU51bWJlcl0ub2JqZWN0Q291bnQpCisgICAgICAgICAgICBhdXRvIGxpbmVPYmplY3RDb3VudCA9
IG1ldGFkYXRhLm9iamVjdENvdW50KGxpbmVOdW1iZXIpOworICAgICAgICAgICAgaWYgKCFsaW5l
T2JqZWN0Q291bnQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIG9i
amVjdENvdW50ICs9IHBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXS5vYmplY3RDb3VudDsKLSAgICAg
ICAgICAgIGxpbmVzW2xpbmVOdW1iZXJdLnJlZihsb2NrLCBwYWdlTWV0YWRhdGFbbGluZU51bWJl
cl0ub2JqZWN0Q291bnQpOworICAgICAgICAgICAgb2JqZWN0Q291bnQgKz0gbGluZU9iamVjdENv
dW50OworICAgICAgICAgICAgbGluZXNbbGluZU51bWJlcl0ucmVmKGxvY2ssIGxpbmVPYmplY3RD
b3VudCk7CiAgICAgICAgICAgICBwYWdlLT5yZWYobG9jayk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHsgYmVnaW4sIG9iamVjdENvdW50IH07CkBAIC01MzIsOCArNDcxLDkgQEAgdm9pZCBI
ZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5T2JqZWN0KAogICAgICAgICByZXR1cm4geyBi
ZWdpbiwgb2JqZWN0Q291bnQgfTsKICAgICB9OwogCisgICAgTWV0YWRhdGEgbWV0YWRhdGEgeyBz
aXplQ2xhc3MgfTsKICAgICBPYmplY3QgaXQocGFnZS0+YmVnaW4oKS0+YmVnaW4oKSk7Ci0gICAg
T2JqZWN0IGVuZChpdCArIHBhZ2VTaXplKG1fcGFnZUNsYXNzZXNbc2l6ZUNsYXNzXSkpOworICAg
IE9iamVjdCBlbmQoaXQgKyBwYWdlU2l6ZShtZXRhZGF0YS5wYWdlQ2xhc3MoKSkpOwogICAgIGZv
ciAoOzspIHsKICAgICAgICAgaWYgKCFmaW5kU21hbGxCdW1wUmFuZ2UoaXQsIGVuZCkpIHsKICAg
ICAgICAgICAgIHBhZ2UtPnNldEhhc0ZyZWVMaW5lcyhsb2NrLCBmYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SGVhcC5oCmluZGV4IDAzYjY0ODhjZWFmLi4wZDZiN2ZkYzEyYyAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJGYWlsdXJlQWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSGVhcEtpbmQuaCIKICNpbmNsdWRlICJMYXJnZU1hcC5oIgotI2luY2x1ZGUgIkxpbmVNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIkxpc3QuaCIKICNpbmNsdWRlICJNYXAuaCIKICNpbmNsdWRlICJN
dXRleC5oIgpAQCAtNDEsNyArNDAsNiBAQAogI2luY2x1ZGUgIlBoeXNpY2FsUGFnZU1hcC5oIgog
I2luY2x1ZGUgIlNtYWxsTGluZS5oIgogI2luY2x1ZGUgIlNtYWxsUGFnZS5oIgotI2luY2x1ZGUg
IlZlY3Rvci5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJs
ZT4KICNpbmNsdWRlIDxtdXRleD4KQEAgLTExMCw5ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgdXNpbmdHaWdhY2FnZSgpOwogICAgIHZvaWQqIGdpZ2FjYWdlQmFzZVB0cigpOyAvLyBNYXkg
Y3Jhc2ggaWYgIXVzaW5nR2lnYWNhZ2UoKS4KICAgICBzaXplX3QgZ2lnYWNhZ2VTaXplKCk7Ci0g
ICAgCi0gICAgdm9pZCBpbml0aWFsaXplTGluZU1ldGFkYXRhKCk7Ci0gICAgdm9pZCBpbml0aWFs
aXplUGFnZU1ldGFkYXRhKCk7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlN
ZXRhZGF0YShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsCiAgICAgICAgIHNpemVfdCBzaXplQ2xh
c3MsIEJ1bXBBbGxvY2F0b3ImLCBCdW1wUmFuZ2VDYWNoZSYsIExpbmVDYWNoZSYsIEZhaWx1cmVB
Y3Rpb24pOwpAQCAtMTM2LDEwICsxMzEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNQZW5k
aW5nRGVjb21taXRzIHsgZmFsc2UgfTsKICAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZV9hbnkg
bV9jb25kaXRpb247CiAKLSAgICBzaXplX3QgbV92bVBhZ2VTaXplUGh5c2ljYWw7Ci0gICAgVmVj
dG9yPExpbmVNZXRhZGF0YT4gbV9zbWFsbExpbmVNZXRhZGF0YTsKLSAgICBzdGQ6OmFycmF5PHNp
emVfdCwgc2l6ZUNsYXNzQ291bnQ+IG1fcGFnZUNsYXNzZXM7Ci0KICAgICBMaW5lQ2FjaGUgbV9s
aW5lQ2FjaGU7CiAgICAgc3RkOjphcnJheTxMaXN0PENodW5rPiwgcGFnZUNsYXNzQ291bnQ+IG1f
ZnJlZVBhZ2VzOwogICAgIHN0ZDo6YXJyYXk8TGlzdDxDaHVuaz4sIHBhZ2VDbGFzc0NvdW50PiBt
X2NodW5rQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL01ldGFkYXRh
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTWV0YWRhdGEuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYTZlOWRhZDU0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiTWV0YWRhdGEuaCIKKworbmFtZXNwYWNlIGJtYWxsb2MgeworCitERUZJTkVfU1RBVElDX1BF
Ul9QUk9DRVNTX1NUT1JBR0UoTWV0YWRhdGFTdG9yYWdlKTsKKworTWV0YWRhdGFTdG9yYWdlOjpN
ZXRhZGF0YVN0b3JhZ2Uoc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCisgICAgOiBtX3ZtUGFnZVNp
emVQaHlzaWNhbCB7IHZtUGFnZVNpemVQaHlzaWNhbCgpIH0KK3sKKyAgICBSRUxFQVNFX0JBU1NF
UlQobV92bVBhZ2VTaXplUGh5c2ljYWwgPj0gc21hbGxQYWdlU2l6ZSk7CisgICAgUkVMRUFTRV9C
QVNTRVJUKHZtUGFnZVNpemUoKSA+PSBtX3ZtUGFnZVNpemVQaHlzaWNhbCk7CisKKyAgICBpbml0
aWFsaXplTGluZU1ldGFkYXRhKCk7CisgICAgaW5pdGlhbGl6ZVBhZ2VNZXRhZGF0YSgpOworfQor
Cit2b2lkIE1ldGFkYXRhU3RvcmFnZTo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpCit7CisgICAg
c2l6ZV90IHNpemVDbGFzc0NvdW50ID0gYm1hbGxvYzo6c2l6ZUNsYXNzKHNtYWxsTGluZVNpemUp
OworICAgIG1fc21hbGxMaW5lTWV0YWRhdGEuZ3JvdyhzaXplQ2xhc3NDb3VudCAqIHNtYWxsTGlu
ZUNvdW50KCkpOworCisgICAgZm9yIChzaXplX3Qgc2l6ZUNsYXNzID0gMDsgc2l6ZUNsYXNzIDwg
c2l6ZUNsYXNzQ291bnQ7ICsrc2l6ZUNsYXNzKSB7CisgICAgICAgIHNpemVfdCBzaXplID0gb2Jq
ZWN0U2l6ZShzaXplQ2xhc3MpOworICAgICAgICBMaW5lTWV0YWRhdGEqIHBhZ2VNZXRhZGF0YSA9
ICZtX3NtYWxsTGluZU1ldGFkYXRhW3NpemVDbGFzcyAqIHNtYWxsTGluZUNvdW50KCldOworCisg
ICAgICAgIHNpemVfdCBvYmplY3QgPSAwOworICAgICAgICBzaXplX3QgbGluZSA9IDA7CisgICAg
ICAgIHdoaWxlIChvYmplY3QgPCBtX3ZtUGFnZVNpemVQaHlzaWNhbCkgeworICAgICAgICAgICAg
bGluZSA9IG9iamVjdCAvIHNtYWxsTGluZVNpemU7CisgICAgICAgICAgICBzaXplX3QgbGVmdG92
ZXIgPSBvYmplY3QgJSBzbWFsbExpbmVTaXplOworCisgICAgICAgICAgICBzaXplX3Qgb2JqZWN0
Q291bnQ7CisgICAgICAgICAgICBzaXplX3QgcmVtYWluZGVyOworICAgICAgICAgICAgZGl2aWRl
Um91bmRpbmdVcChzbWFsbExpbmVTaXplIC0gbGVmdG92ZXIsIHNpemUsIG9iamVjdENvdW50LCBy
ZW1haW5kZXIpOworCisgICAgICAgICAgICBwYWdlTWV0YWRhdGFbbGluZV0gPSB7IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KGxlZnRvdmVyKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
b2JqZWN0Q291bnQpIH07CisKKyAgICAgICAgICAgIG9iamVjdCArPSBvYmplY3RDb3VudCAqIHNp
emU7CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGUgbGFzdCBvYmplY3Qg
aW4gYSBwYWdlIHRvIGVzY2FwZSB0aGUgcGFnZS4KKyAgICAgICAgaWYgKG9iamVjdCA+IG1fdm1Q
YWdlU2l6ZVBoeXNpY2FsKSB7CisgICAgICAgICAgICBCQVNTRVJUKHBhZ2VNZXRhZGF0YVtsaW5l
XS5vYmplY3RDb3VudCk7CisgICAgICAgICAgICAtLXBhZ2VNZXRhZGF0YVtsaW5lXS5vYmplY3RD
b3VudDsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNZXRhZGF0YVN0b3JhZ2U6OmluaXRp
YWxpemVQYWdlTWV0YWRhdGEoKQoreworICAgIGF1dG8gY29tcHV0ZVBhZ2VTaXplID0gWyZdKHNp
emVfdCBzaXplQ2xhc3MpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3RTaXplKHNpemVD
bGFzcyk7CisgICAgICAgIGlmIChzaXplQ2xhc3MgPCBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxM
aW5lU2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWw7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgcGFnZVNpemUgPSBtX3ZtUGFnZVNpemVQaHlzaWNhbDsgcGFnZVNp
emUgPCBwYWdlU2l6ZU1heDsgcGFnZVNpemUgKz0gbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChwYWdlU2l6ZSA8PSBjaHVua1NpemUgLyAyKTsKKyAg
ICAgICAgICAgIHNpemVfdCB3YXN0ZSA9IHBhZ2VTaXplICUgc2l6ZTsKKyAgICAgICAgICAgIGlm
ICh3YXN0ZSA8PSBwYWdlU2l6ZSAvIHBhZ2VTaXplV2FzdGVGYWN0b3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhZ2VTaXplOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHBhZ2VTaXpl
TWF4OworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVDbGFzc0NvdW50
OyArK2kpCisgICAgICAgIG1fcGFnZUNsYXNzZXNbaV0gPSAoY29tcHV0ZVBhZ2VTaXplKGkpIC0g
MSkgLyBzbWFsbFBhZ2VTaXplOworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9jCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9NZXRhZGF0YS5oCnNpbWlsYXJpdHkgaW5kZXggNTAlCnJlbmFtZSBmcm9tIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmgKcmVuYW1lIHRvIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTWV0YWRhdGEuaAppbmRleCA4MGIzMzgxMTE5OS4uMmNlMmM1NzIwMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRhLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9NZXRhZGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDE0IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIExpbmVNZXRhZGF0YV9oCi0jZGVmaW5lIExpbmVNZXRhZGF0
YV9oCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk11dGV4LmgiCisjaW5jbHVkZSAiU2l6ZXMu
aCIKKyNpbmNsdWRlICJTdGF0aWNQZXJQcm9jZXNzLmgiCisjaW5jbHVkZSAiVmVjdG9yLmgiCisj
aW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8bXV0ZXg+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsK
IApAQCAtMzMsNiArMzksNDkgQEAgc3RydWN0IExpbmVNZXRhZGF0YSB7CiAgICAgdW5zaWduZWQg
Y2hhciBvYmplY3RDb3VudDsKIH07CiAKK2NsYXNzIE1ldGFkYXRhU3RvcmFnZSA6IHB1YmxpYyBT
dGF0aWNQZXJQcm9jZXNzPE1ldGFkYXRhU3RvcmFnZT4geworcHVibGljOgorICAgIE1ldGFkYXRh
U3RvcmFnZShzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgfk1ldGFkYXRhU3RvcmFnZSgp
ID0gZGVsZXRlOworCisgICAgaW5saW5lIHNpemVfdCBwYWdlQ2xhc3Moc2l6ZV90IHNpemVDbGFz
cykgY29uc3QgeyByZXR1cm4gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOyB9CisgICAgaW5saW5l
IHNpemVfdCBzbWFsbExpbmVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdm1QYWdlU2l6ZVBoeXNp
Y2FsIC8gc21hbGxMaW5lU2l6ZTsgfQorCisgICAgaW5saW5lIExpbmVNZXRhZGF0YSYgbGluZU1l
dGFkYXRhKHNpemVfdCBzaXplQ2xhc3MsIHNpemVfdCBsaW5lTnVtYmVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc21hbGxMaW5lTWV0YWRhdGFbc2l6ZUNsYXNzICogc21hbGxMaW5lQ291bnQo
KSArIGxpbmVOdW1iZXJdOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVM
aW5lTWV0YWRhdGEoKTsKKyAgICB2b2lkIGluaXRpYWxpemVQYWdlTWV0YWRhdGEoKTsKKworICAg
IHNpemVfdCBtX3ZtUGFnZVNpemVQaHlzaWNhbDsKKyAgICBWZWN0b3I8TGluZU1ldGFkYXRhPiBt
X3NtYWxsTGluZU1ldGFkYXRhOworICAgIHN0ZDo6YXJyYXk8c2l6ZV90LCBzaXplQ2xhc3NDb3Vu
dD4gbV9wYWdlQ2xhc3NlczsKK307CitERUNMQVJFX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdF
KE1ldGFkYXRhU3RvcmFnZSk7CisKK2NsYXNzIE1ldGFkYXRhIHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBNZXRhZGF0YShzaXplX3Qgc2l6ZUNsYXNzKQorICAgICAgICA6IG1fc2l6ZUNsYXNzIHsg
c2l6ZUNsYXNzIH0KKyAgICAgICAgLCBtX3N0b3JhZ2UgeyAqTWV0YWRhdGFTdG9yYWdlOjpnZXQo
KSB9CisgICAgeworICAgIH0KKworICAgIGlubGluZSBzaXplX3QgcGFnZUNsYXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlLnBhZ2VDbGFzcyhtX3NpemVDbGFzcyk7IH0KKyAgICBpbmxpbmUg
c2l6ZV90IHNtYWxsTGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLnNtYWxsTGlu
ZUNvdW50KCk7IH0KKyAgICBpbmxpbmUgdW5zaWduZWQgY2hhciBzdGFydE9mZnNldChzaXplX3Qg
bGluZU51bWJlcikgeyByZXR1cm4gbGluZU1ldGFkYXRhKGxpbmVOdW1iZXIpLnN0YXJ0T2Zmc2V0
OyB9CisgICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgb2JqZWN0Q291bnQoc2l6ZV90IGxpbmVOdW1i
ZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0YShsaW5lTnVtYmVyKS5vYmplY3RDb3VudDsgfQorCitw
cml2YXRlOgorICAgIGlubGluZSBjb25zdCBMaW5lTWV0YWRhdGEmIGxpbmVNZXRhZGF0YShzaXpl
X3QgbGluZU51bWJlcikgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmxpbmVNZXRhZGF0YShtX3Np
emVDbGFzcywgbGluZU51bWJlcik7IH0KKworICAgIHNpemVfdCBtX3NpemVDbGFzczsKKyAgICBN
ZXRhZGF0YVN0b3JhZ2UmIG1fc3RvcmFnZTsKK307CisKIHN0YXRpY19hc3NlcnQoCiAgICAgc21h
bGxMaW5lU2l6ZSAtIGFsaWdubWVudCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNo
YXI+OjptYXgoKSwKICAgICAibWF4aW11bSBvYmplY3Qgb2Zmc2V0IG11c3QgZml0IGluIExpbmVN
ZXRhZGF0YTo6c3RhcnRPZmZzZXQiKTsKQEAgLTQyLDUgKzkxLDMgQEAgc3RhdGljX2Fzc2VydCgK
ICAgICAibWF4aW11bSBvYmplY3QgY291bnQgbXVzdCBmaXQgaW4gTGluZU1ldGFkYXRhOjpvYmpl
Y3RDb3VudCIpOwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCi0KLSNlbmRpZiAvLyBMaW5lTWV0
YWRhdGFfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387259</attachid>
            <date>2020-01-09 13:15:39 -0800</date>
            <delta_ts>2020-01-09 14:57:51 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-205834.diff</filename>
            <type>text/plain</type>
            <size>22078</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL2JtYWxs
b2MvQ01ha2VMaXN0cy50eHQKaW5kZXggZjNiZWExOWQxOTQuLjMwZGJjMzQ1YjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9D
TWFrZUxpc3RzLnR4dApAQCAtMTYsNiArMTYsNyBAQCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAg
Ym1hbGxvYy9GcmVlTGlzdC5jcHAKICAgICBibWFsbG9jL0dpZ2FjYWdlLmNwcAogICAgIGJtYWxs
b2MvSGVhcC5jcHAKKyAgICBibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCiAgICAgYm1hbGxvYy9I
ZWFwS2luZC5jcHAKICAgICBibWFsbG9jL0lzb0hlYXBJbXBsLmNwcAogICAgIGJtYWxsb2MvSXNv
UGFnZS5jcHAKQEAgLTcwLDYgKzcxLDcgQEAgc2V0KGJtYWxsb2NfUFVCTElDX0hFQURFUlMKICAg
ICBibWFsbG9jL0ZyZWVMaXN0SW5saW5lcy5oCiAgICAgYm1hbGxvYy9HaWdhY2FnZS5oCiAgICAg
Ym1hbGxvYy9IZWFwLmgKKyAgICBibWFsbG9jL0hlYXBDb25zdGFudHMuaAogICAgIGJtYWxsb2Mv
SGVhcEtpbmQuaAogICAgIGJtYWxsb2MvSXNvQWxsb2NhdG9yLmgKICAgICBibWFsbG9jL0lzb0Fs
bG9jYXRvcklubGluZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIv
U291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCmluZGV4IDE5Yjg5ZTkyYWNmLi4xZmI3ZmE0ZmE1MSAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFsbG9j
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAxLTA2ICBCYXN1a2UgU3V6dWtpICA8
YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBbYm1hbGxvY10gRXh0cmFjdCBjb25z
dGFudHMgZnJvbSBIZWFwIGFuZCBzaGFyZSBpdCBhbW9uZyBIZWFwcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTgzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgSGVhcCBoYXMgbWFueSBjb25zdGFu
dHMgKG1fdm1QYWdlU2l6ZVBoeXNpY2FsLCBtX3NtYWxsTGluZU1ldGFkYXRhIGFuZCBtX3BhZ2VD
bGFzc2VzKSBhbmQgdGhleQorICAgICAgICBhcmUgZGVwZW5kZW50IG9ubHkgdG8gdm1QYWdlU2l6
ZVBoeXNpY2FsIGFuZCBpZGVudGljYWwgZm9yIGFsbCBIZWFwcy4KKworICAgICAgICBFeHRyYWN0
aW5nIHRoZW0gaW50byBhIGNsYXNzIGFuZCBtYWtlIGl0IHNoYXJhYmxlIGFtb25nIGhlYXBzLiBB
bHNvIHRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgZm9yCisgICAgICAgIG1ha2luZyBIZWFwIGNvbnN0
YW50cyB0byBhY3R1YWwgYGNvbnN0ZXhwcmAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDog
QWRkZWQgSGVhcENvbnN0YW50cy5jcHAuCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBibWFsbG9jL0hlYXAuY3BwOiBSZWZlcmVu
Y2luZyBIZWFwQ29uc3RhbnRzIG9iamVjdCB0byBnZXQgaW5mb3JtYXRpb24uCisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21h
bGxQYWdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRh
KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlPYmpl
Y3QpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6aW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSk6IE1v
dmVkIHRvIEhlYXBDb25zdGFudHMuY3BwLgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6aW5pdGlh
bGl6ZVBhZ2VNZXRhZGF0YSk6IE1vdmVkIHRvIEhlYXBDb25zdGFudHMuY3BwLgorICAgICAgICAq
IGJtYWxsb2MvSGVhcC5oOiBFeHRyYWN0IG1ldGFkYXRhIGluaXRpYWxpemF0aW9uIGFuZCBtZW1i
ZXIgdmFyaWFibGVzLgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50cy5jcHA6IEFkZGVk
LgorICAgICAgICAoYm1hbGxvYzo6SGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyk6CisgICAg
ICAgIChibWFsbG9jOjpIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1ldGFkYXRhKToKKyAg
ICAgICAgKGJtYWxsb2M6OkhlYXBDb25zdGFudHM6OmluaXRpYWxpemVQYWdlTWV0YWRhdGEpOgor
ICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50cy5oOgorICAgICAgICAoYm1hbGxvYzo6SGVh
cENvbnN0YW50czo6cGFnZUNsYXNzIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBDb25z
dGFudHM6OnNtYWxsTGluZUNvdW50IGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBDb25z
dGFudHM6OnN0YXJ0T2Zmc2V0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBDb25zdGFudHM6Om9i
amVjdENvdW50KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBDb25zdGFudHM6OmxpbmVNZXRhZGF0
YSk6CisKIDIwMjAtMDEtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4gYW5k
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwZXJp
bWVudDogY3JlYXRlIGxvdHMgb2YgZGlmZmVyZW50IG1hbGxvYyB6b25lcyBmb3IgZWFzaWVyIGFj
Y291bnRpbmcgb2YgbWVtb3J5IHVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxYzI1OGJkNDgzLi5iMTczYTk3ZGM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQ3LDYgKzE0Nyw4IEBACiAJCUUzRkJCNUExMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFy
ZWRIZWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRkJCNTlFMjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRIZWFwLmNwcCAqLzsgfTsKIAkJ
RTNGQkI1QTIyMjVFQURCMDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRkJCNTlGMjI1RUFEQjAwMERCNkZC
RCAvKiBJc29TaGFyZWRIZWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNGQkI1QTQyMjVFQ0FEMjAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXBJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0ZCQjVBMzIyNUVDQUQyMDBEQjZGQkQgLyogSXNvU2hhcmVkSGVhcElubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFQjE3RDExMTIzQkZD
RDQyMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjE3RDExMDIzQkZDOEM0MDAyMDkzQTcgLyogSGVhcENv
bnN0YW50cy5jcHAgKi87IH07CisJCUVCMTdEMTEyMjNCRkNEN0EwMDIwOTNBNyAvKiBIZWFwQ29u
c3RhbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
QjE3RDEwRTIzQkU2OTFEMDAyMDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNDhCRDNCMjMyMUU4RDcwMEYx
MzZEMCAvKiBGYWlsdXJlQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQg
UEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIApAQCAtMzAwLDYgKzMwMiw4IEBACiAJCUUzRkJCNTlF
MjI1RUFEQjAwMERCNkZCRCAvKiBJc29TaGFyZWRIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IElzb1NoYXJlZEhlYXAuY3BwOyBwYXRoID0gYm1hbGxvYy9Jc29T
aGFyZWRIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNGQkI1OUYyMjVF
QURCMDAwREI2RkJEIC8qIElzb1NoYXJlZEhlYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gSXNvU2hhcmVkSGVhcC5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRkJCNUEzMjI1RUNBRDIwMERCNkZCRCAv
KiBJc29TaGFyZWRIZWFwSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBJc29TaGFyZWRIZWFwSW5saW5lcy5oOyBwYXRoID0gYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjE3RDEwRTIzQkU2OTFEMDAy
MDkzQTcgLyogSGVhcENvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBIZWFwQ29uc3RhbnRzLmg7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3IC8qIEhlYXBD
b25zdGFudHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSGVhcENv
bnN0YW50cy5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTQ4QkQzQTIzMjFFOENDMDBGMTM2RDAgLyogRmFpbHVyZUFj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGYWlsdXJlQWN0aW9uLmg7
IHBhdGggPSBibWFsbG9jL0ZhaWx1cmVBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIApAQCAtNDgyLDYgKzQ4Niw4
IEBACiAJCQkJMEY1QkYxNEMxRjIyQjBDMzAwMjlEOTFEIC8qIEdpZ2FjYWdlLmggKi8sCiAJCQkJ
MTREQTMyMEUxODg3NUQ5RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovLAogCQkJCTE0REEzMjBDMTg4
NzVCMDkwMDcyNjlFMCAvKiBIZWFwLmggKi8sCisJCQkJRUIxN0QxMTAyM0JGQzhDNDAwMjA5M0E3
IC8qIEhlYXBDb25zdGFudHMuY3BwICovLAorCQkJCUVCMTdEMTBFMjNCRTY5MUQwMDIwOTNBNyAv
KiBIZWFwQ29uc3RhbnRzLmggKi8sCiAJCQkJMTQwRkEwMDQxOUNFNEI2ODAwRkZEM0M4IC8qIExp
bmVNZXRhZGF0YS5oICovLAogCQkJCTE0NEJFMTFFMUNBMzQ2NTIwMDk5QzhDMCAvKiBPYmplY3Qu
aCAqLywKIAkJCQkxNDEwNUU4MzE4RTE0Mzc0MDAzQTEwNkUgLyogT2JqZWN0VHlwZS5jcHAgKi8s
CkBAIC02MDAsNiArNjA2LDcgQEAKIAkJCQkwRjdFQjgyOTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJl
ZUxpc3RJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCRjE0RDFGMjJCMEMzMDAyOUQ5
MUQgLyogR2lnYWNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MDAyNzQ5MThGODlDMTMwMDEx
NUM5NyAvKiBIZWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQlFQjE3RDExMjIzQkZDRDdBMDAyMDkz
QTcgLyogSGVhcENvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QkYxNDcxRjIyQThC
MTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgzQzFGOTU0
MUIwMDBGMUFCQ0IgLyogSXNvQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdFQjgy
NjFGOTU0MUIwMDBGMUFCQ0IgLyogSXNvQWxsb2NhdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NTksNiArNzY2LDcgQEAKIAkJCQkwRjdFQjgzRTFGOTU0MUIwMDBGMUFCQ0IgLyogRnJl
ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1QkYxNEYxRjIyREVBRjAwMjlEOTFEIC8q
IEdpZ2FjYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM3MThFQTM5OTAwMDhDMTUy
RiAvKiBIZWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUVCMTdEMTExMjNCRkNENDIwMDIwOTNB
NyAvKiBIZWFwQ29uc3RhbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDU1NzMzMUY3RURC
N0IwMEIxRjBBMyAvKiBIZWFwS2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjdFQjgzQjFG
OTU0MUIwMDBGMUFCQ0IgLyogSXNvSGVhcEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
NTQ5RUYxRkI1NDcwNDAwN0ZGNzVBIC8qIElzb1BhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmNwcAppbmRleCBlOThmNjU5NjBhMC4uMTE4OWI4Nzc4NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmNwcApAQCAtMzAsOSArMzAsMTAgQEAKICNpbmNsdWRlICJCdW1wQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiQ2h1bmsuaCIKICNpbmNsdWRlICJDcnlwdG9SYW5kb20uaCIKKyNp
bmNsdWRlICJEZWJ1Z0hlYXAuaCIKICNpbmNsdWRlICJFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUg
IkdpZ2FjYWdlLmgiCi0jaW5jbHVkZSAiRGVidWdIZWFwLmgiCisjaW5jbHVkZSAiSGVhcENvbnN0
YW50cy5oIgogI2luY2x1ZGUgIlBlclByb2Nlc3MuaCIKICNpbmNsdWRlICJTY2F2ZW5nZXIuaCIK
ICNpbmNsdWRlICJTbWFsbExpbmUuaCIKQEAgLTQ1LDE1ICs0Niw4IEBACiBuYW1lc3BhY2UgYm1h
bGxvYyB7CiAKIEhlYXA6OkhlYXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCi0gICAgOiBtX2tpbmQoa2luZCkKLSAgICAsIG1fdm1QYWdlU2l6ZVBoeXNpY2FsKHZtUGFn
ZVNpemVQaHlzaWNhbCgpKQorICAgIDogbV9raW5kIHsga2luZCB9LCBtX2NvbnN0YW50cyB7ICpI
ZWFwQ29uc3RhbnRzOjpnZXQoKSB9CiB7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKHZtUGFnZVNpemVQ
aHlzaWNhbCgpID49IHNtYWxsUGFnZVNpemUpOwotICAgIFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VT
aXplKCkgPj0gdm1QYWdlU2l6ZVBoeXNpY2FsKCkpOwotCi0gICAgaW5pdGlhbGl6ZUxpbmVNZXRh
ZGF0YSgpOwotICAgIGluaXRpYWxpemVQYWdlTWV0YWRhdGEoKTsKLSAgICAKICAgICBCQVNTRVJU
KCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKTsKIAogICAgIEdpZ2Fj
YWdlOjplbnN1cmVHaWdhY2FnZSgpOwpAQCAtODcsNjIgKzgxLDYgQEAgc2l6ZV90IEhlYXA6Omdp
Z2FjYWdlU2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tp
bmQpKTsKIH0KIAotdm9pZCBIZWFwOjppbml0aWFsaXplTGluZU1ldGFkYXRhKCkKLXsKLSAgICBz
aXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6ZSk7
Ci0gICAgc2l6ZV90IHNtYWxsTGluZUNvdW50ID0gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFs
bExpbmVTaXplOwotICAgIG1fc21hbGxMaW5lTWV0YWRhdGEuZ3JvdyhzaXplQ2xhc3NDb3VudCAq
IHNtYWxsTGluZUNvdW50KTsKLQotICAgIGZvciAoc2l6ZV90IHNpemVDbGFzcyA9IDA7IHNpemVD
bGFzcyA8IHNpemVDbGFzc0NvdW50OyArK3NpemVDbGFzcykgewotICAgICAgICBzaXplX3Qgc2l6
ZSA9IG9iamVjdFNpemUoc2l6ZUNsYXNzKTsKLSAgICAgICAgTGluZU1ldGFkYXRhKiBwYWdlTWV0
YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudF07
Ci0KLSAgICAgICAgc2l6ZV90IG9iamVjdCA9IDA7Ci0gICAgICAgIHNpemVfdCBsaW5lID0gMDsK
LSAgICAgICAgd2hpbGUgKG9iamVjdCA8IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Ci0gICAgICAg
ICAgICBsaW5lID0gb2JqZWN0IC8gc21hbGxMaW5lU2l6ZTsKLSAgICAgICAgICAgIHNpemVfdCBs
ZWZ0b3ZlciA9IG9iamVjdCAlIHNtYWxsTGluZVNpemU7Ci0KLSAgICAgICAgICAgIHNpemVfdCBv
YmplY3RDb3VudDsKLSAgICAgICAgICAgIHNpemVfdCByZW1haW5kZXI7Ci0gICAgICAgICAgICBk
aXZpZGVSb3VuZGluZ1VwKHNtYWxsTGluZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2JqZWN0Q291
bnQsIHJlbWFpbmRlcik7Ci0KLSAgICAgICAgICAgIHBhZ2VNZXRhZGF0YVtsaW5lXSA9IHsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihvYmplY3RDb3VudCkgfTsKLQotICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVjdENvdW50
ICogc2l6ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBsYXN0IG9i
amVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgotICAgICAgICBpZiAob2JqZWN0ID4g
bV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKLSAgICAgICAgICAgIEJBU1NFUlQocGFnZU1ldGFkYXRh
W2xpbmVdLm9iamVjdENvdW50KTsKLSAgICAgICAgICAgIC0tcGFnZU1ldGFkYXRhW2xpbmVdLm9i
amVjdENvdW50OwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEhlYXA6OmluaXRpYWxpemVQ
YWdlTWV0YWRhdGEoKQotewotICAgIGF1dG8gY29tcHV0ZVBhZ2VTaXplID0gWyZdKHNpemVfdCBz
aXplQ2xhc3MpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3RTaXplKHNpemVDbGFzcyk7
Ci0gICAgICAgIGlmIChzaXplQ2xhc3MgPCBibWFsbG9jOjpzaXplQ2xhc3Moc21hbGxMaW5lU2l6
ZSkpCi0gICAgICAgICAgICByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWw7Ci0KLSAgICAgICAg
Zm9yIChzaXplX3QgcGFnZVNpemUgPSBtX3ZtUGFnZVNpemVQaHlzaWNhbDsKLSAgICAgICAgICAg
IHBhZ2VTaXplIDwgcGFnZVNpemVNYXg7Ci0gICAgICAgICAgICBwYWdlU2l6ZSArPSBtX3ZtUGFn
ZVNpemVQaHlzaWNhbCkgewotICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKHBhZ2VTaXplIDw9
IGNodW5rU2l6ZSAvIDIpOwotICAgICAgICAgICAgc2l6ZV90IHdhc3RlID0gcGFnZVNpemUgJSBz
aXplOwotICAgICAgICAgICAgaWYgKHdhc3RlIDw9IHBhZ2VTaXplIC8gcGFnZVNpemVXYXN0ZUZh
Y3RvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFnZVNpemU7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiBwYWdlU2l6ZU1heDsKLSAgICB9OwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplQ2xhc3NDb3VudDsgKytpKQotICAgICAgICBtX3BhZ2VDbGFzc2Vz
W2ldID0gKGNvbXB1dGVQYWdlU2l6ZShpKSAtIDEpIC8gc21hbGxQYWdlU2l6ZTsKLX0KLQogc2l6
ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogewogICAg
IHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwpAQCAtMzQyLDcgKzI4MCw3IEBAIFNtYWxsUGFnZSog
SGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNp
emVfdCBzaXplQ2xhCiAgICAgbV9zY2F2ZW5nZXItPmRpZFN0YXJ0R3Jvd2luZygpOwogICAgIAog
ICAgIFNtYWxsUGFnZSogcGFnZSA9IFsmXSgpIC0+IFNtYWxsUGFnZSogewotICAgICAgICBzaXpl
X3QgcGFnZUNsYXNzID0gbV9wYWdlQ2xhc3Nlc1tzaXplQ2xhc3NdOworICAgICAgICBzaXplX3Qg
cGFnZUNsYXNzID0gbV9jb25zdGFudHMucGFnZUNsYXNzKHNpemVDbGFzcyk7CiAgICAgICAgIAog
ICAgICAgICBpZiAobV9mcmVlUGFnZXNbcGFnZUNsYXNzXS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBhbGxvY2F0ZVNtYWxsQ2h1bmsobG9jaywgcGFnZUNsYXNzLCBhY3Rpb24pOwpAQCAtMzk5LDgg
KzMzNyw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OnVuaXF1ZV9sb2Nr
PE11dGV4PiYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluCiAgICAgaWYgKHBhZ2UtPnJlZkNvdW50
KGxvY2spKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3Qgc2l6ZUNsYXNzID0gcGFnZS0+
c2l6ZUNsYXNzKCk7Ci0gICAgc2l6ZV90IHBhZ2VDbGFzcyA9IG1fcGFnZUNsYXNzZXNbc2l6ZUNs
YXNzXTsKKyAgICBzaXplX3QgcGFnZUNsYXNzID0gbV9jb25zdGFudHMucGFnZUNsYXNzKHBhZ2Ut
PnNpemVDbGFzcygpKTsKIAogICAgIG1fZnJlZWFibGVNZW1vcnkgKz0gcGh5c2ljYWxQYWdlU2l6
ZVNsb3BweShwYWdlLT5iZWdpbigpLT5iZWdpbigpLCBwYWdlU2l6ZShwYWdlQ2xhc3MpKTsKIApA
QCAtNDQwLDEzICszNzcsMTEgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5
TWV0YWRhdGEoCiAgICAgfQogICAgIFNtYWxsTGluZSogbGluZXMgPSBwYWdlLT5iZWdpbigpOwog
ICAgIEJBU1NFUlQocGFnZS0+aGFzRnJlZUxpbmVzKGxvY2spKTsKLSAgICBzaXplX3Qgc21hbGxM
aW5lQ291bnQgPSBtX3ZtUGFnZVNpemVQaHlzaWNhbCAvIHNtYWxsTGluZVNpemU7Ci0gICAgTGlu
ZU1ldGFkYXRhKiBwYWdlTWV0YWRhdGEgPSAmbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3Mg
KiBzbWFsbExpbmVDb3VudF07Ci0gICAgCisKICAgICBhdXRvIGZpbmRTbWFsbEJ1bXBSYW5nZSA9
IFsmXShzaXplX3QmIGxpbmVOdW1iZXIpIHsKLSAgICAgICAgZm9yICggOyBsaW5lTnVtYmVyIDwg
c21hbGxMaW5lQ291bnQ7ICsrbGluZU51bWJlcikgeworICAgICAgICBmb3IgKCA7IGxpbmVOdW1i
ZXIgPCBtX2NvbnN0YW50cy5zbWFsbExpbmVDb3VudCgpOyArK2xpbmVOdW1iZXIpIHsKICAgICAg
ICAgICAgIGlmICghbGluZXNbbGluZU51bWJlcl0ucmVmQ291bnQobG9jaykpIHsKLSAgICAgICAg
ICAgICAgICBpZiAocGFnZU1ldGFkYXRhW2xpbmVOdW1iZXJdLm9iamVjdENvdW50KQorICAgICAg
ICAgICAgICAgIGlmIChtX2NvbnN0YW50cy5vYmplY3RDb3VudChzaXplQ2xhc3MsIGxpbmVOdW1i
ZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtNDU0LDE4ICszODksMTkgQEAgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVt
cFJhbmdlc0J5TWV0YWRhdGEoCiAgICAgfTsKIAogICAgIGF1dG8gYWxsb2NhdGVTbWFsbEJ1bXBS
YW5nZSA9IFsmXShzaXplX3QmIGxpbmVOdW1iZXIpIC0+IEJ1bXBSYW5nZSB7Ci0gICAgICAgIGNo
YXIqIGJlZ2luID0gbGluZXNbbGluZU51bWJlcl0uYmVnaW4oKSArIHBhZ2VNZXRhZGF0YVtsaW5l
TnVtYmVyXS5zdGFydE9mZnNldDsKKyAgICAgICAgY2hhciogYmVnaW4gPSBsaW5lc1tsaW5lTnVt
YmVyXS5iZWdpbigpICsgbV9jb25zdGFudHMuc3RhcnRPZmZzZXQoc2l6ZUNsYXNzLCBsaW5lTnVt
YmVyKTsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgb2JqZWN0Q291bnQgPSAwOwogICAgICAgICAK
LSAgICAgICAgZm9yICggOyBsaW5lTnVtYmVyIDwgc21hbGxMaW5lQ291bnQ7ICsrbGluZU51bWJl
cikgeworICAgICAgICBmb3IgKCA7IGxpbmVOdW1iZXIgPCBtX2NvbnN0YW50cy5zbWFsbExpbmVD
b3VudCgpOyArK2xpbmVOdW1iZXIpIHsKICAgICAgICAgICAgIGlmIChsaW5lc1tsaW5lTnVtYmVy
XS5yZWZDb3VudChsb2NrKSkKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
aWYgKCFwYWdlTWV0YWRhdGFbbGluZU51bWJlcl0ub2JqZWN0Q291bnQpCisgICAgICAgICAgICBh
dXRvIGxpbmVPYmplY3RDb3VudCA9IG1fY29uc3RhbnRzLm9iamVjdENvdW50KHNpemVDbGFzcywg
bGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAoIWxpbmVPYmplY3RDb3VudCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgb2JqZWN0Q291bnQgKz0gcGFnZU1ldGFk
YXRhW2xpbmVOdW1iZXJdLm9iamVjdENvdW50OwotICAgICAgICAgICAgbGluZXNbbGluZU51bWJl
cl0ucmVmKGxvY2ssIHBhZ2VNZXRhZGF0YVtsaW5lTnVtYmVyXS5vYmplY3RDb3VudCk7CisgICAg
ICAgICAgICBvYmplY3RDb3VudCArPSBsaW5lT2JqZWN0Q291bnQ7CisgICAgICAgICAgICBsaW5l
c1tsaW5lTnVtYmVyXS5yZWYobG9jaywgbGluZU9iamVjdENvdW50KTsKICAgICAgICAgICAgIHBh
Z2UtPnJlZihsb2NrKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4geyBiZWdpbiwgb2JqZWN0
Q291bnQgfTsKQEAgLTUzMyw3ICs0NjksNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1w
UmFuZ2VzQnlPYmplY3QoCiAgICAgfTsKIAogICAgIE9iamVjdCBpdChwYWdlLT5iZWdpbigpLT5i
ZWdpbigpKTsKLSAgICBPYmplY3QgZW5kKGl0ICsgcGFnZVNpemUobV9wYWdlQ2xhc3Nlc1tzaXpl
Q2xhc3NdKSk7CisgICAgT2JqZWN0IGVuZChpdCArIHBhZ2VTaXplKG1fY29uc3RhbnRzLnBhZ2VD
bGFzcyhwYWdlLT5zaXplQ2xhc3MoKSkpKTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICgh
ZmluZFNtYWxsQnVtcFJhbmdlKGl0LCBlbmQpKSB7CiAgICAgICAgICAgICBwYWdlLT5zZXRIYXNG
cmVlTGluZXMobG9jaywgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAppbmRleCAwM2I2NDg4Y2Vh
Zi4uZGIzMjQ1MzY4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCkBAIC0zMSw3ICszMSw2IEBACiAj
aW5jbHVkZSAiRmFpbHVyZUFjdGlvbi5oIgogI2luY2x1ZGUgIkhlYXBLaW5kLmgiCiAjaW5jbHVk
ZSAiTGFyZ2VNYXAuaCIKLSNpbmNsdWRlICJMaW5lTWV0YWRhdGEuaCIKICNpbmNsdWRlICJMaXN0
LmgiCiAjaW5jbHVkZSAiTWFwLmgiCiAjaW5jbHVkZSAiTXV0ZXguaCIKQEAgLTQxLDcgKzQwLDYg
QEAKICNpbmNsdWRlICJQaHlzaWNhbFBhZ2VNYXAuaCIKICNpbmNsdWRlICJTbWFsbExpbmUuaCIK
ICNpbmNsdWRlICJTbWFsbFBhZ2UuaCIKLSNpbmNsdWRlICJWZWN0b3IuaCIKICNpbmNsdWRlIDxh
cnJheT4KICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CiAjaW5jbHVkZSA8bXV0ZXg+CkBA
IC01NCw2ICs1Miw3IEBAIGNsYXNzIEJ1bGtEZWNvbW1pdDsKIGNsYXNzIEJ1bXBBbGxvY2F0b3I7
CiBjbGFzcyBEZWJ1Z0hlYXA7CiBjbGFzcyBFbmRUYWc7CitjbGFzcyBIZWFwQ29uc3RhbnRzOwog
Y2xhc3MgU2NhdmVuZ2VyOwogCiBjbGFzcyBIZWFwIHsKQEAgLTExMCw5ICsxMDksNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgdXNpbmdHaWdhY2FnZSgpOwogICAgIHZvaWQqIGdpZ2FjYWdlQmFzZVB0
cigpOyAvLyBNYXkgY3Jhc2ggaWYgIXVzaW5nR2lnYWNhZ2UoKS4KICAgICBzaXplX3QgZ2lnYWNh
Z2VTaXplKCk7Ci0gICAgCi0gICAgdm9pZCBpbml0aWFsaXplTGluZU1ldGFkYXRhKCk7Ci0gICAg
dm9pZCBpbml0aWFsaXplUGFnZU1ldGFkYXRhKCk7CiAKICAgICB2b2lkIGFsbG9jYXRlU21hbGxC
dW1wUmFuZ2VzQnlNZXRhZGF0YShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsCiAgICAgICAgIHNp
emVfdCBzaXplQ2xhc3MsIEJ1bXBBbGxvY2F0b3ImLCBCdW1wUmFuZ2VDYWNoZSYsIExpbmVDYWNo
ZSYsIEZhaWx1cmVBY3Rpb24pOwpAQCAtMTMyLDE0ICsxMjgsMTEgQEAgcHJpdmF0ZToKICAgICBM
YXJnZVJhbmdlIHNwbGl0QW5kQWxsb2NhdGUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBMYXJn
ZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIAogICAgIEhlYXBLaW5kIG1fa2lu
ZDsKKyAgICBIZWFwQ29uc3RhbnRzJiBtX2NvbnN0YW50czsKIAogICAgIGJvb2wgbV9oYXNQZW5k
aW5nRGVjb21taXRzIHsgZmFsc2UgfTsKICAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZV9hbnkg
bV9jb25kaXRpb247CiAKLSAgICBzaXplX3QgbV92bVBhZ2VTaXplUGh5c2ljYWw7Ci0gICAgVmVj
dG9yPExpbmVNZXRhZGF0YT4gbV9zbWFsbExpbmVNZXRhZGF0YTsKLSAgICBzdGQ6OmFycmF5PHNp
emVfdCwgc2l6ZUNsYXNzQ291bnQ+IG1fcGFnZUNsYXNzZXM7Ci0KICAgICBMaW5lQ2FjaGUgbV9s
aW5lQ2FjaGU7CiAgICAgc3RkOjphcnJheTxMaXN0PENodW5rPiwgcGFnZUNsYXNzQ291bnQ+IG1f
ZnJlZVBhZ2VzOwogICAgIHN0ZDo6YXJyYXk8TGlzdDxDaHVuaz4sIHBhZ2VDbGFzc0NvdW50PiBt
X2NodW5rQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTZiNjdiMzY0OTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJIZWFwQ29uc3RhbnRzLmgiCisKK25hbWVzcGFjZSBibWFsbG9jIHsK
KworREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEhlYXBDb25zdGFudHMpOworCitI
ZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorICAg
IDogbV92bVBhZ2VTaXplUGh5c2ljYWwgeyB2bVBhZ2VTaXplUGh5c2ljYWwoKSB9Cit7CisgICAg
UkVMRUFTRV9CQVNTRVJUKG1fdm1QYWdlU2l6ZVBoeXNpY2FsID49IHNtYWxsUGFnZVNpemUpOwor
ICAgIFJFTEVBU0VfQkFTU0VSVCh2bVBhZ2VTaXplKCkgPj0gbV92bVBhZ2VTaXplUGh5c2ljYWwp
OworCisgICAgaW5pdGlhbGl6ZUxpbmVNZXRhZGF0YSgpOworICAgIGluaXRpYWxpemVQYWdlTWV0
YWRhdGEoKTsKK30KKwordm9pZCBIZWFwQ29uc3RhbnRzOjppbml0aWFsaXplTGluZU1ldGFkYXRh
KCkKK3sKKyAgICBzaXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBibWFsbG9jOjpzaXplQ2xhc3Moc21h
bGxMaW5lU2l6ZSk7CisgICAgbV9zbWFsbExpbmVNZXRhZGF0YS5ncm93KHNpemVDbGFzc0NvdW50
ICogc21hbGxMaW5lQ291bnQoKSk7CisKKyAgICBmb3IgKHNpemVfdCBzaXplQ2xhc3MgPSAwOyBz
aXplQ2xhc3MgPCBzaXplQ2xhc3NDb3VudDsgKytzaXplQ2xhc3MpIHsKKyAgICAgICAgc2l6ZV90
IHNpemUgPSBvYmplY3RTaXplKHNpemVDbGFzcyk7CisgICAgICAgIExpbmVNZXRhZGF0YSogcGFn
ZU1ldGFkYXRhID0gJm1fc21hbGxMaW5lTWV0YWRhdGFbc2l6ZUNsYXNzICogc21hbGxMaW5lQ291
bnQoKV07CisKKyAgICAgICAgc2l6ZV90IG9iamVjdCA9IDA7CisgICAgICAgIHNpemVfdCBsaW5l
ID0gMDsKKyAgICAgICAgd2hpbGUgKG9iamVjdCA8IG1fdm1QYWdlU2l6ZVBoeXNpY2FsKSB7Cisg
ICAgICAgICAgICBsaW5lID0gb2JqZWN0IC8gc21hbGxMaW5lU2l6ZTsKKyAgICAgICAgICAgIHNp
emVfdCBsZWZ0b3ZlciA9IG9iamVjdCAlIHNtYWxsTGluZVNpemU7CisKKyAgICAgICAgICAgIHNp
emVfdCBvYmplY3RDb3VudDsKKyAgICAgICAgICAgIHNpemVfdCByZW1haW5kZXI7CisgICAgICAg
ICAgICBkaXZpZGVSb3VuZGluZ1VwKHNtYWxsTGluZVNpemUgLSBsZWZ0b3Zlciwgc2l6ZSwgb2Jq
ZWN0Q291bnQsIHJlbWFpbmRlcik7CisKKyAgICAgICAgICAgIHBhZ2VNZXRhZGF0YVtsaW5lXSA9
IHsgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obGVmdG92ZXIpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihvYmplY3RDb3VudCkgfTsKKworICAgICAgICAgICAgb2JqZWN0ICs9IG9iamVj
dENvdW50ICogc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERvbid0IGFsbG93IHRoZSBs
YXN0IG9iamVjdCBpbiBhIHBhZ2UgdG8gZXNjYXBlIHRoZSBwYWdlLgorICAgICAgICBpZiAob2Jq
ZWN0ID4gbV92bVBhZ2VTaXplUGh5c2ljYWwpIHsKKyAgICAgICAgICAgIEJBU1NFUlQocGFnZU1l
dGFkYXRhW2xpbmVdLm9iamVjdENvdW50KTsKKyAgICAgICAgICAgIC0tcGFnZU1ldGFkYXRhW2xp
bmVdLm9iamVjdENvdW50OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEhlYXBDb25zdGFu
dHM6OmluaXRpYWxpemVQYWdlTWV0YWRhdGEoKQoreworICAgIGF1dG8gY29tcHV0ZVBhZ2VTaXpl
ID0gWyZdKHNpemVfdCBzaXplQ2xhc3MpIHsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBvYmplY3RT
aXplKHNpemVDbGFzcyk7CisgICAgICAgIGlmIChzaXplQ2xhc3MgPCBibWFsbG9jOjpzaXplQ2xh
c3Moc21hbGxMaW5lU2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2lj
YWw7CisKKyAgICAgICAgZm9yIChzaXplX3QgcGFnZVNpemUgPSBtX3ZtUGFnZVNpemVQaHlzaWNh
bDsgcGFnZVNpemUgPCBwYWdlU2l6ZU1heDsgcGFnZVNpemUgKz0gbV92bVBhZ2VTaXplUGh5c2lj
YWwpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChwYWdlU2l6ZSA8PSBjaHVua1NpemUg
LyAyKTsKKyAgICAgICAgICAgIHNpemVfdCB3YXN0ZSA9IHBhZ2VTaXplICUgc2l6ZTsKKyAgICAg
ICAgICAgIGlmICh3YXN0ZSA8PSBwYWdlU2l6ZSAvIHBhZ2VTaXplV2FzdGVGYWN0b3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHBhZ2VTaXplOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHBhZ2VTaXplTWF4OworICAgIH07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVD
bGFzc0NvdW50OyArK2kpCisgICAgICAgIG1fcGFnZUNsYXNzZXNbaV0gPSAoY29tcHV0ZVBhZ2VT
aXplKGkpIC0gMSkgLyBzbWFsbFBhZ2VTaXplOworfQorCit9IC8vIG5hbWVzcGFjZSBibWFsbG9j
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi41YTczNTczOWE2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiTGluZU1ldGFkYXRhLmgiCisjaW5jbHVkZSAiTXV0ZXguaCIKKyNpbmNs
dWRlICJTaXplcy5oIgorI2luY2x1ZGUgIlN0YXRpY1BlclByb2Nlc3MuaCIKKyNpbmNsdWRlICJW
ZWN0b3IuaCIKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDxtdXRleD4KKworbmFtZXNwYWNl
IGJtYWxsb2MgeworCitjbGFzcyBIZWFwQ29uc3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nl
c3M8SGVhcENvbnN0YW50cz4geworcHVibGljOgorICAgIEhlYXBDb25zdGFudHMoc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOworICAgIH5IZWFwQ29uc3RhbnRzKCkgPSBkZWxldGU7CisKKyAgICBp
bmxpbmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNzKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VDbGFzc2VzW3NpemVDbGFzc107IH0KKyAgICBpbmxpbmUgc2l6ZV90IHNtYWxsTGluZUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV92bVBhZ2VTaXplUGh5c2ljYWwgLyBzbWFsbExpbmVTaXpl
OyB9CisgICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgc3RhcnRPZmZzZXQoc2l6ZV90IHNpemVDbGFz
cywgc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVNZXRhZGF0YShzaXplQ2xhc3MsIGxp
bmVOdW1iZXIpLnN0YXJ0T2Zmc2V0OyB9CisgICAgaW5saW5lIHVuc2lnbmVkIGNoYXIgb2JqZWN0
Q291bnQoc2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpIHsgcmV0dXJuIGxpbmVN
ZXRhZGF0YShzaXplQ2xhc3MsIGxpbmVOdW1iZXIpLm9iamVjdENvdW50OyB9CisKK3ByaXZhdGU6
CisgICAgdm9pZCBpbml0aWFsaXplTGluZU1ldGFkYXRhKCk7CisgICAgdm9pZCBpbml0aWFsaXpl
UGFnZU1ldGFkYXRhKCk7CisKKyAgICBpbmxpbmUgTGluZU1ldGFkYXRhJiBsaW5lTWV0YWRhdGEo
c2l6ZV90IHNpemVDbGFzcywgc2l6ZV90IGxpbmVOdW1iZXIpCisgICAgeworICAgICAgICByZXR1
cm4gbV9zbWFsbExpbmVNZXRhZGF0YVtzaXplQ2xhc3MgKiBzbWFsbExpbmVDb3VudCgpICsgbGlu
ZU51bWJlcl07CisgICAgfQorCisgICAgc2l6ZV90IG1fdm1QYWdlU2l6ZVBoeXNpY2FsOworICAg
IFZlY3RvcjxMaW5lTWV0YWRhdGE+IG1fc21hbGxMaW5lTWV0YWRhdGE7CisgICAgc3RkOjphcnJh
eTxzaXplX3QsIHNpemVDbGFzc0NvdW50PiBtX3BhZ2VDbGFzc2VzOworfTsKK0RFQ0xBUkVfU1RB
VElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoSGVhcENvbnN0YW50cyk7CisKK30gLy8gbmFtZXNwYWNl
IGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGluZU1ldGFkYXRh
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCmluZGV4IDgwYjMzODEx
MTk5Li42MzcwYjM1OWYwYSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaW5l
TWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpbmVNZXRhZGF0YS5oCkBA
IC0yMyw4ICsyMyw5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIExpbmVNZXRh
ZGF0YV9oCi0jZGVmaW5lIExpbmVNZXRhZGF0YV9oCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IlNpemVzLmgiCiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIApAQCAtNDIsNSArNDMsMyBAQCBzdGF0
aWNfYXNzZXJ0KAogICAgICJtYXhpbXVtIG9iamVjdCBjb3VudCBtdXN0IGZpdCBpbiBMaW5lTWV0
YWRhdGE6Om9iamVjdENvdW50Iik7CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKLQotI2VuZGlm
IC8vIExpbmVNZXRhZGF0YV9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>