<?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>108726</bug_id>
          
          <creation_ts>2013-02-01 17:09:54 -0800</creation_ts>
          <short_desc>Call XSSAuditor&apos;s didBlockScript() for the threaded HTML parser</short_desc>
          <delta_ts>2013-02-06 09:51:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108963</dependson>
          <blocked>106127</blocked>
    
    <blocked>107603</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Gentilcore">tonyg</reporter>
          <assigned_to name="Tony Gentilcore">tonyg</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>dbates</cc>
    
    <cc>jberlin</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>823441</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-01 17:09:54 -0800</bug_when>
    <thetext>Call XSSAuditor&apos;s didBlockScript() for the threaded HTML parser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823444</commentid>
    <comment_count>1</comment_count>
      <attachid>186189</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-01 17:12:01 -0800</bug_when>
    <thetext>Created attachment 186189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823445</commentid>
    <comment_count>2</comment_count>
      <attachid>186189</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-01 17:14:07 -0800</bug_when>
    <thetext>Comment on attachment 186189
Patch

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

&gt; Source/WebCore/html/parser/XSSAuditorDelegate.cpp:44
&gt; +    return isStringSafeToSendToAnotherThread(m_reportURL.string())

I&apos;m skeptical this is going to work but am not sure what to do here. Is it going to be safe to send KURL across threads? How do we ASSERT that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>823585</commentid>
    <comment_count>3</comment_count>
      <attachid>186189</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-02 00:15:50 -0800</bug_when>
    <thetext>Comment on attachment 186189
Patch

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

&gt; Source/WebCore/html/parser/CompactHTMLToken.cpp:98
&gt; +    *m_didBlockScriptRequest = *other.didBlockScriptRequest();

This doesn&apos;t seem right.  OwnPtr isn&apos;t copyable.  We need to implement some sort of fancier VectorTraits to teach Vector how to move the CompactHTMLToken.  There should be examples already in the codebase of how to do this.

&gt; Source/WebCore/html/parser/CompactHTMLToken.h:80
&gt; +    DidBlockScriptRequest* didBlockScriptRequest() const;

The &quot;did&quot; in this function name is very strange.  Can we rename DidBlockScriptRequest to XSSInfo ?

&gt;&gt; Source/WebCore/html/parser/XSSAuditorDelegate.cpp:44
&gt;&gt; +    return isStringSafeToSendToAnotherThread(m_reportURL.string())
&gt; 
&gt; I&apos;m skeptical this is going to work but am not sure what to do here. Is it going to be safe to send KURL across threads? How do we ASSERT that?

Maybe we should add a isSafeToSendToAnotherThread function to KURL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824733</commentid>
    <comment_count>4</comment_count>
      <attachid>186454</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-04 14:00:25 -0800</bug_when>
    <thetext>Created attachment 186454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824735</commentid>
    <comment_count>5</comment_count>
      <attachid>186189</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-04 14:01:05 -0800</bug_when>
    <thetext>Comment on attachment 186189
Patch

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

&gt;&gt; Source/WebCore/html/parser/CompactHTMLToken.cpp:98
&gt;&gt; +    *m_didBlockScriptRequest = *other.didBlockScriptRequest();
&gt; 
&gt; This doesn&apos;t seem right.  OwnPtr isn&apos;t copyable.  We need to implement some sort of fancier VectorTraits to teach Vector how to move the CompactHTMLToken.  There should be examples already in the codebase of how to do this.

From RenderGeometryMap.h, it looks like SimpleClassVectorTraits does the trick.

&gt;&gt; Source/WebCore/html/parser/CompactHTMLToken.h:80
&gt;&gt; +    DidBlockScriptRequest* didBlockScriptRequest() const;
&gt; 
&gt; The &quot;did&quot; in this function name is very strange.  Can we rename DidBlockScriptRequest to XSSInfo ?

Done

&gt;&gt;&gt; Source/WebCore/html/parser/XSSAuditorDelegate.cpp:44
&gt;&gt;&gt; +    return isStringSafeToSendToAnotherThread(m_reportURL.string())
&gt;&gt; 
&gt;&gt; I&apos;m skeptical this is going to work but am not sure what to do here. Is it going to be safe to send KURL across threads? How do we ASSERT that?
&gt; 
&gt; Maybe we should add a isSafeToSendToAnotherThread function to KURL?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825116</commentid>
    <comment_count>6</comment_count>
      <attachid>186454</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-04 21:32:26 -0800</bug_when>
    <thetext>Comment on attachment 186454
Patch

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

&gt; Source/WebCore/html/parser/CompactHTMLToken.h:102
&gt; +// This is required for a struct with OwnPtr. We know CompactHTMLToken is simple enough that
&gt; +// initializing to 0 and moving with memcpy (and then not destructing the original) will work.
&gt; +template&lt;&gt; struct VectorTraits&lt;WebCore::CompactHTMLToken&gt; : SimpleClassVectorTraits { };

If you have this declaration, do you need the CompactHTMLToken copy constructor?  If not, we should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825592</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-05 10:21:25 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 186454 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186454&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/CompactHTMLToken.h:102
&gt; &gt; +// This is required for a struct with OwnPtr. We know CompactHTMLToken is simple enough that
&gt; &gt; +// initializing to 0 and moving with memcpy (and then not destructing the original) will work.
&gt; &gt; +template&lt;&gt; struct VectorTraits&lt;WebCore::CompactHTMLToken&gt; : SimpleClassVectorTraits { };
&gt; 
&gt; If you have this declaration, do you need the CompactHTMLToken copy constructor?  If not, we should remove it.

Yes. It doesn&apos;t compile without the copy ctor. Even with this declaration we still need a way to teach it to copy the structure that the OwnPtr points to, which is where the copy ctor comes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825593</commentid>
    <comment_count>8</comment_count>
      <attachid>186653</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-05 10:21:45 -0800</bug_when>
    <thetext>Created attachment 186653
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825653</commentid>
    <comment_count>9</comment_count>
      <attachid>186653</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 11:08:02 -0800</bug_when>
    <thetext>Comment on attachment 186653
Patch for landing

Clearing flags on attachment: 186653

Committed r141905: &lt;http://trac.webkit.org/changeset/141905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825654</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 11:08:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825669</commentid>
    <comment_count>11</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2013-02-05 11:35:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; All reviewed patches have been landed.  Closing bug.

This is causing build breakage:

http://build.webkit.org/builders/Apple%20Lion%20Debug%20%28Build%29/builds/11613/steps/compile-webkit/logs/stdio

Undefined symbols for architecture x86_64:
  &quot;__ZNK3WTF6String27isSafeToSendToAnotherThreadEv&quot;, referenced from:
      __ZNK7WebCore4KURL27isSafeToSendToAnotherThreadEv in KURL.o
      __ZNK7WebCore7XSSInfo27isSafeToSendToAnotherThreadEv in XSSAuditorDelegate.o

Please fix this soon or we will need to roll it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825671</commentid>
    <comment_count>12</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-05 11:37:43 -0800</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 is causing build breakage:
&gt; 
&gt; http://build.webkit.org/builders/Apple%20Lion%20Debug%20%28Build%29/builds/11613/steps/compile-webkit/logs/stdio
&gt; 
&gt; Undefined symbols for architecture x86_64:
&gt;   &quot;__ZNK3WTF6String27isSafeToSendToAnotherThreadEv&quot;, referenced from:
&gt;       __ZNK7WebCore4KURL27isSafeToSendToAnotherThreadEv in KURL.o
&gt;       __ZNK7WebCore7XSSInfo27isSafeToSendToAnotherThreadEv in XSSAuditorDelegate.o
&gt; 
&gt; Please fix this soon or we will need to roll it out.

I&apos;m on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825675</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 11:41:12 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 108963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825986</commentid>
    <comment_count>14</comment_count>
      <attachid>186738</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2013-02-05 18:12:11 -0800</bug_when>
    <thetext>Created attachment 186738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826514</commentid>
    <comment_count>15</comment_count>
      <attachid>186738</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 09:51:44 -0800</bug_when>
    <thetext>Comment on attachment 186738
Patch

Clearing flags on attachment: 186738

Committed r142004: &lt;http://trac.webkit.org/changeset/142004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826515</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 09:51:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186189</attachid>
            <date>2013-02-01 17:12:01 -0800</date>
            <delta_ts>2013-02-04 14:01:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108726-20130201170844.patch</filename>
            <type>text/plain</type>
            <size>12984</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZjOThlY2NlYTM5NmJi
MGFlMTNiMDYyY2QxMGQ1ZGU1MGY4ZWVmNi4uMWZiMGRhN2RmMmYzMzJlYTAyNmU4MjVkYzExOTJi
NDU3Zjg3OTBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAyLTAxICBUb255
IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FsbCBYU1NBdWRp
dG9yJ3MgZGlkQmxvY2tTY3JpcHQoKSBmb3IgdGhlIHRocmVhZGVkIEhUTUwgcGFyc2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3MjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBkb24ndCB5ZXQg
cG9wdWxhdGUgZGlkQmxvY2tTY3JpcHRSZXF1ZXN0IG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwg
YnV0IHRoaXMgc2hvdWxkIGp1c3Qgd29yayBvbmNlIHdlIGRvLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHA6CisgICAgICAgIChTYW1lU2l6ZUFzQ29tcGFjdEhUTUxU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpkaWRC
bG9ja1NjcmlwdFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wYWN0SFRNTFRva2VuOjpzZXREaWRCbG9ja1NjcmlwdFJlcXVlc3QpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoQ29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJv
Y2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3RyaW5nU2FmZVRv
U2VuZFRvQW5vdGhlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlkQmxvY2tTY3JpcHRSZXF1ZXN0Ojppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yRGVsZWdhdGU6OmRp
ZEJsb2NrU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUu
aDoKKyAgICAgICAgKERpZEJsb2NrU2NyaXB0UmVxdWVzdCk6CisgICAgICAgIChYU1NBdWRpdG9y
RGVsZWdhdGUpOgorCiAyMDEzLTAyLTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBjYWxscyB0byBEYXRhYmFzZVRyYWNrZXI6OmFkZC9yZW1vdmVP
cGVuRGF0YWJhc2UoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Nv
bXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhU
TUxUb2tlbi5jcHAKaW5kZXggYTFhMjdmMjA1YTQyYmRjNGY3MmFmNWM5ODY2Y2ZlNWEwYTVjOTMw
Mi4uZTI2YjY1Y2ExYmE3ZjE2YzZhNjgyNWQ3NGE1NWJmOGZhNTllNjMxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKQEAgLTI5LDcgKzI5
LDkgQEAKIAogI2luY2x1ZGUgIkNvbXBhY3RIVE1MVG9rZW4uaCIKIAorI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJYU1NBdWRp
dG9yRGVsZWdhdGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw2ICs0MCw3IEBA
IHN0cnVjdCBTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiAgewogICAgIFN0cmluZyBuYW1lOwog
ICAgIFZlY3RvcjxDb21wYWN0QXR0cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRl
eHRQb3NpdGlvbjsKKyAgICBPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiByZXF1ZXN0Owog
fTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbXBhY3RIVE1MVG9rZW4pID09IHNpemVvZihT
YW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbiksIENvbXBhY3RIVE1MVG9rZW5fc2hvdWxkX3N0YXlf
c21hbGwpOwpAQCAtODYsMTYgKzg5LDEzIEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1M
VG9rZW4oY29uc3QgSFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAg
fQogfQogCi1zdGF0aWMgYm9vbCBpc1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCitDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNv
bnN0IENvbXBhY3RIVE1MVG9rZW4mIG90aGVyKQorICAgIDogbV90eXBlKG90aGVyLnR5cGUoKSkK
KyAgICAsIG1faXNBbGw4Qml0RGF0YShvdGhlci5pc0FsbDhCaXREYXRhKCkpCisgICAgLCBtX2Rv
Y3R5cGVGb3JjZXNRdWlya3Mob3RoZXIuZG9jdHlwZUZvcmNlc1F1aXJrcygpKQorICAgICwgbV90
ZXh0UG9zaXRpb24ob3RoZXIudGV4dFBvc2l0aW9uKCkpCiB7Ci0gICAgU3RyaW5nSW1wbCogaW1w
bCA9IHN0cmluZy5pbXBsKCk7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAoaW1wbC0+aGFzT25lUmVmKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
IChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgKm1fZGlkQmxvY2tTY3JpcHRSZXF1ZXN0ID0gKm90aGVyLmRpZEJsb2NrU2NyaXB0
UmVxdWVzdCgpOwogfQogCiBib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpIGNvbnN0CkBAIC0xMDYsOSArMTA2LDIxIEBAIGJvb2wgQ29tcGFjdEhUTUxU
b2tlbjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKICAgICAgICAgaWYgKCFp
c1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoaXQtPnZhbHVlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBpZiAobV9kaWRCbG9ja1NjcmlwdFJlcXVlc3Qg
JiYgIW1fZGlkQmxvY2tTY3JpcHRSZXF1ZXN0LT5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBpc1N0cmluZ1NhZmVUb1NlbmRU
b0Fub3RoZXJUaHJlYWQobV9kYXRhKTsKIH0KIAorRGlkQmxvY2tTY3JpcHRSZXF1ZXN0KiBDb21w
YWN0SFRNTFRva2VuOjpkaWRCbG9ja1NjcmlwdFJlcXVlc3QoKSBjb25zdAoreworICAgIHJldHVy
biBtX2RpZEJsb2NrU2NyaXB0UmVxdWVzdC5nZXQoKTsKK30KKwordm9pZCBDb21wYWN0SFRNTFRv
a2VuOjpzZXREaWRCbG9ja1NjcmlwdFJlcXVlc3QoUGFzc093blB0cjxEaWRCbG9ja1NjcmlwdFJl
cXVlc3Q+IGRpZEJsb2NrU2NyaXB0UmVxdWVzdCkKK3sKKyAgICBtX2RpZEJsb2NrU2NyaXB0UmVx
dWVzdCA9IGRpZEJsb2NrU2NyaXB0UmVxdWVzdDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFRIUkVBREVEX0hUTUxfUEFSU0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29t
cGFjdEhUTUxUb2tlbi5oCmluZGV4IGU0OTJlZWMyZTYzOTgzMjZmZTdmNzA1NmMyOWE2NzEzZTY0
ODJmZWEuLjVjNDQ4YmVkZjI5ZTllNWM3YWQ5MzViOGIzYzllZmJkZTBmNTc0NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKQEAgLTI5LDYgKzI5
LDggQEAKICNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAKICNpbmNsdWRlICJIVE1M
VG9rZW5UeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM3LDYgKzM5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEaWRCbG9ja1NjcmlwdFJlcXVlc3Q7CiBjbGFzcyBI
VE1MVG9rZW47CiAKIGNsYXNzIENvbXBhY3RBdHRyaWJ1dGUgewpAQCAtNTgsNiArNjEsNyBAQCBw
cml2YXRlOgogY2xhc3MgQ29tcGFjdEhUTUxUb2tlbiB7CiBwdWJsaWM6CiAgICAgQ29tcGFjdEhU
TUxUb2tlbihjb25zdCBIVE1MVG9rZW4qLCBjb25zdCBUZXh0UG9zaXRpb24mKTsKKyAgICBDb21w
YWN0SFRNTFRva2VuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4mKTsKIAogICAgIGJvb2wgaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKQEAgLTczLDYgKzc3LDggQEAgcHVibGlj
OgogICAgIGNvbnN0IFN0cmluZyYgcHVibGljSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlc1swXS5uYW1lKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXNbMF0udmFsdWUoKTsgfQogICAgIGJvb2wg
ZG9jdHlwZUZvcmNlc1F1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdHlwZUZvcmNlc1F1aXJr
czsgfQorICAgIERpZEJsb2NrU2NyaXB0UmVxdWVzdCogZGlkQmxvY2tTY3JpcHRSZXF1ZXN0KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREaWRCbG9ja1NjcmlwdFJlcXVlc3QoUGFzc093blB0cjxEaWRC
bG9ja1NjcmlwdFJlcXVlc3Q+KTsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA0
OwpAQCAtODMsNiArODksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGE7IC8vICJuYW1l
IiwgImNoYXJhY3RlcnMiLCBvciAiZGF0YSIgZGVwZW5kaW5nIG9uIG1fdHlwZQogICAgIFZlY3Rv
cjxDb21wYWN0QXR0cmlidXRlPiBtX2F0dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4
dFBvc2l0aW9uOworICAgIE93blB0cjxEaWRCbG9ja1NjcmlwdFJlcXVlc3Q+IG1fZGlkQmxvY2tT
Y3JpcHRSZXF1ZXN0OwogfTsKIAogdHlwZWRlZiBWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4gQ29t
cGFjdEhUTUxUb2tlblN0cmVhbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDcyZmViZWJiOGE1YWQ0ZmZkNjA2ZjhlMGM3NWYy
Mjc4Y2QxYWNlYjAuLjBkYmE1OWU0YTgxNGZiZWI1MDE1OTA1ZjRlYzk1ZjU3NDQ4NTIxN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFy
c2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiB7CiAgICAgQVNT
RVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsKIAotICAgIC8vIGRpZFJlY2VpdmVUb2tlbnNGcm9t
QmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJv
bSB0aGUgRG9jdW1lbnQsCisgICAgLy8gVGhpcyBtZXRob2QgY2FuIGNhdXNlIHRoaXMgcGFyc2Vy
IHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICBSZWZQdHI8SFRNTERvY3VtZW50UGFy
c2VyPiBwcm90ZWN0KHRoaXMpOwogCkBAIC0zMTYsOCArMzE2LDEwIEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3du
UHRyPFBhcnNlCiAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gdG9rZW5zLT5iZWdpbigpOyBpdCAhPSB0b2tlbnMtPmVuZCgpOyArK2l0KSB7CiAg
ICAgICAgIEFTU0VSVCghaXNXYWl0aW5nRm9yU2NyaXB0cygpKTsKIAotICAgICAgICAvLyBGSVhN
RTogQ2FsbCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9ja1NjcmlwdCgpIHdpdGggRGlkQmxv
Y2tTY3JpcHRSZXF1ZXN0IGZyb20gdGhlIENvbXBhY3RIVE1MVG9rZW4uCiAgICAgICAgIG1fdGV4
dFBvc2l0aW9uID0gaXQtPnRleHRQb3NpdGlvbigpOworCisgICAgICAgIGlmIChEaWRCbG9ja1Nj
cmlwdFJlcXVlc3QqIHJlcXVlc3QgPSBpdC0+ZGlkQmxvY2tTY3JpcHRSZXF1ZXN0KCkpCisgICAg
ICAgICAgICBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9ja1NjcmlwdCgqcmVxdWVzdCk7CiAg
ICAgICAgIGNvbnN0cnVjdFRyZWVGcm9tQ29tcGFjdEhUTUxUb2tlbigqaXQpOwogCiAgICAgICAg
IGlmIChpc1N0b3BwZWQoKSkKQEAgLTM3OCw5ICszODAsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKIAogICAgICAgICAgICAg
Ly8gV2UgZG8gbm90IFhTUyBmaWx0ZXIgaW5uZXJIVE1MLCB3aGljaCBtZWFucyB3ZSAoaW50ZW50
aW9uYWxseSkgZmFpbAogICAgICAgICAgICAgLy8gaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL2RvbS13cml0ZS1pbm5lckhUTUwuaHRtbAotICAgICAgICAgICAgT3duUHRyPERpZEJsb2Nr
U2NyaXB0UmVxdWVzdD4gcmVxdWVzdCA9IG1feHNzQXVkaXRvci5maWx0ZXJUb2tlbih0b2tlbigp
KTsKLSAgICAgICAgICAgIGlmIChyZXF1ZXN0KQotICAgICAgICAgICAgICAgIG1feHNzQXVkaXRv
ckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KHJlcXVlc3QucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
IGlmIChPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiByZXF1ZXN0ID0gbV94c3NBdWRpdG9y
LmZpbHRlclRva2VuKHRva2VuKCkpKQorICAgICAgICAgICAgICAgIG1feHNzQXVkaXRvckRlbGVn
YXRlLmRpZEJsb2NrU2NyaXB0KCpyZXF1ZXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0
cnVjdFRyZWVGcm9tSFRNTFRva2VuKHRva2VuKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBlNTIwMWNlMTNiNWFlNDM1YTc3YmVl
YjZiMzdlOWJhZjdjNDI2NDE2Li4wNGI1ZTYzNzc5NGUyYzNhZDc1YTFjZmFhZjI4OTZjZmEyOTJl
MmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21z
LmNwcApAQCAtMjc1LDQgKzI3NSwxNiBAQCBib29sIHBhcnNlSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihjb25zdCBTdHJpbmcmIGlucHV0LCB1bnNpZ25lZCYgdmFsdWUpCiAgICAgcmV0dXJuIHBhcnNl
SFRNTE5vbk5lZ2F0aXZlSW50ZWdlckludGVybmFsKHN0YXJ0LCBzdGFydCArIGxlbmd0aCwgdmFs
dWUpOwogfQogCitib29sIGlzU3RyaW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBT
dHJpbmcmIHN0cmluZykKK3sKKyAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLmltcGwoKTsK
KyAgICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChpbXBsLT5oYXNP
bmVSZWYoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDU3N2UwMmU4
NWQ1NzI0YmRkMzJlODgxYjU0NGY4YWZlZDg2N2E5OGEuLmI2NzNjNzMxM2VmYWU0Y2E2YTE2OGNm
NWFlNjZlNGYwMGRjOWI3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgKQEAgLTg1LDYgKzg1LDggQEAgaW5saW5lIGJvb2wgaXNOb3RIVE1MU3Bh
Y2UoVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiAhaXNIVE1MU3BhY2UoY2hhcmFjdGVyKTsK
IH0KIAorYm9vbCBpc1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgU3RyaW5n
Jik7CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCAzMzllZWVkYjdiOGViOTM1ODE0YTE3NzQ5Mzg1OWU1
ZDgzZmY1ZTk4Li43N2I1M2Y0MDA2NTgxYjZkMjgwZGFkMTZlNDA3NjkxNDM1NDU5YjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAK
QEAgLTMyLDEyICszMiwyMCBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJz
ZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQaW5n
TG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitib29sIERpZEJsb2NrU2NyaXB0UmVxdWVzdDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNTdHJpbmdTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKG1fcmVwb3J0VVJMLnN0cmluZygpKQorICAgICAgICAmJiBpc1N0cmluZ1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQobV9vcmlnaW5hbFVSTCkKKyAgICAgICAgJiYgaXNTdHJpbmdTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKG1fb3JpZ2luYWxIVFRQQm9keSk7Cit9CisKIFhTU0F1ZGl0
b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX2RpZE5vdGlmeUNsaWVudChmYWxzZSkKQEAg
LTQ2LDcgKzU0LDcgQEAgWFNTQXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKIH0KIAotdm9pZCBYU1NB
dWRpdG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0KFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRS
ZXF1ZXN0PiByZXF1ZXN0KQordm9pZCBYU1NBdWRpdG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0
KGNvbnN0IERpZEJsb2NrU2NyaXB0UmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCkBAIC01NCwyNyArNjIsMjcgQEAgdm9pZCBYU1NBdWRpdG9yRGVsZWdh
dGU6OmRpZEJsb2NrU2NyaXB0KFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiByZXF1
ZXMKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJ
SUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2Ug
Y29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSkpOwogICAgIG1fZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IGNvbnNvbGVNZXNzYWdlKTsKIAotICAgIGlmIChyZXF1ZXN0LT5tX2RpZEJsb2NrRW50aXJlUGFn
ZSkKKyAgICBpZiAocmVxdWVzdC5tX2RpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgbV9kb2N1
bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBpZiAoIW1f
ZGlkTm90aWZ5Q2xpZW50KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fZG9jdW1lbnQtPnVybCgpLCByZXF1ZXN0LT5tX2Rp
ZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fZG9jdW1lbnQtPnVybCgpLCByZXF1ZXN0Lm1fZGlk
QmxvY2tFbnRpcmVQYWdlKTsKICAgICAgICAgbV9kaWROb3RpZnlDbGllbnQgPSB0cnVlOwogICAg
IH0KIAotICAgIGlmICghcmVxdWVzdC0+bV9yZXBvcnRVUkwuaXNFbXB0eSgpKSB7CisgICAgaWYg
KCFyZXF1ZXN0Lm1fcmVwb3J0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiByZXBvcnREZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LXVybCIsIHJlcXVlc3QtPm1f
b3JpZ2luYWxVUkwpOwotICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3Qt
Ym9keSIsIHJlcXVlc3QtPm1fb3JpZ2luYWxIVFRQQm9keSk7CisgICAgICAgIHJlcG9ydERldGFp
bHMtPnNldFN0cmluZygicmVxdWVzdC11cmwiLCByZXF1ZXN0Lm1fb3JpZ2luYWxVUkwpOworICAg
ICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtYm9keSIsIHJlcXVlc3QubV9v
cmlnaW5hbEhUVFBCb2R5KTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXBv
cnRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICByZXBvcnRPYmpl
Y3QtPnNldE9iamVjdCgieHNzLXJlcG9ydCIsIHJlcG9ydERldGFpbHMucmVsZWFzZSgpKTsKIAog
ICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0
T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUGluZ0xvYWRl
cjo6c2VuZFZpb2xhdGlvblJlcG9ydChtX2RvY3VtZW50LT5mcmFtZSgpLCByZXF1ZXN0LT5tX3Jl
cG9ydFVSTCwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9y
dChtX2RvY3VtZW50LT5mcmFtZSgpLCByZXF1ZXN0Lm1fcmVwb3J0VVJMLCByZXBvcnQpOwogICAg
IH0KIAotICAgIGlmIChyZXF1ZXN0LT5tX2RpZEJsb2NrRW50aXJlUGFnZSkKKyAgICBpZiAocmVx
dWVzdC5tX2RpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKG1fZG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCksIGJsYW5rVVJMKCksIFN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAppbmRleCAzZWRiMDJl
ZDFlNTBlMmYwNjdiZWQyYjA4YmFiODI5ODVmMmQ1NDE4Li42YWM1YWFiMjMyZjVhN2FlMzkwNzdk
ODNlOTViY2I2Njc0MTA0NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yRGVsZWdhdGUuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgRGlkQmxvY2tTY3JpcHRSZXF1ZXN0KHJlcG9ydFVSTCwgb3JpZ2lu
YWxVUkwsIG9yaWdpbmFsSFRUUEJvZHksIGRpZEJsb2NrRW50aXJlUGFnZSkpOwogICAgIH0KIAor
ICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CisKICAgICBLVVJM
IG1fcmVwb3J0VVJMOwogICAgIFN0cmluZyBtX29yaWdpbmFsVVJMOwogICAgIFN0cmluZyBtX29y
aWdpbmFsSFRUUEJvZHk7CkBAIC02MCw3ICs2Miw3IEBAIGNsYXNzIFhTU0F1ZGl0b3JEZWxlZ2F0
ZSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50Kik7
CiAKLSAgICB2b2lkIGRpZEJsb2NrU2NyaXB0KFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1
ZXN0Pik7CisgICAgdm9pZCBkaWRCbG9ja1NjcmlwdChjb25zdCBEaWRCbG9ja1NjcmlwdFJlcXVl
c3QmKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186454</attachid>
            <date>2013-02-04 14:00:25 -0800</date>
            <delta_ts>2013-02-05 10:21:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108726-20130204135704.patch</filename>
            <type>text/plain</type>
            <size>25170</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNjNTNiN2I2NjE5YTY3NGQxOWYyNmUz
NWRkNTdmOGJjZjc3MDUyMjcuLjM4OTMxN2UyNTFiYmJiODRjNjA5ZGU0ZDMyZDE3ZDljZWI5YTBh
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMDQgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBDYWxsIFhTU0F1ZGl0b3IncyBkaWRCbG9ja1Nj
cmlwdCgpIGZvciB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBpc1NhZmVUb1NlbmRU
b0Fub3RoZXJUaHJlYWQoKSBtZXRob2RzIHRvIENTdHJpbmcsIFN0cmluZywgUGFyc2VkVVJMIGFu
ZCBVUkxTdHJpbmcuCisgICAgICAgIFRoZXNlIG1ldGhvZHMgY2hlY2sgdG8gZW5zdXJlIHRoZXJl
IGFyZSAwIG9yIDEgcmVmZXJlbmNlcy4KKworICAgICAgICAqIHd0Zi90ZXh0L0NTdHJpbmcuY3Bw
OgorICAgICAgICAoV1RGOjpDU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOiBB
ZGRlZC4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5oOgorICAg
ICAgICAoQ1N0cmluZyk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAg
ICAgKFdURjo6U3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOiBBZGRlZC4KKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChT
dHJpbmcpOgorICAgICAgICAqIHd0Zi91cmwvYXBpL1BhcnNlZFVSTC5oOgorICAgICAgICAoV1RG
OjpQYXJzZWRVUkw6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorICAgICAg
ICAqIHd0Zi91cmwvYXBpL1VSTFN0cmluZy5oOgorICAgICAgICAoV1RGOjpVUkxTdHJpbmc6Omlz
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorCiAyMDEzLTAyLTA0ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgU29ydCBXVEYgWGNvZGUgcHJv
amVjdCBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UyMzQxMzljMjY2OGM5M2U1MWRhZDk1YmRkOGM4ZGI0
ZmJkNjAwMy4uMzQzNDkzMjZmOTBkNTlkMzVlZjMyMzYzZDFmOTU1NDdhMTM2NGI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTAyLTA0ICBUb255IEdlbnRpbGNvcmUgIDx0b255
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2FsbCBYU1NBdWRpdG9yJ3MgZGlkQmxvY2tTY3Jp
cHQoKSBmb3IgdGhlIHRocmVhZGVkIEhUTUwgcGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNhdXNlcyB1cyB0byBjYWxsIGRp
ZEJsb2NrU2NyaXB0KCkgb24gdGhlIG1haW4gdGhyZWFkIGlmIHRoZSBDb21wYWN0SFRNTCB0b2tl
biBoYXMgWFNTSW5mby4KKyAgICAgICAgVG8gZG8gc28sIHdlOgorICAgICAgICAxLiBSZW5hbWUg
RGlkQmxvY2tTY3JpcHRSZXF1ZXN0IHRvIFhTU0luZm8uCisgICAgICAgIDIuIEFkZCBhbiBPd25Q
dHI8WFNTSW5mbz4gZmllbGQgdG8gQ29tcGFjdEhUTUxUb2tlbi4KKyAgICAgICAgMy4gQWRkIGFu
IGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIG1ldGhvZCB0byBTdHJpbmcgYW5kIEtVUkwu
CisKKyAgICAgICAgV2UgZG9uJ3QgeWV0IHBvcHVsYXRlIGRpZEJsb2NrU2NyaXB0UmVxdWVzdCBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQsIGJ1dCB0aGlzIHNob3VsZCBqdXN0IHdvcmsgb25jZSB3
ZSBkby4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBuZXcgZnVuY3Rpb25hbGl0
eS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhY2tncm91bmRIVE1MUGFyc2VyOjpwdW1wVG9rZW5pemVyKTogVXBk
YXRlIGNvbW1lbnQgZm9yIHJlbmFtZS4KKyAgICAgICAgKiBodG1sL3BhcnNlci9Db21wYWN0SFRN
TFRva2VuLmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4pOiBBZGQgYSBj
b3B5IGNvbnN0cnVjdG9yIHVzZWQgYnkgVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q29tcGFj
dEhUTUxUb2tlbjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogSW5jbHVkZSBuZXcgbV94
c3NJbmZvIGZpZWxkIGluIHNhZmV0eSBjaGVjay4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6eHNzSW5mbyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6c2V0WFNTSW5mbyk6IEFkZGVkLgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaDogQWRkIGFuIE93blB0cjxYU1NJbmZvPiBm
aWVsZCB0byBDb21wYWN0SFRNTFRva2VuLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
b21wYWN0SFRNTFRva2VuKToKKyAgICAgICAgKFdURik6IEFkZCBWZWN0b3JUcmFpdHMgbmVjZXNz
YXJ5IGZvciBjb3B5aW5nIFZlY3RvciBmaWVsZHMgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYW4gT3du
UHRyLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21C
YWNrZ3JvdW5kUGFyc2VyKTogQWRkIG5ldyBkaWRCbG9ja1NjcmlwdCgpIGNhbGwuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwOiBSZW5hbWluZy4KKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRp
dG9yLmg6IFJlbmFtaW5nLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChYU1NBdWRpdG9y
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTSW5mbzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvckRlbGVnYXRlOjpkaWRC
bG9ja1NjcmlwdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpYU1NJbmZvOjpjcmVhdGUpOgorICAgICAgICAoWFNTSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpYU1NJbmZvOjpYU1NJbmZvKToKKyAgICAgICAgKFhTU0F1ZGl0
b3JEZWxlZ2F0ZSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLVVJMOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgKEtVUkwpOgor
ICAgICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpLVVJMR29vZ2xlUHJpdmF0ZTo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaDoK
KyAgICAgICAgKEtVUkxHb29nbGVQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMV1RG
VVJMSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6S1VSTFdURlVSTEltcGw6OmlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorCiAyMDEzLTAyLTA0ICBEb21pbmlrIFLDtnR0c2No
ZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAgICAgW1NraWFdIEFyZ3Vt
ZW50IHRvIEhhcmZCdXp6U2hhcGVyOjpvZmZzZXRGb3JQb3NpdGlvbiB1bm5lY2Vzc2FyaWx5IHRy
dW5jYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAKaW5kZXggZmUxNDg1NTMyNjA0ZDA0ZTI3MTMy
MTRhOGNhZmU1OGI0MDM5OTI0YS4uODYxOTNjZTk1NDM5NzNlNjRlNmVkYjI0MWI2YjBkNGE0NDIz
YTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCkBAIC05OSw2ICs5OSwxMSBAQCB2b2lkIENT
dHJpbmc6OmNvcHlCdWZmZXJJZk5lZWRlZCgpCiAgICAgbWVtY3B5KG1fYnVmZmVyLT5tdXRhYmxl
RGF0YSgpLCBidWZmZXItPmRhdGEoKSwgbGVuZ3RoICsgMSk7CiB9CiAKK2Jvb2wgQ1N0cmluZzo6
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYnVm
ZmVyIHx8IG1fYnVmZmVyLT5oYXNPbmVSZWYoKTsKK30KKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0g
Yi5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggNGQ4OTRiMTk2ZDAzOWUyNGMyODc4
NWYxZmI0M2EyMzQzNzlkMmFhNy4uMWRmOWY2YjMwMGNmNGZlZTc2Y2JhOGNmODBkMTViYjBlYmM4
YzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAg
Ym9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAogICAgIENTdHJpbmdC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAwMGM1MTQwYjFjMDI4YjgxOTkxOTNlMjZiYWFhNWNm
NWZmZTE4YWM2Li44ZmFjNTU5OWEzZTEwNGVkMTFmNjJmYTM2MjUyMjdhMzAxOWNhNDk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC02NjEsNiArNjYxLDE3IEBAIFN0cmluZyBTdHJp
bmc6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5
KCk7CiB9CiAKK2Jvb2wgU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25z
dAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW1w
bCgpLT5oYXNPbmVSZWYoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFN0
cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmNsZWFyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCAzODk5NGI4OGI0Mjk5MTJiY2U4YzAzYzk3MzAx
YTg0ZmU5MGIzMTExLi4wOGY0MDNmODU4MjI0YzQzNzFkNGM4NjY3MDQxZTczZWY2MWNhODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBwZXJjZW50YWdlKGludCYgcGVyY2VudGFnZSkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgU3RyaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIGJvb2wgaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAKICAgICAvLyBQcmV2ZW50IFN0cmluZ3Mg
ZnJvbSBiZWluZyBpbXBsaWNpdGx5IGNvbnZlcnRhYmxlIHRvIGJvb2wgYXMgaXQgd2lsbCBiZSBh
bWJpZ3VvdXMgb24gYW55IHBsYXRmb3JtIHRoYXQKICAgICAvLyBhbGxvd3MgaW1wbGljaXQgY29u
dmVyc2lvbiB0byBhbm90aGVyIHBvaW50ZXIgdHlwZSAoZS5nLiwgTWFjIGFsbG93cyBpbXBsaWNp
dCBjb252ZXJzaW9uIHRvIE5TU3RyaW5nKikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91
cmwvYXBpL1BhcnNlZFVSTC5oIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaApp
bmRleCBjMmNiYjljZDI3ZGU0MGQ0MGNlYmZjMDY5MTdkMjY5MWNjZGJmMTJlLi5jYzJhNWQwMDg5
NmRlY2Y4ODBkOTBkMjE1YWM0YzhjMmU4ZThjZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi91cmwvYXBpL1BhcnNlZFVSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2Vk
VVJMLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBl
eHBsaWNpdCBQYXJzZWRVUkwoY29uc3QgUGFyc2VkVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJl
bGF0aXZlLCBVUkxRdWVyeUNoYXJzZXRDb252ZXJ0ZXIqKTsKIAogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBQYXJzZWRVUkwgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgYm9vbCBpc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWMuaXNTYWZlVG9TZW5kVG9B
bm90aGVyVGhyZWFkKCk7IH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFt
X3NwZWMuc3RyaW5nKCkuaXNOdWxsKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dXJsL2FwaS9VUkxTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgK
aW5kZXggNzBlZjIxOTEwZTJhZGQ0YzMwM2ZiZjg0YzBmZDI3MGM5MzUxY2Y4My4uOGZkZDFhMTZh
MjM3MDdhMTUxNGNlY2EyOWUwNTI5ZjdkYTJlM2QyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdXJsL2FwaS9VUkxTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0
cmluZy5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBVUkxTdHJpbmcoKSB7IH0KIAog
ICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7fQorICAg
IGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7IH0KIAogI2lmbmRlZiBOREVCVUcKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCmluZGV4IGI5YzI2
NDlkZTY4MzE2OTMyMjVjMjUxZDQ0NzJiYjY2ZDA2NGY1NmMuLjEzNDk3ZjVkZWQzZTRlYzc2YTUx
N2U3NDVhMDcxZDg5NGNiYzUyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEJh
Y2tncm91bmRIVE1MUGFyc2VyOjpzaW11bGF0ZVRyZWVCdWlsZGVyKGNvbnN0IENvbXBhY3RIVE1M
VG9rZW4mIHRva2VuKQogdm9pZCBCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcigp
CiB7CiAgICAgd2hpbGUgKG1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCks
ICptX3Rva2VuLmdldCgpKSkgewotICAgICAgICAvLyBGSVhNRTogQ2FsbCBtX3hzc0F1ZGl0b3Iu
ZmlsdGVyVG9rZW4obV90b2tlbikgYW5kIHB1dCByZXN1bHRpbmcgRGlkQmxvY2tTY3JpcHRSZXF1
ZXN0IGludG8gQ29tcGFjdEhUTUxUb2tlbi4KKyAgICAgICAgLy8gRklYTUU6IENhbGwgbV94c3NB
dWRpdG9yLmZpbHRlclRva2VuKG1fdG9rZW4pIGFuZCBwdXQgcmVzdWx0aW5nIFhTU0luZm8gaW50
byBDb21wYWN0SFRNTFRva2VuLgogICAgICAgICBtX3BlbmRpbmdUb2tlbnMtPmFwcGVuZChDb21w
YWN0SFRNTFRva2VuKG1fdG9rZW4uZ2V0KCksIFRleHRQb3NpdGlvbihtX2lucHV0LmN1cnJlbnQo
KS5jdXJyZW50TGluZSgpLCBtX2lucHV0LmN1cnJlbnQoKS5jdXJyZW50Q29sdW1uKCkpKSk7CiAg
ICAgICAgIG1fdG9rZW4tPmNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAKaW5kZXggYTFhMjdmMjA1YTQyYmRjNGY3MmFmNWM5ODY2
Y2ZlNWEwYTVjOTMwMi4uZDhhNTExMDY5NzIxMDQ3ZGE3MDMzMzY0YjY0NDgwMDA2NDdiZWRlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb21wYWN0SFRNTFRva2VuLmgiCiAKICNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yRGVsZWdhdGUuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw2ICszOSw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzQ29t
cGFjdEhUTUxUb2tlbiAgewogICAgIFN0cmluZyBuYW1lOwogICAgIFZlY3RvcjxDb21wYWN0QXR0
cmlidXRlPiB2ZWN0b3I7CiAgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbjsKKyAgICBPd25Q
dHI8WFNTSW5mbz4geHNzSW5mbzsKIH07CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihDb21wYWN0
SFRNTFRva2VuKSA9PSBzaXplb2YoU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4pLCBDb21wYWN0
SFRNTFRva2VuX3Nob3VsZF9zdGF5X3NtYWxsKTsKQEAgLTg2LDI3ICs4OCwzNyBAQCBDb21wYWN0
SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiogdG9rZW4sIGNvbnN0
IFRleHRQb3NpdGlvbiYgdAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNTdHJpbmdTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorQ29tcGFjdEhUTUxUb2tl
bjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBDb21wYWN0SFRNTFRva2VuJiBvdGhlcikKKyAgICA6
IG1fdHlwZShvdGhlci50eXBlKCkpCisgICAgLCBtX2lzQWxsOEJpdERhdGEob3RoZXIuaXNBbGw4
Qml0RGF0YSgpKQorICAgICwgbV9kb2N0eXBlRm9yY2VzUXVpcmtzKG90aGVyLmRvY3R5cGVGb3Jj
ZXNRdWlya3MoKSkKKyAgICAsIG1fdGV4dFBvc2l0aW9uKG90aGVyLnRleHRQb3NpdGlvbigpKQog
ewotICAgIFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmcuaW1wbCgpOwotICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKGltcGwtPmhhc09uZVJlZigpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChvdGhlci54c3NJbmZvKCkpCisgICAg
ICAgIG1feHNzSW5mbyA9IGFkb3B0UHRyKG5ldyBYU1NJbmZvKCpvdGhlci54c3NJbmZvKCkpKTsK
IH0KIAogYm9vbCBDb21wYWN0SFRNTFRva2VuOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
KSBjb25zdAogewogICAgIGZvciAoVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fYXR0cmlidXRlcy5iZWdpbigpOyBpdCAhPSBtX2F0dHJpYnV0ZXMuZW5kKCk7
ICsraXQpIHsKLSAgICAgICAgaWYgKCFpc1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
aXQtPm5hbWUoKSkpCisgICAgICAgIGlmICghaXQtPm5hbWUoKS5pc1NhZmVUb1NlbmRUb0Fub3Ro
ZXJUaHJlYWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFpc1N0
cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoaXQtPnZhbHVlKCkpKQorICAgICAgICBpZiAo
IWl0LT52YWx1ZSgpLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICByZXR1cm4gaXNTdHJpbmdTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKG1fZGF0YSk7CisgICAgaWYgKG1feHNzSW5mbyAmJiAhbV94c3NJbmZvLT5pc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBtX2RhdGEuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Cit9CisKK1hTU0luZm8q
IENvbXBhY3RIVE1MVG9rZW46Onhzc0luZm8oKSBjb25zdAoreworICAgIHJldHVybiBtX3hzc0lu
Zm8uZ2V0KCk7Cit9CisKK3ZvaWQgQ29tcGFjdEhUTUxUb2tlbjo6c2V0WFNTSW5mbyhQYXNzT3du
UHRyPFhTU0luZm8+IHhzc0luZm8pCit7CisgICAgbV94c3NJbmZvID0geHNzSW5mbzsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tl
bi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCmluZGV4
IGU0OTJlZWMyZTYzOTgzMjZmZTdmNzA1NmMyOWE2NzEzZTY0ODJmZWEuLjZjOTVmNmExY2VlYWI2
Nzk0MThlNzEzMDU5ODNjOGZiOTk0Mzc5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9Db21wYWN0SFRNTFRva2VuLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoVEhS
RUFERURfSFRNTF9QQVJTRVIpCiAKICNpbmNsdWRlICJIVE1MVG9rZW5UeXBlcy5oIgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTM4LDYgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTFRva2VuOworY2xhc3MgWFNTSW5mbzsKIAogY2xhc3MgQ29tcGFjdEF0dHJpYnV0ZSB7
CiBwdWJsaWM6CkBAIC01OCw2ICs2MSw3IEBAIHByaXZhdGU6CiBjbGFzcyBDb21wYWN0SFRNTFRv
a2VuIHsKIHB1YmxpYzoKICAgICBDb21wYWN0SFRNTFRva2VuKGNvbnN0IEhUTUxUb2tlbiosIGNv
bnN0IFRleHRQb3NpdGlvbiYpOworICAgIENvbXBhY3RIVE1MVG9rZW4oY29uc3QgQ29tcGFjdEhU
TUxUb2tlbiYpOwogCiAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25z
dDsKIApAQCAtNzMsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBwdWJsaWNJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLm5hbWUoKTsgfQogICAg
IGNvbnN0IFN0cmluZyYgc3lzdGVtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmli
dXRlc1swXS52YWx1ZSgpOyB9CiAgICAgYm9vbCBkb2N0eXBlRm9yY2VzUXVpcmtzKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N0eXBlRm9yY2VzUXVpcmtzOyB9CisgICAgWFNTSW5mbyogeHNzSW5mbygp
IGNvbnN0OworICAgIHZvaWQgc2V0WFNTSW5mbyhQYXNzT3duUHRyPFhTU0luZm8+KTsKIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX3R5cGUgOiA0OwpAQCAtODMsMTIgKzg5LDE5IEBAIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fZGF0YTsgLy8gIm5hbWUiLCAiY2hhcmFjdGVycyIsIG9yICJkYXRh
IiBkZXBlbmRpbmcgb24gbV90eXBlCiAgICAgVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+IG1fYXR0
cmlidXRlczsKICAgICBUZXh0UG9zaXRpb24gbV90ZXh0UG9zaXRpb247CisgICAgT3duUHRyPFhT
U0luZm8+IG1feHNzSW5mbzsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPENvbXBhY3RIVE1MVG9rZW4+
IENvbXBhY3RIVE1MVG9rZW5TdHJlYW07CiAKIH0KIAorbmFtZXNwYWNlIFdURiB7CisvLyBUaGlz
IGlzIHJlcXVpcmVkIGZvciBhIHN0cnVjdCB3aXRoIE93blB0ci4gV2Uga25vdyBDb21wYWN0SFRN
TFRva2VuIGlzIHNpbXBsZSBlbm91Z2ggdGhhdAorLy8gaW5pdGlhbGl6aW5nIHRvIDAgYW5kIG1v
dmluZyB3aXRoIG1lbWNweSAoYW5kIHRoZW4gbm90IGRlc3RydWN0aW5nIHRoZSBvcmlnaW5hbCkg
d2lsbCB3b3JrLgordGVtcGxhdGU8PiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFdlYkNvcmU6OkNvbXBh
Y3RIVE1MVG9rZW4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OworfQorCiAjZW5kaWYg
Ly8gRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VSKQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDcyZmViZWJi
OGE1YWQ0ZmZkNjA2ZjhlMGM3NWYyMjc4Y2QxYWNlYjAuLmRkYWYzOGRiZDY3ZGM4ODc2MTZkMTkw
ZDkyZWQyNGY2ZDM0YmE1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3du
UHRyPFBhcnNlCiB7CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsKIAotICAgIC8v
IGRpZFJlY2VpdmVUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlciBjYW4gY2F1c2UgdGhpcyBwYXJz
ZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCisgICAgLy8gVGhpcyBtZXRob2Qg
Y2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KICAgICBS
ZWZQdHI8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KHRoaXMpOwogCkBAIC0zMTYsOCArMzE2
LDEwIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFj
a2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPFBhcnNlCiAgICAgZm9yIChWZWN0b3I8Q29tcGFjdEhU
TUxUb2tlbj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdG9rZW5zLT5iZWdpbigpOyBpdCAhPSB0b2tl
bnMtPmVuZCgpOyArK2l0KSB7CiAgICAgICAgIEFTU0VSVCghaXNXYWl0aW5nRm9yU2NyaXB0cygp
KTsKIAotICAgICAgICAvLyBGSVhNRTogQ2FsbCBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9j
a1NjcmlwdCgpIHdpdGggRGlkQmxvY2tTY3JpcHRSZXF1ZXN0IGZyb20gdGhlIENvbXBhY3RIVE1M
VG9rZW4uCiAgICAgICAgIG1fdGV4dFBvc2l0aW9uID0gaXQtPnRleHRQb3NpdGlvbigpOworCisg
ICAgICAgIGlmIChYU1NJbmZvKiB4c3NJbmZvID0gaXQtPnhzc0luZm8oKSkKKyAgICAgICAgICAg
IG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCp4c3NJbmZvKTsKICAgICAgICAg
Y29uc3RydWN0VHJlZUZyb21Db21wYWN0SFRNTFRva2VuKCppdCk7CiAKICAgICAgICAgaWYgKGlz
U3RvcHBlZCgpKQpAQCAtMzc4LDkgKzM4MCw4IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpw
dW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogCiAgICAgICAgICAgICAvLyBXZSBk
byBub3QgWFNTIGZpbHRlciBpbm5lckhUTUwsIHdoaWNoIG1lYW5zIHdlIChpbnRlbnRpb25hbGx5
KSBmYWlsCiAgICAgICAgICAgICAvLyBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZG9t
LXdyaXRlLWlubmVySFRNTC5odG1sCi0gICAgICAgICAgICBPd25QdHI8RGlkQmxvY2tTY3JpcHRS
ZXF1ZXN0PiByZXF1ZXN0ID0gbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKHRva2VuKCkpOwotICAg
ICAgICAgICAgaWYgKHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgbV94c3NBdWRpdG9yRGVsZWdh
dGUuZGlkQmxvY2tTY3JpcHQocmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAgICAgICAgaWYgKE93
blB0cjxYU1NJbmZvPiB4c3NJbmZvID0gbV94c3NBdWRpdG9yLmZpbHRlclRva2VuKHRva2VuKCkp
KQorICAgICAgICAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCp4
c3NJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2Vu
KHRva2VuKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRl
eCA5ZWZhMjgyOGU0OWZkZDVjNGM5YTNkMGFlM2Y5YmYzNWNhMjIwNmE0Li5hZTZlZDY5YWQwZDY4
ZDNlMjkzMTdmOTcxYWUwM2ZjMTg5Y2EwMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5p
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPERpZEJsb2NrU2Ny
aXB0UmVxdWVzdD4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oSFRNTFRva2VuJiB0b2tlbikKK1Bh
c3NPd25QdHI8WFNTSW5mbz4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsaXplZCk7CiAgICAgaWYgKCFtX2lz
RW5hYmxlZCB8fCBtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkRpc2FibGVkKQpAQCAt
MjkwLDEzICsyOTAsMTMgQEAgUGFzc093blB0cjxEaWRCbG9ja1NjcmlwdFJlcXVlc3Q+IFhTU0F1
ZGl0b3I6OmZpbHRlclRva2VuKEhUTUxUb2tlbiYgdG9rZW4pCiAKICAgICBpZiAoZGlkQmxvY2tT
Y3JpcHQpIHsKICAgICAgICAgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UgPSAobV94c3NQcm90ZWN0
aW9uID09IFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQpOwotICAgICAgICBPd25QdHI8RGlkQmxv
Y2tTY3JpcHRSZXF1ZXN0PiByZXF1ZXN0ID0gRGlkQmxvY2tTY3JpcHRSZXF1ZXN0OjpjcmVhdGUo
bV9yZXBvcnRVUkwsIG1fb3JpZ2luYWxVUkwsIG1fb3JpZ2luYWxIVFRQQm9keSwgZGlkQmxvY2tF
bnRpcmVQYWdlKTsKKyAgICAgICAgT3duUHRyPFhTU0luZm8+IHhzc0luZm8gPSBYU1NJbmZvOjpj
cmVhdGUobV9yZXBvcnRVUkwsIG1fb3JpZ2luYWxVUkwsIG1fb3JpZ2luYWxIVFRQQm9keSwgZGlk
QmxvY2tFbnRpcmVQYWdlKTsKICAgICAgICAgaWYgKCFtX3JlcG9ydFVSTC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIG1fcmVwb3J0VVJMID0gS1VSTCgpOwogICAgICAgICAgICAgbV9vcmlnaW5h
bFVSTCA9IFN0cmluZygpOwogICAgICAgICAgICAgbV9vcmlnaW5hbEhUVFBCb2R5ID0gU3RyaW5n
KCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOworICAgICAg
ICByZXR1cm4geHNzSW5mby5yZWxlYXNlKCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCmluZGV4IDJiZDE3YjU1Y2Yz
MWM5NWE4YTZlNDhkYjA3ODMxNjQxZGM4OGM2YTguLmQ2ZTcyM2RkNTAzN2YyYzRmMjJmMTZkOTU2
NzI1YWE3MTEzOTAzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgK
QEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEaWRCbG9j
a1NjcmlwdFJlcXVlc3Q7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNl
cjsKK2NsYXNzIFhTU0luZm87CiAKIGNsYXNzIFhTU0F1ZGl0b3IgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFhTU0F1ZGl0b3IpOwpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgWFNTQXVkaXRvcihIVE1MRG9jdW1lbnRQYXJzZXIqKTsKIAogICAgIHZvaWQgaW5pdChE
b2N1bWVudCopOwotICAgIFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBmaWx0ZXJU
b2tlbihIVE1MVG9rZW4mKTsKKyAgICBQYXNzT3duUHRyPFhTU0luZm8+IGZpbHRlclRva2VuKEhU
TUxUb2tlbiYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heGltdW1G
cmFnbWVudExlbmd0aFRhcmdldCA9IDEwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCmluZGV4IDMzOWVlZWRiN2I4ZWI5MzU4MTRhMTc3
NDkzODU5ZTVkODNmZjVlOTguLjVkNGZhNTlkNzYzOTM2OWZlYjRkYzk5MTkwMjI5NDQzNzIxNzFm
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxl
Z2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVn
YXRlLmNwcApAQCAtMzIsMTIgKzMyLDIwIEBACiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2Jvb2wgWFNTSW5mbzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXBvcnRVUkwuaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkKKyAgICAgICAgJiYgbV9vcmlnaW5hbFVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKQorICAgICAgICAmJiBtX29yaWdpbmFsSFRUUEJvZHkuaXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKCk7Cit9CisKIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBt
X2RpZE5vdGlmeUNsaWVudChmYWxzZSkKQEAgLTQ2LDcgKzU0LDcgQEAgWFNTQXVkaXRvckRlbGVn
YXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VSVCht
X2RvY3VtZW50KTsKIH0KIAotdm9pZCBYU1NBdWRpdG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0
KFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiByZXF1ZXN0KQordm9pZCBYU1NBdWRp
dG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mIHhzc0luZm8pCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTQsMjcgKzYyLDI3IEBAIHZvaWQgWFNT
QXVkaXRvckRlbGVnYXRlOjpkaWRCbG9ja1NjcmlwdChQYXNzT3duUHRyPERpZEJsb2NrU2NyaXB0
UmVxdWVzdD4gcmVxdWVzCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVN
ZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2NyaXB0IHNj
cmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0LlxuIikpKTsK
ICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9y
TWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSk7CiAKLSAgICBpZiAocmVxdWVzdC0+bV9kaWRC
bG9ja0VudGlyZVBhZ2UpCisgICAgaWYgKHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UpCiAg
ICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwog
CiAgICAgaWYgKCFtX2RpZE5vdGlmeUNsaWVudCkgewotICAgICAgICBtX2RvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZERldGVjdFhTUyhtX2RvY3VtZW50LT51cmwoKSwg
cmVxdWVzdC0+bV9kaWRCbG9ja0VudGlyZVBhZ2UpOworICAgICAgICBtX2RvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpZERldGVjdFhTUyhtX2RvY3VtZW50LT51cmwoKSwg
eHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSk7CiAgICAgICAgIG1fZGlkTm90aWZ5Q2xpZW50
ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoIXJlcXVlc3QtPm1fcmVwb3J0VVJMLmlzRW1wdHko
KSkgeworICAgIGlmICgheHNzSW5mby5tX3JlcG9ydFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVwb3J0RGV0YWlscyA9IEluc3BlY3Rvck9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygicmVxdWVzdC11cmwi
LCByZXF1ZXN0LT5tX29yaWdpbmFsVVJMKTsKLSAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3Ry
aW5nKCJyZXF1ZXN0LWJvZHkiLCByZXF1ZXN0LT5tX29yaWdpbmFsSFRUUEJvZHkpOworICAgICAg
ICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtdXJsIiwgeHNzSW5mby5tX29yaWdp
bmFsVVJMKTsKKyAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LWJvZHki
LCB4c3NJbmZvLm1fb3JpZ2luYWxIVFRQQm9keSk7CiAKICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gcmVwb3J0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAg
ICAgcmVwb3J0T2JqZWN0LT5zZXRPYmplY3QoInhzcy1yZXBvcnQiLCByZXBvcnREZXRhaWxzLnJl
bGVhc2UoKSk7CiAKICAgICAgICAgUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQgPSBGb3JtRGF0YTo6
Y3JlYXRlKHJlcG9ydE9iamVjdC0+dG9KU09OU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIFBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQobV9kb2N1bWVudC0+ZnJhbWUoKSwg
cmVxdWVzdC0+bV9yZXBvcnRVUkwsIHJlcG9ydCk7CisgICAgICAgIFBpbmdMb2FkZXI6OnNlbmRW
aW9sYXRpb25SZXBvcnQobV9kb2N1bWVudC0+ZnJhbWUoKSwgeHNzSW5mby5tX3JlcG9ydFVSTCwg
cmVwb3J0KTsKICAgICB9CiAKLSAgICBpZiAocmVxdWVzdC0+bV9kaWRCbG9ja0VudGlyZVBhZ2Up
CisgICAgaWYgKHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UpCiAgICAgICAgIG1fZG9jdW1l
bnQtPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBibGFua1VSTCgpLCBTdHJpbmcoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgK
aW5kZXggM2VkYjAyZWQxZTUwZTJmMDY3YmVkMmIwOGJhYjgyOTg1ZjJkNTQxOC4uY2I4ZGYzYTFi
NzQwYTliNDZlN2RmMmNiOTRhZGFlMmRjZTlkY2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmgKQEAgLTM0LDIwICszNCwyMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBEaWRCbG9ja1Njcmlw
dFJlcXVlc3QgeworY2xhc3MgWFNTSW5mbyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBjcmVhdGUoY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsSFRUUEJvZHks
IGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFhTU0luZm8+
IGNyZWF0ZShjb25zdCBLVVJMJiByZXBvcnRVUkwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxIVFRQQm9keSwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2Up
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERpZEJsb2NrU2NyaXB0UmVxdWVz
dChyZXBvcnRVUkwsIG9yaWdpbmFsVVJMLCBvcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGly
ZVBhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBYU1NJbmZvKHJlcG9ydFVSTCwg
b3JpZ2luYWxVUkwsIG9yaWdpbmFsSFRUUEJvZHksIGRpZEJsb2NrRW50aXJlUGFnZSkpOwogICAg
IH0KIAorICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CisKICAg
ICBLVVJMIG1fcmVwb3J0VVJMOwogICAgIFN0cmluZyBtX29yaWdpbmFsVVJMOwogICAgIFN0cmlu
ZyBtX29yaWdpbmFsSFRUUEJvZHk7CiAgICAgYm9vbCBtX2RpZEJsb2NrRW50aXJlUGFnZTsKIAog
cHJpdmF0ZToKLSAgICBEaWRCbG9ja1NjcmlwdFJlcXVlc3QoY29uc3QgS1VSTCYgcmVwb3J0VVJM
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsSFRUUEJv
ZHksIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQorICAgIFhTU0luZm8oY29uc3QgS1VSTCYgcmVw
b3J0VVJMLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
SFRUUEJvZHksIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQogICAgICAgICA6IG1fcmVwb3J0VVJM
KHJlcG9ydFVSTCkKICAgICAgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQogICAgICAg
ICAsIG1fb3JpZ2luYWxIVFRQQm9keShvcmlnaW5hbEhUVFBCb2R5KQpAQCAtNjAsNyArNjIsNyBA
QCBjbGFzcyBYU1NBdWRpdG9yRGVsZWdhdGUgewogcHVibGljOgogICAgIGV4cGxpY2l0IFhTU0F1
ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCopOwogCi0gICAgdm9pZCBkaWRCbG9ja1NjcmlwdChQYXNz
T3duUHRyPERpZEJsb2NrU2NyaXB0UmVxdWVzdD4pOworICAgIHZvaWQgZGlkQmxvY2tTY3JpcHQo
Y29uc3QgWFNTSW5mbyYpOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9LVVJMLmNwcAppbmRleCBmMTZiYjhhYjVmZDBjZGU3NWY0MmMxNzcyNzE5
ZjU3OTA1ZDdkZWI3Li43YjZhZjYwZmIzMWMxODdkODg4ODczYWQ0YWQ0ODBjZGM2NTNhNzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtMTkzNSw0ICsxOTM1LDE1IEBAIHZvaWQgS1VS
TDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKICNlbmRpZgogfQogCitib29sIEtVUkw6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0Cit7CisjaWYgVVNFKEdPT0dMRVVSTCkKKyAgICByZXR1cm4gbV91cmwuaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7CisjZWxpZiBVU0UoV1RGVVJMKQorICAgIHJldHVybiBt
X3VybEltcGwuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7CisjZWxzZSAvLyAhVVNFKEdP
T0dMRVVSTCkKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
S1VSTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCmluZGV4IDEzMDEzZmJiNDAy
MDgwMjEyMjMzNzBjOTU0NGM4ODZmOGM4NTI5MzIuLjI2MWY5ZTQyNjU5OTNhZjM5NmYxZTljODUw
YTZlZWYxMDczMWJmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKQEAgLTIyNyw2ICsyMjcsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkxHb29nbGUuY3BwCmluZGV4IDkxZGM1ZDlmNGVhZmY1NDIzNDJjZjRiYmM1Nzlm
NGI2MjhlM2U2MzMuLjE2N2NjMzQ1NWVjYTA1MmU0OGQ4NzI5MDY3ZGFlMDljNjcwZjhhMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCkBAIC0zOTksNiArMzk5LDE0IEBA
IHZvaWQgS1VSTEdvb2dsZVByaXZhdGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvCiAgICAgaW5mby5hZGRNZW1iZXIobV9pbm5lclVSTCwg
ImlubmVyVVJMIik7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wYXJzZWQsICJwYXJzZWQiKTsKIH0K
KworYm9vbCBLVVJMR29vZ2xlUHJpdmF0ZTo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCkKKyAgICAgICAgJiYgbV91dGY4LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAg
ICAgICYmICghbV9pbm5lclVSTCB8fCBtX2lubmVyVVJMLT5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKSk7Cit9CisKIC8vIEtVUkwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEluaXRpYWxpemVz
IHdpdGggYSBzdHJpbmcgcmVwcmVzZW50aW5nIGFuIGFic29sdXRlIFVSTC4gTm8gZW5jb2RpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5oCmluZGV4IDcyMjI2
M2ViY2MyY2Y2YjM4NDNmNGIyODlhMjE2ZDAyNDg2ZGI1NjMuLjRiOTZhZWYzNzcwZjZlMWI1MDFk
NWNkYWMyN2E0ZDhkMmIyZDMyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxHb29nbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdv
b2dsZVByaXZhdGUuaApAQCAtMTAxLDYgKzEwMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgS1VSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX2lubmVyVVJMLmdldCgpOyB9
CiAKICAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisgICAgICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRJbm5lclVSTCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkxXVEZVUkxJbXBsLmgKaW5kZXggNmY0NDBhZDc1NTY4ZTc1NzI4ZmJiMDEy
OGUxMzA0MDM2ZDY1NTFlZC4uMTY4OTJkM2M4ZWFjNzUxMDBmMDE2OGMzODg4YmI1NGE0NDU0MGU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMSW1wbC5oCkBAIC00OSw2ICs0
OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyc2VkVVJMLCAicGFy
c2VkVVJMIik7CiAgICAgICAgIGluZm8uYWRkTWVtYmVyKG1faW52YWxpZFVybFN0cmluZywgImlu
dmFsaWRVcmxTdHJpbmciKTsKICAgICB9CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW52YWxpZFVybFN0cmluZy5p
c1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKQorICAgICAgICAgICAgJiYgbV9wYXJzZWRVUkwu
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7CisgICAgfQogICAgIFBhc3NSZWZQdHI8S1VS
TFdURlVSTEltcGw+IGNvcHkoKSBjb25zdDsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186653</attachid>
            <date>2013-02-05 10:21:45 -0800</date>
            <delta_ts>2013-02-05 18:12:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-108726-20130205101823.patch</filename>
            <type>text/plain</type>
            <size>25627</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMxMjAxMTkwNDY2MjgzMzEwOGEzODAz
ZDVmMmZlMzQ0OWU3YzU3YjcuLjE5MDRiNTFkNmMyYWVkMDExYjY0MzM5NTMyMDBiZDY1NDE5Njdk
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMDUgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBDYWxsIFhTU0F1ZGl0b3IncyBkaWRCbG9ja1Nj
cmlwdCgpIGZvciB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpIG1ldGhvZHMgdG8gQ1N0cmluZywgU3RyaW5nLCBQYXJzZWRVUkwgYW5kIFVS
TFN0cmluZy4KKyAgICAgICAgVGhlc2UgbWV0aG9kcyBjaGVjayB0byBlbnN1cmUgdGhlcmUgYXJl
IDAgb3IgMSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OkNTdHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAg
IChDU3RyaW5nKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmlu
Zyk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmg6CisgICAgICAgIChXVEY6OlBh
cnNlZFVSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisgICAgICAgICog
d3RmL3VybC9hcGkvVVJMU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlVSTFN0cmluZzo6aXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisKIDIwMTMtMDItMDQgIEJlbmphbWluIFBv
dWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBBdG9t
aWNTdHJpbmcgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA2MmU2ZGJkZDJkY2UwMWUzYTlmYWFlNjA0
MmUxNWJkYmU2Y2U0ZS4uNTNlYjQ0OGRhNjk5YzFhNjJiZjA2MTUxNzZiMDA4MzVkZWFjZTBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY1IEBACiAyMDEzLTAyLTA1ICBUb255IEdlbnRpbGNvcmUg
IDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgQ2FsbCBYU1NBdWRpdG9yJ3MgZGlkQmxv
Y2tTY3JpcHQoKSBmb3IgdGhlIHRocmVhZGVkIEhUTUwgcGFyc2VyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg3MjYKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2F1c2VzIHVzIHRvIGNhbGwg
ZGlkQmxvY2tTY3JpcHQoKSBvbiB0aGUgbWFpbiB0aHJlYWQgaWYgdGhlIENvbXBhY3RIVE1MIHRv
a2VuIGhhcyBYU1NJbmZvLgorICAgICAgICBUbyBkbyBzbywgd2U6CisgICAgICAgIDEuIFJlbmFt
ZSBEaWRCbG9ja1NjcmlwdFJlcXVlc3QgdG8gWFNTSW5mby4KKyAgICAgICAgMi4gQWRkIGFuIE93
blB0cjxYU1NJbmZvPiBmaWVsZCB0byBDb21wYWN0SFRNTFRva2VuLgorICAgICAgICAzLiBBZGQg
YW4gaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgbWV0aG9kIHRvIFN0cmluZyBhbmQgS1VS
TC4KKworICAgICAgICBXZSBkb24ndCB5ZXQgcG9wdWxhdGUgZGlkQmxvY2tTY3JpcHRSZXF1ZXN0
IG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZCwgYnV0IHRoaXMgc2hvdWxkIGp1c3Qgd29yayBvbmNl
IHdlIGRvLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIG5ldyBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOiBV
cGRhdGUgY29tbWVudCBmb3IgcmVuYW1lLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0NvbXBhY3RI
VE1MVG9rZW4uY3BwOgorICAgICAgICAoU2FtZVNpemVBc0NvbXBhY3RIVE1MVG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbik6IEFkZCBh
IGNvcHkgY29uc3RydWN0b3IgdXNlZCBieSBWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpDb21w
YWN0SFRNTFRva2VuOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOiBJbmNsdWRlIG5ldyBt
X3hzc0luZm8gZmllbGQgaW4gc2FmZXR5IGNoZWNrLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjp4c3NJbmZvKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb21wYWN0SFRNTFRva2VuOjpzZXRYU1NJbmZvKTogQWRkZWQuCisgICAgICAg
ICogaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oOiBBZGQgYW4gT3duUHRyPFhTU0luZm8+
IGZpZWxkIHRvIENvbXBhY3RIVE1MVG9rZW4uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENvbXBhY3RIVE1MVG9rZW4pOgorICAgICAgICAoV1RGKTogQWRkIFZlY3RvclRyYWl0cyBuZWNl
c3NhcnkgZm9yIGNvcHlpbmcgVmVjdG9yIGZpZWxkcyBvYmplY3RzIHRoYXQgY29udGFpbiBhbiBP
d25QdHIuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJv
bUJhY2tncm91bmRQYXJzZXIpOiBBZGQgbmV3IGRpZEJsb2NrU2NyaXB0KCkgY2FsbC4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6IFJlbmFtaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6WFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuaDogUmVuYW1pbmcuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFhTU0F1ZGl0
b3IpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYU1NJbmZvOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9yRGVsZWdhdGU6OmRp
ZEJsb2NrU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlhTU0luZm86OmNyZWF0ZSk6CisgICAgICAgIChYU1NJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0luZm86OlhTU0luZm8pOgorICAgICAgICAoWFNTQXVk
aXRvckRlbGVnYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktVUkw6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTC5oOgorICAgICAgICAoS1VSTCk6
CisgICAgICAgICogcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OktVUkxHb29nbGVQcml2YXRlOjppc1NhZmVUb1NlbmRUb0Fub3Ro
ZXJUaHJlYWQpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5o
OgorICAgICAgICAoS1VSTEdvb2dsZVByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxX
VEZVUkxJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpLVVJMV1RGVVJMSW1wbDo6aXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisKKzIwMTMtMDItMDUgIFRvbnkgR2VudGlsY29y
ZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KKwogICAgICAgICBDb250aW51ZSBtYWtpbmcgWFNTQXVk
aXRvciB0aHJlYWQgc2FmZTogUmVtb3ZlIGRlcGVuZGVuY3kgb24gcGFyc2VyJ3Mgc291cmNlRm9y
VG9rZW4gYW5kIFRleHRSZXNvdXJjZURlY29kZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODY5OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0NTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcAppbmRl
eCBmZTE0ODU1MzI2MDRkMDRlMjcxMzIxNGE4Y2FmZTU4YjQwMzk5MjRhLi44NjE5M2NlOTU0Mzk3
M2U2NGU2ZWRiMjQxYjZiMGQ0YTQ0MjNhNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAKQEAg
LTk5LDYgKzk5LDExIEBAIHZvaWQgQ1N0cmluZzo6Y29weUJ1ZmZlcklmTmVlZGVkKCkKICAgICBt
ZW1jcHkobV9idWZmZXItPm11dGFibGVEYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBsZW5ndGggKyAx
KTsKIH0KIAorYm9vbCBDU3RyaW5nOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25z
dAoreworICAgIHJldHVybiAhbV9idWZmZXIgfHwgbV9idWZmZXItPmhhc09uZVJlZigpOworfQor
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikKIHsK
ICAgICBpZiAoYS5pc051bGwoKSAhPSBiLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9DU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaAppbmRl
eCA0ZDg5NGIxOTZkMDM5ZTI0YzI4Nzg1ZjFmYjQzYTIzNDM3OWQyYWE3Li4xZGY5ZjZiMzAwY2Y0
ZmVlNzZjYmE4Y2Y4MGQxNWJiMGViYzhjMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0NTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaApAQCAtNzIs
NiArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9idWZmZXI7IH0KKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0OwogCiAgICAgQ1N0cmluZ0J1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDAwYzUxNDBi
MWMwMjhiODE5OTE5M2UyNmJhYWE1Y2Y1ZmZlMThhYzYuLjhmYWM1NTk5YTNlMTA0ZWQxMWY2MmZh
MzYyNTIyN2EzMDE5Y2E0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTY2MSw2
ICs2NjEsMTcgQEAgU3RyaW5nIFN0cmluZzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICByZXR1
cm4gbV9pbXBsLT5pc29sYXRlZENvcHkoKTsKIH0KIAorYm9vbCBTdHJpbmc6OmlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChpbXBsKCktPmhhc09uZVJlZigpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHZvaWQgU3RyaW5nOjpzcGxpdChjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkgY29uc3QK
IHsKICAgICByZXN1bHQuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDM4OTk0
Yjg4YjQyOTkxMmJjZThjMDNjOTczMDFhODRmZTkwYjMxMTEuLjA4ZjQwM2Y4NTgyMjRjNDM3MWQ0
Yzg2NjcwNDFlNzNlZjYxY2E4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzk0LDYg
KzM5NCw3IEBAIHB1YmxpYzoKICAgICBib29sIHBlcmNlbnRhZ2UoaW50JiBwZXJjZW50YWdlKSBj
b25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAog
ICAgIC8vIFByZXZlbnQgU3RyaW5ncyBmcm9tIGJlaW5nIGltcGxpY2l0bHkgY29udmVydGFibGUg
dG8gYm9vbCBhcyBpdCB3aWxsIGJlIGFtYmlndW91cyBvbiBhbnkgcGxhdGZvcm0gdGhhdAogICAg
IC8vIGFsbG93cyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIGFub3RoZXIgcG9pbnRlciB0eXBlIChl
LmcuLCBNYWMgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gTlNTdHJpbmcqKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmggYi9Tb3VyY2UvV1RGL3d0
Zi91cmwvYXBpL1BhcnNlZFVSTC5oCmluZGV4IGMyY2JiOWNkMjdkZTQwZDQwY2ViZmMwNjkxN2Qy
NjkxY2NkYmYxMmUuLmNjMmE1ZDAwODk2ZGVjZjg4MGQ5MGQyMTVhYzRjOGMyZThlOGNkM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgKKysrIGIvU291cmNl
L1dURi93dGYvdXJsL2FwaS9QYXJzZWRVUkwuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFBhcnNlZFVSTChjb25zdCBQYXJzZWRVUkwm
IGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIFVSTFF1ZXJ5Q2hhcnNldENvbnZlcnRlciop
OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFBhcnNlZFVSTCBpc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlYy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsgfQogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gIW1fc3BlYy5zdHJpbmcoKS5pc051bGwoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5oIGIvU291cmNlL1dURi93
dGYvdXJsL2FwaS9VUkxTdHJpbmcuaAppbmRleCA3MGVmMjE5MTBlMmFkZDRjMzAzZmJmODRjMGZk
MjcwYzkzNTFjZjgzLi44ZmRkMWExNmEyMzcwN2ExNTE0Y2VjYTI5ZTA1MjlmN2RhMmUzZDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3VybC9hcGkvVVJMU3RyaW5nLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgog
ICAgIFVSTFN0cmluZygpIHsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzt9CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsg
fQogCiAjaWZuZGVmIE5ERUJVRwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5k
SFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRN
TFBhcnNlci5jcHAKaW5kZXggYjljMjY0OWRlNjgzMTY5MzIyNWMyNTFkNDQ3MmJiNjZkMDY0ZjU2
Yy4uMTM0OTdmNWRlZDNlNGVjNzZhNTE3ZTc0NWEwNzFkODk0Y2JjNTIwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAt
MTUzLDcgKzE1Myw3IEBAIGJvb2wgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnNpbXVsYXRlVHJlZUJ1
aWxkZXIoY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgdG9rZW4pCiB2b2lkIEJhY2tncm91bmRIVE1M
UGFyc2VyOjpwdW1wVG9rZW5pemVyKCkKIHsKICAgICB3aGlsZSAobV90b2tlbml6ZXItPm5leHRU
b2tlbihtX2lucHV0LmN1cnJlbnQoKSwgKm1fdG9rZW4uZ2V0KCkpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBDYWxsIG1feHNzQXVkaXRvci5maWx0ZXJUb2tlbihtX3Rva2VuKSBhbmQgcHV0IHJlc3Vs
dGluZyBEaWRCbG9ja1NjcmlwdFJlcXVlc3QgaW50byBDb21wYWN0SFRNTFRva2VuLgorICAgICAg
ICAvLyBGSVhNRTogQ2FsbCBtX3hzc0F1ZGl0b3IuZmlsdGVyVG9rZW4obV90b2tlbikgYW5kIHB1
dCByZXN1bHRpbmcgWFNTSW5mbyBpbnRvIENvbXBhY3RIVE1MVG9rZW4uCiAgICAgICAgIG1fcGVu
ZGluZ1Rva2Vucy0+YXBwZW5kKENvbXBhY3RIVE1MVG9rZW4obV90b2tlbi5nZXQoKSwgVGV4dFBv
c2l0aW9uKG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCksIG1faW5wdXQuY3VycmVudCgp
LmN1cnJlbnRDb2x1bW4oKSkpKTsKICAgICAgICAgbV90b2tlbi0+Y2xlYXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAppbmRleCBhMWEy
N2YyMDVhNDJiZGM0ZjcyYWY1Yzk4NjZjZmU1YTBhNWM5MzAyLi5kOGE1MTEwNjk3MjEwNDdkYTcw
MzMzNjRiNjQ0ODAwMDY0N2JlZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9Db21wYWN0SFRNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9Db21wYWN0SFRNTFRva2VuLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbXBh
Y3RIVE1MVG9rZW4uaCIKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgorI2luY2x1ZGUgIlhTU0F1
ZGl0b3JEZWxlZ2F0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDYgKzM5LDcg
QEAgc3RydWN0IFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuICB7CiAgICAgU3RyaW5nIG5hbWU7
CiAgICAgVmVjdG9yPENvbXBhY3RBdHRyaWJ1dGU+IHZlY3RvcjsKICAgICBUZXh0UG9zaXRpb24g
dGV4dFBvc2l0aW9uOworICAgIE93blB0cjxYU1NJbmZvPiB4c3NJbmZvOwogfTsKIAogQ09NUElM
RV9BU1NFUlQoc2l6ZW9mKENvbXBhY3RIVE1MVG9rZW4pID09IHNpemVvZihTYW1lU2l6ZUFzQ29t
cGFjdEhUTUxUb2tlbiksIENvbXBhY3RIVE1MVG9rZW5fc2hvdWxkX3N0YXlfc21hbGwpOwpAQCAt
ODYsMjcgKzg4LDM3IEBAIENvbXBhY3RIVE1MVG9rZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3Qg
SFRNTFRva2VuKiB0b2tlbiwgY29uc3QgVGV4dFBvc2l0aW9uJiB0CiAgICAgfQogfQogCi1zdGF0
aWMgYm9vbCBpc1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCitDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKGNvbnN0IENvbXBhY3RI
VE1MVG9rZW4mIG90aGVyKQorICAgIDogbV90eXBlKG90aGVyLnR5cGUoKSkKKyAgICAsIG1faXNB
bGw4Qml0RGF0YShvdGhlci5pc0FsbDhCaXREYXRhKCkpCisgICAgLCBtX2RvY3R5cGVGb3JjZXNR
dWlya3Mob3RoZXIuZG9jdHlwZUZvcmNlc1F1aXJrcygpKQorICAgICwgbV90ZXh0UG9zaXRpb24o
b3RoZXIudGV4dFBvc2l0aW9uKCkpCiB7Ci0gICAgU3RyaW5nSW1wbCogaW1wbCA9IHN0cmluZy5p
bXBsKCk7Ci0gICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaW1w
bC0+aGFzT25lUmVmKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChzdHJpbmcuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG90aGVyLnhzc0luZm8oKSkKKyAgICAgICAgbV94c3NJbmZvID0gYWRvcHRQdHIobmV3IFhTU0lu
Zm8oKm90aGVyLnhzc0luZm8oKSkpOwogfQogCiBib29sIENvbXBhY3RIVE1MVG9rZW46OmlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0CiB7CiAgICAgZm9yIChWZWN0b3I8Q29tcGFj
dEF0dHJpYnV0ZT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9hdHRyaWJ1dGVzLmJlZ2luKCk7IGl0
ICE9IG1fYXR0cmlidXRlcy5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoIWlzU3RyaW5nU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZChpdC0+bmFtZSgpKSkKKyAgICAgICAgaWYgKCFpdC0+bmFt
ZSgpLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoIWlzU3RyaW5nU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZChpdC0+
dmFsdWUoKSkpCisgICAgICAgIGlmICghaXQtPnZhbHVlKCkuaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiBp
c1N0cmluZ1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQobV9kYXRhKTsKKyAgICBpZiAobV94c3NJ
bmZvICYmICFtX3hzc0luZm8tPmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fZGF0YS5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKTsKK30KKworWFNTSW5mbyogQ29tcGFjdEhUTUxUb2tlbjo6eHNzSW5mbygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1feHNzSW5mby5nZXQoKTsKK30KKwordm9pZCBDb21wYWN0SFRNTFRv
a2VuOjpzZXRYU1NJbmZvKFBhc3NPd25QdHI8WFNTSW5mbz4geHNzSW5mbykKK3sKKyAgICBtX3hz
c0luZm8gPSB4c3NJbmZvOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9D
b21wYWN0SFRNTFRva2VuLmgKaW5kZXggZTQ5MmVlYzJlNjM5ODMyNmZlN2Y3MDU2YzI5YTY3MTNl
NjQ4MmZlYS4uNmM5NWY2YTFjZWVhYjY3OTQxOGU3MTMwNTk4M2M4ZmI5OTQzNzlmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaApAQCAtMjksNiAr
MjksOCBAQAogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKIAogI2luY2x1ZGUgIkhU
TUxUb2tlblR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzgsNiArNDAsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVG9rZW47CitjbGFzcyBYU1NJbmZvOwogCiBj
bGFzcyBDb21wYWN0QXR0cmlidXRlIHsKIHB1YmxpYzoKQEAgLTU4LDYgKzYxLDcgQEAgcHJpdmF0
ZToKIGNsYXNzIENvbXBhY3RIVE1MVG9rZW4gewogcHVibGljOgogICAgIENvbXBhY3RIVE1MVG9r
ZW4oY29uc3QgSFRNTFRva2VuKiwgY29uc3QgVGV4dFBvc2l0aW9uJik7CisgICAgQ29tcGFjdEhU
TUxUb2tlbihjb25zdCBDb21wYWN0SFRNTFRva2VuJik7CiAKICAgICBib29sIGlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwogCkBAIC03Myw2ICs3Nyw4IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIHB1YmxpY0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXNbMF0ubmFtZSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzWzBdLnZhbHVlKCk7IH0KICAgICBib29sIGRvY3R5
cGVGb3JjZXNRdWlya3MoKSBjb25zdCB7IHJldHVybiBtX2RvY3R5cGVGb3JjZXNRdWlya3M7IH0K
KyAgICBYU1NJbmZvKiB4c3NJbmZvKCkgY29uc3Q7CisgICAgdm9pZCBzZXRYU1NJbmZvKFBhc3NP
d25QdHI8WFNTSW5mbz4pOwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDQ7CkBA
IC04MywxMiArODksMTkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9kYXRhOyAvLyAibmFtZSIs
ICJjaGFyYWN0ZXJzIiwgb3IgImRhdGEiIGRlcGVuZGluZyBvbiBtX3R5cGUKICAgICBWZWN0b3I8
Q29tcGFjdEF0dHJpYnV0ZT4gbV9hdHRyaWJ1dGVzOwogICAgIFRleHRQb3NpdGlvbiBtX3RleHRQ
b3NpdGlvbjsKKyAgICBPd25QdHI8WFNTSW5mbz4gbV94c3NJbmZvOwogfTsKIAogdHlwZWRlZiBW
ZWN0b3I8Q29tcGFjdEhUTUxUb2tlbj4gQ29tcGFjdEhUTUxUb2tlblN0cmVhbTsKIAogfQogCitu
YW1lc3BhY2UgV1RGIHsKKy8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGEgc3RydWN0IHdpdGggT3du
UHRyLiBXZSBrbm93IENvbXBhY3RIVE1MVG9rZW4gaXMgc2ltcGxlIGVub3VnaCB0aGF0CisvLyBp
bml0aWFsaXppbmcgdG8gMCBhbmQgbW92aW5nIHdpdGggbWVtY3B5IChhbmQgdGhlbiBub3QgZGVz
dHJ1Y3RpbmcgdGhlIG9yaWdpbmFsKSB3aWxsIHdvcmsuCit0ZW1wbGF0ZTw+IHN0cnVjdCBWZWN0
b3JUcmFpdHM8V2ViQ29yZTo6Q29tcGFjdEhUTUxUb2tlbj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRy
YWl0cyB7IH07Cit9CisKICNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggNjEwNjExMzM5NjUwZWVjOWQyYzI3MDdiZjNjNzU2NmE3ZDVkNDFmMS4u
ZjY1MzU5MjhlOTEyZTU4MTQ1YzE0MGYxM2YyMDI0ZGMwM2FmYTQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zMDIsNyAr
MzAyLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NQYXJzZWRDaHVua0Zyb21C
YWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKIHsKICAgICBBU1NFUlQoc2hvdWxkVXNl
VGhyZWFkaW5nKCkpOwogCi0gICAgLy8gZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFy
c2VyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVu
dCwKKyAgICAvLyBUaGlzIG1ldGhvZCBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNo
ZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlz
bid0IGRlbGV0ZWQgeWV0LgogICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3Qo
dGhpcyk7CiAKQEAgLTMxNiw4ICszMTYsMTAgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
b2Nlc3NQYXJzZWRDaHVua0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8UGFyc2UKICAg
ICBmb3IgKFZlY3RvcjxDb21wYWN0SFRNTFRva2VuPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0b2tl
bnMtPmJlZ2luKCk7IGl0ICE9IHRva2Vucy0+ZW5kKCk7ICsraXQpIHsKICAgICAgICAgQVNTRVJU
KCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpOwogCi0gICAgICAgIC8vIEZJWE1FOiBDYWxsIG1feHNz
QXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCkgd2l0aCBEaWRCbG9ja1NjcmlwdFJlcXVl
c3QgZnJvbSB0aGUgQ29tcGFjdEhUTUxUb2tlbi4KICAgICAgICAgbV90ZXh0UG9zaXRpb24gPSBp
dC0+dGV4dFBvc2l0aW9uKCk7CisKKyAgICAgICAgaWYgKFhTU0luZm8qIHhzc0luZm8gPSBpdC0+
eHNzSW5mbygpKQorICAgICAgICAgICAgbV94c3NBdWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3Jp
cHQoKnhzc0luZm8pOwogICAgICAgICBjb25zdHJ1Y3RUcmVlRnJvbUNvbXBhY3RIVE1MVG9rZW4o
Kml0KTsKIAogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCkBAIC0zNzgsOSArMzgwLDkgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUp
CiAKICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBYU1MgZmlsdGVyIGlubmVySFRNTCwgd2hpY2gg
bWVhbnMgd2UgKGludGVudGlvbmFsbHkpIGZhaWwKICAgICAgICAgICAgIC8vIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9kb20td3JpdGUtaW5uZXJIVE1MLmh0bWwKLSAgICAgICAgICAg
IE93blB0cjxEaWRCbG9ja1NjcmlwdFJlcXVlc3Q+IHJlcXVlc3QgPSBtX3hzc0F1ZGl0b3IuZmls
dGVyVG9rZW4oRmlsdGVyVG9rZW5SZXF1ZXN0KHRva2VuKCksIG1fc291cmNlVHJhY2tlciwgZG9j
dW1lbnQoKS0+ZGVjb2RlcigpKSk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdCkKLSAgICAgICAg
ICAgICAgICBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9ja1NjcmlwdChyZXF1ZXN0LnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBPd25QdHI8WFNTSW5mbz4geHNzSW5mbyA9IG1feHNzQXVkaXRv
ci5maWx0ZXJUb2tlbihGaWx0ZXJUb2tlblJlcXVlc3QodG9rZW4oKSwgbV9zb3VyY2VUcmFja2Vy
LCBkb2N1bWVudCgpLT5kZWNvZGVyKCkpKTsKKyAgICAgICAgICAgIGlmICh4c3NJbmZvKQorICAg
ICAgICAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCp4c3NJbmZv
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKHRva2Vu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCAyZTA4
MDNhNDNhODM4MDAyYzllMTNhMDNmMDQ5YjA2YzRkMDgzYzlkLi4wMTU1OTdhZTRlMjk0MzI4MDdh
ODM1MzU2OTU3MjNlNzBjOGE2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPERpZEJsb2NrU2NyaXB0UmVx
dWVzdD4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQorUGFzc093blB0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
SW5pdGlhbGl6ZWQpOwogICAgIGlmICghbV9pc0VuYWJsZWQgfHwgbV94c3NQcm90ZWN0aW9uID09
IFhTU1Byb3RlY3Rpb25EaXNhYmxlZCkKQEAgLTI5NiwxMyArMjk2LDEzIEBAIFBhc3NPd25QdHI8
RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlCiAKICAgICBpZiAoZGlkQmxvY2tTY3JpcHQpIHsKICAgICAgICAgYm9vbCBk
aWRCbG9ja0VudGlyZVBhZ2UgPSAobV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25CbG9j
a0VuYWJsZWQpOwotICAgICAgICBPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBkaWRCbG9j
a1NjcmlwdFJlcXVlc3QgPSBEaWRCbG9ja1NjcmlwdFJlcXVlc3Q6OmNyZWF0ZShtX3JlcG9ydFVS
TCwgbV9vcmlnaW5hbFVSTCwgbV9vcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGlyZVBhZ2Up
OworICAgICAgICBPd25QdHI8WFNTSW5mbz4geHNzSW5mbyA9IFhTU0luZm86OmNyZWF0ZShtX3Jl
cG9ydFVSTCwgbV9vcmlnaW5hbFVSTCwgbV9vcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGly
ZVBhZ2UpOwogICAgICAgICBpZiAoIW1fcmVwb3J0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgbV9yZXBvcnRVUkwgPSBLVVJMKCk7CiAgICAgICAgICAgICBtX29yaWdpbmFsVVJMID0gU3Ry
aW5nKCk7CiAgICAgICAgICAgICBtX29yaWdpbmFsSFRUUEJvZHkgPSBTdHJpbmcoKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHRSZXF1ZXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIHhzc0luZm8ucmVsZWFzZSgpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAppbmRleCBmYTIzNGQz
N2NkNjUzMDAwMGIxNjhiZGY4M2Y0OGVmMDkyYzM1Zjk5Li5mMWMzNWM1YTI1NmRiZGQ0ZjY3MDg5
M2IxZTdjNmQ3YjMyM2I2ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5oCkBAIC0zMywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
aWRCbG9ja1NjcmlwdFJlcXVlc3Q7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxEb2N1bWVu
dFBhcnNlcjsKIGNsYXNzIEhUTUxTb3VyY2VUcmFja2VyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKK2NsYXNzIFhTU0luZm87CiAKIHN0cnVjdCBGaWx0ZXJUb2tlblJlcXVlc3QgewogICAg
IEZpbHRlclRva2VuUmVxdWVzdChIVE1MVG9rZW4mIHRva2VuLCBIVE1MU291cmNlVHJhY2tlciYg
c291cmNlVHJhY2tlciwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlcikKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFhTU0F1ZGl0b3IoSFRNTERvY3VtZW50
UGFyc2VyKik7CiAKICAgICB2b2lkIGluaXQoRG9jdW1lbnQqKTsKLSAgICBQYXNzT3duUHRyPERp
ZEJsb2NrU2NyaXB0UmVxdWVzdD4gZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0
Jik7CisgICAgUGFzc093blB0cjxYU1NJbmZvPiBmaWx0ZXJUb2tlbihjb25zdCBGaWx0ZXJUb2tl
blJlcXVlc3QmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtNYXhpbXVt
RnJhZ21lbnRMZW5ndGhUYXJnZXQgPSAxMDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCAzMzllZWVkYjdiOGViOTM1ODE0YTE3
NzQ5Mzg1OWU1ZDgzZmY1ZTk4Li41ZDRmYTU5ZDc2MzkzNjlmZWI0ZGM5OTE5MDIyOTQ0MzcyMTcx
Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxl
Z2F0ZS5jcHAKQEAgLTMyLDEyICszMiwyMCBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNs
dWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitib29sIFhTU0luZm86OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVwb3J0VVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhl
clRocmVhZCgpCisgICAgICAgICYmIG1fb3JpZ2luYWxVUkwuaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkKKyAgICAgICAgJiYgbV9vcmlnaW5hbEhUVFBCb2R5LmlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpOworfQorCiBYU1NBdWRpdG9yRGVsZWdhdGU6OlhTU0F1ZGl0b3JEZWxlZ2F0
ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwg
bV9kaWROb3RpZnlDbGllbnQoZmFsc2UpCkBAIC00Niw3ICs1NCw3IEBAIFhTU0F1ZGl0b3JEZWxl
Z2F0ZTo6WFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQo
bV9kb2N1bWVudCk7CiB9CiAKLXZvaWQgWFNTQXVkaXRvckRlbGVnYXRlOjpkaWRCbG9ja1Njcmlw
dChQYXNzT3duUHRyPERpZEJsb2NrU2NyaXB0UmVxdWVzdD4gcmVxdWVzdCkKK3ZvaWQgWFNTQXVk
aXRvckRlbGVnYXRlOjpkaWRCbG9ja1NjcmlwdChjb25zdCBYU1NJbmZvJiB4c3NJbmZvKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTU0LDI3ICs2MiwyNyBAQCB2b2lkIFhT
U0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQoUGFzc093blB0cjxEaWRCbG9ja1Njcmlw
dFJlcXVlc3Q+IHJlcXVlcwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xl
TWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBz
Y3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIpKSk7
CiAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogCi0gICAgaWYgKHJlcXVlc3QtPm1fZGlk
QmxvY2tFbnRpcmVQYWdlKQorICAgIGlmICh4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlKQog
ICAgICAgICBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsK
IAogICAgIGlmICghbV9kaWROb3RpZnlDbGllbnQpIHsKLSAgICAgICAgbV9kb2N1bWVudC0+ZnJh
bWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWREZXRlY3RYU1MobV9kb2N1bWVudC0+dXJsKCks
IHJlcXVlc3QtPm1fZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICAgICAgbV9kb2N1bWVudC0+ZnJh
bWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaWREZXRlY3RYU1MobV9kb2N1bWVudC0+dXJsKCks
IHhzc0luZm8ubV9kaWRCbG9ja0VudGlyZVBhZ2UpOwogICAgICAgICBtX2RpZE5vdGlmeUNsaWVu
dCA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFyZXF1ZXN0LT5tX3JlcG9ydFVSTC5pc0VtcHR5
KCkpIHsKKyAgICBpZiAoIXhzc0luZm8ubV9yZXBvcnRVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJlcG9ydERldGFpbHMgPSBJbnNwZWN0b3JPYmplY3Q6
OmNyZWF0ZSgpOwotICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtdXJs
IiwgcmVxdWVzdC0+bV9vcmlnaW5hbFVSTCk7Ci0gICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0
cmluZygicmVxdWVzdC1ib2R5IiwgcmVxdWVzdC0+bV9vcmlnaW5hbEhUVFBCb2R5KTsKKyAgICAg
ICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LXVybCIsIHhzc0luZm8ubV9vcmln
aW5hbFVSTCk7CisgICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygicmVxdWVzdC1ib2R5
IiwgeHNzSW5mby5tX29yaWdpbmFsSFRUUEJvZHkpOwogCiAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlcG9ydE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
ICAgIHJlcG9ydE9iamVjdC0+c2V0T2JqZWN0KCJ4c3MtcmVwb3J0IiwgcmVwb3J0RGV0YWlscy5y
ZWxlYXNlKCkpOwogCiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gcmVwb3J0ID0gRm9ybURhdGE6
OmNyZWF0ZShyZXBvcnRPYmplY3QtPnRvSlNPTlN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KG1fZG9jdW1lbnQtPmZyYW1lKCks
IHJlcXVlc3QtPm1fcmVwb3J0VVJMLCByZXBvcnQpOworICAgICAgICBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KG1fZG9jdW1lbnQtPmZyYW1lKCksIHhzc0luZm8ubV9yZXBvcnRVUkws
IHJlcG9ydCk7CiAgICAgfQogCi0gICAgaWYgKHJlcXVlc3QtPm1fZGlkQmxvY2tFbnRpcmVQYWdl
KQorICAgIGlmICh4c3NJbmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlKQogICAgICAgICBtX2RvY3Vt
ZW50LT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3RyaW5nKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5o
CmluZGV4IDNlZGIwMmVkMWU1MGUyZjA2N2JlZDJiMDhiYWI4Mjk4NWYyZDU0MTguLmNiOGRmM2Ex
Yjc0MGE5YjQ2ZTdkZjJjYjk0YWRhZTJkY2U5ZGNhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0zNCwyMCArMzQsMjIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAotY2xhc3MgRGlkQmxvY2tTY3Jp
cHRSZXF1ZXN0IHsKK2NsYXNzIFhTU0luZm8gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPERpZEJsb2NrU2NyaXB0UmVxdWVzdD4gY3JlYXRlKGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbEhUVFBCb2R5
LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxYU1NJbmZv
PiBjcmVhdGUoY29uc3QgS1VSTCYgcmVwb3J0VVJMLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJM
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsSFRUUEJvZHksIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaWRCbG9ja1NjcmlwdFJlcXVl
c3QocmVwb3J0VVJMLCBvcmlnaW5hbFVSTCwgb3JpZ2luYWxIVFRQQm9keSwgZGlkQmxvY2tFbnRp
cmVQYWdlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgWFNTSW5mbyhyZXBvcnRVUkws
IG9yaWdpbmFsVVJMLCBvcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGlyZVBhZ2UpKTsKICAg
ICB9CiAKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OworCiAg
ICAgS1VSTCBtX3JlcG9ydFVSTDsKICAgICBTdHJpbmcgbV9vcmlnaW5hbFVSTDsKICAgICBTdHJp
bmcgbV9vcmlnaW5hbEhUVFBCb2R5OwogICAgIGJvb2wgbV9kaWRCbG9ja0VudGlyZVBhZ2U7CiAK
IHByaXZhdGU6Ci0gICAgRGlkQmxvY2tTY3JpcHRSZXF1ZXN0KGNvbnN0IEtVUkwmIHJlcG9ydFVS
TCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbEhUVFBC
b2R5LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKKyAgICBYU1NJbmZvKGNvbnN0IEtVUkwmIHJl
cG9ydFVSTCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bEhUVFBCb2R5LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgOiBtX3JlcG9ydFVS
TChyZXBvcnRVUkwpCiAgICAgICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKICAgICAg
ICAgLCBtX29yaWdpbmFsSFRUUEJvZHkob3JpZ2luYWxIVFRQQm9keSkKQEAgLTYwLDcgKzYyLDcg
QEAgY2xhc3MgWFNTQXVkaXRvckRlbGVnYXRlIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBYU1NB
dWRpdG9yRGVsZWdhdGUoRG9jdW1lbnQqKTsKIAotICAgIHZvaWQgZGlkQmxvY2tTY3JpcHQoUGFz
c093blB0cjxEaWRCbG9ja1NjcmlwdFJlcXVlc3Q+KTsKKyAgICB2b2lkIGRpZEJsb2NrU2NyaXB0
KGNvbnN0IFhTU0luZm8mKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggZjE2YmI4YWI1ZmQwY2RlNzVmNDJjMTc3Mjcx
OWY1NzkwNWQ3ZGViNy4uN2I2YWY2MGZiMzFjMTg3ZDg4ODg3M2FkNGFkNDgwY2RjNjUzYTc4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTE5MzUsNCArMTkzNSwxNSBAQCB2b2lkIEtV
Ukw6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiAjZW5kaWYKIH0KIAorYm9vbCBLVVJMOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKSBjb25zdAoreworI2lmIFVTRShHT09HTEVVUkwpCisgICAgcmV0dXJuIG1fdXJsLmlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworI2VsaWYgVVNFKFdURlVSTCkKKyAgICByZXR1cm4g
bV91cmxJbXBsLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworI2Vsc2UgLy8gIVVTRShH
T09HTEVVUkwpCisgICAgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAppbmRleCAxMzAxM2ZiYjQw
MjA4MDIxMjIzMzcwYzk1NDRjODg2ZjhjODUyOTMyLi4yNjFmOWU0MjY1OTkzYWYzOTZmMWU5Yzg1
MGE2ZWVmMTA3MzFiZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCkBAIC0yMjcsNiArMjI3LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAppbmRleCA5MWRjNWQ5ZjRlYWZmNTQyMzQyY2Y0YmJjNTc5
ZjRiNjI4ZTNlNjMzLi4xNjdjYzM0NTVlY2EwNTJlNDhkODcyOTA2N2RhZTA5YzY3MGY4YTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcApAQCAtMzk5LDYgKzM5OSwxNCBA
QCB2b2lkIEtVUkxHb29nbGVQcml2YXRlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjbwogICAgIGluZm8uYWRkTWVtYmVyKG1faW5uZXJVUkws
ICJpbm5lclVSTCIpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcGFyc2VkLCAicGFyc2VkIik7CiB9
CisKK2Jvb2wgS1VSTEdvb2dsZVByaXZhdGU6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpCisgICAgICAgICYmIG1fdXRmOC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKQorICAg
ICAgICAmJiAoIW1faW5uZXJVUkwgfHwgbV9pbm5lclVSTC0+aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkpOworfQorCiAvLyBLVVJMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBJbml0aWFsaXpl
cyB3aXRoIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhbiBhYnNvbHV0ZSBVUkwuIE5vIGVuY29kaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaAppbmRleCA3MjIy
NjNlYmNjMmNmNmIzODQzZjRiMjg5YTIxNmQwMjQ4NmRiNTYzLi40Yjk2YWVmMzc3MGY2ZTFiNTAx
ZDVjZGFjMjdhNGQ4ZDJiMmQzMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMR29vZ2xlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxH
b29nbGVQcml2YXRlLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEtVUkwqIGlubmVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lclVSTC5nZXQoKTsg
fQogCiAgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OworICAgICAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0SW5uZXJVUkwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZVUkxJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMV1RGVVJMSW1wbC5oCmluZGV4IDZmNDQwYWQ3NTU2OGU3NTcyOGZiYjAx
MjhlMTMwNDAzNmQ2NTUxZWQuLjE2ODkyZDNjOGVhYzc1MTAwZjAxNjhjMzg4OGJiNTRhNDQ1NDBl
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZVUkxJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaApAQCAtNDksNiAr
NDksMTEgQEAgcHVibGljOgogICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3BhcnNlZFVSTCwgInBh
cnNlZFVSTCIpOwogICAgICAgICBpbmZvLmFkZE1lbWJlcihtX2ludmFsaWRVcmxTdHJpbmcsICJp
bnZhbGlkVXJsU3RyaW5nIik7CiAgICAgfQorICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ludmFsaWRVcmxTdHJpbmcu
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkKKyAgICAgICAgICAgICYmIG1fcGFyc2VkVVJM
LmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworICAgIH0KICAgICBQYXNzUmVmUHRyPEtV
UkxXVEZVUkxJbXBsPiBjb3B5KCkgY29uc3Q7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186738</attachid>
            <date>2013-02-05 18:12:11 -0800</date>
            <delta_ts>2013-02-06 09:51:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108726-20130205180848.patch</filename>
            <type>text/plain</type>
            <size>25622</size>
            <attacher name="Tony Gentilcore">tonyg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc5Yzg2ZmE2YzRmZDVjMTFhYjA2NzI2
ZDM2YTIzZGIyOTY3NTE4YTcuLmVlMTdmMTE1YjAzNGVkNmJhNTcwZWNiZGI4YzAwNzcyNWU2OTgx
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMDUgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KKworICAgICAgICBDYWxsIFhTU0F1ZGl0b3IncyBkaWRCbG9ja1Nj
cmlwdCgpIGZvciB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpIG1ldGhvZHMgdG8gQ1N0cmluZywgU3RyaW5nLCBQYXJzZWRVUkwgYW5kIFVS
TFN0cmluZy4KKyAgICAgICAgVGhlc2UgbWV0aG9kcyBjaGVjayB0byBlbnN1cmUgdGhlcmUgYXJl
IDAgb3IgMSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL3RleHQvQ1N0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OkNTdHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4dC9DU3RyaW5nLmg6CisgICAgICAg
IChDU3RyaW5nKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmc6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFkZGVkLgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmlu
Zyk6CisgICAgICAgICogd3RmL3VybC9hcGkvUGFyc2VkVVJMLmg6CisgICAgICAgIChXVEY6OlBh
cnNlZFVSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisgICAgICAgICog
d3RmL3VybC9hcGkvVVJMU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlVSTFN0cmluZzo6aXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisKIDIwMTMtMDItMDUgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBFTlVNX0NMQVNTX0JFR0lOKCkg
bWFjcm8gdG8gRU5VTV9DTEFTUygpLCBhbmQgbWFrZSBEYXRhYmFzZVR5cGUgYSBzdHJvbmcgZW51
bS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBmNjVlMzI1ZmJlYjVkNjIwOWNmYWM0NTViYzk5ZDY3MDc1NjE1ZDk4
Li40Y2UxMzI1YzhiMmNhM2QzNjVhNzVkODQ1NmNkMGZjNmJhMjEzMjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTMtMDItMDUgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBDYWxsIFhTU0F1ZGl0b3IncyBkaWRCbG9ja1NjcmlwdCgpIGZv
ciB0aGUgdGhyZWFkZWQgSFRNTCBwYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwODcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCisKKyAgICAgICAgVGhpcyBwYXRjaCBjYXVzZXMgdXMgdG8gY2FsbCBkaWRCbG9ja1Njcmlw
dCgpIG9uIHRoZSBtYWluIHRocmVhZCBpZiB0aGUgQ29tcGFjdEhUTUwgdG9rZW4gaGFzIFhTU0lu
Zm8uCisgICAgICAgIFRvIGRvIHNvLCB3ZToKKyAgICAgICAgMS4gUmVuYW1lIERpZEJsb2NrU2Ny
aXB0UmVxdWVzdCB0byBYU1NJbmZvLgorICAgICAgICAyLiBBZGQgYW4gT3duUHRyPFhTU0luZm8+
IGZpZWxkIHRvIENvbXBhY3RIVE1MVG9rZW4uCisgICAgICAgIDMuIEFkZCBhbiBpc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKSBtZXRob2QgdG8gU3RyaW5nIGFuZCBLVVJMLgorCisgICAgICAg
IFdlIGRvbid0IHlldCBwb3B1bGF0ZSBkaWRCbG9ja1NjcmlwdFJlcXVlc3Qgb24gdGhlIGJhY2tn
cm91bmQgdGhyZWFkLCBidXQgdGhpcyBzaG91bGQganVzdCB3b3JrIG9uY2Ugd2UgZG8uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6cHVtcFRva2VuaXplcik6IFVwZGF0ZSBjb21tZW50
IGZvciByZW5hbWUuCisgICAgICAgICogaHRtbC9wYXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5jcHA6
CisgICAgICAgIChTYW1lU2l6ZUFzQ29tcGFjdEhUTUxUb2tlbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wYWN0SFRNTFRva2VuOjpDb21wYWN0SFRNTFRva2VuKTogQWRkIGEgY29weSBjb25zdHJ1
Y3RvciB1c2VkIGJ5IFZlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBhY3RIVE1MVG9rZW46
OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEluY2x1ZGUgbmV3IG1feHNzSW5mbyBmaWVs
ZCBpbiBzYWZldHkgY2hlY2suCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbXBhY3RIVE1MVG9rZW46Onhzc0luZm8pOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bXBhY3RIVE1MVG9rZW46OnNldFhTU0luZm8pOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL3BhcnNl
ci9Db21wYWN0SFRNTFRva2VuLmg6IEFkZCBhbiBPd25QdHI8WFNTSW5mbz4gZmllbGQgdG8gQ29t
cGFjdEhUTUxUb2tlbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29tcGFjdEhUTUxU
b2tlbik6CisgICAgICAgIChXVEYpOiBBZGQgVmVjdG9yVHJhaXRzIG5lY2Vzc2FyeSBmb3IgY29w
eWluZyBWZWN0b3IgZmllbGRzIG9iamVjdHMgdGhhdCBjb250YWluIGFuIE93blB0ci4KKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzUGFyc2VkQ2h1bmtGcm9tQmFja2dyb3VuZFBh
cnNlcik6IEFkZCBuZXcgZGlkQmxvY2tTY3JpcHQoKSBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcDogUmVuYW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpYU1NBdWRpdG9y
OjpmaWx0ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oOiBSZW5h
bWluZy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoWFNTQXVkaXRvcik6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0luZm86OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6WFNTSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFhTU0luZm8pOgorICAgICAgICAo
V2ViQ29yZTo6WFNTSW5mbzo6WFNTSW5mbyk6CisgICAgICAgIChYU1NBdWRpdG9yRGVsZWdhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgIChLVVJMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9LVVJMR29vZ2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6S1VSTEdvb2dsZVByaXZhdGU6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCk6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmg6CisgICAgICAgIChL
VVJMR29vZ2xlUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vS1VSTFdURlVSTEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OktVUkxXVEZVUkxJbXBsOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQpOiBBZGRlZC4KKwogMjAxMy0wMi0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIEVOVU1fQ0xBU1NfQkVHSU4oKSBtYWNybyB0byBFTlVNX0NM
QVNTKCksIGFuZCBtYWtlIERhdGFiYXNlVHlwZSBhIHN0cm9uZyBlbnVtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0
cmluZy5jcHAKaW5kZXggZmUxNDg1NTMyNjA0ZDA0ZTI3MTMyMTRhOGNhZmU1OGI0MDM5OTI0YS4u
ODYxOTNjZTk1NDM5NzNlNjRlNmVkYjI0MWI2YjBkNGE0NDIzYTYyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NT
dHJpbmcuY3BwCkBAIC05OSw2ICs5OSwxMSBAQCB2b2lkIENTdHJpbmc6OmNvcHlCdWZmZXJJZk5l
ZWRlZCgpCiAgICAgbWVtY3B5KG1fYnVmZmVyLT5tdXRhYmxlRGF0YSgpLCBidWZmZXItPmRhdGEo
KSwgbGVuZ3RoICsgMSk7CiB9CiAKK2Jvb2wgQ1N0cmluZzo6aXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYnVmZmVyIHx8IG1fYnVmZmVyLT5oYXNP
bmVSZWYoKTsKK30KKwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENT
dHJpbmcmIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9D
U3RyaW5nLmgKaW5kZXggNGQ4OTRiMTk2ZDAzOWUyNGMyODc4NWYxZmI0M2EyMzQzNzlkMmFhNy4u
MWRmOWY2YjMwMGNmNGZlZTc2Y2JhOGNmODBkMTViYjBlYmM4YzMwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3Ry
aW5nLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gIW1fYnVmZmVyOyB9CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQoKSBjb25zdDsKIAogICAgIENTdHJpbmdCdWZmZXIqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApp
bmRleCAwMGM1MTQwYjFjMDI4YjgxOTkxOTNlMjZiYWFhNWNmNWZmZTE4YWM2Li44ZmFjNTU5OWEz
ZTEwNGVkMTFmNjJmYTM2MjUyMjdhMzAxOWNhNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCkBAIC02NjEsNiArNjYxLDE3IEBAIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1faW1wbC0+aXNvbGF0ZWRDb3B5KCk7CiB9CiAKK2Jvb2wgU3RyaW5n
Ojppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAoreworICAgIGlmICghaW1wbCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoaW1wbCgpLT5oYXNPbmVSZWYoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFN0cmluZzo6c3BsaXQoY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJpZXMsIFZlY3RvcjxTdHJpbmc+JiBy
ZXN1bHQpIGNvbnN0CiB7CiAgICAgcmVzdWx0LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAzODk5NGI4OGI0Mjk5MTJiY2U4YzAzYzk3MzAxYTg0ZmU5MGIzMTExLi5kOWZhNTFj
MjU3NzgzNmNkOGNlNjc2NGI5ZDBhOTQ5NjNjYzk5NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKQEAgLTM5NCw2ICszOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwZXJjZW50YWdlKGludCYg
cGVyY2VudGFnZSkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIGlz
b2xhdGVkQ29weSgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwogCiAgICAgLy8gUHJldmVudCBTdHJpbmdz
IGZyb20gYmVpbmcgaW1wbGljaXRseSBjb252ZXJ0YWJsZSB0byBib29sIGFzIGl0IHdpbGwgYmUg
YW1iaWd1b3VzIG9uIGFueSBwbGF0Zm9ybSB0aGF0CiAgICAgLy8gYWxsb3dzIGltcGxpY2l0IGNv
bnZlcnNpb24gdG8gYW5vdGhlciBwb2ludGVyIHR5cGUgKGUuZy4sIE1hYyBhbGxvd3MgaW1wbGlj
aXQgY29udmVyc2lvbiB0byBOU1N0cmluZyopLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dXJsL2FwaS9QYXJzZWRVUkwuaCBiL1NvdXJjZS9XVEYvd3RmL3VybC9hcGkvUGFyc2VkVVJMLmgK
aW5kZXggYzJjYmI5Y2QyN2RlNDBkNDBjZWJmYzA2OTE3ZDI2OTFjY2RiZjEyZS4uY2MyYTVkMDA4
OTZkZWNmODgwZDkwZDIxNWFjNGM4YzJlOGU4Y2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdXJsL2FwaS9QYXJzZWRVUkwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1BhcnNl
ZFVSTC5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
ZXhwbGljaXQgUGFyc2VkVVJMKGNvbnN0IFBhcnNlZFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgVVJMUXVlcnlDaGFyc2V0Q29udmVydGVyKik7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgUGFyc2VkVVJMIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIGJvb2wgaXNTYWZlVG9T
ZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjLmlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpOyB9CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAh
bV9zcGVjLnN0cmluZygpLmlzTnVsbCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3VybC9hcGkvVVJMU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi91cmwvYXBpL1VSTFN0cmluZy5o
CmluZGV4IDcwZWYyMTkxMGUyYWRkNGMzMDNmYmY4NGMwZmQyNzBjOTM1MWNmODMuLjhmZGQxYTE2
YTIzNzA3YTE1MTRjZWNhMjllMDUyOWY3ZGEyZTNkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3VybC9hcGkvVVJMU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdXJsL2FwaS9VUkxT
dHJpbmcuaApAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAgICAgVVJMU3RyaW5nKCkgeyB9CiAK
ICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nO30KKyAg
ICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOyB9CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcAppbmRleCBiOWMy
NjQ5ZGU2ODMxNjkzMjI1YzI1MWQ0NDcyYmI2NmQwNjRmNTZjLi4xMzQ5N2Y1ZGVkM2U0ZWM3NmE1
MTdlNzQ1YTA3MWQ4OTRjYmM1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgYm9vbCBC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6c2ltdWxhdGVUcmVlQnVpbGRlcihjb25zdCBDb21wYWN0SFRN
TFRva2VuJiB0b2tlbikKIHZvaWQgQmFja2dyb3VuZEhUTUxQYXJzZXI6OnB1bXBUb2tlbml6ZXIo
KQogewogICAgIHdoaWxlIChtX3Rva2VuaXplci0+bmV4dFRva2VuKG1faW5wdXQuY3VycmVudCgp
LCAqbV90b2tlbi5nZXQoKSkpIHsKLSAgICAgICAgLy8gRklYTUU6IENhbGwgbV94c3NBdWRpdG9y
LmZpbHRlclRva2VuKG1fdG9rZW4pIGFuZCBwdXQgcmVzdWx0aW5nIERpZEJsb2NrU2NyaXB0UmVx
dWVzdCBpbnRvIENvbXBhY3RIVE1MVG9rZW4uCisgICAgICAgIC8vIEZJWE1FOiBDYWxsIG1feHNz
QXVkaXRvci5maWx0ZXJUb2tlbihtX3Rva2VuKSBhbmQgcHV0IHJlc3VsdGluZyBYU1NJbmZvIGlu
dG8gQ29tcGFjdEhUTUxUb2tlbi4KICAgICAgICAgbV9wZW5kaW5nVG9rZW5zLT5hcHBlbmQoQ29t
cGFjdEhUTUxUb2tlbihtX3Rva2VuLmdldCgpLCBUZXh0UG9zaXRpb24obV9pbnB1dC5jdXJyZW50
KCkuY3VycmVudExpbmUoKSwgbV9pbnB1dC5jdXJyZW50KCkuY3VycmVudENvbHVtbigpKSkpOwog
ICAgICAgICBtX3Rva2VuLT5jbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0NvbXBhY3RIVE1MVG9rZW4uY3BwCmluZGV4IGExYTI3ZjIwNWE0MmJkYzRmNzJhZjVjOTg2
NmNmZTVhMGE1YzkzMDIuLmQ4YTUxMTA2OTcyMTA0N2RhNzAzMzM2NGI2NDQ4MDAwNjQ3YmVkZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29tcGFjdEhUTUxUb2tlbi5oIgogCiAjaW5j
bHVkZSAiSFRNTFRva2VuLmgiCisjaW5jbHVkZSAiWFNTQXVkaXRvckRlbGVnYXRlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc0Nv
bXBhY3RIVE1MVG9rZW4gIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBWZWN0b3I8Q29tcGFjdEF0
dHJpYnV0ZT4gdmVjdG9yOwogICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb247CisgICAgT3du
UHRyPFhTU0luZm8+IHhzc0luZm87CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoQ29tcGFj
dEhUTUxUb2tlbikgPT0gc2l6ZW9mKFNhbWVTaXplQXNDb21wYWN0SFRNTFRva2VuKSwgQ29tcGFj
dEhUTUxUb2tlbl9zaG91bGRfc3RheV9zbWFsbCk7CkBAIC04NiwyNyArODgsMzcgQEAgQ29tcGFj
dEhUTUxUb2tlbjo6Q29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qIHRva2VuLCBjb25z
dCBUZXh0UG9zaXRpb24mIHQKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIGlzU3RyaW5nU2FmZVRv
U2VuZFRvQW5vdGhlclRocmVhZChjb25zdCBTdHJpbmcmIHN0cmluZykKK0NvbXBhY3RIVE1MVG9r
ZW46OkNvbXBhY3RIVE1MVG9rZW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYgb3RoZXIpCisgICAg
OiBtX3R5cGUob3RoZXIudHlwZSgpKQorICAgICwgbV9pc0FsbDhCaXREYXRhKG90aGVyLmlzQWxs
OEJpdERhdGEoKSkKKyAgICAsIG1fZG9jdHlwZUZvcmNlc1F1aXJrcyhvdGhlci5kb2N0eXBlRm9y
Y2VzUXVpcmtzKCkpCisgICAgLCBtX3RleHRQb3NpdGlvbihvdGhlci50ZXh0UG9zaXRpb24oKSkK
IHsKLSAgICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLmltcGwoKTsKLSAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpbXBsLT5oYXNPbmVSZWYoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAob3RoZXIueHNzSW5mbygpKQorICAg
ICAgICBtX3hzc0luZm8gPSBhZG9wdFB0cihuZXcgWFNTSW5mbygqb3RoZXIueHNzSW5mbygpKSk7
CiB9CiAKIGJvb2wgQ29tcGFjdEhUTUxUb2tlbjo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KCkgY29uc3QKIHsKICAgICBmb3IgKFZlY3RvcjxDb21wYWN0QXR0cmlidXRlPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2F0dHJpYnV0ZXMuYmVnaW4oKTsgaXQgIT0gbV9hdHRyaWJ1dGVzLmVuZCgp
OyArK2l0KSB7Ci0gICAgICAgIGlmICghaXNTdHJpbmdTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFk
KGl0LT5uYW1lKCkpKQorICAgICAgICBpZiAoIWl0LT5uYW1lKCkuaXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghaXNT
dHJpbmdTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKGl0LT52YWx1ZSgpKSkKKyAgICAgICAgaWYg
KCFpdC0+dmFsdWUoKS5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIGlzU3RyaW5nU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZChtX2RhdGEpOworICAgIGlmIChtX3hzc0luZm8gJiYgIW1feHNzSW5mby0+aXNT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9kYXRhLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworfQorCitYU1NJbmZv
KiBDb21wYWN0SFRNTFRva2VuOjp4c3NJbmZvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV94c3NJ
bmZvLmdldCgpOworfQorCit2b2lkIENvbXBhY3RIVE1MVG9rZW46OnNldFhTU0luZm8oUGFzc093
blB0cjxYU1NJbmZvPiB4c3NJbmZvKQoreworICAgIG1feHNzSW5mbyA9IHhzc0luZm87CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9r
ZW4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NvbXBhY3RIVE1MVG9rZW4uaAppbmRl
eCBlNDkyZWVjMmU2Mzk4MzI2ZmU3ZjcwNTZjMjlhNjcxM2U2NDgyZmVhLi42Yzk1ZjZhMWNlZWFi
Njc5NDE4ZTcxMzA1OTgzYzhmYjk5NDM3OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9Db21wYWN0SFRNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvQ29tcGFjdEhUTUxUb2tlbi5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFRI
UkVBREVEX0hUTUxfUEFSU0VSKQogCiAjaW5jbHVkZSAiSFRNTFRva2VuVHlwZXMuaCIKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zOCw2ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEhUTUxUb2tlbjsKK2NsYXNzIFhTU0luZm87CiAKIGNsYXNzIENvbXBhY3RBdHRyaWJ1dGUg
ewogcHVibGljOgpAQCAtNTgsNiArNjEsNyBAQCBwcml2YXRlOgogY2xhc3MgQ29tcGFjdEhUTUxU
b2tlbiB7CiBwdWJsaWM6CiAgICAgQ29tcGFjdEhUTUxUb2tlbihjb25zdCBIVE1MVG9rZW4qLCBj
b25zdCBUZXh0UG9zaXRpb24mKTsKKyAgICBDb21wYWN0SFRNTFRva2VuKGNvbnN0IENvbXBhY3RI
VE1MVG9rZW4mKTsKIAogICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29u
c3Q7CiAKQEAgLTczLDYgKzc3LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcHVibGlj
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlc1swXS5uYW1lKCk7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHN5c3RlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZXNbMF0udmFsdWUoKTsgfQogICAgIGJvb2wgZG9jdHlwZUZvcmNlc1F1aXJrcygpIGNvbnN0
IHsgcmV0dXJuIG1fZG9jdHlwZUZvcmNlc1F1aXJrczsgfQorICAgIFhTU0luZm8qIHhzc0luZm8o
KSBjb25zdDsKKyAgICB2b2lkIHNldFhTU0luZm8oUGFzc093blB0cjxYU1NJbmZvPik7CiAKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV90eXBlIDogNDsKQEAgLTgzLDEyICs4OSwxOSBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX2RhdGE7IC8vICJuYW1lIiwgImNoYXJhY3RlcnMiLCBvciAiZGF0
YSIgZGVwZW5kaW5nIG9uIG1fdHlwZQogICAgIFZlY3RvcjxDb21wYWN0QXR0cmlidXRlPiBtX2F0
dHJpYnV0ZXM7CiAgICAgVGV4dFBvc2l0aW9uIG1fdGV4dFBvc2l0aW9uOworICAgIE93blB0cjxY
U1NJbmZvPiBtX3hzc0luZm87CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxDb21wYWN0SFRNTFRva2Vu
PiBDb21wYWN0SFRNTFRva2VuU3RyZWFtOwogCiB9CiAKK25hbWVzcGFjZSBXVEYgeworLy8gVGhp
cyBpcyByZXF1aXJlZCBmb3IgYSBzdHJ1Y3Qgd2l0aCBPd25QdHIuIFdlIGtub3cgQ29tcGFjdEhU
TUxUb2tlbiBpcyBzaW1wbGUgZW5vdWdoIHRoYXQKKy8vIGluaXRpYWxpemluZyB0byAwIGFuZCBt
b3Zpbmcgd2l0aCBtZW1jcHkgKGFuZCB0aGVuIG5vdCBkZXN0cnVjdGluZyB0aGUgb3JpZ2luYWwp
IHdpbGwgd29yay4KK3RlbXBsYXRlPD4gc3RydWN0IFZlY3RvclRyYWl0czxXZWJDb3JlOjpDb21w
YWN0SFRNTFRva2VuPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyNTI4OWNm
MjNhMmMwZmY1MGUzMTQ1NzAyYmE3MTVkMDZkMTVhNTkwLi4yNTVkNzMxYzRlM2NiZTlmMGM0MmFk
NWQyZGU3Njk3NTE1MzU5NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093
blB0cjxQYXJzZQogewogICAgIEFTU0VSVChzaG91bGRVc2VUaHJlYWRpbmcoKSk7CiAKLSAgICAv
LyBkaWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIgY2FuIGNhdXNlIHRoaXMgcGFy
c2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAorICAgIC8vIFRoaXMgbWV0aG9k
IGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwK
ICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAg
UmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsKIApAQCAtMzE0LDggKzMx
NCwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1BhcnNlZENodW5rRnJvbUJh
Y2tncm91bmRQYXJzZXIoUGFzc093blB0cjxQYXJzZQogICAgIGZvciAoVmVjdG9yPENvbXBhY3RI
VE1MVG9rZW4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHRva2Vucy0+YmVnaW4oKTsgaXQgIT0gdG9r
ZW5zLT5lbmQoKTsgKytpdCkgewogICAgICAgICBBU1NFUlQoIWlzV2FpdGluZ0ZvclNjcmlwdHMo
KSk7CiAKLSAgICAgICAgLy8gRklYTUU6IENhbGwgbV94c3NBdWRpdG9yRGVsZWdhdGUuZGlkQmxv
Y2tTY3JpcHQoKSB3aXRoIERpZEJsb2NrU2NyaXB0UmVxdWVzdCBmcm9tIHRoZSBDb21wYWN0SFRN
TFRva2VuLgogICAgICAgICBtX3RleHRQb3NpdGlvbiA9IGl0LT50ZXh0UG9zaXRpb24oKTsKKwor
ICAgICAgICBpZiAoWFNTSW5mbyogeHNzSW5mbyA9IGl0LT54c3NJbmZvKCkpCisgICAgICAgICAg
ICBtX3hzc0F1ZGl0b3JEZWxlZ2F0ZS5kaWRCbG9ja1NjcmlwdCgqeHNzSW5mbyk7CiAgICAgICAg
IGNvbnN0cnVjdFRyZWVGcm9tQ29tcGFjdEhUTUxUb2tlbigqaXQpOwogCiAgICAgICAgIGlmIChp
c1N0b3BwZWQoKSkKQEAgLTM3Niw4ICszNzgsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6
cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKIAogICAgICAgICAgICAgLy8gV2Ug
ZG8gbm90IFhTUyBmaWx0ZXIgaW5uZXJIVE1MLCB3aGljaCBtZWFucyB3ZSAoaW50ZW50aW9uYWxs
eSkgZmFpbAogICAgICAgICAgICAgLy8gaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2Rv
bS13cml0ZS1pbm5lckhUTUwuaHRtbAotICAgICAgICAgICAgaWYgKE93blB0cjxEaWRCbG9ja1Nj
cmlwdFJlcXVlc3Q+IHJlcXVlc3QgPSBtX3hzc0F1ZGl0b3IuZmlsdGVyVG9rZW4oRmlsdGVyVG9r
ZW5SZXF1ZXN0KHRva2VuKCksIG1fc291cmNlVHJhY2tlciwgZG9jdW1lbnQoKS0+ZGVjb2Rlcigp
LCBtX3Rva2VuaXplci0+c2hvdWxkQWxsb3dDREFUQSgpKSkpCi0gICAgICAgICAgICAgICAgbV94
c3NBdWRpdG9yRGVsZWdhdGUuZGlkQmxvY2tTY3JpcHQocmVxdWVzdC5yZWxlYXNlKCkpOworICAg
ICAgICAgICAgaWYgKE93blB0cjxYU1NJbmZvPiB4c3NJbmZvID0gbV94c3NBdWRpdG9yLmZpbHRl
clRva2VuKEZpbHRlclRva2VuUmVxdWVzdCh0b2tlbigpLCBtX3NvdXJjZVRyYWNrZXIsIGRvY3Vt
ZW50KCktPmRlY29kZXIoKSwgbV90b2tlbml6ZXItPnNob3VsZEFsbG93Q0RBVEEoKSkpKQorICAg
ICAgICAgICAgICAgIG1feHNzQXVkaXRvckRlbGVnYXRlLmRpZEJsb2NrU2NyaXB0KCp4c3NJbmZv
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0cnVjdFRyZWVGcm9tSFRNTFRva2VuKHRva2Vu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCBiNmUy
ZTNlYWJiZmM5MzRhN2Q5YmQ2NGUzMjEwMDkxMDhmZDczODg1Li42OWQwMzNjOWNmZjYxZTg3OGM4
MGExMGFkN2Q3MjFhMWNjNGIwMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgfQogfQogCi1QYXNzT3duUHRyPERpZEJsb2NrU2NyaXB0UmVx
dWVzdD4gWFNTQXVkaXRvcjo6ZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1ZXN0JiBy
ZXF1ZXN0KQorUGFzc093blB0cjxYU1NJbmZvPiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25z
dCBGaWx0ZXJUb2tlblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
SW5pdGlhbGl6ZWQpOwogICAgIGlmICghbV9pc0VuYWJsZWQgfHwgbV94c3NQcm90ZWN0aW9uID09
IFhTU1Byb3RlY3Rpb25EaXNhYmxlZCkKQEAgLTI5MywxMyArMjkzLDEzIEBAIFBhc3NPd25QdHI8
RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihjb25zdCBGaWx0
ZXJUb2tlblJlcXVlCiAKICAgICBpZiAoZGlkQmxvY2tTY3JpcHQpIHsKICAgICAgICAgYm9vbCBk
aWRCbG9ja0VudGlyZVBhZ2UgPSAobV94c3NQcm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25CbG9j
a0VuYWJsZWQpOwotICAgICAgICBPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0PiBkaWRCbG9j
a1NjcmlwdFJlcXVlc3QgPSBEaWRCbG9ja1NjcmlwdFJlcXVlc3Q6OmNyZWF0ZShtX3JlcG9ydFVS
TCwgbV9vcmlnaW5hbFVSTCwgbV9vcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGlyZVBhZ2Up
OworICAgICAgICBPd25QdHI8WFNTSW5mbz4geHNzSW5mbyA9IFhTU0luZm86OmNyZWF0ZShtX3Jl
cG9ydFVSTCwgbV9vcmlnaW5hbFVSTCwgbV9vcmlnaW5hbEhUVFBCb2R5LCBkaWRCbG9ja0VudGly
ZVBhZ2UpOwogICAgICAgICBpZiAoIW1fcmVwb3J0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgbV9yZXBvcnRVUkwgPSBLVVJMKCk7CiAgICAgICAgICAgICBtX29yaWdpbmFsVVJMID0gU3Ry
aW5nKCk7CiAgICAgICAgICAgICBtX29yaWdpbmFsSFRUUEJvZHkgPSBTdHJpbmcoKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZGlkQmxvY2tTY3JpcHRSZXF1ZXN0LnJlbGVhc2UoKTsKKyAg
ICAgICAgcmV0dXJuIHhzc0luZm8ucmVsZWFzZSgpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAppbmRleCA4ZjIwOTk1
MTU2NDQwZmVjYjVkODY4OTAxNzlkMmZmMGVlZjFlMmZjLi45NDk5OTc3ZWQ0MzA1ZGFkZDE0MDJj
ZmZlYjcyNzlmYWM1Y2IyZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRv
ci5oCkBAIC0zMywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
aWRCbG9ja1NjcmlwdFJlcXVlc3Q7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxEb2N1bWVu
dFBhcnNlcjsKIGNsYXNzIEhUTUxTb3VyY2VUcmFja2VyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKK2NsYXNzIFhTU0luZm87CiAKIHN0cnVjdCBGaWx0ZXJUb2tlblJlcXVlc3QgewogICAg
IEZpbHRlclRva2VuUmVxdWVzdChIVE1MVG9rZW4mIHRva2VuLCBIVE1MU291cmNlVHJhY2tlciYg
c291cmNlVHJhY2tlciwgY29uc3QgVGV4dFJlc291cmNlRGVjb2RlciogZGVjb2RlciwgYm9vbCBz
aG91bGRBbGxvd0NEQVRBKQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgWFNTQXVkaXRv
cigpOwogCiAgICAgdm9pZCBpbml0KERvY3VtZW50Kik7Ci0gICAgUGFzc093blB0cjxEaWRCbG9j
a1NjcmlwdFJlcXVlc3Q+IGZpbHRlclRva2VuKGNvbnN0IEZpbHRlclRva2VuUmVxdWVzdCYpOwor
ICAgIFBhc3NPd25QdHI8WFNTSW5mbz4gZmlsdGVyVG9rZW4oY29uc3QgRmlsdGVyVG9rZW5SZXF1
ZXN0Jik7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTWF4aW11bUZyYWdt
ZW50TGVuZ3RoVGFyZ2V0ID0gMTAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKaW5kZXggMzM5ZWVlZGI3YjhlYjkzNTgxNGExNzc0OTM4
NTllNWQ4M2ZmNWU5OC4uNWQ0ZmE1OWQ3NjM5MzY5ZmViNGRjOTkxOTAyMjk0NDM3MjE3MWY5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUu
Y3BwCkBAIC0zMiwxMiArMzIsMjAgQEAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
UGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorYm9vbCBYU1NJbmZvOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3JlcG9ydFVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKQorICAgICAgICAmJiBtX29yaWdpbmFsVVJMLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpCisgICAgICAgICYmIG1fb3JpZ2luYWxIVFRQQm9keS5pc1NhZmVUb1NlbmRUb0Fub3RoZXJU
aHJlYWQoKTsKK30KKwogWFNTQXVkaXRvckRlbGVnYXRlOjpYU1NBdWRpdG9yRGVsZWdhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fZGlk
Tm90aWZ5Q2xpZW50KGZhbHNlKQpAQCAtNDYsNyArNTQsNyBAQCBYU1NBdWRpdG9yRGVsZWdhdGU6
OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKG1fZG9j
dW1lbnQpOwogfQogCi12b2lkIFhTU0F1ZGl0b3JEZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQoUGFz
c093blB0cjxEaWRCbG9ja1NjcmlwdFJlcXVlc3Q+IHJlcXVlc3QpCit2b2lkIFhTU0F1ZGl0b3JE
ZWxlZ2F0ZTo6ZGlkQmxvY2tTY3JpcHQoY29uc3QgWFNTSW5mbyYgeHNzSW5mbykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC01NCwyNyArNjIsMjcgQEAgdm9pZCBYU1NBdWRp
dG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0KFBhc3NPd25QdHI8RGlkQmxvY2tTY3JpcHRSZXF1
ZXN0PiByZXF1ZXMKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3Nh
Z2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0
LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSkpOwogICAg
IG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKIAotICAgIGlmIChyZXF1ZXN0LT5tX2RpZEJsb2Nr
RW50aXJlUGFnZSkKKyAgICBpZiAoeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSkKICAgICAg
ICAgbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJzKCk7CiAKICAg
ICBpZiAoIW1fZGlkTm90aWZ5Q2xpZW50KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCkt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fZG9jdW1lbnQtPnVybCgpLCByZXF1
ZXN0LT5tX2RpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAgIG1fZG9jdW1lbnQtPmZyYW1lKCkt
PmxvYWRlcigpLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fZG9jdW1lbnQtPnVybCgpLCB4c3NJ
bmZvLm1fZGlkQmxvY2tFbnRpcmVQYWdlKTsKICAgICAgICAgbV9kaWROb3RpZnlDbGllbnQgPSB0
cnVlOwogICAgIH0KIAotICAgIGlmICghcmVxdWVzdC0+bV9yZXBvcnRVUkwuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCF4c3NJbmZvLm1fcmVwb3J0VVJMLmlzRW1wdHkoKSkgewogICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiByZXBvcnREZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKLSAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LXVybCIsIHJl
cXVlc3QtPm1fb3JpZ2luYWxVUkwpOwotICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmco
InJlcXVlc3QtYm9keSIsIHJlcXVlc3QtPm1fb3JpZ2luYWxIVFRQQm9keSk7CisgICAgICAgIHJl
cG9ydERldGFpbHMtPnNldFN0cmluZygicmVxdWVzdC11cmwiLCB4c3NJbmZvLm1fb3JpZ2luYWxV
UkwpOworICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInJlcXVlc3QtYm9keSIsIHhz
c0luZm8ubV9vcmlnaW5hbEhUVFBCb2R5KTsKIAogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiByZXBvcnRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBy
ZXBvcnRPYmplY3QtPnNldE9iamVjdCgieHNzLXJlcG9ydCIsIHJlcG9ydERldGFpbHMucmVsZWFz
ZSgpKTsKIAogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCA9IEZvcm1EYXRhOjpjcmVh
dGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
UGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChtX2RvY3VtZW50LT5mcmFtZSgpLCByZXF1
ZXN0LT5tX3JlcG9ydFVSTCwgcmVwb3J0KTsKKyAgICAgICAgUGluZ0xvYWRlcjo6c2VuZFZpb2xh
dGlvblJlcG9ydChtX2RvY3VtZW50LT5mcmFtZSgpLCB4c3NJbmZvLm1fcmVwb3J0VVJMLCByZXBv
cnQpOwogICAgIH0KIAotICAgIGlmIChyZXF1ZXN0LT5tX2RpZEJsb2NrRW50aXJlUGFnZSkKKyAg
ICBpZiAoeHNzSW5mby5tX2RpZEJsb2NrRW50aXJlUGFnZSkKICAgICAgICAgbV9kb2N1bWVudC0+
ZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKG1f
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGJsYW5rVVJMKCksIFN0cmluZygpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAppbmRl
eCAzZWRiMDJlZDFlNTBlMmYwNjdiZWQyYjA4YmFiODI5ODVmMmQ1NDE4Li5jYjhkZjNhMWI3NDBh
OWI0NmU3ZGYyY2I5NGFkYWUyZGNlOWRjYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaApAQCAtMzQsMjAgKzM0LDIyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLWNsYXNzIERpZEJsb2NrU2NyaXB0UmVx
dWVzdCB7CitjbGFzcyBYU1NJbmZvIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxE
aWRCbG9ja1NjcmlwdFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBLVVJMJiByZXBvcnRVUkwsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxIVFRQQm9keSwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpCisgICAgc3RhdGljIFBhc3NPd25QdHI8WFNTSW5mbz4gY3Jl
YXRlKGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbEhUVFBCb2R5LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGlkQmxvY2tTY3JpcHRSZXF1ZXN0KHJl
cG9ydFVSTCwgb3JpZ2luYWxVUkwsIG9yaWdpbmFsSFRUUEJvZHksIGRpZEJsb2NrRW50aXJlUGFn
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFhTU0luZm8ocmVwb3J0VVJMLCBvcmln
aW5hbFVSTCwgb3JpZ2luYWxIVFRQQm9keSwgZGlkQmxvY2tFbnRpcmVQYWdlKSk7CiAgICAgfQog
CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKKwogICAgIEtV
UkwgbV9yZXBvcnRVUkw7CiAgICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7CiAgICAgU3RyaW5nIG1f
b3JpZ2luYWxIVFRQQm9keTsKICAgICBib29sIG1fZGlkQmxvY2tFbnRpcmVQYWdlOwogCiBwcml2
YXRlOgotICAgIERpZEJsb2NrU2NyaXB0UmVxdWVzdChjb25zdCBLVVJMJiByZXBvcnRVUkwsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxIVFRQQm9keSwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCisgICAgWFNTSW5mbyhjb25zdCBLVVJMJiByZXBvcnRV
UkwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxIVFRQ
Qm9keSwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCiAgICAgICAgIDogbV9yZXBvcnRVUkwocmVw
b3J0VVJMKQogICAgICAgICAsIG1fb3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpCiAgICAgICAgICwg
bV9vcmlnaW5hbEhUVFBCb2R5KG9yaWdpbmFsSFRUUEJvZHkpCkBAIC02MCw3ICs2Miw3IEBAIGNs
YXNzIFhTU0F1ZGl0b3JEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgWFNTQXVkaXRv
ckRlbGVnYXRlKERvY3VtZW50Kik7CiAKLSAgICB2b2lkIGRpZEJsb2NrU2NyaXB0KFBhc3NPd25Q
dHI8RGlkQmxvY2tTY3JpcHRSZXF1ZXN0Pik7CisgICAgdm9pZCBkaWRCbG9ja1NjcmlwdChjb25z
dCBYU1NJbmZvJik7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkwuY3BwCmluZGV4IGYxNmJiOGFiNWZkMGNkZTc1ZjQyYzE3NzI3MTlmNTc5
MDVkN2RlYjcuLjdiNmFmNjBmYjMxYzE4N2Q4ODg4NzNhZDRhZDQ4MGNkYzY1M2E3ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0tVUkwuY3BwCkBAIC0xOTM1LDQgKzE5MzUsMTUgQEAgdm9pZCBLVVJMOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogI2VuZGlmCiB9CiAKK2Jvb2wgS1VSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkg
Y29uc3QKK3sKKyNpZiBVU0UoR09PR0xFVVJMKQorICAgIHJldHVybiBtX3VybC5pc1NhZmVUb1Nl
bmRUb0Fub3RoZXJUaHJlYWQoKTsKKyNlbGlmIFVTRShXVEZVUkwpCisgICAgcmV0dXJuIG1fdXJs
SW1wbC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsKKyNlbHNlIC8vICFVU0UoR09PR0xF
VVJMKQorICAgIHJldHVybiBtX3N0cmluZy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsK
KyNlbmRpZgorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKaW5kZXggMTMwMTNmYmI0MDIwODAy
MTIyMzM3MGM5NTQ0Yzg4NmY4Yzg1MjkzMi4uMjYxZjllNDI2NTk5M2FmMzk2ZjFlOWM4NTBhNmVl
ZjEwNzMxYmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApAQCAtMjI3LDYgKzIyNyw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CisgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTEdvb2dsZS5jcHAKaW5kZXggOTFkYzVkOWY0ZWFmZjU0MjM0MmNmNGJiYzU3OWY0YjYy
OGUzZTYzMy4uMTY3Y2MzNDU1ZWNhMDUyZTQ4ZDg3MjkwNjdkYWUwOWM2NzBmOGExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAKQEAgLTM5OSw2ICszOTksMTQgQEAgdm9p
ZCBLVVJMR29vZ2xlUHJpdmF0ZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY28KICAgICBpbmZvLmFkZE1lbWJlcihtX2lubmVyVVJMLCAiaW5u
ZXJVUkwiKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3BhcnNlZCwgInBhcnNlZCIpOwogfQorCiti
b29sIEtVUkxHb29nbGVQcml2YXRlOjppc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0cmluZy5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKQor
ICAgICAgICAmJiBtX3V0ZjguaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkKKyAgICAgICAg
JiYgKCFtX2lubmVyVVJMIHx8IG1faW5uZXJVUkwtPmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpKTsKK30KKwogLy8gS1VSTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gSW5pdGlhbGl6ZXMgd2l0
aCBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gYWJzb2x1dGUgVVJMLiBObyBlbmNvZGluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZVByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGVQcml2YXRlLmgKaW5kZXggNzIyMjYzZWJj
YzJjZjZiMzg0M2Y0YjI4OWEyMTZkMDI0ODZkYjU2My4uNGI5NmFlZjM3NzBmNmUxYjUwMWQ1Y2Rh
YzI3YTRkOGQyYjJkMzJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VS
TEdvb2dsZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
UHJpdmF0ZS5oCkBAIC0xMDEsNiArMTAxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBLVVJMKiBpbm5lclVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXJVUkwuZ2V0KCk7IH0KIAog
ICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KyAgICAgICAgYm9vbCBpc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdDsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdElubmVyVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vS1VSTFdURlVSTEltcGwuaAppbmRleCA2ZjQ0MGFkNzU1NjhlNzU3MjhmYmIwMTI4ZTEz
MDQwMzZkNjU1MWVkLi4xNjg5MmQzYzhlYWM3NTEwMGYwMTY4YzM4ODhiYjU0YTQ0NTQwZTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMV1RGVVJMSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxXVEZVUkxJbXBsLmgKQEAgLTQ5LDYgKzQ5LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgaW5mby5hZGRNZW1iZXIobV9wYXJzZWRVUkwsICJwYXJzZWRV
UkwiKTsKICAgICAgICAgaW5mby5hZGRNZW1iZXIobV9pbnZhbGlkVXJsU3RyaW5nLCAiaW52YWxp
ZFVybFN0cmluZyIpOwogICAgIH0KKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbnZhbGlkVXJsU3RyaW5nLmlzU2Fm
ZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpCisgICAgICAgICAgICAmJiBtX3BhcnNlZFVSTC5pc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsKKyAgICB9CiAgICAgUGFzc1JlZlB0cjxLVVJMV1RG
VVJMSW1wbD4gY29weSgpIGNvbnN0OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>