<?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>137797</bug_id>
          
          <creation_ts>2014-10-16 16:45:47 -0700</creation_ts>
          <short_desc>ResourceRequest deserialization unnecessarily calls partitionName() on encoded cache partition</short_desc>
          <delta_ts>2014-10-21 14:07:57 -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>WebKit2</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jeffrey+webkit</cc>
    
    <cc>jer.noble</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042239</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-16 16:45:47 -0700</bug_when>
    <thetext>ResourceRequest deserialization unnecessarily calls partitionName() on encoded cache partition. In the deserialization case, we already know the cache partition is a valid partition name so we should bypass the call to partitionName() for performance.

This is likely a regression from &lt;http://trac.webkit.org/changeset/145161&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042245</commentid>
    <comment_count>1</comment_count>
      <attachid>239984</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-16 17:02:18 -0700</bug_when>
    <thetext>Created attachment 239984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042469</commentid>
    <comment_count>2</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2014-10-17 14:15:25 -0700</bug_when>
    <thetext>Not exactly a regression. The deserialization of the cache partition was added in &lt;http://trac.webkit.org/changeset/146544&gt;, after that commit.

I&apos;m a little leery of adding an argument to setCachePartition, but it doesn&apos;t look like there&apos;s much way around that. Also, isn&apos;t there a better place in the class to place the enum definition than between two function definitions?

Other than that minor nitpick, this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042473</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 14:22:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Not exactly a regression. The deserialization of the cache partition was
&gt; added in &lt;http://trac.webkit.org/changeset/146544&gt;, after that commit.

Right, sorry about that. I did not look much further, just saw that the patch made the argument processing mandatory by moving it from the callers to the method implementation.

&gt; 
&gt; I&apos;m a little leery of adding an argument to setCachePartition, but it
&gt; doesn&apos;t look like there&apos;s much way around that. Also, isn&apos;t there a better
&gt; place in the class to place the enum definition than between two function
&gt; definitions?

I see 3 possibilities:
1. Add an enum / bool argument as I did
2. Add a new setter without the argument processing. I initially wanted to do this but did not know how to call it.
3. Move the partitionName() to calls sites but I assumed we did not want to do that since it was this way and we changed it.

I am honestly OK with 1 or 2 if someone has a good name for the new setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042474</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 14:22:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Not exactly a regression. The deserialization of the cache partition was
&gt; added in &lt;http://trac.webkit.org/changeset/146544&gt;, after that commit.

Right, sorry about that. I did not look much further, just saw that the patch made the argument processing mandatory by moving it from the callers to the method implementation.

&gt; 
&gt; I&apos;m a little leery of adding an argument to setCachePartition, but it
&gt; doesn&apos;t look like there&apos;s much way around that. Also, isn&apos;t there a better
&gt; place in the class to place the enum definition than between two function
&gt; definitions?

I see 3 possibilities:
1. Add an enum / bool argument as I did
2. Add a new setter without the argument processing. I initially wanted to do this but did not know how to call it.
3. Move the partitionName() to calls sites but I assumed we did not want to do that since it was this way and we changed it.

I am honestly OK with 1 or 2 if someone has a good name for the new setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042479</commentid>
    <comment_count>5</comment_count>
      <attachid>240039</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 14:26:25 -0700</bug_when>
    <thetext>Created attachment 240039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042860</commentid>
    <comment_count>6</comment_count>
      <attachid>240039</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-10-20 10:19:02 -0700</bug_when>
    <thetext>Comment on attachment 240039
Patch

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

&gt; Source/WebCore/platform/network/cf/ResourceRequest.h:-102
&gt; +        enum CachePartitionNeedsValidationOrNot { CachePartitionDoesNotNeedValidation, CachePartitionNeedsValidation };
&gt; +        void setCachePartition(const String&amp; cachePartition, CachePartitionNeedsValidationOrNot needsValidation = CachePartitionNeedsValidation)
&gt; +        {
&gt; +            m_cachePartition = needsValidation ? partitionName(cachePartition) : cachePartition;
&gt; +        }
&gt;          const String&amp; cachePartition() const { return m_cachePartition.isNull() ? emptyString() : m_cachePartition; }
&gt; -        void setCachePartition(const String&amp; cachePartition) { m_cachePartition = partitionName(cachePartition); }

The existing code is semantically wrong. This function doesn&apos;t take a partition name, it takes a domain name. Both happen to be String objects and to follow a domain name format, but this is accidental, and only confuses matters. Domains and partition names are different things, and should never be confused.

So it&apos;s not about validation, it&apos;s about making a partition name from a domain name.

Talking about a better design on IRC now - I think that we should have setCachePartition be a simple setter (perhaps with as ASSERT), and callers would create a partition name from domain name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043016</commentid>
    <comment_count>7</comment_count>
      <attachid>240157</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 17:08:34 -0700</bug_when>
    <thetext>Created attachment 240157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043017</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-20 17:09:24 -0700</bug_when>
    <thetext>New proposal including refactoring of the existing code, after discussing this over with Alexey and Jeffrey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043070</commentid>
    <comment_count>9</comment_count>
      <attachid>240157</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 19:10:47 -0700</bug_when>
    <thetext>Comment on attachment 240157
Patch

Clearing flags on attachment: 240157

Committed r174921: &lt;http://trac.webkit.org/changeset/174921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043071</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-20 19:10:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043276</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 14:05:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; All reviewed patches have been landed.  Closing bug.

This caused a link failure due to the renaming of cachePartition. WebCore.exp.in needs to be updated to match the new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043277</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-21 14:07:57 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; All reviewed patches have been landed.  Closing bug.
&gt; 
&gt; This caused a link failure due to the renaming of cachePartition.
&gt; WebCore.exp.in needs to be updated to match the new name.

I fixed that a while ago:
https://trac.webkit.org/r174994
https://trac.webkit.org/r174995</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239984</attachid>
            <date>2014-10-16 17:02:18 -0700</date>
            <delta_ts>2014-10-17 14:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137797-20141016170223.patch</filename>
            <type>text/plain</type>
            <size>4478</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Nzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E3ZmZhMWEyMjJiN2M1
OGVjYTM2YjdmZDgxMTAxNmVlODc1Mjc3Zi4uN2IyMzg2Y2VjZTkzYzkwOTViNDhhYmU5NGZmMDFk
NTE0NWM2MTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE0LTEwLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRl
c2VyaWFsaXphdGlvbiB1bm5lY2Vzc2FyaWx5IGNhbGxzIHBhcnRpdGlvbk5hbWUoKSBvbiBlbmNv
ZGVkIGNhY2hlIHBhcnRpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3Nzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRlc2VyaWFsaXphdGlvbiB3YXMgdW5uZWNlc3Nh
cmlseSBjYWxsaW5nIHBhcnRpdGlvbk5hbWUoKQorICAgICAgICBvbiB0aGUgZGVjb2RlZCBjYWNo
ZSBwYXJ0aXRpb24gYWZ0ZXIgcjE0NTE2MS4gSW4gdGhlIGRlc2VyaWFsaXphdGlvbgorICAgICAg
ICBjYXNlLCB3ZSBhbHJlYWR5IGtub3cgdGhlIGNhY2hlIHBhcnRpdGlvbiBpcyBhIHZhbGlkIHBh
cnRpdGlvbiBuYW1lIHNvCisgICAgICAgIHdlIGNhbiBieXBhc3MgdGhlIGNhbGwgdG8gcGFydGl0
aW9uTmFtZSgpICh3aGljaCBpcyBmYWlybHkgZXhwZW5zaXZlKQorICAgICAgICBmb3IgcGVyZm9y
bWFuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgfG5lZWRzVmFsaWRhdGlvbnwgYXJn
dW1lbnQgdG8KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZVBhcnRpdGlvbigpIHNl
dHRlciBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuCisgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIHBh
cnRpdGlvbiBuYW1lIGlzIHZhbGlkIChiZWNhdXNlIGl0IHdhcyBhbHJlYWR5CisgICAgICAgIHBy
b2Nlc3NlZCBieSBwYXJ0aXRpb25OYW1lKCkgYmVmb3JlKS4gVXNlIHRoaXMgbmV3IGFyZ3VtZW50
IGluCisgICAgICAgIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKCkgdG8g
c3BlbnQgYSBiaXQgbGVzcyB0aW1lCisgICAgICAgIGRlc2VyaWFsaXppbmcgcmVzb3VyY2UgcmVx
dWVzdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZVBhcnRpdGlvbik6CisKIDIwMTQtMTAt
MTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzQ3NDQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ5NjYyNzMxNDg5
NDk1MzVmYzhhNjBkNmE2YTMwNGRmNDIwM2ViNS4uMjFhMGE4MzNiOWNlNWRiNjJmOTE1ZTE2ODVm
MDE5YzYwNDJkZWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE0LTEwLTE2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IGRlc2VyaWFsaXphdGlvbiB1bm5lY2Vzc2FyaWx5IGNhbGxzIHBhcnRpdGlvbk5hbWUoKSBvbiBl
bmNvZGVkIGNhY2hlIHBhcnRpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3Nzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgfG5lZWRzVmFsaWRhdGlvbnwgYXJndW1l
bnQgdG8KKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0OjpzZXRDYWNoZVBhcnRpdGlvbigpIHNldHRl
ciBzbyB0aGF0IHRoZSBjYWxsZXIgY2FuCisgICAgICAgIGluZGljYXRlIHRoYXQgdGhlIHBhcnRp
dGlvbiBuYW1lIGlzIHZhbGlkIChiZWNhdXNlIGl0IHdhcyBhbHJlYWR5CisgICAgICAgIHByb2Nl
c3NlZCBieSBwYXJ0aXRpb25OYW1lKCkgYmVmb3JlKS4gVXNlIHRoaXMgbmV3IGFyZ3VtZW50IGlu
CisgICAgICAgIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKCkgdG8gc3Bl
bnQgYSBiaXQgbGVzcyB0aW1lCisgICAgICAgIGRlc2VyaWFsaXppbmcgcmVzb3VyY2UgcmVxdWVz
dHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUpOgorCiAyMDE0
LTEwLTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEltcGxlbWVudCBzZWxlY3Rpb24gc2VydmljZXMgbWVudSBmb3IgTGVnYWN5IFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
LmgKaW5kZXggOGM0YWUwZDRkYjNmZjk3MTNiZDcwMTNhZGFkZDI5NDRiYTVmOTgwOC4uZGM5MTcz
ZTZhZGM3YWM4MjcwODUyZmFhMzJkNTI1MGU2YTZlZDRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC05OSw3ICs5
OSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwYXJ0aXRpb25OYW1lKGNv
bnN0IFN0cmluZyYgZG9tYWluKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVQYXJ0aXRpb24uaXNOdWxsKCkgPyBlbXB0eVN0cmlu
ZygpIDogbV9jYWNoZVBhcnRpdGlvbjsgfQotICAgICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9u
KGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pIHsgbV9jYWNoZVBhcnRpdGlvbiA9IHBhcnRp
dGlvbk5hbWUoY2FjaGVQYXJ0aXRpb24pOyB9CisgICAgICAgIGVudW0gQ2FjaGVQYXJ0aXRpb25O
ZWVkc1ZhbGlkYXRpb25Pck5vdCB7IENhY2hlUGFydGl0aW9uRG9lc05vdE5lZWRWYWxpZGF0aW9u
LCBDYWNoZVBhcnRpdGlvbk5lZWRzVmFsaWRhdGlvbiB9OworICAgICAgICB2b2lkIHNldENhY2hl
UGFydGl0aW9uKGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24sIENhY2hlUGFydGl0aW9uTmVl
ZHNWYWxpZGF0aW9uT3JOb3QgbmVlZHNWYWxpZGF0aW9uID0gQ2FjaGVQYXJ0aXRpb25OZWVkc1Zh
bGlkYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBuZWVk
c1ZhbGlkYXRpb24gPyBwYXJ0aXRpb25OYW1lKGNhY2hlUGFydGl0aW9uKSA6IGNhY2hlUGFydGl0
aW9uOworICAgICAgICB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZO
RVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBhNjAxY2E4NWQ1MDUyNWU0MTg5MDU4YjkzMDgzYTlmMTMwZGFjYmY1Li5kZGU4
ZmIxYTJmMGJlMDRmODgyM2VkMTU2MDRlZDM0YzNjZTA0YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNzI2LDcgKzcyNiw3IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgU3RyaW5nIGNhY2hlUGFydGl0aW9uOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY2FjaGVQYXJ0aXRpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGNhY2hlUGFydGl0aW9u
KTsKKyAgICByZXNvdXJjZVJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oY2FjaGVQYXJ0aXRpb24s
IFJlc291cmNlUmVxdWVzdDo6Q2FjaGVQYXJ0aXRpb25Eb2VzTm90TmVlZFZhbGlkYXRpb24pOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240039</attachid>
            <date>2014-10-17 14:26:25 -0700</date>
            <delta_ts>2014-10-20 17:08:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137797-20141017142630.patch</filename>
            <type>text/plain</type>
            <size>4461</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NjZDNmY2Q4MzgzYmFj
NDkxMjNhN2M5YzkwOWM1NmRiN2JmZTBmOS4uMzg4Nzc1ZjNiNzkwNzY0ZWZmYzc2MGIwOGY4YWUy
ZDFhMTIzZWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTEwLTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRl
c2VyaWFsaXphdGlvbiB1bm5lY2Vzc2FyaWx5IGNhbGxzIHBhcnRpdGlvbk5hbWUoKSBvbiBlbmNv
ZGVkIGNhY2hlIHBhcnRpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3Nzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRlc2VyaWFsaXphdGlvbiB3YXMgdW5uZWNlc3Nh
cmlseSBjYWxsaW5nIHBhcnRpdGlvbk5hbWUoKQorICAgICAgICBvbiB0aGUgZGVjb2RlZCBjYWNo
ZSBwYXJ0aXRpb24uIEluIHRoZSBkZXNlcmlhbGl6YXRpb24gY2FzZSwgd2UgYWxyZWFkeQorICAg
ICAgICBrbm93IHRoZSBjYWNoZSBwYXJ0aXRpb24gaXMgYSB2YWxpZCBwYXJ0aXRpb24gbmFtZSBz
byB3ZSBjYW4gYnlwYXNzIHRoZQorICAgICAgICBjYWxsIHRvIHBhcnRpdGlvbk5hbWUoKSAod2hp
Y2ggaXMgZmFpcmx5IGV4cGVuc2l2ZSkgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhIHxuZWVkc1ZhbGlkYXRpb258IGFyZ3VtZW50IHRvCisgICAgICAgIFJlc291
cmNlUmVxdWVzdDo6c2V0Q2FjaGVQYXJ0aXRpb24oKSBzZXR0ZXIgc28gdGhhdCB0aGUgY2FsbGVy
IGNhbgorICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB2YWxpZCAo
YmVjYXVzZSBpdCB3YXMgYWxyZWFkeQorICAgICAgICBwcm9jZXNzZWQgYnkgcGFydGl0aW9uTmFt
ZSgpIGJlZm9yZSkuIFVzZSB0aGlzIG5ldyBhcmd1bWVudCBpbgorICAgICAgICBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZSgpIHRvIHNwZW50IGEgYml0IGxlc3MgdGltZQor
ICAgICAgICBkZXNlcmlhbGl6aW5nIHJlc291cmNlIHJlcXVlc3RzLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dDo6c2V0Q2FjaGVQYXJ0aXRpb24pOgorCiAyMDE0LTEwLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgU3R5
bGVJbWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDdjMzZiNjBlZTcyMDI3MWY2ZmM3Mjg1MTVhYTYyMDU4ZmM5
NDQ3ZTQuLmQ2MjA3NWQzYTU0NWJkMTlmYmRjYjE4Njg1Y2QwYzg5YmMxODNiMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNC0xMC0xNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlc291cmNlUmVxdWVzdCBkZXNlcmlhbGl6YXRpb24gdW5uZWNl
c3NhcmlseSBjYWxscyBwYXJ0aXRpb25OYW1lKCkgb24gZW5jb2RlZCBjYWNoZSBwYXJ0aXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzc5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBhIHxuZWVkc1ZhbGlkYXRpb258IGFyZ3VtZW50IHRvCisgICAgICAgIFJlc291cmNl
UmVxdWVzdDo6c2V0Q2FjaGVQYXJ0aXRpb24oKSBzZXR0ZXIgc28gdGhhdCB0aGUgY2FsbGVyIGNh
bgorICAgICAgICBpbmRpY2F0ZSB0aGF0IHRoZSBwYXJ0aXRpb24gbmFtZSBpcyB2YWxpZCAoYmVj
YXVzZSBpdCB3YXMgYWxyZWFkeQorICAgICAgICBwcm9jZXNzZWQgYnkgcGFydGl0aW9uTmFtZSgp
IGJlZm9yZSkuIFVzZSB0aGlzIG5ldyBhcmd1bWVudCBpbgorICAgICAgICBBcmd1bWVudENvZGVy
PFJlc291cmNlUmVxdWVzdD46OmRlY29kZSgpIHRvIHNwZW50IGEgYml0IGxlc3MgdGltZQorICAg
ICAgICBkZXNlcmlhbGl6aW5nIHJlc291cmNlIHJlcXVlc3RzLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKToKKwogMjAxNC0xMC0xNiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBUdXJuIG9mZiBmb250IGF1
dG9zaXppbmcgZm9yIGlPUyBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA4YzRhZTBkNGRi
M2ZmOTcxM2JkNzAxM2FkYWRkMjk0NGJhNWY5ODA4Li4yMzdhNDY1M2I3NGI5ZDZkNjg1NjdjNTMz
NDM2N2EyMjVmMmRiYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTk4LDggKzk4LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcGFydGl0aW9uTmFtZShjb25zdCBTdHJpbmcmIGRvbWFp
bik7CisgICAgICAgIGVudW0gQ2FjaGVQYXJ0aXRpb25OZWVkc1ZhbGlkYXRpb25Pck5vdCB7IENh
Y2hlUGFydGl0aW9uRG9lc05vdE5lZWRWYWxpZGF0aW9uLCBDYWNoZVBhcnRpdGlvbk5lZWRzVmFs
aWRhdGlvbiB9OworICAgICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uKGNvbnN0IFN0cmluZyYg
Y2FjaGVQYXJ0aXRpb24sIENhY2hlUGFydGl0aW9uTmVlZHNWYWxpZGF0aW9uT3JOb3QgbmVlZHNW
YWxpZGF0aW9uID0gQ2FjaGVQYXJ0aXRpb25OZWVkc1ZhbGlkYXRpb24pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fY2FjaGVQYXJ0aXRpb24gPSBuZWVkc1ZhbGlkYXRpb24gPyBwYXJ0aXRpb25O
YW1lKGNhY2hlUGFydGl0aW9uKSA6IGNhY2hlUGFydGl0aW9uOworICAgICAgICB9CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhY2hlUGFy
dGl0aW9uLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG1fY2FjaGVQYXJ0aXRpb247IH0KLSAg
ICAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9u
KSB7IG1fY2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25OYW1lKGNhY2hlUGFydGl0aW9uKTsgfQog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYTYwMWNh
ODVkNTA1MjVlNDE4OTA1OGI5MzA4M2E5ZjEzMGRhY2JmNS4uZGRlOGZiMWEyZjBiZTA0Zjg4MjNl
ZDE1NjA0ZWQzNGMzY2UwNGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVz
b3VyY2VSZQogICAgIFN0cmluZyBjYWNoZVBhcnRpdGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNhY2hlUGFydGl0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc291cmNl
UmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihjYWNoZVBhcnRpdGlvbik7CisgICAgcmVzb3VyY2VS
ZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGNhY2hlUGFydGl0aW9uLCBSZXNvdXJjZVJlcXVlc3Q6
OkNhY2hlUGFydGl0aW9uRG9lc05vdE5lZWRWYWxpZGF0aW9uKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240157</attachid>
            <date>2014-10-20 17:08:34 -0700</date>
            <delta_ts>2014-10-20 19:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137797-20141020170840.patch</filename>
            <type>text/plain</type>
            <size>17171</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmQwNWMyMTc0ODMwYTll
MzhlNjUyYzYyODU0MGEwMDkxZGNiMDE2MS4uM2ZhYTQ5M2NkNDllOTM1NjRjMjE5YjA4MTQ0ZTdk
ZTFmNWEyYzc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTEwLTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRl
c2VyaWFsaXphdGlvbiB1bm5lY2Vzc2FyaWx5IGNhbGxzIHBhcnRpdGlvbk5hbWUoKSBvbiBlbmNv
ZGVkIGNhY2hlIHBhcnRpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM3Nzk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IGRlc2VyaWFsaXphdGlvbiB3YXMgdW5uZWNlc3Nh
cmlseSBjYWxsaW5nIHBhcnRpdGlvbk5hbWUoKQorICAgICAgICBvbiB0aGUgZGVjb2RlZCBjYWNo
ZSBwYXJ0aXRpb24uIEluIHRoZSBkZXNlcmlhbGl6YXRpb24gY2FzZSwgd2UgYWxyZWFkeQorICAg
ICAgICBrbm93IHRoZSBjYWNoZSBwYXJ0aXRpb24gaXMgYSB2YWxpZCBwYXJ0aXRpb24gbmFtZSBz
byB3ZSBjYW4gYnlwYXNzIHRoZQorICAgICAgICBjYWxsIHRvIHBhcnRpdGlvbk5hbWUoKSAod2hp
Y2ggaXMgZmFpcmx5IGV4cGVuc2l2ZSkgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhIHNldERvbWFpbkZvckNhY2hlUGFydGlvbigpIG1ldGhvZCB0byBSZXNvdXJj
ZVJlcXVlc3QKKyAgICAgICAgdGhhdCBjYWxscyBwYXJ0aXRpb25OYW1lKCkgb24gdGhlIGRvbWFp
biBhcmd1bWVudCwgYW5kIG1vdmVzIGFsbCB0aGUKKyAgICAgICAgY2FsbGVycyBvZiBzZXRDYWNo
ZWRQYXJ0aXRpb24oKSB0byB0aGlzIG5ldyBzZXR0ZXIsIGV4Y2VwdAorICAgICAgICBBcmd1bWVu
dENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZSgpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dXBkYXRlcyB0aGUgc2V0Q2FjaGVkUGFydGl0aW9uKCkgdG8gbWVyZWx5IHNldCB0aGUKKyAgICAg
ICAgbV9jYWNoZVBhcnRpdGlvbiBtZW1iZXIsIHdpdGhvdXQgY2FsbGluZyBwYXJ0aXRpb25OYW1l
KCkgb24gdGhlCisgICAgICAgIGFyZ3VtZW50LiBUaGVyZSBpcyBhbHNvIGEgbmV3IGFzc2VydGlv
biBpbiBwbGFjZSB0byBtYWtlIHN1cmUgdGhlCisgICAgICAgIGFyZ3VtZW50IGlzIGEgdmFsaWQg
cGFydGl0aW9uIG5hbWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01V
Ukw6OnJldm9rZU9iamVjdFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJl
c291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIpOgor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2Vi
QXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNoZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6ZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNhY2hlUGFydGl0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIGNhY2hlUGFydGl0aW9uKCkgZ2V0dGVyIHRvIGRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKCkgdG8gbWFrZSBpdAorICAgICAgICBjbGVhciBpdCByZXR1cm5z
IGEgZG9tYWluIGFuZCBub3QgYSBwYXJ0aXRpb24gbmFtZS4gQXMgc3VjaCwgdGhlIGNhbGxlcgor
ICAgICAgICBzaG91bGQgdGhlbiB1c2UgUmVzb3VyY2VSZXF1ZXN0OjpzZXREb21haW5Gb3JDYWNo
ZVBhcnRpdGlvbigpLCBub3QKKyAgICAgICAgc2V0Q2FjaGVQYXJ0aXRpb24oKS4KKworICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRDYWNoZVBhcnRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnNl
dERvbWFpbkZvckNhY2hlUGFydGl0aW9uKToKKwogMjAxNC0xMC0yMCAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgYnVpbGQgZml4LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IGU4NTFhMDg2MGRhMTU0MDQ0OWM1NjEzYzNlZGQ0YjVkZjVhNDJmODQuLjNj
MTg2YTViZjNlNzcxNDNmOTkyNDZmYTIwMGE3NjBhYTRkNGY3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNC0xMC0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlc291cmNlUmVxdWVzdCBkZXNlcmlhbGl6YXRpb24gdW5uZWNlc3Nh
cmlseSBjYWxscyBwYXJ0aXRpb25OYW1lKCkgb24gZW5jb2RlZCBjYWNoZSBwYXJ0aXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzc5NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENhbGwgUmVzb3Vy
Y2VSZXF1ZXN0OjpzZXREb21haW5Gb3JQYXJ0aXRpb25OYW1lKCkgaW5zdGVhZCBvZgorICAgICAg
ICBzZXRQYXJ0aXRpb25OYW1lKCkgYXMgdGhlIGFyZ3VtZW50IGlzIGEgZG9tYWluLCBub3QgYSB2
YWxpZAorICAgICAgICBwYXJ0aXRpb24gbmFtZS4KKworICAgICAgICAqIE1pc2MvV2ViQ2FjaGUu
bW06CisgICAgICAgICgrW1dlYkNhY2hlIGFkZEltYWdlVG9DYWNoZTpmb3JVUkw6Zm9yRnJhbWU6
XSk6CisgICAgICAgICgrW1dlYkNhY2hlIHJlbW92ZUltYWdlRnJvbUNhY2hlRm9yVVJMOmZvckZy
YW1lOl0pOgorCiAyMDE0LTEwLTIwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaXggdGhlIGlPUyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NThkNWIzMTEzMTIwNTU4
YmYxOTcxNWM5OTZmZWE2NjBjNWQxYmFlLi5hMjdjYmU3ZDRhZTgyODhmNTBlMGRiNGRmNzhmOWNh
YmU4ZDA0YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTQtMTAtMTYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXNvdXJjZVJlcXVlc3QgZGVz
ZXJpYWxpemF0aW9uIHVubmVjZXNzYXJpbHkgY2FsbHMgcGFydGl0aW9uTmFtZSgpIG9uIGVuY29k
ZWQgY2FjaGUgcGFydGl0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSB8bmVlZHNWYWxpZGF0aW9ufCBhcmd1bWVudCB0
bworICAgICAgICBSZXNvdXJjZVJlcXVlc3Q6OnNldENhY2hlUGFydGl0aW9uKCkgc2V0dGVyIHNv
IHRoYXQgdGhlIGNhbGxlciBjYW4KKyAgICAgICAgaW5kaWNhdGUgdGhhdCB0aGUgcGFydGl0aW9u
IG5hbWUgaXMgdmFsaWQgKGJlY2F1c2UgaXQgd2FzIGFscmVhZHkKKyAgICAgICAgcHJvY2Vzc2Vk
IGJ5IHBhcnRpdGlvbk5hbWUoKSBiZWZvcmUpLiBVc2UgdGhpcyBuZXcgYXJndW1lbnQgaW4KKyAg
ICAgICAgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoKSB0byBzcGVudCBh
IGJpdCBsZXNzIHRpbWUKKyAgICAgICAgZGVzZXJpYWxpemluZyByZXNvdXJjZSByZXF1ZXN0cy4K
KworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlUmVxdWVzdD46OmRlY29kZSk6CisKIDIwMTQtMTAt
MjAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBhY3Rpb24gbWVudXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBkZDI4ZWUyMjUyMTJj
NjMzYWRiNTY3OTM3MDE3N2ZhNTVlYjYyYzc2Li4zNmZjODM1MTVmZGIwNjE3OGY4ZTVlYWE0NjFi
ODQ1ZDRiNDQyYTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAg
dm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjb24KICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwog
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKLSAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnRvcE9yaWdpbigpLT5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICByZXF1ZXN0LnNldERv
bWFpbkZvckNhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigp
LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgogICAgIE1lbW9yeUNhY2hlOjpy
ZW1vdmVSZXF1ZXN0RnJvbVNlc3Npb25DYWNoZXMoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVx
dWVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKaW5kZXggNDNjYTFjYWViZThmZjdjODRlNzZhM2M4ZTcxN2Q0NjJjMDliNzRhOS4uNWZk
MjI3Mjg4NjBmYzAzMmY5NGFjZGI1YWRhNGEwZjA2ZDk0MzdmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBA
QCBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpIHsKICAg
ICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFS
VElUSU9OSU5HKQotICAgICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGZyYW1lLT5kb2N1
bWVudCgpLT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Qu
c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigp
LT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgogICAgICAgICBjYWNoZWRSZXNv
dXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+
cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IGQ1YjlkMjk5NjE1MGQzNGU5
NGFhNWY2NGVlZWQ5N2FlZTgwYWQ1NjAuLmRjM2Q5Yjg5OTA5ZmRiZGIxYWNhNGQxN2ZhN2EwMzU0
YTNkMTg5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY5OCw3ICs2OTgsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
KQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoeGhyUmVwbGF5RGF0YS0+dXJsKCkpOwog
I2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRp
dGlvbihtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5j
YWNoZVBhcnRpdGlvbigpKTsKKyAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9u
KG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCiAKICAgICBDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwg
bV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggMjRkZDI4YWU0YTAzMWZjMzU3YmU0MzNiNDNlY2U2ZTIxNjMzOGQ3
Ni4uZmNiNTI0YTc2NWJjNDBjODY0YzYxMjBiOTAzOTNmNWIzNmFiNmE0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkVVJMKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBjb25zdCBTdHJpbgogICAgIH0KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAg
IGlmICgmbV9mcmFtZS50cmVlKCkudG9wKCkgIT0gJm1fZnJhbWUpCi0gICAgICAgIHJlcXVlc3Qu
c2V0Q2FjaGVQYXJ0aXRpb24obV9mcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24obV9mcmFtZS50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKICAgICBhZGRF
eHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCBuZXdMb2FkVHlwZSwgdHJ1ZSk7CiAgICAgaWYg
KG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlbG9hZCB8fCBuZXdMb2FkVHlwZSA9PSBG
cmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAwODAyNjgxNDdm
NDllOTBhZmYzYjAzN2NhOWVhM2FkOWExNzMxMjliLi4yNGNmNGJlZWRlZGY2ZTQzNmE5ZGU4MjRi
M2MzY2U1ZTk3Y2M5MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nCiAKICAgICAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dChzdWJyZXNvdXJjZVVSTCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAg
ICAgICAgICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGZyYW1lLT5kb2N1bWVudCgpLT50
b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihmcmFtZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkt
PmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JS
ZXF1ZXN0KHJlcXVlc3QsIGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDViYmYxMGZkOTFiY2ZkZjY0
NGNmZmI5ZTY4M2Y1YjM5NDkwODgwZDEuLjdjZjE4NmU1YTljYTAxZTI1MWI2MGVkMGUyZjBjYzY3
ZjkwNjYwYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNl
ckNTU1N0CiAgICAgVVJMIHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZp
ZXJJZk5lZWRlZChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKIAogI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0
KCkuc2V0Q2FjaGVQYXJ0aXRpb24oZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0
aW9uKCkpOworICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldERvbWFpbkZv
ckNhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5kb21haW5Gb3JDYWNoZVBh
cnRpdGlvbigpKTsKICNlbmRpZgogCiAgICAgaWYgKENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9
IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLCBzZXNzaW9uSUQoKSkpIHsKQEAgLTQzOSw3ICs0MzksNyBAQCBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJj
ZShDYWNoZQogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJj
ZTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGlmIChkb2N1bWVudCgpKQot
ICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRDYWNoZVBhcnRpdGlv
bihkb2N1bWVudCgpLT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgIHJl
cXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9u
KGRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNl
bmRpZgogCiAgICAgcmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3Qo
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggM2YyMzc4ZDUxYTZmN2Q1NmY4NmRl
NGE2N2Q0OWFmNTEyM2NkNTg0ZC4uYjlmZGIyYjQwZTYyZjhjNTljMjEwZGFhOTU0ODM2NDJkMTNl
NjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBA
IC0yMzMsMTEgKzIzMywxMSBAQCBzdGF0aWMgQ2FjaGVkSW1hZ2VDbGllbnQmIGR1bW15Q2FjaGVk
SW1hZ2VDbGllbnQoKQogICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLWJvb2wgTWVtb3J5Q2FjaGU6
OmFkZEltYWdlVG9DYWNoZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pCitib29sIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRv
Q2FjaGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7CiAgICAgU2Vz
c2lvbklEIHNlc3Npb25JRCA9IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIHJl
bW92ZUltYWdlRnJvbUNhY2hlKHVybCwgY2FjaGVQYXJ0aXRpb24pOyAvLyBSZW1vdmUgY2FjaGUg
ZW50cnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUodXJs
LCBkb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7IC8vIFJlbW92ZSBjYWNoZSBlbnRyeSBpZiBpdCBh
bHJlYWR5IGV4aXN0cy4KIAogICAgIFJlZlB0cjxCaXRtYXBJbWFnZT4gYml0bWFwSW1hZ2UgPSBC
aXRtYXBJbWFnZTo6Y3JlYXRlKGltYWdlLCBudWxscHRyKTsKICAgICBpZiAoIWJpdG1hcEltYWdl
KQpAQCAtMjUwLDIyICsyNTAsMjIgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hl
KE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3QKICAgICBjYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hl
ZEltYWdlLT5zZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYg
RU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBjYWNoZWRJbWFnZS0+cmVzb3VyY2VSZXF1
ZXN0KCkuc2V0Q2FjaGVQYXJ0aXRpb24oY2FjaGVQYXJ0aXRpb24pOworICAgIGNhY2hlZEltYWdl
LT5yZXNvdXJjZVJlcXVlc3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb21haW5Gb3JD
YWNoZVBhcnRpdGlvbik7CiAjZW5kaWYKICAgICByZXR1cm4gYWRkKGNhY2hlZEltYWdlLnJlbGVh
c2UoKSk7CiB9CiAKLXZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKQordm9pZCBNZW1vcnlDYWNo
ZTo6cmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZG9t
YWluRm9yQ2FjaGVQYXJ0aXRpb24pCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VNYXAmIHJlc291cmNl
cyA9IGdldFNlc3Npb25NYXAoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlOwog
ICAgIGlmIChDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSByZXNvdXJjZXMuZ2V0KHVybCkpCi0g
ICAgICAgIHJlc291cmNlID0gaXRlbS0+Z2V0KFJlc291cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFt
ZShjYWNoZVBhcnRpdGlvbikpOworICAgICAgICByZXNvdXJjZSA9IGl0ZW0tPmdldChSZXNvdXJj
ZVJlcXVlc3Q6OnBhcnRpdGlvbk5hbWUoZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pKTsKICAgICBl
bHNlCiAgICAgICAgIHJlc291cmNlID0gbnVsbHB0cjsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGNhY2hlUGFydGl0aW9uKTsKKyAgICBVTlVTRURfUEFSQU0oZG9tYWluRm9yQ2FjaGVQYXJ0aXRp
b24pOwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlc291cmNlcy5nZXQodXJsKTsK
ICNlbmRpZgogICAgIGlmICghcmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5oCmluZGV4IDQ5OThjZWQ3OWQ1MTU1MDRkNTBiYTFkOTFlZDg5NTEyYTZiMzgw
NzAuLjFiYmFkMWY0Mjg3YTQzNTBlZjBmZTk5NWQzYzIwZTFjYzNiMzZkZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC0xNzQsOCArMTc0LDggQEAgcHVi
bGljOgogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ug
d2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIgYSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0
Zm9ybXMgb3IKICAgICAvLyByZW1vdmUgdGhlIHVzYWdlIG9mIENGUmV0YWluKCkgaW4gTWVtb3J5
Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHNvIGFzIHRvIG1ha2UgdGhlIGNvZGUgcGxhdGZvcm0t
aW5kZXBlbmRlbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJbWFnZVRvQ2FjaGUoTmF0
aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbik7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBh
ZGRJbWFnZVRvQ2FjaGUoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
SW1hZ2VGcm9tQ2FjaGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYWNoZVBh
cnRpdGlvbik7CiAjZW5kaWYKIAogICAgIC8vIHBydW5lRGVhZCooKSAtIEZsdXNoIGRlY29kZWQg
YW5kIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBub3QgcmVmZXJlbmNlZCBieSBXZWIgcGFn
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDliMDhlNTFkMTg0
Y2FiN2ZkYTgyNzdiMDMyZGRmMzkxZjU5NmU1YTAuLjJjODhiMWNmZTMyMmUzZGFmN2YxNWM1NWJi
ZjdkNmI2MWU2Yjc1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC00MzQsNyArNDM0LDcgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6Z3JhbnRVbml2ZXJzYWxBY2Nl
c3MoKQogfQogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLVN0cmluZyBTZWN1cml0
eU9yaWdpbjo6Y2FjaGVQYXJ0aXRpb24oKSBjb25zdAorU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjpk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3RvcmFnZUJsb2Nr
aW5nUG9saWN5ICE9IEJsb2NrVGhpcmRQYXJ0eVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAppbmRleCA3NDRjOWQ4MzQ5YTA3
ZTkyZjA0M2VhODBjMmU0ZWE0OWFhYjkxZjMwLi5hZWU0ZjBkZjU1ODM1ZWY4NjJmZmE5MTIxZmJj
YmE3YmQxOTk3MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCkBAIC0xNDcs
NyArMTQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFN0
b3JhZ2VCbG9ja2luZ1BvbGljeSBwb2xpY3kpIHsgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBw
b2xpY3k7IH0KIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGNhY2hlUGFydGl0aW9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIGJv
b2wgY2FuQWNjZXNzRGF0YWJhc2UoY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbiA9IDAp
IGNvbnN0IHsgcmV0dXJuIGNhbkFjY2Vzc1N0b3JhZ2UodG9wT3JpZ2luKTsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCmlu
ZGV4IDhjNGFlMGQ0ZGIzZmY5NzEzYmQ3MDEzYWRhZGQyOTQ0YmE1Zjk4MDguLjI3YTZkNDE5YTE4
NzViY2FmODI5ZjdjMTg5YzQ3OGUyNDg1NDQwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtOTksNyArOTksMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgcGFydGl0aW9uTmFtZShjb25zdCBT
dHJpbmcmIGRvbWFpbik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlUGFydGl0aW9uLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6
IG1fY2FjaGVQYXJ0aXRpb247IH0KLSAgICAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlvbihjb25z
dCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKSB7IG1fY2FjaGVQYXJ0aXRpb24gPSBwYXJ0aXRpb25O
YW1lKGNhY2hlUGFydGl0aW9uKTsgfQorICAgICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uKGNv
bnN0IFN0cmluZyYgY2FjaGVQYXJ0aXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChjYWNoZVBhcnRpdGlvbiA9PSBwYXJ0aXRpb25OYW1lKGNhY2hlUGFydGl0aW9uKSk7CisgICAg
ICAgICAgICBtX2NhY2hlUGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb247CisgICAgICAgIH0KKyAg
ICAgICAgdm9pZCBzZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihjb25zdCBTdHJpbmcmIGRvbWFp
bikgeyBtX2NhY2hlUGFydGl0aW9uID0gcGFydGl0aW9uTmFtZShkb21haW4pOyB9CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZORVRXT1JLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViQ2FjaGUubW0KaW5kZXggNWIzZWIwMzM3NjRmMTMyZjRhZWZmMWQxN2JkNjkxZjM3ZTMxM2Zi
Ni4uMDIyMWM5OGU3NjU3MDk2NjM5Mjk4NTg5MTk5ZjdiYTY0ZTg0YmNjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYkNhY2hlLm1tCkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICBpZiAoZnJhbWUpCiAg
ICAgICAgIHRvcE9yaWdpbiA9IGNvcmUoZnJhbWUpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKTsK
ICNlbmRpZgotICAgIHJldHVybiBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5hZGRJbWFnZVRvQ2Fj
aGUoaW1hZ2UsIHVybCwgdG9wT3JpZ2luID8gdG9wT3JpZ2luLT5jYWNoZVBhcnRpdGlvbigpIDog
ZW1wdHlTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6Om1lbW9yeUNhY2hlKCktPmFkZElt
YWdlVG9DYWNoZShpbWFnZSwgdXJsLCB0b3BPcmlnaW4gPyB0b3BPcmlnaW4tPmRvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKCkgOiBlbXB0eVN0cmluZygpKTsKIH0KIAogKyAodm9pZClyZW1vdmVJbWFn
ZUZyb21DYWNoZUZvclVSTDooTlNVUkwgKil1cmwKQEAgLTE5Myw3ICsxOTMsNyBAQAogICAgIGlm
IChmcmFtZSkKICAgICAgICAgdG9wT3JpZ2luID0gY29yZShmcmFtZSktPmRvY3VtZW50KCktPnRv
cE9yaWdpbigpOwogI2VuZGlmCi0gICAgV2ViQ29yZTo6bWVtb3J5Q2FjaGUoKS0+cmVtb3ZlSW1h
Z2VGcm9tQ2FjaGUodXJsLCB0b3BPcmlnaW4gPyB0b3BPcmlnaW4tPmNhY2hlUGFydGl0aW9uKCkg
OiBlbXB0eVN0cmluZygpKTsKKyAgICBXZWJDb3JlOjptZW1vcnlDYWNoZSgpLT5yZW1vdmVJbWFn
ZUZyb21DYWNoZSh1cmwsIHRvcE9yaWdpbiA/IHRvcE9yaWdpbi0+ZG9tYWluRm9yQ2FjaGVQYXJ0
aXRpb24oKSA6IGVtcHR5U3RyaW5nKCkpOwogfQogCiArIChDR0ltYWdlUmVmKWltYWdlRm9yVVJM
OihOU1VSTCAqKXVybAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>