<?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>7411</bug_id>
          
          <creation_ts>2006-02-21 19:49:55 -0800</creation_ts>
          <short_desc>Inline some functions Shark suggested</short_desc>
          <delta_ts>2006-02-23 11:50:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>33661</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-21 19:49:55 -0800</bug_when>
    <thetext>2.1% performance gain on JS iBench.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33662</commentid>
    <comment_count>1</comment_count>
      <attachid>6654</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-21 19:50:23 -0800</bug_when>
    <thetext>Created attachment 6654
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33663</commentid>
    <comment_count>2</comment_count>
      <attachid>6655</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-21 20:03:02 -0800</bug_when>
    <thetext>Created attachment 6655
patch w/formatting to match current guidelines

To keep things consistent, I only reformatted when moving a whole class or method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33666</commentid>
    <comment_count>3</comment_count>
      <attachid>6655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-21 21:43:13 -0800</bug_when>
    <thetext>Comment on attachment 6655
patch w/formatting to match current guidelines

I think that UString::operator= is exactly what hte compiler would generate, inline, if you just didn&apos;t declare the operator= at all.

This otherwise looks great, so r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33676</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-21 23:35:28 -0800</bug_when>
    <thetext>Geoff, does the inline version of ActivationImp::put ever actually get inlined? It is a virtual method, so it could only possibly be inlined if someone called the method scoped to a specific class name so it picks the right one directly. Otherwise it goes through the vtable and can&apos;t inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33679</commentid>
    <comment_count>5</comment_count>
      <attachid>6660</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-22 00:25:41 -0800</bug_when>
    <thetext>Created attachment 6660
patch to address comments and add a few more inlines

Yes, removing operator= altogether is just as well. No, put() does not inline, nor do some other virtuals my first patch inlined. (Also explains why I couldn&apos;t get processFuncDecl to inline. That was driving me crazy.)

New patch addresses both issues and adds a few more inlines (which is why I&apos;m asking for review again). Total speedup: 2.9%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33707</commentid>
    <comment_count>6</comment_count>
      <attachid>6660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-22 09:35:13 -0800</bug_when>
    <thetext>Comment on attachment 6660
patch to address comments and add a few more inlines

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33793</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-23 11:50:27 -0800</bug_when>
    <thetext>Landed r12949.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6654</attachid>
            <date>2006-02-21 19:50:23 -0800</date>
            <delta_ts>2006-02-21 20:03:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-inline.txt</filename>
            <type>text/plain</type>
            <size>10693</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTMw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDYtMDIt
MjEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIElubGluZWQgc29tZSBmdW5jdGlvbnMg
U2hhcmsgc3VnZ2VzdGVkIC0tIDIuMSUgZ2FpbiBvbiBKUyBpQmVuY2guCisKKyAgICAgICAgKiBr
anMvZnVuY3Rpb24uY3BwOgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5oOgorICAgICAgICAoS0pT
OjpBY3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAg
ICAgICoga2pzL2ludGVybmFsLmg6CisgICAgICAgIChLSlM6OlN0cmluZ0ltcDo6dG9TdHJpbmcp
OgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgICoga2pzL25vZGVzLmg6CisgICAg
ICAgIChLSlM6OkFyZ3VtZW50c05vZGU6OmV2YWx1YXRlTGlzdCk6CisgICAgICAgIChLSlM6OlNv
dXJjZUVsZW1lbnRzTm9kZTo6cmVsZWFzZU5leHQpOgorICAgICAgICAoS0pTOjpCbG9ja05vZGU6
OnByb2Nlc3NWYXJEZWNscyk6CisgICAgICAgICoga2pzL29iamVjdC5jcHA6CisgICAgICAgICog
a2pzL29iamVjdC5oOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6dG9QcmltaXRpdmUpOgorICAg
ICAgICAqIGtqcy91c3RyaW5nLmNwcDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAg
ICAoS0pTOjpVU3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoS0pTOjpVU3RyaW5nOjp0b0Fy
cmF5SW5kZXgpOgorICAgICAgICAqIGtqcy92YWx1ZS5jcHA6CisgICAgICAgICoga2pzL3ZhbHVl
Lmg6CisgICAgICAgIChLSlM6OkpTVmFsdWU6OnRvT2JqZWN0KToKKwogMjAwNi0wMi0yMSAgRXJp
YyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBnZ2Fy
ZW4uCkluZGV4OiBranMvaW50ZXJuYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9pbnRlcm5hbC5j
cHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL2ludGVybmFsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTEgKzkxLDYgQEAgZG91YmxlIFN0cmluZ0ltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICop
IAogICByZXR1cm4gdmFsLnRvRG91YmxlKCk7CiB9CiAKLVVTdHJpbmcgU3RyaW5nSW1wOjp0b1N0
cmluZyhFeGVjU3RhdGUgKikgY29uc3QKLXsKLSAgcmV0dXJuIHZhbDsKLX0KLQogSlNPYmplY3Qg
KlN0cmluZ0ltcDo6dG9PYmplY3QoRXhlY1N0YXRlICpleGVjKSBjb25zdAogewogICAgIHJldHVy
biBuZXcgU3RyaW5nSW5zdGFuY2UoZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5T
dHJpbmdQcm90b3R5cGUoKSwgdmFsKTsKSW5kZXg6IGtqcy92YWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL3ZhbHVlLmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBranMvdmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsMTEgKzExNSw2IEBAIHVpbnQxNl90IEpTVmFsdWU6OnRvVUludDE2
KEV4ZWNTdGF0ZSAqZXgKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGQxNik7CiB9
CiAKLUpTT2JqZWN0ICpKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRl
Ojp0b09iamVjdCh0aGlzLCBleGVjKSA6IGRvd25jYXN0KCktPnRvT2JqZWN0KGV4ZWMpOwotfQot
CiBib29sIEpTQ2VsbDo6Z2V0TnVtYmVyKGRvdWJsZSAmbnVtZXJpY1ZhbHVlKSBjb25zdAogewog
ICAgIGlmICghaXNOdW1iZXIoKSkKSW5kZXg6IGtqcy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtqcy9mdW5jdGlvbi5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9mdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDE1IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIG11dGFi
bGUgQXJndW1lbnRzICpfYXJndW1lbnRzT2JqZWN0OwogICB9OwogCisgIGlubGluZSB2b2lkIEFj
dGl2YXRpb25JbXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKQorICB7CisgICAgICAvLyBUaGVyZSdz
IG5vIHdheSB0aGF0IGFuIGFjdGl2YXRpb24gb2JqZWN0IGNhbiBoYXZlIGEgcHJvdG90eXBlIG9y
IGdldHRlci9zZXR0ZXIgcHJvcGVydGllcworICAgICAgYXNzZXJ0KCFfcHJvcC5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpOworICAgICAgYXNzZXJ0KHByb3RvdHlwZSgpID09IGpzTnVsbCgp
KTsKKyAgICAgIAorICAgICAgX3Byb3AucHV0KHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsIChh
dHRyID09IE5vbmUgfHwgYXR0ciA9PSBEb250RGVsZXRlKSk7CisgIH0KKyAgCiAgIGNsYXNzIEds
b2JhbEZ1bmNJbXAgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbkltcCB7CiAgIHB1YmxpYzoKICAg
ICBHbG9iYWxGdW5jSW1wKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKiwgaW50IGksIGlu
dCBsZW4sIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IGtqcy9vYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtqcy9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9vYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTEgKzUwMCw2IEBAIFJlZmVyZW5jZUxpc3QgSlNPYmpl
Y3Q6OnByb3BMaXN0KEV4ZWNTdGEKICAgcmV0dXJuIGxpc3Q7CiB9CiAKLUpTVmFsdWUgKkpTT2Jq
ZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBlKSBj
b25zdAotewotICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMscHJlZmVycmVkVHlwZSk7Ci19Ci0K
IGJvb2wgSlNPYmplY3Q6OnRvQm9vbGVhbihFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAogewog
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IGtqcy9pbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9p
bnRlcm5hbC5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9pbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpTVmFsdWUgKnRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSAqZXhlYywgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlw
ZSkgY29uc3Q7CiAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlICpleGVjKSBjb25zdDsKICAg
ICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKLSAgICBVU3RyaW5nIHRv
U3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CisgICAgVVN0cmluZyB0b1N0cmluZyhFeGVj
U3RhdGUgKmV4ZWMpIGNvbnN0IHsgcmV0dXJuIHZhbDsgfQogICAgIEpTT2JqZWN0ICp0b09iamVj
dChFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCiAgIHByaXZhdGU6CkluZGV4OiBranMvdmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvdmFsdWUuaAkocmV2aXNpb24gMTI5MzApCisrKyBranMvdmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4NiwxMSBAQCBpbmxpbmUgVVN0cmluZyBK
U1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhCiAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVk
aWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRlOjp0b1N0cmluZyh0aGlzKSA6IGRvd25jYXN0KCktPnRv
U3RyaW5nKGV4ZWMpOwogfQogCitpbmxpbmUgSlNPYmplY3QgKkpTVmFsdWU6OnRvT2JqZWN0KEV4
ZWNTdGF0ZSAqZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gSlNJbW1lZGlhdGU6OmlzSW1tZWRp
YXRlKHRoaXMpID8gSlNJbW1lZGlhdGU6OnRvT2JqZWN0KHRoaXMsIGV4ZWMpIDogZG93bmNhc3Qo
KS0+dG9PYmplY3QoZXhlYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBLSlNf
VkFMVUVfSApJbmRleDoga2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvZnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9mdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyNCwxNSArNTI0LDYgQEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpkZWxldGVQcm9wZXJ0
eShFeGVjUwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVy
dHlOYW1lKTsKIH0KIAotdm9pZCBBY3RpdmF0aW9uSW1wOjpwdXQoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cikK
LXsKLSAgLy8gVGhlcmUncyBubyB3YXkgdGhhdCBhbiBhY3RpdmF0aW9uIG9iamVjdCBjYW4gaGF2
ZSBhIHByb3RvdHlwZSBvciBnZXR0ZXIvc2V0dGVyIHByb3BlcnRpZXMKLSAgYXNzZXJ0KCFfcHJv
cC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICBhc3NlcnQocHJvdG90eXBlKCkgPT0g
anNOdWxsKCkpOwotCi0gIF9wcm9wLnB1dChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAoYXR0
ciA9PSBOb25lIHx8IGF0dHIgPT0gRG9udERlbGV0ZSkpOwotfQotCiB2b2lkIEFjdGl2YXRpb25J
bXA6Om1hcmsoKQogewogICAgIGlmIChfZnVuY3Rpb24gJiYgIV9mdW5jdGlvbi0+bWFya2VkKCkp
IApJbmRleDoga2pzL3VzdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvdXN0cmluZy5oCShyZXZp
c2lvbiAxMjkzMCkKKysrIGtqcy91c3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyMiw2ICs1
MjIsMjIgQEAgaW5saW5lIFVTdHJpbmc6OlVTdHJpbmcoKQogewogfQogCitpbmxpbmUgVVN0cmlu
ZyYgVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcgJnN0cikKK3sKKyAgICBtX3JlcCA9
IHN0ci5tX3JlcDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKKy8vIFJ1bGUgZnJvbSBFQ01BIDE1
LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KKy8vIE11c3QgZXhhY3RseSBtYXRjaCBz
dHJpbmcgZm9ybSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhbmQgYmUgbGVzcyB0aGFuIDJeMzIg
LSAxLgoraW5saW5lIHVuc2lnbmVkIFVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICpvaykgY29u
c3QKK3sKKyAgICB1bnNpZ25lZCBpID0gdG9TdHJpY3RVSW50MzIob2spOworICAgIGlmIChvayAm
JiBpID49IDB4RkZGRkZGRkZVKQorICAgICAgICAqb2sgPSBmYWxzZTsKKyAgICByZXR1cm4gaTsK
K30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBranMvbm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL25vZGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDE1ICs0OTgsNiBAQCBKU1ZhbHVlICpBcmd1bWVudHNO
b2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVybiAwOyAvLyBkdW1teSwgc2VlIGV2YWx1YXRl
TGlzdCgpCiB9CiAKLS8vIEVDTUEgMTEuMi40Ci1MaXN0IEFyZ3VtZW50c05vZGU6OmV2YWx1YXRl
TGlzdChFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGlmICghbGlzdCkKLSAgICByZXR1cm4gTGlzdCgp
OwotCi0gIHJldHVybiBsaXN0LT5ldmFsdWF0ZUxpc3QoZXhlYyk7Ci19Ci0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMi4yCkBAIC0xNjI2LDEyICsxNjE3LDYgQEAgQ29t
cGxldGlvbiBCbG9ja05vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICByZXR1cm4gc291cmNlLT5l
eGVjdXRlKGV4ZWMpOwogfQogCi12b2lkIEJsb2NrTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSAqZXhlYykKLXsKLSAgaWYgKHNvdXJjZSkKLSAgICBzb3VyY2UtPnByb2Nlc3NWYXJEZWNs
cyhleGVjKTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVtcHR5U3Rh
dGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMi4zCklu
ZGV4OiBranMvb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL29iamVjdC5oCShyZXZpc2lvbiAx
MjkzMCkKKysrIGtqcy9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSwxMSBA
QCBpbmxpbmUgdm9pZCBTY29wZUNoYWluOjptYXJrKCkKICAgICB9CiB9CiAKK2lubGluZSBKU1Zh
bHVlICpKU09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICpleGVjLCBKU1R5cGUgcHJlZmVy
cmVkVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMscHJlZmVycmVk
VHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBLSlNfT0JKRUNUX0gKSW5k
ZXg6IGtqcy91c3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvdXN0cmluZy5jcHAJKHJldmlz
aW9uIDEyOTMwKQorKysga2pzL3VzdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsMTIg
KzgzNyw2IEBAIFVTdHJpbmcgJlVTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBjaGFyICoKICAgcmV0
dXJuICp0aGlzOwogfQogCi1VU3RyaW5nICZVU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgVVN0cmlu
ZyAmc3RyKQotewotICBtX3JlcCA9IHN0ci5tX3JlcDsKLSAgcmV0dXJuICp0aGlzOwotfQotCiBi
b29sIFVTdHJpbmc6OmlzOEJpdCgpIGNvbnN0CiB7CiAgIGNvbnN0IFVDaGFyICp1ID0gZGF0YSgp
OwpAQCAtMTAyNCwxNiArMTAxOCw2IEBAIHVpbnQzMl90IFVTdHJpbmc6OnRvU3RyaWN0VUludDMy
KGJvb2wgKm8KICAgfQogfQogCi0vLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4g
YXJyYXkgaW5kZXggaXMuCi0vLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4g
dW5zaWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0gMS4KLXVuc2lnbmVkIFVT
dHJpbmc6OnRvQXJyYXlJbmRleChib29sICpvaykgY29uc3QKLXsKLSAgdW5zaWduZWQgaSA9IHRv
U3RyaWN0VUludDMyKG9rKTsKLSAgaWYgKGkgPj0gMHhGRkZGRkZGRlUgJiYgb2spCi0gICAgKm9r
ID0gZmFsc2U7Ci0gIHJldHVybiBpOwotfQotCiBpbnQgVVN0cmluZzo6ZmluZChjb25zdCBVU3Ry
aW5nICZmLCBpbnQgcG9zKSBjb25zdAogewogICBpbnQgc3ogPSBzaXplKCk7CkluZGV4OiBranMv
bm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuaAkocmV2aXNpb24gMTI5MzApCisrKyBr
anMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDcgKzM1OCw4IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgIEFyZ3VtZW50c05vZGUoQXJndW1lbnRMaXN0Tm9kZSAqbCkKICAgICAgIDogbGlz
dChsLT5uZXh0KSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkpOyBsLT5uZXh0
ID0gMDsgfQogICAgIEpTVmFsdWUgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYyk7Ci0gICAgTGlz
dCBldmFsdWF0ZUxpc3QoRXhlY1N0YXRlICpleGVjKTsKKyAgICAvLyBFQ01BIDExLjIuNAorICAg
IExpc3QgZXZhbHVhdGVMaXN0KEV4ZWNTdGF0ZSAqZXhlYykgeyByZXR1cm4gbGlzdCA/IGxpc3Qt
PmV2YWx1YXRlTGlzdChleGVjKSA6IExpc3QoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxBcmd1bWVu
dExpc3ROb2RlPiBsaXN0OwpAQCAtODA4LDYgKzgwOSwyNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBSZWZQdHI8VmFyRGVjbExpc3ROb2RlPiBuZXh0OwogICB9OwogCisgIC8vIEEgbGlua2VkIGxp
c3Qgb2Ygc291cmNlIGVsZW1lbnQgbm9kZXMKKyAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgeworICBwdWJsaWM6CisgICAgICBzdGF0aWMgaW50IGNvdW50
OworICAgICAgLy8gbGlzdCBwb2ludGVyIGlzIHRhaWwgb2YgYSBjaXJjdWxhciBsaXN0LCBjcmFj
a2VkIGluIHRoZSBCbG9ja05vZGUgKG9yIHN1YmNsYXNzKSBjdG9yCisgICAgICBTb3VyY2VFbGVt
ZW50c05vZGUoU3RhdGVtZW50Tm9kZSAqczEpOworICAgICAgU291cmNlRWxlbWVudHNOb2RlKFNv
dXJjZUVsZW1lbnRzTm9kZSAqczEsIFN0YXRlbWVudE5vZGUgKnMyKTsKKyAgICAgIAorICAgICAg
Q29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSAqZXhlYyk7CisgICAgICB2b2lkIHByb2Nlc3NG
dW5jRGVjbChFeGVjU3RhdGUgKmV4ZWMpOworICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJE
ZWNscyhFeGVjU3RhdGUgKmV4ZWMpOworICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSAmcykgY29uc3Q7CisgICAgICBQYXNzUmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4g
cmVsZWFzZU5leHQoKSB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQorICAgICAgdmlydHVhbCB2
b2lkIGJyZWFrQ3ljbGUoKTsKKyAgcHJpdmF0ZToKKyAgICAgIGZyaWVuZCBjbGFzcyBCbG9ja05v
ZGU7CisgICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gbm9kZTsKKyAgICAgIExpc3RSZWZQdHI8
U291cmNlRWxlbWVudHNOb2RlPiBuZXh0OworICB9OworICAKICAgY2xhc3MgQmxvY2tOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICBwdWJsaWM6CiAgICAgQmxvY2tOb2RlKFNvdXJjZUVs
ZW1lbnRzTm9kZSAqcyk7CkBAIC04MTgsNiArODM5LDEyIEBAIG5hbWVzcGFjZSBLSlMgewogICAg
IFJlZlB0cjxTb3VyY2VFbGVtZW50c05vZGU+IHNvdXJjZTsKICAgfTsKIAorICBpbmxpbmUgdm9p
ZCBCbG9ja05vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCisgIHsKKyAgICAg
IGlmIChzb3VyY2UpCisgICAgICAgICAgc291cmNlLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Cisg
IH0KKyAgCiAgIGNsYXNzIEVtcHR5U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgcHVibGljOgogICAgIEVtcHR5U3RhdGVtZW50Tm9kZSgpIHsgfSAvLyBkZWJ1ZwpAQCAt
MTA4NywyNiArMTExNCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFJlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBib2R5OwogICB9OwogCi0gIC8vIEEgbGlua2VkIGxpc3Qgb2Ygc291cmNlIGVsZW1l
bnQgbm9kZXMKLSAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgewotICBwdWJsaWM6Ci0gICAgICBzdGF0aWMgaW50IGNvdW50OwotICAgIC8vIGxpc3QgcG9p
bnRlciBpcyB0YWlsIG9mIGEgY2lyY3VsYXIgbGlzdCwgY3JhY2tlZCBpbiB0aGUgQmxvY2tOb2Rl
IChvciBzdWJjbGFzcykgY3RvcgotICAgIFNvdXJjZUVsZW1lbnRzTm9kZShTdGF0ZW1lbnROb2Rl
ICpzMSk7Ci0gICAgU291cmNlRWxlbWVudHNOb2RlKFNvdXJjZUVsZW1lbnRzTm9kZSAqczEsIFN0
YXRlbWVudE5vZGUgKnMyKTsKLSAgICAKLSAgICBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRl
ICpleGVjKTsKLSAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUgKmV4ZWMpOwotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKLSAgICBQYXNzUmVmUHRy
PFNvdXJjZUVsZW1lbnRzTm9kZT4gcmVsZWFzZU5leHQoKSB7IHJldHVybiBuZXh0LnJlbGVhc2Uo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCk7Ci0gIHByaXZhdGU6Ci0gICAgZnJp
ZW5kIGNsYXNzIEJsb2NrTm9kZTsKLSAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gbm9kZTsKLSAg
ICBMaXN0UmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4gbmV4dDsKLSAgfTsKLQogICBjbGFzcyBQ
cm9ncmFtTm9kZSA6IHB1YmxpYyBGdW5jdGlvbkJvZHlOb2RlIHsKICAgcHVibGljOgogICAgIFBy
b2dyYW1Ob2RlKFNvdXJjZUVsZW1lbnRzTm9kZSAqcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6655</attachid>
            <date>2006-02-21 20:03:02 -0800</date>
            <delta_ts>2006-02-22 00:26:12 -0800</delta_ts>
            <desc>patch w/formatting to match current guidelines</desc>
            <filename>patch-inline.txt</filename>
            <type>text/plain</type>
            <size>10694</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEyOTMw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDYtMDIt
MjEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIElubGluZWQgc29tZSBmdW5jdGlvbnMg
U2hhcmsgc3VnZ2VzdGVkIC0tIDIuMSUgZ2FpbiBvbiBKUyBpQmVuY2guCisKKyAgICAgICAgKiBr
anMvZnVuY3Rpb24uY3BwOgorICAgICAgICAqIGtqcy9mdW5jdGlvbi5oOgorICAgICAgICAoS0pT
OjpBY3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAg
ICAgICoga2pzL2ludGVybmFsLmg6CisgICAgICAgIChLSlM6OlN0cmluZ0ltcDo6dG9TdHJpbmcp
OgorICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgICoga2pzL25vZGVzLmg6CisgICAg
ICAgIChLSlM6OkFyZ3VtZW50c05vZGU6OmV2YWx1YXRlTGlzdCk6CisgICAgICAgIChLSlM6OlNv
dXJjZUVsZW1lbnRzTm9kZTo6cmVsZWFzZU5leHQpOgorICAgICAgICAoS0pTOjpCbG9ja05vZGU6
OnByb2Nlc3NWYXJEZWNscyk6CisgICAgICAgICoga2pzL29iamVjdC5jcHA6CisgICAgICAgICog
a2pzL29iamVjdC5oOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6dG9QcmltaXRpdmUpOgorICAg
ICAgICAqIGtqcy91c3RyaW5nLmNwcDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAg
ICAoS0pTOjpVU3RyaW5nOjpvcGVyYXRvcj0pOgorICAgICAgICAoS0pTOjpVU3RyaW5nOjp0b0Fy
cmF5SW5kZXgpOgorICAgICAgICAqIGtqcy92YWx1ZS5jcHA6CisgICAgICAgICoga2pzL3ZhbHVl
Lmg6CisgICAgICAgIChLSlM6OkpTVmFsdWU6OnRvT2JqZWN0KToKKwogMjAwNi0wMi0yMSAgRXJp
YyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBnZ2Fy
ZW4uCkluZGV4OiBranMvaW50ZXJuYWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9pbnRlcm5hbC5j
cHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL2ludGVybmFsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsMTEgKzkxLDYgQEAgZG91YmxlIFN0cmluZ0ltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICop
IAogICByZXR1cm4gdmFsLnRvRG91YmxlKCk7CiB9CiAKLVVTdHJpbmcgU3RyaW5nSW1wOjp0b1N0
cmluZyhFeGVjU3RhdGUgKikgY29uc3QKLXsKLSAgcmV0dXJuIHZhbDsKLX0KLQogSlNPYmplY3Qg
KlN0cmluZ0ltcDo6dG9PYmplY3QoRXhlY1N0YXRlICpleGVjKSBjb25zdAogewogICAgIHJldHVy
biBuZXcgU3RyaW5nSW5zdGFuY2UoZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5T
dHJpbmdQcm90b3R5cGUoKSwgdmFsKTsKSW5kZXg6IGtqcy92YWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga2pzL3ZhbHVlLmNwcAkocmV2aXNpb24gMTI5MzApCisrKyBranMvdmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsMTEgKzExNSw2IEBAIHVpbnQxNl90IEpTVmFsdWU6OnRvVUludDE2
KEV4ZWNTdGF0ZSAqZXgKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGQxNik7CiB9
CiAKLUpTT2JqZWN0ICpKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRl
Ojp0b09iamVjdCh0aGlzLCBleGVjKSA6IGRvd25jYXN0KCktPnRvT2JqZWN0KGV4ZWMpOwotfQot
CiBib29sIEpTQ2VsbDo6Z2V0TnVtYmVyKGRvdWJsZSAmbnVtZXJpY1ZhbHVlKSBjb25zdAogewog
ICAgIGlmICghaXNOdW1iZXIoKSkKSW5kZXg6IGtqcy9mdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGtqcy9mdW5jdGlvbi5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9mdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDE1IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIG11dGFi
bGUgQXJndW1lbnRzICpfYXJndW1lbnRzT2JqZWN0OwogICB9OwogCisgIGlubGluZSB2b2lkIEFj
dGl2YXRpb25JbXA6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKQorICB7CisgICAgICAvLyBUaGVyZSdz
IG5vIHdheSB0aGF0IGFuIGFjdGl2YXRpb24gb2JqZWN0IGNhbiBoYXZlIGEgcHJvdG90eXBlIG9y
IGdldHRlci9zZXR0ZXIgcHJvcGVydGllcworICAgICAgYXNzZXJ0KCFfcHJvcC5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpOworICAgICAgYXNzZXJ0KHByb3RvdHlwZSgpID09IGpzTnVsbCgp
KTsKKyAgICAgIAorICAgICAgX3Byb3AucHV0KHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsIChh
dHRyID09IE5vbmUgfHwgYXR0ciA9PSBEb250RGVsZXRlKSk7CisgIH0KKyAgCiAgIGNsYXNzIEds
b2JhbEZ1bmNJbXAgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbkltcCB7CiAgIHB1YmxpYzoKICAg
ICBHbG9iYWxGdW5jSW1wKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKiwgaW50IGksIGlu
dCBsZW4sIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IGtqcy9vYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtqcy9vYmplY3QuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9vYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTEgKzUwMCw2IEBAIFJlZmVyZW5jZUxpc3QgSlNPYmpl
Y3Q6OnByb3BMaXN0KEV4ZWNTdGEKICAgcmV0dXJuIGxpc3Q7CiB9CiAKLUpTVmFsdWUgKkpTT2Jq
ZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWRUeXBlKSBj
b25zdAotewotICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMscHJlZmVycmVkVHlwZSk7Ci19Ci0K
IGJvb2wgSlNPYmplY3Q6OnRvQm9vbGVhbihFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAogewog
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IGtqcy9pbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9p
bnRlcm5hbC5oCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9pbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpTVmFsdWUgKnRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSAqZXhlYywgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlw
ZSkgY29uc3Q7CiAgICAgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlICpleGVjKSBjb25zdDsKICAg
ICBkb3VibGUgdG9OdW1iZXIoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKLSAgICBVU3RyaW5nIHRv
U3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CisgICAgVVN0cmluZyB0b1N0cmluZyhFeGVj
U3RhdGUgKmV4ZWMpIGNvbnN0IHsgcmV0dXJuIHZhbDsgfQogICAgIEpTT2JqZWN0ICp0b09iamVj
dChFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogCiAgIHByaXZhdGU6CkluZGV4OiBranMvdmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvdmFsdWUuaAkocmV2aXNpb24gMTI5MzApCisrKyBranMvdmFs
dWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4NiwxMSBAQCBpbmxpbmUgVVN0cmluZyBK
U1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhCiAgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVk
aWF0ZSh0aGlzKSA/IEpTSW1tZWRpYXRlOjp0b1N0cmluZyh0aGlzKSA6IGRvd25jYXN0KCktPnRv
U3RyaW5nKGV4ZWMpOwogfQogCitpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICByZXR1cm4gSlNJbW1lZGlhdGU6OmlzSW1tZWRp
YXRlKHRoaXMpID8gSlNJbW1lZGlhdGU6OnRvT2JqZWN0KHRoaXMsIGV4ZWMpIDogZG93bmNhc3Qo
KS0+dG9PYmplY3QoZXhlYyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBLSlNf
VkFMVUVfSApJbmRleDoga2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvZnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9mdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyNCwxNSArNTI0LDYgQEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpkZWxldGVQcm9wZXJ0
eShFeGVjUwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVy
dHlOYW1lKTsKIH0KIAotdm9pZCBBY3RpdmF0aW9uSW1wOjpwdXQoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cikK
LXsKLSAgLy8gVGhlcmUncyBubyB3YXkgdGhhdCBhbiBhY3RpdmF0aW9uIG9iamVjdCBjYW4gaGF2
ZSBhIHByb3RvdHlwZSBvciBnZXR0ZXIvc2V0dGVyIHByb3BlcnRpZXMKLSAgYXNzZXJ0KCFfcHJv
cC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwotICBhc3NlcnQocHJvdG90eXBlKCkgPT0g
anNOdWxsKCkpOwotCi0gIF9wcm9wLnB1dChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAoYXR0
ciA9PSBOb25lIHx8IGF0dHIgPT0gRG9udERlbGV0ZSkpOwotfQotCiB2b2lkIEFjdGl2YXRpb25J
bXA6Om1hcmsoKQogewogICAgIGlmIChfZnVuY3Rpb24gJiYgIV9mdW5jdGlvbi0+bWFya2VkKCkp
IApJbmRleDoga2pzL3VzdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvdXN0cmluZy5oCShyZXZp
c2lvbiAxMjkzMCkKKysrIGtqcy91c3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyMiw2ICs1
MjIsMjIgQEAgaW5saW5lIFVTdHJpbmc6OlVTdHJpbmcoKQogewogfQogCitpbmxpbmUgVVN0cmlu
ZyYgVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IFVTdHJpbmcmIHN0cikKK3sKKyAgICBtX3JlcCA9
IHN0ci5tX3JlcDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKKy8vIFJ1bGUgZnJvbSBFQ01BIDE1
LjIgYWJvdXQgd2hhdCBhbiBhcnJheSBpbmRleCBpcy4KKy8vIE11c3QgZXhhY3RseSBtYXRjaCBz
dHJpbmcgZm9ybSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhbmQgYmUgbGVzcyB0aGFuIDJeMzIg
LSAxLgoraW5saW5lIHVuc2lnbmVkIFVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICpvaykgY29u
c3QKK3sKKyAgICB1bnNpZ25lZCBpID0gdG9TdHJpY3RVSW50MzIob2spOworICAgIGlmIChvayAm
JiBpID49IDB4RkZGRkZGRkZVKQorICAgICAgICAqb2sgPSBmYWxzZTsKKyAgICByZXR1cm4gaTsK
K30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBranMvbm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL25vZGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDk4LDE1ICs0OTgsNiBAQCBKU1ZhbHVlICpBcmd1bWVudHNO
b2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVybiAwOyAvLyBkdW1teSwgc2VlIGV2YWx1YXRl
TGlzdCgpCiB9CiAKLS8vIEVDTUEgMTEuMi40Ci1MaXN0IEFyZ3VtZW50c05vZGU6OmV2YWx1YXRl
TGlzdChFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGlmICghbGlzdCkKLSAgICByZXR1cm4gTGlzdCgp
OwotCi0gIHJldHVybiBsaXN0LT5ldmFsdWF0ZUxpc3QoZXhlYyk7Ci19Ci0KIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMi4yCkBAIC0xNjI2LDEyICsxNjE3LDYgQEAgQ29t
cGxldGlvbiBCbG9ja05vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICByZXR1cm4gc291cmNlLT5l
eGVjdXRlKGV4ZWMpOwogfQogCi12b2lkIEJsb2NrTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSAqZXhlYykKLXsKLSAgaWYgKHNvdXJjZSkKLSAgICBzb3VyY2UtPnByb2Nlc3NWYXJEZWNs
cyhleGVjKTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVtcHR5U3Rh
dGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMi4zCklu
ZGV4OiBranMvb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL29iamVjdC5oCShyZXZpc2lvbiAx
MjkzMCkKKysrIGtqcy9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSwxMSBA
QCBpbmxpbmUgdm9pZCBTY29wZUNoYWluOjptYXJrKCkKICAgICB9CiB9CiAKK2lubGluZSBKU1Zh
bHVlKiBKU09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUgcHJlZmVy
cmVkVHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlKGV4ZWMsIHByZWZlcnJl
ZFR5cGUpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gS0pTX09CSkVDVF9ICklu
ZGV4OiBranMvdXN0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL3VzdHJpbmcuY3BwCShyZXZp
c2lvbiAxMjkzMCkKKysrIGtqcy91c3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDEy
ICs4MzcsNiBAQCBVU3RyaW5nICZVU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgY2hhciAqCiAgIHJl
dHVybiAqdGhpczsKIH0KIAotVVN0cmluZyAmVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IFVTdHJp
bmcgJnN0cikKLXsKLSAgbV9yZXAgPSBzdHIubV9yZXA7Ci0gIHJldHVybiAqdGhpczsKLX0KLQog
Ym9vbCBVU3RyaW5nOjppczhCaXQoKSBjb25zdAogewogICBjb25zdCBVQ2hhciAqdSA9IGRhdGEo
KTsKQEAgLTEwMjQsMTYgKzEwMTgsNiBAQCB1aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJbnQz
Mihib29sICpvCiAgIH0KIH0KIAotLy8gUnVsZSBmcm9tIEVDTUEgMTUuMiBhYm91dCB3aGF0IGFu
IGFycmF5IGluZGV4IGlzLgotLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFu
IHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCi11bnNpZ25lZCBV
U3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqb2spIGNvbnN0Ci17Ci0gIHVuc2lnbmVkIGkgPSB0
b1N0cmljdFVJbnQzMihvayk7Ci0gIGlmIChpID49IDB4RkZGRkZGRkZVICYmIG9rKQotICAgICpv
ayA9IGZhbHNlOwotICByZXR1cm4gaTsKLX0KLQogaW50IFVTdHJpbmc6OmZpbmQoY29uc3QgVVN0
cmluZyAmZiwgaW50IHBvcykgY29uc3QKIHsKICAgaW50IHN6ID0gc2l6ZSgpOwpJbmRleDoga2pz
L25vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL25vZGVzLmgJKHJldmlzaW9uIDEyOTMwKQorKysg
a2pzL25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICszNTgsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICBBcmd1bWVudHNOb2RlKEFyZ3VtZW50TGlzdE5vZGUgKmwpCiAgICAgICA6IGxp
c3QobC0+bmV4dCkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShsaXN0LmdldCgpKTsgbC0+bmV4
dCA9IDA7IH0KICAgICBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpOwotICAgIExp
c3QgZXZhbHVhdGVMaXN0KEV4ZWNTdGF0ZSAqZXhlYyk7CisgICAgLy8gRUNNQSAxMS4yLjQKKyAg
ICBMaXN0IGV2YWx1YXRlTGlzdChFeGVjU3RhdGUgKmV4ZWMpIHsgcmV0dXJuIGxpc3QgPyBsaXN0
LT5ldmFsdWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJndW1l
bnRMaXN0Tm9kZT4gbGlzdDsKQEAgLTgwOCw2ICs4MDksMjYgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgUmVmUHRyPFZhckRlY2xMaXN0Tm9kZT4gbmV4dDsKICAgfTsKIAorICAvLyBBIGxpbmtlZCBs
aXN0IG9mIHNvdXJjZSBlbGVtZW50IG5vZGVzCisgIGNsYXNzIFNvdXJjZUVsZW1lbnRzTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKKyAgcHVibGljOgorICAgICAgc3RhdGljIGludCBjb3Vu
dDsKKyAgICAgIC8vIGxpc3QgcG9pbnRlciBpcyB0YWlsIG9mIGEgY2lyY3VsYXIgbGlzdCwgY3Jh
Y2tlZCBpbiB0aGUgQmxvY2tOb2RlIChvciBzdWJjbGFzcykgY3RvcgorICAgICAgU291cmNlRWxl
bWVudHNOb2RlKFN0YXRlbWVudE5vZGUgKnMxKTsKKyAgICAgIFNvdXJjZUVsZW1lbnRzTm9kZShT
b3VyY2VFbGVtZW50c05vZGUgKnMxLCBTdGF0ZW1lbnROb2RlICpzMik7CisgICAgICAKKyAgICAg
IENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpOworICAgICAgdm9pZCBwcm9jZXNz
RnVuY0RlY2woRXhlY1N0YXRlICpleGVjKTsKKyAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFy
RGVjbHMoRXhlY1N0YXRlICpleGVjKTsKKyAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0OworICAgICAgUGFzc1JlZlB0cjxTb3VyY2VFbGVtZW50c05vZGU+
IHJlbGVhc2VOZXh0KCkgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KKyAgICAgIHZpcnR1YWwg
dm9pZCBicmVha0N5Y2xlKCk7CisgIHByaXZhdGU6CisgICAgICBmcmllbmQgY2xhc3MgQmxvY2tO
b2RlOworICAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IG5vZGU7CisgICAgICBMaXN0UmVmUHRy
PFNvdXJjZUVsZW1lbnRzTm9kZT4gbmV4dDsKKyAgfTsKKyAgCiAgIGNsYXNzIEJsb2NrTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGljOgogICAgIEJsb2NrTm9kZShTb3VyY2VF
bGVtZW50c05vZGUgKnMpOwpAQCAtODE4LDYgKzgzOSwxMiBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBSZWZQdHI8U291cmNlRWxlbWVudHNOb2RlPiBzb3VyY2U7CiAgIH07CiAKKyAgaW5saW5lIHZv
aWQgQmxvY2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKiBleGVjKQorICB7CisgICAg
ICBpZiAoc291cmNlKQorICAgICAgICAgIHNvdXJjZS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwor
ICB9CisgIAogICBjbGFzcyBFbXB0eVN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgIHB1YmxpYzoKICAgICBFbXB0eVN0YXRlbWVudE5vZGUoKSB7IH0gLy8gZGVidWcKQEAg
LTEwODcsMjYgKzExMTQsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gYm9keTsKICAgfTsKIAotICAvLyBBIGxpbmtlZCBsaXN0IG9mIHNvdXJjZSBlbGVt
ZW50IG5vZGVzCi0gIGNsYXNzIFNvdXJjZUVsZW1lbnRzTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlIHsKLSAgcHVibGljOgotICAgICAgc3RhdGljIGludCBjb3VudDsKLSAgICAvLyBsaXN0IHBv
aW50ZXIgaXMgdGFpbCBvZiBhIGNpcmN1bGFyIGxpc3QsIGNyYWNrZWQgaW4gdGhlIEJsb2NrTm9k
ZSAob3Igc3ViY2xhc3MpIGN0b3IKLSAgICBTb3VyY2VFbGVtZW50c05vZGUoU3RhdGVtZW50Tm9k
ZSAqczEpOwotICAgIFNvdXJjZUVsZW1lbnRzTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMxLCBT
dGF0ZW1lbnROb2RlICpzMik7Ci0gICAgCi0gICAgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0
ZSAqZXhlYyk7Ci0gICAgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYyk7Ci0gICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3Q7Ci0gICAgUGFzc1JlZlB0
cjxTb3VyY2VFbGVtZW50c05vZGU+IHJlbGVhc2VOZXh0KCkgeyByZXR1cm4gbmV4dC5yZWxlYXNl
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpOwotICBwcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBCbG9ja05vZGU7Ci0gICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IG5vZGU7Ci0g
ICAgTGlzdFJlZlB0cjxTb3VyY2VFbGVtZW50c05vZGU+IG5leHQ7Ci0gIH07Ci0KICAgY2xhc3Mg
UHJvZ3JhbU5vZGUgOiBwdWJsaWMgRnVuY3Rpb25Cb2R5Tm9kZSB7CiAgIHB1YmxpYzoKICAgICBQ
cm9ncmFtTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6660</attachid>
            <date>2006-02-22 00:25:41 -0800</date>
            <delta_ts>2006-02-22 09:35:13 -0800</delta_ts>
            <desc>patch to address comments and add a few more inlines</desc>
            <filename>patch-inline.txt</filename>
            <type>text/plain</type>
            <size>7194</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IGt4bWxjb3JlL0Zhc3RNYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGt4bWxjb3JlL0Zh
c3RNYWxsb2MuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGt4bWxjb3JlL0Zhc3RNYWxsb2MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NzUsMTMgKzk3NSwxMyBAQCBjbGFzcyBUQ01hbGxvY19UaHJl
YWRDYWNoZV9GcmVlTGlzdCB7CiAgIGludCBsb3d3YXRlcm1hcmsoKSBjb25zdCB7IHJldHVybiBs
b3dhdGVyXzsgfQogICB2b2lkIGNsZWFyX2xvd3dhdGVybWFyaygpIHsgbG93YXRlcl8gPSBsZW5n
dGhfOyB9CiAKLSAgdm9pZCBQdXNoKHZvaWQqIHB0cikgeworICBBTFdBWVNfSU5MSU5FIHZvaWQg
UHVzaCh2b2lkKiBwdHIpIHsKICAgICAqKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihwdHIpKSA9
IGxpc3RfOwogICAgIGxpc3RfID0gcHRyOwogICAgIGxlbmd0aF8rKzsKICAgfQogCi0gIHZvaWQq
IFBvcCgpIHsKKyAgQUxXQVlTX0lOTElORSB2b2lkKiBQb3AoKSB7CiAgICAgQVNTRVJUKGxpc3Rf
ICE9IE5VTEwpOwogICAgIHZvaWQqIHJlc3VsdCA9IGxpc3RfOwogICAgIGxpc3RfID0gKihyZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4ocmVzdWx0KSk7CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjkzMSkKKysrIENoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDA2LTAyLSMjICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgLSBJbmxpbmUgc29tZSBmdW5jdGlvbnMgc3VnZ2VzdGVkIGJ5IFNoYXJrLiAyLjklIHNw
ZWVkdXAgb24gc3VwZXIKKyAgICAgICAgYWNjdXJhdGUgSlMgaUJlbmNoLgorCisgICAgICAgICog
a2pzL25vZGVzLmg6CisgICAgICAgIChLSlM6OkFyZ3VtZW50c05vZGU6OmV2YWx1YXRlTGlzdCk6
CisgICAgICAgICoga2pzL29iamVjdC5jcHA6CisgICAgICAgICoga2pzL29iamVjdC5oOgorICAg
ICAgICAoS0pTOjpTY29wZUNoYWluOjpyZWxlYXNlKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6
OnRvUHJpbWl0aXZlKToKKyAgICAgICAgKiBranMvc2NvcGVfY2hhaW4uY3BwOgorICAgICAgICAq
IGtqcy91c3RyaW5nLmNwcDoKKyAgICAgICAgKiBranMvdXN0cmluZy5oOgorICAgICAgICAoS0pT
OjpVU3RyaW5nOjp0b0FycmF5SW5kZXgpOgorICAgICAgICAqIGtqcy92YWx1ZS5jcHA6CisgICAg
ICAgICoga2pzL3ZhbHVlLmg6CisgICAgICAgIChLSlM6OkpTVmFsdWU6OnRvT2JqZWN0KToKKyAg
ICAgICAgKiBreG1sY29yZS9GYXN0TWFsbG9jLmNwcDoKKyAgICAgICAgKEtYTUxDb3JlOjpUQ01h
bGxvY19UaHJlYWRDYWNoZV9GcmVlTGlzdDo6UHVzaCk6CisgICAgICAgIChLWE1MQ29yZTo6VENN
YWxsb2NfVGhyZWFkQ2FjaGVfRnJlZUxpc3Q6OlBvcCk6CisKIDIwMDYtMDItMjEgIEVyaWMgU2Vp
ZGVsICA8ZXNlaWRlbEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgZ2dhcmVuLgpJ
bmRleDoga2pzL3Njb3BlX2NoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvc2NvcGVfY2hhaW4u
Y3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9zY29wZV9jaGFpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDE3ICszNCw0IEBAIHZvaWQgU2NvcGVDaGFpbjo6cHVzaChjb25zdCBTY29wZUNo
YWluICYKICAgICB9CiB9CiAKLXZvaWQgU2NvcGVDaGFpbjo6cmVsZWFzZSgpCi17Ci0gICAgLy8g
VGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBieSBkZXJlZigpLAotICAgIC8vIERlcmVmIGVu
c3VyZXMgdGhlc2UgY29uZGl0aW9ucyBhcmUgdHJ1ZS4KLSAgICBhc3NlcnQoX25vZGUgJiYgX25v
ZGUtPnJlZkNvdW50ID09IDApOwotICAgIFNjb3BlQ2hhaW5Ob2RlICpuID0gX25vZGU7Ci0gICAg
ZG8gewotICAgICAgICBTY29wZUNoYWluTm9kZSAqbmV4dCA9IG4tPm5leHQ7Ci0gICAgICAgIGRl
bGV0ZSBuOwotICAgICAgICBuID0gbmV4dDsKLSAgICB9IHdoaWxlIChuICYmIC0tbi0+cmVmQ291
bnQgPT0gMCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRleDoga2pzL3ZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBranMvdmFsdWUuY3BwCShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy92YWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDYgQEAgdWludDE2X3QgSlNWYWx1
ZTo6dG9VSW50MTYoRXhlY1N0YXRlICpleAogICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZf
dD4oZDE2KTsKIH0KIAotSlNPYmplY3QgKkpTVmFsdWU6OnRvT2JqZWN0KEV4ZWNTdGF0ZSAqZXhl
YykgY29uc3QKLXsKLSAgICByZXR1cm4gSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHRoaXMpID8g
SlNJbW1lZGlhdGU6OnRvT2JqZWN0KHRoaXMsIGV4ZWMpIDogZG93bmNhc3QoKS0+dG9PYmplY3Qo
ZXhlYyk7Ci19Ci0KIGJvb2wgSlNDZWxsOjpnZXROdW1iZXIoZG91YmxlICZudW1lcmljVmFsdWUp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc051bWJlcigpKQpJbmRleDoga2pzL29iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL29iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMCwxMSArNTAwLDYgQEAgUmVmZXJlbmNlTGlzdCBK
U09iamVjdDo6cHJvcExpc3QoRXhlY1N0YQogICByZXR1cm4gbGlzdDsKIH0KIAotSlNWYWx1ZSAq
SlNPYmplY3Q6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqZXhlYywgSlNUeXBlIHByZWZlcnJlZFR5
cGUpIGNvbnN0Ci17Ci0gIHJldHVybiBkZWZhdWx0VmFsdWUoZXhlYyxwcmVmZXJyZWRUeXBlKTsK
LX0KLQogYm9vbCBKU09iamVjdDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0
CiB7CiAgIHJldHVybiB0cnVlOwpJbmRleDoga2pzL3ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L3ZhbHVlLmgJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL3ZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4Niw2ICszODYsMTEgQEAgaW5saW5lIFVTdHJpbmcgSlNWYWx1ZTo6dG9TdHJpbmcoRXhl
Y1N0YQogICAgIHJldHVybiBKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUodGhpcykgPyBKU0ltbWVk
aWF0ZTo6dG9TdHJpbmcodGhpcykgOiBkb3duY2FzdCgpLT50b1N0cmluZyhleGVjKTsKIH0KIAor
aW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh0aGlzKSA/IEpTSW1tZWRp
YXRlOjp0b09iamVjdCh0aGlzLCBleGVjKSA6IGRvd25jYXN0KCktPnRvT2JqZWN0KGV4ZWMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gS0pTX1ZBTFVFX0gKSW5kZXg6IGtqcy91
c3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL3VzdHJpbmcuaAkocmV2aXNpb24gMTI5MzApCisr
KyBranMvdXN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICogQXNzaWdubWVudCBvcGVyYXRvci4KICAgICAgKi8KICAgICBVU3Ry
aW5nICZvcGVyYXRvcj0oY29uc3QgY2hhciAqYyk7Ci0gICAgVVN0cmluZyAmb3BlcmF0b3I9KGNv
bnN0IFVTdHJpbmcgJik7CiAgICAgLyoqCiAgICAgICogQXBwZW5kcyB0aGUgc3BlY2lmaWVkIHN0
cmluZy4KICAgICAgKi8KQEAgLTUyMiw2ICs1MjEsMTYgQEAgaW5saW5lIFVTdHJpbmc6OlVTdHJp
bmcoKQogewogfQogCisvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJyYXkg
aW5kZXggaXMuCisvLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3RyaW5nIGZvcm0gb2YgYW4gdW5zaWdu
ZWQgaW50ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0gMS4KK2lubGluZSB1bnNpZ25lZCBV
U3RyaW5nOjp0b0FycmF5SW5kZXgoYm9vbCAqb2spIGNvbnN0Cit7CisgICAgdW5zaWduZWQgaSA9
IHRvU3RyaWN0VUludDMyKG9rKTsKKyAgICBpZiAob2sgJiYgaSA+PSAweEZGRkZGRkZGVSkKKyAg
ICAgICAgKm9rID0gZmFsc2U7CisgICAgcmV0dXJuIGk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAK
ICNlbmRpZgpJbmRleDoga2pzL25vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuY3Bw
CShyZXZpc2lvbiAxMjkzMCkKKysrIGtqcy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
OCwxNSArNDk4LDYgQEAgSlNWYWx1ZSAqQXJndW1lbnRzTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YQog
ICByZXR1cm4gMDsgLy8gZHVtbXksIHNlZSBldmFsdWF0ZUxpc3QoKQogfQogCi0vLyBFQ01BIDEx
LjIuNAotTGlzdCBBcmd1bWVudHNOb2RlOjpldmFsdWF0ZUxpc3QoRXhlY1N0YXRlICpleGVjKQot
ewotICBpZiAoIWxpc3QpCi0gICAgcmV0dXJuIExpc3QoKTsKLQotICByZXR1cm4gbGlzdC0+ZXZh
bHVhdGVMaXN0KGV4ZWMpOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
TmV3RXhwck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01B
IDExLjIuMgpJbmRleDoga2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9vYmplY3QuaAko
cmV2aXNpb24gMTI5MzApCisrKyBranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw2
ICs2ODEsMjQgQEAgaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6bWFyaygpCiAgICAgfQogfQogCitp
bmxpbmUgdm9pZCBTY29wZUNoYWluOjpyZWxlYXNlKCkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIG9ubHkgY2FsbGVkIGJ5IGRlcmVmKCksCisgICAgLy8gRGVyZWYgZW5zdXJlcyB0aGVzZSBj
b25kaXRpb25zIGFyZSB0cnVlLgorICAgIGFzc2VydChfbm9kZSAmJiBfbm9kZS0+cmVmQ291bnQg
PT0gMCk7CisgICAgU2NvcGVDaGFpbk5vZGUgKm4gPSBfbm9kZTsKKyAgICBkbyB7CisgICAgICAg
IFNjb3BlQ2hhaW5Ob2RlICpuZXh0ID0gbi0+bmV4dDsKKyAgICAgICAgZGVsZXRlIG47CisgICAg
ICAgIG4gPSBuZXh0OworICAgIH0gd2hpbGUgKG4gJiYgLS1uLT5yZWZDb3VudCA9PSAwKTsKK30K
KworaW5saW5lIEpTVmFsdWUqIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBkZWZhdWx0VmFsdWUo
ZXhlYywgcHJlZmVycmVkVHlwZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBL
SlNfT0JKRUNUX0gKSW5kZXg6IGtqcy91c3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvdXN0
cmluZy5jcHAJKHJldmlzaW9uIDEyOTMwKQorKysga2pzL3VzdHJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MzcsMTIgKzgzNyw2IEBAIFVTdHJpbmcgJlVTdHJpbmc6Om9wZXJhdG9yPShjb25z
dCBjaGFyICoKICAgcmV0dXJuICp0aGlzOwogfQogCi1VU3RyaW5nICZVU3RyaW5nOjpvcGVyYXRv
cj0oY29uc3QgVVN0cmluZyAmc3RyKQotewotICBtX3JlcCA9IHN0ci5tX3JlcDsKLSAgcmV0dXJu
ICp0aGlzOwotfQotCiBib29sIFVTdHJpbmc6OmlzOEJpdCgpIGNvbnN0CiB7CiAgIGNvbnN0IFVD
aGFyICp1ID0gZGF0YSgpOwpAQCAtMTAyNCwxNiArMTAxOCw2IEBAIHVpbnQzMl90IFVTdHJpbmc6
OnRvU3RyaWN0VUludDMyKGJvb2wgKm8KICAgfQogfQogCi0vLyBSdWxlIGZyb20gRUNNQSAxNS4y
IGFib3V0IHdoYXQgYW4gYXJyYXkgaW5kZXggaXMuCi0vLyBNdXN0IGV4YWN0bHkgbWF0Y2ggc3Ry
aW5nIGZvcm0gb2YgYW4gdW5zaWduZWQgaW50ZWdlciwgYW5kIGJlIGxlc3MgdGhhbiAyXjMyIC0g
MS4KLXVuc2lnbmVkIFVTdHJpbmc6OnRvQXJyYXlJbmRleChib29sICpvaykgY29uc3QKLXsKLSAg
dW5zaWduZWQgaSA9IHRvU3RyaWN0VUludDMyKG9rKTsKLSAgaWYgKGkgPj0gMHhGRkZGRkZGRlUg
JiYgb2spCi0gICAgKm9rID0gZmFsc2U7Ci0gIHJldHVybiBpOwotfQotCiBpbnQgVVN0cmluZzo6
ZmluZChjb25zdCBVU3RyaW5nICZmLCBpbnQgcG9zKSBjb25zdAogewogICBpbnQgc3ogPSBzaXpl
KCk7CkluZGV4OiBranMvbm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvbm9kZXMuaAkocmV2aXNp
b24gMTI5MzApCisrKyBranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDcgKzM1OCw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEFyZ3VtZW50c05vZGUoQXJndW1lbnRMaXN0Tm9kZSAq
bCkKICAgICAgIDogbGlzdChsLT5uZXh0KSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3Qu
Z2V0KCkpOyBsLT5uZXh0ID0gMDsgfQogICAgIEpTVmFsdWUgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAq
ZXhlYyk7Ci0gICAgTGlzdCBldmFsdWF0ZUxpc3QoRXhlY1N0YXRlICpleGVjKTsKKyAgICBMaXN0
IGV2YWx1YXRlTGlzdChFeGVjU3RhdGUgKmV4ZWMpIHsgcmV0dXJuIGxpc3QgPyBsaXN0LT5ldmFs
dWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8QXJndW1lbnRMaXN0
Tm9kZT4gbGlzdDsK
</data>
<flag name="review"
          id="1675"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>