<?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>207852</bug_id>
          
          <creation_ts>2020-02-17 12:24:47 -0800</creation_ts>
          <short_desc>[css-grid] Improve performance of track sizing algorithm for spanning items</short_desc>
          <delta_ts>2020-02-18 06:48:15 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.chromium.org/p/chromium/issues/detail?id=1021929</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oriol Brufau">obrufau</reporter>
          <assigned_to name="Oriol Brufau">obrufau</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1619792</commentid>
    <comment_count>0</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2020-02-17 12:24:47 -0800</bug_when>
    <thetext>The grid track sizing algorithm handles intrinsic contributions from items that span a single track in a simpler way than when the span is greater than 1.

In the former case, sizeTrackToFitNonSpanningItem only calculates the track sizing function of each track once per each item in that track.

But in the latter case we not only calculate the track sizing function of multiple tracks per item, we also repeat this 5 times in order to handle the various TrackSizeComputationPhase.

Calculating the used track sizing function from the raw one is not a very expensive operation when done once, but repeating it so many times has a performance impact.

In Chromium I added a auto-grid-lots-of-spanning-data.html perf test. The changes that I plan to do will improve the performance of that test by 40% in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619801</commentid>
    <comment_count>1</comment_count>
      <attachid>390960</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2020-02-17 12:34:42 -0800</bug_when>
    <thetext>Created attachment 390960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619897</commentid>
    <comment_count>2</comment_count>
      <attachid>390984</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2020-02-17 14:46:27 -0800</bug_when>
    <thetext>Created attachment 390984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620096</commentid>
    <comment_count>3</comment_count>
      <attachid>390984</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2020-02-18 02:05:51 -0800</bug_when>
    <thetext>Comment on attachment 390984
Patch

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

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:247
&gt; +    const GridTrackSize&amp; trackSize = tracks(m_direction)[trackPosition].cachedTrackSize();

We can use &apos;auto&apos; type here.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:271
&gt; +        const GridTrackSize&amp; trackSize = trackList[trackPosition].cachedTrackSize();

Ditto

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:450
&gt; +            const GridTrackSize&amp; trackSize = track.cachedTrackSize();

Ditto

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:573
&gt; +        // We cannot use tracks(direction)[trackPosition].cachedTrackSize()

It&apos;s not needed to wrap comments like this.

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:634
&gt; +        const GridTrackSize&amp; trackSize = rawGridTrackSize(direction, trackPosition);

Use auto here

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:729
&gt; +        const GridTrackSize&amp; trackSize = allTracks[trackIndex].cachedTrackSize();

Ditto

&gt; Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:825
&gt; +            const GridTrackSize&amp; trackSize = allTracks[trackPosition].cachedTrackSize();

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620114</commentid>
    <comment_count>4</comment_count>
      <attachid>391040</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2020-02-18 05:21:31 -0800</bug_when>
    <thetext>Created attachment 391040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620125</commentid>
    <comment_count>5</comment_count>
      <attachid>391040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-18 06:47:52 -0800</bug_when>
    <thetext>Comment on attachment 391040
Patch

Clearing flags on attachment: 391040

Committed r256826: &lt;https://trac.webkit.org/changeset/256826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620126</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-18 06:47:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620127</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-18 06:48:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/59548279&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390960</attachid>
            <date>2020-02-17 12:34:42 -0800</date>
            <delta_ts>2020-02-17 14:46:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207852-20200217213440.patch</filename>
            <type>text/plain</type>
            <size>15025</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTQ4YjRkY2Q4NGMx
OTQ4Y2U3ZWJjZGY1ZGI4ZWU4NTE2MTE3Yy4uMjg3ZTkwODQ4ZmNjMGZkZDNiZDVlMzFkN2IzMjlk
MTNlMTFiNDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTAyLTE3ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1ncmlkXSBJbXBy
b3ZlIHBlcmZvcm1hbmNlIG9mIHRyYWNrIHNpemluZyBhbGdvcml0aG0gZm9yIHNwYW5uaW5nIGl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxj
dWxhdGluZyB0aGUgdXNlZCBzaXppbmcgZnVuY3Rpb24gZm9yIGEgdHJhY2sgaXMgbm90IGEgdmVy
eSBleHBlbnNpdmUKKyAgICAgICAgb3BlcmF0aW9uLCBidXQgaXQncyBub3QgdHJpdmlhbCBlaXRo
ZXIsIGFuZCB0aGUgdHJhY2sgc2l6aW5nIGFsZ29yaXRobQorICAgICAgICBuZWVkcyB0byBhY2Nl
c3Mgc2l6aW5nIGZ1bmN0aW9ucyBhbGwgb3ZlciB0aGUgcGxhY2UuIFRoaXMgZW5kcyB1cCBoYXZp
bmcKKyAgICAgICAgYSBwZXJmb3JtYW5jZSBjb3N0LCBlc3BlY2lhbGx5IGZvciBzcGFubmluZyBp
dGVtcy4KKworICAgICAgICBJbnRyaW5zaWMgY29udHJpYnV0aW9ucyBmcm9tIGl0ZW1zIHRoYXQg
c3BhbiBhIHNpbmdsZSB0cmFjayBhcmUgaGFuZGxlZAorICAgICAgICBpbiBhIHNpbXBsZXIgd2F5
IHRoYW4gd2hlbiB0aGUgc3BhbiBpcyBncmVhdGVyIHRoYW4gMS4gSW4gdGhlIGZvcm1lcgorICAg
ICAgICBjYXNlLCBTaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRlbSBvbmx5IGNhbGN1bGF0ZXMg
dGhlIHRyYWNrIHNpemluZworICAgICAgICBmdW5jdGlvbiBvZiBlYWNoIHRyYWNrIG9uY2UgcGVy
IGVhY2ggaXRlbSBpbiB0aGF0IHRyYWNrLiBCdXQgaW4gdGhlCisgICAgICAgIGxhdHRlciBjYXNl
IHdlIG5vdCBvbmx5IGNhbGN1bGF0ZSB0aGUgdHJhY2sgc2l6aW5nIGZ1bmN0aW9uIG9mIG11bHRp
cGxlCisgICAgICAgIHRyYWNrcyBwZXIgaXRlbSwgd2UgYWxzbyByZXBlYXQgdGhpcyA1IHRpbWVz
IGluIG9yZGVyIHRvIGhhbmRsZSB0aGUKKyAgICAgICAgdmFyaW91cyBUcmFja1NpemVDb21wdXRh
dGlvblBoYXNlLgorCisgICAgICAgIFRoZXJlZm9yZSwgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2Us
IHRoaXMgcGF0Y2ggY2FjaGVzIHRoZSB1c2VkIHRyYWNrCisgICAgICAgIHNpemluZyBmdW5jdGlv
bnMgaW4gdGhlIHRyYWNrcyB0aGVtc2VsdmVzLgorCisgICAgICAgIFRoaXMgaXMgYSBwb3J0IG9m
IHRoZXNlIENocm9taXVtIHBhdGNoZXM6CisgICAgICAgIC0gaHR0cHM6Ly9jaHJvbWl1bS1yZXZp
ZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzE5MDEyOTIKKyAgICAgICAgLSBo
dHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysv
MTkxOTE0MAorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xOTQwMTA3CisKKyAgICAgICAgQ2hyb21pdW0gaGFzIGEgYXV0
by1ncmlkLWxvdHMtb2Ytc3Bhbm5pbmctZGF0YSBwZXJmIHRlc3QuIEluIFdlYktpdCwgaXRzCisg
ICAgICAgIHBlcmZvcm1hbmNlIGltcHJvdmVzIGJ5IDQwJSB3aXRoIHRoaXMgcGF0Y2guCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0Q2FjaGVkVHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2l6ZVRyYWNrVG9GaXROb25TcGFubmluZ0l0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzcGFubmlu
Z0l0ZW1Dcm9zc2VzRmxleGlibGVTaXplZFRyYWNrcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluY3JlYXNlU2l6ZXNUb0FjY29tbW9kYXRlU3Bh
bm5pbmdJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRBcmVhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FsY3Vs
YXRlR3JpZFRyYWNrU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleFNpemVkVHJhY2tz
R3Jvd3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6ZmluZEZyVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pblNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpub3JtYWxpemVkRmxleEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGVm
aW5pdGVTaXplU3RyYXRlZ3k6OmZpbmRVc2VkRmxleEZyYWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbGl6ZVRyYWNrU2l6ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjp0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Hcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Y2Fj
aGVkVHJhY2tTaXplIGNvbnN0KToKKwogMjAyMC0wMi0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIFJlbW92ZSBSZXBsYWNlZEJveDo6bV9sYXlvdXRC
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKaW5kZXggNjNkOGNhYjMwZGM1MjJhOWJhMDY5N2E2MjgwMmU5ZGVjOGRkZTU1
ZC4uMmRiNTRjYWJjYTg1ZmEwNDAxNzhjYTFjYjM4ZWY3NzBjYWI4M2UzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
QEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChPcHRp
b25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKICAgICBtX2dyb3d0aExpbWl0Q2FwID0g
Z3Jvd3RoTGltaXRDYXA7CiB9CiAKK3ZvaWQgR3JpZFRyYWNrOjpzZXRDYWNoZWRUcmFja1NpemUo
Y29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXplKQoreworICAgIG1fY2FjaGVkVHJh
Y2tTaXplID0gY2FjaGVkVHJhY2tTaXplOworfQorCiB2b2lkIEdyaWRUcmFjazo6ZW5zdXJlR3Jv
d3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpCiB7CiAgICAgaWYgKG1fZ3Jvd3RoTGltaXQg
IT0gaW5maW5pdHkgJiYgbV9ncm93dGhMaW1pdCA8IG1fYmFzZVNpemUpCkBAIC0yMzksNyArMjQ0
LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxHcm93dGhM
aW1pdChjb25zdCBHcmlkVHJhY2tTaXplJiB0cmEKIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRlbShjb25zdCBHcmlkU3BhbiYgc3Bhbiwg
UmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrJiB0cmFjaykKIHsKICAgICB1bnNpZ25lZCB0
cmFja1Bvc2l0aW9uID0gc3Bhbi5zdGFydExpbmUoKTsKLSAgICBHcmlkVHJhY2tTaXplIHRyYWNr
U2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIHRyYWNrUG9zaXRpb24pOworICAgIGNv
bnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IHRyYWNrcyhtX2RpcmVjdGlvbilbdHJhY2tQ
b3NpdGlvbl0uY2FjaGVkVHJhY2tTaXplKCk7CiAKICAgICBpZiAodHJhY2tTaXplLmhhc01pbkNv
bnRlbnRNaW5UcmFja0JyZWFkdGgoKSkgewogICAgICAgICB0cmFjay5zZXRCYXNlU2l6ZShzdGQ6
Om1heCh0cmFjay5iYXNlU2l6ZSgpLCBtX3N0cmF0ZWd5LT5taW5Db250ZW50Rm9yQ2hpbGQoZ3Jp
ZEl0ZW0pKSk7CkBAIC0yNjEsOCArMjY2LDkgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0IEdyaWRTcGFuJiBzcGEKIAog
Ym9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNwYW5uaW5nSXRlbUNyb3NzZXNGbGV4aWJs
ZVNpemVkVHJhY2tzKGNvbnN0IEdyaWRTcGFuJiBpdGVtU3BhbikgY29uc3QKIHsKKyAgICBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tMaXN0ID0gdHJhY2tzKG1fZGlyZWN0aW9uKTsKICAg
ICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IGl0ZW1TcGFuKSB7Ci0gICAgICAgIGNvbnN0IEdy
aWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIHRyYWNr
UG9zaXRpb24pOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSB0cmFj
a0xpc3RbdHJhY2tQb3NpdGlvbl0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIGlmICh0cmFj
a1NpemUubWluVHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkgfHwgdHJhY2tTaXplLm1heFRyYWNrQnJl
YWR0aCgpLmlzRmxleCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDQw
LDggKzQ0Niw4IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbmNyZWFzZVNpemVz
VG9BY2NvbW1vZGF0ZVNwYW5uaW5nSXRlbXMoY29uc3QgR3JpCiAgICAgICAgIGdyb3dCZXlvbmRH
cm93dGhMaW1pdHNUcmFja3Muc2hyaW5rKDApOwogICAgICAgICBMYXlvdXRVbml0IHNwYW5uaW5n
VHJhY2tzU2l6ZTsKICAgICAgICAgZm9yIChhdXRvIHRyYWNrUG9zaXRpb24gOiBpdGVtU3Bhbikg
ewotICAgICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNr
U2l6ZShtX2RpcmVjdGlvbiwgdHJhY2tQb3NpdGlvbik7Ci0gICAgICAgICAgICBHcmlkVHJhY2sm
IHRyYWNrID0gdHJhY2tzKG1fZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9uXTsKKyAgICAgICAgICAg
IEdyaWRUcmFjayYgdHJhY2sgPSBhbGxUcmFja3NbdHJhY2tQb3NpdGlvbl07CisgICAgICAgICAg
ICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSB0cmFjay5jYWNoZWRUcmFja1NpemUo
KTsKICAgICAgICAgICAgIHNwYW5uaW5nVHJhY2tzU2l6ZSArPSB0cmFja1NpemVGb3JUcmFja1Np
emVDb21wdXRhdGlvblBoYXNlKHBoYXNlLCB0cmFjaywgRm9yYmlkSW5maW5pdHkpOwogICAgICAg
ICAgICAgaWYgKCFzaG91bGRQcm9jZXNzVHJhY2tGb3JUcmFja1NpemVDb21wdXRhdGlvblBoYXNl
KHBoYXNlLCB0cmFja1NpemUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTY0LDcg
KzU3MCwxMSBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVk
R3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZAogICAgICAgICAvLyBXZSBtYXkgbmVl
ZCB0byBlc3RpbWF0ZSB0aGUgZ3JpZCBhcmVhIHNpemUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRyYWNr
CiAgICAgICAgIC8vIHNpemluZyBhbGdvcml0aG0gaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgcHJl
LWxheW91dCBvZiBvcnRob2dvbmFsCiAgICAgICAgIC8vIGl0ZW1zLgotICAgICAgICBHcmlkVHJh
Y2tTaXplIHRyYWNrU2l6ZSA9IHdhc1NldHVwKCkgPyBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwg
dHJhY2tQb3NpdGlvbikgOiByYXdHcmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhY2tQb3NpdGlv
bik7CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgdHJhY2tzKGRpcmVjdGlvbilbdHJhY2tQb3Np
dGlvbl0uY2FjaGVkVHJhY2tTaXplKCkKKyAgICAgICAgLy8gYmVjYXVzZSB0cmFja3MoZGlyZWN0
aW9uKSBpcyBlbXB0eSwgc2luY2Ugd2UgYXJlIGVpdGhlciBwZXJmb3JtaW5nCisgICAgICAgIC8v
IHByZS1sYXlvdXQgb3IgYXJlIHJ1bm5pbmcgdGhlIHRyYWNrIHNpemluZyBhbGdvcml0aG0gaW4g
dGhlIG9wcG9zaXRlCisgICAgICAgIC8vIGRpcmVjdGlvbiBhbmQgaGF2ZW4ndCBydW4gaXQgaW4g
dGhlIGRlc2lyZWQgZGlyZWN0aW9uIHlldC4KKyAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYg
dHJhY2tTaXplID0gd2FzU2V0dXAoKSA/IGNhbGN1bGF0ZUdyaWRUcmFja1NpemUoZGlyZWN0aW9u
LCB0cmFja1Bvc2l0aW9uKSA6IHJhd0dyaWRUcmFja1NpemUoZGlyZWN0aW9uLCB0cmFja1Bvc2l0
aW9uKTsKICAgICAgICAgR3JpZExlbmd0aCBtYXhUcmFja1NpemUgPSB0cmFja1NpemUubWF4VHJh
Y2tCcmVhZHRoKCk7CiAgICAgICAgIGlmIChtYXhUcmFja1NpemUuaXNDb250ZW50U2l6ZWQoKSB8
fCBtYXhUcmFja1NpemUuaXNGbGV4KCkgfHwgaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8obWF4
VHJhY2tTaXplLCBkaXJlY3Rpb24pKQogICAgICAgICAgICAgZ3JpZEFyZWFJc0luZGVmaW5pdGUg
PSB0cnVlOwpAQCAtNjIxLDcgKzYzMSw3IEBAIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Ojppc0ludHJpbnNpY1NpemVkR3JpZEFyZWEoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwKICAgICBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gZ3JpZERpcmVjdGlvbkZvckF4aXMo
YXhpcyk7CiAgICAgY29uc3QgR3JpZFNwYW4mIHNwYW4gPSBtX2dyaWQuZ3JpZEl0ZW1TcGFuKGNo
aWxkLCBkaXJlY3Rpb24pOwogICAgIGZvciAoYXV0byB0cmFja1Bvc2l0aW9uIDogc3Bhbikgewot
ICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZSA9IHJhd0dyaWRUcmFja1NpemUoZGlyZWN0
aW9uLCB0cmFja1Bvc2l0aW9uKTsKKyAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tT
aXplID0gcmF3R3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRyYWNrUG9zaXRpb24pOwogICAgICAg
ICAvLyBXZSBjb25zaWRlciBmciB1bml0cyBhcyAnYXV0bycgZm9yIHRoZSBtaW4gc2l6aW5nIGZ1
bmN0aW9uLgogICAgICAgICAvLyBGSVhNRShqZmVybmFuZGV6KTogaHR0cHM6Ly9naXRodWIuY29t
L3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzI2MTEKICAgICAgICAgLy8KQEAgLTYzNiw3ICs2NDYs
NyBAQCBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRB
cmVhKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Hcmlk
VHJhY2tTaXplIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Z3JpZFRyYWNrU2l6ZShHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCB0cmFuc2xhdGVkSW5kZXgpIGNv
bnN0CitHcmlkVHJhY2tTaXplIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FsY3VsYXRlR3Jp
ZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCB0
cmFuc2xhdGVkSW5kZXgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwogICAgIC8v
IENvbGxhcHNlIGVtcHR5IGF1dG8gcmVwZWF0IHRyYWNrcyBpZiBhdXRvLWZpdC4KQEAgLTY3NSw3
ICs2ODUsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleEZh
Y3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICBpZiAodHJhY2tzVG9U
cmVhdEFzSW5mbGV4aWJsZSAmJiB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5jb250YWlucyhp
bmRleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlU2l6
ZSA9IHRyYWNrc1tpbmRleF0uYmFzZVNpemUoKTsKLSAgICAgICAgZG91YmxlIGZsZXhGYWN0b3Ig
PSBncmlkVHJhY2tTaXplKG1fZGlyZWN0aW9uLCBpbmRleCkubWF4VHJhY2tCcmVhZHRoKCkuZmxl
eCgpOworICAgICAgICBkb3VibGUgZmxleEZhY3RvciA9IHRyYWNrc1tpbmRleF0uY2FjaGVkVHJh
Y2tTaXplKCkubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpOwogICAgICAgICAvLyB0cmVhdGluZyBh
bGwgc3VjaCB0cmFja3MgYXMgaW5mbGV4aWJsZS4KICAgICAgICAgaWYgKGJhc2VTaXplID4gaHlw
b3RoZXRpY2FsRmFjdG9yVW5pdFNpemUgKiBmbGV4RmFjdG9yKSB7CiAgICAgICAgICAgICBsZWZ0
T3ZlclNwYWNlIC09IGJhc2VTaXplOwpAQCAtNjk4LDcgKzcwOCw3IEBAIHZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleFNpemVkVHJhY2tzR3Jvd3RoKGRvdWJsZSBmbGV4
RnJhY3Rpb24sCiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNr
cyhtX2RpcmVjdGlvbik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1GbGV4VHJhY2tz
OyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgdHJhY2tJbmRleCA9IG1fZmxleGlibGVTaXplZFRy
YWNrc0luZGV4W2ldOwotICAgICAgICBhdXRvIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9k
aXJlY3Rpb24sIHRyYWNrSW5kZXgpOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFj
a1NpemUgPSBhbGxUcmFja3NbdHJhY2tJbmRleF0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAg
IEFTU0VSVCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpOwogICAgICAgICBM
YXlvdXRVbml0IG9sZEJhc2VTaXplID0gYWxsVHJhY2tzW3RyYWNrSW5kZXhdLmJhc2VTaXplKCk7
CiAgICAgICAgIExheW91dFVuaXQgbmV3QmFzZVNpemUgPSBzdGQ6Om1heChvbGRCYXNlU2l6ZSwg
TGF5b3V0VW5pdChmbGV4RnJhY3Rpb24gKiB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxl
eCgpKSk7CkBAIC03MTYsNyArNzI2LDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6ZmluZEZyVW5pdFNpemUoY29uc3QgR3JpZFNwYW4mIHRyYWNrc1NwYW4sIExheW8KICAgICBk
b3VibGUgZmxleEZhY3RvclN1bSA9IDA7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCA4PiBmbGV4aWJs
ZVRyYWNrc0luZGV4ZXM7CiAgICAgZm9yIChhdXRvIHRyYWNrSW5kZXggOiB0cmFja3NTcGFuKSB7
Ci0gICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShtX2RpcmVj
dGlvbiwgdHJhY2tJbmRleCk7CisgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6
ZSA9IGFsbFRyYWNrc1t0cmFja0luZGV4XS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgaWYg
KCF0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpCiAgICAgICAgICAgICBsZWZ0
T3ZlclNwYWNlIC09IGFsbFRyYWNrc1t0cmFja0luZGV4XS5iYXNlU2l6ZSgpOwogICAgICAgICBl
bHNlIHsKQEAgLTgxMCw4ICs4MjAsOSBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobVN0cmF0ZWd5OjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgIGlm
IChjaGlsZFNpemUuaXNBdXRvKCkgJiYgY2hpbGRNaW5TaXplLmlzQXV0bygpICYmIG92ZXJmbG93
SXNWaXNpYmxlKSB7CiAgICAgICAgIGF1dG8gbWluU2l6ZSA9IG1pbkNvbnRlbnRGb3JDaGlsZChj
aGlsZCk7CiAgICAgICAgIExheW91dFVuaXQgbWF4QnJlYWR0aDsKKyAgICAgICAgYXV0byBhbGxU
cmFja3MgPSBtX2FsZ29yaXRobS50cmFja3MoZGlyZWN0aW9uKCkpOwogICAgICAgICBmb3IgKGF1
dG8gdHJhY2tQb3NpdGlvbiA6IG1fYWxnb3JpdGhtLmdyaWQoKS5ncmlkSXRlbVNwYW4oY2hpbGQs
IGRpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemUgPSBt
X2FsZ29yaXRobS5ncmlkVHJhY2tTaXplKGRpcmVjdGlvbigpLCB0cmFja1Bvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGFsbFRyYWNrc1t0cmFj
a1Bvc2l0aW9uXS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgICAgIGlmICghdHJhY2tTaXpl
Lmhhc0ZpeGVkTWF4VHJhY2tCcmVhZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1pblNp
emU7CiAgICAgICAgICAgICBtYXhCcmVhZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5t
YXhUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDBfbHUp
KTsKQEAgLTk0Nyw4ICs5NTgsOSBAQCB2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGlt
aXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFsPAogfQogCiAKLXN0
YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNr
JiB0cmFjaywgZG91YmxlIGZsZXhGYWN0b3IpCitzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxp
emVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2spCiB7CisgICAgZG91YmxlIGZs
ZXhGYWN0b3IgPSB0cmFjay5jYWNoZWRUcmFja1NpemUoKS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4
KCk7CiAgICAgcmV0dXJuIHRyYWNrLmJhc2VTaXplKCkgLyBzdGQ6Om1heDxkb3VibGU+KDEsIGZs
ZXhGYWN0b3IpOwogfQogCkBAIC05NjEsNyArOTczLDcgQEAgZG91YmxlIEluZGVmaW5pdGVTaXpl
U3RyYXRlZ3k6OmZpbmRVc2VkRmxleEZyYWN0aW9uKFZlY3Rvcjx1bnNpZ25lZD4mIGZsZXhpYmxl
U2kKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrSW5kZXggOiBmbGV4aWJsZVNpemVkVHJhY2tz
SW5kZXgpIHsKICAgICAgICAgLy8gRklYTUU6IHdlIHBhc3MgVHJhY2tTaXppbmcgdG8gZ3JpZFRy
YWNrU2l6ZSgpIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlcgogICAgICAgICAvLyBh
cyB3ZSBrbm93IHRoZSB0cmFjayBpcyBhIGZsZXggc2l6ZWQgdHJhY2suIEl0J2QgYmUgbmljZSBu
b3QgdG8gaGF2ZSB0byBkbyB0aGF0LgotICAgICAgICBmbGV4RnJhY3Rpb24gPSBzdGQ6Om1heChm
bGV4RnJhY3Rpb24sIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oYWxsVHJhY2tzW3RyYWNrSW5kZXhd
LCBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhY2tJbmRleCkubWF4VHJhY2tCcmVhZHRoKCku
ZmxleCgpKSk7CisgICAgICAgIGZsZXhGcmFjdGlvbiA9IHN0ZDo6bWF4KGZsZXhGcmFjdGlvbiwg
bm9ybWFsaXplZEZsZXhGcmFjdGlvbihhbGxUcmFja3NbdHJhY2tJbmRleF0pKTsKICAgICB9CiAK
ICAgICBjb25zdCBHcmlkJiBncmlkID0gbV9hbGdvcml0aG0uZ3JpZCgpOwpAQCAtMTEwNCw4ICsx
MTE2LDggQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxpemVUcmFja1Np
emVzKCkKICAgICAvLyAxLiBJbml0aWFsaXplIHBlciBHcmlkIHRyYWNrIHZhcmlhYmxlcy4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWxsVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIEdyaWRUcmFjayYgdHJhY2sgPSBhbGxUcmFja3NbaV07Ci0gICAgICAgIGNvbnN0IEdyaWRU
cmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIGkpOwotCisg
ICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGNhbGN1bGF0ZUdyaWRUcmFj
a1NpemUobV9kaXJlY3Rpb24sIGkpOworICAgICAgICB0cmFjay5zZXRDYWNoZWRUcmFja1NpemUo
dHJhY2tTaXplKTsKICAgICAgICAgdHJhY2suc2V0QmFzZVNpemUoaW5pdGlhbEJhc2VTaXplKHRy
YWNrU2l6ZSkpOwogICAgICAgICB0cmFjay5zZXRHcm93dGhMaW1pdChpbml0aWFsR3Jvd3RoTGlt
aXQodHJhY2tTaXplLCB0cmFjay5iYXNlU2l6ZSgpKSk7CiAgICAgICAgIHRyYWNrLnNldEluZmlu
aXRlbHlHcm93YWJsZShmYWxzZSk7CkBAIC0xMzUyLDcgKzEzNjQsNyBAQCBib29sIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkgY29u
c3QKIHsKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1f
ZGlyZWN0aW9uKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFRyYWNrcy5zaXplKCk7
ICsraSkgewotICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUo
bV9kaXJlY3Rpb24sIGkpOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUg
PSBhbGxfdHJhY2tzW2ldLmNhY2hlZFRyYWNrU2l6ZSgpOwogICAgICAgICBpZiAoaW5pdGlhbEJh
c2VTaXplKHRyYWNrU2l6ZSkgPiBhbGxUcmFja3NbaV0uYmFzZVNpemUoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggNzIyNTNkZTJjZWYzZGE4ZjI5NWIyZWE5
NmIwM2U1NzllNTNmZjk1ZS4uOWY0NGY2MGZkMDExOTYyZGI2NTg2NDNjZTZlYjNmNTJiYTYyYTA3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uaApAQCAtNzMsNiArNzMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0R3Jvd3Ro
TGltaXRDYXAoT3B0aW9uYWw8TGF5b3V0VW5pdD4pOwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93dGhMaW1pdENhcDsgfQogCisg
ICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXplKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2NhY2hlZFRyYWNrU2l6ZS5oYXNWYWx1ZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1fY2FjaGVkVHJhY2tTaXplLnZhbHVlKCk7CisgICAgfQorICAgIHZvaWQgc2V0Q2FjaGVk
VHJhY2tTaXplKGNvbnN0IEdyaWRUcmFja1NpemUmKTsKKwogcHJpdmF0ZToKICAgICBib29sIGlz
R3Jvd3RoTGltaXRCaWdnZXJUaGFuQmFzZVNpemUoKSBjb25zdCB7IHJldHVybiBncm93dGhMaW1p
dElzSW5maW5pdGUoKSB8fCBtX2dyb3d0aExpbWl0ID49IG1fYmFzZVNpemU7IH0KIApAQCAtODQs
NiArOTEsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV90ZW1wU2l6ZSB7IDAgfTsKICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2dyb3d0aExpbWl0Q2FwOwogICAgIGJvb2wgbV9pbmZp
bml0ZWx5R3Jvd2FibGUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPEdyaWRUcmFja1NpemU+IG1f
Y2FjaGVkVHJhY2tTaXplOwogfTsKIAogY2xhc3MgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGZp
bmFsIHsKQEAgLTEzNyw3ICsxNDUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbGF0aXZl
R3JpZExlbmd0aEFzQXV0byhjb25zdCBHcmlkTGVuZ3RoJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uKSBjb25zdDsKLSAgICBHcmlkVHJhY2tTaXplIGdyaWRUcmFja1NpemUoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCB0cmFuc2xhdGVkSW5kZXgpIGNvbnN0OworICAgIEdyaWRU
cmFja1NpemUgY2FsY3VsYXRlR3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24s
IHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAgICAgY29uc3QgR3JpZFRyYWNrU2l6
ZSYgcmF3R3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHRy
YW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyBmb3Igc3RlcCAx
LiBpbml0aWFsaXplVHJhY2tTaXplcygpLgpAQCAtMjY1LDggKzI3Myw2IEBAIHByb3RlY3RlZDoK
ICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gmKSBjb25zdDsK
ICAgICBib29sIHVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVu
aXQ+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIAotICAgIEdyaWRUcmFja1NpemUgZ3JpZFRyYWNr
U2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3QgdHJhbnNsYXRl
ZEluZGV4KSBjb25zdCB7IHJldHVybiBtX2FsZ29yaXRobS5ncmlkVHJhY2tTaXplKGRpcmVjdGlv
biwgdHJhbnNsYXRlZEluZGV4KTsgfQotCiAgICAgLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
IGFjY2Vzc29ycyBmb3Igc3ViY2xhc3Nlcy4KICAgICBMYXlvdXRVbml0IGNvbXB1dGVUcmFja0Jh
c2VkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmNvbXB1dGVUcmFja0Jhc2VkU2l6
ZSgpOyB9CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWxnb3JpdGhtLm1fZGlyZWN0aW9uOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390984</attachid>
            <date>2020-02-17 14:46:27 -0800</date>
            <delta_ts>2020-02-18 05:21:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207852-20200217234626.patch</filename>
            <type>text/plain</type>
            <size>15024</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTQ4YjRkY2Q4NGMx
OTQ4Y2U3ZWJjZGY1ZGI4ZWU4NTE2MTE3Yy4uMjg3ZTkwODQ4ZmNjMGZkZDNiZDVlMzFkN2IzMjlk
MTNlMTFiNDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTAyLTE3ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1ncmlkXSBJbXBy
b3ZlIHBlcmZvcm1hbmNlIG9mIHRyYWNrIHNpemluZyBhbGdvcml0aG0gZm9yIHNwYW5uaW5nIGl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDYWxj
dWxhdGluZyB0aGUgdXNlZCBzaXppbmcgZnVuY3Rpb24gZm9yIGEgdHJhY2sgaXMgbm90IGEgdmVy
eSBleHBlbnNpdmUKKyAgICAgICAgb3BlcmF0aW9uLCBidXQgaXQncyBub3QgdHJpdmlhbCBlaXRo
ZXIsIGFuZCB0aGUgdHJhY2sgc2l6aW5nIGFsZ29yaXRobQorICAgICAgICBuZWVkcyB0byBhY2Nl
c3Mgc2l6aW5nIGZ1bmN0aW9ucyBhbGwgb3ZlciB0aGUgcGxhY2UuIFRoaXMgZW5kcyB1cCBoYXZp
bmcKKyAgICAgICAgYSBwZXJmb3JtYW5jZSBjb3N0LCBlc3BlY2lhbGx5IGZvciBzcGFubmluZyBp
dGVtcy4KKworICAgICAgICBJbnRyaW5zaWMgY29udHJpYnV0aW9ucyBmcm9tIGl0ZW1zIHRoYXQg
c3BhbiBhIHNpbmdsZSB0cmFjayBhcmUgaGFuZGxlZAorICAgICAgICBpbiBhIHNpbXBsZXIgd2F5
IHRoYW4gd2hlbiB0aGUgc3BhbiBpcyBncmVhdGVyIHRoYW4gMS4gSW4gdGhlIGZvcm1lcgorICAg
ICAgICBjYXNlLCBTaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRlbSBvbmx5IGNhbGN1bGF0ZXMg
dGhlIHRyYWNrIHNpemluZworICAgICAgICBmdW5jdGlvbiBvZiBlYWNoIHRyYWNrIG9uY2UgcGVy
IGVhY2ggaXRlbSBpbiB0aGF0IHRyYWNrLiBCdXQgaW4gdGhlCisgICAgICAgIGxhdHRlciBjYXNl
IHdlIG5vdCBvbmx5IGNhbGN1bGF0ZSB0aGUgdHJhY2sgc2l6aW5nIGZ1bmN0aW9uIG9mIG11bHRp
cGxlCisgICAgICAgIHRyYWNrcyBwZXIgaXRlbSwgd2UgYWxzbyByZXBlYXQgdGhpcyA1IHRpbWVz
IGluIG9yZGVyIHRvIGhhbmRsZSB0aGUKKyAgICAgICAgdmFyaW91cyBUcmFja1NpemVDb21wdXRh
dGlvblBoYXNlLgorCisgICAgICAgIFRoZXJlZm9yZSwgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2Us
IHRoaXMgcGF0Y2ggY2FjaGVzIHRoZSB1c2VkIHRyYWNrCisgICAgICAgIHNpemluZyBmdW5jdGlv
bnMgaW4gdGhlIHRyYWNrcyB0aGVtc2VsdmVzLgorCisgICAgICAgIFRoaXMgaXMgYSBwb3J0IG9m
IHRoZXNlIENocm9taXVtIHBhdGNoZXM6CisgICAgICAgIC0gaHR0cHM6Ly9jaHJvbWl1bS1yZXZp
ZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzE5MDEyOTIKKyAgICAgICAgLSBo
dHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysv
MTkxOTE0MAorICAgICAgICAtIGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5j
b20vYy9jaHJvbWl1bS9zcmMvKy8xOTQwMTA3CisKKyAgICAgICAgQ2hyb21pdW0gaGFzIGEgYXV0
by1ncmlkLWxvdHMtb2Ytc3Bhbm5pbmctZGF0YSBwZXJmIHRlc3QuIEluIFdlYktpdCwgaXRzCisg
ICAgICAgIHBlcmZvcm1hbmNlIGltcHJvdmVzIGJ5IDQwJSB3aXRoIHRoaXMgcGF0Y2guCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFjazo6c2V0Q2FjaGVkVHJhY2tTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2l6ZVRyYWNrVG9GaXROb25TcGFubmluZ0l0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzcGFubmlu
Z0l0ZW1Dcm9zc2VzRmxleGlibGVTaXplZFRyYWNrcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluY3JlYXNlU2l6ZXNUb0FjY29tbW9kYXRlU3Bh
bm5pbmdJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRBcmVhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FsY3Vs
YXRlR3JpZFRyYWNrU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG06OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleFNpemVkVHJhY2tz
R3Jvd3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6ZmluZEZyVW5pdFNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pblNpemVGb3JDaGlsZCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpub3JtYWxpemVkRmxleEZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkluZGVm
aW5pdGVTaXplU3RyYXRlZ3k6OmZpbmRVc2VkRmxleEZyYWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbGl6ZVRyYWNrU2l6ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjp0cmFja3NBcmVX
aWRlclRoYW5NaW5UcmFja0JyZWFkdGggY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Hcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6Y2Fj
aGVkVHJhY2tTaXplIGNvbnN0KToKKwogMjAyMC0wMi0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIFJlbW92ZSBSZXBsYWNlZEJveDo6bV9sYXlvdXRC
b3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKaW5kZXggNjNkOGNhYjMwZGM1MjJhOWJhMDY5N2E2MjgwMmU5ZGVjOGRkZTU1
ZC4uMWViOWM1NjA3ZTExMTFkMGJjYzc5YTdiOWRhZTBjNGIzMTZlMjM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
QEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdENhcChPcHRp
b25hbDxMYXlvdXRVbml0PiBncm93dGhMaW1pdENhcCkKICAgICBtX2dyb3d0aExpbWl0Q2FwID0g
Z3Jvd3RoTGltaXRDYXA7CiB9CiAKK3ZvaWQgR3JpZFRyYWNrOjpzZXRDYWNoZWRUcmFja1NpemUo
Y29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXplKQoreworICAgIG1fY2FjaGVkVHJh
Y2tTaXplID0gY2FjaGVkVHJhY2tTaXplOworfQorCiB2b2lkIEdyaWRUcmFjazo6ZW5zdXJlR3Jv
d3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpCiB7CiAgICAgaWYgKG1fZ3Jvd3RoTGltaXQg
IT0gaW5maW5pdHkgJiYgbV9ncm93dGhMaW1pdCA8IG1fYmFzZVNpemUpCkBAIC0yMzksNyArMjQ0
LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxHcm93dGhM
aW1pdChjb25zdCBHcmlkVHJhY2tTaXplJiB0cmEKIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRlbShjb25zdCBHcmlkU3BhbiYgc3Bhbiwg
UmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrJiB0cmFjaykKIHsKICAgICB1bnNpZ25lZCB0
cmFja1Bvc2l0aW9uID0gc3Bhbi5zdGFydExpbmUoKTsKLSAgICBHcmlkVHJhY2tTaXplIHRyYWNr
U2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIHRyYWNrUG9zaXRpb24pOworICAgIGNv
bnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IHRyYWNrcyhtX2RpcmVjdGlvbilbdHJhY2tQ
b3NpdGlvbl0uY2FjaGVkVHJhY2tTaXplKCk7CiAKICAgICBpZiAodHJhY2tTaXplLmhhc01pbkNv
bnRlbnRNaW5UcmFja0JyZWFkdGgoKSkgewogICAgICAgICB0cmFjay5zZXRCYXNlU2l6ZShzdGQ6
Om1heCh0cmFjay5iYXNlU2l6ZSgpLCBtX3N0cmF0ZWd5LT5taW5Db250ZW50Rm9yQ2hpbGQoZ3Jp
ZEl0ZW0pKSk7CkBAIC0yNjEsOCArMjY2LDkgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0IEdyaWRTcGFuJiBzcGEKIAog
Ym9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNwYW5uaW5nSXRlbUNyb3NzZXNGbGV4aWJs
ZVNpemVkVHJhY2tzKGNvbnN0IEdyaWRTcGFuJiBpdGVtU3BhbikgY29uc3QKIHsKKyAgICBjb25z
dCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tMaXN0ID0gdHJhY2tzKG1fZGlyZWN0aW9uKTsKICAg
ICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IGl0ZW1TcGFuKSB7Ci0gICAgICAgIGNvbnN0IEdy
aWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIHRyYWNr
UG9zaXRpb24pOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSB0cmFj
a0xpc3RbdHJhY2tQb3NpdGlvbl0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIGlmICh0cmFj
a1NpemUubWluVHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkgfHwgdHJhY2tTaXplLm1heFRyYWNrQnJl
YWR0aCgpLmlzRmxleCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDQw
LDggKzQ0Niw4IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbmNyZWFzZVNpemVz
VG9BY2NvbW1vZGF0ZVNwYW5uaW5nSXRlbXMoY29uc3QgR3JpCiAgICAgICAgIGdyb3dCZXlvbmRH
cm93dGhMaW1pdHNUcmFja3Muc2hyaW5rKDApOwogICAgICAgICBMYXlvdXRVbml0IHNwYW5uaW5n
VHJhY2tzU2l6ZTsKICAgICAgICAgZm9yIChhdXRvIHRyYWNrUG9zaXRpb24gOiBpdGVtU3Bhbikg
ewotICAgICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNr
U2l6ZShtX2RpcmVjdGlvbiwgdHJhY2tQb3NpdGlvbik7Ci0gICAgICAgICAgICBHcmlkVHJhY2sm
IHRyYWNrID0gdHJhY2tzKG1fZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9uXTsKKyAgICAgICAgICAg
IEdyaWRUcmFjayYgdHJhY2sgPSBhbGxUcmFja3NbdHJhY2tQb3NpdGlvbl07CisgICAgICAgICAg
ICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSB0cmFjay5jYWNoZWRUcmFja1NpemUo
KTsKICAgICAgICAgICAgIHNwYW5uaW5nVHJhY2tzU2l6ZSArPSB0cmFja1NpemVGb3JUcmFja1Np
emVDb21wdXRhdGlvblBoYXNlKHBoYXNlLCB0cmFjaywgRm9yYmlkSW5maW5pdHkpOwogICAgICAg
ICAgICAgaWYgKCFzaG91bGRQcm9jZXNzVHJhY2tGb3JUcmFja1NpemVDb21wdXRhdGlvblBoYXNl
KHBoYXNlLCB0cmFja1NpemUpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTY0LDcg
KzU3MCwxMSBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVk
R3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQoY29uc3QgUmVuZAogICAgICAgICAvLyBXZSBtYXkgbmVl
ZCB0byBlc3RpbWF0ZSB0aGUgZ3JpZCBhcmVhIHNpemUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRyYWNr
CiAgICAgICAgIC8vIHNpemluZyBhbGdvcml0aG0gaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUgcHJl
LWxheW91dCBvZiBvcnRob2dvbmFsCiAgICAgICAgIC8vIGl0ZW1zLgotICAgICAgICBHcmlkVHJh
Y2tTaXplIHRyYWNrU2l6ZSA9IHdhc1NldHVwKCkgPyBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwg
dHJhY2tQb3NpdGlvbikgOiByYXdHcmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhY2tQb3NpdGlv
bik7CisgICAgICAgIC8vIFdlIGNhbm5vdCB1c2UgdHJhY2tzKGRpcmVjdGlvbilbdHJhY2tQb3Np
dGlvbl0uY2FjaGVkVHJhY2tTaXplKCkKKyAgICAgICAgLy8gYmVjYXVzZSB0cmFja3MoZGlyZWN0
aW9uKSBpcyBlbXB0eSwgc2luY2Ugd2UgYXJlIGVpdGhlciBwZXJmb3JtaW5nCisgICAgICAgIC8v
IHByZS1sYXlvdXQgb3IgYXJlIHJ1bm5pbmcgdGhlIHRyYWNrIHNpemluZyBhbGdvcml0aG0gaW4g
dGhlIG9wcG9zaXRlCisgICAgICAgIC8vIGRpcmVjdGlvbiBhbmQgaGF2ZW4ndCBydW4gaXQgaW4g
dGhlIGRlc2lyZWQgZGlyZWN0aW9uIHlldC4KKyAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYg
dHJhY2tTaXplID0gd2FzU2V0dXAoKSA/IGNhbGN1bGF0ZUdyaWRUcmFja1NpemUoZGlyZWN0aW9u
LCB0cmFja1Bvc2l0aW9uKSA6IHJhd0dyaWRUcmFja1NpemUoZGlyZWN0aW9uLCB0cmFja1Bvc2l0
aW9uKTsKICAgICAgICAgR3JpZExlbmd0aCBtYXhUcmFja1NpemUgPSB0cmFja1NpemUubWF4VHJh
Y2tCcmVhZHRoKCk7CiAgICAgICAgIGlmIChtYXhUcmFja1NpemUuaXNDb250ZW50U2l6ZWQoKSB8
fCBtYXhUcmFja1NpemUuaXNGbGV4KCkgfHwgaXNSZWxhdGl2ZUdyaWRMZW5ndGhBc0F1dG8obWF4
VHJhY2tTaXplLCBkaXJlY3Rpb24pKQogICAgICAgICAgICAgZ3JpZEFyZWFJc0luZGVmaW5pdGUg
PSB0cnVlOwpAQCAtNjIxLDcgKzYzMSw3IEBAIGJvb2wgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Ojppc0ludHJpbnNpY1NpemVkR3JpZEFyZWEoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwKICAgICBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uID0gZ3JpZERpcmVjdGlvbkZvckF4aXMo
YXhpcyk7CiAgICAgY29uc3QgR3JpZFNwYW4mIHNwYW4gPSBtX2dyaWQuZ3JpZEl0ZW1TcGFuKGNo
aWxkLCBkaXJlY3Rpb24pOwogICAgIGZvciAoYXV0byB0cmFja1Bvc2l0aW9uIDogc3Bhbikgewot
ICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZSA9IHJhd0dyaWRUcmFja1NpemUoZGlyZWN0
aW9uLCB0cmFja1Bvc2l0aW9uKTsKKyAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tT
aXplID0gcmF3R3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRyYWNrUG9zaXRpb24pOwogICAgICAg
ICAvLyBXZSBjb25zaWRlciBmciB1bml0cyBhcyAnYXV0bycgZm9yIHRoZSBtaW4gc2l6aW5nIGZ1
bmN0aW9uLgogICAgICAgICAvLyBGSVhNRShqZmVybmFuZGV6KTogaHR0cHM6Ly9naXRodWIuY29t
L3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzI2MTEKICAgICAgICAgLy8KQEAgLTYzNiw3ICs2NDYs
NyBAQCBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRB
cmVhKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Hcmlk
VHJhY2tTaXplIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Z3JpZFRyYWNrU2l6ZShHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCB0cmFuc2xhdGVkSW5kZXgpIGNv
bnN0CitHcmlkVHJhY2tTaXplIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y2FsY3VsYXRlR3Jp
ZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25lZCB0
cmFuc2xhdGVkSW5kZXgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHdhc1NldHVwKCkpOwogICAgIC8v
IENvbGxhcHNlIGVtcHR5IGF1dG8gcmVwZWF0IHRyYWNrcyBpZiBhdXRvLWZpdC4KQEAgLTY3NSw3
ICs2ODUsNyBAQCBkb3VibGUgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleEZh
Y3RvclVuaXRTaXplKGNvbnN0IFZlY3RvcjxHcmlkVHJhYwogICAgICAgICBpZiAodHJhY2tzVG9U
cmVhdEFzSW5mbGV4aWJsZSAmJiB0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlLT5jb250YWlucyhp
bmRleCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgTGF5b3V0VW5pdCBiYXNlU2l6
ZSA9IHRyYWNrc1tpbmRleF0uYmFzZVNpemUoKTsKLSAgICAgICAgZG91YmxlIGZsZXhGYWN0b3Ig
PSBncmlkVHJhY2tTaXplKG1fZGlyZWN0aW9uLCBpbmRleCkubWF4VHJhY2tCcmVhZHRoKCkuZmxl
eCgpOworICAgICAgICBkb3VibGUgZmxleEZhY3RvciA9IHRyYWNrc1tpbmRleF0uY2FjaGVkVHJh
Y2tTaXplKCkubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpOwogICAgICAgICAvLyB0cmVhdGluZyBh
bGwgc3VjaCB0cmFja3MgYXMgaW5mbGV4aWJsZS4KICAgICAgICAgaWYgKGJhc2VTaXplID4gaHlw
b3RoZXRpY2FsRmFjdG9yVW5pdFNpemUgKiBmbGV4RmFjdG9yKSB7CiAgICAgICAgICAgICBsZWZ0
T3ZlclNwYWNlIC09IGJhc2VTaXplOwpAQCAtNjk4LDcgKzcwOCw3IEBAIHZvaWQgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtOjpjb21wdXRlRmxleFNpemVkVHJhY2tzR3Jvd3RoKGRvdWJsZSBmbGV4
RnJhY3Rpb24sCiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNr
cyhtX2RpcmVjdGlvbik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1GbGV4VHJhY2tz
OyArK2kpIHsKICAgICAgICAgdW5zaWduZWQgdHJhY2tJbmRleCA9IG1fZmxleGlibGVTaXplZFRy
YWNrc0luZGV4W2ldOwotICAgICAgICBhdXRvIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9k
aXJlY3Rpb24sIHRyYWNrSW5kZXgpOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFj
a1NpemUgPSBhbGxUcmFja3NbdHJhY2tJbmRleF0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAg
IEFTU0VSVCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpOwogICAgICAgICBM
YXlvdXRVbml0IG9sZEJhc2VTaXplID0gYWxsVHJhY2tzW3RyYWNrSW5kZXhdLmJhc2VTaXplKCk7
CiAgICAgICAgIExheW91dFVuaXQgbmV3QmFzZVNpemUgPSBzdGQ6Om1heChvbGRCYXNlU2l6ZSwg
TGF5b3V0VW5pdChmbGV4RnJhY3Rpb24gKiB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuZmxl
eCgpKSk7CkBAIC03MTYsNyArNzI2LDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6ZmluZEZyVW5pdFNpemUoY29uc3QgR3JpZFNwYW4mIHRyYWNrc1NwYW4sIExheW8KICAgICBk
b3VibGUgZmxleEZhY3RvclN1bSA9IDA7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCA4PiBmbGV4aWJs
ZVRyYWNrc0luZGV4ZXM7CiAgICAgZm9yIChhdXRvIHRyYWNrSW5kZXggOiB0cmFja3NTcGFuKSB7
Ci0gICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShtX2RpcmVj
dGlvbiwgdHJhY2tJbmRleCk7CisgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6
ZSA9IGFsbFRyYWNrc1t0cmFja0luZGV4XS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgaWYg
KCF0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkpCiAgICAgICAgICAgICBsZWZ0
T3ZlclNwYWNlIC09IGFsbFRyYWNrc1t0cmFja0luZGV4XS5iYXNlU2l6ZSgpOwogICAgICAgICBl
bHNlIHsKQEAgLTgxMCw4ICs4MjAsOSBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobVN0cmF0ZWd5OjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgIGlm
IChjaGlsZFNpemUuaXNBdXRvKCkgJiYgY2hpbGRNaW5TaXplLmlzQXV0bygpICYmIG92ZXJmbG93
SXNWaXNpYmxlKSB7CiAgICAgICAgIGF1dG8gbWluU2l6ZSA9IG1pbkNvbnRlbnRGb3JDaGlsZChj
aGlsZCk7CiAgICAgICAgIExheW91dFVuaXQgbWF4QnJlYWR0aDsKKyAgICAgICAgYXV0byBhbGxU
cmFja3MgPSBtX2FsZ29yaXRobS50cmFja3MoZGlyZWN0aW9uKCkpOwogICAgICAgICBmb3IgKGF1
dG8gdHJhY2tQb3NpdGlvbiA6IG1fYWxnb3JpdGhtLmdyaWQoKS5ncmlkSXRlbVNwYW4oY2hpbGQs
IGRpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemUgPSBt
X2FsZ29yaXRobS5ncmlkVHJhY2tTaXplKGRpcmVjdGlvbigpLCB0cmFja1Bvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGFsbFRyYWNrc1t0cmFj
a1Bvc2l0aW9uXS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgICAgIGlmICghdHJhY2tTaXpl
Lmhhc0ZpeGVkTWF4VHJhY2tCcmVhZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1pblNp
emU7CiAgICAgICAgICAgICBtYXhCcmVhZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5t
YXhUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDBfbHUp
KTsKQEAgLTk0Nyw4ICs5NTgsOSBAQCB2b2lkIEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6Om1heGlt
aXplVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2s+JiB0cmFja3MsIE9wdGlvbmFsPAogfQogCiAKLXN0
YXRpYyBpbmxpbmUgZG91YmxlIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oY29uc3QgR3JpZFRyYWNr
JiB0cmFjaywgZG91YmxlIGZsZXhGYWN0b3IpCitzdGF0aWMgaW5saW5lIGRvdWJsZSBub3JtYWxp
emVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2spCiB7CisgICAgZG91YmxlIGZs
ZXhGYWN0b3IgPSB0cmFjay5jYWNoZWRUcmFja1NpemUoKS5tYXhUcmFja0JyZWFkdGgoKS5mbGV4
KCk7CiAgICAgcmV0dXJuIHRyYWNrLmJhc2VTaXplKCkgLyBzdGQ6Om1heDxkb3VibGU+KDEsIGZs
ZXhGYWN0b3IpOwogfQogCkBAIC05NjEsNyArOTczLDcgQEAgZG91YmxlIEluZGVmaW5pdGVTaXpl
U3RyYXRlZ3k6OmZpbmRVc2VkRmxleEZyYWN0aW9uKFZlY3Rvcjx1bnNpZ25lZD4mIGZsZXhpYmxl
U2kKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrSW5kZXggOiBmbGV4aWJsZVNpemVkVHJhY2tz
SW5kZXgpIHsKICAgICAgICAgLy8gRklYTUU6IHdlIHBhc3MgVHJhY2tTaXppbmcgdG8gZ3JpZFRy
YWNrU2l6ZSgpIGJlY2F1c2UgaXQgZG9lcyBub3QgcmVhbGx5IG1hdHRlcgogICAgICAgICAvLyBh
cyB3ZSBrbm93IHRoZSB0cmFjayBpcyBhIGZsZXggc2l6ZWQgdHJhY2suIEl0J2QgYmUgbmljZSBu
b3QgdG8gaGF2ZSB0byBkbyB0aGF0LgotICAgICAgICBmbGV4RnJhY3Rpb24gPSBzdGQ6Om1heChm
bGV4RnJhY3Rpb24sIG5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24oYWxsVHJhY2tzW3RyYWNrSW5kZXhd
LCBncmlkVHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhY2tJbmRleCkubWF4VHJhY2tCcmVhZHRoKCku
ZmxleCgpKSk7CisgICAgICAgIGZsZXhGcmFjdGlvbiA9IHN0ZDo6bWF4KGZsZXhGcmFjdGlvbiwg
bm9ybWFsaXplZEZsZXhGcmFjdGlvbihhbGxUcmFja3NbdHJhY2tJbmRleF0pKTsKICAgICB9CiAK
ICAgICBjb25zdCBHcmlkJiBncmlkID0gbV9hbGdvcml0aG0uZ3JpZCgpOwpAQCAtMTEwNCw4ICsx
MTE2LDggQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxpemVUcmFja1Np
emVzKCkKICAgICAvLyAxLiBJbml0aWFsaXplIHBlciBHcmlkIHRyYWNrIHZhcmlhYmxlcy4KICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWxsVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIEdyaWRUcmFjayYgdHJhY2sgPSBhbGxUcmFja3NbaV07Ci0gICAgICAgIGNvbnN0IEdyaWRU
cmFja1NpemUmIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rpb24sIGkpOwotCisg
ICAgICAgIGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSA9IGNhbGN1bGF0ZUdyaWRUcmFj
a1NpemUobV9kaXJlY3Rpb24sIGkpOworICAgICAgICB0cmFjay5zZXRDYWNoZWRUcmFja1NpemUo
dHJhY2tTaXplKTsKICAgICAgICAgdHJhY2suc2V0QmFzZVNpemUoaW5pdGlhbEJhc2VTaXplKHRy
YWNrU2l6ZSkpOwogICAgICAgICB0cmFjay5zZXRHcm93dGhMaW1pdChpbml0aWFsR3Jvd3RoTGlt
aXQodHJhY2tTaXplLCB0cmFjay5iYXNlU2l6ZSgpKSk7CiAgICAgICAgIHRyYWNrLnNldEluZmlu
aXRlbHlHcm93YWJsZShmYWxzZSk7CkBAIC0xMzUyLDcgKzEzNjQsNyBAQCBib29sIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkgY29u
c3QKIHsKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1f
ZGlyZWN0aW9uKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbFRyYWNrcy5zaXplKCk7
ICsraSkgewotICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUo
bV9kaXJlY3Rpb24sIGkpOworICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUg
PSBhbGxUcmFja3NbaV0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIGlmIChpbml0aWFsQmFz
ZVNpemUodHJhY2tTaXplKSA+IGFsbFRyYWNrc1tpXS5iYXNlU2l6ZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAppbmRleCA3MjI1M2RlMmNlZjNkYThmMjk1YjJlYTk2
YjAzZTU3OWU1M2ZmOTVlLi45ZjQ0ZjYwZmQwMTE5NjJkYjY1ODY0M2NlNmViM2Y1MmJhNjJhMDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5oCkBAIC03Myw2ICs3MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHcm93dGhM
aW1pdENhcChPcHRpb25hbDxMYXlvdXRVbml0Pik7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Z3Jvd3RoTGltaXRDYXAoKSBjb25zdCB7IHJldHVybiBtX2dyb3d0aExpbWl0Q2FwOyB9CiAKKyAg
ICBjb25zdCBHcmlkVHJhY2tTaXplJiBjYWNoZWRUcmFja1NpemUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fY2FjaGVkVHJhY2tTaXplLmhhc1ZhbHVlKCkpOworICAgICAgICByZXR1
cm4gbV9jYWNoZWRUcmFja1NpemUudmFsdWUoKTsKKyAgICB9CisgICAgdm9pZCBzZXRDYWNoZWRU
cmFja1NpemUoY29uc3QgR3JpZFRyYWNrU2l6ZSYpOworCiBwcml2YXRlOgogICAgIGJvb2wgaXNH
cm93dGhMaW1pdEJpZ2dlclRoYW5CYXNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGdyb3d0aExpbWl0
SXNJbmZpbml0ZSgpIHx8IG1fZ3Jvd3RoTGltaXQgPj0gbV9iYXNlU2l6ZTsgfQogCkBAIC04NCw2
ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX3RlbXBTaXplIHsgMCB9OwogICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IG1fZ3Jvd3RoTGltaXRDYXA7CiAgICAgYm9vbCBtX2luZmlu
aXRlbHlHcm93YWJsZSB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8R3JpZFRyYWNrU2l6ZT4gbV9j
YWNoZWRUcmFja1NpemU7CiB9OwogCiBjbGFzcyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gZmlu
YWwgewpAQCAtMTM3LDcgKzE0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlU3BhY2UoKSBjb25zdDsKICAgICBib29sIGlzUmVsYXRpdmVH
cmlkTGVuZ3RoQXNBdXRvKGNvbnN0IEdyaWRMZW5ndGgmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24pIGNvbnN0OwotICAgIEdyaWRUcmFja1NpemUgZ3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CisgICAgR3JpZFRy
YWNrU2l6ZSBjYWxjdWxhdGVHcmlkVHJhY2tTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwg
dW5zaWduZWQgdHJhbnNsYXRlZEluZGV4KSBjb25zdDsKICAgICBjb25zdCBHcmlkVHJhY2tTaXpl
JiByYXdHcmlkVHJhY2tTaXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQgdHJh
bnNsYXRlZEluZGV4KSBjb25zdDsKIAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBzdGVwIDEu
IGluaXRpYWxpemVUcmFja1NpemVzKCkuCkBAIC0yNjUsOCArMjczLDYgQEAgcHJvdGVjdGVkOgog
ICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCYpIGNvbnN0Owog
ICAgIGJvb2wgdXBkYXRlT3ZlcnJpZGVDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxk
KFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgR3JpZFRyYWNrU2l6ZSBncmlkVHJhY2tT
aXplKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHNpemVfdCB0cmFuc2xhdGVk
SW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmdyaWRUcmFja1NpemUoZGlyZWN0aW9u
LCB0cmFuc2xhdGVkSW5kZXgpOyB9Ci0KICAgICAvLyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0g
YWNjZXNzb3JzIGZvciBzdWJjbGFzc2VzLgogICAgIExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFz
ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbGdvcml0aG0uY29tcHV0ZVRyYWNrQmFzZWRTaXpl
KCk7IH0KICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGdvcml0aG0ubV9kaXJlY3Rpb247IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391040</attachid>
            <date>2020-02-18 05:21:31 -0800</date>
            <delta_ts>2020-02-18 06:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207852-20200218142130.patch</filename>
            <type>text/plain</type>
            <size>15214</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiZTQ4YjRkY2Q4NGMx
OTQ4Y2U3ZWJjZGY1ZGI4ZWU4NTE2MTE3Yy4uYjRkMDk0ODY4MTRjZTgyZThmMjEzNGMyOGZlM2Zj
NTAxMDNmZDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTAyLTE3ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1ncmlkXSBJbXBy
b3ZlIHBlcmZvcm1hbmNlIG9mIHRyYWNrIHNpemluZyBhbGdvcml0aG0gZm9yIHNwYW5uaW5nIGl0
ZW1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc4
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBKYXZpZXIgRmVybmFuZGV6LgorCisgICAgICAgIENh
bGN1bGF0aW5nIHRoZSB1c2VkIHNpemluZyBmdW5jdGlvbiBmb3IgYSB0cmFjayBpcyBub3QgYSB2
ZXJ5IGV4cGVuc2l2ZQorICAgICAgICBvcGVyYXRpb24sIGJ1dCBpdCdzIG5vdCB0cml2aWFsIGVp
dGhlciwgYW5kIHRoZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtCisgICAgICAgIG5lZWRzIHRvIGFj
Y2VzcyBzaXppbmcgZnVuY3Rpb25zIGFsbCBvdmVyIHRoZSBwbGFjZS4gVGhpcyBlbmRzIHVwIGhh
dmluZworICAgICAgICBhIHBlcmZvcm1hbmNlIGNvc3QsIGVzcGVjaWFsbHkgZm9yIHNwYW5uaW5n
IGl0ZW1zLgorCisgICAgICAgIEludHJpbnNpYyBjb250cmlidXRpb25zIGZyb20gaXRlbXMgdGhh
dCBzcGFuIGEgc2luZ2xlIHRyYWNrIGFyZSBoYW5kbGVkCisgICAgICAgIGluIGEgc2ltcGxlciB3
YXkgdGhhbiB3aGVuIHRoZSBzcGFuIGlzIGdyZWF0ZXIgdGhhbiAxLiBJbiB0aGUgZm9ybWVyCisg
ICAgICAgIGNhc2UsIFNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtIG9ubHkgY2FsY3VsYXRl
cyB0aGUgdHJhY2sgc2l6aW5nCisgICAgICAgIGZ1bmN0aW9uIG9mIGVhY2ggdHJhY2sgb25jZSBw
ZXIgZWFjaCBpdGVtIGluIHRoYXQgdHJhY2suIEJ1dCBpbiB0aGUKKyAgICAgICAgbGF0dGVyIGNh
c2Ugd2Ugbm90IG9ubHkgY2FsY3VsYXRlIHRoZSB0cmFjayBzaXppbmcgZnVuY3Rpb24gb2YgbXVs
dGlwbGUKKyAgICAgICAgdHJhY2tzIHBlciBpdGVtLCB3ZSBhbHNvIHJlcGVhdCB0aGlzIDUgdGlt
ZXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZQorICAgICAgICB2YXJpb3VzIFRyYWNrU2l6ZUNvbXB1
dGF0aW9uUGhhc2UuCisKKyAgICAgICAgVGhlcmVmb3JlLCB0byBpbmNyZWFzZSBwZXJmb3JtYW5j
ZSwgdGhpcyBwYXRjaCBjYWNoZXMgdGhlIHVzZWQgdHJhY2sKKyAgICAgICAgc2l6aW5nIGZ1bmN0
aW9ucyBpbiB0aGUgdHJhY2tzIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgVGhpcyBpcyBhIHBvcnQg
b2YgdGhlc2UgQ2hyb21pdW0gcGF0Y2hlczoKKyAgICAgICAgLSBodHRwczovL2Nocm9taXVtLXJl
dmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvMTkwMTI5MgorICAgICAgICAt
IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9jaHJvbWl1bS9zcmMv
Ky8xOTE5MTQwCisgICAgICAgIC0gaHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNl
LmNvbS9jL2Nocm9taXVtL3NyYy8rLzE5NDAxMDcKKworICAgICAgICBDaHJvbWl1bSBoYXMgYSBh
dXRvLWdyaWQtbG90cy1vZi1zcGFubmluZy1kYXRhIHBlcmYgdGVzdC4gSW4gV2ViS2l0LCBpdHMK
KyAgICAgICAgcGVyZm9ybWFuY2UgaW1wcm92ZXMgYnkgNDAlIHdpdGggdGhpcyBwYXRjaC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpzZXRDYWNoZWRUcmFja1NpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5n
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnNwYW5u
aW5nSXRlbUNyb3NzZXNGbGV4aWJsZVNpemVkVHJhY2tzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5jcmVhc2VTaXplc1RvQWNjb21tb2RhdGVT
cGFubmluZ0l0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6ZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppc0ludHJpbnNpY1NpemVkR3JpZEFyZWEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpjYWxj
dWxhdGVHcmlkVHJhY2tTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFja1Np
emluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVGbGV4U2l6ZWRUcmFj
a3NHcm93dGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3Jp
dGhtOjpmaW5kRnJVbml0U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tT
aXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluU2l6ZUZvckNoaWxkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Om5vcm1hbGl6ZWRGbGV4RnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5k
ZWZpbml0ZVNpemVTdHJhdGVneTo6ZmluZFVzZWRGbGV4RnJhY3Rpb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tTaXpl
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnRyYWNrc0Fy
ZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0dy
aWRUcmFja1NpemluZ0FsZ29yaXRobS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFRyYWNrOjpj
YWNoZWRUcmFja1NpemUgY29uc3QpOgorCiAyMDIwLTAyLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gUmVtb3ZlIFJlcGxhY2VkQm94OjptX2xheW91
dEJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtLmNwcAppbmRleCA2M2Q4Y2FiMzBkYzUyMmE5YmEwNjk3YTYyODAyZTlkZWM4ZGRl
NTVkLi4wNzJlNzljNWRlMWFjYzA3MzJmOTdhMjY5MjQ2MjVmMjYwODViZGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNw
cApAQCAtODMsNiArODMsMTEgQEAgdm9pZCBHcmlkVHJhY2s6OnNldEdyb3d0aExpbWl0Q2FwKE9w
dGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKQogICAgIG1fZ3Jvd3RoTGltaXRDYXAg
PSBncm93dGhMaW1pdENhcDsKIH0KIAordm9pZCBHcmlkVHJhY2s6OnNldENhY2hlZFRyYWNrU2l6
ZShjb25zdCBHcmlkVHJhY2tTaXplJiBjYWNoZWRUcmFja1NpemUpCit7CisgICAgbV9jYWNoZWRU
cmFja1NpemUgPSBjYWNoZWRUcmFja1NpemU7Cit9CisKIHZvaWQgR3JpZFRyYWNrOjplbnN1cmVH
cm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXplKCkKIHsKICAgICBpZiAobV9ncm93dGhMaW1p
dCAhPSBpbmZpbml0eSAmJiBtX2dyb3d0aExpbWl0IDwgbV9iYXNlU2l6ZSkKQEAgLTIzOSw3ICsy
NDQsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0
aExpbWl0KGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYQogdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0IEdyaWRTcGFuJiBzcGFu
LCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2smIHRyYWNrKQogewogICAgIHVuc2lnbmVk
IHRyYWNrUG9zaXRpb24gPSBzcGFuLnN0YXJ0TGluZSgpOwotICAgIEdyaWRUcmFja1NpemUgdHJh
Y2tTaXplID0gZ3JpZFRyYWNrU2l6ZShtX2RpcmVjdGlvbiwgdHJhY2tQb3NpdGlvbik7CisgICAg
Y29uc3QgYXV0byYgdHJhY2tTaXplID0gdHJhY2tzKG1fZGlyZWN0aW9uKVt0cmFja1Bvc2l0aW9u
XS5jYWNoZWRUcmFja1NpemUoKTsKIAogICAgIGlmICh0cmFja1NpemUuaGFzTWluQ29udGVudE1p
blRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIHRyYWNrLnNldEJhc2VTaXplKHN0ZDo6bWF4KHRy
YWNrLmJhc2VTaXplKCksIG1fc3RyYXRlZ3ktPm1pbkNvbnRlbnRGb3JDaGlsZChncmlkSXRlbSkp
KTsKQEAgLTI2MSw4ICsyNjYsOSBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6c2l6
ZVRyYWNrVG9GaXROb25TcGFubmluZ0l0ZW0oY29uc3QgR3JpZFNwYW4mIHNwYQogCiBib29sIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6c3Bhbm5pbmdJdGVtQ3Jvc3Nlc0ZsZXhpYmxlU2l6ZWRU
cmFja3MoY29uc3QgR3JpZFNwYW4mIGl0ZW1TcGFuKSBjb25zdAogeworICAgIGNvbnN0IFZlY3Rv
cjxHcmlkVHJhY2s+JiB0cmFja0xpc3QgPSB0cmFja3MobV9kaXJlY3Rpb24pOwogICAgIGZvciAo
YXV0byB0cmFja1Bvc2l0aW9uIDogaXRlbVNwYW4pIHsKLSAgICAgICAgY29uc3QgR3JpZFRyYWNr
U2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6ZShtX2RpcmVjdGlvbiwgdHJhY2tQb3NpdGlv
bik7CisgICAgICAgIGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IHRyYWNrTGlzdFt0cmFja1Bvc2l0
aW9uXS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgaWYgKHRyYWNrU2l6ZS5taW5UcmFja0Jy
ZWFkdGgoKS5pc0ZsZXgoKSB8fCB0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkuaXNGbGV4KCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00NDAsOCArNDQ2LDggQEAgdm9p
ZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluY3JlYXNlU2l6ZXNUb0FjY29tbW9kYXRlU3Bh
bm5pbmdJdGVtcyhjb25zdCBHcmkKICAgICAgICAgZ3Jvd0JleW9uZEdyb3d0aExpbWl0c1RyYWNr
cy5zaHJpbmsoMCk7CiAgICAgICAgIExheW91dFVuaXQgc3Bhbm5pbmdUcmFja3NTaXplOwogICAg
ICAgICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IGl0ZW1TcGFuKSB7Ci0gICAgICAgICAgICBj
b25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKG1fZGlyZWN0aW9u
LCB0cmFja1Bvc2l0aW9uKTsKLSAgICAgICAgICAgIEdyaWRUcmFjayYgdHJhY2sgPSB0cmFja3Mo
bV9kaXJlY3Rpb24pW3RyYWNrUG9zaXRpb25dOworICAgICAgICAgICAgR3JpZFRyYWNrJiB0cmFj
ayA9IGFsbFRyYWNrc1t0cmFja1Bvc2l0aW9uXTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIHRy
YWNrU2l6ZSA9IHRyYWNrLmNhY2hlZFRyYWNrU2l6ZSgpOwogICAgICAgICAgICAgc3Bhbm5pbmdU
cmFja3NTaXplICs9IHRyYWNrU2l6ZUZvclRyYWNrU2l6ZUNvbXB1dGF0aW9uUGhhc2UocGhhc2Us
IHRyYWNrLCBGb3JiaWRJbmZpbml0eSk7CiAgICAgICAgICAgICBpZiAoIXNob3VsZFByb2Nlc3NU
cmFja0ZvclRyYWNrU2l6ZUNvbXB1dGF0aW9uUGhhc2UocGhhc2UsIHRyYWNrU2l6ZSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC01NjEsMTAgKzU2NywxMCBAQCBMYXlvdXRVbml0IEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6ZXN0aW1hdGVkR3JpZEFyZWFCcmVhZHRoRm9yQ2hpbGQo
Y29uc3QgUmVuZAogICAgIGJvb2wgZ3JpZEFyZWFJc0luZGVmaW5pdGUgPSBmYWxzZTsKICAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVTaXplID0gYXZhaWxhYmxlU3BhY2UoZGlyZWN0
aW9uKTsKICAgICBmb3IgKGF1dG8gdHJhY2tQb3NpdGlvbiA6IHNwYW4pIHsKLSAgICAgICAgLy8g
V2UgbWF5IG5lZWQgdG8gZXN0aW1hdGUgdGhlIGdyaWQgYXJlYSBzaXplIGJlZm9yZSBydW5uaW5n
IHRoZSB0cmFjawotICAgICAgICAvLyBzaXppbmcgYWxnb3JpdGhtIGluIG9yZGVyIHRvIHBlcmZv
cm0gdGhlIHByZS1sYXlvdXQgb2Ygb3J0aG9nb25hbAotICAgICAgICAvLyBpdGVtcy4KLSAgICAg
ICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemUgPSB3YXNTZXR1cCgpID8gZ3JpZFRyYWNrU2l6ZShk
aXJlY3Rpb24sIHRyYWNrUG9zaXRpb24pIDogcmF3R3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24sIHRy
YWNrUG9zaXRpb24pOworICAgICAgICAvLyBXZSBtYXkgbmVlZCB0byBlc3RpbWF0ZSB0aGUgZ3Jp
ZCBhcmVhIHNpemUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRyYWNrIHNpemluZyBhbGdvcml0aG0gaW4g
b3JkZXIgdG8gcGVyZm9ybSB0aGUgcHJlLWxheW91dCBvZiBvcnRob2dvbmFsIGl0ZW1zLgorICAg
ICAgICAvLyBXZSBjYW5ub3QgdXNlIHRyYWNrcyhkaXJlY3Rpb24pW3RyYWNrUG9zaXRpb25dLmNh
Y2hlZFRyYWNrU2l6ZSgpIGJlY2F1c2UgdHJhY2tzKGRpcmVjdGlvbikgaXMgZW1wdHksIHNpbmNl
IHdlIGFyZSBlaXRoZXIgcGVyZm9ybWluZyBwcmUtbGF5b3V0CisgICAgICAgIC8vIG9yIGFyZSBy
dW5uaW5nIHRoZSB0cmFjayBzaXppbmcgYWxnb3JpdGhtIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rp
b24gYW5kIGhhdmVuJ3QgcnVuIGl0IGluIHRoZSBkZXNpcmVkIGRpcmVjdGlvbiB5ZXQuCisgICAg
ICAgIGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IHdhc1NldHVwKCkgPyBjYWxjdWxhdGVHcmlkVHJh
Y2tTaXplKGRpcmVjdGlvbiwgdHJhY2tQb3NpdGlvbikgOiByYXdHcmlkVHJhY2tTaXplKGRpcmVj
dGlvbiwgdHJhY2tQb3NpdGlvbik7CiAgICAgICAgIEdyaWRMZW5ndGggbWF4VHJhY2tTaXplID0g
dHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpOwogICAgICAgICBpZiAobWF4VHJhY2tTaXplLmlz
Q29udGVudFNpemVkKCkgfHwgbWF4VHJhY2tTaXplLmlzRmxleCgpIHx8IGlzUmVsYXRpdmVHcmlk
TGVuZ3RoQXNBdXRvKG1heFRyYWNrU2l6ZSwgZGlyZWN0aW9uKSkKICAgICAgICAgICAgIGdyaWRB
cmVhSXNJbmRlZmluaXRlID0gdHJ1ZTsKQEAgLTYyMSw3ICs2MjcsNyBAQCBib29sIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6aXNJbnRyaW5zaWNTaXplZEdyaWRBcmVhKGNvbnN0IFJlbmRlckJv
eCYgY2hpbGQsCiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGdyaWRE
aXJlY3Rpb25Gb3JBeGlzKGF4aXMpOwogICAgIGNvbnN0IEdyaWRTcGFuJiBzcGFuID0gbV9ncmlk
LmdyaWRJdGVtU3BhbihjaGlsZCwgZGlyZWN0aW9uKTsKICAgICBmb3IgKGF1dG8gdHJhY2tQb3Np
dGlvbiA6IHNwYW4pIHsKLSAgICAgICAgR3JpZFRyYWNrU2l6ZSB0cmFja1NpemUgPSByYXdHcmlk
VHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhY2tQb3NpdGlvbik7CisgICAgICAgIGNvbnN0IGF1dG8m
IHRyYWNrU2l6ZSA9IHJhd0dyaWRUcmFja1NpemUoZGlyZWN0aW9uLCB0cmFja1Bvc2l0aW9uKTsK
ICAgICAgICAgLy8gV2UgY29uc2lkZXIgZnIgdW5pdHMgYXMgJ2F1dG8nIGZvciB0aGUgbWluIHNp
emluZyBmdW5jdGlvbi4KICAgICAgICAgLy8gRklYTUUoamZlcm5hbmRleik6IGh0dHBzOi8vZ2l0
aHViLmNvbS93M2MvY3Nzd2ctZHJhZnRzL2lzc3Vlcy8yNjExCiAgICAgICAgIC8vCkBAIC02MzYs
NyArNjQyLDcgQEAgYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmlzSW50cmluc2ljU2l6
ZWRHcmlkQXJlYShjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotR3JpZFRyYWNrU2l6ZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmdyaWRUcmFja1NpemUo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgdHJhbnNsYXRlZElu
ZGV4KSBjb25zdAorR3JpZFRyYWNrU2l6ZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmNhbGN1
bGF0ZUdyaWRUcmFja1NpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgdW5z
aWduZWQgdHJhbnNsYXRlZEluZGV4KSBjb25zdAogewogICAgIEFTU0VSVCh3YXNTZXR1cCgpKTsK
ICAgICAvLyBDb2xsYXBzZSBlbXB0eSBhdXRvIHJlcGVhdCB0cmFja3MgaWYgYXV0by1maXQuCkBA
IC02NzUsNyArNjgxLDcgQEAgZG91YmxlIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0
ZUZsZXhGYWN0b3JVbml0U2l6ZShjb25zdCBWZWN0b3I8R3JpZFRyYWMKICAgICAgICAgaWYgKHRy
YWNrc1RvVHJlYXRBc0luZmxleGlibGUgJiYgdHJhY2tzVG9UcmVhdEFzSW5mbGV4aWJsZS0+Y29u
dGFpbnMoaW5kZXgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIExheW91dFVuaXQg
YmFzZVNpemUgPSB0cmFja3NbaW5kZXhdLmJhc2VTaXplKCk7Ci0gICAgICAgIGRvdWJsZSBmbGV4
RmFjdG9yID0gZ3JpZFRyYWNrU2l6ZShtX2RpcmVjdGlvbiwgaW5kZXgpLm1heFRyYWNrQnJlYWR0
aCgpLmZsZXgoKTsKKyAgICAgICAgZG91YmxlIGZsZXhGYWN0b3IgPSB0cmFja3NbaW5kZXhdLmNh
Y2hlZFRyYWNrU2l6ZSgpLm1heFRyYWNrQnJlYWR0aCgpLmZsZXgoKTsKICAgICAgICAgLy8gdHJl
YXRpbmcgYWxsIHN1Y2ggdHJhY2tzIGFzIGluZmxleGlibGUuCiAgICAgICAgIGlmIChiYXNlU2l6
ZSA+IGh5cG90aGV0aWNhbEZhY3RvclVuaXRTaXplICogZmxleEZhY3RvcikgewogICAgICAgICAg
ICAgbGVmdE92ZXJTcGFjZSAtPSBiYXNlU2l6ZTsKQEAgLTY5OCw3ICs3MDQsNyBAQCB2b2lkIEdy
aWRUcmFja1NpemluZ0FsZ29yaXRobTo6Y29tcHV0ZUZsZXhTaXplZFRyYWNrc0dyb3d0aChkb3Vi
bGUgZmxleEZyYWN0aW9uLAogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+JiBhbGxUcmFja3Mg
PSB0cmFja3MobV9kaXJlY3Rpb24pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtRmxl
eFRyYWNrczsgKytpKSB7CiAgICAgICAgIHVuc2lnbmVkIHRyYWNrSW5kZXggPSBtX2ZsZXhpYmxl
U2l6ZWRUcmFja3NJbmRleFtpXTsKLSAgICAgICAgYXV0byB0cmFja1NpemUgPSBncmlkVHJhY2tT
aXplKG1fZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKKyAgICAgICAgY29uc3QgYXV0byYgdHJhY2tT
aXplID0gYWxsVHJhY2tzW3RyYWNrSW5kZXhdLmNhY2hlZFRyYWNrU2l6ZSgpOwogICAgICAgICBB
U1NFUlQodHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmlzRmxleCgpKTsKICAgICAgICAgTGF5
b3V0VW5pdCBvbGRCYXNlU2l6ZSA9IGFsbFRyYWNrc1t0cmFja0luZGV4XS5iYXNlU2l6ZSgpOwog
ICAgICAgICBMYXlvdXRVbml0IG5ld0Jhc2VTaXplID0gc3RkOjptYXgob2xkQmFzZVNpemUsIExh
eW91dFVuaXQoZmxleEZyYWN0aW9uICogdHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmZsZXgo
KSkpOwpAQCAtNzE2LDcgKzcyMiw3IEBAIGRvdWJsZSBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06
OmZpbmRGclVuaXRTaXplKGNvbnN0IEdyaWRTcGFuJiB0cmFja3NTcGFuLCBMYXlvCiAgICAgZG91
YmxlIGZsZXhGYWN0b3JTdW0gPSAwOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgOD4gZmxleGlibGVU
cmFja3NJbmRleGVzOwogICAgIGZvciAoYXV0byB0cmFja0luZGV4IDogdHJhY2tzU3Bhbikgewot
ICAgICAgICBHcmlkVHJhY2tTaXplIHRyYWNrU2l6ZSA9IGdyaWRUcmFja1NpemUobV9kaXJlY3Rp
b24sIHRyYWNrSW5kZXgpOworICAgICAgICBjb25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFj
a3NbdHJhY2tJbmRleF0uY2FjaGVkVHJhY2tTaXplKCk7CiAgICAgICAgIGlmICghdHJhY2tTaXpl
Lm1heFRyYWNrQnJlYWR0aCgpLmlzRmxleCgpKQogICAgICAgICAgICAgbGVmdE92ZXJTcGFjZSAt
PSBhbGxUcmFja3NbdHJhY2tJbmRleF0uYmFzZVNpemUoKTsKICAgICAgICAgZWxzZSB7CkBAIC04
MTAsOCArODE2LDkgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVn
eTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAgICBpZiAoY2hpbGRTaXpl
LmlzQXV0bygpICYmIGNoaWxkTWluU2l6ZS5pc0F1dG8oKSAmJiBvdmVyZmxvd0lzVmlzaWJsZSkg
ewogICAgICAgICBhdXRvIG1pblNpemUgPSBtaW5Db250ZW50Rm9yQ2hpbGQoY2hpbGQpOwogICAg
ICAgICBMYXlvdXRVbml0IG1heEJyZWFkdGg7CisgICAgICAgIGF1dG8gYWxsVHJhY2tzID0gbV9h
bGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbigpKTsKICAgICAgICAgZm9yIChhdXRvIHRyYWNrUG9z
aXRpb24gOiBtX2FsZ29yaXRobS5ncmlkKCkuZ3JpZEl0ZW1TcGFuKGNoaWxkLCBkaXJlY3Rpb24o
KSkpIHsKLSAgICAgICAgICAgIEdyaWRUcmFja1NpemUgdHJhY2tTaXplID0gbV9hbGdvcml0aG0u
Z3JpZFRyYWNrU2l6ZShkaXJlY3Rpb24oKSwgdHJhY2tQb3NpdGlvbik7CisgICAgICAgICAgICBj
b25zdCBhdXRvJiB0cmFja1NpemUgPSBhbGxUcmFja3NbdHJhY2tQb3NpdGlvbl0uY2FjaGVkVHJh
Y2tTaXplKCk7CiAgICAgICAgICAgICBpZiAoIXRyYWNrU2l6ZS5oYXNGaXhlZE1heFRyYWNrQnJl
YWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBtaW5TaXplOwogICAgICAgICAgICAgbWF4
QnJlYWR0aCArPSB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkubGVu
Z3RoKCksIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwX2x1KSk7CkBAIC05NDcsOCArOTU0LDkg
QEAgdm9pZCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjptYXhpbWl6ZVRyYWNrcyhWZWN0b3I8R3Jp
ZFRyYWNrPiYgdHJhY2tzLCBPcHRpb25hbDwKIH0KIAogCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBu
b3JtYWxpemVkRmxleEZyYWN0aW9uKGNvbnN0IEdyaWRUcmFjayYgdHJhY2ssIGRvdWJsZSBmbGV4
RmFjdG9yKQorc3RhdGljIGlubGluZSBkb3VibGUgbm9ybWFsaXplZEZsZXhGcmFjdGlvbihjb25z
dCBHcmlkVHJhY2smIHRyYWNrKQogeworICAgIGRvdWJsZSBmbGV4RmFjdG9yID0gdHJhY2suY2Fj
aGVkVHJhY2tTaXplKCkubWF4VHJhY2tCcmVhZHRoKCkuZmxleCgpOwogICAgIHJldHVybiB0cmFj
ay5iYXNlU2l6ZSgpIC8gc3RkOjptYXg8ZG91YmxlPigxLCBmbGV4RmFjdG9yKTsKIH0KIApAQCAt
OTYxLDcgKzk2OSw3IEBAIGRvdWJsZSBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpmaW5kVXNlZEZs
ZXhGcmFjdGlvbihWZWN0b3I8dW5zaWduZWQ+JiBmbGV4aWJsZVNpCiAgICAgZm9yIChjb25zdCBh
dXRvJiB0cmFja0luZGV4IDogZmxleGlibGVTaXplZFRyYWNrc0luZGV4KSB7CiAgICAgICAgIC8v
IEZJWE1FOiB3ZSBwYXNzIFRyYWNrU2l6aW5nIHRvIGdyaWRUcmFja1NpemUoKSBiZWNhdXNlIGl0
IGRvZXMgbm90IHJlYWxseSBtYXR0ZXIKICAgICAgICAgLy8gYXMgd2Uga25vdyB0aGUgdHJhY2sg
aXMgYSBmbGV4IHNpemVkIHRyYWNrLiBJdCdkIGJlIG5pY2Ugbm90IHRvIGhhdmUgdG8gZG8gdGhh
dC4KLSAgICAgICAgZmxleEZyYWN0aW9uID0gc3RkOjptYXgoZmxleEZyYWN0aW9uLCBub3JtYWxp
emVkRmxleEZyYWN0aW9uKGFsbFRyYWNrc1t0cmFja0luZGV4XSwgZ3JpZFRyYWNrU2l6ZShkaXJl
Y3Rpb24sIHRyYWNrSW5kZXgpLm1heFRyYWNrQnJlYWR0aCgpLmZsZXgoKSkpOworICAgICAgICBm
bGV4RnJhY3Rpb24gPSBzdGQ6Om1heChmbGV4RnJhY3Rpb24sIG5vcm1hbGl6ZWRGbGV4RnJhY3Rp
b24oYWxsVHJhY2tzW3RyYWNrSW5kZXhdKSk7CiAgICAgfQogCiAgICAgY29uc3QgR3JpZCYgZ3Jp
ZCA9IG1fYWxnb3JpdGhtLmdyaWQoKTsKQEAgLTExMDQsOCArMTExMiw4IEBAIHZvaWQgR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tTaXplcygpCiAgICAgLy8gMS4gSW5p
dGlhbGl6ZSBwZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFsbFRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2smIHRyYWNr
ID0gYWxsVHJhY2tzW2ldOwotICAgICAgICBjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUg
PSBncmlkVHJhY2tTaXplKG1fZGlyZWN0aW9uLCBpKTsKLQorICAgICAgICBjb25zdCBhdXRvJiB0
cmFja1NpemUgPSBjYWxjdWxhdGVHcmlkVHJhY2tTaXplKG1fZGlyZWN0aW9uLCBpKTsKKyAgICAg
ICAgdHJhY2suc2V0Q2FjaGVkVHJhY2tTaXplKHRyYWNrU2l6ZSk7CiAgICAgICAgIHRyYWNrLnNl
dEJhc2VTaXplKGluaXRpYWxCYXNlU2l6ZSh0cmFja1NpemUpKTsKICAgICAgICAgdHJhY2suc2V0
R3Jvd3RoTGltaXQoaW5pdGlhbEdyb3d0aExpbWl0KHRyYWNrU2l6ZSwgdHJhY2suYmFzZVNpemUo
KSkpOwogICAgICAgICB0cmFjay5zZXRJbmZpbml0ZWx5R3Jvd2FibGUoZmFsc2UpOwpAQCAtMTM1
Miw3ICsxMzYwLDcgQEAgYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnRyYWNrc0FyZVdp
ZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRU
cmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhbGxUcmFja3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgR3JpZFRyYWNrU2l6
ZSB0cmFja1NpemUgPSBncmlkVHJhY2tTaXplKG1fZGlyZWN0aW9uLCBpKTsKKyAgICAgICAgY29u
c3QgYXV0byYgdHJhY2tTaXplID0gYWxsVHJhY2tzW2ldLmNhY2hlZFRyYWNrU2l6ZSgpOwogICAg
ICAgICBpZiAoaW5pdGlhbEJhc2VTaXplKHRyYWNrU2l6ZSkgPiBhbGxUcmFja3NbaV0uYmFzZVNp
emUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggNzIyNTNk
ZTJjZWYzZGE4ZjI5NWIyZWE5NmIwM2U1NzllNTNmZjk1ZS4uOWY0NGY2MGZkMDExOTYyZGI2NTg2
NDNjZTZlYjNmNTJiYTYyYTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaApAQCAtNzMsNiArNzMsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0R3Jvd3RoTGltaXRDYXAoT3B0aW9uYWw8TGF5b3V0VW5pdD4pOwogICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGdyb3d0aExpbWl0Q2FwKCkgY29uc3QgeyByZXR1cm4gbV9ncm93
dGhMaW1pdENhcDsgfQogCisgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgY2FjaGVkVHJhY2tTaXpl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhY2hlZFRyYWNrU2l6ZS5oYXNWYWx1
ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkVHJhY2tTaXplLnZhbHVlKCk7CisgICAgfQor
ICAgIHZvaWQgc2V0Q2FjaGVkVHJhY2tTaXplKGNvbnN0IEdyaWRUcmFja1NpemUmKTsKKwogcHJp
dmF0ZToKICAgICBib29sIGlzR3Jvd3RoTGltaXRCaWdnZXJUaGFuQmFzZVNpemUoKSBjb25zdCB7
IHJldHVybiBncm93dGhMaW1pdElzSW5maW5pdGUoKSB8fCBtX2dyb3d0aExpbWl0ID49IG1fYmFz
ZVNpemU7IH0KIApAQCAtODQsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV90
ZW1wU2l6ZSB7IDAgfTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBtX2dyb3d0aExpbWl0Q2Fw
OwogICAgIGJvb2wgbV9pbmZpbml0ZWx5R3Jvd2FibGUgeyBmYWxzZSB9OworICAgIE9wdGlvbmFs
PEdyaWRUcmFja1NpemU+IG1fY2FjaGVkVHJhY2tTaXplOwogfTsKIAogY2xhc3MgR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtIGZpbmFsIHsKQEAgLTEzNyw3ICsxNDUsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVNwYWNlKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byhjb25zdCBHcmlkTGVuZ3RoJiwgR3Jp
ZFRyYWNrU2l6aW5nRGlyZWN0aW9uKSBjb25zdDsKLSAgICBHcmlkVHJhY2tTaXplIGdyaWRUcmFj
a1NpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25lZCB0cmFuc2xhdGVkSW5kZXgp
IGNvbnN0OworICAgIEdyaWRUcmFja1NpemUgY2FsY3VsYXRlR3JpZFRyYWNrU2l6ZShHcmlkVHJh
Y2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAgICAg
Y29uc3QgR3JpZFRyYWNrU2l6ZSYgcmF3R3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIHVuc2lnbmVkIHRyYW5zbGF0ZWRJbmRleCkgY29uc3Q7CiAKICAgICAvLyBIZWxwZXIg
bWV0aG9kcyBmb3Igc3RlcCAxLiBpbml0aWFsaXplVHJhY2tTaXplcygpLgpAQCAtMjY1LDggKzI3
Myw2IEBAIHByb3RlY3RlZDoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChS
ZW5kZXJCb3gmKSBjb25zdDsKICAgICBib29sIHVwZGF0ZU92ZXJyaWRlQ29udGFpbmluZ0Jsb2Nr
Q29udGVudFNpemVGb3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24s
IE9wdGlvbmFsPExheW91dFVuaXQ+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKIAotICAgIEdyaWRU
cmFja1NpemUgZ3JpZFRyYWNrU2l6ZShHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBzaXplX3QgdHJhbnNsYXRlZEluZGV4KSBjb25zdCB7IHJldHVybiBtX2FsZ29yaXRobS5ncmlk
VHJhY2tTaXplKGRpcmVjdGlvbiwgdHJhbnNsYXRlZEluZGV4KTsgfQotCiAgICAgLy8gR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtIGFjY2Vzc29ycyBmb3Igc3ViY2xhc3Nlcy4KICAgICBMYXlvdXRV
bml0IGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmNv
bXB1dGVUcmFja0Jhc2VkU2l6ZSgpOyB9CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLm1fZGlyZWN0aW9uOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>