<?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>162959</bug_id>
          
          <creation_ts>2016-10-05 00:40:09 -0700</creation_ts>
          <short_desc>[Fetch API] Memory cache should not bypass redirect mode</short_desc>
          <delta_ts>2016-10-10 06:12:35 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236567</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-05 00:40:09 -0700</bug_when>
    <thetext>If a resource is fetched from the memory cache, we currently do not check the redirect mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236571</commentid>
    <comment_count>1</comment_count>
      <attachid>290697</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-05 00:55:41 -0700</bug_when>
    <thetext>Created attachment 290697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237688</commentid>
    <comment_count>2</comment_count>
      <attachid>290697</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-07 11:23:05 -0700</bug_when>
    <thetext>Comment on attachment 290697
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:554
&gt; +static inline bool canUpdateFromResource(const CachedResource&amp; resource, const CachedResourceRequest&amp; request)

I don’t fully understand the name of this function. The name &quot;can update from resource&quot; explains mechanically what the caller should do, but doesn’t make it clear the kind of decision this function is making. Maybe this is about whether we can re-use an existing cached resource for a new request? And if we return &quot;false&quot; it means we should ignore the existing cached resource because it’s not suitable for this request? It would be good to give this a clearer name.

Think about how you would say this when talking to another person. I don’t think you would say, “This function answers the question: Can you update from this resource for this request?” What does “update from this resource” mean?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:556
&gt;      // FIXME: For being loaded requests, we currently do not use the same resource, as this may induce errors in the resource response tainting.

I don’t understand what &quot;errors in the resource response tainting&quot; means.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:561
&gt; +    // If the cached resource has not followed redirections, we are best reloading the resource.

I don’t understand the phrase &quot;we are best reloading the resource&quot;.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:565
&gt; +    // We could support redirect mode other than Follow in case of a redirected resource, but it is simpler to just reload.

Should be &quot;redirect modes&quot; not &quot;redirect mode&quot;.

Saying it is &quot;simplest&quot; doesn’t give the full rationale for why this is OK. The real reason must be that these kinds of loads are unusual and it’s OK to not optimize these cases, not worth the complexity? I don’t know what the reason is, so I can’t tell you what to write.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238272</commentid>
    <comment_count>3</comment_count>
      <attachid>291093</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-10 05:38:12 -0700</bug_when>
    <thetext>Created attachment 291093
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238274</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-10 05:38:31 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #2)
&gt; Comment on attachment 290697 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290697&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:554
&gt; &gt; +static inline bool canUpdateFromResource(const CachedResource&amp; resource, const CachedResourceRequest&amp; request)
&gt; 
&gt; I don’t fully understand the name of this function. The name &quot;can update
&gt; from resource&quot; explains mechanically what the caller should do, but doesn’t
&gt; make it clear the kind of decision this function is making. Maybe this is
&gt; about whether we can re-use an existing cached resource for a new request?
&gt; And if we return &quot;false&quot; it means we should ignore the existing cached
&gt; resource because it’s not suitable for this request? It would be good to
&gt; give this a clearer name.
&gt; 
&gt; Think about how you would say this when talking to another person. I don’t
&gt; think you would say, “This function answers the question: Can you update
&gt; from this resource for this request?” What does “update from this resource”
&gt; mean?

Renamed to: isResourceSuitableForDirectReuse, although the name is not perfect.

I agree its role is not very clear, especially with CachedResourceLoader:: determineRevalidationPolicy.
determineRevalidationPolicy is mostly (but not only...) targeted at checking whether the request can be reused as per HTTP cache policy

When a resource can be reused, in most cases, we can return the cached resource as is.
Sometimes, we need to recompute some internal fields, based on new request being slightly different from the cached resource own request.
canUpdateFromResource is about telling whether we can recompute those internal fields directly or whether we should reload.
We may want to not do recomputation when we do not have enough data or when this is too complex/too rare.

The difference between the two methods is not that well-defined though.
determineRevalidationPolicy asks to reload in case cookies are different or in case resource type is different for instance.
In both cases, we could try to be smarter and reuse them and in case it does not work, reload.

I am not satisfied with that model though.
Simplifying determineRevalidationPolicy would be great but it is difficult to evaluate the perf penalties or corner-cases we may miss.

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:556
&gt; &gt;      // FIXME: For being loaded requests, we currently do not use the same resource, as this may induce errors in the resource response tainting.
&gt; 
&gt; I don’t understand what &quot;errors in the resource response tainting&quot; means.

Clarified to: 
// For being loaded requests, the response tainting may not be correctly computed if the fetch mode is not the same.
// Even if the fetch mode is the same, we are not sure that the resource can be reused (Vary: Origin header for instance).


&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:561
&gt; &gt; +    // If the cached resource has not followed redirections, we are best reloading the resource.
&gt; 
&gt; I don’t understand the phrase &quot;we are best reloading the resource&quot;.

Clarified to:
// If the cached resource has not followed redirections, it is incomplete and we should not use it.

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:565
&gt; &gt; +    // We could support redirect mode other than Follow in case of a redirected resource, but it is simpler to just reload.
&gt; 
&gt; Should be &quot;redirect modes&quot; not &quot;redirect mode&quot;.

OK

&gt; Saying it is &quot;simplest&quot; doesn’t give the full rationale for why this is OK.
&gt; The real reason must be that these kinds of loads are unusual and it’s OK to
&gt; not optimize these cases, not worth the complexity? I don’t know what the
&gt; reason is, so I can’t tell you what to write.

Right, clarified to:
// We could support redirect modes other than Follow in case of a redirected resource.
// This case is rare and is not worth optimizing currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238279</commentid>
    <comment_count>5</comment_count>
      <attachid>291093</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 06:12:30 -0700</bug_when>
    <thetext>Comment on attachment 291093
Patch for landing

Clearing flags on attachment: 291093

Committed r206994: &lt;http://trac.webkit.org/changeset/206994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238280</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 06:12:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290697</attachid>
            <date>2016-10-05 00:55:41 -0700</date>
            <delta_ts>2016-10-10 05:38:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162959-20161005095228.patch</filename>
            <type>text/plain</type>
            <size>11679</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk2ZGQ1ZDRlZTI4MzI4
YjllMTNiZDJmMGNmMzRjM2UwMTI2Yzc3Ni4uNmViNzUwZjkyYTE5ODc2MTgzNzlhYmRkODM2ODA5
MDA0NmE1ZTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTEwLTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBbRmV0Y2ggQVBJXSBNZW1v
cnkgY2FjaGUgc2hvdWxkIG5vdCBieXBhc3MgcmVkaXJlY3QgbW9kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9mZXRjaC9y
ZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAorCisgICAgICAgIEVuc3VyZSByZWxvYWRpbmcg
b2YgcmVzb3VyY2VzIGlmIHRoZSByZWRpcmVjdCBtb2RlcyBhcmUgZGlmZmVyZW50IGJldHdlZW4g
cmVxdWVzdCBhbmQgY2FjaGVkIHJlc291cmNlLCBhbmQKKyAgICAgICAgY2FjaGVkIHJlc291cmNl
IGhhcyByZWRpcmVjdGlvbnMuCisKKyAgICAgICAgQXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCwg
d2UgYWN0aXZhdGUgcmVzb3VyY2UgdXBkYXRlIGZvciByYXcgcmVzb3VyY2VzIGluCisgICAgICAg
IHNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0IGJ1dCBkaXNhYmxl
IGl0IGluIGNhblVwZGF0ZUZyb21SZXNvdXJjZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgaGFuZGxp
bmcgcmVsb2FkaW5nIG9mIHJlc291cmNlcyB3aXRoIGRpZmZlcmVudCByZWRpcmVjdGlvbiBtb2Rl
IGluIGNhblVwZGF0ZUZyb21SZXNvdXJjZS4KKworICAgICAgICBBIGZ1dHVyZSBwYXRjaCBzaG91
bGQgYWxsb3cgbG9hZGluZyBjYWNoZWQgcmF3IHJlc291cmNlcyBmcm9tIG90aGVyIGNhY2hlZCBy
YXcgcmVzb3VyY2VzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aGFzUmVkaXJlY3Rpb25zKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNl
V2l0aEN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhblVwZGF0ZUZyb21SZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2Fj
aGVkUmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QpOgorCiAyMDE2LTEwLTA0ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBSZWFkYWJsZVN0
cmVhbSBzaG91bGQgYmUgZXJyb3JlZCB3aXRoIFR5cGVFcnJvciB2YWx1ZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggZDZhMDFiNjk2ZDQ2M2Nk
MzNkMjQxY2JmY2RiZTNhNzhjZmM1MWRhNy4uNzE3OTdhOGM3MWFiYzNhZjNmM2EwY2VmYmUwYmQ1
MzI0MDlhZjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTIzNCwyNSArMjM0LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveURlY29kZWREYXRhKCkgeyB9CiAKICAgICB2b2lkIHNldE93bmluZ0NhY2hlZFJlc291cmNl
TG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikgeyBtX293
bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyID0gY2FjaGVkUmVzb3VyY2VMb2FkZXI7IH0KLSAgICAK
KwogICAgIGJvb2wgaXNQcmVsb2FkZWQoKSBjb25zdCB7IHJldHVybiBtX3ByZWxvYWRDb3VudDsg
fQogICAgIHZvaWQgaW5jcmVhc2VQcmVsb2FkQ291bnQoKSB7ICsrbV9wcmVsb2FkQ291bnQ7IH0K
ICAgICB2b2lkIGRlY3JlYXNlUHJlbG9hZENvdW50KCkgeyBBU1NFUlQobV9wcmVsb2FkQ291bnQp
OyAtLW1fcHJlbG9hZENvdW50OyB9Ci0gICAgCisKICAgICB2b2lkIHJlZ2lzdGVySGFuZGxlKENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJl
Z2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCk7Ci0gICAgCisKICAgICBi
b29sIGNhblVzZUNhY2hlVmFsaWRhdG9yKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFJldmFs
aWRhdGlvbkRlY2lzaW9uIHsgTm8sIFllc0R1ZVRvQ2FjaGVQb2xpY3ksIFllc0R1ZVRvTm9TdG9y
ZSwgWWVzRHVlVG9Ob0NhY2hlLCBZZXNEdWVUb0V4cGlyZWQgfTsKICAgICB2aXJ0dWFsIFJldmFs
aWRhdGlvbkRlY2lzaW9uIG1ha2VSZXZhbGlkYXRpb25EZWNpc2lvbihDYWNoZVBvbGljeSkgY29u
c3Q7CiAgICAgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmV1c2VFeHBpcmVkUmVkaXJl
Y3Rpb25Pck5vdCkgY29uc3Q7CisgICAgYm9vbCBoYXNSZWRpcmVjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgIT0gUmVkaXJlY3RDaGFpbkNh
Y2hlU3RhdHVzOjpTdGF0dXM6Ok5vUmVkaXJlY3Rpb247ICB9CiAKICAgICBib29sIHZhcnlIZWFk
ZXJWYWx1ZXNNYXRjaChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBDYWNoZWRSZXNvdXJj
ZUxvYWRlciYpOwogCiAgICAgYm9vbCBpc0NhY2hlVmFsaWRhdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZVRvUmV2YWxpZGF0ZTsgfQogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUb1JldmFsaWRhdGU7IH0KLSAg
ICAKKwogICAgIC8vIEhUVFAgcmV2YWxpZGF0aW9uIHN1cHBvcnQgbWV0aG9kcyBmb3IgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuCiAgICAgdm9pZCBzZXRSZXNvdXJjZVRvUmV2YWxpZGF0ZShDYWNoZWRS
ZXNvdXJjZSopOwogICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJl
c291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAppbmRleCAzN2NhN2MwOGRjN2E5YTZkM2I0NjhhNmY0MWVkMTlmNDEx
Yjg5NTE0Li43ZTcwNjA3OTExNWZhNmY1MjFiNmZiZWMwNWJmMDZlYzRmYjllNzU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTUyNiw4ICs1MjYsNiBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRV
cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TWVkaWFSZXNvdXJjZToKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlJhd1Jlc291cmNl
OgotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6TWFpblJl
c291cmNlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFhTTFQpCkBAIC01NDMs
MTQgKzU0MSw0MSBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRVcGRhdGVDYWNo
ZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gcmVzb3VyY2Uub3B0aW9ucygpLm1vZGUgIT0g
cmVxdWVzdC5vcHRpb25zKCkubW9kZSB8fCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBP
cmlnaW4oKSAhPSByZXNvdXJjZS5yZXNvdXJjZVJlcXVlc3QoKS5odHRwT3JpZ2luKCk7CisKKyAg
ICBpZiAocmVzb3VyY2Uub3B0aW9ucygpLm1vZGUgIT0gcmVxdWVzdC5vcHRpb25zKCkubW9kZSB8
fCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmh0dHBPcmlnaW4oKSAhPSByZXNvdXJjZS5yZXNv
dXJjZVJlcXVlc3QoKS5odHRwT3JpZ2luKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKHJlc291cmNlLm9wdGlvbnMoKS5yZWRpcmVjdCAhPSByZXF1ZXN0Lm9wdGlvbnMoKS5yZWRp
cmVjdCAmJiByZXNvdXJjZS5oYXNSZWRpcmVjdGlvbnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVkUmVzb3VyY2VXaXRoQ3Vy
cmVudFJlcXVlc3QoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KQorc3RhdGljIGlubGluZSBib29sIGNhblVwZGF0ZUZyb21SZXNv
dXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IENhY2hlZFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICAvLyBGSVhNRTogRm9yIGJlaW5nIGxvYWRlZCByZXF1
ZXN0cywgd2UgY3VycmVudGx5IGRvIG5vdCB1c2UgdGhlIHNhbWUgcmVzb3VyY2UsIGFzIHRoaXMg
bWF5IGluZHVjZSBlcnJvcnMgaW4gdGhlIHJlc291cmNlIHJlc3BvbnNlIHRhaW50aW5nLgogICAg
IC8vIFdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIGltcHJvdmUgdGhpcy4KLSAgICBpZiAocmVzb3Vy
Y2Uuc3RhdHVzKCkgIT0gQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZCkgeworICAgIGlmIChyZXNvdXJj
ZS5zdGF0dXMoKSAhPSBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBJZiB0aGUgY2FjaGVkIHJlc291cmNlIGhhcyBub3QgZm9sbG93ZWQgcmVk
aXJlY3Rpb25zLCB3ZSBhcmUgYmVzdCByZWxvYWRpbmcgdGhlIHJlc291cmNlLgorICAgIC8vIExl
dCdzIG1ha2Ugc3VyZSB0aGUgbWVtb3J5IGNhY2hlIGhhcyBubyBzdWNoIHJlc291cmNlLgorICAg
IEFTU0VSVChyZXNvdXJjZS5yZXNwb25zZSgpLnR5cGUoKSAhPSBSZXNvdXJjZVJlc3BvbnNlOjpU
eXBlOjpPcGFxdWVyZWRpcmVjdCk7CisKKyAgICAvLyBXZSBjb3VsZCBzdXBwb3J0IHJlZGlyZWN0
IG1vZGUgb3RoZXIgdGhhbiBGb2xsb3cgaW4gY2FzZSBvZiBhIHJlZGlyZWN0ZWQgcmVzb3VyY2Us
IGJ1dCBpdCBpcyBzaW1wbGVyIHRvIGp1c3QgcmVsb2FkLgorICAgIGlmIChyZXF1ZXN0Lm9wdGlv
bnMoKS5yZWRpcmVjdCAhPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpGb2xsb3cgJiYgcmVzb3Vy
Y2UuaGFzUmVkaXJlY3Rpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmV1c2Ugb2YgY2FjaGVkIHJhdyByZXNvdXJjZXMuCisgICAgaWYgKHJl
c291cmNlLnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3UmVzb3VyY2UpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZUNhY2hl
ZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIWNhblVwZGF0
ZUZyb21SZXNvdXJjZShyZXNvdXJjZSwgcmVxdWVzdCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRD
YWNoaW5nUG9saWN5KENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZyk7CiAgICAgICAgIHJl
dHVybiBsb2FkUmVzb3VyY2UocmVzb3VyY2UudHlwZSgpLCBXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYjZkZTU1MDhhZTRmMTk1OWM5NTlkMzJjZTc3YjJhNGRlZmJhYWI2My4uNjEw
NDBhMmEwMTkxYmRmYzQ4NTg1Y2VhNTA1YzFlZWFjMDU3NDk4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE2LTEwLTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBbRmV0Y2ggQVBJXSBNZW1vcnkgY2FjaGUgc2hvdWxkIG5vdCBieXBhc3MgcmVkaXJlY3Qg
bW9kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
OTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9kZS1hbmQtcHJlbG9hZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1wcmVsb2Fk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvZmV0Y2gvcmVzb3VyY2VzL3JlZGly
ZWN0LXdpdGgtY2FjaGUucGhwOgorCiAyMDE2LTEwLTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjLXdrMV0gTGF5b3V0VGVzdCBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NhY2hlZC1jcm9zcy1vcmlnaW4tcHJlbG9hZGluZy1jc3Mtc3R5bGVzaGVldC5odG1s
IGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9m
ZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4OTc2YTA4Yjk5ODQzY2E5MWNiYTI5YzdjZWYwODg3NTk5OWZmZmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3JlZGlyZWN0bW9kZS1h
bmQtcHJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgRmV0Y2ggc2hv
dWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQg
KHNhbWUgZmV0Y2ggb3B0aW9ucyBleGNlcHQgZm9yIHJlZGlyZWN0IG1vZGUpIAorUEFTUyBGZXRj
aCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxv
YWRlZCAoZGlmZmVyZW50IGZldGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2RlKSAKK1BB
U1MgRmV0Y2ggc2hvdWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBp
cyBwcmVsb2FkZWQgKHNhbWUgZmV0Y2ggb3B0aW9ucyBleGNlcHQgZm9yIHJlZGlyZWN0IG1vZGUp
IAorUEFTUyBGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291
cmNlIGlzIHByZWxvYWRlZCAoZGlmZmVyZW50IGZldGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVj
dCBtb2RlKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRp
cmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gv
cmVkaXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFhZjkzZjg4MWUyN2M5
ZmMzZDJjNmI2OWFjNGNkM2Q2NmE5YmMwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKQEAgLTAsMCAr
MSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5GZXRjaDogcmV0cmlldmUgcmVzcG9uc2UncyBib2R5
IHByb2dyZXNzaXZlbHk8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNoIj4KKyAgICA8bWV0YSBuYW1lPSJo
ZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1mZXRjaCI+Cisg
ICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVm
PSJodHRwczovL3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0TGlua1ByZWxvYWRT
dXBwb3J0KHRydWUpOworICAgIDwvc2NyaXB0PgorICAgIDxsaW5rIHJlbD1wcmVsb2FkIG9ubG9h
ZD0ic3RhcnRUZXN0cygpIiBocmVmPSIuL3Jlc291cmNlcy9yZWRpcmVjdC13aXRoLWNhY2hlLnBo
cD9lbmFibGVDYWNoaW5nJnVybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3Vy
Y2VzL2FsbG93LWlmLW9yaWdpbi5waHA/YWxsb3dDYWNoZSZvcmlnaW49aHR0cCUzQSUyRiUyRjEy
Ny4wLjAuMSUzQTgwMDAmbmFtZT1hbGVydC1mYWlsLmpzJmNvbnRlbnRUeXBlPXRleHQvYXNjaWki
PgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQ+CitmdW5jdGlvbiBzdGFydFRlc3Rz
KCkKK3sKKyAgICB2YXIgcHJlbG9hZFVybCA9ICIuL3Jlc291cmNlcy9yZWRpcmVjdC13aXRoLWNh
Y2hlLnBocD9lbmFibGVDYWNoaW5nJnVybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2FsbG93LWlmLW9yaWdpbi5waHA/YWxsb3dDYWNoZSZvcmlnaW49aHR0cCUzQSUy
RiUyRjEyNy4wLjAuMSUzQTgwMDAmbmFtZT1hbGVydC1mYWlsLmpzJmNvbnRlbnRUeXBlPXRleHQv
YXNjaWkiOworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHJldHVy
biBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJtYW51YWwiLCBtb2RlOiAibm8tY29ycyIs
IGNyZWRlbnRpYWxzOiAiaW5jbHVkZSJ9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3BhcXVlcmVkaXJlY3QiLCAiUmVzcG9u
c2UncyB0eXBlIHNob3VsZCBiZSBvcGFxdWVSZWRpcmVjdCIpOworICAgICAgICAgICAgcmV0dXJu
IHJlc3BvbnNlLnRleHQoKTsKKyAgICAgICAgfSkudGhlbigodGV4dCkgPT4geworICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCAiIik7CisgICAgICAgIH0pOworICAgIH0sICJGZXRjaCBz
aG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxvYWRl
ZCAoc2FtZSBmZXRjaCBvcHRpb25zIGV4Y2VwdCBmb3IgcmVkaXJlY3QgbW9kZSkiKTsKKworICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHJldHVybiBmZXRjaChwcmVs
b2FkVXJsLCB7cmVkaXJlY3Q6ICJtYW51YWwiLCBtb2RlOiAiY29ycyIsIGNyZWRlbnRpYWxzOiAi
aW5jbHVkZSJ9KS50aGVuKChyZXNwb25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhyZXNwb25zZS50eXBlLCAib3BhcXVlcmVkaXJlY3QiLCAiUmVzcG9uc2UncyB0eXBlIHNob3Vs
ZCBiZSBvcGFxdWVSZWRpcmVjdCIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQo
KTsKKyAgICAgICAgfSkudGhlbigodGV4dCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0ZXh0LCAiIik7CisgICAgICAgIH0pOworICAgIH0sICJGZXRjaCBzaG91bGQgY2hlY2sgZm9y
IHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxvYWRlZCAoZGlmZmVyZW50IGZl
dGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2RlKSIpOworCisgICAgcHJvbWlzZV90ZXN0
KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBu
ZXcgVHlwZUVycm9yKCksIGZldGNoKHByZWxvYWRVcmwsIHtyZWRpcmVjdDogImVycm9yIiwgbW9k
ZTogIm5vLWNvcnMiLCBjcmVkZW50aWFsczogImluY2x1ZGUifSkpOworICAgIH0sICJGZXRjaCBz
aG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxvYWRl
ZCAoc2FtZSBmZXRjaCBvcHRpb25zIGV4Y2VwdCBmb3IgcmVkaXJlY3QgbW9kZSkiKTsKKworICAg
IHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHJldHVybiBwcm9taXNlX3Jl
amVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6
ICJlcnJvciIsIG1vZGU6ICJjb3JzIiwgY3JlZGVudGlhbHM6ICJpbmNsdWRlIn0pKTsKKyAgICB9
LCAiRmV0Y2ggc2hvdWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiByZXNvdXJjZSBp
cyBwcmVsb2FkZWQgKGRpZmZlcmVudCBmZXRjaCBtb2RlLCBkaWZmZXJlbnQgcmVkaXJlY3QgbW9k
ZSkiKTsKK30KKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZXNvdXJjZXMvcmVkaXJlY3Qtd2l0aC1jYWNo
ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3Jlc291cmNlcy9yZWRpcmVjdC13
aXRoLWNhY2hlLnBocAppbmRleCAxOWM4MWVkM2Y5YzMyNDg3MGY0OWRlNmJjMjZhYzQ3ZDc4MjI4
MGRlLi5mMWU0NTk0ODk3YTdiNmM0ZDEyYzgwMWI3ZDZkMjZiZTk3M2QyN2Q1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3Jlc291cmNlcy9yZWRpcmVjdC13aXRoLWNh
Y2hlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3Jlc291cmNlcy9yZWRp
cmVjdC13aXRoLWNhY2hlLnBocApAQCAtMSw3ICsxLDcgQEAKIDw/cGhwCiAgICAgJHVybCA9ICRf
R0VUWyJ1cmwiXTsKIAotICAgICRlbmFibGVDYWNoaW5nID0gaXNzZXQoJF9TRVJWRVJbIkVOQUJM
RUNBQ0hJTkciXSkgPyB0cnVlIDogZmFsc2U7CisgICAgJGVuYWJsZUNhY2hpbmcgPSBpc3NldCgk
X1NFUlZFUlsiRU5BQkxFQ0FDSElORyJdKSB8fCBpc3NldCgkX0dFVFsiZW5hYmxlQ2FjaGluZyJd
KSA/IHRydWUgOiBmYWxzZTsKICAgICAkY29kZSA9IGlzc2V0KCRfR0VUWyJjb2RlIl0pID8gJF9H
RVRbImNvZGUiXSA6IDMwMjsKIAogICAgIGhlYWRlcigiSFRUUC8xLjEgJGNvZGUiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291093</attachid>
            <date>2016-10-10 05:38:12 -0700</date>
            <delta_ts>2016-10-10 06:12:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162959-20161010143450.patch</filename>
            <type>text/plain</type>
            <size>11985</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk5NjY5ZGQ3NTg0YTI1
NjYzMTlkNDU4ZTNhZmI1MWI1NzA5MmUyYS4uZTZmMzZmNGRmYjI4NmUxN2JiZWExYzFhOWQwMjFh
ZTI2NjE0YjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE2LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBbRmV0Y2ggQVBJXSBNZW1v
cnkgY2FjaGUgc2hvdWxkIG5vdCBieXBhc3MgcmVkaXJlY3QgbW9kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTU5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9mZXRjaC9yZWRp
cmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbAorCisgICAgICAgIEVuc3VyZSByZWxvYWRpbmcgb2Yg
cmVzb3VyY2VzIGlmIHRoZSByZWRpcmVjdCBtb2RlcyBhcmUgZGlmZmVyZW50IGJldHdlZW4gcmVx
dWVzdCBhbmQgY2FjaGVkIHJlc291cmNlLCBhbmQKKyAgICAgICAgY2FjaGVkIHJlc291cmNlIGhh
cyByZWRpcmVjdGlvbnMuCisKKyAgICAgICAgQXMgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCwgd2Ug
YWN0aXZhdGUgcmVzb3VyY2UgdXBkYXRlIGZvciByYXcgcmVzb3VyY2VzIGluCisgICAgICAgIHNo
b3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0IGJ1dCBkaXNhYmxlIGl0
IGluIGNhblVwZGF0ZUZyb21SZXNvdXJjZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgaGFuZGxpbmcg
cmVsb2FkaW5nIG9mIHJlc291cmNlcyB3aXRoIGRpZmZlcmVudCByZWRpcmVjdGlvbiBtb2RlIGlu
IGNhblVwZGF0ZUZyb21SZXNvdXJjZS4KKworICAgICAgICBBIGZ1dHVyZSBwYXRjaCBzaG91bGQg
YWxsb3cgbG9hZGluZyBjYWNoZWQgcmF3IHJlc291cmNlcyBmcm9tIG90aGVyIGNhY2hlZCByYXcg
cmVzb3VyY2VzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aGFzUmVkaXJlY3Rpb25zKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNlV2l0
aEN1cnJlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNhblVwZGF0ZUZyb21SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6dXBkYXRlQ2FjaGVk
UmVzb3VyY2VXaXRoQ3VycmVudFJlcXVlc3QpOgorCisyMDE2LTEwLTEwICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBDaGFuZ2UgSFRUUEhlYWRlclZhbHVlcyBm
cm9tIGEgc3RydWN0IHRvIGEgbmFtZXNwYWNlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMyMDMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiZWE5ZTM4NGIzODQ1MWY3NWM3ZjgwODFjOTJlNTIy
Yzc2ZmQ2ODAzLi40NGYzZjc0ODEzNTdiZWU4OTY3Zjk3MDU1NGRmMGQ0Mjc0YjU0YmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjM0LDI1
ICsyMzQsMjYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEo
KSB7IH0KIAogICAgIHZvaWQgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKSB7IG1fb3duaW5nQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgPSBjYWNoZWRSZXNvdXJjZUxvYWRlcjsgfQotICAgIAorCiAgICAgYm9vbCBpc1By
ZWxvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbG9hZENvdW50OyB9CiAgICAgdm9pZCBpbmNy
ZWFzZVByZWxvYWRDb3VudCgpIHsgKyttX3ByZWxvYWRDb3VudDsgfQogICAgIHZvaWQgZGVjcmVh
c2VQcmVsb2FkQ291bnQoKSB7IEFTU0VSVChtX3ByZWxvYWRDb3VudCk7IC0tbV9wcmVsb2FkQ291
bnQ7IH0KLSAgICAKKwogICAgIHZvaWQgcmVnaXN0ZXJIYW5kbGUoQ2FjaGVkUmVzb3VyY2VIYW5k
bGVCYXNlKiBoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0ZXJIYW5kbGUoQ2Fj
aGVkUmVzb3VyY2VIYW5kbGVCYXNlKiBoKTsKLSAgICAKKwogICAgIGJvb2wgY2FuVXNlQ2FjaGVW
YWxpZGF0b3IoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgUmV2YWxpZGF0aW9uRGVjaXNpb24g
eyBObywgWWVzRHVlVG9DYWNoZVBvbGljeSwgWWVzRHVlVG9Ob1N0b3JlLCBZZXNEdWVUb05vQ2Fj
aGUsIFllc0R1ZVRvRXhwaXJlZCB9OwogICAgIHZpcnR1YWwgUmV2YWxpZGF0aW9uRGVjaXNpb24g
bWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKENhY2hlUG9saWN5KSBjb25zdDsKICAgICBib29sIHJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZShSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90KSBjb25z
dDsKKyAgICBib29sIGhhc1JlZGlyZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcmVkaXJlY3RD
aGFpbkNhY2hlU3RhdHVzLnN0YXR1cyAhPSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlN0YXR1
czo6Tm9SZWRpcmVjdGlvbjsgIH0KIAogICAgIGJvb2wgdmFyeUhlYWRlclZhbHVlc01hdGNoKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyJik7CiAKICAg
ICBib29sIGlzQ2FjaGVWYWxpZGF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVG9SZXZh
bGlkYXRlOyB9CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlVG9SZXZhbGlkYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZTsgfQotICAgIAorCiAgICAgLy8gSFRU
UCByZXZhbGlkYXRpb24gc3VwcG9ydCBtZXRob2RzIGZvciBDYWNoZWRSZXNvdXJjZUxvYWRlci4K
ICAgICB2b2lkIHNldFJlc291cmNlVG9SZXZhbGlkYXRlKENhY2hlZFJlc291cmNlKik7CiAgICAg
dmlydHVhbCB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDExYzY0NzZhMmJhOWNkMjY2NjEzZmZhYjg4MGEyZjRiYWQxMzhlNjcuLjIxMDkxMGQ4
ZmNlYmI1YzBjY2Y5OGJkOTVhMGQ5NWU1MjI1NTQ1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNTYxLDggKzU2
MSw2IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVwZGF0ZUNhY2hlZFJlc291
cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpNZWRpYVJlc291cmNlOgogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpNYWluUmVzb3VyY2U6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKQEAgLTU3NCwxNCArNTcy
LDQzIEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVwZGF0ZUNhY2hlZFJlc291
cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiByZXNvdXJjZS5vcHRpb25zKCkubW9kZSAhPSByZXF1ZXN0
Lm9wdGlvbnMoKS5tb2RlIHx8IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE9yaWdpbigp
ICE9IHJlc291cmNlLnJlc291cmNlUmVxdWVzdCgpLmh0dHBPcmlnaW4oKTsKKworICAgIGlmIChy
ZXNvdXJjZS5vcHRpb25zKCkubW9kZSAhPSByZXF1ZXN0Lm9wdGlvbnMoKS5tb2RlIHx8IHJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE9yaWdpbigpICE9IHJlc291cmNlLnJlc291cmNlUmVx
dWVzdCgpLmh0dHBPcmlnaW4oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAocmVz
b3VyY2Uub3B0aW9ucygpLnJlZGlyZWN0ICE9IHJlcXVlc3Qub3B0aW9ucygpLnJlZGlyZWN0ICYm
IHJlc291cmNlLmhhc1JlZGlyZWN0aW9ucygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IHJldHVybiBmYWxzZTsKIH0KIAotQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjp1cGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVx
dWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIENhY2hlZFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZXNvdXJjZVN1aXRhYmxlRm9yRGly
ZWN0UmV1c2UoY29uc3QgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgLy8gRklYTUU6IEZvciBiZWluZyBsb2FkZWQg
cmVxdWVzdHMsIHdlIGN1cnJlbnRseSBkbyBub3QgdXNlIHRoZSBzYW1lIHJlc291cmNlLCBhcyB0
aGlzIG1heSBpbmR1Y2UgZXJyb3JzIGluIHRoZSByZXNvdXJjZSByZXNwb25zZSB0YWludGluZy4K
KyAgICAvLyBGSVhNRTogRm9yIGJlaW5nIGxvYWRlZCByZXF1ZXN0cywgdGhlIHJlc3BvbnNlIHRh
aW50aW5nIG1heSBub3QgYmUgY29ycmVjdGx5IGNvbXB1dGVkIGlmIHRoZSBmZXRjaCBtb2RlIGlz
IG5vdCB0aGUgc2FtZS4KKyAgICAvLyBFdmVuIGlmIHRoZSBmZXRjaCBtb2RlIGlzIHRoZSBzYW1l
LCB3ZSBhcmUgbm90IHN1cmUgdGhhdCB0aGUgcmVzb3VyY2UgY2FuIGJlIHJldXNlZCAoVmFyeTog
T3JpZ2luIGhlYWRlciBmb3IgaW5zdGFuY2UpLgogICAgIC8vIFdlIHNob3VsZCBmaW5kIGEgd2F5
IHRvIGltcHJvdmUgdGhpcy4KLSAgICBpZiAocmVzb3VyY2Uuc3RhdHVzKCkgIT0gQ2FjaGVkUmVz
b3VyY2U6OkNhY2hlZCkgeworICAgIGlmIChyZXNvdXJjZS5zdGF0dXMoKSAhPSBDYWNoZWRSZXNv
dXJjZTo6Q2FjaGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiB0aGUgY2Fj
aGVkIHJlc291cmNlIGhhcyBub3QgZm9sbG93ZWQgcmVkaXJlY3Rpb25zLCBpdCBpcyBpbmNvbXBs
ZXRlIGFuZCB3ZSBzaG91bGQgbm90IHVzZSBpdC4KKyAgICAvLyBMZXQncyBtYWtlIHN1cmUgdGhl
IG1lbW9yeSBjYWNoZSBoYXMgbm8gc3VjaCByZXNvdXJjZS4KKyAgICBBU1NFUlQocmVzb3VyY2Uu
cmVzcG9uc2UoKS50eXBlKCkgIT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6T3BhcXVlcmVkaXJl
Y3QpOworCisgICAgLy8gV2UgY291bGQgc3VwcG9ydCByZWRpcmVjdCBtb2RlcyBvdGhlciB0aGFu
IEZvbGxvdyBpbiBjYXNlIG9mIGEgcmVkaXJlY3RlZCByZXNvdXJjZS4KKyAgICAvLyBUaGlzIGNh
c2UgaXMgcmFyZSBhbmQgaXMgbm90IHdvcnRoIG9wdGltaXppbmcgY3VycmVudGx5LgorICAgIGlm
IChyZXF1ZXN0Lm9wdGlvbnMoKS5yZWRpcmVjdCAhPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpG
b2xsb3cgJiYgcmVzb3VyY2UuaGFzUmVkaXJlY3Rpb25zKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmV1c2Ugb2YgY2FjaGVkIHJhdyByZXNvdXJj
ZXMuCisgICAgaWYgKHJlc291cmNlLnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6UmF3
UmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAg
ICBpZiAoIWlzUmVzb3VyY2VTdWl0YWJsZUZvckRpcmVjdFJldXNlKHJlc291cmNlLCByZXF1ZXN0
KSkgewogICAgICAgICByZXF1ZXN0LnNldENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeTo6RGlz
YWxsb3dDYWNoaW5nKTsKICAgICAgICAgcmV0dXJuIGxvYWRSZXNvdXJjZShyZXNvdXJjZS50eXBl
KCksIFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOTdkN2EwNTNjZWQyNTVkY2Jl
MzI0MTljOWRkNDFiYmE5YjliMDZjLi5jYzRkZjg0ZTAzNzIyNTI5MjU5YTFkMDQ3NWNhMjNiZjY3
ODMzYzYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTAtMTAgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFtGZXRjaCBBUEldIE1lbW9yeSBjYWNoZSBz
aG91bGQgbm90IGJ5cGFzcyByZWRpcmVjdCBtb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1w
cmVsb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9mZXRjaC9y
ZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9mZXRjaC9yZXNvdXJjZXMvcmVkaXJlY3Qtd2l0aC1jYWNoZS5waHA6CisKIDIwMTYtMTAtMDkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBvcHRp
bWl6ZWQgc3R5bGVzaGVldCB1cGRhdGVzIGluIHNoYWRvdyB0cmVlcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXBy
ZWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4OTc2YTA4Yjk5ODQzY2E5MWNiYTI5Yzdj
ZWYwODg3NTk5OWZmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZldGNoL3JlZGlyZWN0bW9kZS1hbmQtcHJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2
IEBACisKK1BBU1MgRmV0Y2ggc2hvdWxkIGNoZWNrIGZvciByZWRpcmVjdGlvbnMgZXZlbiBpZiBy
ZXNvdXJjZSBpcyBwcmVsb2FkZWQgKHNhbWUgZmV0Y2ggb3B0aW9ucyBleGNlcHQgZm9yIHJlZGly
ZWN0IG1vZGUpIAorUEFTUyBGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVu
IGlmIHJlc291cmNlIGlzIHByZWxvYWRlZCAoZGlmZmVyZW50IGZldGNoIG1vZGUsIGRpZmZlcmVu
dCByZWRpcmVjdCBtb2RlKSAKK1BBU1MgRmV0Y2ggc2hvdWxkIGNoZWNrIGZvciByZWRpcmVjdGlv
bnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQgKHNhbWUgZmV0Y2ggb3B0aW9ucyBleGNl
cHQgZm9yIHJlZGlyZWN0IG1vZGUpIAorUEFTUyBGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGly
ZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHByZWxvYWRlZCAoZGlmZmVyZW50IGZldGNoIG1v
ZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2RlKSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9mZXRjaC9yZWRpcmVjdG1vZGUtYW5kLXByZWxvYWQuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1wcmVsb2FkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjFhZjkzZjg4MWUyN2M5ZmMzZDJjNmI2OWFjNGNkM2Q2NmE5YmMwYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvZmV0Y2gvcmVkaXJlY3Rtb2RlLWFuZC1w
cmVsb2FkLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAg
PGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5GZXRjaDogcmV0
cmlldmUgcmVzcG9uc2UncyBib2R5IHByb2dyZXNzaXZlbHk8L3RpdGxlPgorICAgIDxtZXRhIG5h
bWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNtYWluLWZldGNo
Ij4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdn
Lm9yZy8jaHR0cC1mZXRjaCI+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24g
UmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxz
Y3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRl
cm5hbHMuc2V0TGlua1ByZWxvYWRTdXBwb3J0KHRydWUpOworICAgIDwvc2NyaXB0PgorICAgIDxs
aW5rIHJlbD1wcmVsb2FkIG9ubG9hZD0ic3RhcnRUZXN0cygpIiBocmVmPSIuL3Jlc291cmNlcy9y
ZWRpcmVjdC13aXRoLWNhY2hlLnBocD9lbmFibGVDYWNoaW5nJnVybD1odHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FsbG93LWlmLW9yaWdpbi5waHA/YWxsb3dDYWNoZSZv
cmlnaW49aHR0cCUzQSUyRiUyRjEyNy4wLjAuMSUzQTgwMDAmbmFtZT1hbGVydC1mYWlsLmpzJmNv
bnRlbnRUeXBlPXRleHQvYXNjaWkiPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQ+
CitmdW5jdGlvbiBzdGFydFRlc3RzKCkKK3sKKyAgICB2YXIgcHJlbG9hZFVybCA9ICIuL3Jlc291
cmNlcy9yZWRpcmVjdC13aXRoLWNhY2hlLnBocD9lbmFibGVDYWNoaW5nJnVybD1odHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2FsbG93LWlmLW9yaWdpbi5waHA/YWxsb3dD
YWNoZSZvcmlnaW49aHR0cCUzQSUyRiUyRjEyNy4wLjAuMSUzQTgwMDAmbmFtZT1hbGVydC1mYWls
LmpzJmNvbnRlbnRUeXBlPXRleHQvYXNjaWkiOworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0
ZXN0KSB7CisgICAgICAgIHJldHVybiBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJtYW51
YWwiLCBtb2RlOiAibm8tY29ycyIsIGNyZWRlbnRpYWxzOiAiaW5jbHVkZSJ9KS50aGVuKChyZXNw
b25zZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3Bh
cXVlcmVkaXJlY3QiLCAiUmVzcG9uc2UncyB0eXBlIHNob3VsZCBiZSBvcGFxdWVSZWRpcmVjdCIp
OworICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTsKKyAgICAgICAgfSkudGhlbigo
dGV4dCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCAiIik7CisgICAgICAg
IH0pOworICAgIH0sICJGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlm
IHJlc291cmNlIGlzIHByZWxvYWRlZCAoc2FtZSBmZXRjaCBvcHRpb25zIGV4Y2VwdCBmb3IgcmVk
aXJlY3QgbW9kZSkiKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAg
ICAgIHJldHVybiBmZXRjaChwcmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJtYW51YWwiLCBtb2RlOiAi
Y29ycyIsIGNyZWRlbnRpYWxzOiAiaW5jbHVkZSJ9KS50aGVuKChyZXNwb25zZSkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNwb25zZS50eXBlLCAib3BhcXVlcmVkaXJlY3QiLCAi
UmVzcG9uc2UncyB0eXBlIHNob3VsZCBiZSBvcGFxdWVSZWRpcmVjdCIpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3BvbnNlLnRleHQoKTsKKyAgICAgICAgfSkudGhlbigodGV4dCkgPT4geworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LCAiIik7CisgICAgICAgIH0pOworICAgIH0sICJG
ZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlmIHJlc291cmNlIGlzIHBy
ZWxvYWRlZCAoZGlmZmVyZW50IGZldGNoIG1vZGUsIGRpZmZlcmVudCByZWRpcmVjdCBtb2RlKSIp
OworCisgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yKCksIGZldGNoKHByZWxvYWRVcmwsIHty
ZWRpcmVjdDogImVycm9yIiwgbW9kZTogIm5vLWNvcnMiLCBjcmVkZW50aWFsczogImluY2x1ZGUi
fSkpOworICAgIH0sICJGZXRjaCBzaG91bGQgY2hlY2sgZm9yIHJlZGlyZWN0aW9ucyBldmVuIGlm
IHJlc291cmNlIGlzIHByZWxvYWRlZCAoc2FtZSBmZXRjaCBvcHRpb25zIGV4Y2VwdCBmb3IgcmVk
aXJlY3QgbW9kZSkiKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAg
ICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmZXRjaChw
cmVsb2FkVXJsLCB7cmVkaXJlY3Q6ICJlcnJvciIsIG1vZGU6ICJjb3JzIiwgY3JlZGVudGlhbHM6
ICJpbmNsdWRlIn0pKTsKKyAgICB9LCAiRmV0Y2ggc2hvdWxkIGNoZWNrIGZvciByZWRpcmVjdGlv
bnMgZXZlbiBpZiByZXNvdXJjZSBpcyBwcmVsb2FkZWQgKGRpZmZlcmVudCBmZXRjaCBtb2RlLCBk
aWZmZXJlbnQgcmVkaXJlY3QgbW9kZSkiKTsKK30KKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9mZXRjaC9yZXNvdXJj
ZXMvcmVkaXJlY3Qtd2l0aC1jYWNoZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNo
L3Jlc291cmNlcy9yZWRpcmVjdC13aXRoLWNhY2hlLnBocAppbmRleCAxOWM4MWVkM2Y5YzMyNDg3
MGY0OWRlNmJjMjZhYzQ3ZDc4MjI4MGRlLi5mMWU0NTk0ODk3YTdiNmM0ZDEyYzgwMWI3ZDZkMjZi
ZTk3M2QyN2Q1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ZldGNoL3Jlc291
cmNlcy9yZWRpcmVjdC13aXRoLWNhY2hlLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2ZldGNoL3Jlc291cmNlcy9yZWRpcmVjdC13aXRoLWNhY2hlLnBocApAQCAtMSw3ICsxLDcgQEAK
IDw/cGhwCiAgICAgJHVybCA9ICRfR0VUWyJ1cmwiXTsKIAotICAgICRlbmFibGVDYWNoaW5nID0g
aXNzZXQoJF9TRVJWRVJbIkVOQUJMRUNBQ0hJTkciXSkgPyB0cnVlIDogZmFsc2U7CisgICAgJGVu
YWJsZUNhY2hpbmcgPSBpc3NldCgkX1NFUlZFUlsiRU5BQkxFQ0FDSElORyJdKSB8fCBpc3NldCgk
X0dFVFsiZW5hYmxlQ2FjaGluZyJdKSA/IHRydWUgOiBmYWxzZTsKICAgICAkY29kZSA9IGlzc2V0
KCRfR0VUWyJjb2RlIl0pID8gJF9HRVRbImNvZGUiXSA6IDMwMjsKIAogICAgIGhlYWRlcigiSFRU
UC8xLjEgJGNvZGUiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>