<?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>98475</bug_id>
          
          <creation_ts>2012-10-04 19:50:52 -0700</creation_ts>
          <short_desc>[WebSocket] ExtensionParser should have its own file</short_desc>
          <delta_ts>2012-10-04 23:57:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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>
          
          <blocked>98393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>ap</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>735266</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-04 19:50:52 -0700</bug_when>
    <thetext>The permessage compression extension requires &quot;method&quot; parameter. The value of the parameter is defined at http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-01#section-3. Here is the ABNFs.

       requested-method-list = 1#method-desc
       method-desc = method-name *(&quot;;&quot; method-param)
       method-name = token
       method-param = token [&quot;=&quot; (token | quoted-string)]

This is almost the same as how the value of Sec-WebSocket-Extensions parsed. We can share the code of ExtensionParser to parse &quot;method&quot; parameter value of permessage compression. I&apos;m going to factor out ExtensionParameter from WebSocketExtensionDispatcher and put it on its own file so that we can reuse the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735271</commentid>
    <comment_count>1</comment_count>
      <attachid>167238</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-04 20:02:49 -0700</bug_when>
    <thetext>Created attachment 167238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735374</commentid>
    <comment_count>2</comment_count>
      <attachid>167238</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-10-04 23:03:09 -0700</bug_when>
    <thetext>Comment on attachment 167238
Patch

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

Mostly looks good. Please fix the nits before landing.

&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.cpp:94
&gt; +    m_currentToken = String::fromUTF8(buffer.data(), buffer.size());

(I know this code is moved from another file without modification, but I&apos;m just curious.
 If you need to change the code, you can do it in a later patch.)

1. Is there any normative reference that says the content of a quoted string must be
   decoded as UTF-8?
2. What happens if the quoted string contains invalid UTF-8 sequence?

&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.h:37
&gt; +#include &lt;wtf/text/StringHash.h&gt;

Is this necessary?

&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.h:56
&gt; +    // The following member functions basically follow the grammer defined

nit: &quot;grammar&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735394</commentid>
    <comment_count>3</comment_count>
      <attachid>167260</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-04 23:30:12 -0700</bug_when>
    <thetext>Created attachment 167260
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735397</commentid>
    <comment_count>4</comment_count>
      <attachid>167238</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-04 23:30:42 -0700</bug_when>
    <thetext>Comment on attachment 167238
Patch

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

Thank you for review!

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.cpp:94
&gt;&gt; +    m_currentToken = String::fromUTF8(buffer.data(), buffer.size());
&gt; 
&gt; (I know this code is moved from another file without modification, but I&apos;m just curious.
&gt;  If you need to change the code, you can do it in a later patch.)
&gt; 
&gt; 1. Is there any normative reference that says the content of a quoted string must be
&gt;    decoded as UTF-8?
&gt; 2. What happens if the quoted string contains invalid UTF-8 sequence?

I found my old comment on that (https://bugs.webkit.org/show_bug.cgi?id=78079#c20). I used it because WebSocketHandshake class uses it to parse header fields. If the quoted string contains invalid UtF-8 sequence, m_currentToken could be an empty string. It might be better to use CString. I&apos;d like to do it as a separate patch because it affects other files.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.h:37
&gt;&gt; +#include &lt;wtf/text/StringHash.h&gt;
&gt; 
&gt; Is this necessary?

I thought it&apos;s unnecessary, but when I removed it, I got following error.

../../third_party/WebKit/Source/WebCore/Modules/websockets/WebSocketExtensionParser.cpp:132:   instantiated from here
../../third_party/WebKit/Source/WTF/wtf/HashTable.h:844: error: incomplete type 
&apos;WTF::StringHash&apos; used in nested name specifier
...

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketExtensionParser.h:56
&gt;&gt; +    // The following member functions basically follow the grammer defined
&gt; 
&gt; nit: &quot;grammar&quot;

Done. Thanks for pointing this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735418</commentid>
    <comment_count>5</comment_count>
      <attachid>167260</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 23:57:25 -0700</bug_when>
    <thetext>Comment on attachment 167260
Patch for landing

Clearing flags on attachment: 167260

Committed r130471: &lt;http://trac.webkit.org/changeset/130471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735419</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 23:57:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167238</attachid>
            <date>2012-10-04 20:02:49 -0700</date>
            <delta_ts>2012-10-04 23:30:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98475-20121005120157.patch</filename>
            <type>text/plain</type>
            <size>27282</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY2NjY0Njk3YTIxODRk
OGJlODEwYTQ1MjExYmMyZDFlODI3NDk3Ni4uMzIzYTBlNGRkODczOGQyYWYxNmFmOGRiODRjZDIz
NTBmY2M1Njg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBFeHRlbnNpb25QYXJzZXIgc2hvdWxkIGhhdmUgaXRzIG93biBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvciBvdXQgRXh0ZW5zaW9uUGFy
c2VyIGZyb20gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlciBhbmQgcmVuYW1lIGl0IGFzIFdl
YlNvY2tldEV4dGVuc2lvblBhcnNlci4KKyAgICAgICAgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
IGhhcyBpdHMgb3duIGZpbGUuCisKKyAgICAgICAgTm8gY2hhbmdlcyBpbiBiZWhhdmlvci4gQWRk
ZWQgYSB0ZXN0IGNhc2UgZm9yIHBhcnNpbmcgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGZpZWxk
IGFzIGEgY2hyb21pdW0gdW5pdCB0ZXN0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFk
ZGVkIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyOjpwcm9jZXNzSGVhZGVyVmFsdWUpOgorICAgICAgICBVc2UgV2ViU29ja2V0RXh0
ZW5zaW9uUGFyc2VyOjpwYXJzZUV4dGVuc2lvbigpIHRvIHBhcnNlciBleHRlbnNpb24gaGVhZGVy
IHZhbHVlLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Q
YXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpmaW5pc2hlZCk6IE1vdmVkIGZyb20gRXh0ZW5zaW9u
UGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpwYXJz
ZWRTdWNjZXNzZnVsbHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzU2VwYXJhdG9yKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXI6OnNraXBT
cGFjZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblBhcnNl
cjo6Y29uc3VtZVRva2VuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRl
bnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZ09yVG9rZW4p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6Y29u
c3VtZUNoYXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyOjpwYXJzZUV4dGVuc2lvbik6IE1vdmVkIGZyb20gV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTb2Nr
ZXRFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9u
UGFyc2VyOjpXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpjdXJyZW50VG9rZW4pOgorICAgICAgICAqIFRhcmdldC5w
cmk6IEFkZGVkIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci4KKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgor
CiAyMDEyLTEwLTA0ICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdtYWlsLmNvbT4KIAogICAgICAg
ICBMYXlvdXQgYnJva2VuIGFmdGVyIGNsb25pbmcgYW5kIHJlLWluc2VydGluZyBhIHRhYmxlIHdp
dGggYSBtaXNwbGFjZWQgPGZvcm0+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVhOWQ0
YmM1YWE2OWU4OWQyODAxMDIzN2JiNjRiZTU3NDMyMTVlMjguLjE2MzY4Njk1NDQ4NTU2MDhiNmU2
ZTZhMTI3YmZkYmE5YjQ0NjEyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTItMTAtMDQgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEV4dGVuc2lvblBhcnNlciBzaG91bGQgaGF2ZSBp
dHMgb3duIGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4NDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgdGVzdCBmb3IgcGFyc2luZyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgZmllbGQu
CisKKyAgICAgICAgKiB0ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1RfRik6CisKIDIwMTIt
MTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RhbmRhcmRpemUgb24gImZsdXNoIiB0ZXJtaW5vbG9neSBmb3IgY29tcG9zaXRpbmcgbGF5ZXIg
Zmx1c2hpbmcvc3luY2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAyNTQ5NGMwYjhiNDE2NTQ3
NTRlOGViNmZiOWE0N2RjODUyM2QwODU1Li5kMjBkM2M5ZWM1YTU3ZDY3YjNhOWJmMmYyN2Y5Yzk0
MTljYmNjYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtOTY4LDYgKzk2OCw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCiAg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCisg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAKICAgICBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwCiAgICAgTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDM0NjFkYmJlZjU5OTUwYzg5NzAwMzNlNzJkNzg1NjA2NGM4ZjJiZGIuLmFhNWQ0ZjM3ZmYzNzhm
MWYzY2NhOTc5ZjE4M2QxZjFhYzc4Njg1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMjE0MSw2ICsyMTQxLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25EaXNwYXRjaGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCmluZGV4IDdjNTkyYWQxYmYyODA2OGM4MzAzMzY5
YjYwNjU2NzNiNmJhN2U5NzQuLmFhYmJmOTM1Y2NmMDk0NGU0Y2ZkOWRkNGNjMGMwZWIzMzk0ZDJj
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKQEAgLTM0LDYgKzM0LDgg
QEAKIAogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKIAorI2luY2x1
ZGUgIldlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIgorCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5
cGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KQEAgLTQxLDEwNiArNDMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEV4dGVuc2lvblBhcnNlciB7Ci1wdWJsaWM6Ci0gICAgRXh0ZW5zaW9uUGFyc2VyKGNvbnN0IGNo
YXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpCi0gICAgICAgIDogbV9jdXJyZW50KHN0YXJ0KQot
ICAgICAgICAsIG1fZW5kKGVuZCkKLSAgICB7Ci0gICAgfQotICAgIGJvb2wgZmluaXNoZWQoKTsK
LSAgICBib29sIHBhcnNlZFN1Y2Nlc3NmdWxseSgpOwotICAgIGNvbnN0IFN0cmluZyYgY3VycmVu
dFRva2VuKCkgeyByZXR1cm4gbV9jdXJyZW50VG9rZW47IH0KLQotICAgIC8vIFRoZSBmb2xsb3dp
bmcgbWVtYmVyIGZ1bmN0aW9ucyBiYXNpY2FsbHkgZm9sbG93IHRoZSBncmFtbWVyIGRlZmluZWQK
LSAgICAvLyBpbiBTZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KLSAgICBib29sIGNvbnN1bWVUb2tl
bigpOwotICAgIGJvb2wgY29uc3VtZVF1b3RlZFN0cmluZygpOwotICAgIGJvb2wgY29uc3VtZVF1
b3RlZFN0cmluZ09yVG9rZW4oKTsKLSAgICBib29sIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7Ci0K
LXByaXZhdGU6Ci0gICAgdm9pZCBza2lwU3BhY2VzKCk7Ci0KLSAgICBjb25zdCBjaGFyKiBtX2N1
cnJlbnQ7Ci0gICAgY29uc3QgY2hhciogbV9lbmQ7Ci0gICAgU3RyaW5nIG1fY3VycmVudFRva2Vu
OwotfTsKLQotYm9vbCBFeHRlbnNpb25QYXJzZXI6OmZpbmlzaGVkKCkKLXsKLSAgICByZXR1cm4g
bV9jdXJyZW50ID49IG1fZW5kOwotfQotCi1ib29sIEV4dGVuc2lvblBhcnNlcjo6cGFyc2VkU3Vj
Y2Vzc2Z1bGx5KCkKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IG1fZW5kOwotfQotCi1zdGF0
aWMgYm9vbCBpc1NlcGFyYXRvcihjaGFyIGNoYXJhY3RlcikKLXsKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc2VwYXJhdG9yQ2hhcmFjdGVycyA9ICIoKTw+QCw7OlxcXCIvW10/PXt9IFx0IjsKLSAg
ICBjb25zdCBjaGFyKiBwID0gc3RyY2hyKHNlcGFyYXRvckNoYXJhY3RlcnMsIGNoYXJhY3Rlcik7
Ci0gICAgcmV0dXJuIHAgJiYgKnA7Ci19Ci0KLXZvaWQgRXh0ZW5zaW9uUGFyc2VyOjpza2lwU3Bh
Y2VzKCkKLXsKLSAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0g
JyAnIHx8ICptX2N1cnJlbnQgPT0gJ1x0JykpCi0gICAgICAgICsrbV9jdXJyZW50OwotfQotCi1i
b29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVRva2VuKCkKLXsKLSAgICBza2lwU3BhY2VzKCk7
Ci0gICAgY29uc3QgY2hhciogc3RhcnQgPSBtX2N1cnJlbnQ7Ci0gICAgd2hpbGUgKG1fY3VycmVu
dCA8IG1fZW5kICYmIGlzQVNDSUlQcmludGFibGUoKm1fY3VycmVudCkgJiYgIWlzU2VwYXJhdG9y
KCptX2N1cnJlbnQpKQotICAgICAgICArK21fY3VycmVudDsKLSAgICBpZiAoc3RhcnQgPCBtX2N1
cnJlbnQpIHsKLSAgICAgICAgbV9jdXJyZW50VG9rZW4gPSBTdHJpbmcoc3RhcnQsIG1fY3VycmVu
dCAtIHN0YXJ0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcoKQotewot
ICAgIHNraXBTcGFjZXMoKTsKLSAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJl
bnQgIT0gJyInKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOwotICAgICsrbV9jdXJyZW50OwotICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAq
bV9jdXJyZW50ICE9ICciJykgewotICAgICAgICBpZiAoKm1fY3VycmVudCA9PSAnXFwnICYmICsr
bV9jdXJyZW50ID49IG1fZW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBi
dWZmZXIuYXBwZW5kKCptX2N1cnJlbnQpOwotICAgICAgICArK21fY3VycmVudDsKLSAgICB9Ci0g
ICAgaWYgKG1fY3VycmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nOjpmcm9tVVRGOChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLSAgICArK21fY3VycmVudDsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmdPclRv
a2VuKCkKLXsKLSAgICAvLyBUaGlzIGlzIG9rIGJlY2F1c2UgY29uc3VtZVF1b3RlZFN0cmluZygp
IGRvZXNuJ3QgdXBkYXRlIG1fY3VycmVudCBvcgotICAgIC8vIG1ha2VzIGl0IHNhbWUgYXMgbV9l
bmQgb24gZmFpbHVyZS4KLSAgICByZXR1cm4gY29uc3VtZVF1b3RlZFN0cmluZygpIHx8IGNvbnN1
bWVUb2tlbigpOwotfQotCi1ib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJhY3Rlcihj
aGFyIGNoYXJhY3RlcikKLXsKLSAgICBza2lwU3BhY2VzKCk7Ci0gICAgaWYgKG1fY3VycmVudCA8
IG1fZW5kICYmICptX2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7Ci0gICAgICAgICsrbV9jdXJyZW50
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2
b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OnJlc2V0KCkKIHsKICAgICBtX3Byb2Nl
c3NvcnMuY2xlYXIoKTsKQEAgLTIwNywzNSArMTA5LDExIEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlcjo6cHJvY2Vzc0hlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgaGVhZGVyVmFs
dWUpCiAgICAgfQogCiAgICAgY29uc3QgQ1N0cmluZyBoZWFkZXJWYWx1ZURhdGEgPSBoZWFkZXJW
YWx1ZS51dGY4KCk7Ci0gICAgRXh0ZW5zaW9uUGFyc2VyIHBhcnNlcihoZWFkZXJWYWx1ZURhdGEu
ZGF0YSgpLCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFsdWVEYXRhLmxlbmd0aCgp
KTsKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIgcGFyc2VyKGhlYWRlclZhbHVlRGF0YS5k
YXRhKCksIGhlYWRlclZhbHVlRGF0YS5kYXRhKCkgKyBoZWFkZXJWYWx1ZURhdGEubGVuZ3RoKCkp
OwogICAgIHdoaWxlICghcGFyc2VyLmZpbmlzaGVkKCkpIHsKLSAgICAgICAgLy8gUGFyc2UgZXh0
ZW5zaW9uLXRva2VuLgotICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4oKSkgewotICAg
ICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlk
Iik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5n
IGV4dGVuc2lvblRva2VuID0gcGFyc2VyLmN1cnJlbnRUb2tlbigpOwotCi0gICAgICAgIC8vIFBh
cnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlmIGV4aXN0cy4KKyAgICAgICAgU3RyaW5nIGV4dGVu
c2lvblRva2VuOwogICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRlbnNpb25QYXJh
bWV0ZXJzOwotICAgICAgICB3aGlsZSAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJzsnKSkgewot
ICAgICAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKLSAgICAgICAgICAgICAg
ICBmYWlsKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVyIGlzIGludmFsaWQiKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IFN0cmluZyBwYXJhbWV0ZXJUb2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKLSAgICAgICAg
ICAgIGlmIChwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignPScpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHBhcnNlci5jb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbigpKQotICAgICAgICAgICAgICAg
ICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgcGFyc2VyLmN1cnJl
bnRUb2tlbigpKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
ZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJh
bWV0ZXJUb2tlbiwgU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghcGFyc2VyLmZp
bmlzaGVkKCkgJiYgIXBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCcsJykpIHsKKyAgICAgICAgaWYg
KCFwYXJzZXIucGFyc2VFeHRlbnNpb24oZXh0ZW5zaW9uVG9rZW4sIGV4dGVuc2lvblBhcmFtZXRl
cnMpKSB7CiAgICAgICAgICAgICBmYWlsKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
IGlzIGludmFsaWQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDYyOTRlMWU5YTc5NmQ5N2VmYTk4
YzkwZWEzZTcyMDU3ZjkwOWZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTAsMCArMSwx
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisj
aW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmgiCisKKyNpbmNsdWRlIDx3dGYvQVND
SUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitib29sIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6ZmluaXNoZWQoKQorewor
ICAgIHJldHVybiBtX2N1cnJlbnQgPj0gbV9lbmQ7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyOjpwYXJzZWRTdWNjZXNzZnVsbHkoKQoreworICAgIHJldHVybiBtX2N1cnJlbnQg
PT0gbV9lbmQ7Cit9CisKK3N0YXRpYyBib29sIGlzU2VwYXJhdG9yKGNoYXIgY2hhcmFjdGVyKQor
eworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzZXBhcmF0b3JDaGFyYWN0ZXJzID0gIigpPD5ALDs6
XFxcIi9bXT89e30gXHQiOworICAgIGNvbnN0IGNoYXIqIHAgPSBzdHJjaHIoc2VwYXJhdG9yQ2hh
cmFjdGVycywgY2hhcmFjdGVyKTsKKyAgICByZXR1cm4gcCAmJiAqcDsKK30KKwordm9pZCBXZWJT
b2NrZXRFeHRlbnNpb25QYXJzZXI6OnNraXBTcGFjZXMoKQoreworICAgIHdoaWxlIChtX2N1cnJl
bnQgPCBtX2VuZCAmJiAoKm1fY3VycmVudCA9PSAnICcgfHwgKm1fY3VycmVudCA9PSAnXHQnKSkK
KyAgICAgICAgKyttX2N1cnJlbnQ7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lVG9rZW4oKQoreworICAgIHNraXBTcGFjZXMoKTsKKyAgICBjb25zdCBjaGFyKiBz
dGFydCA9IG1fY3VycmVudDsKKyAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgaXNBU0NJ
SVByaW50YWJsZSgqbV9jdXJyZW50KSAmJiAhaXNTZXBhcmF0b3IoKm1fY3VycmVudCkpCisgICAg
ICAgICsrbV9jdXJyZW50OworICAgIGlmIChzdGFydCA8IG1fY3VycmVudCkgeworICAgICAgICBt
X2N1cnJlbnRUb2tlbiA9IFN0cmluZyhzdGFydCwgbV9jdXJyZW50IC0gc3RhcnQpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYlNv
Y2tldEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZygpCit7CisgICAgc2tpcFNw
YWNlcygpOworICAgIGlmIChtX2N1cnJlbnQgPj0gbV9lbmQgfHwgKm1fY3VycmVudCAhPSAnIicp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7CisgICAg
KyttX2N1cnJlbnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmICptX2N1cnJlbnQg
IT0gJyInKSB7CisgICAgICAgIGlmICgqbV9jdXJyZW50ID09ICdcXCcgJiYgKyttX2N1cnJlbnQg
Pj0gbV9lbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJ1ZmZlci5hcHBl
bmQoKm1fY3VycmVudCk7CisgICAgICAgICsrbV9jdXJyZW50OworICAgIH0KKyAgICBpZiAobV9j
dXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgbV9jdXJyZW50VG9rZW4gPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgICsrbV9jdXJyZW50OworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZ09yVG9r
ZW4oKQoreworICAgIC8vIFRoaXMgaXMgb2sgYmVjYXVzZSBjb25zdW1lUXVvdGVkU3RyaW5nKCkg
ZG9lc24ndCB1cGRhdGUgbV9jdXJyZW50IG9yCisgICAgLy8gbWFrZXMgaXQgc2FtZSBhcyBtX2Vu
ZCBvbiBmYWlsdXJlLgorICAgIHJldHVybiBjb25zdW1lUXVvdGVkU3RyaW5nKCkgfHwgY29uc3Vt
ZVRva2VuKCk7Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lQ2hh
cmFjdGVyKGNoYXIgY2hhcmFjdGVyKQoreworICAgIHNraXBTcGFjZXMoKTsKKyAgICBpZiAobV9j
dXJyZW50IDwgbV9lbmQgJiYgKm1fY3VycmVudCA9PSBjaGFyYWN0ZXIpIHsKKyAgICAgICAgKytt
X2N1cnJlbnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpwYXJzZUV4dGVuc2lvbihTdHJp
bmcmIGV4dGVuc2lvblRva2VuLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0ZW5zaW9uUGFy
YW1ldGVycykKK3sKKyAgICAvLyBQYXJzZSBleHRlbnNpb24tdG9rZW4uCisgICAgaWYgKCFjb25z
dW1lVG9rZW4oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZXh0ZW5zaW9uVG9rZW4g
PSBjdXJyZW50VG9rZW4oKTsKKworICAgIC8vIFBhcnNlIGV4dGVuc2lvbi1wYXJhbWV0ZXJzIGlm
IGV4aXN0cy4KKyAgICB3aGlsZSAoY29uc3VtZUNoYXJhY3RlcignOycpKSB7CisgICAgICAgIGlm
ICghY29uc3VtZVRva2VuKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
U3RyaW5nIHBhcmFtZXRlclRva2VuID0gY3VycmVudFRva2VuKCk7CisgICAgICAgIGlmIChjb25z
dW1lQ2hhcmFjdGVyKCc9JykpIHsKKyAgICAgICAgICAgIGlmIChjb25zdW1lUXVvdGVkU3RyaW5n
T3JUb2tlbigpKQorICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRkKHBhcmFt
ZXRlclRva2VuLCBjdXJyZW50VG9rZW4oKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGV4dGVuc2lv
blBhcmFtZXRlcnMuYWRkKHBhcmFtZXRlclRva2VuLCBTdHJpbmcoKSk7CisgICAgfQorICAgIGlm
ICghZmluaXNoZWQoKSAmJiAhY29uc3VtZUNoYXJhY3RlcignLCcpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJiMzMyYmQ2ZWY0OWUwNzY2ZWI1YjMwOTI1NjgzMzJjYmMwMDZjNjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUGFyc2VyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEV4dGVu
c2lvblBhcnNlcl9oCisjZGVmaW5lIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcl9oCisKKyNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIg
eworcHVibGljOgorICAgIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcihjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogZW5kKQorICAgICAgICA6IG1fY3VycmVudChzdGFydCkKKyAgICAgICAg
LCBtX2VuZChlbmQpCisgICAgeworICAgIH0KKyAgICBib29sIGZpbmlzaGVkKCk7CisgICAgYm9v
bCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKKyAgICBib29sIHBhcnNlRXh0ZW5zaW9uKFN0cmluZyYg
ZXh0ZW5zaW9uVG9rZW4sIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKTsKKwor
cHJpdmF0ZToKKyAgICBjb25zdCBTdHJpbmcmIGN1cnJlbnRUb2tlbigpIHsgcmV0dXJuIG1fY3Vy
cmVudFRva2VuOyB9CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1lbWJlciBmdW5jdGlvbnMgYmFz
aWNhbGx5IGZvbGxvdyB0aGUgZ3JhbW1lciBkZWZpbmVkCisgICAgLy8gaW4gU2VjdGlvbiAyLjIg
b2YgUkZDIDI2MTYuCisgICAgYm9vbCBjb25zdW1lVG9rZW4oKTsKKyAgICBib29sIGNvbnN1bWVR
dW90ZWRTdHJpbmcoKTsKKyAgICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2VuKCk7Cisg
ICAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOworCisgICAgdm9pZCBza2lwU3BhY2VzKCk7
CisKKyAgICBjb25zdCBjaGFyKiBtX2N1cnJlbnQ7CisgICAgY29uc3QgY2hhciogbV9lbmQ7Cisg
ICAgU3RyaW5nIG1fY3VycmVudFRva2VuOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0RXh0
ZW5zaW9uUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGE0ZDg3NTQ3YTRhOWQwYTUwOWUxM2Y5NGZi
MGRlNTNiMmQ4ZGYxNDguLjM2Njc5N2JkYzZmNjQ0YTA5YTIyNzk0ZjZhZjNmOWE2YzY1M2ZhOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtMzgwNyw2ICszODA3LDcgQEAgZW5hYmxlPyhXRUJfU09DS0VUUykg
ewogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggXAogICAgICAg
ICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIFwKKyAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIFwKICAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIFwK
ICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmggXAogICAgICAgICBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXApAQCAtMzgyMSw2ICszODIy
LDcgQEAgZW5hYmxlPyhXRUJfU09DS0VUUykgewogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RGVmbGF0ZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIFwKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RnJhbWUuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAgXAogICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDdjMTFlNzY3N2E3NWY0
MDFlMjQ1NDJhZTQyNjA2NmVmMmU4OGFkNWYuLjVjNmRlMmI3N2I0YjJjMGYyZTM4ZWM2OWY3MzAx
OGIzODVmZWEyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE4MjcsNiArMTgyNyw4IEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDc5ODNhMmZiOTE2MjU5NjBmMGJlMzNjZWU3ZDM3NmNk
NTg4ZDkzYWUuLmVmMmFhZjA1MTk5ZDFhMTlhMmQ0MzU4ZWE4ZjhkOWVlMzZiYWU5OTIgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNTU1NCw2
ICsyNTU1NCwxNCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmgiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdl
YnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjg5ZjNhZDk5ZjY0MjZmOGFiM2I3MWY3MjdkZjgwNGRkNWZjMjk0OC4uYzgwYzc3
MTMyNDYxMDljYTAwODI0NzkyZWJmODgxMTZiNmIyY2ZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxNCw2ICsxNDE0LDgg
QEAKIAkJNEExRTcxQTYxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93Um9vdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTQxNEUxMDZBQzAw
NjI2RjlEIC8qIEpTU2hhZG93Um9vdC5oICovOyB9OwogCQk0QTM4QkY1MDE0RkUxQzA5MDA2MTI1
MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTM4QkY0RTE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAgKi87IH07CiAJCTRBMzhCRjUxMTRGRTFDMDkwMDYxMjUxMiAv
KiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QTM4QkY0RjE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5oICovOyB9OworCQk0QTVBMkFEQjE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuY3BwICovOyB9OworCQk0QTVBMkFEQzE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTVBMkFEQTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9u
UGFyc2VyLmggKi87IH07CiAJCTRBNkEwQzVCMTUyMzJGMjQwMEIwOUM2RSAvKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEE2QTBDNTkxNTIzMkYyNDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5jcHAgKi87IH07CiAJCTRBNkEwQzVDMTUyMzJGMjQwMEIwOUM2RSAvKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNkEwQzVBMTUyMzJGMjQwMEIwOUM2RSAvKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2
RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwICovOyB9OwpAQCAt
ODU3Niw2ICs4NTc4LDggQEAKIAkJNEExRTcxQTQxNEUxMDZBQzAwNjI2RjlEIC8qIEpTU2hhZG93
Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1Jvb3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8q
IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRBMzhCRjRGMTRGRTFDMDkwMDYxMjUxMiAvKiBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAv
KiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgcGF0aCA9IE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0QTVBMkFEQTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5z
aW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldEV4
dGVuc2lvblBhcnNlci5oOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvblBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZBMEM1OTE1MjMy
RjI0MDBCMDlDNkUgLyogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkEwQzVBMTUyMzJGMjQwMEIwOUM2RSAvKiBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5NzEsNiArMTc5NzUsOCBAQAogCQkJCTk3
QUFCRDA2MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovLAogCQkJCTk3
QUFCRDA3MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNw
cCAqLywKIAkJCQk5N0FBQkQwODE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5oICovLAorCQkJCTRBNUEyQUQ5MTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2Nr
ZXRFeHRlbnNpb25QYXJzZXIuY3BwICovLAorCQkJCTRBNUEyQURBMTYxRTdFMDAwMDU4ODlERCAv
KiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCAqLywKIAkJCQk5N0FBQkQwOTE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCiAJCQkJQUFGNUI3QjEx
NTI0QjRCRDAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCAqLywKIAkJCQk5N0FBQkQwQTE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCAqLywKQEAgLTI1NDE4LDYgKzI1NDI0
LDcgQEAKIAkJCQk0QTM4QkY1MTE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZy
YW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjExNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldERlZmxhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyMzE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNEE1QTJBREMxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjQxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dEV4dGVuc2lvblByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjUxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQy
NzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywK
QEAgLTI4NTIyLDYgKzI4NTI5LDcgQEAKIAkJCQk0QTM4QkY1MDE0RkUxQzA5MDA2MTI1MTIgLyog
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0FBQkQyMDE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RGVmbGF0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdBQUJEMjIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdl
YlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQUY1QjdCNzE1
MjRCNkM1MDAwNENCNDkgLyogV2ViU29ja2V0RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdBQUJEMjYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5N0FBQkQyODE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVz
dC5jcHAKaW5kZXggMzU4OTgzYjgzOTkzMTRjZGEwMzdjOGMwMzI0OWVlOWI2NzJlOTY3Yi4uNzBm
MjFhZTljMDQ5ZTNlNDdmOGMzMGE1M2IxOTY5Yzc1ZTg5NmNjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyVGVzdC5jcHAKQEAgLTI3LDkgKzI3LDExIEBACiAKICNpbmNsdWRlICJXZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCiAKKyNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Q
YXJzZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKIAogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0xNzYsNCArMTc4LDM0IEBAIFRFU1RfRihXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
VGVzdCwgVGVzdEludmFsaWQpCiAgICAgfQogfQogCisvLyBUZXN0cyBmb3IgdGhlIG1vc3QgY29t
cGxleCBleGFtcGxlIGF0IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHli
aS1wZXJtZXNzYWdlLWNvbXByZXNzaW9uLTAxI3NlY3Rpb24tMy4xCitURVNUX0YoV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QsIFRlc3RQZXJNZXNzYWdlQ29tcHJlc3NFeGFtcGxlKQor
eworICAgIGFkZE1vY2tQcm9jZXNzb3IoInBlcm1lc3NhZ2UtY29tcHJlc3MiKTsKKyAgICBhZGRN
b2NrUHJvY2Vzc29yKCJiYXIiKTsKKyAgICBFWFBFQ1RfVFJVRShtX2V4dGVuc2lvbnMucHJvY2Vz
c0hlYWRlclZhbHVlKCJwZXJtZXNzYWdlLWNvbXByZXNzOyBtZXRob2Q9XCJmb287IHg9XFxcIkhl
bGxvIFdvcmxkXFxcIiwgYmFyXCIiKSk7CisgICAgRVhQRUNUX0VRKDFVLCBtX3BhcnNlZEV4dGVu
c2lvblRva2Vucy5zaXplKCkpOworICAgIEVYUEVDVF9FUSgicGVybWVzc2FnZS1jb21wcmVzcyIs
IG1fcGFyc2VkRXh0ZW5zaW9uVG9rZW5zWzBdKTsKKyAgICBTdHJpbmcgbWV0aG9kUGFyYW1ldGVy
ID0gbV9wYXJzZWRQYXJhbWV0ZXJzWzBdLmZpbmQoIm1ldGhvZCIpLT5zZWNvbmQ7CisgICAgRVhQ
RUNUX0VRKCJmb287IHg9XCJIZWxsbyBXb3JsZFwiLCBiYXIiLCBtZXRob2RQYXJhbWV0ZXIpOwor
CisgICAgQ1N0cmluZyBtZXRob2RWYWx1ZSA9IG1ldGhvZFBhcmFtZXRlci5hc2NpaSgpOworICAg
IFdlYlNvY2tldEV4dGVuc2lvblBhcnNlciBwYXJzZXIobWV0aG9kVmFsdWUuZGF0YSgpLCBtZXRo
b2RWYWx1ZS5kYXRhKCkgKyBtZXRob2RWYWx1ZS5sZW5ndGgoKSk7CisKKyAgICBTdHJpbmcgdG9r
ZW4xOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFtZXRlcnMxOworICAgIEVYUEVD
VF9UUlVFKHBhcnNlci5wYXJzZUV4dGVuc2lvbih0b2tlbjEsIHBhcmFtZXRlcnMxKSk7CisgICAg
RVhQRUNUX0VRKCJmb28iLCB0b2tlbjEpOworICAgIEVYUEVDVF9FUSgxLCBwYXJhbWV0ZXJzMS5z
aXplKCkpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OjppdGVyYXRvciB4cGFyYW1ldGVy
ID0gcGFyYW1ldGVyczEuZmluZCgieCIpOworICAgIEVYUEVDVF9FUSgieCIsIHhwYXJhbWV0ZXIt
PmZpcnN0KTsKKyAgICBFWFBFQ1RfRVEoIkhlbGxvIFdvcmxkIiwgeHBhcmFtZXRlci0+c2Vjb25k
KTsKKworICAgIFN0cmluZyB0b2tlbjI7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcGFy
YW1ldGVyczI7CisgICAgRVhQRUNUX1RSVUUocGFyc2VyLnBhcnNlRXh0ZW5zaW9uKHRva2VuMiwg
cGFyYW1ldGVyczIpKTsKKyAgICBFWFBFQ1RfRVEoImJhciIsIHRva2VuMik7CisgICAgRVhQRUNU
X0VRKDAsIHBhcmFtZXRlcnMyLnNpemUoKSk7Cit9CisKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167260</attachid>
            <date>2012-10-04 23:30:12 -0700</date>
            <delta_ts>2012-10-04 23:57:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98475-20121005152921.patch</filename>
            <type>text/plain</type>
            <size>27280</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTY2NjY0Njk3YTIxODRk
OGJlODEwYTQ1MjExYmMyZDFlODI3NDk3Ni4uZjU3OGQxNzYxMDgyMTU1NmZjMDhhMDcxMThmMzRl
MzQ5MGMzZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTEwLTA0ICBLZW5p
Y2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29ja2V0
XSBFeHRlbnNpb25QYXJzZXIgc2hvdWxkIGhhdmUgaXRzIG93biBmaWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IFl1dGEgS2l0YW11cmEuCisKKyAgICAgICAgRmFjdG9yIG91dCBFeHRlbnNpb25QYXJz
ZXIgZnJvbSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIGFuZCByZW5hbWUgaXQgYXMgV2Vi
U29ja2V0RXh0ZW5zaW9uUGFyc2VyLgorICAgICAgICBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIg
aGFzIGl0cyBvd24gZmlsZS4KKworICAgICAgICBObyBjaGFuZ2VzIGluIGJlaGF2aW9yLiBBZGRl
ZCBhIHRlc3QgY2FzZSBmb3IgcGFyc2luZyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgZmllbGQg
YXMgYSBjaHJvbWl1bSB1bml0IHRlc3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRk
ZWQgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25EaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZSk6CisgICAgICAgIFVzZSBXZWJTb2NrZXRFeHRl
bnNpb25QYXJzZXI6OnBhcnNlRXh0ZW5zaW9uKCkgdG8gcGFyc2VyIGV4dGVuc2lvbiBoZWFkZXIg
dmFsdWUuCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBh
cnNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRFeHRlbnNpb25QYXJzZXI6OmZpbmlzaGVkKTogTW92ZWQgZnJvbSBFeHRlbnNpb25Q
YXJzZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXI6OnBhcnNl
ZFN1Y2Nlc3NmdWxseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNTZXBhcmF0b3IpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6c2tpcFNw
YWNlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2Vy
Ojpjb25zdW1lVG9rZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVu
c2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyOjpjb25z
dW1lQ2hhcmFjdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXI6OnBhcnNlRXh0ZW5zaW9uKTogTW92ZWQgZnJvbSBXZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNvY2tl
dEV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRFeHRlbnNpb25Q
YXJzZXI6OldlYlNvY2tldEV4dGVuc2lvblBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRFeHRlbnNpb25QYXJzZXI6OmN1cnJlbnRUb2tlbik6CisgICAgICAgICogVGFyZ2V0LnBy
aTogQWRkZWQgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisK
IDIwMTItMTAtMDQgIFByYXZpbiBEICA8cHJhdmluZC4yazRAZ21haWwuY29tPgogCiAgICAgICAg
IExheW91dCBicm9rZW4gYWZ0ZXIgY2xvbmluZyBhbmQgcmUtaW5zZXJ0aW5nIGEgdGFibGUgd2l0
aCBhIG1pc3BsYWNlZCA8Zm9ybT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWE5ZDRi
YzVhYTY5ZTg5ZDI4MDEwMjM3YmI2NGJlNTc0MzIxNWUyOC4uNmEyOTY5MDhiYTNiZTkyZjliNzNi
NjgwNzBlYmQ4Y2I3NTAwMjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMi0xMC0wNCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW1dlYlNvY2tldF0gRXh0ZW5zaW9uUGFyc2VyIHNob3VsZCBoYXZlIGl0
cyBvd24gZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBZdXRhIEtpdGFtdXJhLgorCisgICAgICAg
IEFkZCBhIHRlc3QgZm9yIHBhcnNpbmcgU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGZpZWxkLgor
CisgICAgICAgICogdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEyLTEw
LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0
YW5kYXJkaXplIG9uICJmbHVzaCIgdGVybWlub2xvZ3kgZm9yIGNvbXBvc2l0aW5nIGxheWVyIGZs
dXNoaW5nL3N5bmNpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjU0OTRjMGI4YjQxNjU0NzU0
ZThlYjZmYjlhNDdkYzg1MjNkMDg1NS4uZDIwZDNjOWVjNWE1N2Q2N2IzYTliZjJmMjdmOWM5NDE5
Y2JjY2MyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTk2OCw2ICs5NjgsNyBAQCBTRVQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNw
cAogICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAogICAg
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorICAg
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwCiAgICAgTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmNwcAogICAgIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAz
NDYxZGJiZWY1OTk1MGM4OTcwMDMzZTcyZDc4NTYwNjRjOGYyYmRiLi5hYTVkNGYzN2ZmMzc4ZjFm
M2NjYTk3OWYxODNkMWYxYWM3ODY4NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTIxNDEsNiArMjE0MSw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAppbmRleCA3YzU5MmFkMWJmMjgwNjhjODMwMzM2OWI2
MDY1NjczYjZiYTdlOTc0Li5hYWJiZjkzNWNjZjA5NDRlNGNmZDlkZDRjYzBjMGViMzM5NGQyYzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBA
CiAKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCiAKKyNpbmNsdWRl
ICJXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCIKKwogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC00MSwxMDYgKzQzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBF
eHRlbnNpb25QYXJzZXIgewotcHVibGljOgotICAgIEV4dGVuc2lvblBhcnNlcihjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZW5kKQotICAgICAgICA6IG1fY3VycmVudChzdGFydCkKLSAg
ICAgICAgLCBtX2VuZChlbmQpCi0gICAgewotICAgIH0KLSAgICBib29sIGZpbmlzaGVkKCk7Ci0g
ICAgYm9vbCBwYXJzZWRTdWNjZXNzZnVsbHkoKTsKLSAgICBjb25zdCBTdHJpbmcmIGN1cnJlbnRU
b2tlbigpIHsgcmV0dXJuIG1fY3VycmVudFRva2VuOyB9Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5n
IG1lbWJlciBmdW5jdGlvbnMgYmFzaWNhbGx5IGZvbGxvdyB0aGUgZ3JhbW1lciBkZWZpbmVkCi0g
ICAgLy8gaW4gU2VjdGlvbiAyLjIgb2YgUkZDIDI2MTYuCi0gICAgYm9vbCBjb25zdW1lVG9rZW4o
KTsKLSAgICBib29sIGNvbnN1bWVRdW90ZWRTdHJpbmcoKTsKLSAgICBib29sIGNvbnN1bWVRdW90
ZWRTdHJpbmdPclRva2VuKCk7Ci0gICAgYm9vbCBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOwotCi1w
cml2YXRlOgotICAgIHZvaWQgc2tpcFNwYWNlcygpOwotCi0gICAgY29uc3QgY2hhciogbV9jdXJy
ZW50OwotICAgIGNvbnN0IGNoYXIqIG1fZW5kOwotICAgIFN0cmluZyBtX2N1cnJlbnRUb2tlbjsK
LX07Ci0KLWJvb2wgRXh0ZW5zaW9uUGFyc2VyOjpmaW5pc2hlZCgpCi17Ci0gICAgcmV0dXJuIG1f
Y3VycmVudCA+PSBtX2VuZDsKLX0KLQotYm9vbCBFeHRlbnNpb25QYXJzZXI6OnBhcnNlZFN1Y2Nl
c3NmdWxseSgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBtX2VuZDsKLX0KLQotc3RhdGlj
IGJvb2wgaXNTZXBhcmF0b3IoY2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNo
YXIqIHNlcGFyYXRvckNoYXJhY3RlcnMgPSAiKCk8PkAsOzpcXFwiL1tdPz17fSBcdCI7Ci0gICAg
Y29uc3QgY2hhciogcCA9IHN0cmNocihzZXBhcmF0b3JDaGFyYWN0ZXJzLCBjaGFyYWN0ZXIpOwot
ICAgIHJldHVybiBwICYmICpwOwotfQotCi12b2lkIEV4dGVuc2lvblBhcnNlcjo6c2tpcFNwYWNl
cygpCi17Ci0gICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmICgqbV9jdXJyZW50ID09ICcg
JyB8fCAqbV9jdXJyZW50ID09ICdcdCcpKQotICAgICAgICArK21fY3VycmVudDsKLX0KLQotYm9v
bCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVUb2tlbigpCi17Ci0gICAgc2tpcFNwYWNlcygpOwot
ICAgIGNvbnN0IGNoYXIqIHN0YXJ0ID0gbV9jdXJyZW50OwotICAgIHdoaWxlIChtX2N1cnJlbnQg
PCBtX2VuZCAmJiBpc0FTQ0lJUHJpbnRhYmxlKCptX2N1cnJlbnQpICYmICFpc1NlcGFyYXRvcigq
bV9jdXJyZW50KSkKLSAgICAgICAgKyttX2N1cnJlbnQ7Ci0gICAgaWYgKHN0YXJ0IDwgbV9jdXJy
ZW50KSB7Ci0gICAgICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nKHN0YXJ0LCBtX2N1cnJlbnQg
LSBzdGFydCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lUXVvdGVkU3RyaW5nKCkKLXsKLSAg
ICBza2lwU3BhY2VzKCk7Ci0gICAgaWYgKG1fY3VycmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50
ICE9ICciJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cjsKLSAgICArK21fY3VycmVudDsKLSAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQgJiYgKm1f
Y3VycmVudCAhPSAnIicpIHsKLSAgICAgICAgaWYgKCptX2N1cnJlbnQgPT0gJ1xcJyAmJiArK21f
Y3VycmVudCA+PSBtX2VuZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZCgqbV9jdXJyZW50KTsKLSAgICAgICAgKyttX2N1cnJlbnQ7Ci0gICAgfQotICAg
IGlmIChtX2N1cnJlbnQgPj0gbV9lbmQgfHwgKm1fY3VycmVudCAhPSAnIicpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBtX2N1cnJlbnRUb2tlbiA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0gICAgKyttX2N1cnJlbnQ7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tl
bigpCi17Ci0gICAgLy8gVGhpcyBpcyBvayBiZWNhdXNlIGNvbnN1bWVRdW90ZWRTdHJpbmcoKSBk
b2Vzbid0IHVwZGF0ZSBtX2N1cnJlbnQgb3IKLSAgICAvLyBtYWtlcyBpdCBzYW1lIGFzIG1fZW5k
IG9uIGZhaWx1cmUuCi0gICAgcmV0dXJuIGNvbnN1bWVRdW90ZWRTdHJpbmcoKSB8fCBjb25zdW1l
VG9rZW4oKTsKLX0KLQotYm9vbCBFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVDaGFyYWN0ZXIoY2hh
ciBjaGFyYWN0ZXIpCi17Ci0gICAgc2tpcFNwYWNlcygpOwotICAgIGlmIChtX2N1cnJlbnQgPCBt
X2VuZCAmJiAqbV9jdXJyZW50ID09IGNoYXJhY3RlcikgewotICAgICAgICArK21fY3VycmVudDsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogdm9p
ZCBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpyZXNldCgpCiB7CiAgICAgbV9wcm9jZXNz
b3JzLmNsZWFyKCk7CkBAIC0yMDcsMzUgKzEwOSwxMSBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lv
bkRpc3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVl
KQogICAgIH0KIAogICAgIGNvbnN0IENTdHJpbmcgaGVhZGVyVmFsdWVEYXRhID0gaGVhZGVyVmFs
dWUudXRmOCgpOwotICAgIEV4dGVuc2lvblBhcnNlciBwYXJzZXIoaGVhZGVyVmFsdWVEYXRhLmRh
dGEoKSwgaGVhZGVyVmFsdWVEYXRhLmRhdGEoKSArIGhlYWRlclZhbHVlRGF0YS5sZW5ndGgoKSk7
CisgICAgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyIHBhcnNlcihoZWFkZXJWYWx1ZURhdGEuZGF0
YSgpLCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFsdWVEYXRhLmxlbmd0aCgpKTsK
ICAgICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgpKSB7Ci0gICAgICAgIC8vIFBhcnNlIGV4dGVu
c2lvbi10b2tlbi4KLSAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKLSAgICAg
ICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBl
eHRlbnNpb25Ub2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKLQotICAgICAgICAvLyBQYXJz
ZSBleHRlbnNpb24tcGFyYW1ldGVycyBpZiBleGlzdHMuCisgICAgICAgIFN0cmluZyBleHRlbnNp
b25Ub2tlbjsKICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0ZW5zaW9uUGFyYW1l
dGVyczsKLSAgICAgICAgd2hpbGUgKHBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCc7JykpIHsKLSAg
ICAgICAgICAgIGlmICghcGFyc2VyLmNvbnN1bWVUb2tlbigpKSB7Ci0gICAgICAgICAgICAgICAg
ZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBpcyBpbnZhbGlkIik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBT
dHJpbmcgcGFyYW1ldGVyVG9rZW4gPSBwYXJzZXIuY3VycmVudFRva2VuKCk7Ci0gICAgICAgICAg
ICBpZiAocGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIoJz0nKSkgewotICAgICAgICAgICAgICAgIGlm
IChwYXJzZXIuY29uc3VtZVF1b3RlZFN0cmluZ09yVG9rZW4oKSkKLSAgICAgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1ldGVyVG9rZW4sIHBhcnNlci5jdXJyZW50
VG9rZW4oKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZh
aWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCIpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uUGFyYW1ldGVycy5hZGQocGFyYW1l
dGVyVG9rZW4sIFN0cmluZygpKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXBhcnNlci5maW5p
c2hlZCgpICYmICFwYXJzZXIuY29uc3VtZUNoYXJhY3RlcignLCcpKSB7CisgICAgICAgIGlmICgh
cGFyc2VyLnBhcnNlRXh0ZW5zaW9uKGV4dGVuc2lvblRva2VuLCBleHRlbnNpb25QYXJhbWV0ZXJz
KSkgewogICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciBp
cyBpbnZhbGlkIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvblBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTA2Mjk0ZTFlOWE3OTZkOTdlZmE5OGM5
MGVhM2U3MjA1N2Y5MDlmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC0wLDAgKzEsMTQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2lu
Y2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIgorCisjaW5jbHVkZSA8d3RmL0FTQ0lJ
Q1R5cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXI6OmZpbmlzaGVkKCkKK3sKKyAg
ICByZXR1cm4gbV9jdXJyZW50ID49IG1fZW5kOworfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlcjo6cGFyc2VkU3VjY2Vzc2Z1bGx5KCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID09
IG1fZW5kOworfQorCitzdGF0aWMgYm9vbCBpc1NlcGFyYXRvcihjaGFyIGNoYXJhY3RlcikKK3sK
KyAgICBzdGF0aWMgY29uc3QgY2hhciogc2VwYXJhdG9yQ2hhcmFjdGVycyA9ICIoKTw+QCw7Olxc
XCIvW10/PXt9IFx0IjsKKyAgICBjb25zdCBjaGFyKiBwID0gc3RyY2hyKHNlcGFyYXRvckNoYXJh
Y3RlcnMsIGNoYXJhY3Rlcik7CisgICAgcmV0dXJuIHAgJiYgKnA7Cit9CisKK3ZvaWQgV2ViU29j
a2V0RXh0ZW5zaW9uUGFyc2VyOjpza2lwU3BhY2VzKCkKK3sKKyAgICB3aGlsZSAobV9jdXJyZW50
IDwgbV9lbmQgJiYgKCptX2N1cnJlbnQgPT0gJyAnIHx8ICptX2N1cnJlbnQgPT0gJ1x0JykpCisg
ICAgICAgICsrbV9jdXJyZW50OworfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6
Y29uc3VtZVRva2VuKCkKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgY29uc3QgY2hhciogc3Rh
cnQgPSBtX2N1cnJlbnQ7CisgICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmIGlzQVNDSUlQ
cmludGFibGUoKm1fY3VycmVudCkgJiYgIWlzU2VwYXJhdG9yKCptX2N1cnJlbnQpKQorICAgICAg
ICArK21fY3VycmVudDsKKyAgICBpZiAoc3RhcnQgPCBtX2N1cnJlbnQpIHsKKyAgICAgICAgbV9j
dXJyZW50VG9rZW4gPSBTdHJpbmcoc3RhcnQsIG1fY3VycmVudCAtIHN0YXJ0KTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJTb2Nr
ZXRFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmcoKQoreworICAgIHNraXBTcGFj
ZXMoKTsKKyAgICBpZiAobV9jdXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgICsr
bV9jdXJyZW50OworICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAqbV9jdXJyZW50ICE9
ICciJykgeworICAgICAgICBpZiAoKm1fY3VycmVudCA9PSAnXFwnICYmICsrbV9jdXJyZW50ID49
IG1fZW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBidWZmZXIuYXBwZW5k
KCptX2N1cnJlbnQpOworICAgICAgICArK21fY3VycmVudDsKKyAgICB9CisgICAgaWYgKG1fY3Vy
cmVudCA+PSBtX2VuZCB8fCAqbV9jdXJyZW50ICE9ICciJykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fY3VycmVudFRva2VuID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKTsKKyAgICArK21fY3VycmVudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXI6OmNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2Vu
KCkKK3sKKyAgICAvLyBUaGlzIGlzIG9rIGJlY2F1c2UgY29uc3VtZVF1b3RlZFN0cmluZygpIGRv
ZXNuJ3QgdXBkYXRlIG1fY3VycmVudCBvcgorICAgIC8vIG1ha2VzIGl0IHNhbWUgYXMgbV9lbmQg
b24gZmFpbHVyZS4KKyAgICByZXR1cm4gY29uc3VtZVF1b3RlZFN0cmluZygpIHx8IGNvbnN1bWVU
b2tlbigpOworfQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZUNoYXJh
Y3RlcihjaGFyIGNoYXJhY3RlcikKK3sKKyAgICBza2lwU3BhY2VzKCk7CisgICAgaWYgKG1fY3Vy
cmVudCA8IG1fZW5kICYmICptX2N1cnJlbnQgPT0gY2hhcmFjdGVyKSB7CisgICAgICAgICsrbV9j
dXJyZW50OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFdlYlNvY2tldEV4dGVuc2lvblBhcnNlcjo6cGFyc2VFeHRlbnNpb24oU3RyaW5n
JiBleHRlbnNpb25Ub2tlbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFt
ZXRlcnMpCit7CisgICAgLy8gUGFyc2UgZXh0ZW5zaW9uLXRva2VuLgorICAgIGlmICghY29uc3Vt
ZVRva2VuKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGV4dGVuc2lvblRva2VuID0g
Y3VycmVudFRva2VuKCk7CisKKyAgICAvLyBQYXJzZSBleHRlbnNpb24tcGFyYW1ldGVycyBpZiBl
eGlzdHMuCisgICAgd2hpbGUgKGNvbnN1bWVDaGFyYWN0ZXIoJzsnKSkgeworICAgICAgICBpZiAo
IWNvbnN1bWVUb2tlbigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFN0
cmluZyBwYXJhbWV0ZXJUb2tlbiA9IGN1cnJlbnRUb2tlbigpOworICAgICAgICBpZiAoY29uc3Vt
ZUNoYXJhY3RlcignPScpKSB7CisgICAgICAgICAgICBpZiAoY29uc3VtZVF1b3RlZFN0cmluZ09y
VG9rZW4oKSkKKyAgICAgICAgICAgICAgICBleHRlbnNpb25QYXJhbWV0ZXJzLmFkZChwYXJhbWV0
ZXJUb2tlbiwgY3VycmVudFRva2VuKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBleHRlbnNpb25Q
YXJhbWV0ZXJzLmFkZChwYXJhbWV0ZXJUb2tlbiwgU3RyaW5nKCkpOworICAgIH0KKyAgICBpZiAo
IWZpbmlzaGVkKCkgJiYgIWNvbnN1bWVDaGFyYWN0ZXIoJywnKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jN2IwZTM2NDY4ZDc3MGJlMmIzYjA2MGYwZmQ0MmZmZTMwNGU1YjkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvblBhcnNlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXJfaAorI2RlZmluZSBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXJfaAorCisjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyIHsK
K3B1YmxpYzoKKyAgICBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKKyAgICAgICAgOiBtX2N1cnJlbnQoc3RhcnQpCisgICAgICAgICwg
bV9lbmQoZW5kKQorICAgIHsKKyAgICB9CisgICAgYm9vbCBmaW5pc2hlZCgpOworICAgIGJvb2wg
cGFyc2VkU3VjY2Vzc2Z1bGx5KCk7CisgICAgYm9vbCBwYXJzZUV4dGVuc2lvbihTdHJpbmcmIGV4
dGVuc2lvblRva2VuLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgcGFyYW1ldGVycyk7CisKK3By
aXZhdGU6CisgICAgY29uc3QgU3RyaW5nJiBjdXJyZW50VG9rZW4oKSB7IHJldHVybiBtX2N1cnJl
bnRUb2tlbjsgfQorCisgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgZnVuY3Rpb25zIGJhc2lj
YWxseSBmb2xsb3cgdGhlIGdyYW1tYXIgZGVmaW5lZAorICAgIC8vIGluIFNlY3Rpb24gMi4yIG9m
IFJGQyAyNjE2LgorICAgIGJvb2wgY29uc3VtZVRva2VuKCk7CisgICAgYm9vbCBjb25zdW1lUXVv
dGVkU3RyaW5nKCk7CisgICAgYm9vbCBjb25zdW1lUXVvdGVkU3RyaW5nT3JUb2tlbigpOworICAg
IGJvb2wgY29uc3VtZUNoYXJhY3RlcihjaGFyKTsKKworICAgIHZvaWQgc2tpcFNwYWNlcygpOwor
CisgICAgY29uc3QgY2hhciogbV9jdXJyZW50OworICAgIGNvbnN0IGNoYXIqIG1fZW5kOworICAg
IFN0cmluZyBtX2N1cnJlbnRUb2tlbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEV4dGVu
c2lvblBhcnNlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhNGQ4NzU0N2E0YTlkMGE1MDllMTNmOTRmYjBk
ZTUzYjJkOGRmMTQ4Li4zNjY3OTdiZGM2ZjY0NGEwOWEyMjc5NGY2YWYzZjlhNmM2NTNmYTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTM4MDcsNiArMzgwNyw3IEBAIGVuYWJsZT8oV0VCX1NPQ0tFVFMpIHsK
ICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuaCBcCiAg
ICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oIFwKICAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCisgICAg
ICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCBcCiAgICAg
ICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCiAg
ICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKICAgICAgICAgTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKQEAgLTM4MjEsNiArMzgyMiw3
IEBAIGVuYWJsZT8oV0VCX1NPQ0tFVFMpIHsKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldERlZmxhdGVyLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEZyYW1lLmNwcCBcCiAgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3YzExZTc2NzdhNzVmNDAx
ZTI0NTQyYWU0MjYwNjZlZjJlODhhZDVmLi41YzZkZTJiNzdiNGIyYzBmMmUzOGVjNjlmNzMwMThi
Mzg1ZmVhMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xODI3LDYgKzE4MjcsOCBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4
dGVuc2lvblByb2Nlc3Nvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RnJhbWUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCA3OTgzYTJmYjkxNjI1OTYwZjBiZTMzY2VlN2QzNzZjZDU4
OGQ5M2FlLi5lZjJhYWYwNTE5OWQxYTE5YTJkNDM1OGVhOGY4ZDllZTM2YmFlOTkyIDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjU1NTQsNiAr
MjU1NTQsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuY3Bw
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJz
b2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDY4OWYzYWQ5OWY2NDI2ZjhhYjNiNzFmNzI3ZGY4MDRkZDVmYzI5NDguLmM4MGM3NzEz
MjQ2MTA5Y2EwMDgyNDc5MmViZjg4MTE2YjZiMmNmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTQsNiArMTQxNCw4IEBA
CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYy
NkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKIAkJNEEzOEJGNTAxNEZFMUMwOTAwNjEyNTEy
IC8qIFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEEzOEJGNEUxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tl
dERlZmxhdGVGcmFtZXIuY3BwICovOyB9OwogCQk0QTM4QkY1MTE0RkUxQzA5MDA2MTI1MTIgLyog
V2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEEzOEJGNEYxNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxh
dGVGcmFtZXIuaCAqLzsgfTsKKwkJNEE1QTJBREIxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tl
dEV4dGVuc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0RXh0ZW5zaW9u
UGFyc2VyLmNwcCAqLzsgfTsKKwkJNEE1QTJBREMxNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tl
dEV4dGVuc2lvblBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lvblBh
cnNlci5oICovOyB9OwogCQk0QTZBMEM1QjE1MjMyRjI0MDBCMDlDNkUgLyogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRBNkEwQzU5MTUyMzJGMjQwMEIwOUM2RSAvKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXIuY3BwICovOyB9OwogCQk0QTZBMEM1QzE1MjMyRjI0MDBCMDlDNkUgLyogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0QTZBMEM1QTE1MjMyRjI0MDBCMDlDNkUgLyogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2Vy
LmggKi87IH07CiAJCTRBNkU5RkMzMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBNkU5
RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLzsgfTsKQEAgLTg1
NzYsNiArODU3OCw4IEBACiAJCTRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jv
b3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaGFkb3dSb290Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBMzhCRjRFMTRGRTFDMDkwMDYxMjUxMiAvKiBX
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QTM4QkY0RjE0RkUxQzA5MDA2MTI1MTIgLyogV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXREZWZsYXRlRnJhbWVy
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYlNvY2tldEV4dGVuc2lvblBhcnNlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEE1QTJBREExNjFFN0UwMDAwNTg4OUREIC8qIFdlYlNvY2tldEV4dGVuc2lv
blBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRFeHRl
bnNpb25QYXJzZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNp
b25QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE2QTBDNTkxNTIzMkYy
NDAwQjA5QzZFIC8qIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZBMEM1QTE1MjMyRjI0MDBCMDlDNkUgLyogQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0QTZFOUZDMTEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmVhdHVyZVZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3OTcxLDYgKzE3OTc1LDggQEAKIAkJCQk5N0FB
QkQwNjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RGVmbGF0ZXIuaCAqLywKIAkJCQk5N0FB
QkQwNzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAg
Ki8sCiAJCQkJOTdBQUJEMDgxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaCAqLywKKwkJCQk0QTVBMkFEOTE2MUU3RTAwMDA1ODg5REQgLyogV2ViU29ja2V0
RXh0ZW5zaW9uUGFyc2VyLmNwcCAqLywKKwkJCQk0QTVBMkFEQTE2MUU3RTAwMDA1ODg5REQgLyog
V2ViU29ja2V0RXh0ZW5zaW9uUGFyc2VyLmggKi8sCiAJCQkJOTdBQUJEMDkxNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAogCQkJCUFBRjVCN0IxMTUy
NEI0QkQwMDA0Q0I0OSAvKiBXZWJTb2NrZXRGcmFtZS5jcHAgKi8sCiAJCQkJOTdBQUJEMEExNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggKi8sCkBAIC0yNTQxOCw2ICsyNTQyNCw3
IEBACiAJCQkJNEEzOEJGNTExNEZFMUMwOTAwNjEyNTEyIC8qIFdlYlNvY2tldERlZmxhdGVGcmFt
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDIxMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXREZWZsYXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjMxNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTRBNUEyQURDMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QUFCRDI1MTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMjcx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yODUyMiw2ICsyODUyOSw3IEBACiAJCQkJNEEzOEJGNTAxNEZFMUMwOTAwNjEyNTEyIC8qIFdl
YlNvY2tldERlZmxhdGVGcmFtZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdBQUJEMjAxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3QUFCRDIyMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTRBNUEyQURCMTYxRTdFMDAwMDU4ODlERCAvKiBXZWJT
b2NrZXRFeHRlbnNpb25QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUFGNUI3QjcxNTI0
QjZDNTAwMDRDQjQ5IC8qIFdlYlNvY2tldEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
QUFCRDI2MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdBQUJEMjgxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3Qu
Y3BwCmluZGV4IDM1ODk4M2I4Mzk5MzE0Y2RhMDM3YzhjMDMyNDllZTliNjcyZTk2N2IuLjcwZjIx
YWU5YzA0OWUzZTQ3ZjhjMzBhNTNiMTk2OWM3NWU4OTZjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlclRlc3QuY3BwCkBAIC0yNyw5ICsyNywxMSBAQAogCiAjaW5jbHVkZSAiV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogCisjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUGFy
c2VyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCiAKICNpbmNs
dWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTc2LDQgKzE3OCwzNCBAQCBURVNUX0YoV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlclRl
c3QsIFRlc3RJbnZhbGlkKQogICAgIH0KIH0KIAorLy8gVGVzdHMgZm9yIHRoZSBtb3N0IGNvbXBs
ZXggZXhhbXBsZSBhdCBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh5Ymkt
cGVybWVzc2FnZS1jb21wcmVzc2lvbi0wMSNzZWN0aW9uLTMuMQorVEVTVF9GKFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXJUZXN0LCBUZXN0UGVyTWVzc2FnZUNvbXByZXNzRXhhbXBsZSkKK3sK
KyAgICBhZGRNb2NrUHJvY2Vzc29yKCJwZXJtZXNzYWdlLWNvbXByZXNzIik7CisgICAgYWRkTW9j
a1Byb2Nlc3NvcigiYmFyIik7CisgICAgRVhQRUNUX1RSVUUobV9leHRlbnNpb25zLnByb2Nlc3NI
ZWFkZXJWYWx1ZSgicGVybWVzc2FnZS1jb21wcmVzczsgbWV0aG9kPVwiZm9vOyB4PVxcXCJIZWxs
byBXb3JsZFxcXCIsIGJhclwiIikpOworICAgIEVYUEVDVF9FUSgxVSwgbV9wYXJzZWRFeHRlbnNp
b25Ub2tlbnMuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoInBlcm1lc3NhZ2UtY29tcHJlc3MiLCBt
X3BhcnNlZEV4dGVuc2lvblRva2Vuc1swXSk7CisgICAgU3RyaW5nIG1ldGhvZFBhcmFtZXRlciA9
IG1fcGFyc2VkUGFyYW1ldGVyc1swXS5maW5kKCJtZXRob2QiKS0+c2Vjb25kOworICAgIEVYUEVD
VF9FUSgiZm9vOyB4PVwiSGVsbG8gV29ybGRcIiwgYmFyIiwgbWV0aG9kUGFyYW1ldGVyKTsKKwor
ICAgIENTdHJpbmcgbWV0aG9kVmFsdWUgPSBtZXRob2RQYXJhbWV0ZXIuYXNjaWkoKTsKKyAgICBX
ZWJTb2NrZXRFeHRlbnNpb25QYXJzZXIgcGFyc2VyKG1ldGhvZFZhbHVlLmRhdGEoKSwgbWV0aG9k
VmFsdWUuZGF0YSgpICsgbWV0aG9kVmFsdWUubGVuZ3RoKCkpOworCisgICAgU3RyaW5nIHRva2Vu
MTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJhbWV0ZXJzMTsKKyAgICBFWFBFQ1Rf
VFJVRShwYXJzZXIucGFyc2VFeHRlbnNpb24odG9rZW4xLCBwYXJhbWV0ZXJzMSkpOworICAgIEVY
UEVDVF9FUSgiZm9vIiwgdG9rZW4xKTsKKyAgICBFWFBFQ1RfRVEoMSwgcGFyYW1ldGVyczEuc2l6
ZSgpKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6aXRlcmF0b3IgeHBhcmFtZXRlciA9
IHBhcmFtZXRlcnMxLmZpbmQoIngiKTsKKyAgICBFWFBFQ1RfRVEoIngiLCB4cGFyYW1ldGVyLT5m
aXJzdCk7CisgICAgRVhQRUNUX0VRKCJIZWxsbyBXb3JsZCIsIHhwYXJhbWV0ZXItPnNlY29uZCk7
CisKKyAgICBTdHJpbmcgdG9rZW4yOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHBhcmFt
ZXRlcnMyOworICAgIEVYUEVDVF9UUlVFKHBhcnNlci5wYXJzZUV4dGVuc2lvbih0b2tlbjIsIHBh
cmFtZXRlcnMyKSk7CisgICAgRVhQRUNUX0VRKCJiYXIiLCB0b2tlbjIpOworICAgIEVYUEVDVF9F
USgwLCBwYXJhbWV0ZXJzMi5zaXplKCkpOworfQorCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>