<?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>5954</bug_id>
          
          <creation_ts>2005-12-05 13:06:10 -0800</creation_ts>
          <short_desc>Cleanup Content-Type parsing</short_desc>
          <delta_ts>2007-07-13 04:49:18 -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>Page Loading</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>8644</dependson>
          <blocked>14059</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-webkit</cc>
    
    <cc>ian</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>25592</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-12-05 13:06:10 -0800</bug_when>
    <thetext>(from bug 5744).

Currently, at least three distinct parsers for Content-Type strings are used:
1) For HTTP headers, Foundation does the parsing;
2) Http-Equiv metas are parsed in khtml::Decoder;
3) XmlHttpRequest MIME type overrides are parsed in xmlhttprequest.cpp.

The implementations are not identical in implementation and behavior, so they need to be synchronized 
and, if possible, reused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26782</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-27 13:29:38 -0800</bug_when>
    <thetext>Assigning bugs which hyatt is not actively working on to &quot;nobody&quot; for clarity/consistancy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42803</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-08 10:27:48 -0800</bug_when>
    <thetext>We now have plaftorm/network/HTTPParsers.{h,cpp} to hold this common implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5044</commentid>
    <comment_count>3</comment_count>
      <attachid>15468</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-10 16:19:59 -0700</bug_when>
    <thetext>Created attachment 15468
Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf

Note: This copies two methods from a LGPL file to a BSD one.

These three parse methods will be used by the CURL backend to implement ResourceResponse handling. This is existing code copied to a different place. All three methods have known and documented issues and are not taken care by this change. The most important part of this change is making these three methods available to the CURL backend.

Fixing and improving the implementation will be done in following patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5045</commentid>
    <comment_count>4</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-10 16:21:10 -0700</bug_when>
    <thetext>The CURL backend patch needs these three methods for the implementation of ResourceResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5046</commentid>
    <comment_count>5</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-10 16:28:05 -0700</bug_when>
    <thetext>I forgot to update the copyright header. Apple Inc. is missing from HTTPParsers.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5050</commentid>
    <comment_count>6</comment_count>
      <attachid>15469</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-10 17:23:17 -0700</bug_when>
    <thetext>Created attachment 15469
Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf

Same patch as the previous one. Adds the Copyright notice of apple and renames getCharset to parseCharset in the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5006</commentid>
    <comment_count>7</comment_count>
      <attachid>15476</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-11 11:56:12 -0700</bug_when>
    <thetext>Created attachment 15476
Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf

Change function names, remove String parameter to follow the coding style. Change contentTypeString -&gt; mediaType in the implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5004</commentid>
    <comment_count>8</comment_count>
      <attachid>15476</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-07-11 12:02:21 -0700</bug_when>
    <thetext>Comment on attachment 15476
Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf

r=me

+        Copy filenameFromHTTPContentDisposition to HTTPParsers as well. This parse

I&apos;d say &quot;move&quot; here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4892</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-07-13 04:49:18 -0700</bug_when>
    <thetext>Landed in r24254.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15468</attachid>
            <date>2007-07-10 16:19:59 -0700</date>
            <delta_ts>2007-07-10 17:23:17 -0700</delta_ts>
            <desc>Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf</desc>
            <filename>http-parsers-move-methods-r0.patch</filename>
            <type>text/plain</type>
            <size>10228</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDE3MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDctMDctMTEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBIVFRQIG1ldGhvZHMgdG8gcGFyc2UgQ29udGVudC1UeXBlIGZyb20g
eG1saHR0cHJlcXVlc3QuY3BwCisgICAgICAgIHdoaWNoIGlzIExHUEwgdG8gSFRUUFBhcnNlcnMu
Y3BwLiBBcyBib3RoIGZpbGVzIHdlcmUgd3JpdHRlbiBieSB0aGUKKyAgICAgICAgc2FtZSBhdXRo
b3IgYW5kIHRoZSBhZHZpY2UgdG8gbW92ZSB0aGVtIGNhbWUgZnJvbSBoaW0gSSB0aGluayB0aGlz
IG1vdmUKKyAgICAgICAgaXMgd2hhdCBpcyBtZWFudCB0byBiZSBkb25lLgorICAgICAgICBDb3B5
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24gdG8gSFRUUFBhcnNlcnMgYXMgd2Vs
bC4gVGhpcyBwYXJzZQorICAgICAgICBmdW5jdGlvbiB1c2VzIFZlY3RvcjxTdHJpbmc+OjpzcGxp
dCBhbmQgZG9lc24ndCBob25vciBxdW90aW5nLiBUaGlzIG5lZWRzCisgICAgICAgIHRvIGJlIGZp
eGVkIGluIGxhdGVyIHZlcnNpb25zLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5NTQgYW5kIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MDU5CisgICAgICAgIGJlbmVmaXQgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENoYXJzZXQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgICogeG1sL3htbGh0dHBy
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorCiAyMDA3LTA3LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBCcmFkeS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMjQxNzIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKIAorI2luY2x1ZGUg
IkRlcHJlY2F0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xMDAsNCArMTAxLDg1IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVz
aChjb25zdCBTdHJpbmcmIHJlZnIKICAgICB9CiB9CiAKK1N0cmluZyBmaWxlbmFtZUZyb21IVFRQ
Q29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgVmVjdG9yPFN0
cmluZz4ga2V5VmFsdWVQYWlycyA9IHZhbHVlLnNwbGl0KCc7Jyk7CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBrZXlWYWx1ZVBhaXJzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaW50IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBh
aXJzW2ldLmZpbmQoJz0nKTsKKyAgICAgICAgaWYgKHZhbHVlU3RhcnRQb3MgPCAwKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgU3RyaW5nIGtleSA9IGtleVZhbHVlUGFpcnNbaV0u
bGVmdCh2YWx1ZVN0YXJ0UG9zKS5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgICAgICBpZiAoa2V5
LmlzRW1wdHkoKSB8fCBrZXkgIT0gImZpbGVuYW1lIikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgU3RyaW5nIHZhbHVlID0ga2V5VmFsdWVQYWlyc1tpXS5zdWJzdHJp
bmcodmFsdWVTdGFydFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOworCisgICAgICAgIC8vIFJl
bW92ZSBxdW90ZXMgaWYgdGhlcmUgYXJlIGFueQorICAgICAgICBpZiAodmFsdWVbMF0gPT0gJ1wi
JykKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgp
IC0gMik7CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZVN0cmluZykKK3sKKyAgICBTdHJpbmcgbWltZVR5cGU7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
Y29udGVudFR5cGVTdHJpbmcubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBvZmZzZXQgPSAw
OyBvZmZzZXQgPCBsZW5ndGg7IG9mZnNldCsrKSB7CisgICAgICAgIFVDaGFyIGMgPSBjb250ZW50
VHlwZVN0cmluZ1tvZmZzZXRdOworICAgICAgICBpZiAoYyA9PSAnOycpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZWxzZSBpZiAoRGVwcmVjYXRlZENoYXIoYykuaXNTcGFjZSgpKSAvLyBG
SVhNRTogVGhpcyBzZWVtcyB3cm9uZywgIiAiIGlzIGFuIGludmFsaWQgTUlNRSB0eXBlIGNoYXJh
Y3RlciBhY2NvcmRpbmcgdG8gUkZDIDIwNDUuICBidWcgODY0NAorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSBzbG93IHdheSB0byBidWlsZCBh
IHN0cmluZywgZ2l2ZW4gV2ViQ29yZTo6U3RyaW5nJ3MgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IG1pbWVUeXBlICs9IFN0cmluZygmYywgMSk7CisgICAgfQorICAgIHJldHVybiBtaW1lVHlwZTsK
K30KKworU3RyaW5nIGdldENoYXJzZXQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZVN0cmluZykK
K3sKKyAgICBpbnQgcG9zID0gMDsKKyAgICBpbnQgbGVuZ3RoID0gKGludCljb250ZW50VHlwZVN0
cmluZy5sZW5ndGgoKTsKKyAgICAKKyAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7CisgICAgICAg
IHBvcyA9IGNvbnRlbnRUeXBlU3RyaW5nLmZpbmQoImNoYXJzZXQiLCBwb3MsIGZhbHNlKTsKKyAg
ICAgICAgaWYgKHBvcyA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAg
ICAKKyAgICAgICAgLy8gaXMgd2hhdCB3ZSBmb3VuZCBhIGJlZ2lubmluZyBvZiBhIHdvcmQ/Cisg
ICAgICAgIGlmIChjb250ZW50VHlwZVN0cmluZ1twb3MtMV0gPiAnICcgJiYgY29udGVudFR5cGVT
dHJpbmdbcG9zLTFdICE9ICc7JykgeworICAgICAgICAgICAgcG9zICs9IDc7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcG9zICs9IDc7CisKKyAg
ICAgICAgLy8gc2tpcCB3aGl0ZXNwYWNlCisgICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYm
IGNvbnRlbnRUeXBlU3RyaW5nW3Bvc10gPD0gJyAnKQorICAgICAgICAgICAgKytwb3M7CisgICAg
CisgICAgICAgIGlmIChjb250ZW50VHlwZVN0cmluZ1twb3MrK10gIT0gJz0nKSAvLyB0aGlzICJj
aGFyc2V0IiBzdWJzdHJpbmcgd2Fzbid0IGEgcGFyYW1ldGVyIG5hbWUsIGJ1dCB0aGVyZSBtYXkg
YmUgb3RoZXJzCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAocG9zICE9
IGxlbmd0aCAmJiAoY29udGVudFR5cGVTdHJpbmdbcG9zXSA8PSAnICcgfHwgY29udGVudFR5cGVT
dHJpbmdbcG9zXSA9PSAnIicgfHwgY29udGVudFR5cGVTdHJpbmdbcG9zXSA9PSAnXCcnKSkKKyAg
ICAgICAgICAgICsrcG9zOworCisgICAgICAgIC8vIHdlIGRvbid0IGhhbmRsZSBzcGFjZXMgd2l0
aGluIHF1b3RlZCBwYXJhbWV0ZXIgdmFsdWVzLCBiZWNhdXNlIGNoYXJzZXQgbmFtZXMgY2Fubm90
IGhhdmUgYW55CisgICAgICAgIGludCBlbmRwb3MgPSBwb3M7CisgICAgICAgIHdoaWxlIChwb3Mg
IT0gbGVuZ3RoICYmIGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gPiAnICcgJiYgY29udGVudFR5
cGVTdHJpbmdbZW5kcG9zXSAhPSAnIicgJiYgY29udGVudFR5cGVTdHJpbmdbZW5kcG9zXSAhPSAn
XCcnICYmIGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gIT0gJzsnKQorICAgICAgICAgICAgKytl
bmRwb3M7CisgICAgCisgICAgICAgIHJldHVybiBjb250ZW50VHlwZVN0cmluZy5zdWJzdHJpbmco
cG9zLCBlbmRwb3MtcG9zKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFN0cmluZygpOworfQog
fQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9uIDI0
MTcyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFN0
cmluZzsKIAogICAgIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gs
IGJvb2wgZnJvbUh0dHBFcXVpdk1ldGEsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKTsKKyAg
ICBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcm
IHZhbHVlKTsgCisgICAgU3RyaW5nIHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZVN0cmluZyk7CisgICAgU3RyaW5nIHBhcnNlQ2hhcnNldChjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlU3RyaW5nKTsgCiB9CiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAJKHJldmlzaW9uIDI0
MTcyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5l
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuaCIKIAorI2luY2x1ZGUgIkhUVFBQ
YXJzZXJzLmgiCiAjaW5jbHVkZSAiTWltZVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXNwb25zZVByaXYuaD4K
QEAgLTQ1LDM0ICs0Niw2IEBAIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZV
UkwKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwogfQogCi0vLyBGSVhNRTogTW92ZSB0
aGlzIHRvIEhUVFBQYXJzZXJzLmgKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGZpbGVuYW1lRnJvbUhU
VFBDb250ZW50RGlzcG9zaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBWZWN0b3I8
U3RyaW5nPiBrZXlWYWx1ZVBhaXJzID0gdmFsdWUuc3BsaXQoJzsnKTsKLQotICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGtleVZhbHVlUGFpcnMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBpbnQgdmFsdWVTdGFydFBvcyA9IGtleVZhbHVl
UGFpcnNbaV0uZmluZCgnPScpOwotICAgICAgICBpZiAodmFsdWVTdGFydFBvcyA8IDApCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBTdHJpbmcga2V5ID0ga2V5VmFsdWVQYWlyc1tp
XS5sZWZ0KHZhbHVlU3RhcnRQb3MpLnN0cmlwV2hpdGVTcGFjZSgpOwotCi0gICAgICAgIGlmIChr
ZXkuaXNFbXB0eSgpIHx8IGtleSAhPSAiZmlsZW5hbWUiKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIAotICAgICAgICBTdHJpbmcgdmFsdWUgPSBrZXlWYWx1ZVBhaXJzW2ldLnN1YnN0
cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICAgICAgLy8g
UmVtb3ZlIHF1b3RlcyBpZiB0aGVyZSBhcmUgYW55Ci0gICAgICAgIGlmICh2YWx1ZVswXSA9PSAn
XCInKQotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSwgdmFsdWUubGVuZ3Ro
KCkgLSAyKTsKLQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0
cmluZygpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgZmlsZW5hbWVIYXNTYW5lRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgaW50IGRvdCA9IGZpbGVuYW1lLmZpbmQo
Jy4nKTsKSW5kZXg6IFdlYkNvcmUveG1sL3htbGh0dHByZXF1ZXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3htbC94bWxodHRwcmVxdWVzdC5jcHAJKHJldmlzaW9uIDI0MTcyKQorKysgV2Vi
Q29yZS94bWwveG1saHR0cHJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkhUTUxEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4
cHJlc3Npb24uaCIKQEAgLTg3LDYxICs4OCw2IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUZyb21SZXF1
ZXN0c0J5RG9jdW1lbnQKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGdldE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGVTdHJpbmcpCi17Ci0gICAgU3RyaW5nIG1pbWVU
eXBlOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGNvbnRlbnRUeXBlU3RyaW5nLmxlbmd0aCgpOwot
ICAgIGZvciAodW5zaWduZWQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbGVuZ3RoOyBvZmZzZXQrKykg
ewotICAgICAgICBVQ2hhciBjID0gY29udGVudFR5cGVTdHJpbmdbb2Zmc2V0XTsKLSAgICAgICAg
aWYgKGMgPT0gJzsnKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGVsc2UgaWYgKERlcHJl
Y2F0ZWRDaGFyKGMpLmlzU3BhY2UoKSkgLy8gRklYTUU6IFRoaXMgc2VlbXMgd3JvbmcsICIgIiBp
cyBhbiBpbnZhbGlkIE1JTUUgdHlwZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIFJGQyAyMDQ1LiAg
YnVnIDg2NDQKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyBhIHZlcnkgc2xvdyB3YXkgdG8gYnVpbGQgYSBzdHJpbmcsIGdpdmVuIFdlYkNvcmU6OlN0cmlu
ZydzIGltcGxlbWVudGF0aW9uLgotICAgICAgICBtaW1lVHlwZSArPSBTdHJpbmcoJmMsIDEpOwot
ICAgIH0KLSAgICByZXR1cm4gbWltZVR5cGU7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2V0Q2hhcnNl
dChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlU3RyaW5nKQotewotICAgIGludCBwb3MgPSAwOwot
ICAgIGludCBsZW5ndGggPSAoaW50KWNvbnRlbnRUeXBlU3RyaW5nLmxlbmd0aCgpOwotICAgIAot
ICAgIHdoaWxlIChwb3MgPCBsZW5ndGgpIHsKLSAgICAgICAgcG9zID0gY29udGVudFR5cGVTdHJp
bmcuZmluZCgiY2hhcnNldCIsIHBvcywgZmFsc2UpOwotICAgICAgICBpZiAocG9zIDw9IDApCi0g
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBpcyB3aGF0
IHdlIGZvdW5kIGEgYmVnaW5uaW5nIG9mIGEgd29yZD8KLSAgICAgICAgaWYgKGNvbnRlbnRUeXBl
U3RyaW5nW3Bvcy0xXSA+ICcgJyAmJiBjb250ZW50VHlwZVN0cmluZ1twb3MtMV0gIT0gJzsnKSB7
Ci0gICAgICAgICAgICBwb3MgKz0gNzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBwb3MgKz0gNzsKLQotICAgICAgICAvLyBza2lwIHdoaXRlc3Bh
Y2UKLSAgICAgICAgd2hpbGUgKHBvcyAhPSBsZW5ndGggJiYgY29udGVudFR5cGVTdHJpbmdbcG9z
XSA8PSAnICcpCi0gICAgICAgICAgICArK3BvczsKLSAgICAKLSAgICAgICAgaWYgKGNvbnRlbnRU
eXBlU3RyaW5nW3BvcysrXSAhPSAnPScpIC8vIHRoaXMgImNoYXJzZXQiIHN1YnN0cmluZyB3YXNu
J3QgYSBwYXJhbWV0ZXIgbmFtZSwgYnV0IHRoZXJlIG1heSBiZSBvdGhlcnMKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIChjb250ZW50VHlw
ZVN0cmluZ1twb3NdIDw9ICcgJyB8fCBjb250ZW50VHlwZVN0cmluZ1twb3NdID09ICciJyB8fCBj
b250ZW50VHlwZVN0cmluZ1twb3NdID09ICdcJycpKQotICAgICAgICAgICAgKytwb3M7Ci0KLSAg
ICAgICAgLy8gd2UgZG9uJ3QgaGFuZGxlIHNwYWNlcyB3aXRoaW4gcXVvdGVkIHBhcmFtZXRlciB2
YWx1ZXMsIGJlY2F1c2UgY2hhcnNldCBuYW1lcyBjYW5ub3QgaGF2ZSBhbnkKLSAgICAgICAgaW50
IGVuZHBvcyA9IHBvczsKLSAgICAgICAgd2hpbGUgKHBvcyAhPSBsZW5ndGggJiYgY29udGVudFR5
cGVTdHJpbmdbZW5kcG9zXSA+ICcgJyAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdICE9ICci
JyAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdICE9ICdcJycgJiYgY29udGVudFR5cGVTdHJp
bmdbZW5kcG9zXSAhPSAnOycpCi0gICAgICAgICAgICArK2VuZHBvczsKLSAgICAKLSAgICAgICAg
cmV0dXJuIGNvbnRlbnRUeXBlU3RyaW5nLnN1YnN0cmluZyhwb3MsIGVuZHBvcy1wb3MpOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIHN0YXRpYyBib29sIGNhblNldFJl
cXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHN0YXRpYyBIYXNoU2V0PFN0
cmluZywgQ2FzZUluc2Vuc2l0aXZlSGFzaDxTdHJpbmc+ID4gZm9yYmlkZGVuSGVhZGVyczsKQEAg
LTU4NSwxMCArNTMxLDEwIEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VIZWFk
ZXIKIAogU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKIHsK
LSAgICBTdHJpbmcgbWltZVR5cGUgPSBnZXRNSU1FVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUpOwor
ICAgIFN0cmluZyBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5cGUobV9taW1lVHlwZU92ZXJyaWRlKTsK
ICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLmlz
SFRUUCgpKQotICAgICAgICAgICAgbWltZVR5cGUgPSBnZXRNSU1FVHlwZShnZXRSZXNwb25zZUhl
YWRlcigiQ29udGVudC1UeXBlIikpOworICAgICAgICAgICAgbWltZVR5cGUgPSBwYXJzZU1JTUVU
eXBlKGdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1pbWVUeXBlID0gbV9yZXNwb25zZS5taW1lVHlwZSgpOwogICAgIH0KQEAgLTY5
Nyw3ICs2NDMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojp3aWxsU2VuZFJlcXVlc3QoU3ViCiB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UoU3VicmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBtX3Jlc3BvbnNlID0g
cmVzcG9uc2U7Ci0gICAgbV9lbmNvZGluZyA9IGdldENoYXJzZXQobV9taW1lVHlwZU92ZXJyaWRl
KTsKKyAgICBtX2VuY29kaW5nID0gcGFyc2VDaGFyc2V0KG1fbWltZVR5cGVPdmVycmlkZSk7CiAg
ICAgaWYgKG1fZW5jb2RpbmcuaXNFbXB0eSgpKQogICAgICAgICBtX2VuY29kaW5nID0gcmVzcG9u
c2UudGV4dEVuY29kaW5nTmFtZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15469</attachid>
            <date>2007-07-10 17:23:17 -0700</date>
            <delta_ts>2007-07-11 11:56:12 -0700</delta_ts>
            <desc>Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf</desc>
            <filename>http-parsers-move-methods-r1.patch</filename>
            <type>text/plain</type>
            <size>10529</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDctMDctMTEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBIVFRQIG1ldGhvZHMgdG8gcGFyc2UgQ29udGVudC1UeXBlIGZyb20g
eG1saHR0cHJlcXVlc3QuY3BwCisgICAgICAgIHdoaWNoIGlzIExHUEwgdG8gSFRUUFBhcnNlcnMu
Y3BwLiBBcyBib3RoIGZpbGVzIHdlcmUgd3JpdHRlbiBieSB0aGUKKyAgICAgICAgc2FtZSBhdXRo
b3IgYW5kIHRoZSBhZHZpY2UgdG8gbW92ZSB0aGVtIGNhbWUgZnJvbSBoaW0gSSB0aGluayB0aGlz
IG1vdmUKKyAgICAgICAgaXMgd2hhdCBpcyBtZWFudCB0byBiZSBkb25lLgorICAgICAgICBDb3B5
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24gdG8gSFRUUFBhcnNlcnMgYXMgd2Vs
bC4gVGhpcyBwYXJzZQorICAgICAgICBmdW5jdGlvbiB1c2VzIFZlY3RvcjxTdHJpbmc+OjpzcGxp
dCBhbmQgZG9lc24ndCBob25vciBxdW90aW5nLiBUaGlzIG5lZWRzCisgICAgICAgIHRvIGJlIGZp
eGVkIGluIGxhdGVyIHZlcnNpb25zLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5NTQgYW5kIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MDU5CisgICAgICAgIGJlbmVmaXQgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZU1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2hhcnNldCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcDoKKyAgICAgICAgKiB4bWwveG1saHR0
cHJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
TUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisKIDIwMDctMDctMTAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0gSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMjQxNzQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEB3ZWJraXQub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgogCisjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwMCw0ICsxMDIsODUgQEAgYm9vbCBw
YXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcgogICAgIH0KIH0KIAorU3RyaW5nIGZp
bGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiBrZXlWYWx1ZVBhaXJzID0gdmFsdWUuc3BsaXQoJzsnKTsKKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGtleVZhbHVlUGFpcnMuc2l6ZSgpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpbnQgdmFsdWVTdGFydFBv
cyA9IGtleVZhbHVlUGFpcnNbaV0uZmluZCgnPScpOworICAgICAgICBpZiAodmFsdWVTdGFydFBv
cyA8IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTdHJpbmcga2V5ID0ga2V5
VmFsdWVQYWlyc1tpXS5sZWZ0KHZhbHVlU3RhcnRQb3MpLnN0cmlwV2hpdGVTcGFjZSgpOworCisg
ICAgICAgIGlmIChrZXkuaXNFbXB0eSgpIHx8IGtleSAhPSAiZmlsZW5hbWUiKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdmFsdWUgPSBrZXlWYWx1ZVBh
aXJzW2ldLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CisK
KyAgICAgICAgLy8gUmVtb3ZlIHF1b3RlcyBpZiB0aGVyZSBhcmUgYW55CisgICAgICAgIGlmICh2
YWx1ZVswXSA9PSAnXCInKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMSwg
dmFsdWUubGVuZ3RoKCkgLSAyKTsKKworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgcGFyc2VNSU1FVHlwZShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlU3RyaW5nKQoreworICAgIFN0cmluZyBtaW1lVHlwZTsKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSBjb250ZW50VHlwZVN0cmluZy5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIG9mZnNldCA9IDA7IG9mZnNldCA8IGxlbmd0aDsgb2Zmc2V0KyspIHsKKyAgICAgICAgVUNo
YXIgYyA9IGNvbnRlbnRUeXBlU3RyaW5nW29mZnNldF07CisgICAgICAgIGlmIChjID09ICc7JykK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlbHNlIGlmIChEZXByZWNhdGVkQ2hhcihjKS5p
c1NwYWNlKCkpIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHdyb25nLCAiICIgaXMgYW4gaW52YWxpZCBN
SU1FIHR5cGUgY2hhcmFjdGVyIGFjY29yZGluZyB0byBSRkMgMjA0NS4gIGJ1ZyA4NjQ0CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNsb3cg
d2F5IHRvIGJ1aWxkIGEgc3RyaW5nLCBnaXZlbiBXZWJDb3JlOjpTdHJpbmcncyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgbWltZVR5cGUgKz0gU3RyaW5nKCZjLCAxKTsKKyAgICB9CisgICAgcmV0
dXJuIG1pbWVUeXBlOworfQorCitTdHJpbmcgcGFyc2VDaGFyc2V0KGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGVTdHJpbmcpCit7CisgICAgaW50IHBvcyA9IDA7CisgICAgaW50IGxlbmd0aCA9IChp
bnQpY29udGVudFR5cGVTdHJpbmcubGVuZ3RoKCk7CisgICAgCisgICAgd2hpbGUgKHBvcyA8IGxl
bmd0aCkgeworICAgICAgICBwb3MgPSBjb250ZW50VHlwZVN0cmluZy5maW5kKCJjaGFyc2V0Iiwg
cG9zLCBmYWxzZSk7CisgICAgICAgIGlmIChwb3MgPD0gMCkKKyAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGlzIHdoYXQgd2UgZm91bmQgYSBiZWdpbm5p
bmcgb2YgYSB3b3JkPworICAgICAgICBpZiAoY29udGVudFR5cGVTdHJpbmdbcG9zLTFdID4gJyAn
ICYmIGNvbnRlbnRUeXBlU3RyaW5nW3Bvcy0xXSAhPSAnOycpIHsKKyAgICAgICAgICAgIHBvcyAr
PSA3OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHBvcyArPSA3OworCisgICAgICAgIC8vIHNraXAgd2hpdGVzcGFjZQorICAgICAgICB3aGlsZSAo
cG9zICE9IGxlbmd0aCAmJiBjb250ZW50VHlwZVN0cmluZ1twb3NdIDw9ICcgJykKKyAgICAgICAg
ICAgICsrcG9zOworICAgIAorICAgICAgICBpZiAoY29udGVudFR5cGVTdHJpbmdbcG9zKytdICE9
ICc9JykgLy8gdGhpcyAiY2hhcnNldCIgc3Vic3RyaW5nIHdhc24ndCBhIHBhcmFtZXRlciBuYW1l
LCBidXQgdGhlcmUgbWF5IGJlIG90aGVycworICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgd2hpbGUgKHBvcyAhPSBsZW5ndGggJiYgKGNvbnRlbnRUeXBlU3RyaW5nW3Bvc10gPD0gJyAn
IHx8IGNvbnRlbnRUeXBlU3RyaW5nW3Bvc10gPT0gJyInIHx8IGNvbnRlbnRUeXBlU3RyaW5nW3Bv
c10gPT0gJ1wnJykpCisgICAgICAgICAgICArK3BvczsKKworICAgICAgICAvLyB3ZSBkb24ndCBo
YW5kbGUgc3BhY2VzIHdpdGhpbiBxdW90ZWQgcGFyYW1ldGVyIHZhbHVlcywgYmVjYXVzZSBjaGFy
c2V0IG5hbWVzIGNhbm5vdCBoYXZlIGFueQorICAgICAgICBpbnQgZW5kcG9zID0gcG9zOworICAg
ICAgICB3aGlsZSAocG9zICE9IGxlbmd0aCAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdID4g
JyAnICYmIGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gIT0gJyInICYmIGNvbnRlbnRUeXBlU3Ry
aW5nW2VuZHBvc10gIT0gJ1wnJyAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdICE9ICc7JykK
KyAgICAgICAgICAgICsrZW5kcG9zOworICAgIAorICAgICAgICByZXR1cm4gY29udGVudFR5cGVT
dHJpbmcuc3Vic3RyaW5nKHBvcywgZW5kcG9zLXBvcyk7CisgICAgfQorICAgIAorICAgIHJldHVy
biBTdHJpbmcoKTsKK30KIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCShyZXZpc2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBTdHJpbmc7CiAKICAgICBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3Qg
U3RyaW5nJiByZWZyZXNoLCBib29sIGZyb21IdHRwRXF1aXZNZXRhLCBkb3VibGUmIGRlbGF5LCBT
dHJpbmcmIHVybCk7CisgICAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRp
b24oY29uc3QgU3RyaW5nJiB2YWx1ZSk7IAorICAgIFN0cmluZyBwYXJzZU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGVTdHJpbmcpOworICAgIFN0cmluZyBwYXJzZUNoYXJzZXQoY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZVN0cmluZyk7IAogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUNGTmV0LmgiCiAK
KyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1pbWVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJM
UmVzcG9uc2VQcml2Lmg+CkBAIC00NSwzNCArNDYsNiBAQCBDRlVSTFJlc3BvbnNlUmVmIFJlc291
cmNlUmVzcG9uc2U6OmNmVVJMCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKIH0KIAot
Ly8gRklYTUU6IE1vdmUgdGhpcyB0byBIVFRQUGFyc2Vycy5oCi1zdGF0aWMgaW5saW5lIFN0cmlu
ZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYgdmFsdWUp
Ci17Ci0gICAgVmVjdG9yPFN0cmluZz4ga2V5VmFsdWVQYWlycyA9IHZhbHVlLnNwbGl0KCc7Jyk7
Ci0KLSAgICB1bnNpZ25lZCBsZW5ndGggPSBrZXlWYWx1ZVBhaXJzLnNpemUoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaW50IHZhbHVlU3Rh
cnRQb3MgPSBrZXlWYWx1ZVBhaXJzW2ldLmZpbmQoJz0nKTsKLSAgICAgICAgaWYgKHZhbHVlU3Rh
cnRQb3MgPCAwKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgU3RyaW5nIGtleSA9
IGtleVZhbHVlUGFpcnNbaV0ubGVmdCh2YWx1ZVN0YXJ0UG9zKS5zdHJpcFdoaXRlU3BhY2UoKTsK
LQotICAgICAgICBpZiAoa2V5LmlzRW1wdHkoKSB8fCBrZXkgIT0gImZpbGVuYW1lIikKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgU3RyaW5nIHZhbHVlID0ga2V5VmFs
dWVQYWlyc1tpXS5zdWJzdHJpbmcodmFsdWVTdGFydFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgp
OwotCi0gICAgICAgIC8vIFJlbW92ZSBxdW90ZXMgaWYgdGhlcmUgYXJlIGFueQotICAgICAgICBp
ZiAodmFsdWVbMF0gPT0gJ1wiJykKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5n
KDEsIHZhbHVlLmxlbmd0aCgpIC0gMik7Ci0KLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0K
LQotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGZpbGVuYW1l
SGFzU2FuZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIGludCBkb3Qg
PSBmaWxlbmFtZS5maW5kKCcuJyk7CkluZGV4OiBXZWJDb3JlL3htbC94bWxodHRwcmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwveG1saHR0cHJlcXVlc3QuY3BwCShyZXZpc2lv
biAyNDE3NCkKKysrIFdlYkNvcmUveG1sL3htbGh0dHByZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vy
cy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCkBAIC04Nyw2MSArODgsNiBAQCBzdGF0aWMgdm9p
ZCByZW1vdmVGcm9tUmVxdWVzdHNCeURvY3VtZW50CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5l
IFN0cmluZyBnZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlU3RyaW5nKQotewot
ICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb250ZW50VHlwZVN0
cmluZy5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IG9mZnNldCA8IGxl
bmd0aDsgb2Zmc2V0KyspIHsKLSAgICAgICAgVUNoYXIgYyA9IGNvbnRlbnRUeXBlU3RyaW5nW29m
ZnNldF07Ci0gICAgICAgIGlmIChjID09ICc7JykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBlbHNlIGlmIChEZXByZWNhdGVkQ2hhcihjKS5pc1NwYWNlKCkpIC8vIEZJWE1FOiBUaGlzIHNl
ZW1zIHdyb25nLCAiICIgaXMgYW4gaW52YWxpZCBNSU1FIHR5cGUgY2hhcmFjdGVyIGFjY29yZGlu
ZyB0byBSRkMgMjA0NS4gIGJ1ZyA4NjQ0Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNsb3cgd2F5IHRvIGJ1aWxkIGEgc3RyaW5nLCBnaXZl
biBXZWJDb3JlOjpTdHJpbmcncyBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgbWltZVR5cGUgKz0g
U3RyaW5nKCZjLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1pbWVUeXBlOwotfQotCi1zdGF0aWMg
U3RyaW5nIGdldENoYXJzZXQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZVN0cmluZykKLXsKLSAg
ICBpbnQgcG9zID0gMDsKLSAgICBpbnQgbGVuZ3RoID0gKGludCljb250ZW50VHlwZVN0cmluZy5s
ZW5ndGgoKTsKLSAgICAKLSAgICB3aGlsZSAocG9zIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHBvcyA9
IGNvbnRlbnRUeXBlU3RyaW5nLmZpbmQoImNoYXJzZXQiLCBwb3MsIGZhbHNlKTsKLSAgICAgICAg
aWYgKHBvcyA8PSAwKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAKLSAg
ICAgICAgLy8gaXMgd2hhdCB3ZSBmb3VuZCBhIGJlZ2lubmluZyBvZiBhIHdvcmQ/Ci0gICAgICAg
IGlmIChjb250ZW50VHlwZVN0cmluZ1twb3MtMV0gPiAnICcgJiYgY29udGVudFR5cGVTdHJpbmdb
cG9zLTFdICE9ICc7JykgewotICAgICAgICAgICAgcG9zICs9IDc7Ci0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcG9zICs9IDc7Ci0KLSAgICAgICAg
Ly8gc2tpcCB3aGl0ZXNwYWNlCi0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIGNvbnRl
bnRUeXBlU3RyaW5nW3Bvc10gPD0gJyAnKQotICAgICAgICAgICAgKytwb3M7Ci0gICAgCi0gICAg
ICAgIGlmIChjb250ZW50VHlwZVN0cmluZ1twb3MrK10gIT0gJz0nKSAvLyB0aGlzICJjaGFyc2V0
IiBzdWJzdHJpbmcgd2Fzbid0IGEgcGFyYW1ldGVyIG5hbWUsIGJ1dCB0aGVyZSBtYXkgYmUgb3Ro
ZXJzCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB3aGlsZSAocG9zICE9IGxlbmd0
aCAmJiAoY29udGVudFR5cGVTdHJpbmdbcG9zXSA8PSAnICcgfHwgY29udGVudFR5cGVTdHJpbmdb
cG9zXSA9PSAnIicgfHwgY29udGVudFR5cGVTdHJpbmdbcG9zXSA9PSAnXCcnKSkKLSAgICAgICAg
ICAgICsrcG9zOwotCi0gICAgICAgIC8vIHdlIGRvbid0IGhhbmRsZSBzcGFjZXMgd2l0aGluIHF1
b3RlZCBwYXJhbWV0ZXIgdmFsdWVzLCBiZWNhdXNlIGNoYXJzZXQgbmFtZXMgY2Fubm90IGhhdmUg
YW55Ci0gICAgICAgIGludCBlbmRwb3MgPSBwb3M7Ci0gICAgICAgIHdoaWxlIChwb3MgIT0gbGVu
Z3RoICYmIGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gPiAnICcgJiYgY29udGVudFR5cGVTdHJp
bmdbZW5kcG9zXSAhPSAnIicgJiYgY29udGVudFR5cGVTdHJpbmdbZW5kcG9zXSAhPSAnXCcnICYm
IGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gIT0gJzsnKQotICAgICAgICAgICAgKytlbmRwb3M7
Ci0gICAgCi0gICAgICAgIHJldHVybiBjb250ZW50VHlwZVN0cmluZy5zdWJzdHJpbmcocG9zLCBl
bmRwb3MtcG9zKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCiBzdGF0
aWMgYm9vbCBjYW5TZXRSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBz
dGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VJbnNlbnNpdGl2ZUhhc2g8U3RyaW5nPiA+IGZvcmJp
ZGRlbkhlYWRlcnM7CkBAIC01ODUsMTAgKzUzMSwxMCBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6
OmdldFJlc3BvbnNlSGVhZGVyCiAKIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VNSU1F
VHlwZSgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG1pbWVUeXBlID0gZ2V0TUlNRVR5cGUobV9taW1l
VHlwZU92ZXJyaWRlKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBwYXJzZU1JTUVUeXBlKG1fbWlt
ZVR5cGVPdmVycmlkZSk7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICBp
ZiAobV9yZXNwb25zZS5pc0hUVFAoKSkKLSAgICAgICAgICAgIG1pbWVUeXBlID0gZ2V0TUlNRVR5
cGUoZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTsKKyAgICAgICAgICAgIG1pbWVU
eXBlID0gcGFyc2VNSU1FVHlwZShnZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBtaW1lVHlwZSA9IG1fcmVzcG9uc2UubWltZVR5cGUo
KTsKICAgICB9CkBAIC02OTcsNyArNjQzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6d2lsbFNl
bmRSZXF1ZXN0KFN1Ygogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFN1
YnJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAg
ICAgbV9yZXNwb25zZSA9IHJlc3BvbnNlOwotICAgIG1fZW5jb2RpbmcgPSBnZXRDaGFyc2V0KG1f
bWltZVR5cGVPdmVycmlkZSk7CisgICAgbV9lbmNvZGluZyA9IHBhcnNlQ2hhcnNldChtX21pbWVU
eXBlT3ZlcnJpZGUpOwogICAgIGlmIChtX2VuY29kaW5nLmlzRW1wdHkoKSkKICAgICAgICAgbV9l
bmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15476</attachid>
            <date>2007-07-11 11:56:12 -0700</date>
            <delta_ts>2007-07-11 12:02:21 -0700</delta_ts>
            <desc>Move getMIMEType and getCharset to HTTPParsers, and one parse method from platform/net/cf</desc>
            <filename>http-parsers-move-methods-r2.patch</filename>
            <type>text/plain</type>
            <size>10473</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDctMDctMTEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTW92ZSBIVFRQIG1ldGhvZHMgdG8gcGFyc2UgQ29udGVudC1UeXBlIGZyb20g
eG1saHR0cHJlcXVlc3QuY3BwCisgICAgICAgIHdoaWNoIGlzIExHUEwgdG8gSFRUUFBhcnNlcnMu
Y3BwLiBBcyBib3RoIGZpbGVzIHdlcmUgd3JpdHRlbiBieSB0aGUKKyAgICAgICAgc2FtZSBhdXRo
b3IgYW5kIHRoZSBhZHZpY2UgdG8gbW92ZSB0aGVtIGNhbWUgZnJvbSBoaW0gSSB0aGluayB0aGlz
IG1vdmUKKyAgICAgICAgaXMgd2hhdCBpcyBtZWFudCB0byBiZSBkb25lLgorICAgICAgICBDb3B5
IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24gdG8gSFRUUFBhcnNlcnMgYXMgd2Vs
bC4gVGhpcyBwYXJzZQorICAgICAgICBmdW5jdGlvbiB1c2VzIFZlY3RvcjxTdHJpbmc+OjpzcGxp
dCBhbmQgZG9lc24ndCBob25vciBxdW90aW5nLiBUaGlzIG5lZWRzCisgICAgICAgIHRvIGJlIGZp
eGVkIGluIGxhdGVyIHZlcnNpb25zLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU5NTQgYW5kIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MDU5CisgICAgICAgIGJlbmVmaXQgZnJvbSB0aGlzIGNoYW5nZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpl
eHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RD
aGFyc2V0RnJvbU1lZGlhVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNG
TmV0LmNwcDoKKyAgICAgICAgKiB4bWwveG1saHR0cHJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisKIDIwMDctMDctMTEgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBX
ZWluaWcuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJl
dmlzaW9uIDI0MjA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKIAorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMDAsNCArMTAyLDg1IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJl
ZnIKICAgICB9CiB9CiAKK1N0cmluZyBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9u
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgVmVjdG9yPFN0cmluZz4ga2V5VmFsdWVQYWly
cyA9IHZhbHVlLnNwbGl0KCc7Jyk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBrZXlWYWx1ZVBh
aXJzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgaW50IHZhbHVlU3RhcnRQb3MgPSBrZXlWYWx1ZVBhaXJzW2ldLmZpbmQoJz0nKTsK
KyAgICAgICAgaWYgKHZhbHVlU3RhcnRQb3MgPCAwKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgU3RyaW5nIGtleSA9IGtleVZhbHVlUGFpcnNbaV0ubGVmdCh2YWx1ZVN0YXJ0UG9z
KS5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgICAgICBpZiAoa2V5LmlzRW1wdHkoKSB8fCBrZXkg
IT0gImZpbGVuYW1lIikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAg
U3RyaW5nIHZhbHVlID0ga2V5VmFsdWVQYWlyc1tpXS5zdWJzdHJpbmcodmFsdWVTdGFydFBvcyAr
IDEpLnN0cmlwV2hpdGVTcGFjZSgpOworCisgICAgICAgIC8vIFJlbW92ZSBxdW90ZXMgaWYgdGhl
cmUgYXJlIGFueQorICAgICAgICBpZiAodmFsdWVbMF0gPT0gJ1wiJykKKyAgICAgICAgICAgIHZh
bHVlID0gdmFsdWUuc3Vic3RyaW5nKDEsIHZhbHVlLmxlbmd0aCgpIC0gMik7CisKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpCit7
CisgICAgU3RyaW5nIG1pbWVUeXBlOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1lZGlhVHlwZS5s
ZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIG9mZnNldCA9IDA7IG9mZnNldCA8IGxlbmd0aDsg
b2Zmc2V0KyspIHsKKyAgICAgICAgVUNoYXIgYyA9IG1lZGlhVHlwZVtvZmZzZXRdOworICAgICAg
ICBpZiAoYyA9PSAnOycpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZSBpZiAoRGVw
cmVjYXRlZENoYXIoYykuaXNTcGFjZSgpKSAvLyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZywgIiAi
IGlzIGFuIGludmFsaWQgTUlNRSB0eXBlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gUkZDIDIwNDUu
ICBidWcgODY0NAorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgdmVyeSBzbG93IHdheSB0byBidWlsZCBhIHN0cmluZywgZ2l2ZW4gV2ViQ29yZTo6U3Ry
aW5nJ3MgaW1wbGVtZW50YXRpb24uCisgICAgICAgIG1pbWVUeXBlICs9IFN0cmluZygmYywgMSk7
CisgICAgfQorICAgIHJldHVybiBtaW1lVHlwZTsKK30KKworU3RyaW5nIGV4dHJhY3RDaGFyc2V0
RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKK3sKKyAgICBpbnQgcG9zID0g
MDsKKyAgICBpbnQgbGVuZ3RoID0gKGludCltZWRpYVR5cGUubGVuZ3RoKCk7CisgICAgCisgICAg
d2hpbGUgKHBvcyA8IGxlbmd0aCkgeworICAgICAgICBwb3MgPSBtZWRpYVR5cGUuZmluZCgiY2hh
cnNldCIsIHBvcywgZmFsc2UpOworICAgICAgICBpZiAocG9zIDw9IDApCisgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIAorICAgICAgICAvLyBpcyB3aGF0IHdlIGZvdW5kIGEg
YmVnaW5uaW5nIG9mIGEgd29yZD8KKyAgICAgICAgaWYgKG1lZGlhVHlwZVtwb3MtMV0gPiAnICcg
JiYgbWVkaWFUeXBlW3Bvcy0xXSAhPSAnOycpIHsKKyAgICAgICAgICAgIHBvcyArPSA3OworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHBvcyArPSA3
OworCisgICAgICAgIC8vIHNraXAgd2hpdGVzcGFjZQorICAgICAgICB3aGlsZSAocG9zICE9IGxl
bmd0aCAmJiBtZWRpYVR5cGVbcG9zXSA8PSAnICcpCisgICAgICAgICAgICArK3BvczsKKyAgICAK
KyAgICAgICAgaWYgKG1lZGlhVHlwZVtwb3MrK10gIT0gJz0nKSAvLyB0aGlzICJjaGFyc2V0IiBz
dWJzdHJpbmcgd2Fzbid0IGEgcGFyYW1ldGVyIG5hbWUsIGJ1dCB0aGVyZSBtYXkgYmUgb3RoZXJz
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAocG9zICE9IGxlbmd0aCAm
JiAobWVkaWFUeXBlW3Bvc10gPD0gJyAnIHx8IG1lZGlhVHlwZVtwb3NdID09ICciJyB8fCBtZWRp
YVR5cGVbcG9zXSA9PSAnXCcnKSkKKyAgICAgICAgICAgICsrcG9zOworCisgICAgICAgIC8vIHdl
IGRvbid0IGhhbmRsZSBzcGFjZXMgd2l0aGluIHF1b3RlZCBwYXJhbWV0ZXIgdmFsdWVzLCBiZWNh
dXNlIGNoYXJzZXQgbmFtZXMgY2Fubm90IGhhdmUgYW55CisgICAgICAgIGludCBlbmRwb3MgPSBw
b3M7CisgICAgICAgIHdoaWxlIChwb3MgIT0gbGVuZ3RoICYmIG1lZGlhVHlwZVtlbmRwb3NdID4g
JyAnICYmIG1lZGlhVHlwZVtlbmRwb3NdICE9ICciJyAmJiBtZWRpYVR5cGVbZW5kcG9zXSAhPSAn
XCcnICYmIG1lZGlhVHlwZVtlbmRwb3NdICE9ICc7JykKKyAgICAgICAgICAgICsrZW5kcG9zOwor
ICAgIAorICAgICAgICByZXR1cm4gbWVkaWFUeXBlLnN1YnN0cmluZyhwb3MsIGVuZHBvcy1wb3Mp
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CiB9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAkocmV2aXNpb24gMjQyMDQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU3RyaW5nOwogCiAgICAgYm9v
bCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBmcm9tSHR0cEVx
dWl2TWV0YSwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOworICAgIFN0cmluZyBmaWxlbmFt
ZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKGNvbnN0IFN0cmluZyYpOyAKKyAgICBTdHJpbmcg
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBTdHJpbmcg
ZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOyAKIH0KIAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMjQyMDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2VDRk5ldC5oIgogCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNaW1lVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPENG
TmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgpAQCAtNDUsMzQgKzQ2LDYgQEAgQ0ZVUkxSZXNw
b25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTAogICAgIHJldHVybiBtX2NmUmVzcG9uc2Uu
Z2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gSFRUUFBhcnNlcnMuaAotc3RhdGlj
IGlubGluZSBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBT
dHJpbmcmIHZhbHVlKQotewotICAgIFZlY3RvcjxTdHJpbmc+IGtleVZhbHVlUGFpcnMgPSB2YWx1
ZS5zcGxpdCgnOycpOwotCi0gICAgdW5zaWduZWQgbGVuZ3RoID0ga2V5VmFsdWVQYWlycy5zaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IGludCB2YWx1ZVN0YXJ0UG9zID0ga2V5VmFsdWVQYWlyc1tpXS5maW5kKCc9Jyk7Ci0gICAgICAg
IGlmICh2YWx1ZVN0YXJ0UG9zIDwgMCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IFN0cmluZyBrZXkgPSBrZXlWYWx1ZVBhaXJzW2ldLmxlZnQodmFsdWVTdGFydFBvcykuc3RyaXBX
aGl0ZVNwYWNlKCk7Ci0KLSAgICAgICAgaWYgKGtleS5pc0VtcHR5KCkgfHwga2V5ICE9ICJmaWxl
bmFtZSIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyB2
YWx1ZSA9IGtleVZhbHVlUGFpcnNbaV0uc3Vic3RyaW5nKHZhbHVlU3RhcnRQb3MgKyAxKS5zdHJp
cFdoaXRlU3BhY2UoKTsKLQotICAgICAgICAvLyBSZW1vdmUgcXVvdGVzIGlmIHRoZXJlIGFyZSBh
bnkKLSAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcIicpCi0gICAgICAgICAgICB2YWx1ZSA9IHZh
bHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgoKSAtIDIpOwotCi0gICAgICAgIHJldHVybiB2
YWx1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
Ym9vbCBmaWxlbmFtZUhhc1NhbmVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsK
ICAgICBpbnQgZG90ID0gZmlsZW5hbWUuZmluZCgnLicpOwpJbmRleDogV2ViQ29yZS94bWwveG1s
aHR0cHJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL3htbGh0dHByZXF1ZXN0
LmNwcAkocmV2aXNpb24gMjQyMDQpCisrKyBXZWJDb3JlL3htbC94bWxodHRwcmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVk
ZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgpAQCAtODcsNjEgKzg4LDYg
QEAgc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVJlcXVlc3RzQnlEb2N1bWVudAogICAgIH0KIH0KIAot
c3RhdGljIGlubGluZSBTdHJpbmcgZ2V0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZVN0cmluZykKLXsKLSAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
Y29udGVudFR5cGVTdHJpbmcubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBvZmZzZXQgPSAw
OyBvZmZzZXQgPCBsZW5ndGg7IG9mZnNldCsrKSB7Ci0gICAgICAgIFVDaGFyIGMgPSBjb250ZW50
VHlwZVN0cmluZ1tvZmZzZXRdOwotICAgICAgICBpZiAoYyA9PSAnOycpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZWxzZSBpZiAoRGVwcmVjYXRlZENoYXIoYykuaXNTcGFjZSgpKSAvLyBG
SVhNRTogVGhpcyBzZWVtcyB3cm9uZywgIiAiIGlzIGFuIGludmFsaWQgTUlNRSB0eXBlIGNoYXJh
Y3RlciBhY2NvcmRpbmcgdG8gUkZDIDIwNDUuICBidWcgODY0NAotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdmVyeSBzbG93IHdheSB0byBidWlsZCBh
IHN0cmluZywgZ2l2ZW4gV2ViQ29yZTo6U3RyaW5nJ3MgaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IG1pbWVUeXBlICs9IFN0cmluZygmYywgMSk7Ci0gICAgfQotICAgIHJldHVybiBtaW1lVHlwZTsK
LX0KLQotc3RhdGljIFN0cmluZyBnZXRDaGFyc2V0KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGVT
dHJpbmcpCi17Ci0gICAgaW50IHBvcyA9IDA7Ci0gICAgaW50IGxlbmd0aCA9IChpbnQpY29udGVu
dFR5cGVTdHJpbmcubGVuZ3RoKCk7Ci0gICAgCi0gICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgewot
ICAgICAgICBwb3MgPSBjb250ZW50VHlwZVN0cmluZy5maW5kKCJjaGFyc2V0IiwgcG9zLCBmYWxz
ZSk7Ci0gICAgICAgIGlmIChwb3MgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICAgICAgCi0gICAgICAgIC8vIGlzIHdoYXQgd2UgZm91bmQgYSBiZWdpbm5pbmcgb2YgYSB3
b3JkPwotICAgICAgICBpZiAoY29udGVudFR5cGVTdHJpbmdbcG9zLTFdID4gJyAnICYmIGNvbnRl
bnRUeXBlU3RyaW5nW3Bvcy0xXSAhPSAnOycpIHsKLSAgICAgICAgICAgIHBvcyArPSA3OwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHBvcyArPSA3
OwotCi0gICAgICAgIC8vIHNraXAgd2hpdGVzcGFjZQotICAgICAgICB3aGlsZSAocG9zICE9IGxl
bmd0aCAmJiBjb250ZW50VHlwZVN0cmluZ1twb3NdIDw9ICcgJykKLSAgICAgICAgICAgICsrcG9z
OwotICAgIAotICAgICAgICBpZiAoY29udGVudFR5cGVTdHJpbmdbcG9zKytdICE9ICc9JykgLy8g
dGhpcyAiY2hhcnNldCIgc3Vic3RyaW5nIHdhc24ndCBhIHBhcmFtZXRlciBuYW1lLCBidXQgdGhl
cmUgbWF5IGJlIG90aGVycwotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgd2hpbGUg
KHBvcyAhPSBsZW5ndGggJiYgKGNvbnRlbnRUeXBlU3RyaW5nW3Bvc10gPD0gJyAnIHx8IGNvbnRl
bnRUeXBlU3RyaW5nW3Bvc10gPT0gJyInIHx8IGNvbnRlbnRUeXBlU3RyaW5nW3Bvc10gPT0gJ1wn
JykpCi0gICAgICAgICAgICArK3BvczsKLQotICAgICAgICAvLyB3ZSBkb24ndCBoYW5kbGUgc3Bh
Y2VzIHdpdGhpbiBxdW90ZWQgcGFyYW1ldGVyIHZhbHVlcywgYmVjYXVzZSBjaGFyc2V0IG5hbWVz
IGNhbm5vdCBoYXZlIGFueQotICAgICAgICBpbnQgZW5kcG9zID0gcG9zOwotICAgICAgICB3aGls
ZSAocG9zICE9IGxlbmd0aCAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdID4gJyAnICYmIGNv
bnRlbnRUeXBlU3RyaW5nW2VuZHBvc10gIT0gJyInICYmIGNvbnRlbnRUeXBlU3RyaW5nW2VuZHBv
c10gIT0gJ1wnJyAmJiBjb250ZW50VHlwZVN0cmluZ1tlbmRwb3NdICE9ICc7JykKLSAgICAgICAg
ICAgICsrZW5kcG9zOwotICAgIAotICAgICAgICByZXR1cm4gY29udGVudFR5cGVTdHJpbmcuc3Vi
c3RyaW5nKHBvcywgZW5kcG9zLXBvcyk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQogc3RhdGljIGJvb2wgY2FuU2V0UmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CiAgICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nLCBDYXNlSW5zZW5zaXRpdmVIYXNoPFN0
cmluZz4gPiBmb3JiaWRkZW5IZWFkZXJzOwpAQCAtNTg1LDEwICs1MzEsMTAgQEAgU3RyaW5nIFhN
TEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZUhlYWRlcgogCiBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6
OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdAogewotICAgIFN0cmluZyBtaW1lVHlwZSA9IGdldE1J
TUVUeXBlKG1fbWltZVR5cGVPdmVycmlkZSk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gZXh0cmFj
dE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlT3ZlcnJpZGUpOwogICAgIGlmIChtaW1l
VHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcmVzcG9uc2UuaXNIVFRQKCkpCi0gICAg
ICAgICAgICBtaW1lVHlwZSA9IGdldE1JTUVUeXBlKGdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50
LVR5cGUiKSk7CisgICAgICAgICAgICBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRp
YVR5cGUoZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgfQpAQCAt
Njk3LDcgKzY0Myw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OndpbGxTZW5kUmVxdWVzdChTdWIK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZShTdWJyZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIG1fcmVzcG9uc2Ug
PSByZXNwb25zZTsKLSAgICBtX2VuY29kaW5nID0gZ2V0Q2hhcnNldChtX21pbWVUeXBlT3ZlcnJp
ZGUpOworICAgIG1fZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9taW1l
VHlwZU92ZXJyaWRlKTsKICAgICBpZiAobV9lbmNvZGluZy5pc0VtcHR5KCkpCiAgICAgICAgIG1f
ZW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CiAK
</data>
<flag name="review"
          id="6428"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>