<?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>100990</bug_id>
          
          <creation_ts>2012-11-01 14:42:29 -0700</creation_ts>
          <short_desc>Only resolve presentation attribute style once per shared ElementAttributeData.</short_desc>
          <delta_ts>2012-11-14 13:58:50 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101198</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>756631</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-01 14:42:29 -0700</bug_when>
    <thetext>We should exploit the fact that ElementAttributeData may be shared between multiple elements and only resolve presentation attribute style once per ElementAttributeData instead of once per Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756636</commentid>
    <comment_count>1</comment_count>
      <attachid>171937</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-01 14:46:59 -0700</bug_when>
    <thetext>Created attachment 171937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756673</commentid>
    <comment_count>2</comment_count>
      <attachid>171937</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-01 15:17:13 -0700</bug_when>
    <thetext>Comment on attachment 171937
Patch

Actually, we can do better than that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757093</commentid>
    <comment_count>3</comment_count>
      <attachid>172033</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-02 04:33:03 -0700</bug_when>
    <thetext>Created attachment 172033
Cooler patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757095</commentid>
    <comment_count>4</comment_count>
      <attachid>172033</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-02 04:39:01 -0700</bug_when>
    <thetext>Comment on attachment 172033
Cooler patch

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

r=me

&gt; Source/WebCore/dom/ElementAttributeData.h:101
&gt; +    void setStyleAttributeIsDirty(bool f) const { m_styleAttributeIsDirty = f; }
&gt; +    bool presentationAttributeStyleIsDirty() const { return m_presentationAttributeStyleIsDirty; }
&gt; +    void setPresentationAttributeStyleIsDirty(bool f) const { m_presentationAttributeStyleIsDirty = f; }

f?!

&gt; Source/WebCore/dom/Node.h:714
&gt; -    // 2 bits remaining
&gt; +    // 4 bits remaining

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757102</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-02 04:53:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 172033 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172033&amp;action=review
&gt; &gt; Source/WebCore/dom/ElementAttributeData.h:101
&gt; &gt; +    void setStyleAttributeIsDirty(bool f) const { m_styleAttributeIsDirty = f; }
&gt; &gt; +    bool presentationAttributeStyleIsDirty() const { return m_presentationAttributeStyleIsDirty; }
&gt; &gt; +    void setPresentationAttributeStyleIsDirty(bool f) const { m_presentationAttributeStyleIsDirty = f; }
&gt; 
&gt; f?!

Yeah, I went there!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757114</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-02 05:11:10 -0700</bug_when>
    <thetext>Committed r133286: &lt;http://trac.webkit.org/changeset/133286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758354</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 02:15:39 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767201</commentid>
    <comment_count>8</comment_count>
      <attachid>174233</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-14 12:57:17 -0800</bug_when>
    <thetext>Created attachment 174233
Coolest(?) patch

Okay, let&apos;s try this again with a smaller scope: Just the presentation attribute style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767211</commentid>
    <comment_count>9</comment_count>
      <attachid>174233</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-14 13:04:42 -0800</bug_when>
    <thetext>Comment on attachment 174233
Coolest(?) patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767281</commentid>
    <comment_count>10</comment_count>
      <attachid>174233</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 13:58:46 -0800</bug_when>
    <thetext>Comment on attachment 174233
Coolest(?) patch

Clearing flags on attachment: 174233

Committed r134664: &lt;http://trac.webkit.org/changeset/134664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767282</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-14 13:58:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171937</attachid>
            <date>2012-11-01 14:46:59 -0700</date>
            <delta_ts>2012-11-02 04:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100990.diff</filename>
            <type>text/plain</type>
            <size>1947</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZDE2ZGFiLi44MTU2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTItMTEtMDEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIE9ubHkgcmVzb2x2ZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxlIG9uY2UgcGVyIHNo
YXJlZCBFbGVtZW50QXR0cmlidXRlRGF0YS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTAwOTkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEF2b2lkIHJlZHVuZGFudCB3b3JrIGluIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0
eWxlKCkgaWYgbV9hdHRyaWJ1dGVEYXRhIGlzIGltbXV0YWJsZQorICAgICAgICBhbmQgYW5vdGhl
ciBlbGVtZW50IGhhcyBhbHJlYWR5IHJlc29sdmVkIHRoZSBwcmVzZW50YXRpb24gYXR0cmlidXRl
cyBzdHlsZSBhbmQgY3JlYXRlZCBhdHRyaWJ1dGVTdHlsZSgpLgorCisgICAgICAgIEkndmUgbGVm
dCB0aGUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBjYWNoZSBpbiB0aGVyZSBmb3Igbm93LCBzaW5j
ZSBpdCBjb3ZlcnMgdHdvIGFkZGl0aW9uYWwgY2FzZXM6CisKKyAgICAgICAgICAgIC0gRWxlbWVu
dHMgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGluIGRpZmZlcmVudCBvcmRlci4KKyAgICAgICAg
ICAgIC0gRWxlbWVudHMgd2l0aCB0aGUgc2FtZSBwcmVzZW50YXRpb24gYXR0cmlidXRlcywgYnV0
IHdpdGggZGlmZmVyaW5nIG5vbi1wcmVzZW50YXRpb24gYXR0cmlidXRlcy4KKworICAgICAgICBJ
dCdzIGxpa2VseSB0aGF0IHdlJ3JlIG5vdCBnYWluaW5nIG11Y2ggZnJvbSBpdCBhbnltb3JlLCBi
dXQgdGhhdCdzIGEgdG9waWMgZm9yIGFub3RoZXIgcGF0Y2guCisKKyAgICAgICAgKiBkb20vU3R5
bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojp1cGRhdGVB
dHRyaWJ1dGVTdHlsZSk6CisKIDIwMTItMTEtMDEgIE1pY2hhZWwgTWF0b3Zza3kgIDxtbWF0b3Zz
a3lAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gV2ViIHBhZ2UgdmlldyBzdGF0ZSBz
aG91bGQgYmUgcHJlc2VydmVkIGZvciBwYWdlcyBsb2FkZWQgZnJvbSBwYWdlIGNhY2hlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTc2YWEyMi4uMjM2MGI5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjcyLDYgKzI3MiwxMSBAQCBzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZVByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlSGFzaChjb25zdCBQcmVz
ZW50YXRpb25BdHRyaWJ1dAogCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0
eWxlKCkKIHsKKyAgICAvLyBJZiBhdHRyaWJ1dGVEYXRhKCkgaXMgaW1tdXRhYmxlLCBjaGVjayBp
ZiBhbm90aGVyIGVsZW1lbnQgdGhhdCB3ZSdyZSBzaGFyaW5nIGl0IHdpdGggaGFzIGFscmVhZHkK
KyAgICAvLyBjcmVhdGVkIGFuIGF0dHJpYnV0ZVN0eWxlKCkgZm9yIGl0LgorICAgIGlmICghYXR0
cmlidXRlRGF0YSgpLT5pc011dGFibGUoKSAmJiBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0ZVN0
eWxlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
S2V5IGNhY2hlS2V5OwogICAgIG1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleShjYWNo
ZUtleSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172033</attachid>
            <date>2012-11-02 04:33:03 -0700</date>
            <delta_ts>2012-11-14 12:57:17 -0800</delta_ts>
            <desc>Cooler patch</desc>
            <filename>bug-100990-v2.diff</filename>
            <type>text/plain</type>
            <size>23451</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MTU2MGVmLi45MmMzYjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTItMTEtMDIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIE9ubHkgcmVzb2x2ZSBhdHRyaWJ1dGUtZGVyaXZlZCBzdHlsZSBvbmNlIHBlciBzaGFyZWQg
RWxlbWVudEF0dHJpYnV0ZURhdGEuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDk5
MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmFj
ayB0aGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgInN0eWxlIiBhdHRyaWJ1dGUsIGFuZCB0aGUgZGly
dGluZXNzIG9mIHRoZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxlCisgICAgICAgIG9uIEVs
ZW1lbnRBdHRyaWJ1dGVEYXRhIGluc3RlYWQgb2YgaW4gTm9kZSBmbGFncy4KKworICAgICAgICBU
aGlzIGFsbG93cyB1cyB0byBhdm9pZCBkdXBsaWNhdGUgd29yayBmb3IgRWxlbWVudEF0dHJpYnV0
ZURhdGEgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gbXVsdGlwbGUgZWxlbWVudHMsCisgICAgICAg
IHNpbmNlIHRoZSBzdGF0ZSBpcyBubyBsb25nZXIgcGVyLUVsZW1lbnQuCisKKyAgICAgICAgSSd2
ZSBsZWZ0IHRoZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIGNhY2hlIGluIHRoZXJlIGZvciBub3cs
IHNpbmNlIGl0IGNvdmVycyB0d28gYWRkaXRpb25hbCBjYXNlczoKKworICAgICAgICAgICAgLSBF
bGVtZW50cyB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgaW4gZGlmZmVyZW50IG9yZGVyLgorICAg
ICAgICAgICAgLSBFbGVtZW50cyB3aXRoIHRoZSBzYW1lIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGVz
LCBidXQgd2l0aCBkaWZmZXJpbmcgbm9uLXByZXNlbnRhdGlvbiBhdHRyaWJ1dGVzLgorCisgICAg
ICAgIEl0J3MgbGlrZWx5IHRoYXQgd2UncmUgbm90IGdhaW5pbmcgbXVjaCBmcm9tIGl0IGFueW1v
cmUsIGJ1dCB0aGF0J3MgYSB0b3BpYyBmb3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAqIGRv
bS9Ob2RlLmg6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OnNldFByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVE
YXRhOjpzdHlsZUF0dHJpYnV0ZUlzRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0
dHJpYnV0ZURhdGE6OnNldFN0eWxlQXR0cmlidXRlSXNEaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QXR0cmlidXRlRGF0YTo6cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpzZXRQcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZUlzRGlydHkpOgorICAgICAgICAoRWxlbWVudEF0dHJpYnV0ZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OkVsZW1lbnRBdHRyaWJ1
dGVEYXRhKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUlzRGlydHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6dXBkYXRlSW52YWxpZEF0dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9T
dHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0
ZVN0eWxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c3R5bGVBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmlubGluZVN0
eWxlQ2hhbmdlZCk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OmludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSk6CisKKyAgICAg
ICAgICAgIE1vdmUgdGhlICJhdHRyaWJ1dGUgc3R5bGUgZGlydHkiIGFuZCAic3R5bGUgYXR0cmli
dXRlIHZhbGlkIiBub2RlIGZsYWdzIHRvIEVsZW1lbnRBdHRyaWJ1dGVEYXRhCisgICAgICAgICAg
ICBhbmQgY2hhbmdlIHRoZW0gdG8gYm90aCB1c2UgZGlydHkgc2VtYW50aWNzLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRBdHRyaWJ1dGVEYXRhOjpjbG9uZURhdGFGcm9tKToKKworICAgICAgICAgICAgU2hhcmUgdGhl
IHByZXNlbnRhdGlvbiBhdHRyaWJ1dGUgc3R5bGUgYmV0d2VlbiBjbG9uZWQgZWxlbWVudHMgaW5p
dGlhbGx5LgorCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZEVsZW1lbnQ6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojpzd2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBbGxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmli
dXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlRWxlbWVudEF0dHJpYnV0ZURh
dGE6Ok11dGFibGVFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUpOgorCisgICAgICAgICAgICBSZW5h
bWVkIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZVN0eWxlKCkgdG8gcHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKS4gVGhlIG9sZCBuYW1lIHdhcyB0b28KKyAgICAgICAgICAgIGVhc2lseSBjb25m
dXNlZCB3aXRoICJzdHlsZSBhdHRyaWJ1dGUiLgorCisgICAgICAgICogZG9tL1N0eWxlZEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cmVidWlsZFByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKToKKworICAgICAgICAgICAgUmVuYW1lZCBmcm9tIHVwZGF0ZUF0
dHJpYnV0ZVN0eWxlKCkuCisKIDIwMTItMTEtMDEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIE9ubHkgcmVzb2x2ZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0
eWxlIG9uY2UgcGVyIHNoYXJlZCBFbGVtZW50QXR0cmlidXRlRGF0YS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcAppbmRleCBiNDg0ZTE2Li5iYjRkZmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgU3R5bGVSZXNvbHZlcjo6flN0
eWxlUmVzb2x2ZXIoKQogdm9pZCBTdHlsZVJlc29sdmVyOjpzd2VlcE1hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUoVGltZXI8U3R5bGVSZXNvbHZlcj4qKQogewogICAgIC8vIExvb2sgZm9yIGNhY2hlIGVu
dHJpZXMgY29udGFpbmluZyBhIHN0eWxlIGRlY2xhcmF0aW9uIHdpdGggYSBzaW5nbGUgcmVmIGFu
ZCByZW1vdmUgdGhlbS4KLSAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhbiBlbGVtZW50IGF0
dHJpYnV0ZSBtdXRhdGlvbiBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBuZXcgYXR0cmlidXRlU3R5
bGUoKSwKKyAgICAvLyBUaGlzIG1heSBoYXBwZW4gd2hlbiBhbiBlbGVtZW50IGF0dHJpYnV0ZSBt
dXRhdGlvbiBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgYSBuZXcgcHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGUoKSwKICAgICAvLyBwb3RlbnRpYWxseSBsZWF2aW5nIHRoaXMgY2FjaGUgd2l0aCB0aGUg
bGFzdCByZWYgb24gdGhlIG9sZCBvbmUuCiAgICAgVmVjdG9yPHVuc2lnbmVkLCAxNj4gdG9SZW1v
dmU7CiAgICAgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZTo6aXRlcmF0b3IgaXQgPSBtX21hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGUuYmVnaW4oKTsKQEAgLTkyNyw3ICs5MjcsNyBAQCB2b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hdGNoQWxsUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlU01J
TFByb3BlcnRpZQogICAgICAgICAKICAgICAvLyBOb3cgY2hlY2sgYXV0aG9yIHJ1bGVzLCBiZWdp
bm5pbmcgZmlyc3Qgd2l0aCBwcmVzZW50YXRpb25hbCBhdHRyaWJ1dGVzIG1hcHBlZCBmcm9tIEhU
TUwuCiAgICAgaWYgKG1fc3R5bGVkRWxlbWVudCkgewotICAgICAgICBhZGRFbGVtZW50U3R5bGVQ
cm9wZXJ0aWVzKHJlc3VsdCwgbV9zdHlsZWRFbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpKTsKKyAg
ICAgICAgYWRkRWxlbWVudFN0eWxlUHJvcGVydGllcyhyZXN1bHQsIG1fc3R5bGVkRWxlbWVudC0+
cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSk7CiAKICAgICAgICAgLy8gTm93IHdlIGNoZWNr
IGFkZGl0aW9uYWwgbWFwcGVkIGRlY2xhcmF0aW9ucy4KICAgICAgICAgLy8gVGFibGVzIGFuZCB0
YWJsZSBjZWxscyBzaGFyZSBhbiBhZGRpdGlvbmFsIG1hcHBlZCBydWxlIHRoYXQgbXVzdCBiZSBh
cHBsaWVkCkBAIC0xMTc5LDcgKzExNzksNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJl
U3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIGlmIChl
bGVtZW50LT5pc1NWR0VsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oZWxlbWVu
dCktPmFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKLSAgICBpZiAoISFlbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpICE9ICEhbV9zdHls
ZWRFbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpKQorICAgIGlmICghIWVsZW1lbnQtPnByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkgIT0gISFtX3N0eWxlZEVsZW1lbnQtPnByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjb25zdCBTdHlsZVBy
b3BlcnR5U2V0KiBhZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVBID0gZWxlbWVudC0+YWRkaXRpb25h
bEF0dHJpYnV0ZVN0eWxlKCk7CiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogYWRkaXRpb25h
bEF0dHJpYnV0ZVN0eWxlQiA9IG1fc3R5bGVkRWxlbWVudC0+YWRkaXRpb25hbEF0dHJpYnV0ZVN0
eWxlKCk7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJl
U3R5bGVXaXRoRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LT5hdHRyaWJ1dGVTdHls
ZSgpICYmICFhdHRyaWJ1dGVTdHlsZXNFcXVhbChlbGVtZW50LT5hdHRyaWJ1dGVTdHlsZSgpLCBt
X3N0eWxlZEVsZW1lbnQtPmF0dHJpYnV0ZVN0eWxlKCkpKQorICAgIGlmIChlbGVtZW50LT5wcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpICYmICFhdHRyaWJ1dGVTdHlsZXNFcXVhbChlbGVtZW50
LT5wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpLCBtX3N0eWxlZEVsZW1lbnQtPnByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlQSAmJiAhYXR0cmlidXRlU3R5bGVzRXF1YWwoYWRkaXRp
b25hbEF0dHJpYnV0ZVN0eWxlQSwgYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlQikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggMTBjNzkwYy4uNGRkZjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtMjU5LDcgKzI1OSw3IEBAIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6
Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYg
KFVOTElLRUxZKG5hbWUgPT0gc3R5bGVBdHRyKSAmJiAhaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkp
CisgICAgaWYgKFVOTElLRUxZKG5hbWUgPT0gc3R5bGVBdHRyKSAmJiBzdHlsZUF0dHJpYnV0ZUlz
RGlydHkoKSkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKIAogI2lmIEVOQUJMRShT
VkcpCkBAIC02MTcsNyArNjE3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIGJvb2wgaWdub3Jl
Q2FzZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcyk7CiAKICAgICAvLyBVcGRhdGUg
dGhlICdzdHlsZScgYXR0cmlidXRlIGlmIGl0J3MgaW52YWxpZCBhbmQgYmVpbmcgcmVxdWVzdGVk
OgotICAgIGlmICghaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgJiYgZXF1YWxQb3NzaWJseUlnbm9y
aW5nQ2FzZShuYW1lLCBzdHlsZUF0dHIubG9jYWxOYW1lKCksIGlnbm9yZUNhc2UpKQorICAgIGlm
IChzdHlsZUF0dHJpYnV0ZUlzRGlydHkoKSAmJiBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5h
bWUsIHN0eWxlQXR0ci5sb2NhbE5hbWUoKSwgaWdub3JlQ2FzZSkpCiAgICAgICAgIHVwZGF0ZVN0
eWxlQXR0cmlidXRlKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
MTQ4NTcwMy4uZjgxMzkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zLDcgKzMsNyBAQAogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDY4LDYg
KzQ2OCw4IEBAIHByb3RlY3RlZDoKICAgICAvLyBzdmdBdHRyaWJ1dGVDaGFuZ2VkIChjYWxsZWQg
d2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsdWUgaXMgc2V0KQogICAgIHZvaWQgY2xhc3NB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpOwogCisg
ICAgYm9vbCBzdHlsZUF0dHJpYnV0ZUlzRGlydHkoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBBdHRyIHRvIGNhbGwgd2lsbE1vZGlmeUF0dHJp
YnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAgZnJpZW5kIGNsYXNzIEF0dHI7CkBAIC03MzEs
OSArNzMzLDE0IEBAIGlubGluZSBBdHRyaWJ1dGUqIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZUl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKICAgICByZXR1cm4gbXV0YWJsZUF0dHJpYnV0ZURh
dGEoKS0+Z2V0QXR0cmlidXRlSXRlbShuYW1lKTsKIH0KIAoraW5saW5lIGJvb2wgRWxlbWVudDo6
c3R5bGVBdHRyaWJ1dGVJc0RpcnR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdHRyaWJ1dGVE
YXRhICYmIG1fYXR0cmlidXRlRGF0YS0+c3R5bGVBdHRyaWJ1dGVJc0RpcnR5KCk7Cit9CisKIGlu
bGluZSB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUludmFsaWRBdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAg
ICBpZiAoIWlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpKQorICAgIGlmIChzdHlsZUF0dHJpYnV0ZUlz
RGlydHkoKSkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKIAogI2lmIEVOQUJMRShT
VkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAppbmRleCBh
MjE2OWZiLi5lYTM1ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRl
RGF0YS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTXV0YWJsZUVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpN
dXRhYmxlRWxlbWVudEF0dHJpYnV0ZURhdGEoY29uc3QgSW1tdXRhYmxlRWxlbWVudEEKICAgICBj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSYgYmFzZU90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
RWxlbWVudEF0dHJpYnV0ZURhdGEmPihvdGhlcik7CiAKICAgICBtX2lubGluZVN0eWxlRGVjbCA9
IGJhc2VPdGhlci5tX2lubGluZVN0eWxlRGVjbDsKLSAgICBtX2F0dHJpYnV0ZVN0eWxlID0gYmFz
ZU90aGVyLm1fYXR0cmlidXRlU3R5bGU7CisgICAgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZSA9IGJhc2VPdGhlci5tX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwogICAgIG1fY2xhc3NO
YW1lcyA9IGJhc2VPdGhlci5tX2NsYXNzTmFtZXM7CiAgICAgbV9pZEZvclN0eWxlUmVzb2x1dGlv
biA9IGJhc2VPdGhlci5tX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwogCkBAIC0yNzcsNyArMjc3LDcg
QEAgdm9pZCBFbGVtZW50QXR0cmlidXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykKICAgICBzaXplX3QgYWN0dWFsU2l6ZSA9IG1faXNN
dXRhYmxlID8gc2l6ZW9mKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKSA6IHNpemVGb3JJbW11dGFibGVF
bGVtZW50QXR0cmlidXRlRGF0YVdpdGhBdHRyaWJ1dGVDb3VudChtX2FycmF5U2l6ZSk7CiAgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpET00sIGFjdHVhbFNpemUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5saW5lU3R5
bGVEZWNsKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2F0dHJpYnV0ZVN0eWxlKTsKKyAgICBpbmZv
LmFkZE1lbWJlcihtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKTsKICAgICBpbmZvLmFkZE1l
bWJlcihtX2NsYXNzTmFtZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1faWRGb3JTdHlsZVJlc29s
dXRpb24pOwogICAgIGlmIChtX2lzTXV0YWJsZSkKQEAgLTM0MSwxMCArMzQxLDE4IEBAIHZvaWQg
RWxlbWVudEF0dHJpYnV0ZURhdGE6OmNsb25lRGF0YUZyb20oY29uc3QgRWxlbWVudEF0dHJpYnV0
ZURhdGEmIHNvdXJjZURhdGEsCiAgICAgICAgIHRhcmdldEVsZW1lbnQuYXR0cmlidXRlQ2hhbmdl
ZChhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CiAgICAgfQogCi0gICAgaWYg
KHRhcmdldEVsZW1lbnQuaXNTdHlsZWRFbGVtZW50KCkgJiYgc291cmNlRGF0YS5tX2lubGluZVN0
eWxlRGVjbCkgeworICAgIGlmICghdGFyZ2V0RWxlbWVudC5pc1N0eWxlZEVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSBzb3VyY2VEYXRh
Lm1fc3R5bGVBdHRyaWJ1dGVJc0RpcnR5OworICAgIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGVJc0RpcnR5ID0gc291cmNlRGF0YS5tX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0
eTsKKworICAgIC8vIENsb25lIHRoZSBzb3VyY2UgZWxlbWVudCdzIGlubGluZSBzdHlsZSB1bmxl
c3MgaXQncyBpbW11dGFibGUuCisgICAgaWYgKHNvdXJjZURhdGEubV9pbmxpbmVTdHlsZURlY2wp
CiAgICAgICAgIG1faW5saW5lU3R5bGVEZWNsID0gc291cmNlRGF0YS5tX2lubGluZVN0eWxlRGVj
bC0+aW1tdXRhYmxlQ29weUlmTmVlZGVkKCk7Ci0gICAgICAgIHRhcmdldEVsZW1lbnQuc2V0SXNT
dHlsZUF0dHJpYnV0ZVZhbGlkKHNvdXJjZUVsZW1lbnQuaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkp
OwotICAgIH0KKworICAgIC8vIFNoYXJlIHRoZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxl
IChubyBuZWVkIGZvciBjbG9uaW5nIHNpbmNlIGl0J3Mgbm90IGFjY2Vzc2libGUgdmlhIENTU09N
LikKKyAgICBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlID0gc291cmNlRGF0YS5tX3ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwogfQogCiB2b2lkIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpj
bGVhckF0dHJpYnV0ZXMoRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggODQ3ZDM5OS4uY2Y5NDM5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKQEAgLTYzLDggKzYzLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZGVzdHJveUlubGluZVN0eWxlKFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIGRl
dGFjaENTU09NV3JhcHBlcklmTmVlZGVkKFN0eWxlZEVsZW1lbnQqKTsKIAotICAgIGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1
dGVTdHlsZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0QXR0cmlidXRlU3R5bGUoUGFzc1JlZlB0cjxT
dHlsZVByb3BlcnR5U2V0PiBzdHlsZSkgY29uc3QgeyBtX2F0dHJpYnV0ZVN0eWxlID0gc3R5bGU7
IH0KKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKFBhc3NSZWZQdHI8U3R5bGVQ
cm9wZXJ0eVNldD4gc3R5bGUpIGNvbnN0IHsgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZT0g
c3R5bGU7IH0KIAogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdDsKICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbGVuZ3RoKCk7IH0KQEAgLTk1LDYgKzk1LDExIEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoRWxlbWVudCosIGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdDsKICAgICB2b2lkIGRldGFjaEF0dHJPYmplY3RzRnJvbUVsZW1lbnQoRWxl
bWVudCopIGNvbnN0OwogCisgICAgYm9vbCBzdHlsZUF0dHJpYnV0ZUlzRGlydHkoKSBjb25zdCB7
IHJldHVybiBtX3N0eWxlQXR0cmlidXRlSXNEaXJ0eTsgfQorICAgIHZvaWQgc2V0U3R5bGVBdHRy
aWJ1dGVJc0RpcnR5KGJvb2wgZikgY29uc3QgeyBtX3N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IGY7
IH0KKyAgICBib29sIHByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5OyB9CisgICAgdm9pZCBz
ZXRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoYm9vbCBmKSBjb25zdCB7IG1fcHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5ID0gZjsgfQorCiAgICAgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBib29sIGlzTXV0YWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNdXRhYmxlOyB9CkBAIC0xMDMsMTkgKzEwOCwyNSBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEoKQogICAgICAgICA6
IG1faXNNdXRhYmxlKHRydWUpCisgICAgICAgICwgbV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkoZmFs
c2UpCisgICAgICAgICwgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2Up
CiAgICAgICAgICwgbV9hcnJheVNpemUoMCkKICAgICB7IH0KIAogICAgIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhKHVuc2lnbmVkIGFycmF5U2l6ZSkKICAgICAgICAgOiBtX2lzTXV0YWJsZShmYWxzZSkK
KyAgICAgICAgLCBtX3N0eWxlQXR0cmlidXRlSXNEaXJ0eShmYWxzZSkKKyAgICAgICAgLCBtX3By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eShmYWxzZSkKICAgICAgICAgLCBtX2FycmF5
U2l6ZShhcnJheVNpemUpCiAgICAgeyB9CiAKICAgICB1bnNpZ25lZCBtX2lzTXV0YWJsZSA6IDE7
CisgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3N0eWxlQXR0cmlidXRlSXNEaXJ0eSA6IDE7CisgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eSA6IDE7
CiAgICAgdW5zaWduZWQgbV9hcnJheVNpemUgOiAzMTsKIAogICAgIG11dGFibGUgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IG1faW5saW5lU3R5bGVEZWNsOwotICAgIG11dGFibGUgUmVmUHRyPFN0
eWxlUHJvcGVydHlTZXQ+IG1fYXR0cmlidXRlU3R5bGU7CisgICAgbXV0YWJsZSBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZTsKICAgICBtdXRhYmxl
IFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwogICAgIG11dGFibGUgQXRvbWljU3RyaW5n
IG1faWRGb3JTdHlsZVJlc29sdXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGY5OWFlMmEuLjU3ODYx
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtOTksNyArOTksNyBAQCBjbGFzcyBQcm9wZXJ0eU5vZGVMaXN0
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jb25zdCBpbnQgbm9kZVN0eWxlQ2hh
bmdlU2hpZnQgPSAyMDsKK2NvbnN0IGludCBub2RlU3R5bGVDaGFuZ2VTaGlmdCA9IDE5OwogCiAv
LyBTeW50aGV0aWNTdHlsZUNoYW5nZSBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0
aGUgZW50aXJlIHN0eWxlIGNoYW5nZSBsb2dpYyBldmVuIHRob3VnaAogLy8gbm8gc3R5bGUgcHJv
cGVydHkgaGFzIGFjdHVhbGx5IGNoYW5nZWQuIEl0IGlzIHVzZWQgdG8gcmVzdHJ1Y3R1cmUgdGhl
IHRyZWUgd2hlbiwgZm9yIGluc3RhbmNlLApAQCAtMzA3LDcgKzMwNyw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNl
cyhib29sIC8qIGVycm9yIGxvYWRpbmcgc3VicmVzb3VyY2UgKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKLSAgICBib29sIGF0dHJpYnV0ZVN0eWxlRGlydHkoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KEF0dHJpYnV0ZVN0eWxlRGlydHlGbGFnKTsgfQogICAgIGJvb2wgaGFzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSGFzTmFtZUZsYWcpOyB9CiAgICAgYm9vbCBoYXNJRCgpIGNvbnN0Owog
ICAgIGJvb2wgaGFzQ2xhc3MoKSBjb25zdDsKQEAgLTMyMyw5ICszMjIsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKENo
aWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAgICAgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJl
dHVybiBnZXRGbGFnKElzTGlua0ZsYWcpOyB9CiAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZVN0eWxl
RGlydHkoKSB7IHNldEZsYWcoQXR0cmlidXRlU3R5bGVEaXJ0eUZsYWcpOyB9Ci0gICAgdm9pZCBj
bGVhckF0dHJpYnV0ZVN0eWxlRGlydHkoKSB7IGNsZWFyRmxhZyhBdHRyaWJ1dGVTdHlsZURpcnR5
RmxhZyk7IH0KLQogICAgIHZvaWQgc2V0SGFzTmFtZShib29sIGYpIHsgc2V0RmxhZyhmLCBIYXNO
YW1lRmxhZyk7IH0KICAgICB2b2lkIHNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHsgc2V0Rmxh
ZyhDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnKTsgfQogICAgIHZvaWQgY2xlYXJDaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSB7IGNsZWFyRmxhZyhDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnKTsgfQpA
QCAtNjkwLDM0ICs2ODYsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUg
dXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAg
ICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRz
IGFib3ZlLgogICAgICAgICBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyA9IDEgPDwgMTUs
IC8vIEVsZW1lbnQKLSAgICAgICAgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyA9IDEgPDwgMTYs
IC8vIFN0eWxlZEVsZW1lbnQKICNpZiBFTkFCTEUoU1ZHKQotICAgICAgICBBcmVTVkdBdHRyaWJ1
dGVzVmFsaWRGbGFnID0gMSA8PCAxNywgLy8gRWxlbWVudAotICAgICAgICBJc1N5bmNocm9uaXpp
bmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMTgsIC8vIFNWR0VsZW1lbnQKLSAgICAgICAgSGFz
U1ZHUmFyZURhdGFGbGFnID0gMSA8PCAxOSwgLy8gU1ZHRWxlbWVudAorICAgICAgICBBcmVTVkdB
dHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAxNiwgLy8gRWxlbWVudAorICAgICAgICBJc1N5bmNo
cm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMTcsIC8vIFNWR0VsZW1lbnQKKyAgICAg
ICAgSGFzU1ZHUmFyZURhdGFGbGFnID0gMSA8PCAxOCwgLy8gU1ZHRWxlbWVudAogI2VuZGlmCiAK
ICAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFuZ2VTaGlmdCB8IDEg
PDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCiAKLSAgICAgICAgU2VsZk9yQW5jZXN0b3JI
YXNEaXJBdXRvRmxhZyA9IDEgPDwgMjIsCisgICAgICAgIFNlbGZPckFuY2VzdG9ySGFzRGlyQXV0
b0ZsYWcgPSAxIDw8IDIxLAogCi0gICAgICAgIEhhc05hbWVGbGFnID0gMSA8PCAyMywKKyAgICAg
ICAgSGFzTmFtZUZsYWcgPSAxIDw8IDIyLAogCi0gICAgICAgIEF0dHJpYnV0ZVN0eWxlRGlydHlG
bGFnID0gMSA8PCAyNCwKIAogI2lmIEVOQUJMRShTVkcpCi0gICAgICAgIERlZmF1bHROb2RlRmxh
Z3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVWYWxp
ZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnLAorICAgICAgICBEZWZhdWx0Tm9kZUZs
YWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFs
aWRGbGFnLAogI2Vsc2UKLSAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxk
cmVuRmluaXNoZWRGbGFnIHwgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZywKKyAgICAgICAgRGVm
YXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnLAogI2VuZGlmCi0g
ICAgICAgIEluTmFtZWRGbG93RmxhZyA9IDEgPDwgMjYsCi0gICAgICAgIEhhc0F0dHJMaXN0Rmxh
ZyA9IDEgPDwgMjcsCi0gICAgICAgIEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDI4LAot
ICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDI5LAotICAgICAgICBI
YXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAzMCwKKyAgICAgICAgSW5OYW1lZEZsb3dGbGFn
ID0gMSA8PCAyMywKKyAgICAgICAgSGFzQXR0ckxpc3RGbGFnID0gMSA8PCAyNCwKKyAgICAgICAg
SGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjUsCisgICAgICAgIEhhc1Njb3BlZEhUTUxT
dHlsZUNoaWxkRmxhZyA9IDEgPDwgMjYsCisgICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcg
PSAxIDw8IDI3LAogICAgIH07CiAKLSAgICAvLyAyIGJpdHMgcmVtYWluaW5nCisgICAgLy8gNCBi
aXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25zdCB7
IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZsYWcoYm9vbCBmLCBO
b2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5tYXNr
KSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtODEzLDEyICs4MDcsNiBAQCBwcml2YXRl
OgogICAgIE5vZGUqIG1fbmV4dDsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAKLXB1
YmxpYzoKLSAgICBib29sIGlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyk7IH0KLSAgICB2b2lkIHNldElzU3R5bGVB
dHRyaWJ1dGVWYWxpZChib29sIGYpIHsgc2V0RmxhZyhmLCBJc1N0eWxlQXR0cmlidXRlVmFsaWRG
bGFnKTsgfQotICAgIHZvaWQgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgY29uc3QgeyBzZXRG
bGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcpOyB9Ci0gICAgdm9pZCBjbGVhcklzU3R5bGVB
dHRyaWJ1dGVWYWxpZCgpIHsgY2xlYXJGbGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcpOyB9
Ci0KIHByb3RlY3RlZDoKICAgICBib29sIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSBjb25z
dCB7IHJldHVybiBnZXRGbGFnKElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnKTsgfQogICAg
IHZvaWQgc2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpIHsgc2V0RmxhZyhJc1BhcnNpbmdD
aGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApp
bmRleCAyMzYwYjlmLi5jZWNhZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
CkBAIC0xMjYsMTAgKzEyNiwxMSBAQCBzdGF0aWMgUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVD
bGVhbmVyJiBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuZXIoKQogCiB2b2lkIFN0eWxl
ZEVsZW1lbnQ6OnVwZGF0ZVN0eWxlQXR0cmlidXRlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoIWlz
U3R5bGVBdHRyaWJ1dGVWYWxpZCgpKTsKLSAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoKTsK
LSAgICBpZiAoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSB0aGlzLT5pbmxp
bmVTdHlsZSgpKQotICAgICAgICBjb25zdF9jYXN0PFN0eWxlZEVsZW1lbnQqPih0aGlzKS0+c2V0
U3luY2hyb25pemVkTGF6eUF0dHJpYnV0ZShzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5hc1RleHQo
KSk7CisgICAgQVNTRVJUKHN0eWxlQXR0cmlidXRlSXNEaXJ0eSgpKTsKKyAgICBBU1NFUlQoYXR0
cmlidXRlRGF0YSgpKTsKKyAgICBhdHRyaWJ1dGVEYXRhKCktPnNldFN0eWxlQXR0cmlidXRlSXNE
aXJ0eShmYWxzZSk7CisgICAgaWYgKGlubGluZVN0eWxlKCkpCisgICAgICAgIGNvbnN0X2Nhc3Q8
U3R5bGVkRWxlbWVudCo+KHRoaXMpLT5zZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKHN0eWxl
QXR0ciwgaW5saW5lU3R5bGUoKS0+YXNUZXh0KCkpOwogfQogCiBTdHlsZWRFbGVtZW50OjpTdHls
ZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1bWVudCwg
Q29uc3RydWN0aW9uVHlwZSB0eXBlKQpAQCAtMTUxLDcgKzE1Miw3IEBAIENTU1N0eWxlRGVjbGFy
YXRpb24qIFN0eWxlZEVsZW1lbnQ6OnN0eWxlKCkKIHZvaWQgU3R5bGVkRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKQogewogICAgIGlmIChpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lKSkgewot
ICAgICAgICBzZXRBdHRyaWJ1dGVTdHlsZURpcnR5KCk7CisgICAgICAgIGF0dHJpYnV0ZURhdGEo
KS0+c2V0UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5KHRydWUpOwogICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKICAgICB9CiAKQEAgLTE2OCw3
ICsxNjksOCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnN0eWxlQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1N0eWxlU3RyaW5nLCBTaAogICAgICAgICAgICAgbXV0YWJsZUF0
dHJpYnV0ZURhdGEoKS0+ZGVzdHJveUlubGluZVN0eWxlKHRoaXMpOwogICAgICAgICBlbHNlIGlm
IChkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVTdHlsZShk
b2N1bWVudCgpLT51cmwoKSwgc3RhcnRMaW5lTnVtYmVyKSkKICAgICAgICAgICAgIGVuc3VyZUF0
dHJpYnV0ZURhdGEoKS0+dXBkYXRlSW5saW5lU3R5bGVBdm9pZGluZ011dGF0aW9uKHRoaXMsIG5l
d1N0eWxlU3RyaW5nKTsKLSAgICAgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7CisKKyAg
ICAgICAgYXR0cmlidXRlRGF0YSgpLT5zZXRTdHlsZUF0dHJpYnV0ZUlzRGlydHkoZmFsc2UpOwog
ICAgIH0KICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCksIHRoaXMpOwpAQCAtMTg1
LDcgKzE4Nyw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ2hhbmdl
ZCgpCiB7CiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhJbmxpbmVTdHlsZUNoYW5nZSk7Ci0gICAg
c2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKGZhbHNlKTsKKyAgICBhdHRyaWJ1dGVEYXRhKCktPnNl
dFN0eWxlQXR0cmlidXRlSXNEaXJ0eSh0cnVlKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CiAgICAgCkBA
IC0yNzAsMTMgKzI3Miw4IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHJlc2VudGF0aW9uQXR0
cmlidXRlQ2FjaGVIYXNoKGNvbnN0IFByZXNlbnRhdGlvbkF0dHJpYnV0CiAgICAgcmV0dXJuIFdU
Rjo6cGFpckludEhhc2goa2V5LnRhZ05hbWUtPmV4aXN0aW5nSGFzaCgpLCBhdHRyaWJ1dGVIYXNo
KTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCit2b2lk
IFN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiB7Ci0g
ICAgLy8gSWYgYXR0cmlidXRlRGF0YSgpIGlzIGltbXV0YWJsZSwgY2hlY2sgaWYgYW5vdGhlciBl
bGVtZW50IHRoYXQgd2UncmUgc2hhcmluZyBpdCB3aXRoIGhhcyBhbHJlYWR5Ci0gICAgLy8gY3Jl
YXRlZCBhbiBhdHRyaWJ1dGVTdHlsZSgpIGZvciBpdC4KLSAgICBpZiAoIWF0dHJpYnV0ZURhdGEo
KS0+aXNNdXRhYmxlKCkgJiYgYXR0cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSBjYWNoZUtl
eTsKICAgICBtYWtlUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkoY2FjaGVLZXkpOwogCkBA
IC0zMDIsOSArMjk5LDkgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHls
ZSgpCiAgICAgICAgICAgICBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoKmF0dHJpYnV0ZSwgc3R5
bGUuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQotICAgIGNsZWFyQXR0cmlidXRlU3R5bGVEaXJ0
eSgpOwogCi0gICAgYXR0cmlidXRlRGF0YSgpLT5zZXRBdHRyaWJ1dGVTdHlsZShzdHlsZS0+aXNF
bXB0eSgpID8gMCA6IHN0eWxlKTsKKyAgICBhdHRyaWJ1dGVEYXRhKCktPnNldFByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eShmYWxzZSk7CisgICAgYXR0cmlidXRlRGF0YSgpLT5zZXRQ
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHlsZS0+aXNFbXB0eSgpID8gMCA6IHN0eWxlKTsK
IAogICAgIGlmICghY2FjaGVIYXNoIHx8IGNhY2hlSXRlcmF0b3ItPnZhbHVlKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCBjZjU5ZWQxLi5lMDcxM2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgIAogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBPVkVSUklE
RTsKIAotICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGF0dHJpYnV0ZVN0eWxlKCk7CisgICAg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiwgU3R5bGVQcm9wZXJ0eVNldCopIHsgfQogCkBAIC03OCwxOSArNzgsMjIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogCiAgICAgdm9pZCBtYWtlUHJlc2VudGF0
aW9uQXR0cmlidXRlQ2FjaGVLZXkoUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkmKSBjb25z
dDsKLSAgICB2b2lkIHVwZGF0ZUF0dHJpYnV0ZVN0eWxlKCk7CisgICAgdm9pZCByZWJ1aWxkUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKIH07CiAKIGlubGluZSB2b2lkIFN0eWxlZEVsZW1l
bnQ6OmludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpCiB7Ci0gICAgY2xlYXJJc1N0eWxlQXR0cmli
dXRlVmFsaWQoKTsKKyAgICBBU1NFUlQoYXR0cmlidXRlRGF0YSgpKTsKKyAgICBhdHRyaWJ1dGVE
YXRhKCktPnNldFN0eWxlQXR0cmlidXRlSXNEaXJ0eSh0cnVlKTsKIH0KIAotaW5saW5lIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZVN0eWxlKCkKK2lubGlu
ZSBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBTdHlsZWRFbGVtZW50OjpwcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZSgpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZVN0eWxlRGlydHkoKSkKLSAgICAgICAg
dXBkYXRlQXR0cmlidXRlU3R5bGUoKTsKLSAgICByZXR1cm4gYXR0cmlidXRlRGF0YSgpID8gYXR0
cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpIDogMDsKKyAgICBpZiAoIWF0dHJpYnV0ZURh
dGEoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGF0dHJpYnV0ZURhdGEoKS0+cHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5KCkpCisgICAgICAgIHJlYnVpbGRQcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZSgpOworICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCktPnByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCk7CiB9CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDVjZDljNjAuLjU3ZmRk
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cApAQCAtMTE4NCwxMSArMTE4NCwxMSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dAogICAgIGlm
ICghZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCogYXR0cmlidXRlU3R5bGUgPSBzdGF0aWNfY2FzdDxTdHls
ZWRFbGVtZW50Kj4oZWxlbWVudCktPmF0dHJpYnV0ZVN0eWxlKCk7Ci0gICAgaWYgKCFhdHRyaWJ1
dGVTdHlsZSkKKyAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcmVzZW50YXRpb25BdHRyaWJ1
dGVTdHlsZSA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+cHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKTsKKyAgICBpZiAoIXByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JTdHlsZT4gaW5zcGVj
dG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKEluc3BlY3RvckNTU0lkKCksIGNvbnN0
X2Nhc3Q8U3R5bGVQcm9wZXJ0eVNldCo+KGF0dHJpYnV0ZVN0eWxlKS0+ZW5zdXJlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpLCAwKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0
eWxlID0gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JDU1NJZCgpLCBjb25zdF9jYXN0
PFN0eWxlUHJvcGVydHlTZXQqPihwcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSktPmVuc3VyZUNT
U1N0eWxlRGVjbGFyYXRpb24oKSwgMCk7CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWls
ZE9iamVjdEZvclN0eWxlKCk7CiB9CiAK
</data>
<flag name="review"
          id="186191"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174233</attachid>
            <date>2012-11-14 12:57:17 -0800</date>
            <delta_ts>2012-11-14 13:58:46 -0800</delta_ts>
            <desc>Coolest(?) patch</desc>
            <filename>bug-100990-v2.diff</filename>
            <type>text/plain</type>
            <size>8651</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOGMxNzI5Li4wNWIwZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTItMTEtMTQgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIE9ubHkgcmVzb2x2ZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxlIG9uY2UgcGVyIHNo
YXJlZCBFbGVtZW50QXR0cmlidXRlRGF0YS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTAwOTkwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRyYWNrIHRoZSAicHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBzdHlsZSBkaXJ0eSIgc3RhdGUgb24g
RWxlbWVudEF0dHJpYnV0ZURhdGEgaW5zdGVhZCBvZiBpbiBhIE5vZGUgZmxhZy4KKyAgICAgICAg
VGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgZHVwbGljYXRlIHdvcmsgZm9yIEVsZW1lbnRBdHRyaWJ1
dGVEYXRhIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIG11bHRpcGxlIGVsZW1lbnRzLAorICAgICAg
ICBzaW5jZSB0aGUgc3RhdGUgaXMgbm8gbG9uZ2VyIHBlci1FbGVtZW50LgorCisgICAgICAgIEkn
dmUgbGVmdCB0aGUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBjYWNoZSBpbiB0aGVyZSBmb3Igbm93
LCBzaW5jZSBpdCBzdGlsbCBjb3ZlcnMgdGhlIGNhc2Ugd2hlcmUKKyAgICAgICAgdHdvIGVsZW1l
bnRzIGhhdmUgdGhlIHNhbWUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMgYnV0IGRpZmZlcmVudCBu
b24tcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCisgICAgICAgIEl0J3MgbGlrZWx5IHRoYXQgd2Un
cmUgbm90IGdhaW5pbmcgbXVjaCBmcm9tIGl0IGFueW1vcmUsIGJ1dCB0aGF0J3MgYSB0b3BpYyBm
b3IgYW5vdGhlciBwYXRjaC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cmVi
dWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OkVs
ZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBkb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50QXR0cmli
dXRlRGF0YSk6CisgICAgICAgIChFbGVtZW50QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9t
L05vZGUuaDoKKworICAgICAgICAgICAgTW92ZSBwcmVzZW50YXRpb24gYXR0cmlidXRlIHN0eWxl
IGRpcnR5IGZsYWcgZnJvbSBOb2RlIHRvIEVsZW1lbnRBdHRyaWJ1dGVEYXRhLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNFbGVt
ZW50QXR0cmlidXRlRGF0YSk6CisKKyAgICAgICAgICAgIEFkZCBhIGNvbXBpbGUtdGltZSBvYmpl
Y3Qgc2l6ZSBhc3NlcnRpb24gZm9yIEVsZW1lbnRBdHRyaWJ1dGVEYXRhLgorCisgICAgICAgICog
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZCk6CisKKyAgICAgICAgICAgIERvbid0IG1hcmsgdGhlIHByZXNlbnRh
dGlvbiBhdHRyaWJ1dGUgc3R5bGUgZGlydHkgaWYgdGhlIGVsZW1lbnQgaXMgdXNpbmcgYW4gaW1t
dXRhYmxlIChpbXBsaWVzCisgICAgICAgICAgICBzaGFyZWQpIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
IGFuZCBhbm90aGVyIGVsZW1lbnQgaGFzIGFscmVhZHkgZ2VuZXJhdGVkIHRoZSBTdHlsZVByb3Bl
cnR5U2V0LgorICAgICAgICAgICAgVGhlIGVsZW1lbnQgaXRzZWxmIGlzIHN0aWxsIG1hcmtlZCBm
b3Igc3R5bGUgcmVjYWxjIGxpa2UgYmVmb3JlLCB0aGlzIGp1c3QgYXZvaWRzIHRoZSBwcm9jZXNz
CisgICAgICAgICAgICBvZiBjb252ZXJ0aW5nIHRoZSBhdHRyaWJ1dGVzIHRvIENTUyBwcm9wZXJ0
aWVzLgorCiAyMDEyLTExLTE0ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtRdF0gVXNlIGEgbm9kZSBpbWFnZSBpZiB0aGVyZSBpcyBubyBkcmFn
IGltYWdlIHNldCBmb3IgRHJhZyZEcm9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcAppbmRleCBkYzgxMzQ3Li5iYTkxYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTMxLDYgKzMxLDEzIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RydWN0IFNhbWVTaXplQXNFbGVtZW50QXR0cmlidXRlRGF0YSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXplQXNFbGVtZW50QXR0cmlidXRlRGF0YT4geworICAg
IHVuc2lnbmVkIGJpdGZpZWxkOworICAgIHZvaWQqIHJlZlB0cnNbNF07Cit9OworCitDT01QSUxF
X0FTU0VSVChzaXplb2YoRWxlbWVudEF0dHJpYnV0ZURhdGEpID09IHNpemVvZihFbGVtZW50QXR0
cmlidXRlRGF0YSksIGVsZW1lbnRfYXR0cmlidXRlX2RhdGFfc2hvdWxkX3N0YXlfc21hbGwpOwor
CiBzdGF0aWMgc2l6ZV90IHNpemVGb3JJbW11dGFibGVFbGVtZW50QXR0cmlidXRlRGF0YVdpdGhB
dHRyaWJ1dGVDb3VudCh1bnNpZ25lZCBjb3VudCkKIHsKICAgICByZXR1cm4gc2l6ZW9mKEltbXV0
YWJsZUVsZW1lbnRBdHRyaWJ1dGVEYXRhKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoQXR0cmli
dXRlKSAqIGNvdW50OwpAQCAtNzUsNiArODIsNyBAQCBJbW11dGFibGVFbGVtZW50QXR0cmlidXRl
RGF0YTo6SW1tdXRhYmxlRWxlbWVudEF0dHJpYnV0ZURhdGEoY29uc3QgTXV0YWJsZUVsZW1lbgog
RWxlbWVudEF0dHJpYnV0ZURhdGE6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhKGNvbnN0IEVsZW1lbnRB
dHRyaWJ1dGVEYXRhJiBvdGhlciwgYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShp
c011dGFibGUpCiAgICAgLCBtX2FycmF5U2l6ZShpc011dGFibGUgPyAwIDogb3RoZXIubGVuZ3Ro
KCkpCisgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eShvdGhlci5tX3By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eSkKICAgICAsIG1fcHJlc2VudGF0aW9uQXR0
cmlidXRlU3R5bGUob3RoZXIubV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSkKICAgICAsIG1f
Y2xhc3NOYW1lcyhvdGhlci5tX2NsYXNzTmFtZXMpCiAgICAgLCBtX2lkRm9yU3R5bGVSZXNvbHV0
aW9uKG90aGVyLm1faWRGb3JTdHlsZVJlc29sdXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50QXR0cmlidXRlRGF0YS5oCmluZGV4IDdkOGM2NjguLjVkYThkYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oCkBAIC04OCwxNyArODgsMjAgQEAgcHJvdGVj
dGVkOgogICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKCkKICAgICAgICAgOiBtX2lzTXV0YWJsZSh0
cnVlKQogICAgICAgICAsIG1fYXJyYXlTaXplKDApCisgICAgICAgICwgbV9wcmVzZW50YXRpb25B
dHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2UpCiAgICAgeyB9CiAKICAgICBFbGVtZW50QXR0cmli
dXRlRGF0YSh1bnNpZ25lZCBhcnJheVNpemUpCiAgICAgICAgIDogbV9pc011dGFibGUoZmFsc2Up
CiAgICAgICAgICwgbV9hcnJheVNpemUoYXJyYXlTaXplKQorICAgICAgICAsIG1fcHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5KGZhbHNlKQogICAgIHsgfQogCiAgICAgRWxlbWVudEF0
dHJpYnV0ZURhdGEoY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEmLCBib29sIGlzTXV0YWJsZSk7
CiAKICAgICB1bnNpZ25lZCBtX2lzTXV0YWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9hcnJheVNp
emUgOiAzMTsKKyAgICB1bnNpZ25lZCBtX2FycmF5U2l6ZSA6IDMwOworICAgIG11dGFibGUgdW5z
aWduZWQgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkgOiAxOwogCiAgICAgbXV0
YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9pbmxpbmVTdHlsZTsKICAgICBtdXRhYmxl
IFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggMzA4MjgxYS4uYjYzMjNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zMTksNyAr
MzE5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFs
bENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgLyogZXJyb3IgbG9hZGluZyBzdWJyZXNvdXJjZSAq
LykgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAotICAgIGJvb2wgYXR0cmlidXRlU3R5bGVEaXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIGdldEZsYWcoUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVEaXJ0eUZsYWcp
OyB9CiAgICAgYm9vbCBoYXNOYW1lKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNOYW1lRmxh
Zyk7IH0KICAgICBib29sIGhhc0lEKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0
OwpAQCAtMzM1LDkgKzMzNCw2IEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7
IH0KICAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNMaW5rRmxhZyk7
IH0KIAotICAgIHZvaWQgc2V0UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVEaXJ0eSgpIHsgc2V0
RmxhZyhQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZURpcnR5RmxhZyk7IH0KLSAgICB2b2lkIGNs
ZWFyUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVEaXJ0eSgpIHsgY2xlYXJGbGFnKFByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlRGlydHlGbGFnKTsgfQotCiAgICAgdm9pZCBzZXRIYXNOYW1lKGJv
b2wgZikgeyBzZXRGbGFnKGYsIEhhc05hbWVGbGFnKTsgfQogICAgIHZvaWQgc2V0Q2hpbGROZWVk
c1N0eWxlUmVjYWxjKCkgeyBzZXRGbGFnKENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CiAg
ICAgdm9pZCBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHsgY2xlYXJGbGFnKENoaWxkTmVl
ZHNTdHlsZVJlY2FsY0ZsYWcpOyB9CkBAIC03MjYsMjIgKzcyMiwyMSBAQCBwcml2YXRlOgogCiAg
ICAgICAgIEhhc05hbWVGbGFnID0gMSA8PCAyMywKIAotICAgICAgICBQcmVzZW50YXRpb25BdHRy
aWJ1dGVTdHlsZURpcnR5RmxhZyA9IDEgPDwgMjQsCisgICAgICAgIEluTmFtZWRGbG93RmxhZyA9
IDEgPDwgMjQsCisgICAgICAgIEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyA9IDEgPDwg
MjUsCisgICAgICAgIEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDI2LAorICAgICAgICBI
YXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDI3LAorICAgICAgICBIYXNFdmVudFRh
cmdldERhdGFGbGFnID0gMSA8PCAyOCwKKyAgICAgICAgSW5FZGVuRmxhZyA9IDEgPDwgMjksCiAK
ICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hp
bGRyZW5GaW5pc2hlZEZsYWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0
cmlidXRlc1ZhbGlkRmxhZywKICNlbHNlCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcsCiAj
ZW5kaWYKLSAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0gMSA8PCAyNiwKLSAgICAgICAgSGFzU3lu
dGhldGljQXR0ckNoaWxkTm9kZXNGbGFnID0gMSA8PCAyNywKLSAgICAgICAgSGFzQ3VzdG9tQ2Fs
bGJhY2tzRmxhZyA9IDEgPDwgMjgsCi0gICAgICAgIEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkRmxh
ZyA9IDEgPDwgMjksCi0gICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDMwLAot
ICAgICAgICBJbkVkZW5GbGFnID0gMSA8PCAzMQogICAgIH07CiAKLSAgICAvLyAxIGJpdCByZW1h
aW5pbmcKKyAgICAvLyAyIGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZsYWcoTm9kZUZs
YWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAgIHZvaWQg
c2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzID0gKG1f
bm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMmEwMzQ1ZC4uYzQ5N2I4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMTYzLDcgKzE2Myw5IEBAIFN0eWxlUHJvcGVydHlT
ZXQqIFN0eWxlZEVsZW1lbnQ6OmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSgpCiB2b2lkIFN0eWxl
ZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBpZiAoaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUobmFtZSkpIHsKLSAgICAgICAgc2V0UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVEaXJ0
eSgpOworICAgICAgICAvLyBBdm9pZCBkaXJ0eWluZyB0aGUgcHJlc2VudGF0aW9uIGF0dHJpYnV0
ZSBzdHlsZSBpZiB3ZSdyZSB1c2luZyBzaGFyZWQgYXR0cmlidXRlIGRhdGEgd2l0aCBhbHJlYWR5
IGdlbmVyYXRlZCBzdHlsZS4KKyAgICAgICAgaWYgKGF0dHJpYnV0ZURhdGEoKS0+aXNNdXRhYmxl
KCkgfHwgIWF0dHJpYnV0ZURhdGEoKS0+bV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSkKKyAg
ICAgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+bV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlz
RGlydHkgPSB0cnVlOwogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hh
bmdlKTsKICAgICB9CiAKQEAgLTMzOCw4ICszNDAsOCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJl
YnVpbGRQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAgICAgICAgICAgICBjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoKmF0dHJpYnV0ZSwgc3R5bGUuZ2V0KCkpOwogICAg
ICAgICB9CiAgICAgfQotICAgIGNsZWFyUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGVEaXJ0eSgp
OwogCisgICAgYXR0cmlidXRlRGF0YSgpLT5tX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNE
aXJ0eSA9IGZhbHNlOwogICAgIGF0dHJpYnV0ZURhdGEoKS0+c2V0UHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoc3R5bGUtPmlzRW1wdHkoKSA/IDAgOiBzdHlsZSk7CiAKICAgICBpZiAoIWNhY2hl
SGFzaCB8fCBjYWNoZUl0ZXJhdG9yLT52YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5o
CmluZGV4IDgzMzQ1MjEuLjA0NGM3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApA
QCAtOTAsOSArOTAsMTEgQEAgaW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6aW52YWxpZGF0ZVN0
eWxlQXR0cmlidXRlKCkKIAogaW5saW5lIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIFN0eWxlZEVs
ZW1lbnQ6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkKIHsKLSAgICBpZiAoYXR0cmlidXRl
U3R5bGVEaXJ0eSgpKQorICAgIGlmICghYXR0cmlidXRlRGF0YSgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoYXR0cmlidXRlRGF0YSgpLT5tX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
SXNEaXJ0eSkKICAgICAgICAgcmVidWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7Ci0g
ICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEoKSA/IGF0dHJpYnV0ZURhdGEoKS0+cHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGUoKSA6IDA7CisgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEoKS0+cHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKIH0KIAogfSAvL25hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>