<?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>147282</bug_id>
          
          <creation_ts>2015-07-24 16:03:48 -0700</creation_ts>
          <short_desc>WKWebsiteDataStore remove methods don&apos;t properly delete cookies</short_desc>
          <delta_ts>2015-07-26 20:53:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112125</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-24 16:03:48 -0700</bug_when>
    <thetext>WKWebsiteDataStore remove methods don&apos;t properly delete cookies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112126</commentid>
    <comment_count>1</comment_count>
      <attachid>257488</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-24 16:08:34 -0700</bug_when>
    <thetext>Created attachment 257488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112128</commentid>
    <comment_count>2</comment_count>
      <attachid>257489</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-24 16:15:05 -0700</bug_when>
    <thetext>Created attachment 257489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112146</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-24 17:34:25 -0700</bug_when>
    <thetext>Committed r187375: &lt;http://trac.webkit.org/changeset/187375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112344</commentid>
    <comment_count>4</comment_count>
      <attachid>257489</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-26 20:53:30 -0700</bug_when>
    <thetext>Comment on attachment 257489
Patch

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

&gt; Source/WebCore/platform/network/cf/CookieJarCFNet.cpp:240
&gt; +void deleteCookiesForHostnames(const NetworkStorageSession&amp; session, const Vector&lt;String&gt;&amp; hostnames)
&gt; +{
&gt; +}
&gt; +
&gt;  void deleteAllCookiesModifiedSince(const NetworkStorageSession&amp;, std::chrono::system_clock::time_point)
&gt;  {
&gt;  }

Seems kind of lame that these don’t even have a comment about the fact that they are not implemented and do nothing! Also would be nice to leave out the unused argument names to make this build with unused argument warnings.

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:230
&gt; +    HashMap&lt;String, RetainPtr&lt;NSHTTPCookie&gt;&gt; cookiesByDomain;

Is there a need for RetainPtr here? Doesn’t the cookies array retains all the cookies in that array? Or maybe that array is an internal data structure that changes once you start calling wkDeleteHTTPCookie?

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:232
&gt; +        cookiesByDomain.set(cookie.domain, cookie);

Why set instead of add?

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:234
&gt; +    for (const auto&amp; hostname : hostnames) {

Not sure that const here is all that useful.

&gt; Source/WebCore/platform/network/mac/CookieJarMac.mm:239
&gt; +    [WebCore::cookieStorage(session) _saveCookies];

Seems to me that the use of CFHTTPCookieStorageRef to get the list of cookies but the use of NSHTTPCookieStorage for the call to _saveCookies is peculiar enough that it needs a motivating comment.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257488</attachid>
            <date>2015-07-24 16:08:34 -0700</date>
            <delta_ts>2015-07-24 16:15:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147282-20150724160716.patch</filename>
            <type>text/plain</type>
            <size>13234</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI3NWY0MThkMTRkOGUw
OGRjZDg4MzRiZDIyZTg5NjMyZjRlZGM2MC4uZTU4OGQyMzBjOTNmNjc2OGE0ZDgwZGE2NzNjYWQ3
ZDk3NmIyMTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA3LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlIHJlbW92ZSBtZXRob2RzIGRvbid0IHByb3Blcmx5IGRlbGV0ZSBjb29raWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyODIKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjE5NDgyMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lIHRvIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMgYW5kCisgICAgICAgIG1ha2UgaXQgdGFrZSBhIHZlY3Rv
ciBvZiBob3N0bmFtZXMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28sIGZpeCB0aGUg
TWFjIGltcGxlbWVudGF0aW9uIHRvIG5vdCBiZSBPKG4yKSBieSBwdXR0aW5nIGFsbCBjb29raWVz
CisgICAgICAgIGluIGEgZGljdGlvbmFyeSBrZXllZCBvbiB0aGUgZG9tYWluLgorICAgICAgICAK
KyAgICAgICAgQWxzbyBtYWtlIHN1cmUgdG8gY2FsbCBfc2F2ZVN0b3JhZ2UgYWZ0ZXIgZGVsZXRp
bmcgY29va2llcy4KKyAgICAgICAgCisgICAgICAgIEZpbmFsbHksIGdldCByaWQgb2YgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lIGZyb20gQ29va2llSmFyQ0ZOZXQuY3BwIGFuZAorICAgICAgICB1
c2UgdGhlIE1hYyBpbXBsZW1lbnRhdGlvbiBvbiBpT1MgYXMgd2VsbC4gSnVzdCBzdHViIG91dCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWVzCisgICAgICAgIG9uIFdpbmRvd3Mgc2luY2Ugbm9ib2R5
IGlzIGNhbGxpbmcgaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29v
a2llSmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTUt
MDctMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdFQkNPUkVfRVhQT1JUIGZyb20gUGFnZTo6YWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMGMwYWNkYTY3MzI4YTljZTFhOGY3YzhkOTdlOWZhMTg5
MTdiZmUwLi5jNmZiZjNmZDhmMjdlMjRjNDRjOWY5YzkwMWM2YmFjZjVkODI5ZGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTUtMDctMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlIG1ldGhv
ZHMgZG9uJ3QgcHJvcGVybHkgZGVsZXRlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS8y
MTk0ODIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgQ2Fs
bCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzIGluc3RlYWQgb2YgaXRlcmF0aW5nIG92ZXIgZWFj
aCBob3N0bmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKToKKyAgICAgICAgQ2FsbCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzLgor
CisyMDE1LTA3LTI0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAg
ICAgICAgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQgd2hpbGUgYXR0ZW1wdGlu
ZyB0byBkb3dubG9hZCBhIGJsb2IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NzI3NgogICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTQyMzM1MwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUph
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5o
CmluZGV4IGNiODI2ZmQ5ODkwMDcxMTU5NWE2MDQxMDZhNTFjOGZhYmZlMjJkZjUuLjc2MDE5MDM3
NDgzNDI0ZGYyODg3OGYxMjk3MzhjOWNiN2ZkYzJlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcyk7CiBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IGQwZjNiZjg0N2VkOGVmZDAzYjZmMDQ2MWFjZWIwN2Y1
Y2UyMzRmZTguLmU5ZGZhZWM5M2Q1YjdjY2E5N2E3ZGUyMDQ2MGRlNDQ3M2NhMWMzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZO
ZXQuY3BwCkBAIC0yMjUsMjkgKzIyNSwxNiBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbgogICAg
IH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGID0gYWRv
cHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkp
OwotICAgIGlmICghY29va2llc0NGKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7Ci0gICAgZm9yIChDRkluZGV4
IGkgPSBjb3VudCAtIDE7IGkgPj0wOyBpLS0pIHsKLSAgICAgICAgQ0ZIVFRQQ29va2llUmVmIGNv
b2tpZSA9IHN0YXRpY19jYXN0PENGSFRUUENvb2tpZVJlZj4oY29uc3RfY2FzdDx2b2lkICo+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoY29va2llc0NGLmdldCgpLCBpKSkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGRvbWFpbiA9IGNvb2tpZURvbWFpbihjb29raWUpOwotICAgICAg
ICBpZiAoU3RyaW5nKGRvbWFpbi5nZXQoKSkgPT0gaG9zdG5hbWUpCi0gICAgICAgICAgICBDRkhU
VFBDb29raWVTdG9yYWdlRGVsZXRlQ29va2llKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNvb2tpZSk7
Ci0gICAgfQotfQotCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uKQogewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29r
aWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJ
TikKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit7Cit9CisK
IHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQppbmRleCBlOWY5NGM5MTMxOTY0ZjUwNTE1MGIxYjdhMjdmZDhjOGY4MjAxZTk2Li40NDczYzBk
ZGExOTkxMzVjZjdiYWMyNDM3NzE1ZmRiMDljMjJlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0xOTgsMjMgKzE5
OCw2IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAg
TlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Ci0g
ICAgaWYgKCFjb29raWVzKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZm9yIChOU0hUVFBD
b29raWUqIGNvb2tpZSBpbiBjb29raWVzKSB7Ci0gICAgICAgIGlmIChob3N0bmFtZSA9PSBTdHJp
bmcoW2Nvb2tpZSBkb21haW5dKSkKLSAgICAgICAgICAgIHdrRGVsZXRlSFRUUENvb2tpZShjb29r
aWVTdG9yYWdlLmdldCgpLCBjb29raWUpOwotICAgIH0KLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotfQotCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwpAQCAtMjM1LDYgKzIxOCwzMCBAQCBzdGF0aWMg
TlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
IF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOwogfQogCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVz
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFn
ZS5nZXQoKSk7CisgICAgaWYgKCFjb29raWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4+IGNvb2tpZXNCeURvbWFpbjsKKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSogY29va2llIGluIGNvb2tpZXMpCisgICAgICAgIGNvb2tpZXNC
eURvbWFpbi5zZXQoY29va2llLmRvbWFpbiwgY29va2llKTsKKworICAgIGZvciAoY29uc3QgYXV0
byYgaG9zdG5hbWUgOiBob3N0bmFtZXMpIHsKKyAgICAgICAgaWYgKE5TSFRUUENvb2tpZSAqY29v
a2llID0gY29va2llc0J5RG9tYWluLmdldChob3N0bmFtZSkuZ2V0KCkpCisgICAgICAgICAgICB3
a0RlbGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2llKTsKKyAgICB9CisK
KyAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBfc2F2ZUNvb2tpZXNdOworCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKworCiB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lUG9pbnQpCiB7CiAgICAgaWYg
KCFbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0
b3IocmVtb3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKQEAgLTI0Myw3ICsyNTAsMTAgQEAgdm9pZCBk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIHN0ZDo6Y2gKICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPj4odGlt
ZVBvaW50LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKICAgICBOU0RhdGUgKmRhdGUgPSBb
TlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAKLSAg
ICBbY29va2llU3RvcmFnZShzZXNzaW9uKSByZW1vdmVDb29raWVzU2luY2VEYXRlOmRhdGVdOwor
ICAgIE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UgPSBjb29raWVTdG9yYWdlKHNlc3Npb24p
OworCisgICAgW3N0b3JhZ2UgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTpkYXRlXTsKKyAgICBbc3Rv
cmFnZSBfc2F2ZUNvb2tpZXNdOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKaW5kZXggZmRhMjQ0Y2NiMTYz
ODBlNDM1NmQxZmIwZTViZDUxOGYxYmZhNGZjMy4uYWJhNzJmM2ZjMzEwNzEzNzBhYWZkZmJjNjk1
NmRjMDg4ZTRkYzdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMjAzLDE2ICsyMDMsMTggQEAgdm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIEhhc2hTZXQ8U3RyaW4KICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKLXsKLSAgICBDU3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgp
OwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vz
c2lvbik7Ci0gICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwotICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewotICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7Ci0gICAg
ICAgIGlmIChzb3VwX2Nvb2tpZV9kb21haW5fbWF0Y2hlcyhjb29raWUsIGhvc3ROYW1lU3RyaW5n
LmRhdGEoKSkpCi0gICAgICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29r
aWVKYXIsIGNvb2tpZSk7Ci0gICAgICAgIHNvdXBfY29va2llX2ZyZWUoY29va2llKTsKK3ZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWVzKQoreworICAgIGZvciAoY29uc3QgYXV0byYg
aG9zdG5hbWUgOiBob3N0bmFtZXMpIHsKKyAgICAgICAgQ1N0cmluZyBob3N0TmFtZVN0cmluZyA9
IGhvc3RuYW1lLnV0ZjgoKTsKKyAgICAgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNv
b2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOworICAgICAgICBm
b3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25l
eHQoaXRlbSkpIHsKKyAgICAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0
PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKKyAgICAgICAgICAgIGlmIChzb3VwX2Nvb2tpZV9k
b21haW5fbWF0Y2hlcyhjb29raWUsIGhvc3ROYW1lU3RyaW5nLmRhdGEoKSkpCisgICAgICAgICAg
ICAgICAgc291cF9jb29raWVfamFyX2RlbGV0ZV9jb29raWUoY29va2llSmFyLCBjb29raWUpOwor
ICAgICAgICAgICAgc291cF9jb29raWVfZnJlZShjb29raWUpOworICAgICAgICB9CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5k
ZXggMTMwODIzMDcyMDJmNzY3NWRhZGRiYWY3Yzk5MmUyOGFiN2Q2MDhiOS4uZWZhZDA3MWI5OWFm
MjlhNjgxNWRhZDgzNDEyNmFiZjhjMmQ1MDZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMTI4LDEzICsxMjgsMTYgQEAgRVhURVJOX0Mg
Q0ZBcnJheVJlZiBfQ0ZIVFRQUGFyc2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyhD
RkFsbG9jYXRvclJlZgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fT0JKQ19fKQorCiAjaWYgIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPT0gMTA5MCkKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFn
ZSAoRGV0YWlscykKIC0gKHZvaWQpcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTooTlNEYXRlICopZGF0
ZTsKIC0gKGlkKV9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6KENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYpY2ZTdG9yYWdlOwogLSAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZilfY29va2llU3RvcmFn
ZTsKKy0gKHZvaWQpX3NhdmVDb29raWVzOwogQGVuZAogI2VuZGlmCisKIC8vIEZJWE1FOiBNb3Zl
ICtfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6IGludG8gdGhlIGFib3ZlIHNlY3Rpb24gdW5k
ZXIgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspIHdoZW4gcG9zc2libGUgKHNvb24pLgogI2lmIChU
QVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkw
MDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTEwMCkKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAoRGV0YWlscykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAxM2UxZDJhZjhkZjk0ZmZjM2I0YmNiNmY2ODMxOTVhZDA2OGEyOTkxLi5hNmY1NmE2Yjg4OGFj
NDNlYzJjNjI1OTNhZTA4NWFiMzZjNzUyMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC00MTcsMTAgKzQxNyw4IEBAIHN0YXRp
YyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgc3RkCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBl
cywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBjb29raWVIb3N0TmFtZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVDb29raWVzKSB7Ci0gICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lv
bihzZXNzaW9uSUQpKSB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZUhvc3RO
YW1lIDogY29va2llSG9zdE5hbWVzKQotICAgICAgICAgICAgICAgIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZSgqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb29raWVIb3N0TmFtZSk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCisgICAgICAgICAgICBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvb2tpZUhvc3ROYW1lcyk7CiAgICAgfQog
CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBjYWxsYmFja0lEXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5jcHAKaW5kZXggNzk1NjRhYTJiMTQ0MTYzZDg0YTlhMThhNDY5NzdmNGVmY2YwZmEyNi4uZjNh
NDk1NWI4MzdhZWM4ZDdjNWEwOGE1YWVjMjBlOWM5NDE4MDZhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAt
NzAsNyArNzAsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCksIHsgaG9zdG5hbWUgfSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxs
Q29va2llcygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257489</attachid>
            <date>2015-07-24 16:15:05 -0700</date>
            <delta_ts>2015-07-24 17:22:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147282-20150724161348.patch</filename>
            <type>text/plain</type>
            <size>13242</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3MzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI3NWY0MThkMTRkOGUw
OGRjZDg4MzRiZDIyZTg5NjMyZjRlZGM2MC4uZTU4OGQyMzBjOTNmNjc2OGE0ZDgwZGE2NzNjYWQ3
ZDk3NmIyMTc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA3LTI0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlIHJlbW92ZSBtZXRob2RzIGRvbid0IHByb3Blcmx5IGRlbGV0ZSBjb29raWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyODIKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjE5NDgyMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lIHRvIGRl
bGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMgYW5kCisgICAgICAgIG1ha2UgaXQgdGFrZSBhIHZlY3Rv
ciBvZiBob3N0bmFtZXMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28sIGZpeCB0aGUg
TWFjIGltcGxlbWVudGF0aW9uIHRvIG5vdCBiZSBPKG4yKSBieSBwdXR0aW5nIGFsbCBjb29raWVz
CisgICAgICAgIGluIGEgZGljdGlvbmFyeSBrZXllZCBvbiB0aGUgZG9tYWluLgorICAgICAgICAK
KyAgICAgICAgQWxzbyBtYWtlIHN1cmUgdG8gY2FsbCBfc2F2ZVN0b3JhZ2UgYWZ0ZXIgZGVsZXRp
bmcgY29va2llcy4KKyAgICAgICAgCisgICAgICAgIEZpbmFsbHksIGdldCByaWQgb2YgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lIGZyb20gQ29va2llSmFyQ0ZOZXQuY3BwIGFuZAorICAgICAgICB1
c2UgdGhlIE1hYyBpbXBsZW1lbnRhdGlvbiBvbiBpT1MgYXMgd2VsbC4gSnVzdCBzdHViIG91dCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWVzCisgICAgICAgIG9uIFdpbmRvd3Mgc2luY2Ugbm9ib2R5
IGlzIGNhbGxpbmcgaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29v
a2llSmFyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTUt
MDctMjQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFdFQkNPUkVfRVhQT1JUIGZyb20gUGFnZTo6YWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMGMwYWNkYTY3MzI4YTljZTFhOGY3YzhkOTdlOWZhMTg5
MTdiZmUwLi5jNmZiZjNmZDhmMjdlMjRjNDRjOWY5YzkwMWM2YmFjZjVkODI5ZGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTUtMDctMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAorICAgICAgICBXS1dlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlIG1ldGhv
ZHMgZG9uJ3QgcHJvcGVybHkgZGVsZXRlIGNvb2tpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI4MgorICAgICAgICByZGFyOi8vcHJvYmxlbS8y
MTk0ODIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgQ2Fs
bCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzIGluc3RlYWQgb2YgaXRlcmF0aW5nIG92ZXIgZWFj
aCBob3N0bmFtZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKToKKyAgICAgICAgQ2FsbCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzLgor
CisyMDE1LTA3LTI0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKICAg
ICAgICAgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoIGluIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQgd2hpbGUgYXR0ZW1wdGlu
ZyB0byBkb3dubG9hZCBhIGJsb2IKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NzI3NgogICAgICAgICByZGFyOi8vcHJvYmxlbS8yMTQyMzM1MwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUph
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5o
CmluZGV4IGNiODI2ZmQ5ODkwMDcxMTU5NWE2MDQxMDZhNTFjOGZhYmZlMjJkZjUuLjc2MDE5MDM3
NDgzNDI0ZGYyODg3OGYxMjk3MzhjOWNiN2ZkYzJlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwot
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcyk7CiBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IGQwZjNiZjg0N2VkOGVmZDAzYjZmMDQ2MWFjZWIwN2Y1
Y2UyMzRmZTguLmU5ZGZhZWM5M2Q1YjdjY2E5N2E3ZGUyMDQ2MGRlNDQ3M2NhMWMzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZO
ZXQuY3BwCkBAIC0yMjUsMjkgKzIyNSwxNiBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbgogICAg
IH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGID0gYWRv
cHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkp
OwotICAgIGlmICghY29va2llc0NGKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7Ci0gICAgZm9yIChDRkluZGV4
IGkgPSBjb3VudCAtIDE7IGkgPj0wOyBpLS0pIHsKLSAgICAgICAgQ0ZIVFRQQ29va2llUmVmIGNv
b2tpZSA9IHN0YXRpY19jYXN0PENGSFRUUENvb2tpZVJlZj4oY29uc3RfY2FzdDx2b2lkICo+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoY29va2llc0NGLmdldCgpLCBpKSkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGRvbWFpbiA9IGNvb2tpZURvbWFpbihjb29raWUpOwotICAgICAg
ICBpZiAoU3RyaW5nKGRvbWFpbi5nZXQoKSkgPT0gaG9zdG5hbWUpCi0gICAgICAgICAgICBDRkhU
VFBDb29raWVTdG9yYWdlRGVsZXRlQ29va2llKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNvb2tpZSk7
Ci0gICAgfQotfQotCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uKQogewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxldGVBbGxDb29r
aWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJ
TikKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit7Cit9CisK
IHZvaWQgZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQppbmRleCBlOWY5NGM5MTMxOTY0ZjUwNTE1MGIxYjdhMjdmZDhjOGY4MjAxZTk2Li40NDczYzBk
ZGExOTkxMzVjZjdiYWMyNDM3NzE1ZmRiMDljMjJlMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0xOTgsMjMgKzE5
OCw2IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQotewotICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLQotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7Ci0gICAg
TlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Ci0g
ICAgaWYgKCFjb29raWVzKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgZm9yIChOU0hUVFBD
b29raWUqIGNvb2tpZSBpbiBjb29raWVzKSB7Ci0gICAgICAgIGlmIChob3N0bmFtZSA9PSBTdHJp
bmcoW2Nvb2tpZSBkb21haW5dKSkKLSAgICAgICAgICAgIHdrRGVsZXRlSFRUUENvb2tpZShjb29r
aWVTdG9yYWdlLmdldCgpLCBjb29raWUpOwotICAgIH0KLSAgICAKLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotfQotCiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwpAQCAtMjM1LDYgKzIxOCwzMCBAQCBzdGF0aWMg
TlNIVFRQQ29va2llU3RvcmFnZSAqY29va2llU3RvcmFnZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
IF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3Jl
bGVhc2VdOwogfQogCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVz
KQoreworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFn
ZS5nZXQoKSk7CisgICAgaWYgKCFjb29raWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4+IGNvb2tpZXNCeURvbWFpbjsKKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSogY29va2llIGluIGNvb2tpZXMpCisgICAgICAgIGNvb2tpZXNC
eURvbWFpbi5zZXQoY29va2llLmRvbWFpbiwgY29va2llKTsKKworICAgIGZvciAoY29uc3QgYXV0
byYgaG9zdG5hbWUgOiBob3N0bmFtZXMpIHsKKyAgICAgICAgaWYgKE5TSFRUUENvb2tpZSAqY29v
a2llID0gY29va2llc0J5RG9tYWluLmdldChob3N0bmFtZSkuZ2V0KCkpCisgICAgICAgICAgICB3
a0RlbGV0ZUhUVFBDb29raWUoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2llKTsKKyAgICB9CisK
KyAgICBbV2ViQ29yZTo6Y29va2llU3RvcmFnZShzZXNzaW9uKSBfc2F2ZUNvb2tpZXNdOworCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKK30KKworCiB2b2lkIGRlbGV0ZUFsbENvb2tp
ZXNNb2RpZmllZFNpbmNlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lUG9pbnQpCiB7CiAgICAgaWYg
KCFbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0
b3IocmVtb3ZlQ29va2llc1NpbmNlRGF0ZTopXSkKQEAgLTI0Myw3ICsyNTAsMTAgQEAgdm9pZCBk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIHN0ZDo6Y2gKICAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2YWwgPSBzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPj4odGlt
ZVBvaW50LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKICAgICBOU0RhdGUgKmRhdGUgPSBb
TlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2UxOTcwOnRpbWVJbnRlcnZhbF07CiAKLSAg
ICBbY29va2llU3RvcmFnZShzZXNzaW9uKSByZW1vdmVDb29raWVzU2luY2VEYXRlOmRhdGVdOwor
ICAgIE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UgPSBjb29raWVTdG9yYWdlKHNlc3Npb24p
OworCisgICAgW3N0b3JhZ2UgcmVtb3ZlQ29va2llc1NpbmNlRGF0ZTpkYXRlXTsKKyAgICBbc3Rv
cmFnZSBfc2F2ZUNvb2tpZXNdOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKaW5kZXggZmRhMjQ0Y2NiMTYz
ODBlNDM1NmQxZmIwZTViZDUxOGYxYmZhNGZjMy4uZTgwYWQ5ZTgyOWNmNTAzNjI5ZTAzOGIxYWJi
ODQzMTYzZGNhZGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcApAQCAtMjAzLDE2ICsyMDMsMTggQEAgdm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIEhhc2hTZXQ8U3RyaW4KICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKLXsKLSAgICBDU3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgp
OwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vz
c2lvbik7Ci0gICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwotICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewotICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7Ci0gICAg
ICAgIGlmIChzb3VwX2Nvb2tpZV9kb21haW5fbWF0Y2hlcyhjb29raWUsIGhvc3ROYW1lU3RyaW5n
LmRhdGEoKSkpCi0gICAgICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29r
aWVKYXIsIGNvb2tpZSk7Ci0gICAgICAgIHNvdXBfY29va2llX2ZyZWUoY29va2llKTsKK3ZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit7CisgICAgZm9yIChjb25z
dCBhdXRvJiBob3N0bmFtZSA6IGhvc3RuYW1lcykgeworICAgICAgICBDU3RyaW5nIGhvc3ROYW1l
U3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOworICAgICAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOworICAgICAgICBHVW5pcXVlUHRyPEdT
TGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7Cisg
ICAgICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdf
c2xpc3RfbmV4dChpdGVtKSkgeworICAgICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3Rh
dGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOworICAgICAgICAgICAgaWYgKHNvdXBf
Y29va2llX2RvbWFpbl9tYXRjaGVzKGNvb2tpZSwgaG9zdE5hbWVTdHJpbmcuZGF0YSgpKSkKKyAg
ICAgICAgICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfZGVsZXRlX2Nvb2tpZShjb29raWVKYXIsIGNv
b2tpZSk7CisgICAgICAgICAgICBzb3VwX2Nvb2tpZV9mcmVlKGNvb2tpZSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaAppbmRleCAxMzA4MjMwNzIwMmY3Njc1ZGFkZGJhZjdjOTkyZTI4YWI3ZDYwOGI5Li5lZmFk
MDcxYjk5YWYyOWE2ODE1ZGFkODM0MTI2YWJmOGMyZDUwNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oCkBAIC0xMjgsMTMgKzEyOCwxNiBAQCBF
WFRFUk5fQyBDRkFycmF5UmVmIF9DRkhUVFBQYXJzZWRDb29raWVzV2l0aFJlc3BvbnNlSGVhZGVy
RmllbGRzKENGQWxsb2NhdG9yUmVmCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19PQkpDX18pCisK
ICNpZiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA9PSAxMDkwKQogQGludGVyZmFjZSBOU0hUVFBDb29r
aWVTdG9yYWdlIChEZXRhaWxzKQogLSAodm9pZClyZW1vdmVDb29raWVzU2luY2VEYXRlOihOU0Rh
dGUgKilkYXRlOwogLSAoaWQpX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTooQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiljZlN0b3JhZ2U7CiAtIChDRkhUVFBDb29raWVTdG9yYWdlUmVmKV9jb29r
aWVTdG9yYWdlOworLSAodm9pZClfc2F2ZUNvb2tpZXM7CiBAZW5kCiAjZW5kaWYKKwogLy8gRklY
TUU6IE1vdmUgK19zZXRTaGFyZWRIVFRQQ29va2llU3RvcmFnZTogaW50byB0aGUgYWJvdmUgc2Vj
dGlvbiB1bmRlciAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykgd2hlbiBwb3NzaWJsZSAoc29vbiku
CiAjaWYgKFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gOTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMTAwKQogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlIChEZXRh
aWxzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDEzZTFkMmFmOGRmOTRmZmMzYjRiY2I2ZjY4MzE5NWFkMDY4YTI5OTEuLmE2ZjU2
YTZiODg4YWM0M2VjMmM2MjU5M2FlMDg1YWIzNmM3NTIwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTQxNywxMCArNDE3LDgg
QEAgc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBzdGQKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdl
YnNpdGVEYXRhRm9yT3JpZ2lucyhTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRl
RGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZUNvb2tpZXMpIHsK
LSAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29v
a2llSG9zdE5hbWUgOiBjb29raWVIb3N0TmFtZXMpCi0gICAgICAgICAgICAgICAgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKCpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvb2tpZUhvc3ROYW1lKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gU2Vz
c2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29va2llSG9zdE5hbWVzKTsK
ICAgICB9CiAKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIGNhbGxiYWNrSURd
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmNwcAppbmRleCA3OTU2NGFhMmIxNDQxNjNkODRhOWExOGE0Njk3N2Y0ZWZjZjBm
YTI2Li5mM2E0OTU1YjgzN2FlYzhkN2M1YTA4YTVhZWMyMGU5Yzk0MTgwNmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSwgeyBob3N0bmFtZSB9KTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpk
ZWxldGVBbGxDb29raWVzKCkK
</data>
<flag name="review"
          id="282651"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>