<?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>20180</bug_id>
          
          <creation_ts>2008-07-26 12:35:03 -0700</creation_ts>
          <short_desc>Matching :nth-child selectors is slow</short_desc>
          <delta_ts>2008-09-15 23:16:10 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://webkit.org/perf/slickspeed</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Smith">catfish.man</reporter>
          <assigned_to name="David Smith">catfish.man</assigned_to>
          <cc>ap</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87003</commentid>
    <comment_count>0</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-07-26 12:35:03 -0700</bug_when>
    <thetext>Firefox numbers (nightly build downloaded July 26th): 
div:nth-child(even)	25 ms | 106 found
div:nth-child(2n)	        26 ms | 106 found
div:nth-child(odd)	26 ms | 137 found
div:nth-child(2n+1)	26 ms | 137 found
div:nth-child(n)	        27 ms | 243 found

WebKit numbers (r35363 + patch to fix id optimization)
div:nth-child(even)	37 ms | 106 found
div:nth-child(2n)	        66 ms | 106 found
div:nth-child(odd)	38 ms | 137 found
div:nth-child(2n+1)	61 ms | 137 found
div:nth-child(n)	        54 ms | 243 found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90484</commentid>
    <comment_count>1</comment_count>
      <attachid>23244</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-08 03:08:41 -0700</bug_when>
    <thetext>Created attachment 23244
Exploratory patch

This patch caches the results of parsing the an+b expression in CSSSelector. The upside is obvious, the downside is that it adds two ints and a 1 bit flag (which should fit in the leftover bit from the enums) to CSSSelector. Please ignore lack of changelog, tabs, etc... this is just a &quot;hey it&apos;s 1 AM and this sounds interesting&quot; patch.

Suggestions on ways to avoid increasing the size of CSSSelector are welcome, although the comments indicate that it may be tricky/impossible :/

New numbers (same machine, but now based on r36246)

div:nth-child(even)	36 ms | 106 found
div:nth-child(2n)	36 ms | 106 found
div:nth-child(odd)	37 ms | 137 found
div:nth-child(2n+1)	36 ms | 137 found
div:nth-child(n)	39 ms | 243 found</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90811</commentid>
    <comment_count>2</comment_count>
      <attachid>23333</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-10 19:22:26 -0700</bug_when>
    <thetext>Created attachment 23333
Another unsatisfactory but working patch

This is about a 10% speedup for :nth-child on slickspeed. Unfortunately, it&apos;s basically just manually inlining part of Node::renderStyle(). The correct solution is to make renderStyle() non-virtual and have it call a virtual function only in the uncommon case, but for reasons unknown that doesn&apos;t speed things up. Attempts to inline it (which presumably would speed things up as this does) have run into circular include issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90821</commentid>
    <comment_count>3</comment_count>
      <attachid>23336</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-10 22:54:59 -0700</bug_when>
    <thetext>Created attachment 23336
Better patch

Thanks to some suggestions from Maciej, this avoids having to do the silly manual inlining thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90822</commentid>
    <comment_count>4</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-10 22:58:09 -0700</bug_when>
    <thetext>Oops, forgot to add this: http://dscoder.com/renderstylebenchmark.html is a tiny qsa benchmark that I&apos;ve been using to check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90825</commentid>
    <comment_count>5</comment_count>
      <attachid>23337</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-10 23:50:32 -0700</bug_when>
    <thetext>Created attachment 23337
Addresses a few pseudoreview comments

Ordered includes, and made a blind but hopefully correct attempt to update the windows project file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90835</commentid>
    <comment_count>6</comment_count>
      <attachid>23341</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-11 01:34:13 -0700</bug_when>
    <thetext>Created attachment 23341
Cache an+b parsing

This avoids the size hit on CSSSelector by making an :nth-* specific subclass that handles the caching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90873</commentid>
    <comment_count>7</comment_count>
      <attachid>23337</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-11 10:32:46 -0700</bug_when>
    <thetext>Comment on attachment 23337
Addresses a few pseudoreview comments

This is a great fix!

+    virtual RenderStyle* privateRenderStyle() const;

In other places I&apos;ve called this sort of function virtualXXX, such as virtualFirstChild. But also, this function isn&apos;t really just a private renderStyle() function. It&apos;s specifically renderStyle() when m_renderer is 0. I&apos;d suggest a name more like nonRendererRenderStyle().

I&apos;m a little sad that we have to add a whole header just for a single function. Is there a better name for that header that could allow us to use it for more things in the future? It&apos;s not scalable to have a separate header for each function.

+    virtual RenderStyle* privateRenderStyle() const { return m_style; }
     String m_value;

I&apos;d like to see a blank line here between the functions and data members.

It&apos;s not so great to have these virtual functions defined in the class definition. There&apos;s no reason to inline them.

It&apos;s a little strange to have this 10% speedup be a patch on a bug saying &quot;Firefox is faster&quot;. I&apos;d prefer to not have bugs where the titles are are literally about competitive comparisons, although I think it&apos;s great to compare us with other engines to figure out what we should work on. Does this actually make WebKit faster than some version of Gecko? Could we retitle the bug or something.

r=me, but please consider my suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90882</commentid>
    <comment_count>8</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-11 13:12:00 -0700</bug_when>
    <thetext>Bug title changed; I wasn&apos;t thinking in terms of it going on a changelog when I filed it ;)

privateRenderStyle() is definitely a lame name for it. mitzpettel and I have been tossing ideas back and forth on #webkit but hadn&apos;t come up with anything we liked. nonRendererRenderStyle() is... sorta awful, but at least it describes what it does.

The separate header is there to avoid a circular dependency problem. I&apos;m really not sure how to improve that :/

I&apos;ll make the other changes before I commit. Sadly even the combination of these patches doesn&apos;t make us faster than Gecko :/ they&apos;re still 25-27ms to WebKit&apos;s 34-35.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90894</commentid>
    <comment_count>9</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-11 14:56:37 -0700</bug_when>
    <thetext>Committed the renderStyle() inlining patch with the suggested changes in r36339</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91140</commentid>
    <comment_count>10</comment_count>
      <attachid>23417</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-14 15:10:55 -0700</bug_when>
    <thetext>Created attachment 23417
Minor improvements

This gets rid of the copy-pasted headers from CSSSelector since this is a new file, and moves m_parsedNth to CSSSelector since it has a free bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91185</commentid>
    <comment_count>11</comment_count>
      <attachid>23432</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-15 01:06:53 -0700</bug_when>
    <thetext>Created attachment 23432
Enable an existing optimization that wasn&apos;t being triggered

Slightly more than a 2x speedup (testing with the other patches applied).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91188</commentid>
    <comment_count>12</comment_count>
      <attachid>23432</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-15 01:46:31 -0700</bug_when>
    <thetext>Comment on attachment 23432
Enable an existing optimization that wasn&apos;t being triggered

A better version of this was committed in http://trac.webkit.org/changeset/36432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91319</commentid>
    <comment_count>13</comment_count>
      <attachid>23417</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-15 22:57:16 -0700</bug_when>
    <thetext>Comment on attachment 23417
Minor improvements

r=me.  You need to make sure to update all the build systems before landing.  Nice work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91321</commentid>
    <comment_count>14</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2008-09-15 23:16:10 -0700</bug_when>
    <thetext>Committed that change in http://trac.webkit.org/changeset/36485. That brings us to 15-17ms on all the relevant tests on my machine, significantly faster than Firefox :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23244</attachid>
            <date>2008-09-08 03:08:41 -0700</date>
            <delta_ts>2008-09-11 01:34:13 -0700</delta_ts>
            <desc>Exploratory patch</desc>
            <filename>cachenthselectordraft1.txt</filename>
            <type>text/plain</type>
            <size>8834</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDM2MjQ2KQorKysgV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNSArMzYzLDY3IEBAIFN0cmluZyBD
U1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKIAogICAgIHJldHVybiBzdHI7CiB9Cisg
ICAgCisvLyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgcGFyc2luZyBudGgtYXJndW1lbnRzCitib29s
IENTU1NlbGVjdG9yOjpwYXJzZU50aCgpCit7CisgICAgaWYgKG1fcGFyc2VkTnRoKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBjb25zdCBTdHJpbmcmIG1fYXIgPSBtX2FyZ3VtZW50
OworICAgIAorICAgIGlmIChtX2FyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbV9wYXJzZWROdGggPSB0cnVlOworICAgIG1fYSA9IDA7CisgICAgbV9iID0gMDsKKyAg
ICBpZiAobV9hciA9PSAib2RkIikgeworICAgICAgICBtX2EgPSAyOworICAgICAgICBtX2IgPSAx
OworICAgIH0gZWxzZSBpZiAobV9hciA9PSAiZXZlbiIpIHsKKyAgICAgICAgbV9hID0gMjsKKyAg
ICAgICAgbV9iID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbiA9IG1fYXIuZmluZCgn
bicpOworICAgICAgICBpZiAobiAhPSAtMSkgeworICAgICAgICAgICAgaWYgKG1fYXJbMF0gPT0g
Jy0nKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
bV9hID0gLTE7IC8vIC1uID09IC0xbgorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgbV9hID0gbV9hci5zdWJzdHJpbmcoMCwgbikudG9JbnQoKTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoIW4pCisgICAgICAgICAgICAgICAgbV9hID0gMTsgLy8gbiA9PSAxbgorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fYSA9IG1fYXIuc3Vic3RyaW5nKDAsIG4p
LnRvSW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBwID0gbV9hci5maW5kKCcr
Jywgbik7CisgICAgICAgICAgICBpZiAocCAhPSAtMSkKKyAgICAgICAgICAgICAgICBtX2IgPSBt
X2FyLnN1YnN0cmluZyhwICsgMSwgbV9hci5sZW5ndGgoKSAtIHAgLSAxKS50b0ludCgpOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcCA9IG1fYXIuZmluZCgnLScsIG4pOwor
ICAgICAgICAgICAgICAgIG1fYiA9IC1tX2FyLnN1YnN0cmluZyhwICsgMSwgbV9hci5sZW5ndGgo
KSAtIHAgLSAxKS50b0ludCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fYiA9IG1fYXIudG9JbnQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjaGVja2luZyBudGgtYXJndW1lbnRzCitib29sIENT
U1NlbGVjdG9yOjptYXRjaE50aChpbnQgY291bnQpCit7CisgICAgaWYgKCFtX2EpCisgICAgICAg
IHJldHVybiBjb3VudCA9PSBtX2I7CisgICAgZWxzZSBpZiAobV9hID4gMCkgeworICAgICAgICBp
ZiAoY291bnQgPCBtX2IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biAoY291bnQgLSBtX2IpICUgbV9hID09IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGNv
dW50ID4gbV9iKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gKG1f
YiAtIGNvdW50KSAlICgtbV9hKSA9PSAwOworICAgIH0KK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiAzNjI0NikKKysrIFdlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgLCBtX3JlbGF0aW9uKERlc2NlbmRhbnQpCiAgICAgICAgICAg
ICAsIG1fbWF0Y2goTm9uZSkKICAgICAgICAgICAgICwgbV9wc2V1ZG9UeXBlKFBzZXVkb05vdFBh
cnNlZCkKKyAgICAgICAgICAgICwgbV9wYXJzZWROdGgoZmFsc2UpCisgICAgICAgICAgICAsIG1f
YSgwKQorICAgICAgICAgICAgLCBtX2IoMCkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTU0
LDYgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlbGF0aW9u
KERlc2NlbmRhbnQpCiAgICAgICAgICAgICAsIG1fbWF0Y2goTm9uZSkKICAgICAgICAgICAgICwg
bV9wc2V1ZG9UeXBlKFBzZXVkb05vdFBhcnNlZCkKKyAgICAgICAgICAgICwgbV9wYXJzZWROdGgo
ZmFsc2UpCisgICAgICAgICAgICAsIG1fYSgwKQorICAgICAgICAgICAgLCBtX2IoMCkKICAgICAg
ICAgewogICAgICAgICB9CiAKQEAgLTE3NSw2ICsxODEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaGFzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyICE9IGFu
eVFOYW1lKCk7IH0KIAogICAgICAgICBSZWxhdGlvbiByZWxhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbGF0aW9uPihtX3JlbGF0aW9uKTsgfQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBwYXJzZU50aCgpOworICAgICAgICBib29sIG1hdGNoTnRoKGludCk7CiAKICAgICAgICAg
bXV0YWJsZSBBdG9taWNTdHJpbmcgbV92YWx1ZTsKICAgICAgICAgQ1NTU2VsZWN0b3IqIG1fdGFn
SGlzdG9yeTsKQEAgLTE4OCw2ICsxOTcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB1bnNpZ25lZCBtX3JlbGF0aW9uICAgICAgICAgICA6IDM7IC8vIGVudW0gUmVsYXRpb24KICAg
ICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX21hdGNoICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoCiAg
ICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9wc2V1ZG9UeXBlIDogODsgLy8gUHNldWRvVHlwZQor
ICAgICAgICBib29sIG1fcGFyc2VkTnRoIDogMTsKKyAgICAgICAgCisgICAgICAgIGludCBtX2E7
CisgICAgICAgIGludCBtX2I7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGV4dHJhY3RQ
c2V1ZG9UeXBlKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNp
b24gMzYyNDYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODcwLDYyICs4NzAsNiBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9y
Q2hlY2tlcjo6CiAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50LCAwLCBkeW5h
bWljUHNldWRvLCB0cnVlLCBmYWxzZSkgPT0gU2VsZWN0b3JNYXRjaGVzOwogfQogCi0vLyBhIGhl
bHBlciBmdW5jdGlvbiBmb3IgcGFyc2luZyBudGgtYXJndW1lbnRzCi1zdGF0aWMgYm9vbCBwYXJz
ZU50aChjb25zdCBTdHJpbmcmIG50aCwgaW50ICZhLCBpbnQgJmIpCi17Ci0gICAgaWYgKG50aC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhID0gMDsKLSAgICBiID0gMDsK
LSAgICBpZiAobnRoID09ICJvZGQiKSB7Ci0gICAgICAgIGEgPSAyOwotICAgICAgICBiID0gMTsK
LSAgICB9IGVsc2UgaWYgKG50aCA9PSAiZXZlbiIpIHsKLSAgICAgICAgYSA9IDI7Ci0gICAgICAg
IGIgPSAwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBuID0gbnRoLmZpbmQoJ24nKTsKLSAg
ICAgICAgaWYgKG4gIT0gLTEpIHsKLSAgICAgICAgICAgIGlmIChudGhbMF0gPT0gJy0nKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG4gPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgYSA9IC0xOyAv
LyAtbiA9PSAtMW4KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGEg
PSBudGguc3Vic3RyaW5nKDAsIG4pLnRvSW50KCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFu
KQotICAgICAgICAgICAgICAgIGEgPSAxOyAvLyBuID09IDFuCi0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgYSA9IG50aC5zdWJzdHJpbmcoMCwgbikudG9JbnQoKTsKLQotICAgICAg
ICAgICAgaW50IHAgPSBudGguZmluZCgnKycsIG4pOwotICAgICAgICAgICAgaWYgKHAgIT0gLTEp
Ci0gICAgICAgICAgICAgICAgYiA9IG50aC5zdWJzdHJpbmcocCArIDEsIG50aC5sZW5ndGgoKSAt
IHAgLSAxKS50b0ludCgpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcCA9
IG50aC5maW5kKCctJywgbik7Ci0gICAgICAgICAgICAgICAgYiA9IC1udGguc3Vic3RyaW5nKHAg
KyAxLCBudGgubGVuZ3RoKCkgLSBwIC0gMSkudG9JbnQoKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBiID0gbnRoLnRvSW50KCk7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi0vLyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgbnRoLWFyZ3Vt
ZW50cwotc3RhdGljIGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50LCBpbnQgYSwgaW50IGIpCi17Ci0g
ICAgaWYgKCFhKQotICAgICAgICByZXR1cm4gY291bnQgPT0gYjsKLSAgICBlbHNlIGlmIChhID4g
MCkgewotICAgICAgICBpZiAoY291bnQgPCBiKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gKGNvdW50IC0gYikgJSBhID09IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKGNvdW50ID4gYikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0
dXJuIChiIC0gY291bnQpICUgKC1hKSA9PSAwOwotICAgIH0KLX0KLQotCiAjaWZkZWYgU1RZTEVf
U0hBUklOR19TVEFUUwogc3RhdGljIGludCBmcmFjdGlvbiA9IDA7CiBzdGF0aWMgaW50IHRvdGFs
ID0gMDsKQEAgLTIwMDEsMTEgKzE5NDUsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZDogewotICAgICAgICAgICAg
ICAgIGludCBhLCBiOwotICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBhIGFuZCBiIGV2ZXJ5
IHRpbWUgd2UgcnVuIHRocm91Z2ggY2hlY2tPbmVTZWxlY3RvcgotICAgICAgICAgICAgICAgIC8v
IHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNhdmVkIGFmdGVyIHdlIGNhbGN1bGF0ZSBpdCBvbmNl
LCBidXQgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgLy8gd291bGQgcmVxdWlyZSBpbmNyZWFz
aW5nIHRoZSBzaXplIG9mIENTU1NlbGVjdG9yCi0gICAgICAgICAgICAgICAgaWYgKCFwYXJzZU50
aChzZWwtPm1fYXJndW1lbnQsIGEsIGIpKQorICAgICAgICAgICAgICAgIGlmICghc2VsLT5wYXJz
ZU50aCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAo
ZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDE7CkBAIC0yMDMyLDE2ICsxOTcyLDEzIEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hOdGgoY291bnQsIGEsIGIpKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoc2VsLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9OdGhPZlR5cGU6IHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3Rv
ciBpcyB2ZXJ5IHNsb3cuCi0gICAgICAgICAgICAgICAgaW50IGEsIGI7Ci0gICAgICAgICAgICAg
ICAgLy8gY2FsY3VsYXRlIGEgYW5kIGIgZXZlcnkgdGltZSB3ZSBydW4gdGhyb3VnaCBjaGVja09u
ZVNlbGVjdG9yIChzZWUgYWJvdmUpCi0gICAgICAgICAgICAgICAgaWYgKCFwYXJzZU50aChzZWwt
Pm1fYXJndW1lbnQsIGEsIGIpKQorICAgICAgICAgICAgICAgIGlmICghc2VsLT5wYXJzZU50aCgp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAoZS0+cGFy
ZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGludCBjb3VudCA9IDE7CkBAIC0yMDU5LDE3ICsxOTk2LDEzIEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9u
YWxSdWxlcygpOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoTnRoKGNvdW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlbC0+
bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkOiB7Ci0gICAg
ICAgICAgICAgICAgaW50IGEsIGI7Ci0gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGEgYW5k
IGIgZXZlcnkgdGltZSB3ZSBydW4gdGhyb3VnaCBjaGVja09uZVNlbGVjdG9yCi0gICAgICAgICAg
ICAgICAgLy8gdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc2F2ZWQgYWZ0ZXIgd2UgY2FsY3VsYXRl
IGl0IG9uY2UsIGJ1dCBjdXJyZW50bHkKLSAgICAgICAgICAgICAgICAvLyB3b3VsZCByZXF1aXJl
IGluY3JlYXNpbmcgdGhlIHNpemUgb2YgQ1NTU2VsZWN0b3IKLSAgICAgICAgICAgICAgICBpZiAo
IXBhcnNlTnRoKHNlbC0+bV9hcmd1bWVudCwgYSwgYikpCisgICAgICAgICAgICAgICAgaWYgKCFz
ZWwtPnBhcnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2Rl
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgRWxlbWVudCogcGFyZW50Tm9kZSA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihlLT5wYXJlbnROb2RlKCkpOwpAQCAtMjA4NywxNiArMjAyMCwxMyBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLT5uZXh0
U2libGluZygpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChtYXRjaE50aChjb3VudCwgYSwgYikpCisgICAgICAgICAgICAgICAgICAgIGlmIChzZWwtPm1h
dGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RPZlR5cGU6IHsKLSAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWxlY3RvciBpcyB2ZXJ5IHNsb3cuCi0gICAgICAg
ICAgICAgICAgaW50IGEsIGI7Ci0gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGEgYW5kIGIg
ZXZlcnkgdGltZSB3ZSBydW4gdGhyb3VnaCBjaGVja09uZVNlbGVjdG9yIChzZWUgYWJvdmUpCi0g
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZU50aChzZWwtPm1fYXJndW1lbnQsIGEsIGIpKQorICAg
ICAgICAgICAgICAgIGlmICghc2VsLT5wYXJzZU50aCgpKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICBpZiAoZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5v
ZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnQqIHBh
cmVudE5vZGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZS0+cGFyZW50Tm9kZSgpKTsKQEAgLTIx
MTUsNyArMjA0NSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbiA9IG4tPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoTnRoKGNvdW50LCBhLCBiKSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlbC0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23333</attachid>
            <date>2008-09-10 19:22:26 -0700</date>
            <delta_ts>2008-09-10 22:54:59 -0700</delta_ts>
            <desc>Another unsatisfactory but working patch</desc>
            <filename>manualinline.txt</filename>
            <type>text/plain</type>
            <size>783</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAzNjMyMykKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE1LDcgKzIw
MTUsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLT5pc0Vs
ZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJTdHlsZSog
cyA9IG4tPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiBvID0gbi0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJTdHlsZSogcyA9IG8gPyBvLT5zdHlsZSgpIDogbi0+cmVuZGVyU3R5bGUoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMgPyBzLT5jaGlsZEluZGV4
KCkgOiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSBpbmRleDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23336</attachid>
            <date>2008-09-10 22:54:59 -0700</date>
            <delta_ts>2008-09-10 23:50:32 -0700</delta_ts>
            <desc>Better patch</desc>
            <filename>inlinerenderstyle1.txt</filename>
            <type>text/plain</type>
            <size>11209</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDgtMDktMTAgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MAorICAgICAgICAK
KyAgICAgICAgVGhpcyBzcGVlZHMgdXAgOm50aC1jaGlsZCBtYXRjaGluZyBhcyB0ZXN0ZWQgYnkg
cXVlcnlTZWxlY3RvckFsbCBieSBhcm91bmQgMTAlIGJ5IGlubGluaW5nIHRoZSBjb21tb24gY2Fz
ZSBvZiBOb2RlOjpyZW5kZXJTdHlsZSgpLiBNYW55IHRoYW5rcyB0byBtaXR6cGV0dGVsIGFuZCBv
dGhlcm1hY2llaiBmb3Igc3VnZ2VzdGlvbnMgYW5kIGhlbHAuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBOb2RlUmVuZGVyU3R5bGUuaAorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogaW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogaW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDogUmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIHJlbmRlclN0eWxl
KCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnByaXZhdGVSZW5kZXJTdHlsZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDogTWFrZSByZW5kZXJTdHlsZSgpIG5vbnZpcnR1YWwgYW5kIGFkZCBwcml2
YXRlUmVuZGVyU3R5bGUoKQorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyU3R5bGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJTdHlsZSk6IElubGluZSB0aGUgY29tbW9u
IGNhc2Ugb2YgdGhpcywgY2FsbCBwcml2YXRlUmVuZGVyU3R5bGUgZm9yIHRoZSBwYXJ0IHRoYXQg
bmVlZGVkIHRvIGJlIHZpcnR1YWwKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwOiBpbmNsdWRlIE5vZGVSZW5kZXJTdHlsZS5oCisgICAgICAgICogaHRtbC9IVE1MT3B0R3Jv
dXBFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpwcml2
YXRlUmVuZGVyU3R5bGUpOiBvdmVycmlkZSB0byByZXR1cm4gbV9zdHlsZQorICAgICAgICAqIGh0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOiBpbmNsdWRlIE5vZGVSZW5kZXJTdHlsZS5oCisgICAg
ICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnByaXZhdGVSZW5kZXJTdHlsZSk6IG92ZXJyaWRlIHRvIHJldHVybiBtX3N0
eWxlCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOiBpbmNsdWRlIE5vZGVS
ZW5kZXJTdHlsZS5oCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDogaW5j
bHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
aW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorCiAyMDA4LTA5LTEwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNjMy
NikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC02NTUsNiArNjU1LDcgQEAKIAkJNUREMEEzODEwRDlBQzYwNzAwNTZDMTIyIC8q
IERPTUVsZW1lbnRUaW1lQ29udHJvbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxNUYxNjgwRDlBMTY1RDAwMzNDRTk3IC8q
IERPTUVsZW1lbnRUaW1lQ29udHJvbC5oICovOyB9OwogCQk1REZFOEY1NjBEMTY0NzdCMDA3NkU5
MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rp
b24uY3BwICovOyB9OwogCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Ez
NzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi87IH07CisJCTYzRDdC
MzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRDdCMzJDMEU3OENEM0YwMEY3NjE3QyAv
KiBOb2RlUmVuZGVyU3R5bGUuaCAqLzsgfTsKIAkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8q
IENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1
MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKIAkJNjUwRkJGMkEwRDlBRjA0NzAwOEZDMjkyIC8qIFNW
R0hLZXJuRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTBGQkYyNzBEOUFGMDQ2MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCAq
LzsgfTsKQEAgLTUyNjAsNiArNTI2MSw3IEBACiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAw
NzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNURDRjgzNkMwRDU5MTU5ODAw
OTUzQkM2IC8qIFBsdWdpbkluZm9TdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjNE
N0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlUmVuZGVyU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRkJGMjcwRDlBRjA0NjAwOEZDMjkyIC8qIFNWR0hLZXJuRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdIS2VybkVs
ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBGQkYyODBEOUFGMDQ3
MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0hLZXJuRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMzMzMsNiArMTMzMzUsNyBAQAogCQlGNTIzRDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2M0Q3QjMyQzBF
NzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1
NjMyNzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLAogCQkJCUE4QzRBN0ZCMDlENTYzMjcwMDAzQUM4
RCAvKiBBdHRyLmggKi8sCiAJCQkJOTNFRUMxRTUwOUMyODc3NzAwQzUxNUQxIC8qIEF0dHIuaWRs
ICovLApAQCAtMTU1NzEsNiArMTU1NzQsNyBAQAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgwMEJGNjA4
OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcyODRBRERFMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTQ3QjRCRTgwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291
cmNlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYxN0Mg
LyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBACiAjaW5jbHVkZSAiWE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJsb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
CiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMzYz
MjYpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQAogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJT
dHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiAzNjMyNikK
KysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDExICsxMDQ0
LDExIEBAIFJlbmRlck9iamVjdCAqTm9kZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGUKICAgICBBU1NF
UlQoZmFsc2UpOwogICAgIHJldHVybiAwOwogfQotCi1SZW5kZXJTdHlsZSogTm9kZTo6cmVuZGVy
U3R5bGUoKSBjb25zdAorICAgIAorUmVuZGVyU3R5bGUqIE5vZGU6OnByaXZhdGVSZW5kZXJTdHls
ZSgpIGNvbnN0CiB7IAotICAgIHJldHVybiBtX3JlbmRlcmVyID8gbV9yZW5kZXJlci0+c3R5bGUo
KSA6IDA7IAotfQorICAgIHJldHVybiAwOyAKK30gICAKIAogdm9pZCBOb2RlOjpzZXRSZW5kZXJT
dHlsZShSZW5kZXJTdHlsZSogcykKIHsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9k
b20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNyArNDIwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRl
clN0eWxlKik7CiAgICAgCiAgICAgLy8gV3JhcHBlciBmb3Igbm9kZXMgdGhhdCBkb24ndCBoYXZl
IGEgcmVuZGVyZXIsIGJ1dCBzdGlsbCBjYWNoZSB0aGUgc3R5bGUgKGxpa2UgSFRNTE9wdGlvbkVs
ZW1lbnQpLgotICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKCkgY29uc3Q7Cisg
ICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBj
b21wdXRlZFN0eWxlKCk7CkBAIC01MDQsNiArNTA0LDggQEAgcHJvdGVjdGVkOgogICAgIH0KIAog
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBwcml2YXRlUmVuZGVyU3R5bGUoKSBj
b25zdDsKKwogICAgIERvY1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBOb2RlKiBtX3By
ZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVSZW5kZXJT
dHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTYgQEAKKyNpZm5kZWYgTm9kZVJlbmRlclN0eWxlX2gKKyNkZWZpbmUgTm9kZVJl
bmRlclN0eWxlX2gKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lu
bGluZSBSZW5kZXJTdHlsZSogTm9kZTo6cmVuZGVyU3R5bGUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3JlbmRlcmVyID8gbV9yZW5kZXJlci0+c3R5bGUoKSA6IHByaXZhdGVSZW5kZXJTdHlsZSgp
OworfQorCit9CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlz
dC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAkocmV2aXNpb24gMzYzMjYpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBy
ZW5kZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRC
ZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlv
bkNvZGUmLCBib29sIHNob3VsZExhenlBdHRhY2ggPSBmYWxzZSk7CkBAIC01OSw2ICs1OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZFRvQW55
RWxlbWVudCk7CiAgICAgCiBwcml2YXRlOgorICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHByaXZh
dGVSZW5kZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KICAgICB2b2lkIHJlY2Fs
Y1NlbGVjdE9wdGlvbnMoKTsKIAogICAgIFJlbmRlclN0eWxlKiBtX3N0eWxlOwpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmgJKHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaCgpOwotICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJTdHlsZShSZW5kZXJT
dHlsZSopOwogICAgIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgY29u
c3Q7CkBAIC04Myw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5
QWN0aW9uKGJvb2wpOwogICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFJlbmRlclN0eWxlKiBw
cml2YXRlUmVuZGVyU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlOyB9CiAgICAgU3RyaW5n
IG1fdmFsdWU7CiAgICAgYm9vbCBtX3NlbGVjdGVkOwogICAgIFJlbmRlclN0eWxlKiBtX3N0eWxl
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDM2MzI2KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm9k
ZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMzYzMjYp
CisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRl
clRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJT
dHlsZS5oIgogI2luY2x1ZGUgPG1hdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAi
U1ZHU3ltYm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJY
TUxTZXJpYWxpemVyLmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23337</attachid>
            <date>2008-09-10 23:50:32 -0700</date>
            <delta_ts>2008-09-11 10:32:46 -0700</delta_ts>
            <desc>Addresses a few pseudoreview comments</desc>
            <filename>inlinerenderstyle2.txt</filename>
            <type>text/plain</type>
            <size>11896</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDgtMDktMTAgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MAorICAgICAgICAK
KyAgICAgICAgVGhpcyBzcGVlZHMgdXAgOm50aC1jaGlsZCBtYXRjaGluZyBhcyB0ZXN0ZWQgYnkg
cXVlcnlTZWxlY3RvckFsbCBieSBhcm91bmQgMTAlIGJ5IGlubGluaW5nIHRoZSBjb21tb24gY2Fz
ZSBvZiBOb2RlOjpyZW5kZXJTdHlsZSgpLiBNYW55IHRoYW5rcyB0byBtaXR6cGV0dGVsIGFuZCBv
dGhlcm1hY2llaiBmb3Igc3VnZ2VzdGlvbnMgYW5kIGhlbHAuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBOb2RlUmVuZGVyU3R5bGUuaAorICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogaW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogaW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDogUmVtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIHJlbmRlclN0eWxl
KCkKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnByaXZhdGVSZW5kZXJTdHlsZSk6CisgICAgICAg
ICogZG9tL05vZGUuaDogTWFrZSByZW5kZXJTdHlsZSgpIG5vbnZpcnR1YWwgYW5kIGFkZCBwcml2
YXRlUmVuZGVyU3R5bGUoKQorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyU3R5bGUuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJTdHlsZSk6IElubGluZSB0aGUgY29tbW9u
IGNhc2Ugb2YgdGhpcywgY2FsbCBwcml2YXRlUmVuZGVyU3R5bGUgZm9yIHRoZSBwYXJ0IHRoYXQg
bmVlZGVkIHRvIGJlIHZpcnR1YWwKKyAgICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQu
Y3BwOiBpbmNsdWRlIE5vZGVSZW5kZXJTdHlsZS5oCisgICAgICAgICogaHRtbC9IVE1MT3B0R3Jv
dXBFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Ojpwcml2
YXRlUmVuZGVyU3R5bGUpOiBvdmVycmlkZSB0byByZXR1cm4gbV9zdHlsZQorICAgICAgICAqIGh0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOiBpbmNsdWRlIE5vZGVSZW5kZXJTdHlsZS5oCisgICAg
ICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OnByaXZhdGVSZW5kZXJTdHlsZSk6IG92ZXJyaWRlIHRvIHJldHVybiBtX3N0
eWxlCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOiBpbmNsdWRlIE5vZGVS
ZW5kZXJTdHlsZS5oCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDogaW5j
bHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDog
aW5jbHVkZSBOb2RlUmVuZGVyU3R5bGUuaAorCiAyMDA4LTA5LTEwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzYzMjYpCisrKyBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQyMCw2ICsxMDQyMCwxMCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cTm9kZVJlbmRlclN0eWxlLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTm9kZUZpbHRlci5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw2
ICs2NTUsNyBAQAogCQk1REQwQTM4MTBEOUFDNjA3MDA1NkMxMjIgLyogRE9NRWxlbWVudFRpbWVD
b250cm9sLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDE1RjE2ODBEOUExNjVEMDAzM0NFOTcgLyogRE9NRWxlbWVudFRpbWVD
b250cm9sLmggKi87IH07CiAJCTVERkU4RjU2MEQxNjQ3N0IwMDc2RTkzNyAvKiBTY2hlZHVsZWRB
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgKi87IH07CiAJ
CTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJCMEQxNUY2NDIwMEI3
OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLzsgfTsKKwkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2
MTdDIC8qIE5vZGVSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjNEN0IzMkMwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5kZXJTdHls
ZS5oICovOyB9OwogCQk2NTBGNTNEQzA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwRjUzREIwOUQx
NUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLzsgfTsKIAkJNjUwRjUzREQwOUQxNURERjAw
QzlCMEM4IC8qIENTU0dyYW1tYXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2NTgxNDQwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU0dyYW1tYXIuY3Bw
ICovOyB9OwogCQk2NTBGQkYyQTBEOUFGMDQ3MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEZCRjI3
MEQ5QUYwNDYwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3BwICovOyB9OwpAQCAtNTI2MCw2
ICs1MjYxLDcgQEAKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1RENGODM2QzBENTkxNTk4MDA5NTNCQzYgLyogUGx1Z2lu
SW5mb1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkluZm9T
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2M0Q3QjMyQzBFNzhDRDNGMDBG
NzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5vZGVSZW5kZXJTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBG
NTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTR3JhbW1hci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTBGQkYyNzBEOUFGMDQ2MDA4RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0hLZXJuRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MEZCRjI4MEQ5QUYwNDcwMDhGQzI5MiAvKiBTVkdI
S2VybkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSEtlcm5F
bGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzMzMyw2ICsxMzMzNSw3
IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTYzRDdCMzJDMEU3OENEM0YwMEY3NjE3QyAv
KiBOb2RlUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyog
QXR0ci5jcHAgKi8sCiAJCQkJQThDNEE3RkIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHIuaCAqLywK
IAkJCQk5M0VFQzFFNTA5QzI4Nzc3MDBDNTE1RDEgLyogQXR0ci5pZGwgKi8sCkBAIC0xNTU3MSw2
ICsxNTU3NCw3IEBACiAJCQkJMzE2RkUwODIwRTZDQ0MyODAwQkY2MDg4IC8qIERPTVdlYktpdENT
U0tleWZyYW1lc1J1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzI4NEFEREUwRTZG
RUIzMTAwMkVFRkJEIC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNDdCNEJFODBFNzEyNDE2MDAwMzg4NTQgLyogQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTYzRDdCMzJEMEU3OENEM0YwMEY3NjE3QyAvKiBOb2RlUmVuZGVyU3R5
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDM2MzI2KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVk
ZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjMyNikK
KysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCiAj
aW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5k
ZXJCbG9jay5oIgpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9kb20vTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDQsMTEgKzEwNDQsMTEgQEAgUmVuZGVyT2JqZWN0ICpO
b2RlOjpjcmVhdGVSZW5kZXJlcihSZW5kZQogICAgIEFTU0VSVChmYWxzZSk7CiAgICAgcmV0dXJu
IDA7CiB9Ci0KLVJlbmRlclN0eWxlKiBOb2RlOjpyZW5kZXJTdHlsZSgpIGNvbnN0CisgICAgCitS
ZW5kZXJTdHlsZSogTm9kZTo6cHJpdmF0ZVJlbmRlclN0eWxlKCkgY29uc3QKIHsgCi0gICAgcmV0
dXJuIG1fcmVuZGVyZXIgPyBtX3JlbmRlcmVyLT5zdHlsZSgpIDogMDsgCi19CisgICAgcmV0dXJu
IDA7IAorfSAgIAogCiB2b2lkIE5vZGU6OnNldFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzKQog
ewpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05v
ZGUuaAkocmV2aXNpb24gMzYzMjYpCisrKyBXZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyMCw3ICs0MjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICAv
LyBXcmFwcGVyIGZvciBub2RlcyB0aGF0IGRvbid0IGhhdmUgYSByZW5kZXJlciwgYnV0IHN0aWxs
IGNhY2hlIHRoZSBzdHlsZSAobGlrZSBIVE1MT3B0aW9uRWxlbWVudCkuCi0gICAgdmlydHVhbCBS
ZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUoKSBjb25zdDsKKyAgICBSZW5kZXJTdHlsZSogcmVuZGVy
U3R5bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyU3R5bGUoUmVuZGVyU3R5
bGUqKTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIGNvbXB1dGVkU3R5bGUoKTsKQEAgLTUw
NCw2ICs1MDQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwcml2YXRlOgorICAgIHZpcnR1YWwg
UmVuZGVyU3R5bGUqIHByaXZhdGVSZW5kZXJTdHlsZSgpIGNvbnN0OworCiAgICAgRG9jUHRyPERv
Y3VtZW50PiBtX2RvY3VtZW50OwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9u
ZXh0OwpJbmRleDogV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRl
ZiBOb2RlUmVuZGVyU3R5bGVfaAorI2RlZmluZSBOb2RlUmVuZGVyU3R5bGVfaAorCisjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJO
b2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIFJlbmRlclN0eWxlKiBOb2Rl
OjpyZW5kZXJTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVuZGVyZXIgPyBtX3JlbmRl
cmVyLT5zdHlsZSgpIDogcHJpdmF0ZVJlbmRlclN0eWxlKCk7Cit9CisKK30KKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAkocmV2aXNpb24gMzYzMjYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCShyZXZpc2lvbiAzNjMyNikKKysr
IFdlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHJl
bmRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29sIGluc2VydEJl
Zm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0aW9u
Q29kZSYsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCA9IGZhbHNlKTsKQEAgLTU5LDYgKzU4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kVG9BbnlF
bGVtZW50KTsKICAgICAKIHByaXZhdGU6CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogcHJpdmF0
ZVJlbmRlclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZTsgfQogICAgIHZvaWQgcmVjYWxj
U2VsZWN0T3B0aW9ucygpOwogCiAgICAgUmVuZGVyU3R5bGUqIG1fc3R5bGU7CkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAz
NjMyNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIFJlbmRlclN0
eWxlKiByZW5kZXJTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqKTsKICAgICAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0OwpAQCAtODMsNiArODIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sKTsKICAgICAKIHByaXZhdGU6
CisgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogcHJpdmF0ZVJlbmRlclN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZTsgfQogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIGJvb2wgbV9zZWxlY3Rl
ZDsKICAgICBSZW5kZXJTdHlsZSogbV9zdHlsZTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRN
TE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JvbGxCYXIuaCIgCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJl
dmlzaW9uIDM2MzI2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MT3B0R3JvdXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNl
bGVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
b3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZW5kZXJCUi5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjMyNikKKysrIFdlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2Uu
aCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmgiCg==
</data>
<flag name="review"
          id="10404"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23341</attachid>
            <date>2008-09-11 01:34:13 -0700</date>
            <delta_ts>2008-09-14 15:10:55 -0700</delta_ts>
            <desc>Cache an+b parsing</desc>
            <filename>cachenthselector1.txt</filename>
            <type>text/plain</type>
            <size>20731</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjMzMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMTEgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTgwCisg
ICAgICAgIAorICAgICAgICBDYWNoZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGFuK2IgZXhw
cmVzc2lvbiBpbiA6bnRoLWNoaWxkKGFuK2IpLiBSb3VnaGx5IGEgMnggc3BlZWR1cCBmb3IgcXVl
cnlTZWxlY3RvckFsbCgiZGl2Om50aC1jaGlsZCgybisxKSIpOworCisgICAgICAgIFdBUk5JTkc6
IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6IEFkZCBDU1NOdGhTZWxlY3RvcgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIENTU050aFNlbGVjdG9yCisgICAgICAgICog
Y3NzL0NTU0dyYW1tYXIueTogQ3JlYXRlIENTU050aFNlbGVjdG9ycyBpbnN0ZWFkIG9mIENTU1Nl
bGVjdG9ycyBmb3IgOm50aC0qCisgICAgICAgICogY3NzL0NTU050aFNlbGVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NOdGhTZWxlY3Rvcjo6cGFyc2VOdGgpOiBNb3ZlZCBm
cm9tIENTU1N0eWxlU2VsZWN0b3IgYW5kIG1vZGlmaWVkIHRvIGNhY2hlCisgICAgICAgIChXZWJD
b3JlOjpDU1NOdGhTZWxlY3Rvcjo6bWF0Y2hOdGgpOiBNb3ZlZCBmcm9tIENTU1N0eWxlU2VsZWN0
b3IgYW5kIG1vZGlmaWVkIHRvIHVzZSB0aGUgY2FjaGUKKyAgICAgICAgKiBjc3MvQ1NTTnRoU2Vs
ZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NOdGhTZWxlY3Rvcjo6Q1NTTnRo
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTnRoU2VsZWN0b3I6On5DU1NOdGhTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IpOiBUYWtlIGFkdmFudGFnZSBvZiBrbm93aW5nIHRoYXQgYWxsIDpudGgtKiBzZWxlY3RvcnMg
YXJlIENTU050aFNlbGVjdG9ycworCiAyMDA4LTA5LTExICBEaXJrIFNjaHVsemUgIDx2YnM4NUBn
bXguZGU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24uCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM2MzMxKQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQ1MiwxMCArNzQ1Miwy
NiBAQAogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU050aFNlbGVjdG9yLmNwcCINCisJCQkJPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
CVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cY3NzXENTU1NlbGVjdG9yLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTTnRoU2VsZWN0b3IuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzYzMzEpCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjU1LDYgKzY1NSw4IEBACiAJCTVERDBBMzgxMEQ5QUM2MDcwMDU2QzEyMiAvKiBET01F
bGVtZW50VGltZUNvbnRyb2wuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MTVGMTY4MEQ5QTE2NUQwMDMzQ0U5NyAvKiBET01F
bGVtZW50VGltZUNvbnRyb2wuaCAqLzsgfTsKIAkJNURGRThGNTYwRDE2NDc3QjAwNzZFOTM3IC8q
IFNjaGVkdWxlZEFjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmNw
cCAqLzsgfTsKIAkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMzc4QkIw
RDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlvbi5oICovOyB9OworCQk2M0Q3QjQ2NDBF
NzhGQzI5MDBGNzYxN0MgLyogQ1NTTnRoU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNEN0I0NjIwRTc4RkMyOTAwRjc2MTdDIC8qIENT
U050aFNlbGVjdG9yLmNwcCAqLzsgfTsKKwkJNjNEN0I0NjUwRTc4RkMyOTAwRjc2MTdDIC8qIENT
U050aFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2M0Q3QjQ2MzBFNzhGQzI5MDBGNzYxN0MgLyogQ1NTTnRoU2VsZWN0b3IuaCAqLzsgfTsK
IAkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBD
OCAvKiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBD
U1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKIAkJ
NjUwRkJGMkEwRDlBRjA0NzAwOEZDMjkyIC8qIFNWR0hLZXJuRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBGQkYyNzBEOUFGMDQ2MDA4
RkMyOTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCAqLzsgfTsKQEAgLTUyNjAsNiArNTI2Miw4IEBA
CiAJCTU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmll
ZE5hbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJNURDRjgzNkMwRDU5MTU5ODAwOTUzQkM2IC8qIFBsdWdpbkluZm9TdG9yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5JbmZvU3RvcmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjNEN0I0NjIwRTc4RkMyOTAwRjc2MTdDIC8qIENT
U050aFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENT
U050aFNlbGVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjNEN0I0NjMw
RTc4RkMyOTAwRjc2MTdDIC8qIENTU050aFNlbGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU050aFNlbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmFtbWFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1MEZCRjI3MEQ5QUYwNDYwMDhGQzI5MiAvKiBTVkdIS2VybkVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSEtlcm5FbGVtZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRkJGMjgwRDlBRjA0NzAwOEZDMjky
IC8qIFNWR0hLZXJuRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdIS2VybkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDUxLDYg
KzEzMDU1LDggQEAKIAkJCQkzNzFGNTE5RjBEMjYyRkEwMDBFQ0UwRDUgLyogQ1NTU2VnbWVudGVk
Rm9udEZhY2UuaCAqLywKIAkJCQlBODBFNzM0ODBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NTU2VsZWN0
b3IuY3BwICovLAogCQkJCUE4MEU3MzRCMEExOTlDNzcwMDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5o
ICovLAorCQkJCTYzRDdCNDYyMEU3OEZDMjkwMEY3NjE3QyAvKiBDU1NOdGhTZWxlY3Rvci5jcHAg
Ki8sCisJCQkJNjNEN0I0NjMwRTc4RkMyOTAwRjc2MTdDIC8qIENTU050aFNlbGVjdG9yLmggKi8s
CiAJCQkJQTgwRTZFMEUwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
ICovLAogCQkJCUE4MEU2RTBEMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xhcmF0aW9u
LmggKi8sCiAJCQkJMTQyMDExQUUwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRp
b24uaWRsICovLApAQCAtMTU1NzEsNiArMTU1NzcsNyBAQAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgw
MEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcyODRBRERFMEU2RkVCMzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3QjRCRTgwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hl
ZFJlc291cmNlSGFuZGxlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2M0Q3QjQ2NTBFNzhGQzI5MDBG
NzYxN0MgLyogQ1NTTnRoU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTczNzQsNiArMTcz
ODEsNyBAQAogCQkJCTMxNkZFMDgxMEU2Q0NDMjgwMEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlm
cmFtZXNSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzI4NEFEREQwRTZGRUIzMTAwMkVFRkJE
IC8qIFVzZXJTdHlsZVNoZWV0TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0N0I0QkU5
MEU3MTI0MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk2M0Q3QjQ2NDBFNzhGQzI5MDBGNzYxN0MgLyogQ1NTTnRoU2VsZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAzNjMzMSkKKysrIFdlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NSdWxlTGlzdC5oIgogI2luY2x1
ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTTnRoU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKQEAgLTEwOTEsNyArMTA5Miw3IEBAIHBzZXVkbzoKICAgICAvLyB1c2VkIGJ5IDpu
dGgtKihheCtiKQogICAgIHwgJzonIEZVTkNUSU9OIE5USCAnKScgewogICAgICAgICBDU1NQYXJz
ZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAkJCA9IHAt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NT
ZWxlY3Rvcio+KHAtPmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3IoKSk7CiAgICAgICAgICQkLT5t
X21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOwogICAgICAgICAkJC0+bV9hcmd1bWVu
dCA9ICQzOwogICAgICAgICAkJC0+bV92YWx1ZSA9ICQyOwpAQCAtMTEwOSw3ICsxMTEwLDcgQEAg
cHNldWRvOgogICAgIC8vIHVzZWQgYnkgOm50aC0qCiAgICAgfCAnOicgRlVOQ1RJT04gSU5URUdF
UiAnKScgewogICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOwotICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAg
ICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcio+KHAtPmNyZWF0ZUZsb2F0aW5nTnRoU2Vs
ZWN0b3IoKSk7CiAgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
OwogICAgICAgICAkJC0+bV9hcmd1bWVudCA9IFN0cmluZzo6bnVtYmVyKCQzKTsKICAgICAgICAg
JCQtPm1fdmFsdWUgPSAkMjsKQEAgLTExMjcsNyArMTEyOCw3IEBAIHBzZXVkbzoKICAgICAvLyB1
c2VkIGJ5IDpudGgtKihvZGQvZXZlbikgYW5kIDpsYW5nCiAgICAgfCAnOicgRlVOQ1RJT04gSURF
TlQgJyknIHsKICAgICAgICAgQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKTsKLSAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0b3IqPihwLT5jcmVhdGVGbG9hdGluZ050aFNl
bGVjdG9yKCkpOwogICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
czsKICAgICAgICAgJCQtPm1fYXJndW1lbnQgPSAkMzsKICAgICAgICAgJDIubG93ZXIoKTsKSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU050aFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NOdGhTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NO
dGhTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAg
ICAgICAgICAxOTk5IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKKyAqICAgICAgICAg
ICAgICAgMjAwMSBBbmRyZWFzIFNjaGxhcGJhY2ggKHNjaGxwYmNoQGlhbS51bmliZS5jaCkKKyAq
ICAgICAgICAgICAgICAgMjAwMS0yMDAzIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQor
ICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU050aFNlbGVj
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gYSBoZWxwZXIgZnVuY3Rpb24gZm9y
IHBhcnNpbmcgbnRoLWFyZ3VtZW50cworYm9vbCBDU1NOdGhTZWxlY3Rvcjo6cGFyc2VOdGgoKQor
eworICAgIGlmIChtX3BhcnNlZE50aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAg
Y29uc3QgU3RyaW5nJiBtX2FyID0gbV9hcmd1bWVudDsKKyAgICAKKyAgICBpZiAobV9hci5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtX3BhcnNlZE50aCA9IHRy
dWU7CisgICAgbV9hID0gMDsKKyAgICBtX2IgPSAwOworICAgIGlmIChtX2FyID09ICJvZGQiKSB7
CisgICAgICAgIG1fYSA9IDI7CisgICAgICAgIG1fYiA9IDE7CisgICAgfSBlbHNlIGlmIChtX2Fy
ID09ICJldmVuIikgeworICAgICAgICBtX2EgPSAyOworICAgICAgICBtX2IgPSAwOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGludCBuID0gbV9hci5maW5kKCduJyk7CisgICAgICAgIGlmIChuICE9
IC0xKSB7CisgICAgICAgICAgICBpZiAobV9hclswXSA9PSAnLScpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobiA9PSAxKQorICAgICAgICAgICAgICAgICAgICBtX2EgPSAtMTsgLy8gLW4gPT0gLTFu
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX2EgPSBtX2FyLnN1
YnN0cmluZygwLCBuKS50b0ludCgpOworICAgICAgICAgICAgfSBlbHNlIGlmICghbikKKyAgICAg
ICAgICAgICAgICBtX2EgPSAxOyAvLyBuID09IDFuCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgbV9hID0gbV9hci5zdWJzdHJpbmcoMCwgbikudG9JbnQoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaW50IHAgPSBtX2FyLmZpbmQoJysnLCBuKTsKKyAgICAgICAgICAgIGlm
IChwICE9IC0xKQorICAgICAgICAgICAgICAgIG1fYiA9IG1fYXIuc3Vic3RyaW5nKHAgKyAxLCBt
X2FyLmxlbmd0aCgpIC0gcCAtIDEpLnRvSW50KCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBwID0gbV9hci5maW5kKCctJywgbik7CisgICAgICAgICAgICAgICAgbV9iID0g
LW1fYXIuc3Vic3RyaW5nKHAgKyAxLCBtX2FyLmxlbmd0aCgpIC0gcCAtIDEpLnRvSW50KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9iID0gbV9hci50b0lu
dCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gYSBoZWxwZXIgZnVuY3Rpb24g
Zm9yIGNoZWNraW5nIG50aC1hcmd1bWVudHMKK2Jvb2wgQ1NTTnRoU2VsZWN0b3I6Om1hdGNoTnRo
KGludCBjb3VudCkKK3sKKyAgICBpZiAoIW1fYSkKKyAgICAgICAgcmV0dXJuIGNvdW50ID09IG1f
YjsKKyAgICBlbHNlIGlmIChtX2EgPiAwKSB7CisgICAgICAgIGlmIChjb3VudCA8IG1fYikKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIChjb3VudCAtIG1fYikgJSBt
X2EgPT0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY291bnQgPiBtX2IpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiAobV9iIC0gY291bnQpICUgKC1tX2Ep
ID09IDA7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NOdGhTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU050aFNl
bGVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NOdGhTZWxlY3Rvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIENTUyBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5
OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgICAgIDE5OTkg
V2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBD
U1NOdGhTZWxlY3Rvcl9oCisjZGVmaW5lIENTU050aFNlbGVjdG9yX2gKKworI2luY2x1ZGUgIlF1
YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzZWxlY3RvciB1c2luZyA6
bnRoLWNoaWxkIGZvciBhIFN0eWxlUnVsZQorICAgIGNsYXNzIENTU050aFNlbGVjdG9yIDogcHVi
bGljIENTU1NlbGVjdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENTU050aFNlbGVjdG9yKCkK
KyAgICAgICAgICAgIDogbV9wYXJzZWROdGgoZmFsc2UpCisgICAgICAgICAgICAsIG1fYSgwKQor
ICAgICAgICAgICAgLCBtX2IoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgQ1NT
TnRoU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCisgICAgICAgICAgICA6IG1f
cGFyc2VkTnRoKGZhbHNlKQorICAgICAgICAgICAgLCBtX2EoMCkKKyAgICAgICAgICAgICwgbV9i
KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5DU1NOdGhTZWxlY3RvcigpCisg
ICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBwYXJzZU50aCgpOwor
ICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3VudCk7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBib29sIG1fcGFyc2VkTnRoIDogMTsKKyAgICAgICAgaW50IG1fYTsKKyAgICAgICAgaW50IG1f
YjsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDU1NTZWxl
Y3Rvcl9oCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDM2MzMxKQorKysgV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg
IkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0LmgiCiAjaW5jbHVkZSAi
Q1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NOdGhTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNT
U1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oIgpAQCAtNDM4MCw2ICs0MzgxLDEzIEBAIENTU1NlbGVjdG9yKiBD
U1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nU2UKICAgICBtX2Zsb2F0aW5nU2VsZWN0b3JzLmFkZChz
ZWxlY3Rvcik7CiAgICAgcmV0dXJuIHNlbGVjdG9yOwogfQorICAgIAorQ1NTTnRoU2VsZWN0b3Iq
IENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdOdGhTZWxlY3RvcigpCit7CisgICAgQ1NTTnRoU2Vs
ZWN0b3IqIHNlbGVjdG9yID0gbmV3IENTU050aFNlbGVjdG9yOworICAgIG1fZmxvYXRpbmdTZWxl
Y3RvcnMuYWRkKHNlbGVjdG9yKTsKKyAgICByZXR1cm4gc2VsZWN0b3I7Cit9CiAKIENTU1NlbGVj
dG9yKiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWxlY3Rv
cikKIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiAzNjMzMSkKKysrIFdlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBDU1NSdWxlOwogICAgIGNsYXNzIENTU1J1bGVMaXN0OwogICAgIGNsYXNz
IENTU1NlbGVjdG9yOworICAgIGNsYXNzIENTU050aFNlbGVjdG9yOwogICAgIGNsYXNzIENTU1N0
eWxlU2hlZXQ7CiAgICAgY2xhc3MgQ1NTVmFsdWU7CiAgICAgY2xhc3MgQ1NTVmFsdWVMaXN0OwpA
QCAtMTUyLDYgKzE1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IHl5cGFy
c2UoKTsKIAogICAgICAgICBDU1NTZWxlY3RvciogY3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICBDU1NOdGhTZWxlY3RvciogY3JlYXRlRmxvYXRpbmdOdGhTZWxlY3RvcigpOwogICAg
ICAgICBDU1NTZWxlY3Rvciogc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTU2VsZWN0b3IqKTsKIAog
ICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzYzMzEpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1J1bGVMaXN0Lmgi
CiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDU1NOdGhTZWxlY3Rvci5oIgog
I2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNp
bmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCkBAIC04NzMsNjIgKzg3NCw2IEBAIGJv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihzZWwsIGVsZW1lbnQsIDAsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGZhbHNlKSA9PSBT
ZWxlY3Rvck1hdGNoZXM7CiB9CiAKLS8vIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBwYXJzaW5nIG50
aC1hcmd1bWVudHMKLXN0YXRpYyBib29sIHBhcnNlTnRoKGNvbnN0IFN0cmluZyYgbnRoLCBpbnQg
JmEsIGludCAmYikKLXsKLSAgICBpZiAobnRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGEgPSAwOwotICAgIGIgPSAwOwotICAgIGlmIChudGggPT0gIm9kZCIpIHsKLSAg
ICAgICAgYSA9IDI7Ci0gICAgICAgIGIgPSAxOwotICAgIH0gZWxzZSBpZiAobnRoID09ICJldmVu
IikgewotICAgICAgICBhID0gMjsKLSAgICAgICAgYiA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgaW50IG4gPSBudGguZmluZCgnbicpOwotICAgICAgICBpZiAobiAhPSAtMSkgewotICAgICAg
ICAgICAgaWYgKG50aFswXSA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBpZiAobiA9PSAxKQot
ICAgICAgICAgICAgICAgICAgICBhID0gLTE7IC8vIC1uID09IC0xbgotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYSA9IG50aC5zdWJzdHJpbmcoMCwgbikudG9JbnQo
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIW4pCi0gICAgICAgICAgICAgICAgYSA9IDE7IC8v
IG4gPT0gMW4KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhID0gbnRoLnN1YnN0
cmluZygwLCBuKS50b0ludCgpOwotCi0gICAgICAgICAgICBpbnQgcCA9IG50aC5maW5kKCcrJywg
bik7Ci0gICAgICAgICAgICBpZiAocCAhPSAtMSkKLSAgICAgICAgICAgICAgICBiID0gbnRoLnN1
YnN0cmluZyhwICsgMSwgbnRoLmxlbmd0aCgpIC0gcCAtIDEpLnRvSW50KCk7Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBwID0gbnRoLmZpbmQoJy0nLCBuKTsKLSAgICAgICAg
ICAgICAgICBiID0gLW50aC5zdWJzdHJpbmcocCArIDEsIG50aC5sZW5ndGgoKSAtIHAgLSAxKS50
b0ludCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGIgPSBu
dGgudG9JbnQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIGEgaGVscGVyIGZ1
bmN0aW9uIGZvciBjaGVja2luZyBudGgtYXJndW1lbnRzCi1zdGF0aWMgYm9vbCBtYXRjaE50aChp
bnQgY291bnQsIGludCBhLCBpbnQgYikKLXsKLSAgICBpZiAoIWEpCi0gICAgICAgIHJldHVybiBj
b3VudCA9PSBiOwotICAgIGVsc2UgaWYgKGEgPiAwKSB7Ci0gICAgICAgIGlmIChjb3VudCA8IGIp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiAoY291bnQgLSBiKSAl
IGEgPT0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoY291bnQgPiBiKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gKGIgLSBjb3VudCkgJSAoLWEpID09IDA7
Ci0gICAgfQotfQotCi0KICNpZmRlZiBTVFlMRV9TSEFSSU5HX1NUQVRTCiBzdGF0aWMgaW50IGZy
YWN0aW9uID0gMDsKIHN0YXRpYyBpbnQgdG90YWwgPSAwOwpAQCAtMjAwNCwxMSArMTk0OSw3IEBA
IGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aENoaWxkOiB7Ci0gICAgICAgICAgICAgICAgaW50IGEsIGI7Ci0gICAgICAgICAgICAg
ICAgLy8gY2FsY3VsYXRlIGEgYW5kIGIgZXZlcnkgdGltZSB3ZSBydW4gdGhyb3VnaCBjaGVja09u
ZVNlbGVjdG9yCi0gICAgICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc2F2
ZWQgYWZ0ZXIgd2UgY2FsY3VsYXRlIGl0IG9uY2UsIGJ1dCBjdXJyZW50bHkKLSAgICAgICAgICAg
ICAgICAvLyB3b3VsZCByZXF1aXJlIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgQ1NTU2VsZWN0b3IK
LSAgICAgICAgICAgICAgICBpZiAoIXBhcnNlTnRoKHNlbC0+bV9hcmd1bWVudCwgYSwgYikpCisg
ICAgICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxDU1NOdGhTZWxlY3Rvcio+KHNlbCktPnBh
cnNlTnRoKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlm
IChlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKQEAgLTIwMzUsMTYgKzE5NzYsMTMg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaE50aChjb3VudCwgYSwgYikpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDU1NOdGhTZWxlY3Rvcio+KHNlbCkt
Pm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZTogewotICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlbGVjdG9yIGlzIHZlcnkgc2xvdy4KLSAgICAgICAg
ICAgICAgICBpbnQgYSwgYjsKLSAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgYSBhbmQgYiBl
dmVyeSB0aW1lIHdlIHJ1biB0aHJvdWdoIGNoZWNrT25lU2VsZWN0b3IgKHNlZSBhYm92ZSkKLSAg
ICAgICAgICAgICAgICBpZiAoIXBhcnNlTnRoKHNlbC0+bV9hcmd1bWVudCwgYSwgYikpCisgICAg
ICAgICAgICAgICAgaWYgKCFzdGF0aWNfY2FzdDxDU1NOdGhTZWxlY3Rvcio+KHNlbCktPnBhcnNl
TnRoKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChl
LT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKQEAgLTIwNjIsMTcgKzIwMDAsMTMgQEAg
Ym9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9z
aXRpb25hbFJ1bGVzKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
ICAgICBpZiAobWF0Y2hOdGgoY291bnQsIGEsIGIpKQorICAgICAgICAgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8Q1NTTnRoU2VsZWN0b3IqPihzZWwpLT5tYXRjaE50aChjb3VudCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQ6IHsKLSAgICAgICAgICAgICAgICBpbnQgYSwgYjsK
LSAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgYSBhbmQgYiBldmVyeSB0aW1lIHdlIHJ1biB0
aHJvdWdoIGNoZWNrT25lU2VsZWN0b3IKLSAgICAgICAgICAgICAgICAvLyB0aGlzIHNob3VsZCBw
cm9iYWJseSBiZSBzYXZlZCBhZnRlciB3ZSBjYWxjdWxhdGUgaXQgb25jZSwgYnV0IGN1cnJlbnRs
eQotICAgICAgICAgICAgICAgIC8vIHdvdWxkIHJlcXVpcmUgaW5jcmVhc2luZyB0aGUgc2l6ZSBv
ZiBDU1NTZWxlY3RvcgotICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdGgoc2VsLT5tX2FyZ3Vt
ZW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PENTU050aFNlbGVj
dG9yKj4oc2VsKS0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxl
bWVudE5vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBwYXJlbnROb2RlID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KGUtPnBhcmVudE5vZGUoKSk7CkBAIC0yMDkwLDE2ICsyMDI0
LDEzIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgbiA9
IG4tPm5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1hdGNoTnRoKGNvdW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PENTU050aFNlbGVjdG9yKj4oc2VsKS0+bWF0Y2hOdGgoY291bnQpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTnRoTGFzdE9mVHlwZTogewotICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNlbGVjdG9yIGlzIHZlcnkgc2xvdy4KLSAgICAgICAgICAgICAgICBpbnQgYSwgYjsK
LSAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgYSBhbmQgYiBldmVyeSB0aW1lIHdlIHJ1biB0
aHJvdWdoIGNoZWNrT25lU2VsZWN0b3IgKHNlZSBhYm92ZSkKLSAgICAgICAgICAgICAgICBpZiAo
IXBhcnNlTnRoKHNlbC0+bV9hcmd1bWVudCwgYSwgYikpCisgICAgICAgICAgICAgICAgaWYgKCFz
dGF0aWNfY2FzdDxDU1NOdGhTZWxlY3Rvcio+KHNlbCktPnBhcnNlTnRoKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChlLT5wYXJlbnROb2RlKCkgJiYg
ZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
RWxlbWVudCogcGFyZW50Tm9kZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihlLT5wYXJlbnROb2Rl
KCkpOwpAQCAtMjExOCw3ICsyMDQ5LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hOdGgoY291bnQsIGEsIGIpKQorICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTTnRoU2VsZWN0b3IqPihzZWwpLT5t
YXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23417</attachid>
            <date>2008-09-14 15:10:55 -0700</date>
            <delta_ts>2008-09-15 22:57:16 -0700</delta_ts>
            <desc>Minor improvements</desc>
            <filename>cachenthselector2.txt</filename>
            <type>text/plain</type>
            <size>22185</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjQwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDktMTEgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTgwCisg
ICAgICAgIAorICAgICAgICBDYWNoZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGFuK2IgZXhw
cmVzc2lvbiBpbiA6bnRoLWNoaWxkKGFuK2IpLiBSb3VnaGx5IGEgMnggc3BlZWR1cCBmb3IgcXVl
cnlTZWxlY3RvckFsbCgiZGl2Om50aC1jaGlsZCgybisxKSIpOworCisgICAgICAgIFdBUk5JTkc6
IE5PIFRFU1QgQ0FTRVMgQURERUQgT1IgQ0hBTkdFRAorCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6IEFkZCBDU1NOdGhTZWxlY3RvcgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIENTU050aFNlbGVjdG9yCisgICAgICAgICog
Y3NzL0NTU0dyYW1tYXIueTogQ3JlYXRlIENTU050aFNlbGVjdG9ycyBpbnN0ZWFkIG9mIENTU1Nl
bGVjdG9ycyBmb3IgOm50aC0qCisgICAgICAgICogY3NzL0NTU050aFNlbGVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NOdGhTZWxlY3Rvcjo6cGFyc2VOdGgpOiBNb3ZlZCBm
cm9tIENTU1N0eWxlU2VsZWN0b3IgYW5kIG1vZGlmaWVkIHRvIGNhY2hlCisgICAgICAgIChXZWJD
b3JlOjpDU1NOdGhTZWxlY3Rvcjo6bWF0Y2hOdGgpOiBNb3ZlZCBmcm9tIENTU1N0eWxlU2VsZWN0
b3IgYW5kIG1vZGlmaWVkIHRvIHVzZSB0aGUgY2FjaGUKKyAgICAgICAgKiBjc3MvQ1NTTnRoU2Vs
ZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NOdGhTZWxlY3Rvcjo6Q1NTTnRo
U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTnRoU2VsZWN0b3I6On5DU1NOdGhTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IpOiBUYWtlIGFkdmFudGFnZSBvZiBrbm93aW5nIHRoYXQgYWxsIDpudGgtKiBzZWxlY3RvcnMg
YXJlIENTU050aFNlbGVjdG9ycworCiAyMDA4LTA5LTEzICBKYW4gTWljaGFlbCBBbG9uem8gIDxq
bWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIEd0ayBidWlsZCBmaXgsIG5vdCByZXZpZXdl
ZC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAzNjQwMykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAKIAkJNUREMEEzODEwRDlBQzYwNzAw
NTZDMTIyIC8qIERPTUVsZW1lbnRUaW1lQ29udHJvbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQxNUYxNjgwRDlBMTY1RDAw
MzNDRTk3IC8qIERPTUVsZW1lbnRUaW1lQ29udHJvbC5oICovOyB9OwogCQk1REZFOEY1NjBEMTY0
NzdCMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hl
ZHVsZWRBY3Rpb24uY3BwICovOyB9OwogCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5MzcgLyogU2No
ZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmggKi87IH07
CisJCTYzNDU5QzY1MEU3OUNEMzMwMDhBREZBRiAvKiBDU1NOdGhTZWxlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0NTlDNjMwRTc5Q0QzMzAw
OEFERkFGIC8qIENTU050aFNlbGVjdG9yLmggKi87IH07CisJCTYzNDU5QzY2MEU3OUNEMzMwMDhB
REZBRiAvKiBDU1NOdGhTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2MzQ1OUM2NDBFNzlDRDMzMDA4QURGQUYgLyogQ1NTTnRoU2VsZWN0
b3IuY3BwICovOyB9OwogCQk2M0Q3QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0
eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Q3
QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggKi87IH07CiAJCTY1MEY1
M0RDMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NT
R3JhbW1hci5oICovOyB9OwogCQk2NTBGNTNERDA5RDE1RERGMDBDOUIwQzggLyogQ1NTR3JhbW1h
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1
ODE0NDA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTR3JhbW1hci5jcHAgKi87IH07CkBAIC01MjY1LDYg
KzUyNjcsOCBAQAogCQk1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBRdWFsaWZpZWROYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CiAJCTVEQ0Y4MzZDMEQ1OTE1OTgwMDk1M0JDNiAvKiBQbHVnaW5J
bmZvU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSW5mb1N0
b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzNDU5QzYzMEU3OUNEMzMwMDhB
REZBRiAvKiBDU1NOdGhTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NOdGhTZWxlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzQ1OUM2
NDBFNzlDRDMzMDA4QURGQUYgLyogQ1NTTnRoU2VsZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTTnRoU2VsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2M0Q3QjMyQzBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVSZW5kZXJTdHlsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyog
Q1NTR3JhbW1hci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JhbW1h
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBGQkYyNzBEOUFGMDQ2MDA4RkMy
OTIgLyogU1ZHSEtlcm5FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR0hLZXJuRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzA2NSw2ICsxMzA2OSw4IEBACiAJCQkJMzcxRjUxOUYwRDI2MkZBMDAwRUNFMEQ1IC8qIENT
U1NlZ21lbnRlZEZvbnRGYWNlLmggKi8sCiAJCQkJQTgwRTczNDgwQTE5OUM3NzAwN0ZCOEM1IC8q
IENTU1NlbGVjdG9yLmNwcCAqLywKIAkJCQlBODBFNzM0QjBBMTk5Qzc3MDA3RkI4QzUgLyogQ1NT
U2VsZWN0b3IuaCAqLywKKwkJCQk2MzQ1OUM2MzBFNzlDRDMzMDA4QURGQUYgLyogQ1NTTnRoU2Vs
ZWN0b3IuaCAqLywKKwkJCQk2MzQ1OUM2NDBFNzlDRDMzMDA4QURGQUYgLyogQ1NTTnRoU2VsZWN0
b3IuY3BwICovLAogCQkJCUE4MEU2RTBFMEExOTkxMUMwMDdGQjhDNSAvKiBDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCAqLywKIAkJCQlBODBFNkUwRDBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5oICovLAogCQkJCTE0MjAxMUFFMEEwMDMxMTcwMDgzMDNGOSAvKiBDU1NTdHls
ZURlY2xhcmF0aW9uLmlkbCAqLywKQEAgLTE1NTg3LDYgKzE1NTkzLDcgQEAKIAkJCQk3Mjg0QURE
RTBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0N0I0QkU4MEU3MTI0MTYwMDAzODg1NCAvKiBDYWNoZWRSZXNvdXJjZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjNEN0IzMkQwRTc4Q0QzRjAwRjc2MTdDIC8qIE5vZGVSZW5k
ZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0NTlDNjUwRTc5Q0QzMzAwOEFERkFGIC8q
IENTU050aFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlCQzY0RTBFN0M0ODg5MDA4
Qjk4NDkgLyogU2Nyb2xsYmFyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCODUzRTBF
N0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDOEI4NTRCMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNzM5Myw2ICsxNzQwMCw3IEBACiAJCQkJMzE2RkUwODEwRTZDQ0MyODAwQkY2MDg4
IC8qIERPTVdlYktpdENTU0tleWZyYW1lc1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Mjg0
QURERDBFNkZFQjMxMDAyRUVGQkQgLyogVXNlclN0eWxlU2hlZXRMb2FkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQ3QjRCRTkwRTcxMjQxNjAwMDM4ODU0IC8qIENhY2hlZFJlc291cmNlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTYzNDU5QzY2MEU3OUNEMzMwMDhBREZBRiAvKiBD
U1NOdGhTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhCODUzRDBFN0M3RjExMDBB
QjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShy
ZXZpc2lvbiAzNjQwMykKKysrIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJDU1NSdWxlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAi
Q1NTTnRoU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTExMDYsNyArMTEwNyw3IEBA
IHBzZXVkbzoKICAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQogICAgIHwgJzonIEZVTkNUSU9O
IE5USCAnKScgewogICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIq
PihwYXJzZXIpOwotICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAg
ICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcio+KHAtPmNyZWF0ZUZsb2F0aW5nTnRo
U2VsZWN0b3IoKSk7CiAgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzOwogICAgICAgICAkJC0+bV9hcmd1bWVudCA9ICQzOwogICAgICAgICAkJC0+bV92YWx1ZSA9
ICQyOwpAQCAtMTEyNCw3ICsxMTI1LDcgQEAgcHNldWRvOgogICAgIC8vIHVzZWQgYnkgOm50aC0q
CiAgICAgfCAnOicgRlVOQ1RJT04gSU5URUdFUiAnKScgewogICAgICAgICBDU1NQYXJzZXIgKnAg
PSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAkJCA9IHAtPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rv
cio+KHAtPmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3IoKSk7CiAgICAgICAgICQkLT5tX21hdGNo
ID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOwogICAgICAgICAkJC0+bV9hcmd1bWVudCA9IFN0
cmluZzo6bnVtYmVyKCQzKTsKICAgICAgICAgJCQtPm1fdmFsdWUgPSAkMjsKQEAgLTExNDIsNyAr
MTE0Myw3IEBAIHBzZXVkbzoKICAgICAvLyB1c2VkIGJ5IDpudGgtKihvZGQvZXZlbikgYW5kIDps
YW5nCiAgICAgfCAnOicgRlVOQ1RJT04gSURFTlQgJyknIHsKICAgICAgICAgQ1NTUGFyc2VyICpw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgJCQgPSBwLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0
b3IqPihwLT5jcmVhdGVGbG9hdGluZ050aFNlbGVjdG9yKCkpOwogICAgICAgICAkJC0+bV9tYXRj
aCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKICAgICAgICAgJCQtPm1fYXJndW1lbnQgPSAk
MzsKICAgICAgICAgJDIubG93ZXIoKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU050aFNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NOdGhTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NOdGhTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IERhdmlkIFNtaXRo
IChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNTU050aFNlbGVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gYSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIHBhcnNpbmcgbnRoLWFyZ3VtZW50cworYm9vbCBDU1NOdGhTZWxlY3Rvcjo6
cGFyc2VOdGgoKQoreworICAgIGlmIChtX3BhcnNlZE50aCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgCisgICAgY29uc3QgU3RyaW5nJiBtX2FyID0gbV9hcmd1bWVudDsKKyAgICAKKyAgICBp
ZiAobV9hci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBtX3Bh
cnNlZE50aCA9IHRydWU7CisgICAgbV9hID0gMDsKKyAgICBtX2IgPSAwOworICAgIGlmIChtX2Fy
ID09ICJvZGQiKSB7CisgICAgICAgIG1fYSA9IDI7CisgICAgICAgIG1fYiA9IDE7CisgICAgfSBl
bHNlIGlmIChtX2FyID09ICJldmVuIikgeworICAgICAgICBtX2EgPSAyOworICAgICAgICBtX2Ig
PSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBuID0gbV9hci5maW5kKCduJyk7CisgICAg
ICAgIGlmIChuICE9IC0xKSB7CisgICAgICAgICAgICBpZiAobV9hclswXSA9PSAnLScpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobiA9PSAxKQorICAgICAgICAgICAgICAgICAgICBtX2EgPSAtMTsg
Ly8gLW4gPT0gLTFuCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBt
X2EgPSBtX2FyLnN1YnN0cmluZygwLCBuKS50b0ludCgpOworICAgICAgICAgICAgfSBlbHNlIGlm
ICghbikKKyAgICAgICAgICAgICAgICBtX2EgPSAxOyAvLyBuID09IDFuCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV9hID0gbV9hci5zdWJzdHJpbmcoMCwgbikudG9JbnQoKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHAgPSBtX2FyLmZpbmQoJysnLCBuKTsKKyAg
ICAgICAgICAgIGlmIChwICE9IC0xKQorICAgICAgICAgICAgICAgIG1fYiA9IG1fYXIuc3Vic3Ry
aW5nKHAgKyAxLCBtX2FyLmxlbmd0aCgpIC0gcCAtIDEpLnRvSW50KCk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwID0gbV9hci5maW5kKCctJywgbik7CisgICAgICAgICAg
ICAgICAgbV9iID0gLW1fYXIuc3Vic3RyaW5nKHAgKyAxLCBtX2FyLmxlbmd0aCgpIC0gcCAtIDEp
LnRvSW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9i
ID0gbV9hci50b0ludCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gYSBoZWxw
ZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nIG50aC1hcmd1bWVudHMKK2Jvb2wgQ1NTTnRoU2VsZWN0
b3I6Om1hdGNoTnRoKGludCBjb3VudCkKK3sKKyAgICBpZiAoIW1fYSkKKyAgICAgICAgcmV0dXJu
IGNvdW50ID09IG1fYjsKKyAgICBlbHNlIGlmIChtX2EgPiAwKSB7CisgICAgICAgIGlmIChjb3Vu
dCA8IG1fYikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIChjb3Vu
dCAtIG1fYikgJSBtX2EgPT0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY291bnQgPiBt
X2IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiAobV9iIC0gY291
bnQpICUgKC1tX2EpID09IDA7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NOdGhTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU050aFNlbGVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NOdGhT
ZWxlY3Rvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ1NTTnRoU2VsZWN0b3JfaAorI2RlZmluZSBDU1NOdGhTZWxlY3Rvcl9oCisKKyNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgLy8gdGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2VsZWN0b3IgdXNp
bmcgOm50aC1jaGlsZCBmb3IgYSBTdHlsZVJ1bGUKKyAgICBjbGFzcyBDU1NOdGhTZWxlY3RvciA6
IHB1YmxpYyBDU1NTZWxlY3RvciB7CisgICAgcHVibGljOgorICAgICAgICBDU1NOdGhTZWxlY3Rv
cigpCisgICAgICAgICAgICA6IG1fYSgwKQorICAgICAgICAgICAgLCBtX2IoMCkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgQ1NTTnRoU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgcU5hbWUpCisgICAgICAgICAgICA6IG1fYSgwKQorICAgICAgICAgICAgLCBtX2IoMCkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgfkNTU050aFNlbGVjdG9yKCkKKyAgICAgICAg
eworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIHBhcnNlTnRoKCk7CisgICAgICAg
IGJvb2wgbWF0Y2hOdGgoaW50IGNvdW50KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBt
X2E7CisgICAgICAgIGludCBtX2I7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gQ1NTU2VsZWN0b3JfaApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAzNjQw
MykKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJDU1NSZWZsZWN0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NSdWxl
TGlzdC5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTTnRoU2VsZWN0
b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0
LmgiCiAjaW5jbHVkZSAiQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCIKQEAgLTQzODAsNiArNDM4MSwx
MyBAQCBDU1NTZWxlY3RvciogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1NlCiAgICAgbV9mbG9h
dGluZ1NlbGVjdG9ycy5hZGQoc2VsZWN0b3IpOwogICAgIHJldHVybiBzZWxlY3RvcjsKIH0KKyAg
ICAKK0NTU050aFNlbGVjdG9yKiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3Io
KQoreworICAgIENTU050aFNlbGVjdG9yKiBzZWxlY3RvciA9IG5ldyBDU1NOdGhTZWxlY3RvcjsK
KyAgICBtX2Zsb2F0aW5nU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7CisgICAgcmV0dXJuIHNlbGVj
dG9yOworfQogCiBDU1NTZWxlY3RvciogQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdTZWxlY3RvcihD
U1NTZWxlY3Rvciogc2VsZWN0b3IpCiB7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkocmV2aXNpb24gMzY0MDMpCisr
KyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTUnVsZTsKICAgICBjbGFzcyBDU1NS
dWxlTGlzdDsKICAgICBjbGFzcyBDU1NTZWxlY3RvcjsKKyAgICBjbGFzcyBDU1NOdGhTZWxlY3Rv
cjsKICAgICBjbGFzcyBDU1NTdHlsZVNoZWV0OwogICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNs
YXNzIENTU1ZhbHVlTGlzdDsKQEAgLTE1Miw2ICsxNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGludCB5eXBhcnNlKCk7CiAKICAgICAgICAgQ1NTU2VsZWN0b3IqIGNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgQ1NTTnRoU2VsZWN0b3IqIGNyZWF0ZUZsb2F0aW5n
TnRoU2VsZWN0b3IoKTsKICAgICAgICAgQ1NTU2VsZWN0b3IqIHNpbmtGbG9hdGluZ1NlbGVjdG9y
KENTU1NlbGVjdG9yKik7CiAKICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBjcmVhdGVGbG9h
dGluZ1ZhbHVlTGlzdCgpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiAzNjQwMykKKysrIFdl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3JlbGF0aW9uKERlc2NlbmRhbnQp
CiAgICAgICAgICAgICAsIG1fbWF0Y2goTm9uZSkKICAgICAgICAgICAgICwgbV9wc2V1ZG9UeXBl
KFBzZXVkb05vdFBhcnNlZCkKKyAgICAgICAgICAgICwgbV9wYXJzZWROdGgoZmFsc2UpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC01NCw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICwgbV9yZWxhdGlvbihEZXNjZW5kYW50KQogICAgICAgICAgICAgLCBtX21h
dGNoKE5vbmUpCiAgICAgICAgICAgICAsIG1fcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCisg
ICAgICAgICAgICAsIG1fcGFyc2VkTnRoKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KIApA
QCAtMTg4LDYgKzE5MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQg
bV9yZWxhdGlvbiAgICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uCiAgICAgICAgIG11dGFi
bGUgdW5zaWduZWQgbV9tYXRjaCAgICAgIDogNDsgLy8gZW51bSBNYXRjaAogICAgICAgICBtdXRh
YmxlIHVuc2lnbmVkIG1fcHNldWRvVHlwZSA6IDg7IC8vIFBzZXVkb1R5cGUKKyAgICAgICAgCisg
ICAgcHJvdGVjdGVkOgorICAgICAgICBib29sIG1fcGFyc2VkTnRoICAgICAgICAgICAgICA6IDE7
IC8vIHVzZWQgaW4gQ1NTTnRoU2VsZWN0b3IKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiAzNjQwMykKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUnVsZUxpc3QuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgor
I2luY2x1ZGUgIkNTU050aFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAj
aW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuaCIKQEAgLTg5MSw2MiArODkyLDYgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OgogICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVudCwgMCwgZHlu
YW1pY1BzZXVkbywgdHJ1ZSwgZmFsc2UpID09IFNlbGVjdG9yTWF0Y2hlczsKIH0KIAotLy8gYSBo
ZWxwZXIgZnVuY3Rpb24gZm9yIHBhcnNpbmcgbnRoLWFyZ3VtZW50cwotc3RhdGljIGJvb2wgcGFy
c2VOdGgoY29uc3QgU3RyaW5nJiBudGgsIGludCAmYSwgaW50ICZiKQotewotICAgIGlmIChudGgu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYSA9IDA7Ci0gICAgYiA9IDA7
Ci0gICAgaWYgKG50aCA9PSAib2RkIikgewotICAgICAgICBhID0gMjsKLSAgICAgICAgYiA9IDE7
Ci0gICAgfSBlbHNlIGlmIChudGggPT0gImV2ZW4iKSB7Ci0gICAgICAgIGEgPSAyOwotICAgICAg
ICBiID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpbnQgbiA9IG50aC5maW5kKCduJyk7Ci0g
ICAgICAgIGlmIChuICE9IC0xKSB7Ci0gICAgICAgICAgICBpZiAobnRoWzBdID09ICctJykgewot
ICAgICAgICAgICAgICAgIGlmIChuID09IDEpCi0gICAgICAgICAgICAgICAgICAgIGEgPSAtMTsg
Ly8gLW4gPT0gLTFuCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBh
ID0gbnRoLnN1YnN0cmluZygwLCBuKS50b0ludCgpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgh
bikKLSAgICAgICAgICAgICAgICBhID0gMTsgLy8gbiA9PSAxbgotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGEgPSBudGguc3Vic3RyaW5nKDAsIG4pLnRvSW50KCk7Ci0KLSAgICAg
ICAgICAgIGludCBwID0gbnRoLmZpbmQoJysnLCBuKTsKLSAgICAgICAgICAgIGlmIChwICE9IC0x
KQotICAgICAgICAgICAgICAgIGIgPSBudGguc3Vic3RyaW5nKHAgKyAxLCBudGgubGVuZ3RoKCkg
LSBwIC0gMSkudG9JbnQoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHAg
PSBudGguZmluZCgnLScsIG4pOwotICAgICAgICAgICAgICAgIGIgPSAtbnRoLnN1YnN0cmluZyhw
ICsgMSwgbnRoLmxlbmd0aCgpIC0gcCAtIDEpLnRvSW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgYiA9IG50aC50b0ludCgpOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotLy8gYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nIG50aC1hcmd1
bWVudHMKLXN0YXRpYyBib29sIG1hdGNoTnRoKGludCBjb3VudCwgaW50IGEsIGludCBiKQotewot
ICAgIGlmICghYSkKLSAgICAgICAgcmV0dXJuIGNvdW50ID09IGI7Ci0gICAgZWxzZSBpZiAoYSA+
IDApIHsKLSAgICAgICAgaWYgKGNvdW50IDwgYikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIChjb3VudCAtIGIpICUgYSA9PSAwOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChjb3VudCA+IGIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiAoYiAtIGNvdW50KSAlICgtYSkgPT0gMDsKLSAgICB9Ci19Ci0KLQogI2lmZGVmIFNUWUxF
X1NIQVJJTkdfU1RBVFMKIHN0YXRpYyBpbnQgZnJhY3Rpb24gPSAwOwogc3RhdGljIGludCB0b3Rh
bCA9IDA7CkBAIC0yMDIyLDExICsxOTY3LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6IHsKLSAgICAgICAgICAg
ICAgICBpbnQgYSwgYjsKLSAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgYSBhbmQgYiBldmVy
eSB0aW1lIHdlIHJ1biB0aHJvdWdoIGNoZWNrT25lU2VsZWN0b3IKLSAgICAgICAgICAgICAgICAv
LyB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBzYXZlZCBhZnRlciB3ZSBjYWxjdWxhdGUgaXQgb25j
ZSwgYnV0IGN1cnJlbnRseQotICAgICAgICAgICAgICAgIC8vIHdvdWxkIHJlcXVpcmUgaW5jcmVh
c2luZyB0aGUgc2l6ZSBvZiBDU1NTZWxlY3RvcgotICAgICAgICAgICAgICAgIGlmICghcGFyc2VO
dGgoc2VsLT5tX2FyZ3VtZW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19j
YXN0PENTU050aFNlbGVjdG9yKj4oc2VsKS0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJl
bnROb2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSAxOwpAQCAtMjA1MywxNiArMTk5NCwxMyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUt
PnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1hdGNoTnRoKGNvdW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PENTU050aFNlbGVjdG9yKj4oc2VsKS0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTnRoT2ZUeXBlOiB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2Vs
ZWN0b3IgaXMgdmVyeSBzbG93LgotICAgICAgICAgICAgICAgIGludCBhLCBiOwotICAgICAgICAg
ICAgICAgIC8vIGNhbGN1bGF0ZSBhIGFuZCBiIGV2ZXJ5IHRpbWUgd2UgcnVuIHRocm91Z2ggY2hl
Y2tPbmVTZWxlY3RvciAoc2VlIGFib3ZlKQotICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdGgo
c2VsLT5tX2FyZ3VtZW50LCBhLCBiKSkKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0
PENTU050aFNlbGVjdG9yKj4oc2VsKS0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnRO
b2RlKCktPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQg
PSAxOwpAQCAtMjA4MCwxNyArMjAxOCwxMyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50U3R5bGUtPnNl
dENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaE50aChjb3VudCwgYSwg
YikpCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDU1NOdGhTZWxlY3Rvcio+
KHNlbCktPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZDog
ewotICAgICAgICAgICAgICAgIGludCBhLCBiOwotICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0
ZSBhIGFuZCBiIGV2ZXJ5IHRpbWUgd2UgcnVuIHRocm91Z2ggY2hlY2tPbmVTZWxlY3RvcgotICAg
ICAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNhdmVkIGFmdGVyIHdlIGNh
bGN1bGF0ZSBpdCBvbmNlLCBidXQgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgLy8gd291bGQg
cmVxdWlyZSBpbmNyZWFzaW5nIHRoZSBzaXplIG9mIENTU1NlbGVjdG9yCi0gICAgICAgICAgICAg
ICAgaWYgKCFwYXJzZU50aChzZWwtPm1fYXJndW1lbnQsIGEsIGIpKQorICAgICAgICAgICAgICAg
IGlmICghc3RhdGljX2Nhc3Q8Q1NTTnRoU2VsZWN0b3IqPihzZWwpLT5wYXJzZU50aCgpKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAoZS0+cGFyZW50Tm9k
ZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEVsZW1lbnQqIHBhcmVudE5vZGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oZS0+cGFy
ZW50Tm9kZSgpKTsKQEAgLTIxMDgsMTYgKzIwNDIsMTMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7
CiAgICAgICAgICAgICAgICAgICAgICAgICBuID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hOdGgoY291bnQsIGEs
IGIpKQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTTnRoU2VsZWN0b3Iq
PihzZWwpLT5tYXRjaE50aChjb3VudCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBl
OiB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VsZWN0b3IgaXMgdmVyeSBzbG93
LgotICAgICAgICAgICAgICAgIGludCBhLCBiOwotICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0
ZSBhIGFuZCBiIGV2ZXJ5IHRpbWUgd2UgcnVuIHRocm91Z2ggY2hlY2tPbmVTZWxlY3RvciAoc2Vl
IGFib3ZlKQotICAgICAgICAgICAgICAgIGlmICghcGFyc2VOdGgoc2VsLT5tX2FyZ3VtZW50LCBh
LCBiKSkKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXRpY19jYXN0PENTU050aFNlbGVjdG9yKj4o
c2VsKS0+cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgaWYgKGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVudE5v
ZGUoKSkgewogICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBwYXJlbnROb2RlID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KGUtPnBhcmVudE5vZGUoKSk7CkBAIC0yMTM2LDcgKzIwNjcsNyBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLT5uZXh0
U2libGluZygpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChtYXRjaE50aChjb3VudCwgYSwgYikpCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxDU1NOdGhTZWxlY3Rvcio+KHNlbCktPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsK
</data>
<flag name="review"
          id="10448"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23432</attachid>
            <date>2008-09-15 01:06:53 -0700</date>
            <delta_ts>2008-09-15 01:46:31 -0700</delta_ts>
            <desc>Enable an existing optimization that wasn&apos;t being triggered</desc>
            <filename>collectrulesonlyspeedup.txt</filename>
            <type>text/plain</type>
            <size>1578</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjQyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDgtMDktMTUgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MAorICAgICAgICAK
KyAgICAgICAgPjJ4IHNwZWVkIHVwIGZvciA6bnRoLWNoaWxkIGluIHF1ZXJ5U2VsZWN0b3JBbGwg
YnkgYWxsb3dpbmcgaXQgdG8gY2FjaGUgZWFjaCBlbGVtZW50J3MgaW5kZXggaW4gaXRzIHBhcmVu
dCBlbGVtZW50LiBObyBjaGFuZ2Ugb24gbm9uLXF1ZXJ5U2VsZWN0b3IvcXVlcnlTZWxlY3RvckFs
bC4KKworICAgICAgICAqIGRvbS9TZWxlY3Rvck5vZGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVNlbGVjdG9yTm9kZUxpc3QpOiBQYXNzIGZhbHNlIGZvciBjb2xsZWN0UnVsZXNP
bmx5CisKIDIwMDgtMDktMTQgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVmYWN0b3IgUGxhdGZvcm1TY3JvbGxiYXJXaW4ncyBwYWludGluZyBzbyB0aGF0IGl0IGlz
IG5vdyBkb25lIGJ5IFNjcm9sbGJhclRoZW1lV2luLiAgUGxhdGZvcm1TY3JvbGxiYXJTYWZhcmkK
SW5kZXg6IFdlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCShyZXZpc2lvbiAzNjQwMykKKysrIFdlYkNv
cmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3
IEBAIFBhc3NSZWZQdHI8U3RhdGljTm9kZUxpc3Q+IGNyZWF0ZVNlbGVjdG8KICAgICAgICAgaWYg
KGVsZW1lbnQgJiYgKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IGVsZW1lbnQtPmlzRGVz
Y2VuZGFudE9mKHJvb3ROb2RlKSkpCiAgICAgICAgICAgICBub2Rlcy5hcHBlbmQoZWxlbWVudCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
IHNlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgc3RyaWN0UGFyc2luZyk7CisgICAgICAgIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQsIHN0
cmljdFBhcnNpbmcsIGZhbHNlKTsKICAgICAgICAgZm9yIChOb2RlKiBuID0gcm9vdE5vZGUtPmZp
cnN0Q2hpbGQoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUocm9vdE5vZGUpKSB7CiAgICAg
ICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>