<?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>34878</bug_id>
          
          <creation_ts>2010-02-11 23:59:02 -0800</creation_ts>
          <short_desc>[Chromium] Provide for a frame-specific cookie jar</short_desc>
          <delta_ts>2010-02-12 15:30:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189960</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-11 23:59:02 -0800</bug_when>
    <thetext>[Chromium] Provide for a frame-specific cookie jar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189962</commentid>
    <comment_count>1</comment_count>
      <attachid>48627</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-12 00:01:40 -0800</bug_when>
    <thetext>Created attachment 48627
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189993</commentid>
    <comment_count>2</comment_count>
      <attachid>48627</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-02-12 02:40:18 -0800</bug_when>
    <thetext>Comment on attachment 48627
v1 patch


&gt; Index: WebKit/chromium/src/ChromiumBridge.cpp
&gt; ===================================================================
&gt; --- WebKit/chromium/src/ChromiumBridge.cpp	(revision 54703)
&gt; +++ WebKit/chromium/src/ChromiumBridge.cpp	(working copy)
&gt; @@ -112,6 +113,17 @@ static WebWidgetClient* toWebWidgetClien
&gt;      return chromeClientImpl-&gt;webView()-&gt;client();
&gt;  }
&gt;  
&gt; +static WebCookieJar* getCookieJar(const Document* document)
&gt; +{
&gt; +    WebFrameImpl* frameImpl = WebFrameImpl::fromFrame(document-&gt;frame());
&gt; +    if (!frameImpl || !frameImpl-&gt;client())
&gt; +        return 0;
&gt; +    WebCookieJar* cookieJar = frameImpl-&gt;client()-&gt;cookieJar();
&gt; +    if (!cookieJar)
&gt; +        cookieJar = webKitClient()-&gt;cookieJar();

This is temporary as to not break things during the transition, right?  If so, add a FIXME.  If not, are we going to leave 2 ways to do this?  I&apos;m not completely against it, but lets not turn the WebKit API into Perl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190066</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-12 08:41:26 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is temporary as to not break things during the transition, right?  If so,
&gt; add a FIXME.  If not, are we going to leave 2 ways to do this?  I&apos;m not
&gt; completely against it, but lets not turn the WebKit API into Perl.

Sorry, I should have explained this better.  I intend to keep an accessor to the global CookieJar on WebKitClient.  That way, simple apps like DRT/TestShell can continue to talk to the platform layer for cookies.  This is important since our plan for porting DRT to Chromium&apos;s WebKit API involves exporting a GetWebKitClient function from the chromium code base.  It would be awkward for DRT&apos;s WebFrameClient to have to turn around and ask the platform layer for cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190067</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-02-12 08:45:39 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; This is temporary as to not break things during the transition, right?  If so,
&gt; &gt; add a FIXME.  If not, are we going to leave 2 ways to do this?  I&apos;m not
&gt; &gt; completely against it, but lets not turn the WebKit API into Perl.
&gt; 
&gt; Sorry, I should have explained this better.  I intend to keep an accessor to
&gt; the global CookieJar on WebKitClient.  That way, simple apps like DRT/TestShell
&gt; can continue to talk to the platform layer for cookies.  This is important
&gt; since our plan for porting DRT to Chromium&apos;s WebKit API involves exporting a
&gt; GetWebKitClient function from the chromium code base.  It would be awkward for
&gt; DRT&apos;s WebFrameClient to have to turn around and ask the platform layer for
&gt; cookies.

In such a case, wouldn&apos;t the cookie jar just be a singleton?

I&apos;m not sure I like the idea of adding &quot;there&apos;s more than one way to do it&quot; to our WebKit API unless absolutely necessary.  It&apos;s also bad if our tests are hitting one code path and production is using another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190098</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-12 10:38:41 -0800</bug_when>
    <thetext>&gt; In such a case, wouldn&apos;t the cookie jar just be a singleton?

WebKitClient is where we place singletons.  The idea here is that the embedder may wish to have a different cookie jar for a particular frame.  This is all to avoid having to pass a WebFrame parameter to the WebCookieJar methods.  I could do that, but that seems like a layering violation.  This was my solution to avoid that layering violation.


&gt; I&apos;m not sure I like the idea of adding &quot;there&apos;s more than one way to do it&quot; to
&gt; our WebKit API unless absolutely necessary.  It&apos;s also bad if our tests are
&gt; hitting one code path and production is using another.

It is not that different of a code path, and the differences would still exist if we parameterize WebCookieJar methods with a WebFrame.  The getCookieJar method helps minimize the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190101</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-02-12 10:46:52 -0800</bug_when>
    <thetext>Fair enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190183</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-02-12 15:30:17 -0800</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/54742</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48627</attachid>
            <date>2010-02-12 00:01:40 -0800</date>
            <delta_ts>2010-02-12 02:40:17 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>cookiejar_1.txt</filename>
            <type>text/plain</type>
            <size>16485</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU0NzA2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMi0xMSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBhc3MgdGhlIERvY3VtZW50IGFsb25nIHRvIHRoZSBDaHJvbWl1bUJyaWRnZSBjb29raWUgbWV0
aG9kcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQ4NzgKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tp
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVDb29raWUpOgorCiAy
MDEwLTAyLTExICBBcml5YSBIaWRheWF0ICA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtQnJpZGdlLmgJKHJldmlzaW9uIDU0NzAz
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bUJyaWRnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC04MywxMSArODMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRXcml0ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAgLy8gQ29va2llcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAg
ICAgc3RhdGljIHZvaWQgc2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICAgICAgc3RhdGlj
IFN0cmluZyBjb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMpOwotICAgICAgICBzdGF0aWMgYm9vbCByYXdDb29raWVzKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIFZlY3RvcjxDb29raWU+Kik7Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSk7Ci0gICAgICAgIHN0YXRpYyBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOworICAgICAg
ICBzdGF0aWMgdm9pZCBzZXRDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgdmFsdWUpOworICAgICAgICBzdGF0aWMgU3RyaW5nIGNvb2tpZXMoY29uc3Qg
RG9jdW1lbnQqLCBjb25zdCBLVVJMJik7CisgICAgICAgIHN0YXRpYyBib29sIHJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+Jik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAgICAgICAgc3RhdGljIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQqKTsKIAogICAgICAgICAvLyBETlMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
ICAgICAgICBzdGF0aWMgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1
bS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA1NDcwMykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTM5LDI3ICszOSwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgc2V0Q29va2ll
cyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBDaHJvbWl1bUJyaWRnZTo6c2V0Q29va2llcyh1cmwsIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB2YWx1ZSk7CisgICAgQ2hyb21pdW1CcmlkZ2U6OnNldENvb2tp
ZXMoZG9jdW1lbnQsIHVybCwgdmFsdWUpOwogfQogCiBTdHJpbmcgY29va2llcyhjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gQ2hyb21pdW1C
cmlkZ2U6OmNvb2tpZXModXJsLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Cisg
ICAgcmV0dXJuIENocm9taXVtQnJpZGdlOjpjb29raWVzKGRvY3VtZW50LCB1cmwpOwogfQogCiBi
b29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1
cm4gQ2hyb21pdW1CcmlkZ2U6OmNvb2tpZXNFbmFibGVkKGRvY3VtZW50LT5jb29raWVVUkwoKSwg
ZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCkpOworICAgIHJldHVybiBDaHJvbWl1bUJy
aWRnZTo6Y29va2llc0VuYWJsZWQoZG9jdW1lbnQpOwogfQogCiBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6cmF3Q29va2llcyh1
cmwsIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCAmcmF3Q29va2llcyk7CisgICAg
cmV0dXJuIENocm9taXVtQnJpZGdlOjpyYXdDb29raWVzKGRvY3VtZW50LCB1cmwsIHJhd0Nvb2tp
ZXMpOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3Qg
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKIHsKLSAgICByZXR1cm4gQ2hyb21pdW1CcmlkZ2U6OmRlbGV0ZUNvb2tpZSh1cmwsIGNv
b2tpZU5hbWUpOworICAgIHJldHVybiBDaHJvbWl1bUJyaWRnZTo6ZGVsZXRlQ29va2llKGRvY3Vt
ZW50LCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTQ3MDYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDItMTEgIERhcmluIEZp
c2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgV2ViQ29va2llSmFyLCBhbmQgcHJvdmlkZSBm
b3IgYSBmcmFtZSBzcGVjaWZpYyBjb29raWUgamFyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDg3OAorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViQ29va2llSmFyLmg6IEFkZGVkLgorICAgICAgICAqIHB1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6Y29v
a2llSmFyKToKKyAgICAgICAgKiBwdWJsaWMvV2ViS2l0Q2xpZW50Lmg6CisgICAgICAgIChXZWJL
aXQ6OldlYktpdENsaWVudDo6Y29va2llSmFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xp
ZW50OjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50Ojpjb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViS2l0Q2xpZW50OjpyYXdDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0Q2xpZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJLaXRDbGllbnQ6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKiBzcmMvQ2hyb21pdW1Ccmlk
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q29va2llSmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtQnJpZGdlOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
aXVtQnJpZGdlOjpjb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpy
YXdDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtQnJpZGdlOjpkZWxldGVDb29r
aWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1CcmlkZ2U6OmNvb2tpZXNFbmFibGVkKToK
KwogMjAxMC0wMi0xMSAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CShyZXZpc2lvbiA1NDcwMykKKysrIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw2ICs5Miw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb25z
b2xlTWVzc2FnZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRleHRNZW51RGF0
YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvb2tpZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkNvb2tpZUphci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJDU3RyaW5nLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ3Vyc29ySW5m
by5oJywKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llSmFyLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZUphci5oCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29va2llSmFyX2gKKyNkZWZpbmUgV2ViQ29v
a2llSmFyX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBX
ZWJVUkw7CitzdHJ1Y3QgV2ViQ29va2llOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdl
YlZlY3RvcjsKKworY2xhc3MgV2ViQ29va2llSmFyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFdlYlN0cmluZyYgY29va2llKSB7IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBjb29raWVzKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lkIHJhd0Nvb2tpZXMo
Y29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgV2ViVmVj
dG9yPFdlYkNvb2tpZT4mKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgY29va2llTmFtZSkgeyB9CisgICAgdmlydHVhbCBi
b29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMpIHsgcmV0dXJuIHRydWU7IH0KKworcHJvdGVjdGVkOgorICAgIH5XZWJDb29r
aWVKYXIoKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKDQpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXRcY2hyb21pdW1ccHVibGljXFdlYkNvb2tpZUphci5oDQpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fDQpBZGRlZDogc3ZuOmVvbC1zdHlsZQ0KICAgKyBMRg0KDQpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NDcwMykKKysrIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQ29va2llSmFy
OwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwogY2xhc3MgV2Vi
RnJhbWU7CkBAIC03NCw2ICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gTWF5IHJldHVybiBudWxs
LgogICAgIHZpcnR1YWwgV2ViTWVkaWFQbGF5ZXIqIGNyZWF0ZU1lZGlhUGxheWVyKFdlYkZyYW1l
KiwgV2ViTWVkaWFQbGF5ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAKKyAgICAKKyAgICAvLyBT
ZXJ2aWNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworICAgIC8vIEEgZnJhbWUgc3BlY2lmaWMgY29va2llIGphci4gIE1heSBy
ZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkNvb2tpZUphciogY29va2llSmFyKCkgeyByZXR1
cm4gMDsgfQorCiAKICAgICAvLyBHZW5lcmFsIG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXRDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViS2l0Q2xpZW50LmgJKHJldmlzaW9uIDU0NzAzKQorKysgV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJLaXRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3Mg
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7CiBjbGFzcyBXZWJDbGlwYm9hcmQ7CitjbGFz
cyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBXZWJN
aW1lUmVnaXN0cnk7CiBjbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlcjsKQEAgLTc1LDYgKzc2LDkg
QEAgcHVibGljOgogICAgIC8vIE1heSByZXR1cm4gbnVsbCBvbiBzb21lIHBsYXRmb3Jtcy4KICAg
ICB2aXJ0dWFsIFdlYlRoZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpIHsgcmV0dXJuIDA7IH0KIAor
ICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYkNvb2tpZUphciogY29va2ll
SmFyKCkgeyByZXR1cm4gMDsgfQorCiAKICAgICAvLyBBcHBsaWNhdGlvbiBDYWNoZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNzcsMTIgKzE4MSwx
MiBAQCBwdWJsaWM6CiAKICAgICAvLyBOZXR3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb29raWVzKAotICAgICAgICBjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29uc3QgV2ViU3RyaW5nJiBjb29raWVzKSB7IH0KLSAgICB2aXJ0
dWFsIFdlYlN0cmluZyBjb29raWVzKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCByYXdDb29raWVzKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzLCBXZWJWZWN0b3I8V2ViQ29va2llPiopIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2Vi
U3RyaW5nJiBjb29raWVOYW1lKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAvLyBUaGVzZSBjb29raWUgbWV0aG9kcyBhcmUgREVQUkVDQVRF
RCBpbiBmYXZvciBvZiBjb29raWVKYXIgYWNjZXNzb3IuCisgICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXMoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgV2ViU3RyaW5nJiBjb29raWVzKSB7IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBjb29r
aWVzKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpIHsg
cmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCBib29sIHJhd0Nvb2tpZXMoY29uc3Qg
V2ViVVJMJiwgY29uc3QgV2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgV2ViVmVjdG9yPFdl
YkNvb2tpZT4qKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiBjb29raWVOYW1lKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcykgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gQSBzdWdnZXN0
aW9uIHRvIHByZWZldGNoIElQIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gaG9zdG5hbWUuCiAg
ICAgdmlydHVhbCB2b2lkIHByZWZldGNoSG9zdE5hbWUoY29uc3QgV2ViU3RyaW5nJikgeyB9Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9taXVtQnJpZGdlLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCShyZXZpc2lvbiA1NDcw
MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21pdW1CcmlkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2lu
Y2x1ZGUgIldlYkNsaXBib2FyZC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZS5oIgorI2luY2x1ZGUg
IldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJX
ZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKQEAgLTExMiw2ICsxMTMsMTcg
QEAgc3RhdGljIFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGllbgogICAgIHJldHVybiBj
aHJvbWVDbGllbnRJbXBsLT53ZWJWaWV3KCktPmNsaWVudCgpOwogfQogCitzdGF0aWMgV2ViQ29v
a2llSmFyKiBnZXRDb29raWVKYXIoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIFdl
YkZyYW1lSW1wbCogZnJhbWVJbXBsID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZG9jdW1lbnQt
PmZyYW1lKCkpOworICAgIGlmICghZnJhbWVJbXBsIHx8ICFmcmFtZUltcGwtPmNsaWVudCgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGZyYW1lSW1w
bC0+Y2xpZW50KCktPmNvb2tpZUphcigpOworICAgIGlmICghY29va2llSmFyKQorICAgICAgICBj
b29raWVKYXIgPSB3ZWJLaXRDbGllbnQoKS0+Y29va2llSmFyKCk7CisgICAgcmV0dXJuIGNvb2tp
ZUphcjsKK30KKwogLy8gQ2xpcGJvYXJkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBib29sIENocm9taXVtQnJpZGdl
OjpjbGlwYm9hcmRJc0Zvcm1hdEF2YWlsYWJsZSgKQEAgLTE3MywyNSArMTg1LDM3IEBAIHZvaWQg
Q2hyb21pdW1CcmlkZ2U6OmNsaXBib2FyZFdyaXRlSW1hZ2UKIAogLy8gQ29va2llcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi12b2lkIENocm9taXVtQnJpZGdlOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYg
Y29va2llKQordm9pZCBDaHJvbWl1bUJyaWRnZTo6c2V0Q29va2llcyhjb25zdCBEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICB3ZWJLaXRDbGllbnQoKS0+c2V0Q29va2ll
cyh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWUpOworICAgIFdlYkNvb2tpZUphciog
Y29va2llSmFyID0gZ2V0Q29va2llSmFyKGRvY3VtZW50KTsKKyAgICBpZiAoY29va2llSmFyKQor
ICAgICAgICBjb29raWVKYXItPnNldENvb2tpZSh1cmwsIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB3ZWJLaXRDbGllbnQoKS0+c2V0
Q29va2llcyh1cmwsIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB2YWx1ZSk7IC8v
IERFUFJFQ0FURUQKIH0KIAotU3RyaW5nIENocm9taXVtQnJpZGdlOjpjb29raWVzKGNvbnN0IEtV
UkwmIHVybCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcykKK1N0cmluZyBDaHJvbWl1bUJyaWRnZTo6Y29va2llcyhjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gd2ViS2l0
Q2xpZW50KCktPmNvb2tpZXModXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CisgICAgU3RyaW5n
IHJlc3VsdDsKKyAgICBXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGdldENvb2tpZUphcihkb2N1
bWVudCk7CisgICAgaWYgKGNvb2tpZUphcikKKyAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5j
b29raWVzKHVybCwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCkpOworICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0ID0gd2ViS2l0Q2xpZW50KCktPmNvb2tpZXModXJsLCBkb2N1bWVudC0+
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7IC8vIERFUFJFQ0FURUQKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIENocm9taXVtQnJpZGdlOjpyYXdDb29raWVzKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIFZlY3RvcjxDb29raWU+KiByYXdDb29r
aWVzKQorYm9vbCBDaHJvbWl1bUJyaWRnZTo6cmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0g
ICAgcmF3Q29va2llcy0+Y2xlYXIoKTsKKyAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgV2Vi
VmVjdG9yPFdlYkNvb2tpZT4gd2ViQ29va2llczsKLSAgICBpZiAoIXdlYktpdENsaWVudCgpLT5y
YXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMsICZ3ZWJDb29raWVzKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBnZXRDb29r
aWVKYXIoZG9jdW1lbnQpOworICAgIGlmIChjb29raWVKYXIpCisgICAgICAgIGNvb2tpZUphci0+
cmF3Q29va2llcyh1cmwsIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB3ZWJDb29r
aWVzKTsKKyAgICBlbHNlCisgICAgICAgIHdlYktpdENsaWVudCgpLT5yYXdDb29raWVzKHVybCwg
ZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksICZ3ZWJDb29raWVzKTsgLy8gREVQUkVD
QVRFRAogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvb2tpZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgY29uc3QgV2ViQ29va2llJiB3ZWJDb29raWUgPSB3ZWJDb29raWVzW2ld
OwpAQCAtMjAzLDIwICsyMjcsMjkgQEAgYm9vbCBDaHJvbWl1bUJyaWRnZTo6cmF3Q29va2llcyhj
b25zdCBLVQogICAgICAgICAgICAgICAgICAgICAgIHdlYkNvb2tpZS5odHRwT25seSwKICAgICAg
ICAgICAgICAgICAgICAgICB3ZWJDb29raWUuc2VjdXJlLAogICAgICAgICAgICAgICAgICAgICAg
IHdlYkNvb2tpZS5zZXNzaW9uKTsKLSAgICAgICAgcmF3Q29va2llcy0+YXBwZW5kKGNvb2tpZSk7
CisgICAgICAgIHJhd0Nvb2tpZXMuYXBwZW5kKGNvb2tpZSk7CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIENocm9taXVtQnJpZGdlOjpkZWxldGVDb29raWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIENocm9taXVtQnJpZGdlOjpkZWxl
dGVDb29raWUoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICB3ZWJLaXRDbGllbnQoKS0+ZGVsZXRlQ29va2ll
KHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBnZXRDb29r
aWVKYXIoZG9jdW1lbnQpOworICAgIGlmIChjb29raWVKYXIpCisgICAgICAgIGNvb2tpZUphci0+
ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CisgICAgZWxzZQorICAgICAgICB3ZWJLaXRD
bGllbnQoKS0+ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7IC8vIERFUFJFQ0FURUQKIH0K
IAotYm9vbCBDaHJvbWl1bUJyaWRnZTo6Y29va2llc0VuYWJsZWQoY29uc3QgS1VSTCYgdXJsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMpCitib29sIENocm9taXVtQnJpZGdlOjpjb29raWVzRW5hYmxlZChjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIHdlYktpdENsaWVudCgpLT5jb29raWVz
RW5hYmxlZCh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKKyAgICBib29sIHJlc3VsdDsKKyAg
ICBXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGdldENvb2tpZUphcihkb2N1bWVudCk7CisgICAg
aWYgKGNvb2tpZUphcikKKyAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5hYmxl
ZChkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygp
KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHdlYktpdENsaWVudCgpLT5jb29raWVzRW5h
YmxlZChkb2N1bWVudC0+Y29va2llVVJMKCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2ll
cygpKTsgLy8gREVQUkVDQVRFRAorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEROUyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0K
</data>
<flag name="review"
          id="31340"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>