<?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>38566</bug_id>
          
          <creation_ts>2010-05-05 00:07:27 -0700</creation_ts>
          <short_desc>[WTFURL] Add a class to represent the segments of a URL</short_desc>
          <delta_ts>2010-05-06 02:31:23 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>brettw</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>220976</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 00:07:27 -0700</bug_when>
    <thetext>[WTFURL] Add a class to represent the segments of a URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220977</commentid>
    <comment_count>1</comment_count>
      <attachid>55090</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 00:10:25 -0700</bug_when>
    <thetext>Created attachment 55090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221309</commentid>
    <comment_count>2</comment_count>
      <attachid>55090</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-05 15:39:19 -0700</bug_when>
    <thetext>Comment on attachment 55090
Patch


JavaScriptCore/wtf/url/src/URLSegments.h:88
 +      //        *Ref: 20                   20
Perhaps &quot;Ref&quot; should be called &quot;Fragment&quot; to match the RFC naming.

JavaScriptCore/wtf/url/src/URLSegments.h:108
 +      // Host name.
This comment doesn&apos;t seem to add any value.

JavaScriptCore/wtf/url/src/URLSegments.h:111
 +      // Port number.
This comment doesn&apos;t seem to add any value.

The other com,ments do convey some information, but they seem needlessly verbose. It seems like there is a common pattern of excluding delimiters from the range, and having -1 length if the delimiter character for that component is missing. Perhaps we could just say this once, instead of separately for every component.

JavaScriptCore/wtf/url/src/URLSegments.h:53
 +      // The default constructor is sufficient for the components.
This comment doesn&apos;t add any value.

JavaScriptCore/wtf/url/src/URLSegments.h:41
 +      // Identifies different components.
This comment doesn&apos;t add any value.

JavaScriptCore/wtf/url/src/URLSegments.h:130
 +      URLComponent ref;
ref should be fragment (again)

Please address
JavaScriptCore/wtf/url/src/URLSegments.cpp:58
 +          current = scheme.end() + 1; // Advance over the &apos;:&apos; at the end of the scheme.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.

JavaScriptCore/wtf/url/src/URLSegments.cpp:63
 +          current = username.end() + 1; // Advance over the &apos;@&apos; or &apos;:&apos; at the end.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.


JavaScriptCore/wtf/url/src/URLSegments.cpp:69
 +          current = password.end() + 1; // Advance over the &apos;@&apos; at the end.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.


JavaScriptCore/wtf/url/src/URLSegments.cpp:80
 +              return port.begin() - 1; // Back over delimiter.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.


JavaScriptCore/wtf/url/src/URLSegments.cpp:94
 +              return query.begin() - 1; // Back over delimiter.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.


JavaScriptCore/wtf/url/src/URLSegments.cpp:102
 +              return ref.begin(); // Back over delimiter.
If this code expects to be advancing past a specific character, perhaps an ASSERT would be a better way to document that than a comment.


JavaScriptCore/wtf/url/src/URLSegments.cpp:54
 +      // There will be some characters after the scheme like &quot;://&quot; and we don&apos;t
I don&apos;t see anything in this code that seems specific to advancing pass ://, it seems to just look at all the component ranges in turn.


r- for now to address the above issues. None of them are showstoppers, but it seems like there are enough different comments to warrant a new patch version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221345</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 16:32:35 -0700</bug_when>
    <thetext>&gt; If this code expects to be advancing past a specific character, perhaps an
&gt; ASSERT would be a better way to document that than a comment.

The string isn&apos;t available here (because it&apos;s stored separately from the segmentation), so we can&apos;t actually assert that here.

&gt; r- for now to address the above issues. None of them are showstoppers, but it
&gt; seems like there are enough different comments to warrant a new patch version.

I&apos;ve addressed the remainder.  I&apos;ll be more agressive about making the comments more WebKit-like in future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221346</commentid>
    <comment_count>4</comment_count>
      <attachid>55172</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 16:36:29 -0700</bug_when>
    <thetext>Created attachment 55172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221424</commentid>
    <comment_count>5</comment_count>
      <attachid>55189</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-05 18:31:40 -0700</bug_when>
    <thetext>Created attachment 55189
patch w/ update license block</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221547</commentid>
    <comment_count>6</comment_count>
      <attachid>55189</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-06 01:03:07 -0700</bug_when>
    <thetext>Comment on attachment 55189
patch w/ update license block

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221548</commentid>
    <comment_count>7</comment_count>
      <attachid>55189</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-06 01:10:29 -0700</bug_when>
    <thetext>Comment on attachment 55189
patch w/ update license block

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221591</commentid>
    <comment_count>8</comment_count>
      <attachid>55189</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-06 02:31:17 -0700</bug_when>
    <thetext>Comment on attachment 55189
patch w/ update license block

Clearing flags on attachment: 55189

Committed r58874: &lt;http://trac.webkit.org/changeset/58874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221592</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-06 02:31:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55090</attachid>
            <date>2010-05-05 00:10:25 -0700</date>
            <delta_ts>2010-05-05 16:36:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38566-20100505001023.patch</filename>
            <type>text/plain</type>
            <size>11816</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4ODAzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbV1RGVVJMXSBBZGQgYSBjbGFzcyB0byByZXByZXNlbnQgdGhlIHNl
Z21lbnRzIG9mIGEgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODU2NgorCisgICAgICAgIFdoZW4gcGFpcmVkIHdpdGggYSBzdHJpbmcsIHRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIHBhcnNlZCBVUkwuCisKKyAgICAgICAgKiB3dGYvdXJsL3NyYy9V
UkxTZWdtZW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxTZWdtZW50czo6bGVuZ3Ro
KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OmNoYXJhY3RlcnNCZWZvcmUpOgorICAgICAg
ICAqIHd0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxT
ZWdtZW50czo6KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OlVSTFNlZ21lbnRzKToKKyAg
ICAgICAgKiB3dGYvdXJsL3d0ZnVybC5neXA6CisKIDIwMTAtMDUtMDQgIFlvbmdqdW4gWmhhbmcg
IDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91cmwvd3RmdXJsLmd5cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3d0ZnVybC5neXAJKHJldmlzaW9uIDU4Nzk3KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL3VybC93dGZ1cmwuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw2ICszOSw4IEBACiAgICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICdzcmMv
VVJMQ29tcG9uZW50LmgnLAorICAgICAgICAnc3JjL1VSTFNlZ21lbnRzLmNwcCcsCisgICAgICAg
ICdzcmMvVVJMU2VnbWVudHMuaCcsCiAgICAgICBdLAogICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRf
c2V0dGluZ3MnOiB7CiAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNj
cmlwdENvcmUvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExMiBAQAorLyogQmFzZWQgb24gbnNVUkxQYXJzZXJzLmNjIGZyb20gTW96aWxsYQorICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIGNvbnRlbnRzIG9m
IHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJz
aW9uCisgKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4
Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKKyAqIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBh
IGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLwor
ICoKKyAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1
dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCisgKiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UKKyAqIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIg
dGhlCisgKiBMaWNlbnNlLgorICoKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3Jn
IGNvZGUuCisgKgorICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2Rl
IGlzCisgKiBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqIFBvcnRpb25z
IGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgK
KyAqIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBD
b250cmlidXRvcihzKToKKyAqICAgRGFyaW4gRmlzaGVyIChvcmlnaW5hbCBhdXRob3IpCisgKgor
ICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1
bmRlciB0aGUgdGVybXMgb2YKKyAqIGVpdGhlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLCBvcgorICogdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBsYXRlciAodGhlICJMR1BMIiks
CisgKiBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgb3IgdGhlIExHUEwg
YXJlIGFwcGxpY2FibGUgaW5zdGVhZAorICogb2YgdGhvc2UgYWJvdmUuIElmIHlvdSB3aXNoIHRv
IGFsbG93IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkKKyAqIHVuZGVyIHRo
ZSB0ZXJtcyBvZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwgYW5kIG5vdCB0byBhbGxvdyBv
dGhlcnMgdG8KKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgTVBMLCBpbmRpY2F0ZSB5b3VyCisgKiBkZWNpc2lvbiBieSBkZWxldGluZyB0aGUg
cHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorICogYW5k
IG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBvciB0aGUgTEdQTC4gSWYgeW91
IGRvIG5vdCBkZWxldGUKKyAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkg
dXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKKyAqIHRoZSB0ZXJtcyBvZiBhbnkg
b25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisgKgorICogKioqKiogRU5EIExJ
Q0VOU0UgQkxPQ0sgKioqKiogKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVS
TFNlZ21lbnRzLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitpbnQgVVJMU2VnbWVudHM6Omxlbmd0
aCgpIGNvbnN0Cit7CisgICAgaWYgKHJlZi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiByZWYu
ZW5kKCk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNCZWZvcmUoUmVmLCBmYWxzZSk7Cit9CisKK2lu
dCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRUeXBlIHR5cGUsIGJvb2wg
aW5jbHVkZURlbGltaXRlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSA9PSBTY2hlbWUpCisgICAg
ICAgIHJldHVybiBzY2hlbWUuYmVnaW4oKTsKKworICAgIC8vIFRoZXJlIHdpbGwgYmUgc29tZSBj
aGFyYWN0ZXJzIGFmdGVyIHRoZSBzY2hlbWUgbGlrZSAiOi8vIiBhbmQgd2UgZG9uJ3QKKyAgICAv
LyBrbm93IGhvdyBtYW55LiBTZWFyY2ggZm9yd2FyZHMgZm9yIHRoZSBuZXh0IHRoaW5nIHVudGls
IHdlIGZpbmQgb25lLgorICAgIGludCBjdXJyZW50ID0gMDsKKyAgICBpZiAoc2NoZW1lLmlzVmFs
aWQoKSkKKyAgICAgICAgY3VycmVudCA9IHNjaGVtZS5lbmQoKSArIDE7IC8vIEFkdmFuY2Ugb3Zl
ciB0aGUgJzonIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVtZS4KKworICAgIGlmICh1c2VybmFtZS5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0gVXNlcm5hbWUpCisgICAgICAgICAgICBy
ZXR1cm4gdXNlcm5hbWUuYmVnaW4oKTsKKyAgICAgICAgY3VycmVudCA9IHVzZXJuYW1lLmVuZCgp
ICsgMTsgLy8gQWR2YW5jZSBvdmVyIHRoZSAnQCcgb3IgJzonIGF0IHRoZSBlbmQuCisgICAgfQor
CisgICAgaWYgKHBhc3N3b3JkLmlzVmFsaWQoKSkgeworICAgICAgICBpZiAodHlwZSA8PSBQYXNz
d29yZCkKKyAgICAgICAgICAgIHJldHVybiBwYXNzd29yZC5iZWdpbigpOworICAgICAgICBjdXJy
ZW50ID0gcGFzc3dvcmQuZW5kKCkgKyAxOyAvLyBBZHZhbmNlIG92ZXIgdGhlICdAJyBhdCB0aGUg
ZW5kLgorICAgIH0KKworICAgIGlmIChob3N0LmlzVmFsaWQoKSkgeworICAgICAgICBpZiAodHlw
ZSA8PSBIb3N0KQorICAgICAgICAgICAgcmV0dXJuIGhvc3QuYmVnaW4oKTsKKyAgICAgICAgY3Vy
cmVudCA9IGhvc3QuZW5kKCk7CisgICAgfQorCisgICAgaWYgKHBvcnQuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGlmICh0eXBlIDwgUG9ydCB8fCAodHlwZSA9PSBQb3J0ICYmIGluY2x1ZGVEZWxpbWl0
ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHBvcnQuYmVnaW4oKSAtIDE7IC8vIEJhY2sgb3ZlciBk
ZWxpbWl0ZXIuCisgICAgICAgIGlmICh0eXBlID09IFBvcnQpCisgICAgICAgICAgICByZXR1cm4g
cG9ydC5iZWdpbigpOyAvLyBEb24ndCB3YW50IGRlbGltaXRlciBjb3VudGVkLgorICAgICAgICBj
dXJyZW50ID0gcG9ydC5lbmQoKTsKKyAgICB9CisKKyAgICBpZiAocGF0aC5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgaWYgKHR5cGUgPD0gUGF0aCkKKyAgICAgICAgICAgIHJldHVybiBwYXRoLmJlZ2lu
KCk7CisgICAgICAgIGN1cnJlbnQgPSBwYXRoLmVuZCgpOworICAgIH0KKworICAgIGlmIChxdWVy
eS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPCBRdWVyeSB8fCAodHlwZSA9PSBRdWVy
eSAmJiBpbmNsdWRlRGVsaW1pdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBxdWVyeS5iZWdpbigp
IC0gMTsgLy8gQmFjayBvdmVyIGRlbGltaXRlci4KKyAgICAgICAgaWYgKHR5cGUgPT0gUXVlcnkp
CisgICAgICAgICAgICByZXR1cm4gcXVlcnkuYmVnaW4oKTsgLy8gRG9uJ3Qgd2FudCBkZWxpbWl0
ZXIgY291bnRlZC4KKyAgICAgICAgY3VycmVudCA9IHF1ZXJ5LmVuZCgpOworICAgIH0KKworICAg
IGlmIChyZWYuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBlID09IFJlZiAmJiAhaW5jbHVk
ZURlbGltaXRlcikKKyAgICAgICAgICAgIHJldHVybiByZWYuYmVnaW4oKTsgLy8gQmFjayBvdmVy
IGRlbGltaXRlci4KKworICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIGEgcmVmIGFuZCB3ZSBnZXQg
aGVyZSwgdGhlIGNvbXBvbmVudCB3ZSB3YW50ZWQgd2FzIGJlZm9yZQorICAgICAgICAvLyB0aGlz
IGFuZCBub3QgZm91bmQsIHNvIHdlIGFsd2F5cyBrbm93IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJl
ZiBpcyByaWdodC4KKyAgICAgICAgcmV0dXJuIHJlZi5iZWdpbigpIC0gMTsgLy8gRG9uJ3Qgd2Fu
dCBkZWxpbWl0ZXIgY291bnRlZC4KKyAgICB9CisKKyAgICByZXR1cm4gY3VycmVudDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxT
ZWdtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNl
Z21lbnRzLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxT
ZWdtZW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorLy8gQ29weXJpZ2h0IDIw
MDcsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
Ky8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgVVJMU2VnbWVudHNfaAorI2RlZmlu
ZSBVUkxTZWdtZW50c19oCisKKyNpbmNsdWRlICJVUkxDb21wb25lbnQuaCIKKworbmFtZXNwYWNl
IFdURiB7CisKKy8vIEEgc3RydWN0dXJlIHRoYXQgaG9sZHMgdGhlIGlkZW50aWZpZWQgcGFydHMg
b2YgYW4gaW5wdXQgVVJMLiBUaGlzIHN0cnVjdHVyZQorLy8gZG9lcyBOT1Qgc3RvcmUgdGhlIFVS
TCBpdHNlbGYuIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvIHN0b3JlIHRoZSBVUkwgdGV4dAorLy8g
YW5kIGl0cyBjb3JyZXNwb25kaW5nIFBhcnNlZCBzdHJ1Y3R1cmUgc2VwYXJhdGVseS4KK2NsYXNz
IFVSTFNlZ21lbnRzIHsKK3B1YmxpYzoKKyAgICAvLyBJZGVudGlmaWVzIGRpZmZlcmVudCBjb21w
b25lbnRzLgorICAgIGVudW0gQ29tcG9uZW50VHlwZSB7CisgICAgICAgIFNjaGVtZSwKKyAgICAg
ICAgVXNlcm5hbWUsCisgICAgICAgIFBhc3N3b3JkLAorICAgICAgICBIb3N0LAorICAgICAgICBQ
b3J0LAorICAgICAgICBQYXRoLAorICAgICAgICBRdWVyeSwKKyAgICAgICAgUmVmLAorICAgIH07
CisKKyAgICAvLyBUaGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBzdWZmaWNpZW50IGZvciB0aGUg
Y29tcG9uZW50cy4KKyAgICBVUkxTZWdtZW50cygpIHt9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBs
ZW5ndGggb2YgdGhlIFVSTCAodGhlIGVuZCBvZiB0aGUgbGFzdCBjb21wb25lbnQpLgorICAgIC8v
CisgICAgLy8gTm90ZSB0aGF0IGZvciBzb21lIGludmFsaWQsIG5vbi1jYW5vbmljYWwgVVJMcywg
dGhpcyBtYXkgbm90IGJlIHRoZSBsZW5ndGgKKyAgICAvLyBvZiB0aGUgc3RyaW5nLiBGb3IgZXhh
bXBsZSAiaHR0cDovLyI6IHRoZSBwYXJzZWQgc3RydWN0dXJlIHdpbGwgb25seQorICAgIC8vIGNv
bnRhaW4gYW4gZW50cnkgZm9yIHRoZSBmb3VyLWNoYXJhY3RlciBzY2hlbWUsIGFuZCBpdCBkb2Vz
bid0IGtub3cgYWJvdXQKKyAgICAvLyB0aGUgIjovLyIuIEZvciBhbGwgb3RoZXIgbGFzdC1jb21w
b25lbnRzLCBpdCB3aWxsIHJldHVybiB0aGUgcmVhbCBsZW5ndGguCisgICAgaW50IGxlbmd0aCgp
IGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYmVmb3Jl
IHRoZSBnaXZlbiBjb21wb25lbnQgaWYgaXQgZXhpc3RzLAorICAgIC8vIG9yIHdoZXJlIHRoZSBj
b21wb25lbnQgd291bGQgYmUgaWYgaXQgZGlkIGV4aXN0LiBUaGlzIHdpbGwgcmV0dXJuIHRoZQor
ICAgIC8vIHN0cmluZyBsZW5ndGggaWYgdGhlIGNvbXBvbmVudCB3b3VsZCBiZSBhcHBlbmRlZCB0
byB0aGUgZW5kLgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgY2FuIGdldCBhIGxpdHRs
ZSBmdW5ueSBmb3IgdGhlIHBvcnQsIHF1ZXJ5LCBhbmQgcmVmCisgICAgLy8gY29tcG9uZW50cyB3
aGljaCBoYXZlIGEgZGVsaW1pdGVyIHRoYXQgaXMgbm90IGNvdW50ZWQgYXMgcGFydCBvZiB0aGUK
KyAgICAvLyBjb21wb25lbnQuIFRoZSB8aW5jbHVkZURlbGltaXRlcnwgZmxhZyBjb250cm9scyBp
ZiB5b3Ugd2FudCB0aGlzIGNvdW50ZWQKKyAgICAvLyBhcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQg
b3Igbm90IHdoZW4gdGhlIGNvbXBvbmVudCBleGlzdHMuCisgICAgLy8KKyAgICAvLyBUaGlzIGV4
YW1wbGUgc2hvd3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGZsYWdzIGZvciB0d28g
b2YgdGhlc2UKKyAgICAvLyBkZWxpbWl0ZWQgY29tcG9uZW50cyB0aGF0IGlzIHByZXNlbnQgKHRo
ZSBwb3J0IGFuZCBxdWVyeSkgYW5kIG9uZSB0aGF0CisgICAgLy8gaXNuJ3QgKHRoZSByZWZlcmVu
Y2UpLiBUaGUgY29tcG9uZW50cyB0aGF0IHRoaXMgZmxhZyBhZmZlY3RzIGFyZSBtYXJrZWQKKyAg
ICAvLyB3aXRoIGEgKi4KKyAgICAvLyAgICAgICAgICAgICAgICAgMCAgICAgICAgIDEgICAgICAg
ICAyCisgICAgLy8gICAgICAgICAgICAgICAgIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MAorICAgIC8v
IEV4YW1wbGUgaW5wdXQ6ICBodHRwOi8vZm9vOjgwLz9xdWVyeQorICAgIC8vICAgICAgICAgICAg
ICBpbmNsdWRlX2RlbGltPXRydWUsICAuLi49ZmFsc2UgICgiPC0iIGluZGljYXRlcyBkaWZmZXJl
bnQpCisgICAgLy8gICAgICBTY2hlbWU6IDAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAvLyAg
ICBVc2VybmFtZTogNSAgICAgICAgICAgICAgICAgICAgNQorICAgIC8vICAgIFBhc3N3b3JkOiA1
ICAgICAgICAgICAgICAgICAgICA1CisgICAgLy8gICAgICAgIEhvc3Q6IDcgICAgICAgICAgICAg
ICAgICAgIDcKKyAgICAvLyAgICAgICAqUG9ydDogMTAgICAgICAgICAgICAgICAgICAgMTEgPC0K
KyAgICAvLyAgICAgICAgUGF0aDogMTMgICAgICAgICAgICAgICAgICAgMTMKKyAgICAvLyAgICAg
ICpRdWVyeTogMTQgICAgICAgICAgICAgICAgICAgMTUgPC0KKyAgICAvLyAgICAgICAgKlJlZjog
MjAgICAgICAgICAgICAgICAgICAgMjAKKyAgICAvLworICAgIGludCBjaGFyYWN0ZXJzQmVmb3Jl
KENvbXBvbmVudFR5cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uc3Q7CisKKyAgICAvLyBT
Y2hlbWUgd2l0aG91dCB0aGUgY29sb246ICJodHRwOi8vZm9vIi8gd291bGQgaGF2ZSBhIHNjaGVt
ZSBvZiAiaHR0cCIuCisgICAgLy8gVGhlIGxlbmd0aCB3aWxsIGJlIC0xIGlmIG5vIHNjaGVtZSBp
cyBzcGVjaWZpZWQgKCJmb28uY29tIiksIG9yIDAgaWYgdGhlcmUKKyAgICAvLyBpcyBhIGNvbG9u
IGJ1dCBubyBzY2hlbWUgKCI6Zm9vIikuIE5vdGUgdGhhdCB0aGUgc2NoZW1lIGlzIG5vdCBndWFy
YW50ZWVkCisgICAgLy8gdG8gc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGlm
IHRoZXJlIGFyZSBwcmVjZWVkaW5nIHdoaXRlc3BhY2UKKyAgICAvLyBvciBjb250cm9sIGNoYXJh
Y3RlcnMuCisgICAgVVJMQ29tcG9uZW50IHNjaGVtZTsKKworICAgIC8vIFVzZXJuYW1lLiBTcGVj
aWZpZWQgaW4gVVJMcyB3aXRoIGFuIEAgc2lnbiBiZWZvcmUgdGhlIGhvc3QuIFNlZSB8cGFzc3dv
cmR8CisgICAgVVJMQ29tcG9uZW50IHVzZXJuYW1lOworCisgICAgLy8gUGFzc3dvcmQuIFRoZSBs
ZW5ndGggd2lsbCBiZSAtMSBpZiB1bnNwZWNpZmllZCwgMCBpZiBzcGVjaWZpZWQgYnV0IGVtcHR5
LgorICAgIC8vIE5vdCBhbGwgVVJMcyB3aXRoIGEgdXNlcm5hbWUgaGF2ZSBhIHBhc3N3b3JkLCBh
cyBpbiAiaHR0cDovL21lQGhvc3QvIi4KKyAgICAvLyBUaGUgcGFzc3dvcmQgaXMgc2VwYXJhdGVk
IGZvcm0gdGhlIHVzZXJuYW1lIHdpdGggYSBjb2xvbiwgYXMgaW4KKyAgICAvLyAiaHR0cDovL21l
OnNlY3JldEBob3N0LyIKKyAgICBVUkxDb21wb25lbnQgcGFzc3dvcmQ7CisKKyAgICAvLyBIb3N0
IG5hbWUuCisgICAgVVJMQ29tcG9uZW50IGhvc3Q7CisKKyAgICAvLyBQb3J0IG51bWJlci4KKyAg
ICBVUkxDb21wb25lbnQgcG9ydDsKKworICAgIC8vIFBhdGgsIHRoaXMgaXMgZXZlcnl0aGluZyBm
b2xsb3dpbmcgdGhlIGhvc3QgbmFtZS4gTGVuZ3RoIHdpbGwgYmUgLTEgaWYKKyAgICAvLyB1bnNw
ZWNpZmllZC4gVGhpcyBpbmNsdWRlcyB0aGUgcHJlY2VlZGluZyBzbGFzaCwgc28gdGhlIHBhdGgg
b24KKyAgICAvLyBodHRwOi8vd3d3Lmdvb2dsZS5jb20vYXNkZiIgaXMgIi9hc2RmIi4gQXMgYSBy
ZXN1bHQsIGl0IGlzIGltcG9zc2libGUgdG8KKyAgICAvLyBoYXZlIGEgMCBsZW5ndGggcGF0aCwg
aXQgd2lsbCBiZSAtMSBpbiBjYXNlcyBsaWtlICJodHRwOi8vaG9zdD9mb28iLgorICAgIC8vIE5v
dGUgdGhhdCB3ZSB0cmVhdCBiYWNrc2xhc2hlcyB0aGUgc2FtZSBhcyBzbGFzaGVzLgorICAgIFVS
TENvbXBvbmVudCBwYXRoOworCisgICAgLy8gU3R1ZmYgYmV0d2VlbiB0aGUgPyBhbmQgdGhlICMg
YWZ0ZXIgdGhlIHBhdGguIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUKKyAgICAvLyBwcmVjZWVk
aW5nID8gY2hhcmFjdGVyLiBMZW5ndGggd2lsbCBiZSAtMSBpZiB1bnNwZWNpZmllZCwgMCBpZiB0
aGVyZSBpcworICAgIC8vIGEgcXVlc3Rpb24gbWFyayBidXQgbm8gcXVlcnkgc3RyaW5nLgorICAg
IFVSTENvbXBvbmVudCBxdWVyeTsKKworICAgIC8vIEluZGljYXRlZCBieSBhICMsIHRoaXMgaXMg
ZXZlcnl0aGluZyBmb2xsb3dpbmcgdGhlIGhhc2ggc2lnbiAobm90CisgICAgLy8gaW5jbHVkaW5n
IGl0KS4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGhhc2ggc2lnbnMsIHdlJ2xsIHVzZSB0aGUgbGFz
dCBvbmUuCisgICAgLy8gTGVuZ3RoIHdpbGwgYmUgLTEgaWYgdGhlcmUgaXMgbm8gaGFzaCBzaWdu
LCBvciAwIGlmIHRoZXJlIGlzIG9uZSBidXQKKyAgICAvLyBub3RoaW5nIGZvbGxvd3MgaXQuCisg
ICAgVVJMQ29tcG9uZW50IHJlZjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYg
Ly8gVVJMU2VnbWVudHNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55172</attachid>
            <date>2010-05-05 16:36:29 -0700</date>
            <delta_ts>2010-05-05 18:31:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38566-20100505163628.patch</filename>
            <type>text/plain</type>
            <size>10217</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4ODQzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbV1RGVVJMXSBBZGQgYSBjbGFzcyB0byByZXByZXNlbnQgdGhlIHNl
Z21lbnRzIG9mIGEgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODU2NgorCisgICAgICAgIFdoZW4gcGFpcmVkIHdpdGggYSBzdHJpbmcsIHRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIHBhcnNlZCBVUkwuCisKKyAgICAgICAgKiB3dGYvdXJsL3NyYy9V
UkxTZWdtZW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxTZWdtZW50czo6bGVuZ3Ro
KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OmNoYXJhY3RlcnNCZWZvcmUpOgorICAgICAg
ICAqIHd0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxT
ZWdtZW50czo6KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OlVSTFNlZ21lbnRzKToKKyAg
ICAgICAgKiB3dGYvdXJsL3d0ZnVybC5neXA6CisKIDIwMTAtMDUtMDUgIE9saXZlciBIdW50ICA8
b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91cmwvd3RmdXJsLmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvdXJsL3d0ZnVybC5neXAJKHJldmlzaW9uIDU4ODQzKQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL3VybC93dGZ1cmwuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw4IEBACiAgICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCiAgICAgICAgICdzcmMvVVJMQ29t
cG9uZW50LmgnLAorICAgICAgICAnc3JjL1VSTFNlZ21lbnRzLmNwcCcsCisgICAgICAgICdzcmMv
VVJMU2VnbWVudHMuaCcsCiAgICAgICBdLAogICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGlu
Z3MnOiB7CiAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
d3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL3VybC9zcmMvVVJMU2VnbWVudHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
MCBAQAorLyogQmFzZWQgb24gbnNVUkxQYXJzZXJzLmNjIGZyb20gTW96aWxsYQorICogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCisg
KiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGgKKyAqIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworICoKKyAq
IFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9u
IGFuICJBUyBJUyIgYmFzaXMsCisgKiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRo
ZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UKKyAqIGZvciB0aGUgc3BlY2lm
aWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlCisg
KiBMaWNlbnNlLgorICoKKyAqIFRoZSBPcmlnaW5hbCBDb2RlIGlzIG1vemlsbGEub3JnIGNvZGUu
CisgKgorICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzCisg
KiBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqIFBvcnRpb25zIGNyZWF0
ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTgKKyAqIHRo
ZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBDb250cmli
dXRvcihzKToKKyAqICAgRGFyaW4gRmlzaGVyIChvcmlnaW5hbCBhdXRob3IpCisgKgorICogQWx0
ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0
aGUgdGVybXMgb2YKKyAqIGVpdGhlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVy
c2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLCBvcgorICogdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSBvciBsYXRlciAodGhlICJMR1BMIiksCisgKiBp
biB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgb3IgdGhlIExHUEwgYXJlIGFw
cGxpY2FibGUgaW5zdGVhZAorICogb2YgdGhvc2UgYWJvdmUuIElmIHlvdSB3aXNoIHRvIGFsbG93
IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkKKyAqIHVuZGVyIHRoZSB0ZXJt
cyBvZiBlaXRoZXIgdGhlIEdQTCBvciB0aGUgTEdQTCwgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMg
dG8KKyAqIHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgTVBMLCBpbmRpY2F0ZSB5b3VyCisgKiBkZWNpc2lvbiBieSBkZWxldGluZyB0aGUgcHJvdmlz
aW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQorICogYW5kIG90aGVy
IHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTCBvciB0aGUgTEdQTC4gSWYgeW91IGRvIG5v
dCBkZWxldGUKKyAqIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlv
dXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKKyAqIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9m
IHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisgKgorICogKioqKiogRU5EIExJQ0VOU0Ug
QkxPQ0sgKioqKiogKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVSTFNlZ21l
bnRzLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitpbnQgVVJMU2VnbWVudHM6Omxlbmd0aCgpIGNv
bnN0Cit7CisgICAgaWYgKGZyYWdtZW50LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZyYWdt
ZW50LmVuZCgpOworICAgIHJldHVybiBjaGFyYWN0ZXJzQmVmb3JlKEZyYWdtZW50LCBmYWxzZSk7
Cit9CisKK2ludCBVUkxTZWdtZW50czo6Y2hhcmFjdGVyc0JlZm9yZShDb21wb25lbnRUeXBlIHR5
cGUsIGJvb2wgaW5jbHVkZURlbGltaXRlcikgY29uc3QKK3sKKyAgICBpZiAodHlwZSA9PSBTY2hl
bWUpCisgICAgICAgIHJldHVybiBzY2hlbWUuYmVnaW4oKTsKKworICAgIGludCBjdXJyZW50ID0g
MDsKKyAgICBpZiAoc2NoZW1lLmlzVmFsaWQoKSkKKyAgICAgICAgY3VycmVudCA9IHNjaGVtZS5l
bmQoKSArIDE7IC8vIEFkdmFuY2Ugb3ZlciB0aGUgJzonIGF0IHRoZSBlbmQgb2YgdGhlIHNjaGVt
ZS4KKworICAgIGlmICh1c2VybmFtZS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0g
VXNlcm5hbWUpCisgICAgICAgICAgICByZXR1cm4gdXNlcm5hbWUuYmVnaW4oKTsKKyAgICAgICAg
Y3VycmVudCA9IHVzZXJuYW1lLmVuZCgpICsgMTsgLy8gQWR2YW5jZSBvdmVyIHRoZSAnQCcgb3Ig
JzonIGF0IHRoZSBlbmQuCisgICAgfQorCisgICAgaWYgKHBhc3N3b3JkLmlzVmFsaWQoKSkgewor
ICAgICAgICBpZiAodHlwZSA8PSBQYXNzd29yZCkKKyAgICAgICAgICAgIHJldHVybiBwYXNzd29y
ZC5iZWdpbigpOworICAgICAgICBjdXJyZW50ID0gcGFzc3dvcmQuZW5kKCkgKyAxOyAvLyBBZHZh
bmNlIG92ZXIgdGhlICdAJyBhdCB0aGUgZW5kLgorICAgIH0KKworICAgIGlmIChob3N0LmlzVmFs
aWQoKSkgeworICAgICAgICBpZiAodHlwZSA8PSBIb3N0KQorICAgICAgICAgICAgcmV0dXJuIGhv
c3QuYmVnaW4oKTsKKyAgICAgICAgY3VycmVudCA9IGhvc3QuZW5kKCk7CisgICAgfQorCisgICAg
aWYgKHBvcnQuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBlIDwgUG9ydCB8fCAodHlwZSA9
PSBQb3J0ICYmIGluY2x1ZGVEZWxpbWl0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHBvcnQuYmVn
aW4oKSAtIDE7IC8vIEJhY2sgb3ZlciBkZWxpbWl0ZXIuCisgICAgICAgIGlmICh0eXBlID09IFBv
cnQpCisgICAgICAgICAgICByZXR1cm4gcG9ydC5iZWdpbigpOyAvLyBEb24ndCB3YW50IGRlbGlt
aXRlciBjb3VudGVkLgorICAgICAgICBjdXJyZW50ID0gcG9ydC5lbmQoKTsKKyAgICB9CisKKyAg
ICBpZiAocGF0aC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0gUGF0aCkKKyAgICAg
ICAgICAgIHJldHVybiBwYXRoLmJlZ2luKCk7CisgICAgICAgIGN1cnJlbnQgPSBwYXRoLmVuZCgp
OworICAgIH0KKworICAgIGlmIChxdWVyeS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUg
PCBRdWVyeSB8fCAodHlwZSA9PSBRdWVyeSAmJiBpbmNsdWRlRGVsaW1pdGVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBxdWVyeS5iZWdpbigpIC0gMTsgLy8gQmFjayBvdmVyIGRlbGltaXRlci4KKyAg
ICAgICAgaWYgKHR5cGUgPT0gUXVlcnkpCisgICAgICAgICAgICByZXR1cm4gcXVlcnkuYmVnaW4o
KTsgLy8gRG9uJ3Qgd2FudCBkZWxpbWl0ZXIgY291bnRlZC4KKyAgICAgICAgY3VycmVudCA9IHF1
ZXJ5LmVuZCgpOworICAgIH0KKworICAgIGlmIChmcmFnbWVudC5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gRnJhZ21lbnQgJiYgIWluY2x1ZGVEZWxpbWl0ZXIpCisgICAgICAgICAg
ICByZXR1cm4gZnJhZ21lbnQuYmVnaW4oKTsgLy8gQmFjayBvdmVyIGRlbGltaXRlci4KKworICAg
ICAgICAvLyBXaGVuIHRoZXJlIGlzIGEgZnJhZ21lbnQgYW5kIHdlIGdldCBoZXJlLCB0aGUgY29t
cG9uZW50IHdlIHdhbnRlZCB3YXMgYmVmb3JlCisgICAgICAgIC8vIHRoaXMgYW5kIG5vdCBmb3Vu
ZCwgc28gd2UgYWx3YXlzIGtub3cgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnJhZ21lbnQgaXMgcmln
aHQuCisgICAgICAgIHJldHVybiBmcmFnbWVudC5iZWdpbigpIC0gMTsgLy8gRG9uJ3Qgd2FudCBk
ZWxpbWl0ZXIgY291bnRlZC4KKyAgICB9CisKKyAgICByZXR1cm4gY3VycmVudDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdt
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNlZ21l
bnRzLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdt
ZW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLy8gQ29weXJpZ2h0IDIwMDcs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKy8v
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZm5kZWYgVVJMU2VnbWVudHNfaAorI2RlZmluZSBV
UkxTZWdtZW50c19oCisKKyNpbmNsdWRlICJVUkxDb21wb25lbnQuaCIKKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIEEgc3RydWN0dXJlIHRoYXQgaG9sZHMgdGhlIGlkZW50aWZpZWQgcGFydHMgb2Yg
YW4gaW5wdXQgVVJMLiBUaGlzIHN0cnVjdHVyZQorLy8gZG9lcyBOT1Qgc3RvcmUgdGhlIFVSTCBp
dHNlbGYuIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvIHN0b3JlIHRoZSBVUkwgdGV4dAorLy8gYW5k
IGl0cyBjb3JyZXNwb25kaW5nIFBhcnNlZCBzdHJ1Y3R1cmUgc2VwYXJhdGVseS4KK2NsYXNzIFVS
TFNlZ21lbnRzIHsKK3B1YmxpYzoKKyAgICAvLyBJZGVudGlmaWVzIGRpZmZlcmVudCBjb21wb25l
bnRzLgorICAgIGVudW0gQ29tcG9uZW50VHlwZSB7CisgICAgICAgIFNjaGVtZSwKKyAgICAgICAg
VXNlcm5hbWUsCisgICAgICAgIFBhc3N3b3JkLAorICAgICAgICBIb3N0LAorICAgICAgICBQb3J0
LAorICAgICAgICBQYXRoLAorICAgICAgICBRdWVyeSwKKyAgICAgICAgRnJhZ21lbnQsCisgICAg
fTsKKworICAgIFVSTFNlZ21lbnRzKCkgeyB9CisKKyAgICAvLyBSZXR1cm5zIHRoZSBsZW5ndGgg
b2YgdGhlIFVSTCAodGhlIGVuZCBvZiB0aGUgbGFzdCBjb21wb25lbnQpLgorICAgIC8vCisgICAg
Ly8gTm90ZSB0aGF0IGZvciBzb21lIGludmFsaWQsIG5vbi1jYW5vbmljYWwgVVJMcywgdGhpcyBt
YXkgbm90IGJlIHRoZSBsZW5ndGgKKyAgICAvLyBvZiB0aGUgc3RyaW5nLiBGb3IgZXhhbXBsZSAi
aHR0cDovLyI6IHRoZSBwYXJzZWQgc3RydWN0dXJlIHdpbGwgb25seQorICAgIC8vIGNvbnRhaW4g
YW4gZW50cnkgZm9yIHRoZSBmb3VyLWNoYXJhY3RlciBzY2hlbWUsIGFuZCBpdCBkb2Vzbid0IGtu
b3cgYWJvdXQKKyAgICAvLyB0aGUgIjovLyIuIEZvciBhbGwgb3RoZXIgbGFzdC1jb21wb25lbnRz
LCBpdCB3aWxsIHJldHVybiB0aGUgcmVhbCBsZW5ndGguCisgICAgaW50IGxlbmd0aCgpIGNvbnN0
OworCisgICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBn
aXZlbiBjb21wb25lbnQgaWYgaXQgZXhpc3RzLAorICAgIC8vIG9yIHdoZXJlIHRoZSBjb21wb25l
bnQgd291bGQgYmUgaWYgaXQgZGlkIGV4aXN0LiBUaGlzIHdpbGwgcmV0dXJuIHRoZQorICAgIC8v
IHN0cmluZyBsZW5ndGggaWYgdGhlIGNvbXBvbmVudCB3b3VsZCBiZSBhcHBlbmRlZCB0byB0aGUg
ZW5kLgorICAgIC8vCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgY2FuIGdldCBhIGxpdHRsZSBmdW5u
eSBmb3IgdGhlIHBvcnQsIHF1ZXJ5LCBhbmQgZnJhZ21lbnQKKyAgICAvLyBjb21wb25lbnRzIHdo
aWNoIGhhdmUgYSBkZWxpbWl0ZXIgdGhhdCBpcyBub3QgY291bnRlZCBhcyBwYXJ0IG9mIHRoZQor
ICAgIC8vIGNvbXBvbmVudC4gVGhlIHxpbmNsdWRlRGVsaW1pdGVyfCBmbGFnIGNvbnRyb2xzIGlm
IHlvdSB3YW50IHRoaXMgY291bnRlZAorICAgIC8vIGFzIHBhcnQgb2YgdGhlIGNvbXBvbmVudCBv
ciBub3Qgd2hlbiB0aGUgY29tcG9uZW50IGV4aXN0cy4KKyAgICAvLworICAgIC8vIFRoaXMgZXhh
bXBsZSBzaG93cyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZmxhZ3MgZm9yIHR3byBv
ZiB0aGVzZQorICAgIC8vIGRlbGltaXRlZCBjb21wb25lbnRzIHRoYXQgaXMgcHJlc2VudCAodGhl
IHBvcnQgYW5kIHF1ZXJ5KSBhbmQgb25lIHRoYXQKKyAgICAvLyBpc24ndCAodGhlIHJlZmVyZW5j
ZSkuIFRoZSBjb21wb25lbnRzIHRoYXQgdGhpcyBmbGFnIGFmZmVjdHMgYXJlIG1hcmtlZAorICAg
IC8vIHdpdGggYSAqLgorICAgIC8vICAgICAgICAgICAgICAgICAwICAgICAgICAgMSAgICAgICAg
IDIKKyAgICAvLyAgICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwCisgICAgLy8g
RXhhbXBsZSBpbnB1dDogIGh0dHA6Ly9mb286ODAvP3F1ZXJ5CisgICAgLy8gICAgICAgICAgICAg
IGluY2x1ZGVfZGVsaW09dHJ1ZSwgIC4uLj1mYWxzZSAgKCI8LSIgaW5kaWNhdGVzIGRpZmZlcmVu
dCkKKyAgICAvLyAgICAgIFNjaGVtZTogMCAgICAgICAgICAgICAgICAgICAgMAorICAgIC8vICAg
IFVzZXJuYW1lOiA1ICAgICAgICAgICAgICAgICAgICA1CisgICAgLy8gICAgUGFzc3dvcmQ6IDUg
ICAgICAgICAgICAgICAgICAgIDUKKyAgICAvLyAgICAgICAgSG9zdDogNyAgICAgICAgICAgICAg
ICAgICAgNworICAgIC8vICAgICAgICpQb3J0OiAxMCAgICAgICAgICAgICAgICAgICAxMSA8LQor
ICAgIC8vICAgICAgICBQYXRoOiAxMyAgICAgICAgICAgICAgICAgICAxMworICAgIC8vICAgICAg
KlF1ZXJ5OiAxNCAgICAgICAgICAgICAgICAgICAxNSA8LQorICAgIC8vICAgICAgICAqRnJhZ21l
bnQ6IDIwICAgICAgICAgICAgICAgICAgIDIwCisgICAgLy8KKyAgICBpbnQgY2hhcmFjdGVyc0Jl
Zm9yZShDb21wb25lbnRUeXBlLCBib29sIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbnN0OworCisgICAg
Ly8gRWFjaCBjb21wb25lbnQgZXhjbHVkZXMgdGhlIHJlbGF0ZWQgZGVsaW1pdGVycyBhbmQgaGFz
IGEgbGVuZ3RoIG9mIC0xCisgICAgLy8gaWYgdGhhdCBjb21wb25lbnQgaXMgYWJzZW50IGJ1dCAw
IGlmIHRoZSBjb21wb25lbnQgZXhpc3RzIGJ1dCBpcyBlbXB0eS4KKyAgICBVUkxDb21wb25lbnQg
c2NoZW1lOworICAgIFVSTENvbXBvbmVudCB1c2VybmFtZTsKKyAgICBVUkxDb21wb25lbnQgcGFz
c3dvcmQ7CisgICAgVVJMQ29tcG9uZW50IGhvc3Q7CisgICAgVVJMQ29tcG9uZW50IHBvcnQ7Cisg
ICAgVVJMQ29tcG9uZW50IHBhdGg7CisgICAgVVJMQ29tcG9uZW50IHF1ZXJ5OworICAgIFVSTENv
bXBvbmVudCBmcmFnbWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
VVJMU2VnbWVudHNfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55189</attachid>
            <date>2010-05-05 18:31:40 -0700</date>
            <delta_ts>2010-05-06 02:31:17 -0700</delta_ts>
            <desc>patch w/ update license block</desc>
            <filename>bug-38566-20100505183138.patch</filename>
            <type>text/plain</type>
            <size>10332</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU4ODUyKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMDUgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbV1RGVVJMXSBBZGQgYSBjbGFzcyB0byByZXByZXNlbnQgdGhlIHNl
Z21lbnRzIG9mIGEgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODU2NgorCisgICAgICAgIFdoZW4gcGFpcmVkIHdpdGggYSBzdHJpbmcsIHRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIHBhcnNlZCBVUkwuCisKKyAgICAgICAgKiB3dGYvdXJsL3NyYy9V
UkxTZWdtZW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxTZWdtZW50czo6bGVuZ3Ro
KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OmNoYXJhY3RlcnNCZWZvcmUpOgorICAgICAg
ICAqIHd0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpVUkxT
ZWdtZW50czo6KToKKyAgICAgICAgKFdURjo6VVJMU2VnbWVudHM6OlVSTFNlZ21lbnRzKToKKyAg
ICAgICAgKiB3dGYvdXJsL3d0ZnVybC5neXA6CisKIDIwMTAtMDUtMDUgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3VybC93dGZ1cmwuZ3lwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91cmwvd3RmdXJsLmd5cAkocmV2aXNpb24gNTg4NTIp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3d0ZnVybC5neXAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDggQEAKICAgICAgIF0sCiAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgJ3Ny
Yy9VUkxDb21wb25lbnQuaCcsCisgICAgICAgICdzcmMvVVJMU2VnbWVudHMuY3BwJywKKyAgICAg
ICAgJ3NyYy9VUkxTZWdtZW50cy5oJywKICAgICAgIF0sCiAgICAgICAnZGlyZWN0X2RlcGVuZGVu
dF9zZXR0aW5ncyc6IHsKICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3d0Zi91cmwvc3JjL1VSTFNlZ21lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdtZW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTEwIEBACisvKiBCYXNlZCBvbiBuc1VSTFBhcnNlcnMuY2MgZnJvbSBNb3ppbGxhCisg
KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBDb3B5cmlnaHQgKEMp
IDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKgorICogT3RoZXIg
Y29udHJpYnV0b3JzOgorICogICBEYXJpbiBGaXNoZXIgKG9yaWdpbmFsIGF1dGhvcikKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQorICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZp
bGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiBlaXRoZXIgdGhlIE1vemlsbGEg
UHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEsIGZvdW5kIGF0CisgKiBodHRwOi8vd3d3Lm1vemls
bGEub3JnL01QTC8gKHRoZSAiTVBMIikgb3IgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBWZXJzaW9uIDIuMCwgZm91bmQgYXQgaHR0cDovL3d3dy5mc2Yub3JnL2NvcHlsZWZ0L2dw
bC5odG1sCisgKiAodGhlICJHUEwiKSwgaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0
aGUgTVBMIG9yIHRoZSBHUEwgYXJlCisgKiBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhvc2UgYWJv
dmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91cgorICogdmVyc2lvbiBvZiB0aGlz
IGZpbGUgb25seSB1bmRlciB0aGUgdGVybXMgb2Ygb25lIG9mIHRob3NlIHR3bworICogbGljZW5z
ZXMgKHRoZSBNUEwgb3IgdGhlIEdQTCkgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMgdG8gdXNlIHlv
dXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBMR1BMLCBpbmRpY2F0ZSB5b3Vy
IGRlY2lzaW9uIGJ5CisgKiBkZWxldGluZ3RoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNl
IHRoZW0gd2l0aCB0aGUgbm90aWNlIGFuZAorICogb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBi
eSB0aGUgTVBMIG9yIHRoZSBHUEwsIGFzIHRoZSBjYXNlIG1heSBiZS4KKyAqIElmIHlvdSBkbyBu
b3QgZGVsZXRlIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIK
KyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIGFueSBvZiB0aGUgTEdQTCwgdGhlIE1QTCBv
ciB0aGUgR1BMLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxTZWdt
ZW50cy5oIgorCituYW1lc3BhY2UgV1RGIHsKKworaW50IFVSTFNlZ21lbnRzOjpsZW5ndGgoKSBj
b25zdAoreworICAgIGlmIChmcmFnbWVudC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmcmFn
bWVudC5lbmQoKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc0JlZm9yZShGcmFnbWVudCwgZmFsc2Up
OworfQorCitpbnQgVVJMU2VnbWVudHM6OmNoYXJhY3RlcnNCZWZvcmUoQ29tcG9uZW50VHlwZSB0
eXBlLCBib29sIGluY2x1ZGVEZWxpbWl0ZXIpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUgPT0gU2No
ZW1lKQorICAgICAgICByZXR1cm4gc2NoZW1lLmJlZ2luKCk7CisKKyAgICBpbnQgY3VycmVudCA9
IDA7CisgICAgaWYgKHNjaGVtZS5pc1ZhbGlkKCkpCisgICAgICAgIGN1cnJlbnQgPSBzY2hlbWUu
ZW5kKCkgKyAxOyAvLyBBZHZhbmNlIG92ZXIgdGhlICc6JyBhdCB0aGUgZW5kIG9mIHRoZSBzY2hl
bWUuCisKKyAgICBpZiAodXNlcm5hbWUuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBlIDw9
IFVzZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHVzZXJuYW1lLmJlZ2luKCk7CisgICAgICAg
IGN1cnJlbnQgPSB1c2VybmFtZS5lbmQoKSArIDE7IC8vIEFkdmFuY2Ugb3ZlciB0aGUgJ0AnIG9y
ICc6JyBhdCB0aGUgZW5kLgorICAgIH0KKworICAgIGlmIChwYXNzd29yZC5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgaWYgKHR5cGUgPD0gUGFzc3dvcmQpCisgICAgICAgICAgICByZXR1cm4gcGFzc3dv
cmQuYmVnaW4oKTsKKyAgICAgICAgY3VycmVudCA9IHBhc3N3b3JkLmVuZCgpICsgMTsgLy8gQWR2
YW5jZSBvdmVyIHRoZSAnQCcgYXQgdGhlIGVuZC4KKyAgICB9CisKKyAgICBpZiAoaG9zdC5pc1Zh
bGlkKCkpIHsKKyAgICAgICAgaWYgKHR5cGUgPD0gSG9zdCkKKyAgICAgICAgICAgIHJldHVybiBo
b3N0LmJlZ2luKCk7CisgICAgICAgIGN1cnJlbnQgPSBob3N0LmVuZCgpOworICAgIH0KKworICAg
IGlmIChwb3J0LmlzVmFsaWQoKSkgeworICAgICAgICBpZiAodHlwZSA8IFBvcnQgfHwgKHR5cGUg
PT0gUG9ydCAmJiBpbmNsdWRlRGVsaW1pdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBwb3J0LmJl
Z2luKCkgLSAxOyAvLyBCYWNrIG92ZXIgZGVsaW1pdGVyLgorICAgICAgICBpZiAodHlwZSA9PSBQ
b3J0KQorICAgICAgICAgICAgcmV0dXJuIHBvcnQuYmVnaW4oKTsgLy8gRG9uJ3Qgd2FudCBkZWxp
bWl0ZXIgY291bnRlZC4KKyAgICAgICAgY3VycmVudCA9IHBvcnQuZW5kKCk7CisgICAgfQorCisg
ICAgaWYgKHBhdGguaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBlIDw9IFBhdGgpCisgICAg
ICAgICAgICByZXR1cm4gcGF0aC5iZWdpbigpOworICAgICAgICBjdXJyZW50ID0gcGF0aC5lbmQo
KTsKKyAgICB9CisKKyAgICBpZiAocXVlcnkuaXNWYWxpZCgpKSB7CisgICAgICAgIGlmICh0eXBl
IDwgUXVlcnkgfHwgKHR5cGUgPT0gUXVlcnkgJiYgaW5jbHVkZURlbGltaXRlcikpCisgICAgICAg
ICAgICByZXR1cm4gcXVlcnkuYmVnaW4oKSAtIDE7IC8vIEJhY2sgb3ZlciBkZWxpbWl0ZXIuCisg
ICAgICAgIGlmICh0eXBlID09IFF1ZXJ5KQorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5LmJlZ2lu
KCk7IC8vIERvbid0IHdhbnQgZGVsaW1pdGVyIGNvdW50ZWQuCisgICAgICAgIGN1cnJlbnQgPSBx
dWVyeS5lbmQoKTsKKyAgICB9CisKKyAgICBpZiAoZnJhZ21lbnQuaXNWYWxpZCgpKSB7CisgICAg
ICAgIGlmICh0eXBlID09IEZyYWdtZW50ICYmICFpbmNsdWRlRGVsaW1pdGVyKQorICAgICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50LmJlZ2luKCk7IC8vIEJhY2sgb3ZlciBkZWxpbWl0ZXIuCisKKyAg
ICAgICAgLy8gV2hlbiB0aGVyZSBpcyBhIGZyYWdtZW50IGFuZCB3ZSBnZXQgaGVyZSwgdGhlIGNv
bXBvbmVudCB3ZSB3YW50ZWQgd2FzIGJlZm9yZQorICAgICAgICAvLyB0aGlzIGFuZCBub3QgZm91
bmQsIHNvIHdlIGFsd2F5cyBrbm93IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZyYWdtZW50IGlzIHJp
Z2h0LgorICAgICAgICByZXR1cm4gZnJhZ21lbnQuYmVnaW4oKSAtIDE7IC8vIERvbid0IHdhbnQg
ZGVsaW1pdGVyIGNvdW50ZWQuCisgICAgfQorCisgICAgcmV0dXJuIGN1cnJlbnQ7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMU2Vn
bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvdXJsL3NyYy9VUkxTZWdt
ZW50cy5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VybC9zcmMvVVJMU2Vn
bWVudHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDUgQEAKKy8vIENvcHlyaWdodCAyMDA3
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisv
LyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisv
LyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWZuZGVmIFVSTFNlZ21lbnRzX2gKKyNkZWZpbmUg
VVJMU2VnbWVudHNfaAorCisjaW5jbHVkZSAiVVJMQ29tcG9uZW50LmgiCisKK25hbWVzcGFjZSBX
VEYgeworCisvLyBBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRoZSBpZGVudGlmaWVkIHBhcnRzIG9m
IGFuIGlucHV0IFVSTC4gVGhpcyBzdHJ1Y3R1cmUKKy8vIGRvZXMgTk9UIHN0b3JlIHRoZSBVUkwg
aXRzZWxmLiBUaGUgY2FsbGVyIHdpbGwgaGF2ZSB0byBzdG9yZSB0aGUgVVJMIHRleHQKKy8vIGFu
ZCBpdHMgY29ycmVzcG9uZGluZyBQYXJzZWQgc3RydWN0dXJlIHNlcGFyYXRlbHkuCitjbGFzcyBV
UkxTZWdtZW50cyB7CitwdWJsaWM6CisgICAgLy8gSWRlbnRpZmllcyBkaWZmZXJlbnQgY29tcG9u
ZW50cy4KKyAgICBlbnVtIENvbXBvbmVudFR5cGUgeworICAgICAgICBTY2hlbWUsCisgICAgICAg
IFVzZXJuYW1lLAorICAgICAgICBQYXNzd29yZCwKKyAgICAgICAgSG9zdCwKKyAgICAgICAgUG9y
dCwKKyAgICAgICAgUGF0aCwKKyAgICAgICAgUXVlcnksCisgICAgICAgIEZyYWdtZW50LAorICAg
IH07CisKKyAgICBVUkxTZWdtZW50cygpIHsgfQorCisgICAgLy8gUmV0dXJucyB0aGUgbGVuZ3Ro
IG9mIHRoZSBVUkwgKHRoZSBlbmQgb2YgdGhlIGxhc3QgY29tcG9uZW50KS4KKyAgICAvLworICAg
IC8vIE5vdGUgdGhhdCBmb3Igc29tZSBpbnZhbGlkLCBub24tY2Fub25pY2FsIFVSTHMsIHRoaXMg
bWF5IG5vdCBiZSB0aGUgbGVuZ3RoCisgICAgLy8gb2YgdGhlIHN0cmluZy4gRm9yIGV4YW1wbGUg
Imh0dHA6Ly8iOiB0aGUgcGFyc2VkIHN0cnVjdHVyZSB3aWxsIG9ubHkKKyAgICAvLyBjb250YWlu
IGFuIGVudHJ5IGZvciB0aGUgZm91ci1jaGFyYWN0ZXIgc2NoZW1lLCBhbmQgaXQgZG9lc24ndCBr
bm93IGFib3V0CisgICAgLy8gdGhlICI6Ly8iLiBGb3IgYWxsIG90aGVyIGxhc3QtY29tcG9uZW50
cywgaXQgd2lsbCByZXR1cm4gdGhlIHJlYWwgbGVuZ3RoLgorICAgIGludCBsZW5ndGgoKSBjb25z
dDsKKworICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUg
Z2l2ZW4gY29tcG9uZW50IGlmIGl0IGV4aXN0cywKKyAgICAvLyBvciB3aGVyZSB0aGUgY29tcG9u
ZW50IHdvdWxkIGJlIGlmIGl0IGRpZCBleGlzdC4gVGhpcyB3aWxsIHJldHVybiB0aGUKKyAgICAv
LyBzdHJpbmcgbGVuZ3RoIGlmIHRoZSBjb21wb25lbnQgd291bGQgYmUgYXBwZW5kZWQgdG8gdGhl
IGVuZC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB0aGlzIGNhbiBnZXQgYSBsaXR0bGUgZnVu
bnkgZm9yIHRoZSBwb3J0LCBxdWVyeSwgYW5kIGZyYWdtZW50CisgICAgLy8gY29tcG9uZW50cyB3
aGljaCBoYXZlIGEgZGVsaW1pdGVyIHRoYXQgaXMgbm90IGNvdW50ZWQgYXMgcGFydCBvZiB0aGUK
KyAgICAvLyBjb21wb25lbnQuIFRoZSB8aW5jbHVkZURlbGltaXRlcnwgZmxhZyBjb250cm9scyBp
ZiB5b3Ugd2FudCB0aGlzIGNvdW50ZWQKKyAgICAvLyBhcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQg
b3Igbm90IHdoZW4gdGhlIGNvbXBvbmVudCBleGlzdHMuCisgICAgLy8KKyAgICAvLyBUaGlzIGV4
YW1wbGUgc2hvd3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIGZsYWdzIGZvciB0d28g
b2YgdGhlc2UKKyAgICAvLyBkZWxpbWl0ZWQgY29tcG9uZW50cyB0aGF0IGlzIHByZXNlbnQgKHRo
ZSBwb3J0IGFuZCBxdWVyeSkgYW5kIG9uZSB0aGF0CisgICAgLy8gaXNuJ3QgKHRoZSByZWZlcmVu
Y2UpLiBUaGUgY29tcG9uZW50cyB0aGF0IHRoaXMgZmxhZyBhZmZlY3RzIGFyZSBtYXJrZWQKKyAg
ICAvLyB3aXRoIGEgKi4KKyAgICAvLyAgICAgICAgICAgICAgICAgMCAgICAgICAgIDEgICAgICAg
ICAyCisgICAgLy8gICAgICAgICAgICAgICAgIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MAorICAgIC8v
IEV4YW1wbGUgaW5wdXQ6ICBodHRwOi8vZm9vOjgwLz9xdWVyeQorICAgIC8vICAgICAgICAgICAg
ICBpbmNsdWRlX2RlbGltPXRydWUsICAuLi49ZmFsc2UgICgiPC0iIGluZGljYXRlcyBkaWZmZXJl
bnQpCisgICAgLy8gICAgICBTY2hlbWU6IDAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAvLyAg
ICBVc2VybmFtZTogNSAgICAgICAgICAgICAgICAgICAgNQorICAgIC8vICAgIFBhc3N3b3JkOiA1
ICAgICAgICAgICAgICAgICAgICA1CisgICAgLy8gICAgICAgIEhvc3Q6IDcgICAgICAgICAgICAg
ICAgICAgIDcKKyAgICAvLyAgICAgICAqUG9ydDogMTAgICAgICAgICAgICAgICAgICAgMTEgPC0K
KyAgICAvLyAgICAgICAgUGF0aDogMTMgICAgICAgICAgICAgICAgICAgMTMKKyAgICAvLyAgICAg
ICpRdWVyeTogMTQgICAgICAgICAgICAgICAgICAgMTUgPC0KKyAgICAvLyAgICAgICAgKkZyYWdt
ZW50OiAyMCAgICAgICAgICAgICAgICAgICAyMAorICAgIC8vCisgICAgaW50IGNoYXJhY3RlcnNC
ZWZvcmUoQ29tcG9uZW50VHlwZSwgYm9vbCBpbmNsdWRlRGVsaW1pdGVyKSBjb25zdDsKKworICAg
IC8vIEVhY2ggY29tcG9uZW50IGV4Y2x1ZGVzIHRoZSByZWxhdGVkIGRlbGltaXRlcnMgYW5kIGhh
cyBhIGxlbmd0aCBvZiAtMQorICAgIC8vIGlmIHRoYXQgY29tcG9uZW50IGlzIGFic2VudCBidXQg
MCBpZiB0aGUgY29tcG9uZW50IGV4aXN0cyBidXQgaXMgZW1wdHkuCisgICAgVVJMQ29tcG9uZW50
IHNjaGVtZTsKKyAgICBVUkxDb21wb25lbnQgdXNlcm5hbWU7CisgICAgVVJMQ29tcG9uZW50IHBh
c3N3b3JkOworICAgIFVSTENvbXBvbmVudCBob3N0OworICAgIFVSTENvbXBvbmVudCBwb3J0Owor
ICAgIFVSTENvbXBvbmVudCBwYXRoOworICAgIFVSTENvbXBvbmVudCBxdWVyeTsKKyAgICBVUkxD
b21wb25lbnQgZnJhZ21lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8v
IFVSTFNlZ21lbnRzX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>