<?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>176055</bug_id>
          
          <creation_ts>2017-08-29 09:42:52 -0700</creation_ts>
          <short_desc>Setting the cache storage engine root path according the session WebsiteDataStore</short_desc>
          <delta_ts>2017-08-29 14:40:39 -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>InRadar</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>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343111</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-29 09:42:52 -0700</bug_when>
    <thetext>This will allow cache storage per session/websitedatastore.
Ephemeral sessions will have a specific null path so that no access is done at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343129</commentid>
    <comment_count>1</comment_count>
      <attachid>319255</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-29 09:54:45 -0700</bug_when>
    <thetext>Created attachment 319255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343193</commentid>
    <comment_count>2</comment_count>
      <attachid>319255</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 13:23:33 -0700</bug_when>
    <thetext>Comment on attachment 319255
Patch

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

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:53
&gt; +    auto addResult = globalEngineMap().add(sessionID, nullptr);

This can probably still use ensure.

&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:357
&gt; +        channel-&gt;read(0, std::numeric_limits&lt;size_t&gt;::max(), m_ioQueue.get(), [callback = WTFMove(callback)](const Data&amp; data, int error) mutable {
&gt; +            RunLoop::main().dispatch([callback = WTFMove(callback), data, error]() mutable {

Will this create a copy of data, or just capture a reference to something that will probably be gone?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343200</commentid>
    <comment_count>3</comment_count>
      <attachid>319255</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-08-29 13:45:15 -0700</bug_when>
    <thetext>Comment on attachment 319255
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:53
&gt;&gt; +    auto addResult = globalEngineMap().add(sessionID, nullptr);
&gt; 
&gt; This can probably still use ensure.

I tried it and it was crashing.
I haven&apos;t investigated precisely the reason for this crash.

&gt;&gt; Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp:357
&gt;&gt; +            RunLoop::main().dispatch([callback = WTFMove(callback), data, error]() mutable {
&gt; 
&gt; Will this create a copy of data, or just capture a reference to something that will probably be gone?

It will capture data by copy which will do like capturing a Ref.
I guess the lambda could take a Data&amp;&amp; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343228</commentid>
    <comment_count>4</comment_count>
      <attachid>319255</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-29 14:39:51 -0700</bug_when>
    <thetext>Comment on attachment 319255
Patch

Clearing flags on attachment: 319255

Committed r221315: &lt;http://trac.webkit.org/changeset/221315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343229</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-29 14:39:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343230</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-29 14:40:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/34142875&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319255</attachid>
            <date>2017-08-29 09:54:45 -0700</date>
            <delta_ts>2017-08-29 14:39:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176055-20170829095444.patch</filename>
            <type>text/plain</type>
            <size>21385</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhYTc4MGQ4OGNiMzc2
YTQ1ZWVmOTQ5ODI5OTQyNmIxODE5MWQ5Ny4uY2FkNjU3YWU3YWU5ZWY2OTQzMDc3YWI5YjI4ZWUx
ZGEyNzI2YWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXR0aW5nIHRoZSBjYWNo
ZSBzdG9yYWdlIGVuZ2luZSByb290IHBhdGggYWNjb3JkaW5nIHRoZSBzZXNzaW9uIFdlYnNpdGVE
YXRhU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NjA1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIHRlc3QgcmlnaHQgbm93IGFzIHRoZSBlbmdpbmUgaXMgbm90IG1ha2luZyBhbnkgcmVhZC93
cml0ZSBvcGVyYXRpb25zLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KToKKwogMjAxNy0wOC0yOCAg
Q2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBbV1BFXSBSZW5hbWUgRXZlbnRIYW5kbGVyR2xpYiB0byBFdmVudEhhbmRsZXJHTGli
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDNiOTU4NDI4NTAzYTFiYzdhNDE2N2I0ZGNkODNkYWRiYTk1MDg1NmEuLmE4
OTY0YWM4NDYwMTUwZWIwMGI2MjRjZDNjOWRhMWJmOWQ0MjM3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDMgQEAKKzIwMTctMDgtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIFNldHRpbmcgdGhlIGNhY2hlIHN0b3JhZ2UgZW5naW5lIHJvb3QgcGF0aCBhY2Nv
cmRpbmcgdGhlIHNlc3Npb24gV2Vic2l0ZURhdGFTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGRpc2sgcmVhZC93cml0ZSBjYXBhY2l0
aWVzIHRvIENhY2hlU3RvcmFnZSBlbmdpbmUuCisgICAgICAgIFRoaXMgaXMgdXNlZCB0byBzdG9y
ZSBwZXItb3JpZ2luIGNhY2hlIG5hbWVzIGluIGEgZmlsZS4KKyAgICAgICAgTWFraW5nIEVuZ2lu
ZSBhIHRocmVhZCBzYWZlIHJlZmNvdW50ZWQgb2JqZWN0IHNvIHRoYXQgaXQgZG9lcyByZWFkL3dy
aXRlIGluIGEgYmFja2dyb3VuZCB0aHJlYWQuCisKKyAgICAgICAgU2V0dGluZyB0aGUgcm9vdCBw
YXRoIG9mIHRoZSBlbmdpbmUgdG8gdGhlIGRpcmVjdG9yeSBzZXQgZm9yIHRoZSBzZXNzaW9uIGlu
IHVzZSBhY2NvcmRpbmcgdGhlIFdlYnNpdGVEYXRhU3RvcmUuCisgICAgICAgIEZvciBlYWNoIFdl
YnNpdGVEYXRhU3RvcmUsIGEgcGF0aCBhbmQgYSBzYW5kYm94IGV4dGVuc2lvbiBpcyBwYXNzZWQg
dG8gdGhlIG5ldHdvcmsgcHJvY2VzcyBpZiBwZXJzaXN0ZW5jeSBvZiB0aGUgY2FjaGUgc3RvcmFn
ZSBpcyB3YW50ZWQuCisgICAgICAgIEVwaGVtZXJhbCBzZXNzaW9ucyB3aWxsIHNldCB0aGUgcGF0
aCBvZiB0aGUgZW5naW5lIHRvIG51bGwgc28gdGhhdCBubyByZWFkL3dyaXRlIGFjY2VzcyBpcyBw
ZXJmb3JtZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6Y2FjaGVTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3Rv
cmFnZTo6RW5naW5lOjpmcm9tKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdp
bmU6OmRlZmF1bHRFbmdpbmUpOgorICAgICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2lu
ZTo6RW5naW5lKToKKyAgICAgICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OndyaXRl
RmlsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Lmg6CisgICAgICAgIChXZWJLaXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6c2hvdWxkUGVyc2lzdCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVdlYnNpdGVEYXRhU3RvcmVTZXNzaW9uKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6cGFyYW1ldGVycyk6CisKIDIwMTctMDgtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFdlYkRyaXZlcjogaW1wbGVtZW50IHNj
cmVlbiBjYXB0dXJlIGNvbW1hbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBkOGE5NjE4MjlhMDUyYTA2
YzlhMzkwZTk3ZDAwM2I0NGY0YmMwOThkLi5iNzNiZDYwMGQ5OTBiYTdmOTI1OWI1YjgzOWNkMTk1
NzIwYjEyNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAg
IE5TSFRUUENvb2tpZVN0b3JhZ2UgKm5zQ29va2llU3RvcmFnZSgpIGNvbnN0OwogI2VuZGlmCiAK
KyAgICBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FjaGVTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRDYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoU3RyaW5nJiYgcGF0aCkgeyBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUo
cGF0aCk7IH0KKwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGVuc3VyZVNlc3Npb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UsIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiYmKTsKICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQs
IFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4mJik7CkBAIC0xMzksNiArMTQyLDggQEAgcHJpdmF0ZToKIAogICAgIENy
ZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlhbFN0b3JhZ2U7CiAKKyAgICBTdHJpbmcgbV9jYWNo
ZVN0b3JhZ2VEaXJlY3Rvcnk7CisKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKICAgICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgU3RyaW5nJiB0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluKSBjb25zdDsKICAgICBIYXNoU2V0PFN0cmluZz4gbV90
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0ZvckNvb2tpZVBhcnRpdGlvbmluZzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggYjJhNzQyMDhmM2NhOTEwOWFiNTZmZDRmMGNjYjY3
MTgwODI3ZjhlYy4uODVmNmVmNDA0NWRhZDkzOWQ1OTdlZGJkYjA1NjU3ODMxYTFkMjE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkKGJvbwogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1
cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7UEFMOjpTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pOworICAgIE5ldHdvcmtQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHtQQUw6OlNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsg
fX0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMWFhYTM1N2IwZTExZmVhYWVmMzE5
YzM3ZmU4ZWVkN2E0NTVhZTAyZC4uM2IzMGI5ZDNiN2Q0YjVlYmQ1ZDE1MjMyZjZiYjBjYzRiNmM0
ODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJgogCiAgICAg
Ly8gRklYTUU6IGluc3RlYWQgb2YgaGFuZGxpbmcgdGhpcyBoZXJlLCBhIG1lc3NhZ2Ugc2hvdWxk
IGJlIHNlbnQgbGF0ZXIgKHNjYWxlcyB0byBtdWx0aXBsZSBzZXNzaW9ucykKICAgICBpZiAocGFy
YW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7UEFMOjpTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfX0pOworICAgICAgICBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbih7UEFMOjpTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH19
KTsKIAogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikK
ICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CkBAIC03MDEsNiArNzAxLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5T
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiAgICAgV2ViQ29yZTo6cHJlZmV0Y2hETlMoaG9zdG5h
bWUpOwogfQogCitTdHJpbmcgTmV0d29ya1Byb2Nlc3M6OmNhY2hlU3RvcmFnZURpcmVjdG9yeShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0Cit7CisgICAgaWYgKHNlc3Npb25JRC5pc0Vw
aGVtZXJhbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKHNlc3Npb25JRCA9PSBQ
QUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQorICAgICAgICByZXR1cm4gbV9jYWNo
ZVN0b3JhZ2VEaXJlY3Rvcnk7CisKKyAgICBhdXRvKiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmICghc2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBzZXNzaW9uLT5jYWNoZVN0b3JhZ2VEaXJl
Y3RvcnkoKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpCiB7CkBAIC03MTcsNiArNzMyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlh
bGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXIKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnN5bmNBbGxDb29raWVzKCkKIHsKIH0KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IDUwNmY0OTI1NWUxMjFmN2U2NWU5ZGJjZWRmMzcwZTJhMWFjNzIx
OGEuLmU1YTJlOGI2NmQzOTRlOTk3MDUyMzQyNmYzYTYwOWRlYmFkNzYxZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEzNCw3ICsxMzQs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZFRocm90dGxlTGF0ZW5jeTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VE
aXJlY3Rvcnk7IH0KKyAgICBTdHJpbmcgY2FjaGVTdG9yYWdlRGlyZWN0b3J5KFBBTDo6U2Vzc2lv
bklEKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2VzcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmUuY3BwCmluZGV4IDkzY2E4MTliNDk0MWNkMjM0MGVhNGVjODY0ZGRhMDM2ZjA1OTc0YjUuLjg2
Y2ZjZDZhN2FhMmZkMjkzZGViMDgwMzlhZjJiYTA1YTgxZTgxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VFbmdpbmUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgor
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZVF1ZXJ5
T3B0aW9ucy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgpAQCAtMzMsMjUgKzM1LDI1IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6RE9NQ2FjaGU7Cit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OjpOZXR3b3JrQ2FjaGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1l
c3BhY2UgQ2FjaGVTdG9yYWdlIHsKIAotc3RhdGljIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0
ZDo6dW5pcXVlX3B0cjxFbmdpbmU+PiYgZ2xvYmFsRW5naW5lTWFwKCkKK3N0YXRpYyBIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8RW5naW5lPj4mIGdsb2JhbEVuZ2luZU1hcCgpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIHN0ZDo6dW5p
cXVlX3B0cjxFbmdpbmU+Pj4gbWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8RW5naW5lPj4+IG1hcDsKKwogICAgIHJldHVybiBtYXA7
CiB9CiAKIEVuZ2luZSYgRW5naW5lOjpmcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsK
LSAgICBpZiAoc2Vzc2lvbklEID09IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
Ci0gICAgICAgIHJldHVybiBkZWZhdWx0RW5naW5lKCk7Ci0KLSAgICByZXR1cm4gKmdsb2JhbEVu
Z2luZU1hcCgpLmVuc3VyZShzZXNzaW9uSUQsIFtdIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8RW5naW5lPigpOwotICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IGdsb2JhbEVuZ2luZU1hcCgpLmFkZChzZXNzaW9uSUQsIG51bGxwdHIpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IEVuZ2luZTo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0
b3JhZ2VEaXJlY3Rvcnkoc2Vzc2lvbklEKSk7CisgICAgcmV0dXJuICphZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOwogfQogCiB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2luZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCkBAIC02Miw4ICs2NCwxNiBAQCB2b2lkIEVuZ2luZTo6ZGVzdHJveUVuZ2lu
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIEVuZ2luZSYgRW5naW5lOjpkZWZhdWx0RW5n
aW5lKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPEVuZ2lu
ZT4+IGRlZmF1bHRFbmdpbmUgPSB7IHN0ZDo6bWFrZV91bmlxdWU8RW5naW5lPigpIH07Ci0gICAg
cmV0dXJuICpkZWZhdWx0RW5naW5lLmdldCgpOworICAgIGF1dG8gc2Vzc2lvbklEID0gUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVmPEVuZ2luZT4+IGRlZmF1bHRFbmdpbmUgPSB7IEVuZ2luZTo6Y3JlYXRlKE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnkoc2Vzc2lvbklEKSkgfTsKKyAg
ICByZXR1cm4gZGVmYXVsdEVuZ2luZS5nZXQoKTsKK30KKworRW5naW5lOjpFbmdpbmUoU3RyaW5n
JiYgcm9vdFBhdGgpCisgICAgOiBtX3Jvb3RQYXRoKFdURk1vdmUocm9vdFBhdGgpKQoreworICAg
IGlmICghbV9yb290UGF0aC5pc051bGwoKSkKKyAgICAgICAgbV9pb1F1ZXVlID0gV29ya1F1ZXVl
OjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGVTdG9yYWdlRW5naW5lLnNlcmlhbEJhY2tn
cm91bmQiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91
bmQpOwogfQogCiB2b2lkIEVuZ2luZTo6b3Blbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBjYWNoZU5hbWUsIENhY2hlSWRlbnRpZmllckNhbGxiYWNrJiYgY2FsbGJhY2spCkBA
IC0zMDUsNyArMzE1LDYyIEBAIFZlY3Rvcjx1aW50NjRfdD4gRW5naW5lOjpxdWVyeUNhY2hlKGNv
bnN0IFZlY3RvcjxSZWNvcmQ+JiByZWNvcmRzLCBjb25zdCBXZWJDb3JlCiAgICAgcmV0dXJuIHJl
c3VsdHM7CiB9CiAKK3ZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGU6OkNvbXBsZXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
LCBmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byBjaGFubmVsID0gSU9DaGFubmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5
cGU6OkNyZWF0ZSk7CisgICAgICAgIGNoYW5uZWwtPndyaXRlKDAsIGRhdGEsIG1faW9RdWV1ZS5n
ZXQoKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGludCBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGVycm9yXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmIChlcnJv
cikgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHNwZWNpZmljIGZpbGVzeXN0
ZW0gZXJyb3IuCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpJbnRlcm5hbCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBFbmdpbmU6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3JrQ2FjaGU6OkRhdGEmLCBp
bnQgZXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7Cisg
ICAgICAgIGNhbGxiYWNrKERhdGEgeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZmlsZW5hbWUgPSBmaWxlbmFtZS5p
c29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjaGFubmVsID0gSU9DaGFu
bmVsOjpvcGVuKGZpbGVuYW1lLCBJT0NoYW5uZWw6OlR5cGU6OlJlYWQpOworICAgICAgICBpZiAo
Y2hhbm5lbC0+ZmlsZURlc2NyaXB0b3IoKSA8IDApIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFjayhEYXRhIHsgfSwgMCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoYW5uZWwtPnJlYWQo
MCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSwgbV9pb1F1ZXVlLmdldCgpLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oY29uc3QgRGF0YSYgZGF0YSwgaW50IGVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZGF0YSwgZXJyb3JdKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2soZGF0YSwgZXJyb3IpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCit2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQoreworICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpXSgpIG11dGFibGUgeworICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1l
KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuaAppbmRleCAyOTE3NzEyZmQzZGRlOWNmNDM3MDBl
YzAwMjk0NjgzZTZiZGNlZWE4Li5iNWUyMjYwNDE3M2MwNzE1YWU0M2MyZDgwZTA0NDM3MzNhMGVk
NDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmgKQEAgLTI2LDcgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nh
Y2hlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CkBAIC00MCwxMCArNDMsMTMgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2UgewogCi1jbGFzcyBFbmdpbmUgewor
Y2xhc3MgRW5naW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEVuZ2luZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBFbmdpbmUmIGZyb20oUEFMOjpTZXNzaW9uSUQpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lFbmdpbmUoUEFMOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyBSZWY8RW5n
aW5lPiBjcmVhdGUoU3RyaW5nJiYgcm9vdFBhdGgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW5n
aW5lKFdURk1vdmUocm9vdFBhdGgpKSk7IH0KKworICAgIGJvb2wgc2hvdWxkUGVyc2lzdCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9pb1F1ZXVlO30KIAogICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBjYWNoZU5hbWUsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNo
ZUlkZW50aWZpZXJDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlbW92ZSh1aW50NjRfdCBjYWNoZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkRPTUNhY2hlOjpDYWNoZUlkZW50aWZpZXJDYWxsYmFjayYmKTsK
QEAgLTUzLDggKzU5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dFJlY29yZHModWludDY0X3Qg
Y2FjaGVJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6RE9NQ2FjaGU6OlJlY29yZD4mJiwgV2Vi
Q29yZTo6RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAgICAgdm9pZCBk
ZWxldGVNYXRjaGluZ1JlY29yZHModWludDY0X3QgY2FjaGVJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6Q2FjaGVRdWVyeU9wdGlvbnMmJiwgV2ViQ29yZTo6
RE9NQ2FjaGU6OlJlY29yZElkZW50aWZpZXJzQ2FsbGJhY2smJik7CiAKKyAgICB2b2lkIHdyaXRl
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiwgV2ViQ29y
ZTo6RE9NQ2FjaGU6OkNvbXBsZXRpb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHJlYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBOZXR3b3JrQ2Fj
aGU6OkRhdGEmLCBpbnQgZXJyb3IpPiYmKTsKKyAgICB2b2lkIHJlbW92ZUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIEVuZ2luZSYgZGVmYXVsdEVu
Z2luZSgpOworICAgIGV4cGxpY2l0IEVuZ2luZShTdHJpbmcmJiByb290UGF0aCk7CiAKICAgICB2
b2lkIHdyaXRlQ2FjaGVzVG9EaXNrKFdlYkNvcmU6OkRPTUNhY2hlOjpDb21wbGV0aW9uQ2FsbGJh
Y2smJik7CiAKQEAgLTc2LDYgKzg3LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPENhY2hlPj4gbV9jYWNoZXM7CiAgICAgVmVjdG9yPENhY2hlPiBtX3JlbW92ZWRDYWNo
ZXM7CiAgICAgdWludDY0X3QgbV9uZXh0Q2FjaGVJZGVudGlmaWVyIHsgMCB9OworICAgIFN0cmlu
ZyBtX3Jvb3RQYXRoOworICAgIFJlZlB0cjxXb3JrUXVldWU+IG1faW9RdWV1ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIENhY2hlU3RvcmFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCmluZGV4IDkwNzQ4OWJj
MDQ4OGJjNGM0ZmQ1NWQzZjI2NmUwYTJmOTc1MGFiZGUuLjMzMzQ3OWM2MzgyYjdhZmQ2ZDM0ODFm
YTZiMjMxNDg3M2EwN2ExZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1wb3J0ICJO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIK
KyNpbXBvcnQgIlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KQEAgLTczLDcgKzc0LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3Jr
UHJvY2Vzc0MKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRi
b3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnBhcmVudEJ1bmRsZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKLSAgICBtX2NhY2hlU3RvcmFnZURpcmVj
dG9yeSA9IHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIG1fZGlza0NhY2hl
RGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBfQ0ZOZXR3
b3JrU2V0QVRTQ29udGV4dChwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKQEAg
LTEwNiw4ICsxMDYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
TmV0d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0MKIAogICAgIEFTU0VSVCgh
bV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZyB8fCAhcGFyYW1ldGVycy5uc1VSTENhY2hl
RGlza0NhcGFjaXR5KTsKIAotICAgIGlmICghbV9jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxs
KCkpCisgICAgaWYgKCFwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkg
eworICAgICAgICBtX2NhY2hlU3RvcmFnZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuY2FjaGVTdG9y
YWdlRGlyZWN0b3J5OwogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAg
IH0KIAogICAgIGlmICghbV9kaXNrQ2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggYWIw
ODJhZGVmZjc1NDZjOGZjMDk1YWE4ZDY1YWE5MzEzOTUxZTM4Yi4uYjg3M2EyYWFhM2Q0YjRhNTA0
NTlmMmEwYzdmYWE3OTE1NWMyMWFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTEyOSw2
ICsxMjksMTEgQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlV2Vic2l0ZURh
dGFTdG9yZVNlc3Npb24oV2Vic2l0ZURhdGFTdG9yZVBhcmEKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGNvb2tpZSA6IHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpCiAgICAgICAgIHNlc3Npb24tPnNl
dENvb2tpZShjb29raWUpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVj
dG9yeS5pc051bGwoKSkgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBzZXNzaW9uLT5zZXRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShwYXJhbWV0
ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSkpOworICAgIH0KKwogI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgYXV0byBuZXR3b3JrU2Vzc2lvbiA9IE5ldHdvcmtTZXNzaW9uOjpjcmVhdGUo
cGFyYW1ldGVycy5zZXNzaW9uSUQsIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVt
ZW50PExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlcj4oKSk7CiAgICAgU2Vzc2lvblRyYWNrZXI6
OnNldFNlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQsIFdURk1vdmUobmV0d29ya1Nlc3Npb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzLmNwcAppbmRleCA5M2VmMWM5MTI5ZjhiMDc2YjcwYjg3ZmQ1NDg2NDE1OWY2NTMzNzJlLi5j
MTMzMThjZTVlYTg4YTRkY2ZmZmExYWRhYjgxNWI1Mzk3MGQ5NmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCkBAIC00MCw2
ICs0MCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NDb29raWVTdG9y
YWdlSWRlbnRpZmllcjsKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9u
SGFuZGxlOwogICAgIGVuY29kZXIgPDwgcGVuZGluZ0Nvb2tpZXM7CisgICAgZW5jb2RlciA8PCBj
YWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBjYWNoZVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiB9CiAKIGJvb2wgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQpAQCAtNTYsNiArNTgsMTIgQEAgYm9vbCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2Vic2l0ZURhdGFTdG9yZVAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMu
aAppbmRleCA2M2ZhMjMxMzgxMTI5YThmYzBhMWFkYjQxN2FhMjM4YWQ1OGZmZDVlLi40NjBjNDM2
YTk4YTA1M2YxZDI0ZWQ2MDcxYTEwNGQwMDkxODFkNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTUwLDYgKzUwLDggQEAg
c3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICBWZWN0b3I8dWludDhfdD4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IHBlbmRpbmdDb29raWVzOworICAgIFN0cmluZyBjYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGNhY2hlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGRiZDA2OWZlNTkxYzcwNDEz
YjI4YTc1ZDI0YmRmNzhmMDgyZDY2ZTUuLjgxMTY1MzZjNGY4OGZkM2ZiNTY0MWViMDIwYmRjMTE2
NWJlZDRlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
QEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRBbnlQYWdlR3JvdXBN
aWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZQogewogICAgIGlmIChu
ZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQot
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oe1BBTDo6U2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCksIHsgfSwgeyB9LCB7IH19KSwgMCk7CisgICAgICAgICAgICBuZXR3
b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbih7UEFMOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH19KSwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0
cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGIxNmFlMDI4
MTY2ZmU1OWNmNWMxYTdmYTcyNjRhN2RhYzI4M2FhNjAuLmEzNmE3Yzg2MzAwN2IwMzY0NzE0MmJm
YjFjZjlhY2JjMDkyZGY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
QEAgLTc1LDYgKzc1LDExIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRh
U3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShX
ZWJDb3JlOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAorICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hl
U3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkgeworICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7Cisg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9y
eShwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSwgcGFyYW1ldGVycy5jYWNoZVN0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIH0KKwogICAgIHJldHVybiBwYXJhbWV0
ZXJzOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>