<?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>224110</bug_id>
          
          <creation_ts>2021-04-02 08:29:26 -0700</creation_ts>
          <short_desc>Delete JS code and trigger garbage collection in worker threads on memory pressure</short_desc>
          <delta_ts>2021-04-02 12:13:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>
          
          <blocked>224088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746506</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 08:29:26 -0700</bug_when>
    <thetext>Delete JS code and trigger garbage collection in worker threads on memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746508</commentid>
    <comment_count>1</comment_count>
      <attachid>425025</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 08:32:10 -0700</bug_when>
    <thetext>Created attachment 425025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746532</commentid>
    <comment_count>2</comment_count>
      <attachid>425025</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-02 09:43:24 -0700</bug_when>
    <thetext>Comment on attachment 425025
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        For the garbage collection logic, I tried to match what the GCController is going

/going/doing/

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:63
&gt; +static HashSet&lt;ScriptExecutionContextIdentifier&gt;&amp; allWorkerGlobalScopeIdentifiers()

One trick we use to make this lock requirement more detectible is to make the function take a LockHolder&amp; though we don&apos;t use the lock in the function i.e. you much have acquired the lock before calling the function.  Otherwise, you get a compile time error.  It doesn&apos;t enforce that you&apos;re holding the right lock, but at least you&apos;ll know if you forgot to grab a lock.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:90
&gt; +        allWorkerGlobalScopeIdentifiers().add(contextIdentifier());

It would be better to enforce that we hold the lock when calling add and remove, instead of when we get the HashSet.  So, maybe wrap the whole thing in a class with its own add and remove that takes a LockHolder&amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746534</commentid>
    <comment_count>3</comment_count>
      <attachid>425030</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 09:49:46 -0700</bug_when>
    <thetext>Created attachment 425030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746535</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-02 09:50:20 -0700</bug_when>
    <thetext>r=me

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:63
&gt; +static HashSet&lt;ScriptExecutionContextIdentifier&gt;&amp; allWorkerGlobalScopeIdentifiers()

I like the design pattern where we pass a Locker&amp; to a function that requires a lock. Helps to remind you at compile time. (It&apos;s not perfect, since the type doesn&apos;t guarantee you took the *right* lock. Still, I&apos;ve found it to be nice enough in practice.)

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:532
&gt; +    vm().deleteAllCode(JSC::DeleteAllCodeIfNotCollecting);

It seems like our pre-existing idiom has been to use DeleteAllCodeIfNotCollecting, ever since we had a concurrent GC (http://trac.webkit.org/changeset/209570/webkit). So, I guess it&apos;s good to be consistent here.

But I think we want to follow up and consider always using PreventCollectionAndDeleteAllCode instead. Otherwise, if concurrent GC is in progress, we may miss opportunities to delete code, which is suboptimal, and might also cause flaky results in our memory benchmarks.

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:552
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    if (!vm().heap.isCurrentThreadBusy()) {
&gt; +        vm().heap.collectNowFullIfNotDoneRecently(JSC::Async);
&gt; +        return;
&gt; +    }
&gt; +#endif
&gt; +#if USE(CF) || USE(GLIB)
&gt; +    vm().heap.reportAbandonedObjectGraph();
&gt; +#else
&gt; +    vm().heap.collectNow(JSC::Async, JSC::CollectionScope::Full);
&gt; +#endif
&gt; +}

I guess this is how the existing main thread memory warning works too? I think this is also kinda sub-optimal, and the IOS behavior would be best for every platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746536</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 09:53:07 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:63
&gt; &gt; +static HashSet&lt;ScriptExecutionContextIdentifier&gt;&amp; allWorkerGlobalScopeIdentifiers()
&gt; 
&gt; I like the design pattern where we pass a Locker&amp; to a function that
&gt; requires a lock. Helps to remind you at compile time. (It&apos;s not perfect,
&gt; since the type doesn&apos;t guarantee you took the *right* lock. Still, I&apos;ve
&gt; found it to be nice enough in practice.)

Yes, I made that change.

&gt; 
&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:532
&gt; &gt; +    vm().deleteAllCode(JSC::DeleteAllCodeIfNotCollecting);
&gt; 
&gt; It seems like our pre-existing idiom has been to use
&gt; DeleteAllCodeIfNotCollecting, ever since we had a concurrent GC
&gt; (http://trac.webkit.org/changeset/209570/webkit). So, I guess it&apos;s good to
&gt; be consistent here.
&gt; 
&gt; But I think we want to follow up and consider always using
&gt; PreventCollectionAndDeleteAllCode instead. Otherwise, if concurrent GC is in
&gt; progress, we may miss opportunities to delete code, which is suboptimal, and
&gt; might also cause flaky results in our memory benchmarks.
&gt; 
&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:552
&gt; &gt; +#if PLATFORM(IOS_FAMILY)
&gt; &gt; +    if (!vm().heap.isCurrentThreadBusy()) {
&gt; &gt; +        vm().heap.collectNowFullIfNotDoneRecently(JSC::Async);
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; &gt; +#if USE(CF) || USE(GLIB)
&gt; &gt; +    vm().heap.reportAbandonedObjectGraph();
&gt; &gt; +#else
&gt; &gt; +    vm().heap.collectNow(JSC::Async, JSC::CollectionScope::Full);
&gt; &gt; +#endif
&gt; &gt; +}
&gt; 
&gt; I guess this is how the existing main thread memory warning works too? I
&gt; think this is also kinda sub-optimal, and the IOS behavior would be best for
&gt; every platform.

Yes, I matched for we do in MemoryRelease / GCController. We can consider using the iOS behavior on all platforms but we should align the main thread behavior too then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746563</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 10:28:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/76153592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746584</commentid>
    <comment_count>7</comment_count>
      <attachid>425030</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 11:40:13 -0700</bug_when>
    <thetext>Comment on attachment 425030
Patch

Clearing flags on attachment: 425030

Committed r275428 (236091@main): &lt;https://commits.webkit.org/236091@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746585</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 11:40:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746599</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 12:13:52 -0700</bug_when>
    <thetext>Found 1 new test failure: fullscreen/full-screen-placeholder.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425025</attachid>
            <date>2021-04-02 08:32:10 -0700</date>
            <delta_ts>2021-04-02 09:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224110-20210402083209.patch</filename>
            <type>text/plain</type>
            <size>6530</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRhNDE5YTRhZDA1YzE2
NDdiOGMwZDBmNWU1NDFkOWRhNjgzY2VlMi4uYWJiMDFiODgwNmVkYjg3NjlhYmIxMjVkNjRlMmFj
MjNiYTRhNTRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA0LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGVsZXRlIEpTIGNvZGUgYW5k
IHRyaWdnZXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGluIHdvcmtlciB0aHJlYWRzIG9uIG1lbW9yeSBw
cmVzc3VyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0MTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGVsZXRlIEpTIGNvZGUgYW5kIHRyaWdnZXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGluIHdvcmtlciB0
aHJlYWRzIG9uIG1lbW9yeSBwcmVzc3VyZSwKKyAgICAgICAgdG8gcmVsZWFzZSBhcyBtdWNoIG1l
bW9yeSBhcyBwb3NzaWJsZS4gV2Ugd2VyZSBwcmV2aW91c2x5IG9ubHkgZG9pbmcgdGhpcyBpbiB0
aGUKKyAgICAgICAgY29tbW9uIChtYWluIHRocmVhZCkgVk0uCisKKyAgICAgICAgRm9yIHRoZSBn
YXJiYWdlIGNvbGxlY3Rpb24gbG9naWMsIEkgdHJpZWQgdG8gbWF0Y2ggd2hhdCB0aGUgR0NDb250
cm9sbGVyIGlzIGdvaW5nCisgICAgICAgIGZvciB0aGUgY29tbW9uVk0gYnV0IGFwcGx5IGl0IHRv
IHdvcmtlciBWTXMuCisKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsZWFzZUNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbFdvcmtlckdsb2JhbFNj
b3BlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6
OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnJl
bGVhc2VNZW1vcnlJbldvcmtlcnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaDoKKwogMjAyMS0wNC0wMiAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IHRleHQgcmVuZGVyaW5nIG9uIE9mZnNjcmVlbkNhbnZhcyBpbiBhIFdv
cmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggNGFkNTM1ZGQ3OWU1
NDkyMjE0YzAwMDczYTUzZGU0NTg3Y2I0OGFjZi4uNmRlNmMwZTI2MzMzMmJlMWQ2NzBlMWE2OWFm
ZTNjODY3YjRmMzA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxl
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgorI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVk0uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtMTI5LDYgKzEzMCw4
IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJv
bm91cywgTWFpbnRhaW5CYWNrRm9yd2FyZENhCiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CiAjZW5kaWYKICAgICB9CisKKyAgICBXb3JrZXJH
bG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhzeW5jaHJvbm91cyk7CiB9CiAKIHZv
aWQgcmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25v
dXMsIE1haW50YWluQmFja0ZvcndhcmRDYWNoZSBtYWludGFpbkJhY2tGb3J3YXJkQ2FjaGUsIE1h
aW50YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZjFkN2YyZmU0MWVjYjk3NGRjYzhh
ZWI0MTE4OTIzOTllMDRmOWFiYy4uYzc0ZjA2MDkzODhhZWM5MDEyNTExMWFiMjdlNWY1MmM2YWI0
MDVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
QEAgLTU5LDYgKzU5LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCitzdGF0aWMgTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
TG9jazsKK3N0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYg
YWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEhhc2hTZXQ8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+PiBpZGVudGlm
aWVyczsKKyAgICBBU1NFUlQoYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2suaXNM
b2NrZWQoKSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXJzOworfQorCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV29ya2VyR2xvYmFsU2NvcGUpOwogCiBXb3JrZXJHbG9iYWxTY29wZTo6V29y
a2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFdvcmtlclRocmVhZCYg
dGhyZWFkLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJv
dmlkZXIpCkBAIC03Nyw2ICs4NSwxMSBAQCBXb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFs
U2NvcGUoV29ya2VyVGhyZWFkVHlwZSB0eXBlLCBjb25zdCBXb3JrZXJQYXJhbWV0ZQogICAgICwg
bV93b3JrZXJUeXBlKHBhcmFtcy53b3JrZXJUeXBlKQogICAgICwgbV9jcmVkZW50aWFscyhwYXJh
bXMuY3JlZGVudGlhbHMpCiB7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKKyAgICAgICAgYWxsV29ya2Vy
R2xvYmFsU2NvcGVJZGVudGlmaWVycygpLmFkZChjb250ZXh0SWRlbnRpZmllcigpKTsKKyAgICB9
CisKICAgICBpZiAobV90b3BPcmlnaW4tPmhhc1VuaXZlcnNhbEFjY2VzcygpKQogICAgICAgICBv
cmlnaW4tPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7CiAgICAgaWYgKG1fdG9wT3JpZ2luLT5uZWVk
c1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyaygpKQpAQCAtOTIsNiArMTA1LDExIEBAIFdv
cmtlckdsb2JhbFNjb3BlOjp+V29ya2VyR2xvYmFsU2NvcGUoKQogICAgIC8vIFdlIG5lZWQgdG8g
cmVtb3ZlIGZyb20gdGhlIGNvbnRleHRzIG1hcCB2ZXJ5IGVhcmx5IGluIHRoZSBkZXN0cnVjdG9y
IHNvIHRoYXQgY2FsbGluZyBwb3N0VGFzaygpIG9uIHRoaXMgV29ya2VyR2xvYmFsU2NvcGUgZnJv
bSBhbm90aGVyIHRocmVhZCBpcyBzYWZlLgogICAgIHJlbW92ZUZyb21Db250ZXh0c01hcCgpOwog
CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2JhbFNj
b3BlSWRlbnRpZmllcnNMb2NrKTsKKyAgICAgICAgYWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlm
aWVycygpLnJlbW92ZShjb250ZXh0SWRlbnRpZmllcigpKTsKKyAgICB9CisKICAgICBpZiAobV9j
c3NGb250U2VsZWN0b3IpCiAgICAgICAgIG1fY3NzRm9udFNlbGVjdG9yLT5zdG9wTG9hZGluZ0Fu
ZENsZWFyRm9udHMoKTsKICAgICBtX3BlcmZvcm1hbmNlID0gbnVsbHB0cjsKQEAgLTUwNiw0ICs1
MjQsNDEgQEAgV29ya2VyVGhyZWFkJiBXb3JrZXJHbG9iYWxTY29wZTo6dGhyZWFkKCkgY29uc3QK
ICAgICByZXR1cm4gKnN0YXRpY19jYXN0PFdvcmtlclRocmVhZCo+KHdvcmtlck9yV29ya2xldFRo
cmVhZCgpKTsKIH0KIAordm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeShTeW5j
aHJvbm91cyBzeW5jaHJvbm91cykKK3sKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwor
CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSgpKTsKKyAgICB2bSgpLmRlbGV0ZUFsbENv
ZGUoSlNDOjpEZWxldGVBbGxDb2RlSWZOb3RDb2xsZWN0aW5nKTsKKworICAgIGlmIChzeW5jaHJv
bm91cyA9PSBTeW5jaHJvbm91czo6WWVzKSB7CisgICAgICAgIGlmICghdm0oKS5oZWFwLmlzQ3Vy
cmVudFRocmVhZEJ1c3koKSkgeworICAgICAgICAgICAgdm0oKS5oZWFwLmNvbGxlY3ROb3coSlND
OjpTeW5jLCBKU0M6OkNvbGxlY3Rpb25TY29wZTo6RnVsbCk7CisgICAgICAgICAgICBXVEY6OnJl
bGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKCF2bSgpLmhlYXAu
aXNDdXJyZW50VGhyZWFkQnVzeSgpKSB7CisgICAgICAgIHZtKCkuaGVhcC5jb2xsZWN0Tm93RnVs
bElmTm90RG9uZVJlY2VudGx5KEpTQzo6QXN5bmMpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisjaWYgVVNFKENGKSB8fCBVU0UoR0xJQikKKyAgICB2bSgpLmhlYXAucmVwb3J0QWJh
bmRvbmVkT2JqZWN0R3JhcGgoKTsKKyNlbHNlCisgICAgdm0oKS5oZWFwLmNvbGxlY3ROb3coSlND
OjpBc3luYywgSlNDOjpDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOworI2VuZGlmCit9CisKK3ZvaWQg
V29ya2VyR2xvYmFsU2NvcGU6OnJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hyb25vdXMgc3lu
Y2hyb25vdXMpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhhbGxXb3JrZXJHbG9iYWxT
Y29wZUlkZW50aWZpZXJzTG9jayk7CisgICAgZm9yIChhdXRvJiBnbG9iYWxTY29wZUlkZW50aWZp
ZXIgOiBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzKCkpIHsKKyAgICAgICAgcG9zdFRh
c2tUbyhnbG9iYWxTY29wZUlkZW50aWZpZXIsIFtzeW5jaHJvbm91c10oYXV0byYgY29udGV4dCkg
eworICAgICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlbGVh
c2VNZW1vcnkoc3luY2hyb25vdXMpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
aAppbmRleCBiZjNmNjg1NGExOGU0ZjdiOGUwZmE4YzUwMTM2YjlhNzZjYTA1MTQ2Li4zN2JkZjI5
MTQ3ZTM2ZTQ3NjJiYmZiYTRlMzhlNjg3ZjJlODQyMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4K
ICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiw2ICsxMjcsOSBAQCBwdWJsaWM6CiAK
ICAgICBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzIGNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVkZW50aWFsczsgfQogCisgICAgdm9pZCByZWxlYXNlTWVtb3J5KFN5bmNocm9ub3Vz
KTsKKyAgICBzdGF0aWMgdm9pZCByZWxlYXNlTWVtb3J5SW5Xb3JrZXJzKFN5bmNocm9ub3VzKTsK
KwogcHJvdGVjdGVkOgogICAgIFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlclRocmVhZFR5cGUsIGNv
bnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFdvcmtlclRocmVh
ZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425030</attachid>
            <date>2021-04-02 09:49:46 -0700</date>
            <delta_ts>2021-04-02 12:13:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224110-20210402094946.patch</filename>
            <type>text/plain</type>
            <size>6595</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRhNDE5YTRhZDA1YzE2
NDdiOGMwZDBmNWU1NDFkOWRhNjgzY2VlMi4uYzZjZjZiNWUwZjY3YjVlZTI5ZTFlNjE0NDUwZWEx
OTQ4Y2NhMmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA0LTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRGVsZXRlIEpTIGNvZGUgYW5k
IHRyaWdnZXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGluIHdvcmtlciB0aHJlYWRzIG9uIG1lbW9yeSBw
cmVzc3VyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0MTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGVsZXRlIEpTIGNvZGUgYW5kIHRyaWdnZXIgZ2FyYmFnZSBjb2xsZWN0aW9uIGluIHdvcmtlciB0
aHJlYWRzIG9uIG1lbW9yeSBwcmVzc3VyZSwKKyAgICAgICAgdG8gcmVsZWFzZSBhcyBtdWNoIG1l
bW9yeSBhcyBwb3NzaWJsZS4gV2Ugd2VyZSBwcmV2aW91c2x5IG9ubHkgZG9pbmcgdGhpcyBpbiB0
aGUKKyAgICAgICAgY29tbW9uIChtYWluIHRocmVhZCkgVk0uCisKKyAgICAgICAgRm9yIHRoZSBn
YXJiYWdlIGNvbGxlY3Rpb24gbG9naWMsIEkgdHJpZWQgdG8gbWF0Y2ggd2hhdCB0aGUgR0NDb250
cm9sbGVyIGlzIGRvaW5nCisgICAgICAgIGZvciB0aGUgY29tbW9uVk0gYnV0IGFwcGx5IGl0IHRv
IHdvcmtlciBWTXMuCisKKyAgICAgICAgKiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVsZWFzZUNyaXRpY2FsTWVtb3J5KToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbFdvcmtlckdsb2JhbFNj
b3BlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6Oldv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjp+
V29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6
OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnJl
bGVhc2VNZW1vcnlJbldvcmtlcnMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaDoKKwogMjAyMS0wNC0wMiAgQ2hyaXMgTG9yZCAgPGNsb3JkQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IHRleHQgcmVuZGVyaW5nIG9uIE9mZnNjcmVlbkNhbnZhcyBpbiBhIFdv
cmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggNGFkNTM1ZGQ3OWU1
NDkyMjE0YzAwMDczYTUzZGU0NTg3Y2I0OGFjZi4uNmRlNmMwZTI2MzMzMmJlMWQ2NzBlMWE2OWFm
ZTNjODY3YjRmMzA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxl
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJUZXh0UGFpbnRlci5oIgorI2luY2x1ZGUgIldvcmtlckdsb2Jh
bFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVk0uaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtMTI5LDYgKzEzMCw4
IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJv
bm91cywgTWFpbnRhaW5CYWNrRm9yd2FyZENhCiAgICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuZ2FyYmFnZUNvbGxlY3RTb29uKCk7CiAjZW5kaWYKICAgICB9CisKKyAgICBXb3JrZXJH
bG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhzeW5jaHJvbm91cyk7CiB9CiAKIHZv
aWQgcmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vdXMgc3luY2hyb25v
dXMsIE1haW50YWluQmFja0ZvcndhcmRDYWNoZSBtYWludGFpbkJhY2tGb3J3YXJkQ2FjaGUsIE1h
aW50YWluTWVtb3J5Q2FjaGUgbWFpbnRhaW5NZW1vcnlDYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZjFkN2YyZmU0MWVjYjk3NGRjYzhh
ZWI0MTE4OTIzOTllMDRmOWFiYy4uODdmYzU4YzFiNDEzOGMxNzZiOWIzYTZjMDE5MDdjZWMwZjk3
YWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAK
QEAgLTU5LDYgKzU5LDE2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogCitzdGF0aWMgTG9jayBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
TG9jazsKK3N0YXRpYyBIYXNoU2V0PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiYg
YWxsV29ya2VyR2xvYmFsU2NvcGVJZGVudGlmaWVycyhMb2NrSG9sZGVyJiBob2xkZXIpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGhvbGRlcik7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4+IGlkZW50aWZpZXJzOworICAg
IEFTU0VSVChhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJzTG9jay5pc0xvY2tlZCgpKTsK
KyAgICByZXR1cm4gaWRlbnRpZmllcnM7Cit9CisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXb3JrZXJHbG9iYWxTY29wZSk7CiAKIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxT
Y29wZShXb3JrZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgV29ya2VyVGhyZWFkJiB0aHJlYWQsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblBy
b3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKQEAg
LTc3LDYgKzg3LDExIEBAIFdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShXb3Jr
ZXJUaHJlYWRUeXBlIHR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlCiAgICAgLCBtX3dvcmtlclR5
cGUocGFyYW1zLndvcmtlclR5cGUpCiAgICAgLCBtX2NyZWRlbnRpYWxzKHBhcmFtcy5jcmVkZW50
aWFscykKIHsKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2Vy
R2xvYmFsU2NvcGVJZGVudGlmaWVyc0xvY2spOworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29w
ZUlkZW50aWZpZXJzKGxvY2tlcikuYWRkKGNvbnRleHRJZGVudGlmaWVyKCkpOworICAgIH0KKwog
ICAgIGlmIChtX3RvcE9yaWdpbi0+aGFzVW5pdmVyc2FsQWNjZXNzKCkpCiAgICAgICAgIG9yaWdp
bi0+Z3JhbnRVbml2ZXJzYWxBY2Nlc3MoKTsKICAgICBpZiAobV90b3BPcmlnaW4tPm5lZWRzU3Rv
cmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrKCkpCkBAIC05Miw2ICsxMDcsMTEgQEAgV29ya2Vy
R2xvYmFsU2NvcGU6On5Xb3JrZXJHbG9iYWxTY29wZSgpCiAgICAgLy8gV2UgbmVlZCB0byByZW1v
dmUgZnJvbSB0aGUgY29udGV4dHMgbWFwIHZlcnkgZWFybHkgaW4gdGhlIGRlc3RydWN0b3Igc28g
dGhhdCBjYWxsaW5nIHBvc3RUYXNrKCkgb24gdGhpcyBXb3JrZXJHbG9iYWxTY29wZSBmcm9tIGFu
b3RoZXIgdGhyZWFkIGlzIHNhZmUuCiAgICAgcmVtb3ZlRnJvbUNvbnRleHRzTWFwKCk7CiAKKyAg
ICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soYWxsV29ya2VyR2xvYmFsU2NvcGVJ
ZGVudGlmaWVyc0xvY2spOworICAgICAgICBhbGxXb3JrZXJHbG9iYWxTY29wZUlkZW50aWZpZXJz
KGxvY2tlcikucmVtb3ZlKGNvbnRleHRJZGVudGlmaWVyKCkpOworICAgIH0KKwogICAgIGlmICht
X2Nzc0ZvbnRTZWxlY3RvcikKICAgICAgICAgbV9jc3NGb250U2VsZWN0b3ItPnN0b3BMb2FkaW5n
QW5kQ2xlYXJGb250cygpOwogICAgIG1fcGVyZm9ybWFuY2UgPSBudWxscHRyOwpAQCAtNTA2LDQg
KzUyNiw0MSBAQCBXb3JrZXJUaHJlYWQmIFdvcmtlckdsb2JhbFNjb3BlOjp0aHJlYWQoKSBjb25z
dAogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8V29ya2VyVGhyZWFkKj4od29ya2VyT3JXb3JrbGV0
VGhyZWFkKCkpOwogfQogCit2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjpyZWxlYXNlTWVtb3J5KFN5
bmNocm9ub3VzIHN5bmNocm9ub3VzKQoreworICAgIEFTU0VSVChpc0NvbnRleHRUaHJlYWQoKSk7
CisKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKCkpOworICAgIHZtKCkuZGVsZXRlQWxs
Q29kZShKU0M6OkRlbGV0ZUFsbENvZGVJZk5vdENvbGxlY3RpbmcpOworCisgICAgaWYgKHN5bmNo
cm9ub3VzID09IFN5bmNocm9ub3VzOjpZZXMpIHsKKyAgICAgICAgaWYgKCF2bSgpLmhlYXAuaXND
dXJyZW50VGhyZWFkQnVzeSgpKSB7CisgICAgICAgICAgICB2bSgpLmhlYXAuY29sbGVjdE5vdyhK
U0M6OlN5bmMsIEpTQzo6Q29sbGVjdGlvblNjb3BlOjpGdWxsKTsKKyAgICAgICAgICAgIFdURjo6
cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBpZiAoIXZtKCkuaGVh
cC5pc0N1cnJlbnRUaHJlYWRCdXN5KCkpIHsKKyAgICAgICAgdm0oKS5oZWFwLmNvbGxlY3ROb3dG
dWxsSWZOb3REb25lUmVjZW50bHkoSlNDOjpBc3luYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKyNpZiBVU0UoQ0YpIHx8IFVTRShHTElCKQorICAgIHZtKCkuaGVhcC5yZXBvcnRB
YmFuZG9uZWRPYmplY3RHcmFwaCgpOworI2Vsc2UKKyAgICB2bSgpLmhlYXAuY29sbGVjdE5vdyhK
U0M6OkFzeW5jLCBKU0M6OkNvbGxlY3Rpb25TY29wZTo6RnVsbCk7CisjZW5kaWYKK30KKwordm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6cmVsZWFzZU1lbW9yeUluV29ya2VycyhTeW5jaHJvbm91cyBz
eW5jaHJvbm91cykKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGFsbFdvcmtlckdsb2Jh
bFNjb3BlSWRlbnRpZmllcnNMb2NrKTsKKyAgICBmb3IgKGF1dG8mIGdsb2JhbFNjb3BlSWRlbnRp
ZmllciA6IGFsbFdvcmtlckdsb2JhbFNjb3BlSWRlbnRpZmllcnMobG9ja2VyKSkgeworICAgICAg
ICBwb3N0VGFza1RvKGdsb2JhbFNjb3BlSWRlbnRpZmllciwgW3N5bmNocm9ub3VzXShhdXRvJiBj
b250ZXh0KSB7CisgICAgICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkucmVsZWFzZU1lbW9yeShzeW5jaHJvbm91cyk7CisgICAgICAgIH0pOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oCmluZGV4IGJmM2Y2ODU0YTE4ZTRmN2I4ZTBmYThjNTAxMzZiOWE3NmNhMDUxNDYu
LjM3YmRmMjkxNDdlMzZlNDc2MmJiZmJhNGUzOGU2ODdmMmU4NDIyNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDYgKzEyNyw5IEBAIHB1
YmxpYzoKIAogICAgIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMoKSBjb25z
dCB7IHJldHVybiBtX2NyZWRlbnRpYWxzOyB9CiAKKyAgICB2b2lkIHJlbGVhc2VNZW1vcnkoU3lu
Y2hyb25vdXMpOworICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VNZW1vcnlJbldvcmtlcnMoU3luY2hy
b25vdXMpOworCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFk
VHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29y
a2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOwogCg==
</data>
<flag name="commit-queue"
          id="444873"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>