<?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>45721</bug_id>
          
          <creation_ts>2010-09-13 17:12:03 -0700</creation_ts>
          <short_desc>Add a client interface to allow V8Proxy to ask whether an extension should run on a page</short_desc>
          <delta_ts>2010-09-22 11:59:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46068</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Perry">mpcomplete</reporter>
          <assigned_to name="Matt Perry">mpcomplete</assigned_to>
          <cc>abarth</cc>
    
    <cc>caseq</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>278585</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-13 17:12:03 -0700</bug_when>
    <thetext>This tracks chrome bug: http://code.google.com/p/chromium/issues/detail?id=53610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278615</commentid>
    <comment_count>1</comment_count>
      <attachid>67499</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-13 18:13:09 -0700</bug_when>
    <thetext>Created attachment 67499
add method to FrameLoaderClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278628</commentid>
    <comment_count>2</comment_count>
      <attachid>67499</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-13 18:32:18 -0700</bug_when>
    <thetext>Comment on attachment 67499
add method to FrameLoaderClient

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

This looks fine to me.  We can change how we grab the URL in a followup patch.  We&apos;ll need fishd to give the R+ since this touches the WebKit API.

&gt; WebCore/bindings/v8/V8DOMWindowShell.cpp:343
&gt; +        if (m_frame-&gt;loader()-&gt;client()-&gt;allowScriptExtension(extensions[i]-&gt;name(), m_frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;url(), extensionGroup))
Ugg... That&apos;s not the right way to grab the URL.  I see that&apos;s what the old code does, but we should get it from the m_frame-&gt;document()-&gt;url().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278629</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-13 18:32:41 -0700</bug_when>
    <thetext>+fishd for WebKit API review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278708</commentid>
    <comment_count>4</comment_count>
      <attachid>67499</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-13 21:25:09 -0700</bug_when>
    <thetext>Comment on attachment 67499
add method to FrameLoaderClient

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

&gt; WebKit/chromium/public/WebFrameClient.h:305
&gt; +    virtual bool allowScriptExtension(WebFrame*, const WebString&amp; extension, const WebURL&amp; url, int extensionGroup) { return false; }
nit: extension -&gt; extensionName?

url -&gt; documentURL?  actually, is this parameter necessary given that one can
just use WebFrame::url() to access the same value?

&gt; WebKit/chromium/public/WebKitClient.h:243
&gt; +    // given URL and script context group.
nit: &quot;script context group&quot; -&gt; &quot;extension group&quot;

should there be some caller of this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279048</commentid>
    <comment_count>5</comment_count>
      <attachid>67499</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-14 11:38:27 -0700</bug_when>
    <thetext>Comment on attachment 67499
add method to FrameLoaderClient

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

&gt; WebCore/bindings/v8/V8DOMWindowShell.cpp:343
&gt; +        if (m_frame-&gt;loader()-&gt;client()-&gt;allowScriptExtension(extensions[i]-&gt;name(), m_frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;url(), extensionGroup))
See the note above: we used to use the document()-&gt;url(), but it didn&apos;t work due to window.open navigating to about:blank first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279051</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-14 11:43:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 67499 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67499&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/bindings/v8/V8DOMWindowShell.cpp:343
&gt; &gt; +        if (m_frame-&gt;loader()-&gt;client()-&gt;allowScriptExtension(extensions[i]-&gt;name(), m_frame-&gt;loader()-&gt;activeDocumentLoader()-&gt;url(), extensionGroup))
&gt; See the note above: we used to use the document()-&gt;url(), but it didn&apos;t work due to window.open navigating to about:blank first.

I suspect using the DocumentLoader isn&apos;t the right fix for that bug, but that&apos;s an issue for another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279164</commentid>
    <comment_count>7</comment_count>
      <attachid>67499</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-14 14:11:11 -0700</bug_when>
    <thetext>Comment on attachment 67499
add method to FrameLoaderClient

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

I&apos;m removing the URL parameter from the FrameLoaderClient interface, and moving the call to get the URL up into the WebKit/chromium layer. That&apos;s the highest layer where I still have access to the activeDocumentLoader, and if I can fix the bug in a different way and remove the need for the URL parameter entirely, there will be less interface to change.

&gt; WebKit/chromium/public/WebFrameClient.h:305
&gt; +    virtual bool allowScriptExtension(WebFrame*, const WebString&amp; extension, const WebURL&amp; url, int extensionGroup) { return false; }
Name changes made. See my reply to Adam about why we need the URL parameter.

&gt; WebKit/chromium/public/WebKitClient.h:243
&gt; +    // given URL and script context group.
Good catch - this was left over from an abandoned change. I&apos;ll reverted this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279183</commentid>
    <comment_count>8</comment_count>
      <attachid>67608</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-14 14:42:36 -0700</bug_when>
    <thetext>Created attachment 67608
fixed with fishd&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279387</commentid>
    <comment_count>9</comment_count>
      <attachid>67608</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-14 22:35:45 -0700</bug_when>
    <thetext>Comment on attachment 67608
fixed with fishd&apos;s comments

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

&gt; WebKit/chromium/src/FrameLoaderClientImpl.cpp:156
&gt; +    WebURL documentURL = m_webFrame-&gt;frame()-&gt;loader()-&gt;activeDocumentLoader()-&gt;url();
isn&apos;t this the same exact thing as:

  WebFrame* frame = ...;
  WebDataSource* ds = frame-&gt;provisionalDataSource();
  if (!ds)
    ds = frame-&gt;dataSource();
  WebURL url = ds-&gt;request().url();

In other words, you shouldn&apos;t need to pass documentURL here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279668</commentid>
    <comment_count>10</comment_count>
      <attachid>67702</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-15 12:54:00 -0700</bug_when>
    <thetext>Created attachment 67702
remove URL param

Thanks for the tip! I removed the URL param from the interface. (FYI, the chromium side of this change is here: http://codereview.chromium.org/3398001/show )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280559</commentid>
    <comment_count>11</comment_count>
      <attachid>67702</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-17 00:13:09 -0700</bug_when>
    <thetext>Comment on attachment 67702
remove URL param

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281820</commentid>
    <comment_count>12</comment_count>
      <attachid>68138</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-20 14:36:34 -0700</bug_when>
    <thetext>Created attachment 68138
try #2, this time with a multi-stage patch

My last patch broke some things and got reverted. I&apos;m going to try to land it again, in multiple stages this time.

The differences from the previous patch are:
- This is an additive change only. I added a registerExtension2 API that will be unused until a corresponding Chromium change lands.
- WebFrameClient defaults to allowing all script extensions. I think this is what broke the previous patch - test_shell and other test clients were probably preventing important v8 extensions from running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281822</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-20 14:39:07 -0700</bug_when>
    <thetext>Attachment 68138 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/bindings/v8/V8Proxy.cpp:856:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/bindings/v8/V8Proxy.h:131:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281826</commentid>
    <comment_count>14</comment_count>
      <attachid>68139</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-20 14:45:11 -0700</bug_when>
    <thetext>Created attachment 68139
style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282424</commentid>
    <comment_count>15</comment_count>
      <attachid>68139</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-21 10:48:47 -0700</bug_when>
    <thetext>Comment on attachment 68139
style fixes

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

&gt; WebCore/bindings/v8/V8DOMWindowShell.cpp:344
&gt; +            // Ensure our extension is always allowed.

nit: Ensure our date extension is always allowed.

&gt; WebKit/chromium/public/WebFrameClient.h:305
&gt; +    virtual bool allowScriptExtension(WebFrame*, const WebString&amp; extensionName, int extensionGroup) { return true; }

should the magic extensionGroup with value 0 be defined here?

&gt; WebKit/chromium/public/WebScriptController.h:62
&gt; +    WEBKIT_API static void registerExtension2(v8::Extension*);

it may be easier to just call this registerExtension.  overriding based on arguments is fine.
that way you do not need to rename registerExtension2 back to registerExtension later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282533</commentid>
    <comment_count>16</comment_count>
      <attachid>68287</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-21 13:48:13 -0700</bug_when>
    <thetext>Created attachment 68287
fixed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282535</commentid>
    <comment_count>17</comment_count>
      <attachid>68139</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-21 13:50:09 -0700</bug_when>
    <thetext>Comment on attachment 68139
style fixes

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

&gt;&gt; WebCore/bindings/v8/V8DOMWindowShell.cpp:344
&gt;&gt; +            // Ensure our extension is always allowed.
&gt; 
&gt; nit: Ensure our date extension is always allowed.

Done.

&gt;&gt; WebKit/chromium/public/WebFrameClient.h:305
&gt;&gt; +    virtual bool allowScriptExtension(WebFrame*, const WebString&amp; extensionName, int extensionGroup) { return true; }
&gt; 
&gt; should the magic extensionGroup with value 0 be defined here?

I added some comments.

&gt;&gt; WebKit/chromium/public/WebScriptController.h:62
&gt;&gt; +    WEBKIT_API static void registerExtension2(v8::Extension*);
&gt; 
&gt; it may be easier to just call this registerExtension.  overriding based on arguments is fine.
&gt; that way you do not need to rename registerExtension2 back to registerExtension later.

Done. I was a bit wary to do this at first, since registerExtension already exists with the same signature. But I think the new version will have the same behavior as long as allowScriptExtension returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282546</commentid>
    <comment_count>18</comment_count>
      <attachid>68288</attachid>
    <who name="Matt Perry">mpcomplete</who>
    <bug_when>2010-09-21 14:01:16 -0700</bug_when>
    <thetext>Created attachment 68288
fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282796</commentid>
    <comment_count>19</comment_count>
      <attachid>68288</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-22 00:20:13 -0700</bug_when>
    <thetext>Comment on attachment 68288
fixed ChangeLog

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283117</commentid>
    <comment_count>20</comment_count>
      <attachid>68288</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 11:59:27 -0700</bug_when>
    <thetext>Comment on attachment 68288
fixed ChangeLog

Clearing flags on attachment: 68288

Committed r68061: &lt;http://trac.webkit.org/changeset/68061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283120</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 11:59:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67499</attachid>
            <date>2010-09-13 18:13:09 -0700</date>
            <delta_ts>2010-09-14 14:42:36 -0700</delta_ts>
            <desc>add method to FrameLoaderClient</desc>
            <filename>delegate.diff</filename>
            <type>text/plain</type>
            <size>13603</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3NDIzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOS0xMyAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhhdmUgVjhET01XaW5kb3dTaGVsbCBhc2sgdGhlIGVtYmVkZGVyIHdoZXRoZXIgdG8gcnVu
IGEgVjggZXh0ZW5zaW9uCisgICAgICAgIGluIGEgcGFydGljdWxhciBzY3JpcHQgY29udGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzIxCisK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZU5ld0NvbnRleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKwogMjAxMC0wOS0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCShyZXZpc2lvbiA2NzQyMykKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
MCwyMyArMzMwLDE4IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiBWOERPTVdpbmRvd1MK
IAogICAgIC8vIFVzZWQgdG8gYXZvaWQgc2xlZXAgY2FsbHMgaW4gdW5sb2FkIGhhbmRsZXJzLgog
ICAgIGlmICghVjhQcm94eTo6cmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOChEYXRlRXh0ZW5zaW9u
OjpnZXQoKSkpCi0gICAgICAgIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKERhdGVFeHRlbnNp
b246OmdldCgpLCBTdHJpbmcoKSk7CisgICAgICAgIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9u
KERhdGVFeHRlbnNpb246OmdldCgpKTsKIAogICAgIC8vIER5bmFtaWNhbGx5IHRlbGwgdjggYWJv
dXQgb3VyIGV4dGVuc2lvbnMgbm93LgogICAgIGNvbnN0IFY4RXh0ZW5zaW9ucyYgZXh0ZW5zaW9u
cyA9IFY4UHJveHk6OmV4dGVuc2lvbnMoKTsKICAgICBPd25BcnJheVB0cjxjb25zdCBjaGFyKj4g
ZXh0ZW5zaW9uTmFtZXMobmV3IGNvbnN0IGNoYXIqW2V4dGVuc2lvbnMuc2l6ZSgpXSk7CiAgICAg
aW50IGluZGV4ID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4dGVuc2lvbnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnNbaV0uZ3JvdXAgJiYgZXh0ZW5zaW9u
c1tpXS5ncm91cCAhPSBleHRlbnNpb25Hcm91cCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAg
ICAgICAgIC8vIE5vdGU6IHdlIGNoZWNrIHRoZSBsb2FkZXIgVVJMIGhlcmUgaW5zdGVhZCBvZiB0
aGUgZG9jdW1lbnQgVVJMCiAgICAgICAgIC8vIGJlY2F1c2Ugd2UgbWlnaHQgYmUgY3VycmVudGx5
IGxvYWRpbmcgYW4gVVJMIGludG8gYSBibGFuayBwYWdlLgogICAgICAgICAvLyBTZWUgaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTA5MjQKLSAgICAg
ICAgaWYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lLmxlbmd0aCgpID4gMCAmJiAoZXh0ZW5zaW9uc1tp
XS5zY2hlbWUgIT0gbV9mcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnVy
bCgpLnByb3RvY29sKCkpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgZXh0ZW5z
aW9uTmFtZXNbaW5kZXgrK10gPSBleHRlbnNpb25zW2ldLmV4dGVuc2lvbi0+bmFtZSgpOworICAg
ICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd1NjcmlwdEV4dGVuc2lv
bihleHRlbnNpb25zW2ldLT5uYW1lKCksIG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT51cmwoKSwgZXh0ZW5zaW9uR3JvdXApKQorICAgICAgICAgICAgZXh0ZW5zaW9u
TmFtZXNbaW5kZXgrK10gPSBleHRlbnNpb25zW2ldLT5uYW1lKCk7CiAgICAgfQogICAgIHY4OjpF
eHRlbnNpb25Db25maWd1cmF0aW9uIGV4dGVuc2lvbkNvbmZpZ3VyYXRpb24oaW5kZXgsIGV4dGVu
c2lvbk5hbWVzLmdldCgpKTsKICAgICByZXN1bHQgPSB2ODo6Q29udGV4dDo6TmV3KCZleHRlbnNp
b25Db25maWd1cmF0aW9uLCBnbG9iYWxUZW1wbGF0ZSwgZ2xvYmFsKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UHJveHkuY3BwCShyZXZpc2lvbiA2NzQyMykKKysrIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzMiwyNSArODMyLDE3IEBAIHZvaWQgVjhQ
cm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgodjgKIGJvb2wgVjhQcm94eTo6cmVnaXN0ZXJl
ZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24pCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2V4dGVuc2lvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KG1fZXh0ZW5zaW9uc1tpXS5leHRlbnNpb24gPT0gZXh0ZW5zaW9uKQorICAgICAgICBpZiAobV9l
eHRlbnNpb25zW2ldID09IGV4dGVuc2lvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVu
c2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgc2NoZW1lUmVzdHJp
Y3Rpb24pCit2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4
dGVuc2lvbikKIHsKICAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNpb24pOwotICAg
IFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge3NjaGVtZVJlc3RyaWN0aW9uLCAwLCBleHRlbnNpb259
OwotICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQoaW5mbyk7Ci19Ci0KLXZvaWQgVjhQcm94eTo6cmVn
aXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBpbnQgZXh0ZW5zaW9uR3Jv
dXApCi17Ci0gICAgcmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgoZXh0ZW5zaW9uKTsKLSAgICBWOEV4
dGVuc2lvbkluZm8gaW5mbyA9IHtTdHJpbmcoKSwgZXh0ZW5zaW9uR3JvdXAsIGV4dGVuc2lvbn07
Ci0gICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZvKTsKKyAgICBtX2V4dGVuc2lvbnMuYXBwZW5k
KGV4dGVuc2lvbik7CiB9CiAKIGJvb2wgVjhQcm94eTo6c2V0Q29udGV4dERlYnVnSWQoaW50IGRl
YnVnSWQpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCShyZXZpc2lvbiA2NzQyMykKKysrIFdl
YkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTcgKzEx
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNvbnN0IGludCBrTWF4UmVjdXJzaW9u
RGVwdGggPSAyMDsKIAotICAgIC8vIEluZm9ybWF0aW9uIGFib3V0IGFuIGV4dGVuc2lvbiB0aGF0
IGlzIHJlZ2lzdGVyZWQgZm9yIHVzZSB3aXRoIFY4LiBJZgotICAgIC8vIHNjaGVtZSBpcyBub24t
ZW1wdHksIGl0IGNvbnRhaW5zIHRoZSBVUkwgc2NoZW1lIHRoZSBleHRlbnNpb24gc2hvdWxkIGJl
Ci0gICAgLy8gdXNlZCB3aXRoLiBJZiBncm91cCBpcyBub24temVybywgdGhlIGV4dGVuc2lvbiB3
aWxsIG9ubHkgYmUgbG9hZGVkIGludG8KLSAgICAvLyBzY3JpcHQgY29udGV4dHMgdGhhdCBiZWxv
bmcgdG8gdGhhdCBncm91cC4gT3RoZXJ3aXNlLCB0aGUgZXh0ZW5zaW9uIGlzCi0gICAgLy8gdXNl
ZCB3aXRoIGFsbCBzY2hlbWVzIGFuZCBjb250ZXh0cy4KLSAgICBzdHJ1Y3QgVjhFeHRlbnNpb25J
bmZvIHsKLSAgICAgICAgU3RyaW5nIHNjaGVtZTsKLSAgICAgICAgaW50IGdyb3VwOwotICAgICAg
ICB2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb247Ci0gICAgfTsKLSAgICB0eXBlZGVmIFdURjo6VmVj
dG9yPFY4RXh0ZW5zaW9uSW5mbz4gVjhFeHRlbnNpb25zOworICAgIHR5cGVkZWYgV1RGOjpWZWN0
b3I8djg6OkV4dGVuc2lvbio+IFY4RXh0ZW5zaW9uczsKIAogICAgIGNsYXNzIFY4UHJveHkgewog
ICAgIHB1YmxpYzoKQEAgLTMxOSwxNSArMzA5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBzZXRDb250ZXh0RGVidWdJZChpbnQgaWQpOwogICAgICAgICBzdGF0aWMgaW50
IGNvbnRleHREZWJ1Z0lkKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKIAotICAgICAgICAvLyBS
ZWdpc3RlcnMgYSB2OCBleHRlbnNpb24gdG8gYmUgYXZhaWxhYmxlIG9uIHdlYnBhZ2VzLiBUaGUg
dHdvIGZvcm1zCi0gICAgICAgIC8vIG9mZmVyIHZhcmlvdXMgcmVzdHJpY3Rpb25zIG9uIHdoYXQg
dHlwZXMgb2YgY29udGV4dHMgdGhlIGV4dGVuc2lvbiBpcwotICAgICAgICAvLyBsb2FkZWQgaW50
by4gSWYgYSBzY2hlbWUgaXMgcHJvdmlkZWQsIG9ubHkgcGFnZXMgd2hvc2UgVVJMIGhhcyB0aGUg
Z2l2ZW4KLSAgICAgICAgLy8gc2NoZW1lIHdpbGwgbWF0Y2guIElmIGV4dGVuc2lvbkdyb3VwIGlz
IHByb3ZpZGVkLCB0aGUgZXh0ZW5zaW9uIHdpbGwKLSAgICAgICAgLy8gb25seSBiZSBsb2FkZWQg
aW50byBzY3JpcHRzIHJ1biB2aWEgZXZhbHVhdGVJbk5ld1dvcmxkIHdpdGggdGhlCi0gICAgICAg
IC8vIG1hdGNoaW5nIGdyb3VwLiAgV2lsbCBvbmx5IGFmZmVjdCB2OCBjb250ZXh0cyBpbml0aWFs
aXplZCBhZnRlciB0aGlzCi0gICAgICAgIC8vIGNhbGwuIFRha2VzIG93bmVyc2hpcCBvZiB0aGUg
djg6OkV4dGVuc2lvbiBvYmplY3QgcGFzc2VkLgotICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiwgY29uc3QgU3RyaW5nJiBzY2hlbWVSZXN0cmljdGlv
bik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24q
LCBpbnQgZXh0ZW5zaW9uR3JvdXApOworICAgICAgICAvLyBSZWdpc3RlcnMgYSB2OCBleHRlbnNp
b24gdG8gYmUgYXZhaWxhYmxlIG9uIHdlYnBhZ2VzLiBXaWxsIG9ubHkKKyAgICAgICAgLy8gYWZm
ZWN0IHY4IGNvbnRleHRzIGluaXRpYWxpemVkIGFmdGVyIHRoaXMgY2FsbC4gVGFrZXMgb3duZXJz
aGlwIG9mCisgICAgICAgIC8vIHRoZSB2ODo6RXh0ZW5zaW9uIG9iamVjdCBwYXNzZWQuCisgICAg
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qKTsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7
CiAgICAgICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgodjg6OkV4dGVu
c2lvbiopOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNjc0MjMpCisrKyBX
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDYgKzM1
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU2NyaXB0Q29udGV4dEZv
ckZyYW1lKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9y
RnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250
ZXh0KCkgeyB9CisgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBLVVJMJiB1cmwsIGludCBleHRlbnNpb25Hcm91cCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDY3NDIzKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlw
dENvbnRleHRGb3JGcmFtZSgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lT
Y3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVJc29sYXRlZFNjcmlwdENvbnRleHQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxv
d1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBpbnQgZXh0ZW5zaW9uR3JvdXApID0gMDsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSA9IDA7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc0MjMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDktMTMgIE1hdHQg
UGVycnkgIDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYXZlIFY4RE9NV2luZG93U2hlbGwgYXNrIHRoZSBl
bWJlZGRlciB3aGV0aGVyIHRvIHJ1biBhIFY4IGV4dGVuc2lvbgorICAgICAgICBpbiBhIHBhcnRp
Y3VsYXIgc2NyaXB0IGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTcyMQorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjphbGxvd1NjcmlwdEV4dGVuc2lvbik6
CisgICAgICAgICogcHVibGljL1dlYktpdENsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJL
aXRDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93U2NyaXB0RXh0
ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAg
ICogc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jp
cHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbik6CisKIDIwMTAtMDktMTMgIENocmlzIEd1
aWxsb3J5ICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBGbGVpemFjaC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaAkocmV2aXNpb24gNjc0MjMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gc2NyaXB0cy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRD
b250ZXh0KFdlYkZyYW1lKikgeyB9CiAKKyAgICAvLyBDb250cm9scyB3aGV0aGVyIHRoZSBnaXZl
biBzY3JpcHQgZXh0ZW5zaW9uIHNob3VsZCBydW4gaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24oV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGV4
dGVuc2lvbiwgY29uc3QgV2ViVVJMJiB1cmwsIGludCBleHRlbnNpb25Hcm91cCkgeyByZXR1cm4g
ZmFsc2U7IH0KKwogCiAgICAgLy8gR2VvbWV0cnkgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYktpdENsaWVudC5oCShyZXZpc2lvbiA2NzQyMykKKysrIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViS2l0Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw2ICsyMzcsMTEg
QEAgcHVibGljOgogICAgIC8vIHNhbmRib3ggaXNuJ3QgYWN0aXZlKS4KICAgICB2aXJ0dWFsIGJv
b2wgc2FuZGJveEVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgLy8gU2NyaXB0IC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIGFsbG93IHRoZSBnaXZlbiBz
Y3JpcHQgZXh0ZW5zaW9uIHRvIHJ1biBhdCB0aGUKKyAgICAvLyBnaXZlbiBVUkwgYW5kIHNjcmlw
dCBjb250ZXh0IGdyb3VwLgorICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihj
b25zdCBXZWJTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgV2ViVVJMJiB1cmwsIGludCBleHRlbnNp
b25Hcm91cCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFNoYXJlZCBXb3JrZXJzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA2NzQyMykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxOCArNDMsMTAgQEAgY2xhc3MgV2ViU3RyaW5nOwog
CiBjbGFzcyBXZWJTY3JpcHRDb250cm9sbGVyIHsKIHB1YmxpYzoKLSAgICAvLyBSZWdpc3RlcnMg
YSB2OCBleHRlbnNpb24gdG8gYmUgYXZhaWxhYmxlIG9uIHdlYnBhZ2VzLiBUaGUgdGhyZWUgZm9y
bXMKLSAgICAvLyBvZmZlciB2YXJpb3VzIHJlc3RyaWN0aW9ucyBvbiB3aGF0IHR5cGVzIG9mIGNv
bnRleHRzIHRoZSBleHRlbnNpb24gaXMKLSAgICAvLyBsb2FkZWQgaW50by4gSWYgYSBzY2hlbWUg
aXMgcHJvdmlkZWQsIG9ubHkgcGFnZXMgd2hvc2UgVVJMIGhhcyB0aGUgZ2l2ZW4KLSAgICAvLyBz
Y2hlbWUgd2lsbCBtYXRjaC4gSWYgZXh0ZW5zaW9uR3JvdXAgaXMgcHJvdmlkZWQsIHRoZSBleHRl
bnNpb24gd2lsbCBvbmx5Ci0gICAgLy8gYmUgbG9hZGVkIGludG8gc2NyaXB0cyBydW4gdmlhIFdl
YkZyYW1lOjpFeGVjdXRlSW5OZXdXb3JsZCB3aXRoIHRoZQotICAgIC8vIG1hdGNoaW5nIGdyb3Vw
LgorICAgIC8vIFJlZ2lzdGVycyBhIHY4IGV4dGVuc2lvbiB0byBiZSBhdmFpbGFibGUgb24gd2Vi
cGFnZXMuCiAgICAgLy8gV2lsbCBvbmx5IGFmZmVjdCB2OCBjb250ZXh0cyBpbml0aWFsaXplZCBh
ZnRlciB0aGlzIGNhbGwuIFRha2VzIG93bmVyc2hpcAogICAgIC8vIG9mIHRoZSB2ODo6RXh0ZW5z
aW9uIG9iamVjdCBwYXNzZWQuCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZWdpc3RlckV4
dGVuc2lvbih2ODo6RXh0ZW5zaW9uKik7Ci0gICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZWdp
c3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc2NoZW1lUmVzdHJpY3Rpb24pOwot
ICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lv
biosIGludCBleHRlbnNpb25Hcm91cCk7CiAKICAgICAvLyBFbmFibGVzIHNwZWNpYWwgc2V0dGlu
Z3Mgd2hpY2ggYXJlIG9ubHkgYXBwbGljYWJsZSBpZiBWOCBpcyBleGVjdXRlZAogICAgIC8vIGlu
IHRoZSBzaW5nbGUgdGhyZWFkIHdoaWNoIG11c3QgYmUgdGhlIG1haW4gdGhyZWFkLgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiA2NzQyMykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxNSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlkQ3JlYXRlSXNvCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5k
aWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQobV93ZWJGcmFtZSk7CiB9CiAKK2Jvb2wgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjphbGxvd1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBLVVJMJiB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGV4dGVuc2lvbkdyb3VwKQoreworICAgIGlmIChtX3dlYkZyYW1lLT5j
bGllbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5hbGxvd1Njcmlw
dEV4dGVuc2lvbihtX3dlYkZyYW1lLCBleHRlbnNpb24sIHVybCwgZXh0ZW5zaW9uR3JvdXApOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFBl
cmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdAogewogfQpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDY3NDIzKQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksNiArNjksMTAgQEAgcHVibGljOgogICAgIC8vIGluIGdhcmJhZ2UgY29sbGVjdGlvbi4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KCk7CiAKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIGFsbG93IHRoZSBnaXZlbiBWOCBleHRlbnNp
b24gdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUgc2NyaXB0IGNvbnRleHQgYXQgdGhlIGdpdmVu
IHBhZ2UgVVJMIGFuZCBjb250ZXh0IGdyb3VwLgorICAgIHZpcnR1YWwgYm9vbCBhbGxvd1Njcmlw
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBpbnQgZXh0ZW5zaW9uR3JvdXApOworCiAgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXco
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVWaWV3KCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDY3NDIzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTkgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHZvaWQgV2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVu
c2lvbiogZXh0ZW5zaW9uKQogewotICAgIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVu
c2lvbiwgV2ViU3RyaW5nKCkpOwotfQotCi12b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lz
dGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzY2hlbWVSZXN0cmlj
dGlvbikKLXsKLSAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24sIHNjaGVt
ZVJlc3RyaWN0aW9uKTsKLX0KLQotdm9pZCBXZWJTY3JpcHRDb250cm9sbGVyOjpyZWdpc3RlckV4
dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnNpb25Hcm91cCkKLXsKLSAgICBWOFByb3h5
OjpyZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24sIGV4dGVuc2lvbkdyb3VwKTsKKyAgICBWOFBy
b3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24pOwogfQogCiB2b2lkIFdlYlNjcmlwdENv
bnRyb2xsZXI6OmVuYWJsZVY4U2luZ2xlVGhyZWFkTW9kZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67608</attachid>
            <date>2010-09-14 14:42:36 -0700</date>
            <delta_ts>2010-09-15 12:54:00 -0700</delta_ts>
            <desc>fixed with fishd&apos;s comments</desc>
            <filename>delegate-2.diff</filename>
            <type>text/plain</type>
            <size>12938</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3NDg0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOS0xMyAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhhdmUgVjhET01XaW5kb3dTaGVsbCBhc2sgdGhlIGVtYmVkZGVyIHdoZXRoZXIgdG8gcnVu
IGEgVjggZXh0ZW5zaW9uCisgICAgICAgIGluIGEgcGFydGljdWxhciBzY3JpcHQgY29udGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzIxCisK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZU5ld0NvbnRleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKwogMjAxMC0wOS0xNCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xp
bmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gNjc0
ODQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzAsMjMgKzMzMCwxNSBAQCB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4g
VjhET01XaW5kb3dTCiAKICAgICAvLyBVc2VkIHRvIGF2b2lkIHNsZWVwIGNhbGxzIGluIHVubG9h
ZCBoYW5kbGVycy4KICAgICBpZiAoIVY4UHJveHk6OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgo
RGF0ZUV4dGVuc2lvbjo6Z2V0KCkpKQotICAgICAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lv
bihEYXRlRXh0ZW5zaW9uOjpnZXQoKSwgU3RyaW5nKCkpOworICAgICAgICBWOFByb3h5OjpyZWdp
c3RlckV4dGVuc2lvbihEYXRlRXh0ZW5zaW9uOjpnZXQoKSk7CiAKICAgICAvLyBEeW5hbWljYWxs
eSB0ZWxsIHY4IGFib3V0IG91ciBleHRlbnNpb25zIG5vdy4KICAgICBjb25zdCBWOEV4dGVuc2lv
bnMmIGV4dGVuc2lvbnMgPSBWOFByb3h5OjpleHRlbnNpb25zKCk7CiAgICAgT3duQXJyYXlQdHI8
Y29uc3QgY2hhcio+IGV4dGVuc2lvbk5hbWVzKG5ldyBjb25zdCBjaGFyKltleHRlbnNpb25zLnNp
emUoKV0pOwogICAgIGludCBpbmRleCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
eHRlbnNpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLmdyb3Vw
ICYmIGV4dGVuc2lvbnNbaV0uZ3JvdXAgIT0gZXh0ZW5zaW9uR3JvdXApCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0aGUgbG9hZGVyIFVSTCBoZXJl
IGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTAotICAgICAgICAvLyBiZWNhdXNlIHdlIG1pZ2h0
IGJlIGN1cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxhbmsgcGFnZS4KLSAgICAgICAg
Ly8gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTEwOTI0Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVtZS5sZW5ndGgoKSA+IDAgJiYg
KGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIGV4dGVuc2lvbk5hbWVzW2luZGV4KytdID0gZXh0ZW5zaW9uc1tpXS5leHRlbnNpb24t
Pm5hbWUoKTsKKyAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dT
Y3JpcHRFeHRlbnNpb24oZXh0ZW5zaW9uc1tpXS0+bmFtZSgpLCBleHRlbnNpb25Hcm91cCkpCisg
ICAgICAgICAgICBleHRlbnNpb25OYW1lc1tpbmRleCsrXSA9IGV4dGVuc2lvbnNbaV0tPm5hbWUo
KTsKICAgICB9CiAgICAgdjg6OkV4dGVuc2lvbkNvbmZpZ3VyYXRpb24gZXh0ZW5zaW9uQ29uZmln
dXJhdGlvbihpbmRleCwgZXh0ZW5zaW9uTmFtZXMuZ2V0KCkpOwogICAgIHJlc3VsdCA9IHY4OjpD
b250ZXh0OjpOZXcoJmV4dGVuc2lvbkNvbmZpZ3VyYXRpb24sIGdsb2JhbFRlbXBsYXRlLCBnbG9i
YWwpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDY3NDg0KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMyLDI1
ICs4MzIsMTcgQEAgdm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2OAogYm9v
bCBWOFByb3h5OjpyZWdpc3RlcmVkRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qIGV4dGVu
c2lvbikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXh0ZW5zaW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAobV9leHRlbnNpb25zW2ldLmV4dGVuc2lvbiA9PSBleHRlbnNp
b24pCisgICAgICAgIGlmIChtX2V4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9uKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFY4
UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiBzY2hlbWVSZXN0cmljdGlvbikKK3ZvaWQgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNp
b24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aFY4KGV4dGVuc2lvbik7Ci0gICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7c2NoZW1lUmVzdHJp
Y3Rpb24sIDAsIGV4dGVuc2lvbn07Ci0gICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZvKTsKLX0K
LQotdm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNp
b24sIGludCBleHRlbnNpb25Hcm91cCkKLXsKLSAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChl
eHRlbnNpb24pOwotICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge1N0cmluZygpLCBleHRlbnNp
b25Hcm91cCwgZXh0ZW5zaW9ufTsKLSAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOworICAg
IG1fZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKTsKIH0KIAogYm9vbCBWOFByb3h5OjpzZXRD
b250ZXh0RGVidWdJZChpbnQgZGVidWdJZCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHJl
dmlzaW9uIDY3NDg0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSwxNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY29u
c3QgaW50IGtNYXhSZWN1cnNpb25EZXB0aCA9IDIwOwogCi0gICAgLy8gSW5mb3JtYXRpb24gYWJv
dXQgYW4gZXh0ZW5zaW9uIHRoYXQgaXMgcmVnaXN0ZXJlZCBmb3IgdXNlIHdpdGggVjguIElmCi0g
ICAgLy8gc2NoZW1lIGlzIG5vbi1lbXB0eSwgaXQgY29udGFpbnMgdGhlIFVSTCBzY2hlbWUgdGhl
IGV4dGVuc2lvbiBzaG91bGQgYmUKLSAgICAvLyB1c2VkIHdpdGguIElmIGdyb3VwIGlzIG5vbi16
ZXJvLCB0aGUgZXh0ZW5zaW9uIHdpbGwgb25seSBiZSBsb2FkZWQgaW50bwotICAgIC8vIHNjcmlw
dCBjb250ZXh0cyB0aGF0IGJlbG9uZyB0byB0aGF0IGdyb3VwLiBPdGhlcndpc2UsIHRoZSBleHRl
bnNpb24gaXMKLSAgICAvLyB1c2VkIHdpdGggYWxsIHNjaGVtZXMgYW5kIGNvbnRleHRzLgotICAg
IHN0cnVjdCBWOEV4dGVuc2lvbkluZm8gewotICAgICAgICBTdHJpbmcgc2NoZW1lOwotICAgICAg
ICBpbnQgZ3JvdXA7Ci0gICAgICAgIHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbjsKLSAgICB9Owot
ICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VjhFeHRlbnNpb25JbmZvPiBWOEV4dGVuc2lvbnM7Cisg
ICAgdHlwZWRlZiBXVEY6OlZlY3Rvcjx2ODo6RXh0ZW5zaW9uKj4gVjhFeHRlbnNpb25zOwogCiAg
ICAgY2xhc3MgVjhQcm94eSB7CiAgICAgcHVibGljOgpAQCAtMzE5LDE1ICszMDksMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHNldENvbnRleHREZWJ1Z0lkKGludCBpZCk7
CiAgICAgICAgIHN0YXRpYyBpbnQgY29udGV4dERlYnVnSWQodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4pOwogCi0gICAgICAgIC8vIFJlZ2lzdGVycyBhIHY4IGV4dGVuc2lvbiB0byBiZSBhdmFpbGFi
bGUgb24gd2VicGFnZXMuIFRoZSB0d28gZm9ybXMKLSAgICAgICAgLy8gb2ZmZXIgdmFyaW91cyBy
ZXN0cmljdGlvbnMgb24gd2hhdCB0eXBlcyBvZiBjb250ZXh0cyB0aGUgZXh0ZW5zaW9uIGlzCi0g
ICAgICAgIC8vIGxvYWRlZCBpbnRvLiBJZiBhIHNjaGVtZSBpcyBwcm92aWRlZCwgb25seSBwYWdl
cyB3aG9zZSBVUkwgaGFzIHRoZSBnaXZlbgotICAgICAgICAvLyBzY2hlbWUgd2lsbCBtYXRjaC4g
SWYgZXh0ZW5zaW9uR3JvdXAgaXMgcHJvdmlkZWQsIHRoZSBleHRlbnNpb24gd2lsbAotICAgICAg
ICAvLyBvbmx5IGJlIGxvYWRlZCBpbnRvIHNjcmlwdHMgcnVuIHZpYSBldmFsdWF0ZUluTmV3V29y
bGQgd2l0aCB0aGUKLSAgICAgICAgLy8gbWF0Y2hpbmcgZ3JvdXAuICBXaWxsIG9ubHkgYWZmZWN0
IHY4IGNvbnRleHRzIGluaXRpYWxpemVkIGFmdGVyIHRoaXMKLSAgICAgICAgLy8gY2FsbC4gVGFr
ZXMgb3duZXJzaGlwIG9mIHRoZSB2ODo6RXh0ZW5zaW9uIG9iamVjdCBwYXNzZWQuCi0gICAgICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qLCBjb25zdCBTdHJp
bmcmIHNjaGVtZVJlc3RyaWN0aW9uKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24odjg6OkV4dGVuc2lvbiosIGludCBleHRlbnNpb25Hcm91cCk7CisgICAgICAgIC8vIFJl
Z2lzdGVycyBhIHY4IGV4dGVuc2lvbiB0byBiZSBhdmFpbGFibGUgb24gd2VicGFnZXMuIFdpbGwg
b25seQorICAgICAgICAvLyBhZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhp
cyBjYWxsLiBUYWtlcyBvd25lcnNoaXAgb2YKKyAgICAgICAgLy8gdGhlIHY4OjpFeHRlbnNpb24g
b2JqZWN0IHBhc3NlZC4KKyAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6
OkV4dGVuc2lvbiopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEV4dGVu
c2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiA2NzQ4NCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVz
dHJveVNjcmlwdENvbnRleHRGb3JGcmFtZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVJc29sYXRlZFNjcmlwdENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3Jp
cHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3Jv
dXApIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsy
NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dTY3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQg
ZXh0ZW5zaW9uR3JvdXApID0gMDsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSA9IDA7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMTMgIE1hdHQgUGVycnkg
IDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBIYXZlIFY4RE9NV2luZG93U2hlbGwgYXNrIHRoZSBlbWJlZGRl
ciB3aGV0aGVyIHRvIHJ1biBhIFY4IGV4dGVuc2lvbgorICAgICAgICBpbiBhIHBhcnRpY3VsYXIg
c2NyaXB0IGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTcyMQorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjphbGxvd1NjcmlwdEV4dGVuc2lvbik6CisgICAg
ICAgICogcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjphbGxvd1NjcmlwdEV4dGVuc2lvbik6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorCiAy
MDEwLTA5LTE0ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw5IEBAIHB1
YmxpYzoKICAgICAvLyBzY3JpcHRzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRl
ZFNjcmlwdENvbnRleHQoV2ViRnJhbWUqKSB7IH0KIAorICAgIC8vIENvbnRyb2xzIHdoZXRoZXIg
dGhlIGdpdmVuIHNjcmlwdCBleHRlbnNpb24gc2hvdWxkIHJ1biBpbiB0aGlzIGZyYW1lLgorICAg
IHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZXh0ZW5zaW9uTmFtZSwgY29uc3QgV2ViVVJMJiBkb2N1bWVudFVSTCwgaW50IGV4dGVu
c2lvbkdyb3VwKSB7IHJldHVybiBmYWxzZTsgfQorCiAKICAgICAvLyBHZW9tZXRyeSBub3RpZmlj
YXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaAko
cmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTggKzQzLDEwIEBAIGNsYXNzIFdlYlN0cmlu
ZzsKIAogY2xhc3MgV2ViU2NyaXB0Q29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgLy8gUmVnaXN0
ZXJzIGEgdjggZXh0ZW5zaW9uIHRvIGJlIGF2YWlsYWJsZSBvbiB3ZWJwYWdlcy4gVGhlIHRocmVl
IGZvcm1zCi0gICAgLy8gb2ZmZXIgdmFyaW91cyByZXN0cmljdGlvbnMgb24gd2hhdCB0eXBlcyBv
ZiBjb250ZXh0cyB0aGUgZXh0ZW5zaW9uIGlzCi0gICAgLy8gbG9hZGVkIGludG8uIElmIGEgc2No
ZW1lIGlzIHByb3ZpZGVkLCBvbmx5IHBhZ2VzIHdob3NlIFVSTCBoYXMgdGhlIGdpdmVuCi0gICAg
Ly8gc2NoZW1lIHdpbGwgbWF0Y2guIElmIGV4dGVuc2lvbkdyb3VwIGlzIHByb3ZpZGVkLCB0aGUg
ZXh0ZW5zaW9uIHdpbGwgb25seQotICAgIC8vIGJlIGxvYWRlZCBpbnRvIHNjcmlwdHMgcnVuIHZp
YSBXZWJGcmFtZTo6RXhlY3V0ZUluTmV3V29ybGQgd2l0aCB0aGUKLSAgICAvLyBtYXRjaGluZyBn
cm91cC4KKyAgICAvLyBSZWdpc3RlcnMgYSB2OCBleHRlbnNpb24gdG8gYmUgYXZhaWxhYmxlIG9u
IHdlYnBhZ2VzLgogICAgIC8vIFdpbGwgb25seSBhZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6
ZWQgYWZ0ZXIgdGhpcyBjYWxsLiBUYWtlcyBvd25lcnNoaXAKICAgICAvLyBvZiB0aGUgdjg6OkV4
dGVuc2lvbiBvYmplY3QgcGFzc2VkLgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVnaXN0
ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiopOwotICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQg
cmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiosCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNjaGVtZVJlc3RyaWN0aW9u
KTsKLSAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRl
bnNpb24qLCBpbnQgZXh0ZW5zaW9uR3JvdXApOwogCiAgICAgLy8gRW5hYmxlcyBzcGVjaWFsIHNl
dHRpbmdzIHdoaWNoIGFyZSBvbmx5IGFwcGxpY2FibGUgaWYgVjggaXMgZXhlY3V0ZWQKICAgICAv
LyBpbiB0aGUgc2luZ2xlIHRocmVhZCB3aGljaCBtdXN0IGJlIHRoZSBtYWluIHRocmVhZC4KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTggQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpZENyZWF0ZUlzbwogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KG1fd2ViRnJhbWUpOwogfQogCitib29s
IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWxsb3dTY3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBleHRlbnNpb25Hcm91cCkKK3sKKyAgICAvLyBOb3RlOiB3ZSBjaGVjayB0
aGUgbG9hZGVyIFVSTCBoZXJlIGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTCBiZWNhdXNlIHdl
CisgICAgLy8gbWlnaHQgYmUgY3VycmVudGx5IGxvYWRpbmcgYW4gVVJMIGludG8gYSBibGFuayBw
YWdlLgorICAgIC8vIFNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVz
L2RldGFpbD9pZD0xMDkyNAorICAgIFdlYlVSTCBkb2N1bWVudFVSTCA9IG1fd2ViRnJhbWUtPmZy
YW1lKCktPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKTsKKyAgICBpZiAo
bV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+YWxsb3dTY3JpcHRFeHRlbnNpb24obV93ZWJGcmFtZSwgZXh0ZW5zaW9uTmFtZSwgZG9jdW1l
bnRVUkwsIGV4dGVuc2lvbkdyb3VwKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QKIHsK
IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBpbiBnYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xh
dGVkU2NyaXB0Q29udGV4dCgpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBh
bGxvdyB0aGUgZ2l2ZW4gVjggZXh0ZW5zaW9uIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHNj
cmlwdCBjb250ZXh0IGF0IHRoZSBjdXJyZW50bHkgbG9hZGluZyBwYWdlIGFuZCBnaXZlbiBleHRl
bnNpb24gZ3JvdXAuCisgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uTmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKTsKKwogICAgIHZpcnR1
YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmll
dygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29u
dHJvbGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE5ICs0Myw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lzdGVy
RXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbikKIHsKLSAgICBWOFByb3h5OjpyZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb24sIFdlYlN0cmluZygpKTsKLX0KLQotdm9pZCBXZWJTY3Jp
cHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0
cmluZyYgc2NoZW1lUmVzdHJpY3Rpb24pCi17Ci0gICAgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNp
b24oZXh0ZW5zaW9uLCBzY2hlbWVSZXN0cmljdGlvbik7Ci19Ci0KLXZvaWQgV2ViU2NyaXB0Q29u
dHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5zaW9uR3Jv
dXApCi17Ci0gICAgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLCBleHRlbnNp
b25Hcm91cCk7CisgICAgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uKTsKIH0K
IAogdm9pZCBXZWJTY3JpcHRDb250cm9sbGVyOjplbmFibGVWOFNpbmdsZVRocmVhZE1vZGUoKQo=
</data>
<flag name="review"
          id="56956"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67702</attachid>
            <date>2010-09-15 12:54:00 -0700</date>
            <delta_ts>2010-09-20 14:36:34 -0700</delta_ts>
            <desc>remove URL param</desc>
            <filename>delegate-3.diff</filename>
            <type>text/plain</type>
            <size>12598</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3NDg0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMSBAQAorMjAxMC0wOS0xMyAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhhdmUgVjhET01XaW5kb3dTaGVsbCBhc2sgdGhlIGVtYmVkZGVyIHdoZXRoZXIgdG8gcnVu
IGEgVjggZXh0ZW5zaW9uCisgICAgICAgIGluIGEgcGFydGljdWxhciBzY3JpcHQgY29udGV4dC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzIxCisK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OmNyZWF0ZU5ld0NvbnRleHQpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVnaXN0
ZXJlZEV4dGVuc2lvbldpdGhWOCk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKwogMjAxMC0wOS0xNCAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xp
bmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gNjc0
ODQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzAsMjMgKzMzMCwxNSBAQCB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4g
VjhET01XaW5kb3dTCiAKICAgICAvLyBVc2VkIHRvIGF2b2lkIHNsZWVwIGNhbGxzIGluIHVubG9h
ZCBoYW5kbGVycy4KICAgICBpZiAoIVY4UHJveHk6OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgo
RGF0ZUV4dGVuc2lvbjo6Z2V0KCkpKQotICAgICAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lv
bihEYXRlRXh0ZW5zaW9uOjpnZXQoKSwgU3RyaW5nKCkpOworICAgICAgICBWOFByb3h5OjpyZWdp
c3RlckV4dGVuc2lvbihEYXRlRXh0ZW5zaW9uOjpnZXQoKSk7CiAKICAgICAvLyBEeW5hbWljYWxs
eSB0ZWxsIHY4IGFib3V0IG91ciBleHRlbnNpb25zIG5vdy4KICAgICBjb25zdCBWOEV4dGVuc2lv
bnMmIGV4dGVuc2lvbnMgPSBWOFByb3h5OjpleHRlbnNpb25zKCk7CiAgICAgT3duQXJyYXlQdHI8
Y29uc3QgY2hhcio+IGV4dGVuc2lvbk5hbWVzKG5ldyBjb25zdCBjaGFyKltleHRlbnNpb25zLnNp
emUoKV0pOwogICAgIGludCBpbmRleCA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
eHRlbnNpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLmdyb3Vw
ICYmIGV4dGVuc2lvbnNbaV0uZ3JvdXAgIT0gZXh0ZW5zaW9uR3JvdXApCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0aGUgbG9hZGVyIFVSTCBoZXJl
IGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTAotICAgICAgICAvLyBiZWNhdXNlIHdlIG1pZ2h0
IGJlIGN1cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxhbmsgcGFnZS4KLSAgICAgICAg
Ly8gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lk
PTEwOTI0Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVtZS5sZW5ndGgoKSA+IDAgJiYg
KGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIGV4dGVuc2lvbk5hbWVzW2luZGV4KytdID0gZXh0ZW5zaW9uc1tpXS5leHRlbnNpb24t
Pm5hbWUoKTsKKyAgICAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dT
Y3JpcHRFeHRlbnNpb24oZXh0ZW5zaW9uc1tpXS0+bmFtZSgpLCBleHRlbnNpb25Hcm91cCkpCisg
ICAgICAgICAgICBleHRlbnNpb25OYW1lc1tpbmRleCsrXSA9IGV4dGVuc2lvbnNbaV0tPm5hbWUo
KTsKICAgICB9CiAgICAgdjg6OkV4dGVuc2lvbkNvbmZpZ3VyYXRpb24gZXh0ZW5zaW9uQ29uZmln
dXJhdGlvbihpbmRleCwgZXh0ZW5zaW9uTmFtZXMuZ2V0KCkpOwogICAgIHJlc3VsdCA9IHY4OjpD
b250ZXh0OjpOZXcoJmV4dGVuc2lvbkNvbmZpZ3VyYXRpb24sIGdsb2JhbFRlbXBsYXRlLCBnbG9i
YWwpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDY3NDg0KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMyLDI1
ICs4MzIsMTcgQEAgdm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2OAogYm9v
bCBWOFByb3h5OjpyZWdpc3RlcmVkRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qIGV4dGVu
c2lvbikKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXh0ZW5zaW9ucy5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAobV9leHRlbnNpb25zW2ldLmV4dGVuc2lvbiA9PSBleHRlbnNp
b24pCisgICAgICAgIGlmIChtX2V4dGVuc2lvbnNbaV0gPT0gZXh0ZW5zaW9uKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFY4
UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiBzY2hlbWVSZXN0cmljdGlvbikKK3ZvaWQgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNp
b24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aFY4KGV4dGVuc2lvbik7Ci0gICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7c2NoZW1lUmVzdHJp
Y3Rpb24sIDAsIGV4dGVuc2lvbn07Ci0gICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZvKTsKLX0K
LQotdm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNp
b24sIGludCBleHRlbnNpb25Hcm91cCkKLXsKLSAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChl
eHRlbnNpb24pOwotICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge1N0cmluZygpLCBleHRlbnNp
b25Hcm91cCwgZXh0ZW5zaW9ufTsKLSAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOworICAg
IG1fZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uKTsKIH0KIAogYm9vbCBWOFByb3h5OjpzZXRD
b250ZXh0RGVidWdJZChpbnQgZGVidWdJZCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHJl
dmlzaW9uIDY3NDg0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSwxNyArMTE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY29u
c3QgaW50IGtNYXhSZWN1cnNpb25EZXB0aCA9IDIwOwogCi0gICAgLy8gSW5mb3JtYXRpb24gYWJv
dXQgYW4gZXh0ZW5zaW9uIHRoYXQgaXMgcmVnaXN0ZXJlZCBmb3IgdXNlIHdpdGggVjguIElmCi0g
ICAgLy8gc2NoZW1lIGlzIG5vbi1lbXB0eSwgaXQgY29udGFpbnMgdGhlIFVSTCBzY2hlbWUgdGhl
IGV4dGVuc2lvbiBzaG91bGQgYmUKLSAgICAvLyB1c2VkIHdpdGguIElmIGdyb3VwIGlzIG5vbi16
ZXJvLCB0aGUgZXh0ZW5zaW9uIHdpbGwgb25seSBiZSBsb2FkZWQgaW50bwotICAgIC8vIHNjcmlw
dCBjb250ZXh0cyB0aGF0IGJlbG9uZyB0byB0aGF0IGdyb3VwLiBPdGhlcndpc2UsIHRoZSBleHRl
bnNpb24gaXMKLSAgICAvLyB1c2VkIHdpdGggYWxsIHNjaGVtZXMgYW5kIGNvbnRleHRzLgotICAg
IHN0cnVjdCBWOEV4dGVuc2lvbkluZm8gewotICAgICAgICBTdHJpbmcgc2NoZW1lOwotICAgICAg
ICBpbnQgZ3JvdXA7Ci0gICAgICAgIHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbjsKLSAgICB9Owot
ICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VjhFeHRlbnNpb25JbmZvPiBWOEV4dGVuc2lvbnM7Cisg
ICAgdHlwZWRlZiBXVEY6OlZlY3Rvcjx2ODo6RXh0ZW5zaW9uKj4gVjhFeHRlbnNpb25zOwogCiAg
ICAgY2xhc3MgVjhQcm94eSB7CiAgICAgcHVibGljOgpAQCAtMzE5LDE1ICszMDksMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHNldENvbnRleHREZWJ1Z0lkKGludCBpZCk7
CiAgICAgICAgIHN0YXRpYyBpbnQgY29udGV4dERlYnVnSWQodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4pOwogCi0gICAgICAgIC8vIFJlZ2lzdGVycyBhIHY4IGV4dGVuc2lvbiB0byBiZSBhdmFpbGFi
bGUgb24gd2VicGFnZXMuIFRoZSB0d28gZm9ybXMKLSAgICAgICAgLy8gb2ZmZXIgdmFyaW91cyBy
ZXN0cmljdGlvbnMgb24gd2hhdCB0eXBlcyBvZiBjb250ZXh0cyB0aGUgZXh0ZW5zaW9uIGlzCi0g
ICAgICAgIC8vIGxvYWRlZCBpbnRvLiBJZiBhIHNjaGVtZSBpcyBwcm92aWRlZCwgb25seSBwYWdl
cyB3aG9zZSBVUkwgaGFzIHRoZSBnaXZlbgotICAgICAgICAvLyBzY2hlbWUgd2lsbCBtYXRjaC4g
SWYgZXh0ZW5zaW9uR3JvdXAgaXMgcHJvdmlkZWQsIHRoZSBleHRlbnNpb24gd2lsbAotICAgICAg
ICAvLyBvbmx5IGJlIGxvYWRlZCBpbnRvIHNjcmlwdHMgcnVuIHZpYSBldmFsdWF0ZUluTmV3V29y
bGQgd2l0aCB0aGUKLSAgICAgICAgLy8gbWF0Y2hpbmcgZ3JvdXAuICBXaWxsIG9ubHkgYWZmZWN0
IHY4IGNvbnRleHRzIGluaXRpYWxpemVkIGFmdGVyIHRoaXMKLSAgICAgICAgLy8gY2FsbC4gVGFr
ZXMgb3duZXJzaGlwIG9mIHRoZSB2ODo6RXh0ZW5zaW9uIG9iamVjdCBwYXNzZWQuCi0gICAgICAg
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qLCBjb25zdCBTdHJp
bmcmIHNjaGVtZVJlc3RyaWN0aW9uKTsKLSAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRl
bnNpb24odjg6OkV4dGVuc2lvbiosIGludCBleHRlbnNpb25Hcm91cCk7CisgICAgICAgIC8vIFJl
Z2lzdGVycyBhIHY4IGV4dGVuc2lvbiB0byBiZSBhdmFpbGFibGUgb24gd2VicGFnZXMuIFdpbGwg
b25seQorICAgICAgICAvLyBhZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhp
cyBjYWxsLiBUYWtlcyBvd25lcnNoaXAgb2YKKyAgICAgICAgLy8gdGhlIHY4OjpFeHRlbnNpb24g
b2JqZWN0IHBhc3NlZC4KKyAgICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6
OkV4dGVuc2lvbiopOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAgc3RhdGljIGJvb2wgcmVnaXN0ZXJlZEV4dGVu
c2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiA2NzQ4NCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
cmVhdGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVz
dHJveVNjcmlwdENvbnRleHRGb3JGcmFtZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVJc29sYXRlZFNjcmlwdENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3Jp
cHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3Jv
dXApIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsy
NTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVTY3JpcHRDb250ZXh0Rm9yRnJhbWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dTY3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQg
ZXh0ZW5zaW9uR3JvdXApID0gMDsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSA9IDA7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDktMTMgIE1hdHQgUGVycnkg
IDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBIYXZlIFY4RE9NV2luZG93U2hlbGwgYXNrIHRoZSBlbWJlZGRl
ciB3aGV0aGVyIHRvIHJ1biBhIFY4IGV4dGVuc2lvbgorICAgICAgICBpbiBhIHBhcnRpY3VsYXIg
c2NyaXB0IGNvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NTcyMQorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjphbGxvd1NjcmlwdEV4dGVuc2lvbik6CisgICAg
ICAgICogcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjphbGxvd1NjcmlwdEV4dGVuc2lvbik6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorCiAy
MDEwLTA5LTE0ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA2NzQ4NCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw5IEBAIHB1
YmxpYzoKICAgICAvLyBzY3JpcHRzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRl
ZFNjcmlwdENvbnRleHQoV2ViRnJhbWUqKSB7IH0KIAorICAgIC8vIENvbnRyb2xzIHdoZXRoZXIg
dGhlIGdpdmVuIHNjcmlwdCBleHRlbnNpb24gc2hvdWxkIHJ1biBpbiB0aGlzIGZyYW1lLgorICAg
IHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihXZWJGcmFtZSosIGNvbnN0IFdlYlN0
cmluZyYgZXh0ZW5zaW9uTmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKSB7IHJldHVybiBmYWxzZTsg
fQorCiAKICAgICAvLyBHZW9tZXRyeSBub3RpZmljYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTY3JpcHRDb250cm9sbGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsMTggKzQzLDEwIEBAIGNsYXNzIFdlYlN0cmluZzsKIAogY2xhc3MgV2ViU2NyaXB0Q29udHJv
bGxlciB7CiBwdWJsaWM6Ci0gICAgLy8gUmVnaXN0ZXJzIGEgdjggZXh0ZW5zaW9uIHRvIGJlIGF2
YWlsYWJsZSBvbiB3ZWJwYWdlcy4gVGhlIHRocmVlIGZvcm1zCi0gICAgLy8gb2ZmZXIgdmFyaW91
cyByZXN0cmljdGlvbnMgb24gd2hhdCB0eXBlcyBvZiBjb250ZXh0cyB0aGUgZXh0ZW5zaW9uIGlz
Ci0gICAgLy8gbG9hZGVkIGludG8uIElmIGEgc2NoZW1lIGlzIHByb3ZpZGVkLCBvbmx5IHBhZ2Vz
IHdob3NlIFVSTCBoYXMgdGhlIGdpdmVuCi0gICAgLy8gc2NoZW1lIHdpbGwgbWF0Y2guIElmIGV4
dGVuc2lvbkdyb3VwIGlzIHByb3ZpZGVkLCB0aGUgZXh0ZW5zaW9uIHdpbGwgb25seQotICAgIC8v
IGJlIGxvYWRlZCBpbnRvIHNjcmlwdHMgcnVuIHZpYSBXZWJGcmFtZTo6RXhlY3V0ZUluTmV3V29y
bGQgd2l0aCB0aGUKLSAgICAvLyBtYXRjaGluZyBncm91cC4KKyAgICAvLyBSZWdpc3RlcnMgYSB2
OCBleHRlbnNpb24gdG8gYmUgYXZhaWxhYmxlIG9uIHdlYnBhZ2VzLgogICAgIC8vIFdpbGwgb25s
eSBhZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhpcyBjYWxsLiBUYWtlcyBv
d25lcnNoaXAKICAgICAvLyBvZiB0aGUgdjg6OkV4dGVuc2lvbiBvYmplY3QgcGFzc2VkLgogICAg
IFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiop
OwotICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVu
c2lvbiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIHNjaGVtZVJlc3RyaWN0aW9uKTsKLSAgICBXRUJLSVRfQVBJIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qLCBpbnQgZXh0ZW5zaW9uR3JvdXAp
OwogCiAgICAgLy8gRW5hYmxlcyBzcGVjaWFsIHNldHRpbmdzIHdoaWNoIGFyZSBvbmx5IGFwcGxp
Y2FibGUgaWYgVjggaXMgZXhlY3V0ZWQKICAgICAvLyBpbiB0aGUgc2luZ2xlIHRocmVhZCB3aGlj
aCBtdXN0IGJlIHRoZSBtYWluIHRocmVhZC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjc0ODQpCisrKyBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Nyw2ICsxNDcsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZENyZWF0ZUlz
bwogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRD
b250ZXh0KG1fd2ViRnJhbWUpOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWxs
b3dTY3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnNpb25Hcm91
cCkKK3sKKyAgICBpZiAobV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiBtX3dl
YkZyYW1lLT5jbGllbnQoKS0+YWxsb3dTY3JpcHRFeHRlbnNpb24obV93ZWJGcmFtZSwgZXh0ZW5z
aW9uTmFtZSwgZXh0ZW5zaW9uR3JvdXApOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdAog
ewogfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDY3NDg0KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTAgQEAgcHVibGljOgogICAg
IC8vIGluIGdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlSXNv
bGF0ZWRTY3JpcHRDb250ZXh0KCk7CiAKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxk
IGFsbG93IHRoZSBnaXZlbiBWOCBleHRlbnNpb24gdG8gYmUgYWRkZWQgdG8KKyAgICAvLyB0aGUg
c2NyaXB0IGNvbnRleHQgYXQgdGhlIGN1cnJlbnRseSBsb2FkaW5nIHBhZ2UgYW5kIGdpdmVuIGV4
dGVuc2lvbiBncm91cC4KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3JvdXApOworCiAgICAgdmly
dHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzRnJhbWVW
aWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRD
b250cm9sbGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Ny
aXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY3NDg0KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTkgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0
ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewotICAgIFY4UHJveHk6OnJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbiwgV2ViU3RyaW5nKCkpOwotfQotCi12b2lkIFdlYlNj
cmlwdENvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBzY2hlbWVSZXN0cmljdGlvbikKLXsKLSAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVu
c2lvbihleHRlbnNpb24sIHNjaGVtZVJlc3RyaWN0aW9uKTsKLX0KLQotdm9pZCBXZWJTY3JpcHRD
b250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiBleHRlbnNpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnNpb25H
cm91cCkKLXsKLSAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24sIGV4dGVu
c2lvbkdyb3VwKTsKKyAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24pOwog
fQogCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZVY4U2luZ2xlVGhyZWFkTW9kZSgp
Cg==
</data>
<flag name="review"
          id="57079"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68138</attachid>
            <date>2010-09-20 14:36:34 -0700</date>
            <delta_ts>2010-09-20 14:45:11 -0700</delta_ts>
            <desc>try #2, this time with a multi-stage patch</desc>
            <filename>delegate.diff</filename>
            <type>text/plain</type>
            <size>10351</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3ODgyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxMC0wOS0yMCAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyeWluZyB0byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBW
OERPTVdpbmRvd1NoZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRl
bnNpb24KKyAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XaW5kb3dTaGVsbDo6Y3JlYXRlTmV3Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbjIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1Nj
cmlwdEV4dGVuc2lvbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisK
IDIwMTAtMDktMjAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsMTEgKzM0MCwxOCBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gVjhET01XaW5kb3dTCiAgICAgICAgIGlmIChl
eHRlbnNpb25zW2ldLmdyb3VwICYmIGV4dGVuc2lvbnNbaV0uZ3JvdXAgIT0gZXh0ZW5zaW9uR3Jv
dXApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0
aGUgbG9hZGVyIFVSTCBoZXJlIGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTAotICAgICAgICAv
LyBiZWNhdXNlIHdlIG1pZ2h0IGJlIGN1cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxh
bmsgcGFnZS4KLSAgICAgICAgLy8gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1
bS9pc3N1ZXMvZGV0YWlsP2lkPTEwOTI0Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVt
ZS5sZW5ndGgoKSA+IDAgJiYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZXh0ZW5zaW9uc1tpXS51c2VDYWxsYmFjaykgewor
ICAgICAgICAgICAgLy8gRW5zdXJlIG91ciBleHRlbnNpb24gaXMgYWx3YXlzIGFsbG93ZWQuCisg
ICAgICAgICAgICBpZiAoZXh0ZW5zaW9uc1tpXS5leHRlbnNpb24gIT0gRGF0ZUV4dGVuc2lvbjo6
Z2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5h
bGxvd1NjcmlwdEV4dGVuc2lvbihleHRlbnNpb25zW2ldLmV4dGVuc2lvbi0+bmFtZSgpLCBleHRl
bnNpb25Hcm91cCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0aGUgbG9hZGVyIFVSTCBoZXJlIGluc3Rl
YWQgb2YgdGhlIGRvY3VtZW50IFVSTAorICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBtaWdodCBi
ZSBjdXJyZW50bHkgbG9hZGluZyBhbiBVUkwgaW50byBhIGJsYW5rIHBhZ2UuCisgICAgICAgICAg
ICAvLyBTZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/
aWQ9MTA5MjQKKyAgICAgICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVtZS5sZW5ndGgoKSA+
IDAgJiYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGV4dGVuc2lvbk5hbWVzW2luZGV4KytdID0gZXh0
ZW5zaW9uc1tpXS5leHRlbnNpb24tPm5hbWUoKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDIsMTQgKzg0MiwyMCBAQCBib29sIFY4UHJveHk6
OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgoCiB2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5z
aW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiBzY2hlbWVSZXN0cmlj
dGlvbikKIHsKICAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNpb24pOwotICAgIFY4
RXh0ZW5zaW9uSW5mbyBpbmZvID0ge3NjaGVtZVJlc3RyaWN0aW9uLCAwLCBleHRlbnNpb259Owor
ICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge3NjaGVtZVJlc3RyaWN0aW9uLCAwLCBleHRlbnNp
b24sIGZhbHNlfTsKICAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOwogfQogCiB2b2lkIFY4
UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgaW50IGV4
dGVuc2lvbkdyb3VwKQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KGV4dGVuc2lvbik7
Ci0gICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7U3RyaW5nKCksIGV4dGVuc2lvbkdyb3VwLCBl
eHRlbnNpb259OworICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge1N0cmluZygpLCBleHRlbnNp
b25Hcm91cCwgZXh0ZW5zaW9uLCBmYWxzZX07CisgICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZv
KTsKK30KKwordm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiog
ZXh0ZW5zaW9uKSB7CisgICAgcmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgoZXh0ZW5zaW9uKTsKKyAg
ICBWOEV4dGVuc2lvbkluZm8gaW5mbyA9IHtTdHJpbmcoKSwgMCwgZXh0ZW5zaW9uLCB0cnVlfTsK
ICAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5oCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNiArMTI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTdHJpbmcgc2NoZW1lOwogICAgICAgICBpbnQgZ3JvdXA7CiAgICAgICAgIHY4OjpF
eHRlbnNpb24qIGV4dGVuc2lvbjsKKyAgICAgICAgYm9vbCB1c2VDYWxsYmFjazsgIC8vIEZJWE1F
OiByZW1vdmUKICAgICB9OwogICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VjhFeHRlbnNpb25JbmZv
PiBWOEV4dGVuc2lvbnM7CiAKQEAgLTMyOSw2ICszMzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qLCBj
b25zdCBTdHJpbmcmIHNjaGVtZVJlc3RyaWN0aW9uKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiosIGludCBleHRlbnNpb25Hcm91cCk7CiAKKyAg
ICAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IG5ldyB2ZXJzaW9uLgorICAgICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiopOworCiAgICAgICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAg
c3RhdGljIGJvb2wgcmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CiAK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dCgpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91cCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUo
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRl
eHQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91cCkgPSAwOwogI2VuZGlm
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29s
IGxpc3RlbiA9IHRydWUpID0gMDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2Nzg4MikK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMC0wOS0yMCAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyeWluZyB0
byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBWOERPTVdpbmRvd1No
ZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRlbnNpb24KKyAgICAg
ICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6YWxsb3dTY3Jp
cHRFeHRlbnNpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmg6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWxsb3dTY3JpcHRFeHRlbnNpb24pOgorICAgICAgICAq
IHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lz
dGVyRXh0ZW5zaW9uMik6CisKIDIwMTAtMDktMjAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gNjc4NjgpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwMSw2ICszMDEsOSBAQCBwdWJsaWM6CiAgICAgLy8gc2NyaXB0cy4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9CiAKKyAg
ICAvLyBDb250cm9scyB3aGV0aGVyIHRoZSBnaXZlbiBzY3JpcHQgZXh0ZW5zaW9uIHNob3VsZCBy
dW4gaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24o
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25H
cm91cCkgeyByZXR1cm4gdHJ1ZTsgfQorCiAKICAgICAvLyBHZW9tZXRyeSBub3RpZmljYXRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNjc4NjgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzY2hlbWVS
ZXN0cmljdGlvbik7CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZWdpc3RlckV4dGVuc2lv
bih2ODo6RXh0ZW5zaW9uKiwgaW50IGV4dGVuc2lvbkdyb3VwKTsKIAorICAgIC8vIE5ldyB2ZXJz
aW9uIG9mIHRoZSBhYm92ZS4KKyAgICAvLyBGSVhNRTogc3dpdGNoIHRvIHRoaXMgdmVyc2lvbiBp
biBwaGFzZSAzIG9mIG11bHRpcGFydCBjaGVja2luOgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTcyMQorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQg
cmVnaXN0ZXJFeHRlbnNpb24yKHY4OjpFeHRlbnNpb24qKTsKKwogICAgIC8vIEVuYWJsZXMgc3Bl
Y2lhbCBzZXR0aW5ncyB3aGljaCBhcmUgb25seSBhcHBsaWNhYmxlIGlmIFY4IGlzIGV4ZWN1dGVk
CiAgICAgLy8gaW4gdGhlIHNpbmdsZSB0aHJlYWQgd2hpY2ggbXVzdCBiZSB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgLy8gRklYTUU6IG1ha2UgYSB0cnkgdG8gZHluYW1pY2FsbHkgZGV0ZWN0IHdoZW4g
dGhpcyBjb25kaXRpb24gaXMgYnJva2VuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDcsNiArMTQ3LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRDcmVhdGVJc28K
ICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29u
dGV4dChtX3dlYkZyYW1lKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93
U2NyaXB0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5zaW9uR3JvdXAp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gbV93ZWJG
cmFtZS0+Y2xpZW50KCktPmFsbG93U2NyaXB0RXh0ZW5zaW9uKG1fd2ViRnJhbWUsIGV4dGVuc2lv
bk5hbWUsIGV4dGVuc2lvbkdyb3VwKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QKIHsK
IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBpbiBnYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xh
dGVkU2NyaXB0Q29udGV4dCgpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBh
bGxvdyB0aGUgZ2l2ZW4gVjggZXh0ZW5zaW9uIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHNj
cmlwdCBjb250ZXh0IGF0IHRoZSBjdXJyZW50bHkgbG9hZGluZyBwYWdlIGFuZCBnaXZlbiBleHRl
bnNpb24gZ3JvdXAuCisgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uTmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKTsKKwogICAgIHZpcnR1
YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmll
dygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29u
dHJvbGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDExIEBA
IHZvaWQgV2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnMKICAgICBWOFByb3h5Ojpy
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24sIGV4dGVuc2lvbkdyb3VwKTsKIH0KIAordm9pZCBX
ZWJTY3JpcHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiogZXh0
ZW5zaW9uKQoreworICAgIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uMihleHRlbnNpb24pOwor
fQorCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZVY4U2luZ2xlVGhyZWFkTW9kZSgp
CiB7CiAgICAgZW5hYmxlU3RyaW5nSW1wbENhY2hlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68139</attachid>
            <date>2010-09-20 14:45:11 -0700</date>
            <delta_ts>2010-09-21 13:50:09 -0700</delta_ts>
            <desc>style fixes</desc>
            <filename>delegate-2.diff</filename>
            <type>text/plain</type>
            <size>10351</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3ODgyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxMC0wOS0yMCAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyeWluZyB0byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBW
OERPTVdpbmRvd1NoZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRl
bnNpb24KKyAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XaW5kb3dTaGVsbDo6Y3JlYXRlTmV3Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbjIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1Nj
cmlwdEV4dGVuc2lvbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisK
IDIwMTAtMDktMjAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V2luZG93U2hlbGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsMTEgKzM0MCwxOCBA
QCB2ODo6UGVyc2lzdGVudDx2ODo6Q29udGV4dD4gVjhET01XaW5kb3dTCiAgICAgICAgIGlmIChl
eHRlbnNpb25zW2ldLmdyb3VwICYmIGV4dGVuc2lvbnNbaV0uZ3JvdXAgIT0gZXh0ZW5zaW9uR3Jv
dXApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0
aGUgbG9hZGVyIFVSTCBoZXJlIGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTAotICAgICAgICAv
LyBiZWNhdXNlIHdlIG1pZ2h0IGJlIGN1cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxh
bmsgcGFnZS4KLSAgICAgICAgLy8gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1
bS9pc3N1ZXMvZGV0YWlsP2lkPTEwOTI0Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVt
ZS5sZW5ndGgoKSA+IDAgJiYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRl
cigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZXh0ZW5zaW9uc1tpXS51c2VDYWxsYmFjaykgewor
ICAgICAgICAgICAgLy8gRW5zdXJlIG91ciBleHRlbnNpb24gaXMgYWx3YXlzIGFsbG93ZWQuCisg
ICAgICAgICAgICBpZiAoZXh0ZW5zaW9uc1tpXS5leHRlbnNpb24gIT0gRGF0ZUV4dGVuc2lvbjo6
Z2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5h
bGxvd1NjcmlwdEV4dGVuc2lvbihleHRlbnNpb25zW2ldLmV4dGVuc2lvbi0+bmFtZSgpLCBleHRl
bnNpb25Hcm91cCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0aGUgbG9hZGVyIFVSTCBoZXJlIGluc3Rl
YWQgb2YgdGhlIGRvY3VtZW50IFVSTAorICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBtaWdodCBi
ZSBjdXJyZW50bHkgbG9hZGluZyBhbiBVUkwgaW50byBhIGJsYW5rIHBhZ2UuCisgICAgICAgICAg
ICAvLyBTZWUgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/
aWQ9MTA5MjQKKyAgICAgICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVtZS5sZW5ndGgoKSA+
IDAgJiYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQogCiAgICAgICAgIGV4dGVuc2lvbk5hbWVzW2luZGV4KytdID0gZXh0
ZW5zaW9uc1tpXS5leHRlbnNpb24tPm5hbWUoKTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFByb3h5LmNwcAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDIsMTQgKzg0MiwyMSBAQCBib29sIFY4UHJveHk6
OnJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgoCiB2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5z
aW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiBzY2hlbWVSZXN0cmlj
dGlvbikKIHsKICAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNpb24pOwotICAgIFY4
RXh0ZW5zaW9uSW5mbyBpbmZvID0ge3NjaGVtZVJlc3RyaWN0aW9uLCAwLCBleHRlbnNpb259Owor
ICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge3NjaGVtZVJlc3RyaWN0aW9uLCAwLCBleHRlbnNp
b24sIGZhbHNlfTsKICAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOwogfQogCiB2b2lkIFY4
UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwgaW50IGV4
dGVuc2lvbkdyb3VwKQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KGV4dGVuc2lvbik7
Ci0gICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7U3RyaW5nKCksIGV4dGVuc2lvbkdyb3VwLCBl
eHRlbnNpb259OworICAgIFY4RXh0ZW5zaW9uSW5mbyBpbmZvID0ge1N0cmluZygpLCBleHRlbnNp
b25Hcm91cCwgZXh0ZW5zaW9uLCBmYWxzZX07CisgICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZv
KTsKK30KKwordm9pZCBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiog
ZXh0ZW5zaW9uKQoreworICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KGV4dGVuc2lvbik7Cisg
ICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7U3RyaW5nKCksIDAsIGV4dGVuc2lvbiwgdHJ1ZX07
CiAgICAgbV9leHRlbnNpb25zLmFwcGVuZChpbmZvKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDYgKzEyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU3RyaW5nIHNjaGVtZTsKICAgICAgICAgaW50IGdyb3VwOwogICAgICAgICB2ODo6
RXh0ZW5zaW9uKiBleHRlbnNpb247CisgICAgICAgIGJvb2wgdXNlQ2FsbGJhY2s7IC8vIEZJWE1F
OiByZW1vdmUKICAgICB9OwogICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8VjhFeHRlbnNpb25JbmZv
PiBWOEV4dGVuc2lvbnM7CiAKQEAgLTMyOSw2ICszMzAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qLCBj
b25zdCBTdHJpbmcmIHNjaGVtZVJlc3RyaWN0aW9uKTsKICAgICAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiosIGludCBleHRlbnNpb25Hcm91cCk7CiAKKyAg
ICAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IG5ldyB2ZXJzaW9uLgorICAgICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiopOworCiAgICAgICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KHY4OjpFeHRlbnNpb24qKTsKICAgICAgICAg
c3RhdGljIGJvb2wgcmVnaXN0ZXJlZEV4dGVuc2lvbldpdGhWOCh2ODo6RXh0ZW5zaW9uKik7CiAK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2NyaXB0Q29udGV4dEZvckZyYW1lKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29udGV4dCgpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91cCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVNjcmlwdENvbnRleHRGb3JGcmFtZSgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lTY3JpcHRDb250ZXh0Rm9yRnJhbWUo
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRl
eHQoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25Hcm91cCkgPSAwOwogI2VuZGlm
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29s
IGxpc3RlbiA9IHRydWUpID0gMDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2Nzg4MikK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMC0wOS0yMCAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyeWluZyB0
byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBWOERPTVdpbmRvd1No
ZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRlbnNpb24KKyAgICAg
ICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6YWxsb3dTY3Jp
cHRFeHRlbnNpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmg6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YWxsb3dTY3JpcHRFeHRlbnNpb24pOgorICAgICAgICAq
IHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2NyaXB0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lz
dGVyRXh0ZW5zaW9uMik6CisKIDIwMTAtMDktMjAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29n
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gNjc4NjgpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwMSw2ICszMDEsOSBAQCBwdWJsaWM6CiAgICAgLy8gc2NyaXB0cy4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlSXNvbGF0ZWRTY3JpcHRDb250ZXh0KFdlYkZyYW1lKikgeyB9CiAKKyAg
ICAvLyBDb250cm9scyB3aGV0aGVyIHRoZSBnaXZlbiBzY3JpcHQgZXh0ZW5zaW9uIHNob3VsZCBy
dW4gaW4gdGhpcyBmcmFtZS4KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNpb24o
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGV4dGVuc2lvbk5hbWUsIGludCBleHRlbnNpb25H
cm91cCkgeyByZXR1cm4gdHJ1ZTsgfQorCiAKICAgICAvLyBHZW9tZXRyeSBub3RpZmljYXRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNjc4NjgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcmlwdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTEgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzY2hlbWVS
ZXN0cmljdGlvbik7CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCByZWdpc3RlckV4dGVuc2lv
bih2ODo6RXh0ZW5zaW9uKiwgaW50IGV4dGVuc2lvbkdyb3VwKTsKIAorICAgIC8vIE5ldyB2ZXJz
aW9uIG9mIHRoZSBhYm92ZS4KKyAgICAvLyBGSVhNRTogc3dpdGNoIHRvIHRoaXMgdmVyc2lvbiBp
biBwaGFzZSAzIG9mIG11bHRpcGFydCBjaGVja2luOgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTcyMQorICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQg
cmVnaXN0ZXJFeHRlbnNpb24yKHY4OjpFeHRlbnNpb24qKTsKKwogICAgIC8vIEVuYWJsZXMgc3Bl
Y2lhbCBzZXR0aW5ncyB3aGljaCBhcmUgb25seSBhcHBsaWNhYmxlIGlmIFY4IGlzIGV4ZWN1dGVk
CiAgICAgLy8gaW4gdGhlIHNpbmdsZSB0aHJlYWQgd2hpY2ggbXVzdCBiZSB0aGUgbWFpbiB0aHJl
YWQuCiAgICAgLy8gRklYTUU6IG1ha2UgYSB0cnkgdG8gZHluYW1pY2FsbHkgZGV0ZWN0IHdoZW4g
dGhpcyBjb25kaXRpb24gaXMgYnJva2VuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDcsNiArMTQ3LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWRDcmVhdGVJc28K
ICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENyZWF0ZUlzb2xhdGVkU2NyaXB0Q29u
dGV4dChtX3dlYkZyYW1lKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93
U2NyaXB0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5zaW9uR3JvdXAp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gbV93ZWJG
cmFtZS0+Y2xpZW50KCktPmFsbG93U2NyaXB0RXh0ZW5zaW9uKG1fd2ViRnJhbWUsIGV4dGVuc2lv
bk5hbWUsIGV4dGVuc2lvbkdyb3VwKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkgY29uc3QKIHsK
IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
CShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBpbiBnYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlzb2xh
dGVkU2NyaXB0Q29udGV4dCgpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBh
bGxvdyB0aGUgZ2l2ZW4gVjggZXh0ZW5zaW9uIHRvIGJlIGFkZGVkIHRvCisgICAgLy8gdGhlIHNj
cmlwdCBjb250ZXh0IGF0IHRoZSBjdXJyZW50bHkgbG9hZGluZyBwYWdlIGFuZCBnaXZlbiBleHRl
bnNpb24gZ3JvdXAuCisgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uTmFtZSwgaW50IGV4dGVuc2lvbkdyb3VwKTsKKwogICAgIHZpcnR1
YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGhhc0ZyYW1lVmll
dygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29u
dHJvbGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDExIEBA
IHZvaWQgV2ViU2NyaXB0Q29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnMKICAgICBWOFByb3h5Ojpy
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24sIGV4dGVuc2lvbkdyb3VwKTsKIH0KIAordm9pZCBX
ZWJTY3JpcHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbjIodjg6OkV4dGVuc2lvbiogZXh0
ZW5zaW9uKQoreworICAgIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uMihleHRlbnNpb24pOwor
fQorCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OmVuYWJsZVY4U2luZ2xlVGhyZWFkTW9kZSgp
CiB7CiAgICAgZW5hYmxlU3RyaW5nSW1wbENhY2hlKCk7Cg==
</data>
<flag name="review"
          id="57605"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68287</attachid>
            <date>2010-09-21 13:48:13 -0700</date>
            <delta_ts>2010-09-21 14:01:16 -0700</delta_ts>
            <desc>fixed review comments</desc>
            <filename>delegate-3.diff</filename>
            <type>text/plain</type>
            <size>11940</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDY3ODgyKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0MCBAQAorMjAxMC0wOS0yMSAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRyeWluZyB0byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBW
OERPTVdpbmRvd1NoZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRl
bnNpb24KKyAgICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01XaW5kb3dTaGVsbDo6Y3JlYXRlTmV3Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lv
bik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5oOgorICAgICAgICAqIGxvYWRlci9F
bXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaDoKKworMjAxMC0wOS0yMCAgTWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyeWlu
ZyB0byByZWxhbmQgYSB2ZXJzaW9uIG9mIHI2Nzc0OToKKyAgICAgICAgSGF2ZSBWOERPTVdpbmRv
d1NoZWxsIGFzayB0aGUgZW1iZWRkZXIgd2hldGhlciB0byBydW4gYSBWOCBleHRlbnNpb24KKyAg
ICAgICAgaW4gYSBwYXJ0aWN1bGFyIHNjcmlwdCBjb250ZXh0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3MjEKKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dT
aGVsbDo6Y3JlYXRlTmV3Q29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQcm94eS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbjIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4UHJveHkuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdEV4dGVu
c2lvbik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDkt
MjAgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcAkocmV2aXNpb24gNjc4NjgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsMTEgKzM0MCwxOCBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6Q29udGV4dD4gVjhET01XaW5kb3dTCiAgICAgICAgIGlmIChleHRlbnNpb25z
W2ldLmdyb3VwICYmIGV4dGVuc2lvbnNbaV0uZ3JvdXAgIT0gZXh0ZW5zaW9uR3JvdXApCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBOb3RlOiB3ZSBjaGVjayB0aGUgbG9hZGVy
IFVSTCBoZXJlIGluc3RlYWQgb2YgdGhlIGRvY3VtZW50IFVSTAotICAgICAgICAvLyBiZWNhdXNl
IHdlIG1pZ2h0IGJlIGN1cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxhbmsgcGFnZS4K
LSAgICAgICAgLy8gU2VlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMv
ZGV0YWlsP2lkPTEwOTI0Ci0gICAgICAgIGlmIChleHRlbnNpb25zW2ldLnNjaGVtZS5sZW5ndGgo
KSA+IDAgJiYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lICE9IG1fZnJhbWUtPmxvYWRlcigpLT5hY3Rp
dmVEb2N1bWVudExvYWRlcigpLT51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAoZXh0ZW5zaW9uc1tpXS51c2VDYWxsYmFjaykgeworICAgICAgICAg
ICAgLy8gRW5zdXJlIG91ciBkYXRlIGV4dGVuc2lvbiBpcyBhbHdheXMgYWxsb3dlZC4KKyAgICAg
ICAgICAgIGlmIChleHRlbnNpb25zW2ldLmV4dGVuc2lvbiAhPSBEYXRlRXh0ZW5zaW9uOjpnZXQo
KQorICAgICAgICAgICAgICAgICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93
U2NyaXB0RXh0ZW5zaW9uKGV4dGVuc2lvbnNbaV0uZXh0ZW5zaW9uLT5uYW1lKCksIGV4dGVuc2lv
bkdyb3VwKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIE5vdGU6IHdlIGNoZWNrIHRoZSBsb2FkZXIgVVJMIGhlcmUgaW5zdGVhZCBv
ZiB0aGUgZG9jdW1lbnQgVVJMCisgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIG1pZ2h0IGJlIGN1
cnJlbnRseSBsb2FkaW5nIGFuIFVSTCBpbnRvIGEgYmxhbmsgcGFnZS4KKyAgICAgICAgICAgIC8v
IFNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0x
MDkyNAorICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnNbaV0uc2NoZW1lLmxlbmd0aCgpID4gMCAm
JiAoZXh0ZW5zaW9uc1tpXS5zY2hlbWUgIT0gbV9mcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPnVybCgpLnByb3RvY29sKCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CiAKICAgICAgICAgZXh0ZW5zaW9uTmFtZXNbaW5kZXgrK10gPSBleHRlbnNp
b25zW2ldLmV4dGVuc2lvbi0+bmFtZSgpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0MiwxNCArODQyLDIxIEBAIGJvb2wgVjhQcm94eTo6cmVn
aXN0ZXJlZEV4dGVuc2lvbldpdGhWOCgKIHZvaWQgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24o
djg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHNjaGVtZVJlc3RyaWN0aW9u
KQogewogICAgIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KGV4dGVuc2lvbik7Ci0gICAgVjhFeHRl
bnNpb25JbmZvIGluZm8gPSB7c2NoZW1lUmVzdHJpY3Rpb24sIDAsIGV4dGVuc2lvbn07CisgICAg
VjhFeHRlbnNpb25JbmZvIGluZm8gPSB7c2NoZW1lUmVzdHJpY3Rpb24sIDAsIGV4dGVuc2lvbiwg
ZmFsc2V9OwogICAgIG1fZXh0ZW5zaW9ucy5hcHBlbmQoaW5mbyk7CiB9CiAKIHZvaWQgVjhQcm94
eTo6cmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBpbnQgZXh0ZW5z
aW9uR3JvdXApCiB7CiAgICAgcmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgoZXh0ZW5zaW9uKTsKLSAg
ICBWOEV4dGVuc2lvbkluZm8gaW5mbyA9IHtTdHJpbmcoKSwgZXh0ZW5zaW9uR3JvdXAsIGV4dGVu
c2lvbn07CisgICAgVjhFeHRlbnNpb25JbmZvIGluZm8gPSB7U3RyaW5nKCksIGV4dGVuc2lvbkdy
b3VwLCBleHRlbnNpb24sIGZhbHNlfTsKKyAgICBtX2V4dGVuc2lvbnMuYXBwZW5kKGluZm8pOwor
fQorCit2b2lkIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24qIGV4dGVu
c2lvbikKK3sKKyAgICByZWdpc3RlckV4dGVuc2lvbldpdGhWOChleHRlbnNpb24pOworICAgIFY4
RXh0ZW5zaW9uSW5mbyBpbmZvID0ge1N0cmluZygpLCAwLCBleHRlbnNpb24sIHRydWV9OwogICAg
IG1fZXh0ZW5zaW9ucy5hcHBlbmQoaW5mbyk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyOCw2ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFN0cmluZyBzY2hlbWU7CiAgICAgICAgIGludCBncm91cDsKICAgICAgICAgdjg6OkV4dGVu
c2lvbiogZXh0ZW5zaW9uOworICAgICAgICBib29sIHVzZUNhbGxiYWNrOyAvLyBGSVhNRTogcmVt
b3ZlCiAgICAgfTsKICAgICB0eXBlZGVmIFdURjo6VmVjdG9yPFY4RXh0ZW5zaW9uSW5mbz4gVjhF
eHRlbnNpb25zOwogCkBAIC0zMjksNiArMzMwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24odjg6OkV4dGVuc2lvbiosIGNvbnN0
IFN0cmluZyYgc2NoZW1lUmVzdHJpY3Rpb24pOwogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiwgaW50IGV4dGVuc2lvbkdyb3VwKTsKIAorICAgICAg
ICAvLyBTYW1lIGFzIGFib3ZlLCBidXQgbmV3IHZlcnNpb24uCisgICAgICAgIC8vIEZJWE1FOiBy
ZW1vdmUgdGhlIG90aGVyIDIgdmVyc2lvbnMgaW4gcGhhc2UgMyBvZiBtdWx0aXBhcnQgY2hlY2tp
bjoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1
NzIxCisgICAgICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRlbnNpb24q
KTsKKwogICAgICAgICBzdGF0aWMgdm9pZCByZWdpc3RlckV4dGVuc2lvbldpdGhWOCh2ODo6RXh0
ZW5zaW9uKik7CiAgICAgICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyZWRFeHRlbnNpb25XaXRoVjgo
djg6OkV4dGVuc2lvbiopOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA2
Nzg2OCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3Jp
cHRDb250ZXh0Rm9yRnJhbWUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveVNjcmlw
dENvbnRleHRGb3JGcmFtZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRl
ZFNjcmlwdENvbnRleHQoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3JvdXApIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVTY3JpcHRD
b250ZXh0Rm9yRnJhbWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95U2Ny
aXB0Q29udGV4dEZvckZyYW1lKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
SXNvbGF0ZWRTY3JpcHRDb250ZXh0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dT
Y3JpcHRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9u
R3JvdXApID0gMDsKICNlbmRpZgogCiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvcklj
b25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSA9IDA7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gNjc4ODIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDktMjEgIE1hdHQgUGVycnkgIDxtcGNvbXBs
ZXRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUcnlpbmcgdG8gcmVsYW5kIGEgdmVyc2lvbiBvZiByNjc3NDk6CisgICAgICAg
IEhhdmUgVjhET01XaW5kb3dTaGVsbCBhc2sgdGhlIGVtYmVkZGVyIHdoZXRoZXIgdG8gcnVuIGEg
VjggZXh0ZW5zaW9uCisgICAgICAgIGluIGEgcGFydGljdWxhciBzY3JpcHQgY29udGV4dC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzIxCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2Ny
aXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmFsbG93U2NyaXB0RXh0
ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisgICAgICAg
ICogc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jp
cHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbik6CisKKzIwMTAtMDktMjAgIE1hdHQgUGVy
cnkgIDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUcnlpbmcgdG8gcmVsYW5kIGEgdmVyc2lvbiBvZiByNjc3
NDk6CisgICAgICAgIEhhdmUgVjhET01XaW5kb3dTaGVsbCBhc2sgdGhlIGVtYmVkZGVyIHdoZXRo
ZXIgdG8gcnVuIGEgVjggZXh0ZW5zaW9uCisgICAgICAgIGluIGEgcGFydGljdWxhciBzY3JpcHQg
Y29udGV4dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ1NzIxCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVDbGllbnQ6OmFsbG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmFs
bG93U2NyaXB0RXh0ZW5zaW9uKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTY3JpcHRDb250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbjIpOgorCiAyMDEwLTA5
LTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDY3ODY4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNiArMzAxLDEzIEBAIHB1Ymxp
YzoKICAgICAvLyBzY3JpcHRzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNj
cmlwdENvbnRleHQoV2ViRnJhbWUqKSB7IH0KIAorICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgdGhl
IGdpdmVuIHNjcmlwdCBleHRlbnNpb24gc2hvdWxkIHJ1biBpbiBhIG5ldyBzY3JpcHQKKyAgICAv
LyBjb250ZXh0IGluIHRoaXMgZnJhbWUuIElmIGV4dGVuc2lvbkdyb3VwIGlzIDAsIHRoZSBzY3Jp
cHQgY29udGV4dCBpcyB0aGUKKyAgICAvLyBmcmFtZSdzIG1haW4gY29udGV4dC4gT3RoZXJ3aXNl
LCBpdCBpcyBhIGNvbnRleHQgY3JlYXRlZCBieQorICAgIC8vIFdlYkZyYW1lOjpleGVjdXRlU2Ny
aXB0SW5Jc29sYXRlZFdvcmxkIHdpdGggdGhhdCBzYW1lIGV4dGVuc2lvbkdyb3VwCisgICAgLy8g
dmFsdWUuCisgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RXh0ZW5zaW9uKFdlYkZyYW1lKiwg
Y29uc3QgV2ViU3RyaW5nJiBleHRlbnNpb25OYW1lLCBpbnQgZXh0ZW5zaW9uR3JvdXApIHsgcmV0
dXJuIHRydWU7IH0KKwogCiAgICAgLy8gR2VvbWV0cnkgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2NyaXB0Q29udHJvbGxlci5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgJKHJldmlzaW9uIDY3ODY4KQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIC8vIG1hdGNoaW5nIGdyb3VwLgog
ICAgIC8vIFdpbGwgb25seSBhZmZlY3QgdjggY29udGV4dHMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdGhp
cyBjYWxsLiBUYWtlcyBvd25lcnNoaXAKICAgICAvLyBvZiB0aGUgdjg6OkV4dGVuc2lvbiBvYmpl
Y3QgcGFzc2VkLgorICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIGxhdHRlciAyIHZlcnNpb25zIGlu
IHBoYXNlIDMgb2YgbXVsdGlwYXJ0IGNoZWNraW46CisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NzIxCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgdm9pZCBy
ZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKik7CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMg
dm9pZCByZWdpc3RlckV4dGVuc2lvbih2ODo6RXh0ZW5zaW9uKiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc2NoZW1lUmVzdHJp
Y3Rpb24pOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCShyZXZpc2lvbiA2Nzg2OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxNCBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ3JlYXRlSXNvCiAgICAgICAgIG1fd2ViRnJh
bWUtPmNsaWVudCgpLT5kaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQobV93ZWJGcmFtZSk7
CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjphbGxvd1NjcmlwdEV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVuc2lvbkdyb3VwKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5h
bGxvd1NjcmlwdEV4dGVuc2lvbihtX3dlYkZyYW1lLCBleHRlbnNpb25OYW1lLCBleHRlbnNpb25H
cm91cCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0CiB7CiB9CkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gNjc4Njgp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw2ICs2OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gaW4gZ2FyYmFnZSBjb2xs
ZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVJc29sYXRlZFNjcmlwdENvbnRleHQo
KTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYWxsb3cgdGhlIGdpdmVuIFY4
IGV4dGVuc2lvbiB0byBiZSBhZGRlZCB0bworICAgIC8vIHRoZSBzY3JpcHQgY29udGV4dCBhdCB0
aGUgY3VycmVudGx5IGxvYWRpbmcgcGFnZSBhbmQgZ2l2ZW4gZXh0ZW5zaW9uIGdyb3VwLgorICAg
IHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bk5hbWUsIGludCBleHRlbnNpb25Hcm91cCk7CisKICAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmll
dygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNGcmFtZVZpZXcoKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gNjc4NjgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdENvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKHY4OjpFeHRl
bnNpb24qIGV4dGVuc2lvbikKIHsKLSAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRl
bnNpb24sIFdlYlN0cmluZygpKTsKKyAgICBWOFByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihleHRl
bnNpb24pOwogfQogCiB2b2lkIFdlYlNjcmlwdENvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9u
KHY4OjpFeHRlbnNpb24qIGV4dGVuc2lvbiwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68288</attachid>
            <date>2010-09-21 14:01:16 -0700</date>
            <delta_ts>2010-09-22 11:59:26 -0700</delta_ts>
            <desc>fixed ChangeLog</desc>
            <filename>delegate-4.diff</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Matt Perry">mpcomplete</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>