<?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>71499</bug_id>
          
          <creation_ts>2011-11-03 13:06:18 -0700</creation_ts>
          <short_desc>Only walk up the tree in search of MutationObservers if one has been added</short_desc>
          <delta_ts>2011-11-08 10:30:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495737</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 13:06:18 -0700</bug_when>
    <thetext>Only walk up the tree in search of MutationObservers if one has been added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495742</commentid>
    <comment_count>1</comment_count>
      <attachid>113546</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 13:18:10 -0700</bug_when>
    <thetext>Created attachment 113546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495790</commentid>
    <comment_count>2</comment_count>
      <attachid>113546</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-03 14:14:35 -0700</bug_when>
    <thetext>Comment on attachment 113546
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        This could be improved upon to keep a count of each type, as removing
&gt; +        an observer currently has no effect on m_mutationObserverTypes.
&gt; +        But that would require more space in Document.

So essentially, we do perf optimizations until you add any observer of a type. After that, if you remove the observer, we don&apos;t get back the perf optimization. As discussed in person, the reason we&apos;re not doing a count is more about code complexity than memory savings since you don&apos;t actually have that many documents in a page.

&gt; Source/WebCore/dom/Node.cpp:2550
&gt; +

Mind adding a FIXME to make the old mutation events update their relevant document bits here as well?

&gt; Source/WebCore/dom/Node.cpp:2744
&gt; +    document()-&gt;addMutationObserverTypes(options | WebKitMutationObserver::AllMutationTypes);

As discussed in person, we should only do this if it&apos;s a subtree observer.

&gt; LayoutTests/fast/mutation/cross-document.html:6
&gt; +&lt;meta charset=&quot;utf-8&quot;&gt;
&gt; +&lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;title&gt;&lt;/title&gt;

Please remove unnecessary bits. title and meta don&apos;t need to be here, right?

&gt; LayoutTests/fast/mutation/cross-document.html:10
&gt; +&lt;p id=description&gt;&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

description and console are no long required. js-test-pre will generate these elements for you.

&gt; LayoutTests/fast/mutation/cross-document.html:47
&gt; +    start();

Stylistic nit: I wouldn&apos;t have a start method at all. Just inline the contents of the start method here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495796</commentid>
    <comment_count>3</comment_count>
      <attachid>113546</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 14:33:18 -0700</bug_when>
    <thetext>Comment on attachment 113546
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        But that would require more space in Document.
&gt; 
&gt; So essentially, we do perf optimizations until you add any observer of a type. After that, if you remove the observer, we don&apos;t get back the perf optimization. As discussed in person, the reason we&apos;re not doing a count is more about code complexity than memory savings since you don&apos;t actually have that many documents in a page.

Changed to talk about code complexity instead of space.

&gt; Source/WebCore/dom/Document.h:1248
&gt; +    MutationObserverOptions m_mutationObserverTypes;

Whoops, I forgot to initialize this.  Done in the new patch.

&gt;&gt; Source/WebCore/dom/Node.cpp:2550
&gt;&gt; +
&gt; 
&gt; Mind adding a FIXME to make the old mutation events update their relevant document bits here as well?

Done. As discussed, I don&apos;t think it&apos;s limited to mutation events, and my FIXME reflects that.

&gt;&gt; Source/WebCore/dom/Node.cpp:2744
&gt;&gt; +    document()-&gt;addMutationObserverTypes(options | WebKitMutationObserver::AllMutationTypes);
&gt; 
&gt; As discussed in person, we should only do this if it&apos;s a subtree observer.

Done, and renamed to include &quot;Subtree&quot; in the name.

&gt;&gt; LayoutTests/fast/mutation/cross-document.html:6
&gt;&gt; +&lt;title&gt;&lt;/title&gt;
&gt; 
&gt; Please remove unnecessary bits. title and meta don&apos;t need to be here, right?

Removed.

&gt;&gt; LayoutTests/fast/mutation/cross-document.html:10
&gt;&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; description and console are no long required. js-test-pre will generate these elements for you.

Yay, removed.

&gt;&gt; LayoutTests/fast/mutation/cross-document.html:47
&gt;&gt; +    start();
&gt; 
&gt; Stylistic nit: I wouldn&apos;t have a start method at all. Just inline the contents of the start method here.

I&apos;d rather leave as-is for now to match the rest of the tests in this directory...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495797</commentid>
    <comment_count>4</comment_count>
      <attachid>113560</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 14:33:55 -0700</bug_when>
    <thetext>Created attachment 113560
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495800</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 14:49:30 -0700</bug_when>
    <thetext>Holding off on submitting until Rafael lands his refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495811</commentid>
    <comment_count>6</comment_count>
      <attachid>113560</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-03 15:12:55 -0700</bug_when>
    <thetext>Comment on attachment 113560
Patch for landing

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

&gt; LayoutTests/fast/mutation/cross-document.html:5
&gt; +&lt;head&gt;
&gt; +&lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;/head&gt;

Nit: you don&apos;t need the head, body or html elements either. But Ryosuke and I disagree about what the best style is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495892</commentid>
    <comment_count>7</comment_count>
      <attachid>113584</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 17:03:06 -0700</bug_when>
    <thetext>Created attachment 113584
Bail out properly in node removal as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495911</commentid>
    <comment_count>8</comment_count>
      <attachid>113584</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-03 17:25:28 -0700</bug_when>
    <thetext>Comment on attachment 113584
Bail out properly in node removal as well

Attachment 113584 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10285164</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495929</commentid>
    <comment_count>9</comment_count>
      <attachid>113584</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-03 17:36:11 -0700</bug_when>
    <thetext>Comment on attachment 113584
Bail out properly in node removal as well

Attachment 113584 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10301019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495937</commentid>
    <comment_count>10</comment_count>
      <attachid>113592</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 17:39:17 -0700</bug_when>
    <thetext>Created attachment 113592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495976</commentid>
    <comment_count>11</comment_count>
      <attachid>113584</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-03 18:33:32 -0700</bug_when>
    <thetext>Comment on attachment 113584
Bail out properly in node removal as well

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

&gt; Source/WebCore/dom/Node.cpp:2751
&gt; +        document()-&gt;addSubtreeMutationObserverTypes(options | WebKitMutationObserver::AllMutationTypes);

This should be &amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495980</commentid>
    <comment_count>12</comment_count>
      <attachid>113605</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 18:36:11 -0700</bug_when>
    <thetext>Created attachment 113605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495981</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 18:36:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 113584 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113584&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:2751
&gt; &gt; +        document()-&gt;addSubtreeMutationObserverTypes(options | WebKitMutationObserver::AllMutationTypes);
&gt; 
&gt; This should be &amp;.

Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495985</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-03 18:43:56 -0700</bug_when>
    <thetext>BTW, I&apos;d love to see some performance tests before doing more perf optimizing. Not required, but nice to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495986</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-03 18:48:30 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; BTW, I&apos;d love to see some performance tests before doing more perf optimizing. Not required, but nice to have.

So would I.  For the record, this particular optimization was chosen after doing some tests with deeply-nested DOM trees and seeing that the cost of walking up the tree made appendChild() 30-60% slower than baseline even with no observers attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495988</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-11-03 18:50:34 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; BTW, I&apos;d love to see some performance tests before doing more perf optimizing. Not required, but nice to have.
&gt; 
&gt; So would I.  For the record, this particular optimization was chosen after doing some tests with deeply-nested DOM trees and seeing that the cost of walking up the tree made appendChild() 30-60% slower than baseline even with no observers attached.

Oh, I totally trust you tested the perf benefit. I&apos;d just like to see the test checked in so that future people can run the test. You can check it in to Source/WebCore/manual-tests/perf (directory doesn&apos;t exist yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497434</commentid>
    <comment_count>17</comment_count>
      <attachid>113919</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-07 13:41:11 -0800</bug_when>
    <thetext>Created attachment 113919
Merged with refactor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497440</commentid>
    <comment_count>18</comment_count>
      <attachid>113922</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-11-07 13:46:21 -0800</bug_when>
    <thetext>Created attachment 113922
Slightly cleaner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497740</commentid>
    <comment_count>19</comment_count>
      <attachid>113922</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-07 22:06:20 -0800</bug_when>
    <thetext>Comment on attachment 113922
Slightly cleaner

I think Ojan&apos;s r+ withstands. If not, then r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498224</commentid>
    <comment_count>20</comment_count>
      <attachid>113922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 10:30:10 -0800</bug_when>
    <thetext>Comment on attachment 113922
Slightly cleaner

Clearing flags on attachment: 113922

Committed r99593: &lt;http://trac.webkit.org/changeset/99593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498225</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 10:30:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113546</attachid>
            <date>2011-11-03 13:18:10 -0700</date>
            <delta_ts>2011-11-03 14:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71499-20111103131808.patch</filename>
            <type>text/plain</type>
            <size>9200</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjE2ZTU4NWY1ZGU1MGE2
ZGE4NGU4NjgyNzdhODMxZDA4Mzc3Mjk5Li4wMzA4MTI3ODUxYjllMmQ3NDRlMGEyMDgyZWVhOWEy
M2YyZWQ3OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMDMgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0
cmVlIGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5hbG9nb3Vz
IHRvIG1fbGlzdGVuZXJUeXBlcywgYWRkZWQgYW4gbV9tdXRhdGlvbk9ic2VydmVyVHlwZXMgZmll
bGQKKyAgICAgICAgdG8gRG9jdW1lbnQgdGhhdCBrZWVwcyB0cmFjayBvZiB3aGljaCBvYnNlcnZl
ciB0eXBlcyBoYXZlIGJlZW4gYWRkZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lk
IGRvaW5nIGFueSBleHRyYSB3b3JrIGlmIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZQorICAgICAgICBu
b3QgYXR0YWNoZWQgdG8gYSBkb2N1bWVudC4KKworICAgICAgICBUaGlzIGNvdWxkIGJlIGltcHJv
dmVkIHVwb24gdG8ga2VlcCBhIGNvdW50IG9mIGVhY2ggdHlwZSwgYXMgcmVtb3ZpbmcKKyAgICAg
ICAgYW4gb2JzZXJ2ZXIgY3VycmVudGx5IGhhcyBubyBlZmZlY3Qgb24gbV9tdXRhdGlvbk9ic2Vy
dmVyVHlwZXMuCisgICAgICAgIEJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgbW9yZSBzcGFjZSBpbiBE
b2N1bWVudC4KKworICAgICAgICBUZXN0OiBmYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0
bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Omhhc011dGF0aW9uT2JzZXJ2ZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjphZGRNdXRhdGlvbk9ic2VydmVyVHlwZXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQpOiBVcGRhdGUg
bXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYSBOb2RlIGlzIG1vdmVkIHRvIGEgbmV3IGRvY3Vt
ZW50LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKTogRXhpdCBlYXJseSBpZiBpdCdzIGtub3duIHRoYXQgbm8gb2JzZXJ2ZXJzIGFy
ZSByZWdpc3RlcmVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9i
c2VydmVyKTogVXBkYXRlIG11dGF0aW9uT2JzZXJ2ZXJUeXBlcyB3aGVuIGFuIG9ic2VydmF0aW9u
IG9jY3Vycy4KKyAgICAgICAgKiBkb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oOiBBZGQgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlcyB0byBlbnVtCisKIDIwMTEtMTEt
MDMgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVk
REI6IE9iamVjdCBzdG9yZXMgbm90IHBlcnNpc3RpbmcgYmV0d2VlbiBzZXNzaW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA0YTRhOTMzOWM3N2U0Zjg0Mjc0ZDlkYjExZDljNDZjNTVlODk1OTQ5
Li44MDYwMjdkY2ZjZTcwNDc1ODI4MmJjMzUxMWJmOGFmZjMzZWMxMDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAi
VHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC03NzYsNiAr
Nzc3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUg
bGlzdGVuZXJUeXBlKSB7IG1fbGlzdGVuZXJUeXBlcyA9IG1fbGlzdGVuZXJUeXBlcyB8IGxpc3Rl
bmVyVHlwZTsgfQogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAg
ICBib29sIGhhc011dGF0aW9uT2JzZXJ2ZXJUeXBlKFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11
dGF0aW9uVHlwZSB0eXBlKSBjb25zdCB7IHJldHVybiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyAm
IHR5cGU7IH0KKyAgICB2b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9ucyB0eXBlcykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyB8PSB0eXBlczsgfQor
I2VuZGlmCisKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBnZXRPdmVycmlkZVN0eWxlKEVsZW1l
bnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCk7CiAKICAgICBpbnQgbm9kZUFic0luZGV4KE5v
ZGUqKTsKQEAgLTEyMzgsNiArMTI0NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgc2hv
cnQgbV9saXN0ZW5lclR5cGVzOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAg
ICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlczsKKyNlbmRp
ZgorCiAgICAgUmVmUHRyPFN0eWxlU2hlZXRMaXN0PiBtX3N0eWxlU2hlZXRzOyAvLyBBbGwgb2Yg
dGhlIHN0eWxlc2hlZXRzIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBlZmZlY3QgZm9yIG91ciBtZWRp
YSB0eXBlIGFuZCBzdHlsZXNoZWV0IHNldC4KICAgICAKICAgICB0eXBlZGVmIExpc3RIYXNoU2V0
PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IGJhZGQwN2IyOWMxMzg3ZWNmMmY3OWI0NmJmZWE0NWUzOWZiY2MwYTkuLjI2OWVhMGNj
ODhkNzAxNzBjMmU0NjY4OGExZmEzNGU5ZjY2MGRlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI1
NDcsNiArMjU0NywxMyBAQCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQog
ewogICAgIEFTU0VSVCghZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiAgICAg
c2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKKworI2lmIEVOQUJM
RShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgaWYgKFZlY3RvcjxNdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uPiogcmVnaXN0cnkgPSBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdHJ5LT5zaXplKCk7ICsraSkKKyAgICAg
ICAgICAgIGRvY3VtZW50KCktPmFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3RyeS0+YXQo
aSkub3B0aW9ucyAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9uVHlwZXMpOwor
ICAgIH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTI3MjEsNiArMjcyOCw5IEBA
IHN0YXRpYyB2b2lkIGFkZE1hdGNoaW5nT2JzZXJ2ZXJzKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25P
YnNlcnZlciosIE11dGF0aW9uT2JzZXJ2CiAKIHZvaWQgTm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0
aW9uT2JzZXJ2ZXJzT2ZUeXBlKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0
aW9uT2JzZXJ2ZXJPcHRpb25zPiYgb2JzZXJ2ZXJzLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpN
dXRhdGlvblR5cGUgdHlwZSkKIHsKKyAgICBpZiAoIWRvY3VtZW50KCktPmhhc011dGF0aW9uT2Jz
ZXJ2ZXJUeXBlKHR5cGUpKQorICAgICAgICByZXR1cm47CisKICAgICBhZGRNYXRjaGluZ09ic2Vy
dmVycyhvYnNlcnZlcnMsIG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLCB0eXBlKTsKICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCkpCiAgICAgICAgIGFkZE1hdGNoaW5nT2JzZXJ2ZXJzKG9ic2VydmVycywgbm9kZS0+bXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksIHR5cGUgfCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpT
dWJ0cmVlKTsKQEAgLTI3MzEsNiArMjc0MSw4IEBAIE5vZGU6Ok11dGF0aW9uUmVnaXN0cmF0aW9u
UmVzdWx0IE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihQYXNzUmVmUHRyPFdlYktpCiAg
ICAgVmVjdG9yPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KiByZWdpc3RyeSA9IGVuc3Vy
ZVJhcmVEYXRhKCktPmVuc3VyZU11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogICAgIE11dGF0
aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24gcmVnaXN0cmF0aW9uKG9ic2VydmVyLCBvcHRpb25zLCBy
ZWdpc3RyYXRpb25Ob2RlKTsKIAorICAgIGRvY3VtZW50KCktPmFkZE11dGF0aW9uT2JzZXJ2ZXJU
eXBlcyhvcHRpb25zIHwgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlcyk7
CisKICAgICBzaXplX3QgaW5kZXggPSByZWdpc3RyeS0+ZmluZChyZWdpc3RyYXRpb24pOwogICAg
IGlmIChpbmRleCA9PSBub3RGb3VuZCkgewogICAgICAgICByZWdpc3RyeS0+YXBwZW5kKHJlZ2lz
dHJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25P
YnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaApp
bmRleCA3NTMyMDRjMjQ3OTRkNGUzODJkYjAyNTUxZWE1NDgwMzU0ZGM0YTc1Li5kNzQxODMzYTkw
NzBmMzIyMDM2ZWZkYmJiY2QyZTk0YmYzM2Q2MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKQEAgLTU0LDcgKzU0LDkgQEAgcHVibGljOgogICAgIGVu
dW0gTXV0YXRpb25UeXBlIHsKICAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAwLAogICAgICAgICBB
dHRyaWJ1dGVzID0gMSA8PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAyCisgICAg
ICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIsCisKKyAgICAgICAgQWxsTXV0YXRpb25UeXBlcyA9
IENoaWxkTGlzdCB8IEF0dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhCiAgICAgfTsKIAogICAgIGVu
dW0gT3B0aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliMGViYmViYjhjOTJlMzQzYTJmMDFkY2M1MjYwNTAz
NDQ3OGU0YmEuLjlmMDU2OTY0M2I5Y2EwZjhlODBmNGEyMGFkM2JmMWM2NjY3MDMzNDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0wMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBPbmx5IHdhbGsgdXAgdGhlIHRyZWUgaW4gc2VhcmNoIG9mIE11dGF0
aW9uT2JzZXJ2ZXJzIGlmIG9uZSBoYXMgYmVlbiBhZGRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGVkIGEgYmFzaWMgdGVzdCBzaG93aW5nIHRo
YXQgTXV0YXRpb25PYnNlcnZlcnMKKyAgICAgICAgYXJlIHByZXNlcnZlZCB3aGVuIGEgTm9kZSBz
d2l0Y2hlcyBkb2N1bWVudHMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3NzLWRvY3Vt
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9jcm9zcy1k
b2N1bWVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMyAgQW5kcmV5IEtvc3lha292ICA8Y2Fz
ZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJyb3VnaHQgYmFjayBUSU1F
T1VUIGZvciBzaG93LWhpZGUtdGFibGUtcm93cy5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3
NGE2MTQzNjlhZmUwZTM5NWViYjIyYWIzYTkwYWUxOWFkOWJlYTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE2IEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgbW92ZSBjb3JyZWN0
bHkgYWNyb3NzIGRvY3VtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGVz
dGluZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLgorUEFTUyBt
dXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFj
ZSBpcyBudWxsCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3Vt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTE4NzhkMWY4NGQyMTRjNDYxMWQwMmIxNjFhZWJjOTMzMmUxZDVkYgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQu
aHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzx0aXRsZT48L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD1kZXNjcmlwdGlvbj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7Cit2YXIgZGl2
OworCitmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVu
Y3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2Yg
Y3Jvc3MtZG9jdW1lbnQgb2JzZXJ2YXRpb24uJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVs
bDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25z
KSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9
KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsK
KyAgICAgICAgdmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3Vt
ZW50KCcnLCAnJywgbnVsbCk7CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOworICAg
ICAgICBkaXYuaWQgPSAnZm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
cy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAn
ImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0Jywg
J2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAn
ImlkIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFj
ZScsICdudWxsJyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVi
dWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9
CisKK3ZhciB0ZXN0cyA9IFt0ZXN0QmFzaWNdOwordmFyIHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0
aW9uIHJ1bk5leHRUZXN0KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCisg
ICAgICAgIHRlc3RzW3Rlc3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK2Rlc2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgbW92
ZSBjb3JyZWN0bHkgYWNyb3NzIGRvY3VtZW50cycpOworCitpZiAoIXdpbmRvdy5XZWJLaXRNdXRh
dGlvbk9ic2VydmVyKQorICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUo
TVVUQVRJT05fT0JTRVJWRVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113560</attachid>
            <date>2011-11-03 14:33:55 -0700</date>
            <delta_ts>2011-11-03 17:03:03 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71499-20111103143354.patch</filename>
            <type>text/plain</type>
            <size>11704</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjE2ZTU4NWY1ZGU1MGE2
ZGE4NGU4NjgyNzdhODMxZDA4Mzc3Mjk5Li5jMWRmNmUzOWYyNTdkODdhYTA0NWYyOWMwNjc3NTU2
NjI3Yzk4MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTEtMDMgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0
cmVlIGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBbmFsb2dvdXMgdG8g
bV9saXN0ZW5lclR5cGVzLCBhZGRlZCBhbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyBmaWVsZAor
ICAgICAgICB0byBEb2N1bWVudCB0aGF0IGtlZXBzIHRyYWNrIG9mIHdoaWNoIG9ic2VydmVyIHR5
cGVzIGhhdmUgYmVlbiBhZGRlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgZG9p
bmcgYW55IGV4dHJhIHdvcmsgaWYgTXV0YXRpb25PYnNlcnZlcnMgYXJlCisgICAgICAgIG5vdCBh
dHRhY2hlZCB0byBhIGRvY3VtZW50LgorCisgICAgICAgIFRoaXMgY291bGQgYmUgaW1wcm92ZWQg
dXBvbiB0byBrZWVwIGEgY291bnQgb2YgZWFjaCB0eXBlLCBhcyByZW1vdmluZworICAgICAgICBh
biBvYnNlcnZlciBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCBvbiBtX211dGF0aW9uT2JzZXJ2ZXJU
eXBlcy4KKyAgICAgICAgQnV0IHRoYXQgd291bGQgcmVxdWlyZSBhIG1vcmUgY29tcGxleCBpbXBs
ZW1lbnRhdGlvbjogb25lIGNvdW50ZXIgcGVyCisgICAgICAgIG11dGF0aW9uIHR5cGUuIEFuZCBp
dCB3b3VsZCBiZSBlYXNpZXIgdG8gZ2V0IHdyb25nOiBpZiB0aGUgY291bnRlcgorICAgICAgICBn
ZXRzIG91dCBvZiBzeW5jIHdpdGggdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUgRE9NLCB3ZSBjb3Vs
ZCBzdGFydAorICAgICAgICBkcm9wcGluZyBtdXRhdGlvbiBub3RpZmljYXRpb25zLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzTXV0YXRpb25P
YnNlcnZlclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZE11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlcyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCk6IFVwZGF0ZSBtdXRhdGlvbk9ic2VydmVy
VHlwZXMgd2hlbiBhIE5vZGUgaXMgbW92ZWQgdG8gYSBuZXcgZG9jdW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRSZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUpOiBFeGl0
IGVhcmx5IGlmIGl0J3Mga25vd24gdGhhdCBubyBvYnNlcnZlcnMgYXJlIHJlZ2lzdGVyZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOiBVcGRhdGUg
bXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYW4gb2JzZXJ2YXRpb24gb2NjdXJzLgorICAgICAg
ICAqIGRvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmg6IEFkZCBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyOjpBbGxNdXRhdGlvblR5cGVzIHRvIGVudW0KKwogMjAxMS0xMS0wMyAgSm9zaHVhIEJlbGwg
IDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogT2JqZWN0IHN0b3Jl
cyBub3QgcGVyc2lzdGluZyBiZXR3ZWVuIHNlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAwMGM3MjlmNjI0NTI3ZWM2NjMxNmMwMzBmYWY3YWIxZTdjYzY0YWM5Li43MWZlZmJhMjMy
ZDJkNGE5MmU2NWU0MmU5ZjliNmJhNjYwODM5YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTM1OSw2ICszNTksNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2NvbXBhdGli
aWxpdHlNb2RlKE5vUXVpcmtzTW9kZSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQo
ZmFsc2UpCiAgICAgLCBtX2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikKKyAg
ICAsIG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcygwKQogICAgICwgbV9zdHlsZVNoZWV0
cyhTdHlsZVNoZWV0TGlzdDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9yZWFkeVN0YXRlKENvbXBs
ZXRlKQogICAgICwgbV9zdHlsZVJlY2FsY1RpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZWNh
bGNUaW1lckZpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0YTRhOTMzOWM3N2U0Zjg0Mjc0
ZDlkYjExZDljNDZjNTVlODk1OTQ5Li5iZWEyZDBhYjlhMGY0MmUxMjNkNTJhM2ZjZjQ1OWJiZTNl
OGM2NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1
bWVudHMuaCIKKyNpbmNsdWRlICJXZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CkBAIC03NzYsNiArNzc3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSB7IG1fbGlzdGVuZXJUeXBlcyA9IG1f
bGlzdGVuZXJUeXBlcyB8IGxpc3RlbmVyVHlwZTsgfQogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBl
SWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwogCisjaWYgRU5BQkxFKE1V
VEFUSU9OX09CU0VSVkVSUykKKyAgICBib29sIGhhc1N1YnRyZWVNdXRhdGlvbk9ic2VydmVyT2ZU
eXBlKFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyAmIHR5cGU7
CisgICAgfQorICAgIHZvaWQgYWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlv
bk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMg
fD0gdHlwZXM7IH0KKyNlbmRpZgorCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZ2V0T3ZlcnJp
ZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpOwogCiAgICAgaW50IG5v
ZGVBYnNJbmRleChOb2RlKik7CkBAIC0xMjM4LDYgKzEyNDcsMTAgQEAgcHJpdmF0ZToKIAogICAg
IHVuc2lnbmVkIHNob3J0IG1fbGlzdGVuZXJUeXBlczsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbV9zdWJ0cmVlTXV0YXRpb25P
YnNlcnZlclR5cGVzOworI2VuZGlmCisKICAgICBSZWZQdHI8U3R5bGVTaGVldExpc3Q+IG1fc3R5
bGVTaGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMgdGhhdCBhcmUgY3VycmVudGx5IGlu
IGVmZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxlc2hlZXQgc2V0LgogICAgIAogICAg
IHR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhh
c2hTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYmFkZDA3YjI5YzEzODdlY2YyZjc5YjQ2YmZlYTQ1
ZTM5ZmJjYzBhOS4uODg4OTYzYWJhZTc3NjZhOTE2MTM3YjlkYjIyZjQ2MzFlZGI0YzNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMjU0Nyw2ICsyNTQ3LDE4IEBAIHZvaWQgTm9kZTo6ZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50V2FzQ2FsbGVkKTsKICAgICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVk
KHRydWUpOworCisgICAgLy8gRklYTUU6IEV2ZW50IGxpc3RlbmVyIHR5cGVzIGZvciB0aGlzIG5v
ZGUgc2hvdWxkIGJlIHNldCBvbiB0aGUgbmV3IG93bmVyIGRvY3VtZW50IGhlcmUuCisKKyNpZiBF
TkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGlmIChWZWN0b3I8TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mIGVudHJ5ID0gcmVnaXN0
cnktPmF0KGkpOworICAgICAgICAgICAgaWYgKGVudHJ5Lmhhc0FsbE9wdGlvbnMoV2ViS2l0TXV0
YXRpb25PYnNlcnZlcjo6U3VidHJlZSkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+YWRk
U3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhlbnRyeS5vcHRpb25zICYgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlcyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK
IH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yNzIyLDYgKzI3MzQsMTAgQEAgc3RhdGljIHZvaWQg
YWRkTWF0Y2hpbmdPYnNlcnZlcnMoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0
YXRpb25PYnNlcnYKIHZvaWQgTm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzT2ZU
eXBlKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zPiYgb2JzZXJ2ZXJzLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlw
ZSkKIHsKICAgICBhZGRNYXRjaGluZ09ic2VydmVycyhvYnNlcnZlcnMsIG11dGF0aW9uT2JzZXJ2
ZXJSZWdpc3RyeSgpLCB0eXBlKTsKKworICAgIGlmICghZG9jdW1lbnQoKS0+aGFzU3VidHJlZU11
dGF0aW9uT2JzZXJ2ZXJPZlR5cGUodHlwZSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAo
Tm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KSkKICAgICAgICAgYWRkTWF0Y2hpbmdPYnNlcnZlcnMob2JzZXJ2ZXJzLCBub2RlLT5tdXRhdGlv
bk9ic2VydmVyUmVnaXN0cnkoKSwgdHlwZSB8IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRy
ZWUpOwogfQpAQCAtMjczMSw2ICsyNzQ3LDkgQEAgTm9kZTo6TXV0YXRpb25SZWdpc3RyYXRpb25S
ZXN1bHQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKFBhc3NSZWZQdHI8V2ViS2kKICAg
ICBWZWN0b3I8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0gZW5zdXJl
UmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiByZWdpc3RyYXRpb24ob2JzZXJ2ZXIsIG9wdGlvbnMsIHJl
Z2lzdHJhdGlvbk5vZGUpOwogCisgICAgaWYgKG9wdGlvbnMgJiBXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyOjpTdWJ0cmVlKQorICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25PYnNl
cnZlclR5cGVzKG9wdGlvbnMgfCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5
cGVzKTsKKwogICAgIHNpemVfdCBpbmRleCA9IHJlZ2lzdHJ5LT5maW5kKHJlZ2lzdHJhdGlvbik7
CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlZ2lzdHJ5LT5hcHBlbmQo
cmVnaXN0cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRh
dGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZl
ci5oCmluZGV4IDc1MzIwNGMyNDc5NGQ0ZTM4MmRiMDI1NTFlYTU0ODAzNTRkYzRhNzUuLmQ3NDE4
MzNhOTA3MGYzMjIwMzZlZmRiYmJjZDJlOTRiZjMzZDYyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaApAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAg
ICAgZW51bSBNdXRhdGlvblR5cGUgewogICAgICAgICBDaGlsZExpc3QgPSAxIDw8IDAsCiAgICAg
ICAgIEF0dHJpYnV0ZXMgPSAxIDw8IDEsCi0gICAgICAgIENoYXJhY3RlckRhdGEgPSAxIDw8IDIK
KyAgICAgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMiwKKworICAgICAgICBBbGxNdXRhdGlvblR5
cGVzID0gQ2hpbGRMaXN0IHwgQXR0cmlidXRlcyB8IENoYXJhY3RlckRhdGEKICAgICB9OwogCiAg
ICAgZW51bSBPcHRpb25GbGFncyB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWIwZWJiZWJiOGM5MmUzNDNhMmYwMWRjYzUy
NjA1MDM0NDc4ZTRiYS4uMzBjNDMyYjllMmI4ZGVjZWUyNmFiN2M1M2E3ZDNiMGM1ZTkxZmU2YyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTAzICBBZGFtIEtsZWluICA8YWRhbWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIE9ubHkgd2FsayB1cCB0aGUgdHJlZSBpbiBzZWFyY2ggb2Yg
TXV0YXRpb25PYnNlcnZlcnMgaWYgb25lIGhhcyBiZWVuIGFkZGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTQ5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgQ3JlYXRlZCBhIGJhc2ljIHRlc3Qgc2hvd2luZyB0
aGF0IE11dGF0aW9uT2JzZXJ2ZXJzCisgICAgICAgIGFyZSBwcmVzZXJ2ZWQgd2hlbiBhIE5vZGUg
c3dpdGNoZXMgZG9jdW1lbnRzLgorCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1
bWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vY3Jvc3Mt
ZG9jdW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDMgIEFuZHJleSBLb3N5YWtvdiAgPGNh
c2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBCcm91Z2h0IGJhY2sgVElN
RU9VVCBmb3Igc2hvdy1oaWRlLXRhYmxlLXJvd3MuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
MWVkNDM5MDQ3MTg4NWRhZDVkODY2MTRjNjUyYzBlZDRmMTZiNzE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMyBAQAorVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG1vdmUgY29ycmVj
dGx5IGFjcm9zcyBkb2N1bWVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rl
c3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlvbi4KK1BBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1
dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMF0u
YXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3Bh
Y2UgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgc3VidHJlZSBvYnNlcnZhdGlvbiB3b3JrcyBhZnRl
ciBub2RlIGlzIG1vdmVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRp
b25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMg
c3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0
YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlZTdmMGNmY2Q4NzRiZWRi
Zjg4YTlmYWZhN2FiYTlmMTgwNGZhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7Cit2YXIgZGl2LCBzdWJE
aXY7CisKK2Z1bmN0aW9uIHRlc3RCYXNpYygpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBm
dW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBv
ZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlvbi4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBu
dWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAg
ICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlv
bnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAg
IH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0p
OworICAgICAgICB2YXIgbmV3RG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9j
dW1lbnQoJycsICcnLCBudWxsKTsKKyAgICAgICAgbmV3RG9jLmFwcGVuZENoaWxkKGRpdik7Cisg
ICAgICAgIGRpdi5pZCA9ICdmb28nOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScs
ICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQn
LCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScs
ICciaWQiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNw
YWNlJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBk
ZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsK
K30KKworZnVuY3Rpb24gdGVzdFN1YnRyZWUoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAg
ZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQgc3VidHJlZSBv
YnNlcnZhdGlvbiB3b3JrcyBhZnRlciBub2RlIGlzIG1vdmVkLicpOworCisgICAgICAgIG11dGF0
aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JykpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11
dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHth
dHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIHZhciBuZXdEb2MgPSBk
b2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgJycsIG51bGwpOworICAg
ICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgc3ViRGl2LmlkID0gJ2Zvbyc7
CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBm
aW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAg
ICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAg
cnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCit2YXIgdGVzdHMgPSBb
dGVzdEJhc2ljLCB0ZXN0U3VidHJlZV07Cit2YXIgdGVzdEluZGV4ID0gMDsKKworZnVuY3Rpb24g
cnVuTmV4dFRlc3QoKSB7CisgICAgaWYgKHRlc3RJbmRleCA8IHRlc3RzLmxlbmd0aCkKKyAgICAg
ICAgdGVzdHNbdGVzdEluZGV4KytdKCk7CisgICAgZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBtb3ZlIGNv
cnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzJyk7CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9u
T2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113584</attachid>
            <date>2011-11-03 17:03:06 -0700</date>
            <delta_ts>2011-11-03 18:33:32 -0700</delta_ts>
            <desc>Bail out properly in node removal as well</desc>
            <filename>bug-71499-20111103170305.patch</filename>
            <type>text/plain</type>
            <size>12434</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjE2ZTU4NWY1ZGU1MGE2
ZGE4NGU4NjgyNzdhODMxZDA4Mzc3Mjk5Li4xNWE5MzEyYmZmNzVjZTMyZTU2MmU2NTQyYWJmYWY2
N2FlYzVhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTEtMDMgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0
cmVlIGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBbmFsb2dvdXMgdG8g
bV9saXN0ZW5lclR5cGVzLCBhZGRlZCBhbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyBmaWVsZAor
ICAgICAgICB0byBEb2N1bWVudCB0aGF0IGtlZXBzIHRyYWNrIG9mIHdoaWNoIG9ic2VydmVyIHR5
cGVzIGhhdmUgYmVlbiBhZGRlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgZG9p
bmcgYW55IGV4dHJhIHdvcmsgaWYgTXV0YXRpb25PYnNlcnZlcnMgYXJlCisgICAgICAgIG5vdCBh
dHRhY2hlZCB0byBhIGRvY3VtZW50LgorCisgICAgICAgIFRoaXMgY291bGQgYmUgaW1wcm92ZWQg
dXBvbiB0byBrZWVwIGEgY291bnQgb2YgZWFjaCB0eXBlLCBhcyByZW1vdmluZworICAgICAgICBh
biBvYnNlcnZlciBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCBvbiBtX211dGF0aW9uT2JzZXJ2ZXJU
eXBlcy4KKyAgICAgICAgQnV0IHRoYXQgd291bGQgcmVxdWlyZSBhIG1vcmUgY29tcGxleCBpbXBs
ZW1lbnRhdGlvbjogb25lIGNvdW50ZXIgcGVyCisgICAgICAgIG11dGF0aW9uIHR5cGUuIEFuZCBp
dCB3b3VsZCBiZSBlYXNpZXIgdG8gZ2V0IHdyb25nOiBpZiB0aGUgY291bnRlcgorICAgICAgICBn
ZXRzIG91dCBvZiBzeW5jIHdpdGggdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUgRE9NLCB3ZSBjb3Vs
ZCBzdGFydAorICAgICAgICBkcm9wcGluZyBtdXRhdGlvbiBub3RpZmljYXRpb25zLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzU3VidHJlZU11
dGF0aW9uT2JzZXJ2ZXJPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1N1
YnRyZWVNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRT
dWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KTogVXBkYXRl
IG11dGF0aW9uT2JzZXJ2ZXJUeXBlcyB3aGVuIGEgTm9kZSBpcyBtb3ZlZCB0byBhIG5ldyBkb2N1
bWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2Vy
dmVyc09mVHlwZSk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biB0aGF0IG5vIG9ic2VydmVycyBv
ZiB8dHlwZXwgYXJlIHJlZ2lzdGVyZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rl
ck11dGF0aW9uT2JzZXJ2ZXIpOiBVcGRhdGUgbXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYW4g
b2JzZXJ2YXRpb24gb2NjdXJzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TXV0YXRp
b25PYnNlcnZlcnNOb2RlV2lsbERldGFjaCk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biBubyBz
dWJ0cmVlIG9ic2VydmVycyBvZiBhbnkgdHlwZSBhcmUgcmVnaXN0ZXJlZC4KKyAgICAgICAgKiBk
b20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oOiBBZGQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6
QWxsTXV0YXRpb25UeXBlcyB0byBlbnVtCisKIDIwMTEtMTEtMDMgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IE9iamVjdCBzdG9yZXMgbm90
IHBlcnNpc3RpbmcgYmV0d2VlbiBzZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
MDBjNzI5ZjYyNDUyN2VjNjYzMTZjMDMwZmFmN2FiMWU3Y2M2NGFjOS4uNzFmZWZiYTIzMmQyZDRh
OTJlNjVlNDJlOWY5YjZiYTY2MDgzOWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
NTksNiArMzU5LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9jb21wYXRpYmlsaXR5
TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNl
KQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCisgICAgLCBt
X3N1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMoMCkKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5
bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcmVhZHlTdGF0ZShDb21wbGV0ZSkK
ICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxjVGlt
ZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGE0YTkzMzljNzdlNGY4NDI3NGQ5ZGIx
MWQ5YzQ2YzU1ZTg5NTk0OS4uNDhkZmVjOTA5NmI2N2E3OWQxZWRjM2JkZGE0M2UxNTVjNmI3ODIy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgpAQCAtNzc2LDYgKzc3NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5
cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgeyBtX2xpc3RlbmVyVHlwZXMgPSBtX2xpc3Rl
bmVyVHlwZXMgfCBsaXN0ZW5lclR5cGU7IH0KICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlmTmVl
ZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIAorI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpCisgICAgYm9vbCBoYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZShX
ZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUgdHlwZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMgJiB0eXBlOworICAg
IH0KKyAgICBib29sIGhhc1N1YnRyZWVNdXRhdGlvbk9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4g
bV9zdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzOyB9CisgICAgdm9pZCBhZGRTdWJ0cmVlTXV0
YXRpb25PYnNlcnZlclR5cGVzKE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fc3Vi
dHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyB8PSB0eXBlczsgfQorI2VuZGlmCisKICAgICBDU1NT
dHlsZURlY2xhcmF0aW9uKiBnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
IHBzZXVkb0VsdCk7CiAKICAgICBpbnQgbm9kZUFic0luZGV4KE5vZGUqKTsKQEAgLTEyMzgsNiAr
MTI0OCwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgc2hvcnQgbV9saXN0ZW5lclR5cGVz
OwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBNdXRhdGlvbk9ic2VydmVy
T3B0aW9ucyBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXM7CisjZW5kaWYKKwogICAgIFJl
ZlB0cjxTdHlsZVNoZWV0TGlzdD4gbV9zdHlsZVNoZWV0czsgLy8gQWxsIG9mIHRoZSBzdHlsZXNo
ZWV0cyB0aGF0IGFyZSBjdXJyZW50bHkgaW4gZWZmZWN0IGZvciBvdXIgbWVkaWEgdHlwZSBhbmQg
c3R5bGVzaGVldCBzZXQuCiAgICAgCiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxOb2RlKiwgMzI+
IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiYWRk
MDdiMjljMTM4N2VjZjJmNzliNDZiZmVhNDVlMzlmYmNjMGE5Li45MWMxN2I0NGU5MGI4NjljY2U3
N2E5ZjIxNTQzMmJlMGE3MjBhODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNTQ3LDYgKzI1NDcs
MTggQEAgdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICBBU1NF
UlQoIWRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogICAgIHNldERpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CisKKyAgICAvLyBGSVhNRTogRXZlbnQg
bGlzdGVuZXIgdHlwZXMgZm9yIHRoaXMgbm9kZSBzaG91bGQgYmUgc2V0IG9uIHRoZSBuZXcgb3du
ZXIgZG9jdW1lbnQgaGVyZS4KKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAg
aWYgKFZlY3RvcjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiogcmVnaXN0cnkgPSBtdXRh
dGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlZ2lzdHJ5LT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgTXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbiYgZW50cnkgPSByZWdpc3RyeS0+YXQoaSk7CisgICAgICAgICAgICBpZiAoZW50
cnkuaGFzQWxsT3B0aW9ucyhXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpTdWJ0cmVlKSkKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKGVu
dHJ5Lm9wdGlvbnMgJiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzKTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFNWRykKQEAgLTI3MjIs
NiArMjczNCwxMCBAQCBzdGF0aWMgdm9pZCBhZGRNYXRjaGluZ09ic2VydmVycyhIYXNoTWFwPFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvbk9ic2Vydgogdm9pZCBOb2RlOjpnZXRSZWdp
c3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyKiwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnM+JiBvYnNlcnZlcnMsIFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBlKQogewogICAgIGFkZE1hdGNoaW5nT2JzZXJ2ZXJz
KG9ic2VydmVycywgbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCksIHR5cGUpOworCisgICAgaWYg
KCFkb2N1bWVudCgpLT5oYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZSh0eXBlKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2Rl
OyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKQogICAgICAgICBhZGRNYXRjaGluZ09ic2VydmVy
cyhvYnNlcnZlcnMsIG5vZGUtPm11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLCB0eXBlIHwgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZSk7CiB9CkBAIC0yNzMxLDYgKzI3NDcsOSBAQCBO
b2RlOjpNdXRhdGlvblJlZ2lzdHJhdGlvblJlc3VsdCBOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2Jz
ZXJ2ZXIoUGFzc1JlZlB0cjxXZWJLaQogICAgIFZlY3RvcjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uPiogcmVnaXN0cnkgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cnkoKTsKICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uIHJlZ2lzdHJh
dGlvbihvYnNlcnZlciwgb3B0aW9ucywgcmVnaXN0cmF0aW9uTm9kZSk7CiAKKyAgICBpZiAob3B0
aW9ucyAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWUpCisgICAgICAgIGRvY3VtZW50
KCktPmFkZFN1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMob3B0aW9ucyB8IFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9uVHlwZXMpOworCiAgICAgc2l6ZV90IGluZGV4ID0gcmVn
aXN0cnktPmZpbmQocmVnaXN0cmF0aW9uKTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsK
ICAgICAgICAgcmVnaXN0cnktPmFwcGVuZChyZWdpc3RyYXRpb24pOwpAQCAtMjc1OSw2ICsyNzc4
LDkgQEAgdm9pZCBOb2RlOjp1bnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihQYXNzUmVmUHRyPFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmUKIAogdm9pZCBOb2RlOjpub3RpZnlNdXRhdGlv
bk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCkKIHsKKyAgICBpZiAoIWRvY3VtZW50KCktPmhhc1N1
YnRyZWVNdXRhdGlvbk9ic2VydmVyKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoTm9k
ZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkg
ewogICAgICAgICBWZWN0b3I8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5
ID0gbm9kZS0+bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAgICAgIGlmICghcmVnaXN0
cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCA3
NTMyMDRjMjQ3OTRkNGUzODJkYjAyNTUxZWE1NDgwMzU0ZGM0YTc1Li5kNzQxODMzYTkwNzBmMzIy
MDM2ZWZkYmJiY2QyZTk0YmYzM2Q2MjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRN
dXRhdGlvbk9ic2VydmVyLmgKQEAgLTU0LDcgKzU0LDkgQEAgcHVibGljOgogICAgIGVudW0gTXV0
YXRpb25UeXBlIHsKICAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAwLAogICAgICAgICBBdHRyaWJ1
dGVzID0gMSA8PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAyCisgICAgICAgIENo
YXJhY3RlckRhdGEgPSAxIDw8IDIsCisKKyAgICAgICAgQWxsTXV0YXRpb25UeXBlcyA9IENoaWxk
TGlzdCB8IEF0dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhCiAgICAgfTsKIAogICAgIGVudW0gT3B0
aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDliMGViYmViYjhjOTJlMzQzYTJmMDFkY2M1MjYwNTAzNDQ3OGU0
YmEuLjMwYzQzMmI5ZTJiOGRlY2VlMjZhYjdjNTNhN2QzYjBjNWU5MWZlNmMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMS0xMS0wMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4K
KworICAgICAgICBPbmx5IHdhbGsgdXAgdGhlIHRyZWUgaW4gc2VhcmNoIG9mIE11dGF0aW9uT2Jz
ZXJ2ZXJzIGlmIG9uZSBoYXMgYmVlbiBhZGRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZh
ZmFpLgorCisgICAgICAgIENyZWF0ZWQgYSBiYXNpYyB0ZXN0IHNob3dpbmcgdGhhdCBNdXRhdGlv
bk9ic2VydmVycworICAgICAgICBhcmUgcHJlc2VydmVkIHdoZW4gYSBOb2RlIHN3aXRjaGVzIGRv
Y3VtZW50cy4KKworICAgICAgICAqIGZhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0
bWw6IEFkZGVkLgorCiAyMDExLTExLTAzICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnJvdWdodCBiYWNrIFRJTUVPVVQgZm9yIHNo
b3ctaGlkZS10YWJsZS1yb3dzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0
YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlZDQzOTA0NzE4
ODVkYWQ1ZDg2NjE0YzY1MmMwZWQ0ZjE2YjcxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MjMgQEAKK1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVycyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3Mg
ZG9jdW1lbnRzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0aW5nIGJhc2lj
IGFzcGVjdHMgb2YgY3Jvc3MtZG9jdW1lbnQgb2JzZXJ2YXRpb24uCitQQVNTIG11dGF0aW9ucy5s
ZW5ndGggaXMgMQorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1Mg
bXV0YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUgaXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwK
KworVGVzdGluZyB0aGF0IHN1YnRyZWUgb2JzZXJ2YXRpb24gd29ya3MgYWZ0ZXIgbm9kZSBpcyBt
b3ZlZC4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBl
IGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIHN1YkRpdgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRh
dGlvbi9jcm9zcy1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9z
cy1kb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZWU3ZjBjZmNkODc0YmVkYmY4OGE5ZmFmYTdh
YmE5ZjE4MDRmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9u
L2Nyb3NzLWRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCit3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7Cit2YXIgbXV0YXRpb25zOwordmFyIGRpdiwgc3ViRGl2OworCitmdW5j
dGlvbiB0ZXN0QmFzaWMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3Rh
cnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIGJhc2ljIGFzcGVjdHMgb2YgY3Jvc3MtZG9j
dW1lbnQgb2JzZXJ2YXRpb24uJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAg
ICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIG9ic2VydmVy
ID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAg
ICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAg
ICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKKyAgICAgICAg
dmFyIG5ld0RvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcnLCAn
JywgbnVsbCk7CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICBkaXYu
aWQgPSAnZm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgn
LCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0
ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxs
Jyk7CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOwor
ICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RTdWJ0cmVlKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyB0aGF0IHN1YnRyZWUgb2JzZXJ2YXRpb24g
d29ya3MgYWZ0ZXIgbm9kZSBpcyBtb3ZlZC4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxs
OworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
c3ViRGl2ID0gZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsK
KyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiht
dXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7Cisg
ICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRlczog
dHJ1ZSwgc3VidHJlZTogdHJ1ZX0pOworICAgICAgICB2YXIgbmV3RG9jID0gZG9jdW1lbnQuaW1w
bGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxsKTsKKyAgICAgICAgbmV3RG9j
LmFwcGVuZENoaWxkKGRpdik7CisgICAgICAgIHN1YkRpdi5pZCA9ICdmb28nOworICAgICAgICBz
ZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgewor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnc3ViRGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2
ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0
KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKwordmFyIHRlc3RzID0gW3Rlc3RCYXNpYywg
dGVzdFN1YnRyZWVdOwordmFyIHRlc3RJbmRleCA9IDA7CisKK2Z1bmN0aW9uIHJ1bk5leHRUZXN0
KCkgeworICAgIGlmICh0ZXN0SW5kZXggPCB0ZXN0cy5sZW5ndGgpCisgICAgICAgIHRlc3RzW3Rl
c3RJbmRleCsrXSgpOworICAgIGVsc2UKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Rl
c2NyaXB0aW9uKCdUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgbW92ZSBjb3JyZWN0bHkgYWNy
b3NzIGRvY3VtZW50cycpOworCitpZiAoIXdpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyKQor
ICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEUoTVVUQVRJT05fT0JTRVJW
RVJTKScpOworZWxzZQorICAgIHJ1bk5leHRUZXN0KCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113592</attachid>
            <date>2011-11-03 17:39:17 -0700</date>
            <delta_ts>2011-11-03 18:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71499-20111103173916.patch</filename>
            <type>text/plain</type>
            <size>12474</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjBlYmJlYmI4YzkyZTM0M2EyZjAx
ZGNjNTI2MDUwMzQ0NzhlNGJhLi4zMGM0MzJiOWUyYjhkZWNlZTI2YWI3YzUzYTdkM2IwYzVlOTFm
ZTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMDMgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVlIGluIHNlYXJj
aCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBDcmVhdGVkIGEgYmFzaWMgdGVzdCBzaG93
aW5nIHRoYXQgTXV0YXRpb25PYnNlcnZlcnMKKyAgICAgICAgYXJlIHByZXNlcnZlZCB3aGVuIGEg
Tm9kZSBzd2l0Y2hlcyBkb2N1bWVudHMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3Nz
LWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9j
cm9zcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMyAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJyb3VnaHQgYmFj
ayBUSU1FT1VUIGZvciBzaG93LWhpZGUtdGFibGUtcm93cy5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxZWQ0MzkwNDcxODg1ZGFkNWQ4NjYxNGM2NTJjMGVkNGYxNmI3MTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgbW92ZSBj
b3JyZWN0bHkgYWNyb3NzIGRvY3VtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLgor
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWVzcGFjZSBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBzdWJ0cmVlIG9ic2VydmF0aW9uIHdvcmtz
IGFmdGVyIG5vZGUgaXMgbW92ZWQuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdl
dCBpcyBzdWJEaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGVlN2YwY2ZjZDg3
NGJlZGJmODhhOWZhZmE3YWJhOWYxODA0ZmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIG11dGF0aW9uczsKK3ZhciBkaXYs
IHN1YkRpdjsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAgIHZhciBvYnNlcnZlcjsKKwor
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBhc3Bl
Y3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLicpOworCisgICAgICAgIG11dGF0aW9u
cyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11
dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0
cnVlfSk7CisgICAgICAgIHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudCgnJywgJycsIG51bGwpOworICAgICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2
KTsKKyAgICAgICAgZGl2LmlkID0gJ2Zvbyc7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRh
cmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFy
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0U3VidHJlZSgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisK
KyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBzdWJ0
cmVlIG9ic2VydmF0aW9uIHdvcmtzIGFmdGVyIG5vZGUgaXMgbW92ZWQuJyk7CisKKyAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25z
ID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgdmFyIG5ld0Rv
YyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcnLCAnJywgbnVsbCk7
CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICBzdWJEaXYuaWQgPSAn
Zm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7
CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAg
ICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK3ZhciB0ZXN0
cyA9IFt0ZXN0QmFzaWMsIHRlc3RTdWJ0cmVlXTsKK3ZhciB0ZXN0SW5kZXggPSAwOworCitmdW5j
dGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQor
ICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG1v
dmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMnKTsKKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0
YXRpb25PYnNlcnZlcikKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUyknKTsKK2Vsc2UKKyAgICBydW5OZXh0VGVzdCgpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjE2ZTU4NWY1ZGU1MGE2ZGE4
NGU4NjgyNzdhODMxZDA4Mzc3Mjk5Li4xNWE5MzEyYmZmNzVjZTMyZTU2MmU2NTQyYWJmYWY2N2Fl
YzVhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTEtMDMgIEFkYW0gS2xl
aW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVl
IGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBbmFsb2dvdXMgdG8gbV9s
aXN0ZW5lclR5cGVzLCBhZGRlZCBhbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyBmaWVsZAorICAg
ICAgICB0byBEb2N1bWVudCB0aGF0IGtlZXBzIHRyYWNrIG9mIHdoaWNoIG9ic2VydmVyIHR5cGVz
IGhhdmUgYmVlbiBhZGRlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgZG9pbmcg
YW55IGV4dHJhIHdvcmsgaWYgTXV0YXRpb25PYnNlcnZlcnMgYXJlCisgICAgICAgIG5vdCBhdHRh
Y2hlZCB0byBhIGRvY3VtZW50LgorCisgICAgICAgIFRoaXMgY291bGQgYmUgaW1wcm92ZWQgdXBv
biB0byBrZWVwIGEgY291bnQgb2YgZWFjaCB0eXBlLCBhcyByZW1vdmluZworICAgICAgICBhbiBv
YnNlcnZlciBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCBvbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBl
cy4KKyAgICAgICAgQnV0IHRoYXQgd291bGQgcmVxdWlyZSBhIG1vcmUgY29tcGxleCBpbXBsZW1l
bnRhdGlvbjogb25lIGNvdW50ZXIgcGVyCisgICAgICAgIG11dGF0aW9uIHR5cGUuIEFuZCBpdCB3
b3VsZCBiZSBlYXNpZXIgdG8gZ2V0IHdyb25nOiBpZiB0aGUgY291bnRlcgorICAgICAgICBnZXRz
IG91dCBvZiBzeW5jIHdpdGggdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUgRE9NLCB3ZSBjb3VsZCBz
dGFydAorICAgICAgICBkcm9wcGluZyBtdXRhdGlvbiBub3RpZmljYXRpb25zLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzU3VidHJlZU11dGF0
aW9uT2JzZXJ2ZXJPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1N1YnRy
ZWVNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRTdWJ0
cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KTogVXBkYXRlIG11
dGF0aW9uT2JzZXJ2ZXJUeXBlcyB3aGVuIGEgTm9kZSBpcyBtb3ZlZCB0byBhIG5ldyBkb2N1bWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVy
c09mVHlwZSk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biB0aGF0IG5vIG9ic2VydmVycyBvZiB8
dHlwZXwgYXJlIHJlZ2lzdGVyZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11
dGF0aW9uT2JzZXJ2ZXIpOiBVcGRhdGUgbXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYW4gb2Jz
ZXJ2YXRpb24gb2NjdXJzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TXV0YXRpb25P
YnNlcnZlcnNOb2RlV2lsbERldGFjaCk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biBubyBzdWJ0
cmVlIG9ic2VydmVycyBvZiBhbnkgdHlwZSBhcmUgcmVnaXN0ZXJlZC4KKyAgICAgICAgKiBkb20v
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5oOiBBZGQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QWxs
TXV0YXRpb25UeXBlcyB0byBlbnVtCisKIDIwMTEtMTEtMDMgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IE9iamVjdCBzdG9yZXMgbm90IHBl
cnNpc3RpbmcgYmV0d2VlbiBzZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDBj
NzI5ZjYyNDUyN2VjNjYzMTZjMDMwZmFmN2FiMWU3Y2M2NGFjOS4uZWFjNWVmYmFiNjNjZTY5ZGI2
MWQ5ZDVkM2Q0ZWQ1YTM3ZTcxN2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNTks
NiArMzU5LDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9k
ZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICAsIG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBl
cygwKQorI2VuZGlmCiAgICAgLCBtX3N0eWxlU2hlZXRzKFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAgICAgLCBtX3N0eWxlUmVjYWxj
VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmlyZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDRhNGE5MzM5Yzc3ZTRmODQyNzRkOWRiMTFkOWM0NmM1NWU4OTU5NDkuLjQ4
ZGZlYzkwOTZiNjdhNzlkMWVkYzNiZGRhNDNlMTU1YzZiNzgyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUcmVl
U2NvcGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTc3Niw2ICs3Nzcs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0
ZW5lclR5cGUpIHsgbV9saXN0ZW5lclR5cGVzID0gbV9saXN0ZW5lclR5cGVzIHwgbGlzdGVuZXJU
eXBlOyB9CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGJv
b2wgaGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUoV2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdWJ0
cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzICYgdHlwZTsKKyAgICB9CisgICAgYm9vbCBoYXNTdWJ0
cmVlTXV0YXRpb25PYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3VidHJlZU11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlczsgfQorICAgIHZvaWQgYWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVy
VHlwZXMgfD0gdHlwZXM7IH0KKyNlbmRpZgorCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZ2V0
T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpOwogCiAgICAg
aW50IG5vZGVBYnNJbmRleChOb2RlKik7CkBAIC0xMjM4LDYgKzEyNDgsMTAgQEAgcHJpdmF0ZToK
IAogICAgIHVuc2lnbmVkIHNob3J0IG1fbGlzdGVuZXJUeXBlczsKIAorI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbV9zdWJ0cmVlTXV0
YXRpb25PYnNlcnZlclR5cGVzOworI2VuZGlmCisKICAgICBSZWZQdHI8U3R5bGVTaGVldExpc3Q+
IG1fc3R5bGVTaGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMgdGhhdCBhcmUgY3VycmVu
dGx5IGluIGVmZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxlc2hlZXQgc2V0LgogICAg
IAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0Q2FuZGlkYXRl
TGlzdEhhc2hTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYmFkZDA3YjI5YzEzODdlY2YyZjc5YjQ2
YmZlYTQ1ZTM5ZmJjYzBhOS4uOTFjMTdiNDRlOTBiODY5Y2NlNzdhOWYyMTU0MzJiZTBhNzIwYTg2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjU0Nyw2ICsyNTQ3LDE4IEBAIHZvaWQgTm9kZTo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50V2FzQ2FsbGVkKTsKICAgICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2Fz
Q2FsbGVkKHRydWUpOworCisgICAgLy8gRklYTUU6IEV2ZW50IGxpc3RlbmVyIHR5cGVzIGZvciB0
aGlzIG5vZGUgc2hvdWxkIGJlIHNldCBvbiB0aGUgbmV3IG93bmVyIGRvY3VtZW50IGhlcmUuCisK
KyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGlmIChWZWN0b3I8TXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mIGVudHJ5ID0g
cmVnaXN0cnktPmF0KGkpOworICAgICAgICAgICAgaWYgKGVudHJ5Lmhhc0FsbE9wdGlvbnMoV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZSkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQo
KS0+YWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhlbnRyeS5vcHRpb25zICYgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlcyk7CisgICAgICAgIH0KKyAgICB9Cisj
ZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yNzIyLDYgKzI3MzQsMTAgQEAgc3RhdGlj
IHZvaWQgYWRkTWF0Y2hpbmdPYnNlcnZlcnMoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KiwgTXV0YXRpb25PYnNlcnYKIHZvaWQgTm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zPiYgb2JzZXJ2ZXJzLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5
cGUgdHlwZSkKIHsKICAgICBhZGRNYXRjaGluZ09ic2VydmVycyhvYnNlcnZlcnMsIG11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyeSgpLCB0eXBlKTsKKworICAgIGlmICghZG9jdW1lbnQoKS0+aGFzU3Vi
dHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUodHlwZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVu
dE5vZGUoKSkKICAgICAgICAgYWRkTWF0Y2hpbmdPYnNlcnZlcnMob2JzZXJ2ZXJzLCBub2RlLT5t
dXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSwgdHlwZSB8IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6
OlN1YnRyZWUpOwogfQpAQCAtMjczMSw2ICsyNzQ3LDkgQEAgTm9kZTo6TXV0YXRpb25SZWdpc3Ry
YXRpb25SZXN1bHQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKFBhc3NSZWZQdHI8V2Vi
S2kKICAgICBWZWN0b3I8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAg
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiByZWdpc3RyYXRpb24ob2JzZXJ2ZXIsIG9wdGlv
bnMsIHJlZ2lzdHJhdGlvbk5vZGUpOwogCisgICAgaWYgKG9wdGlvbnMgJiBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyOjpTdWJ0cmVlKQorICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRp
b25PYnNlcnZlclR5cGVzKG9wdGlvbnMgfCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRh
dGlvblR5cGVzKTsKKwogICAgIHNpemVfdCBpbmRleCA9IHJlZ2lzdHJ5LT5maW5kKHJlZ2lzdHJh
dGlvbik7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlZ2lzdHJ5LT5h
cHBlbmQocmVnaXN0cmF0aW9uKTsKQEAgLTI3NTksNiArMjc3OCw5IEBAIHZvaWQgTm9kZTo6dW5y
ZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoUGFzc1JlZlB0cjxXZWJLaXRNdXRhdGlvbk9ic2VydmVy
PiBvYnNlcnZlCiAKIHZvaWQgTm9kZTo6bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERl
dGFjaCgpCiB7CisgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZl
cigpKQorICAgICAgICByZXR1cm47CisKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgVmVjdG9yPE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KiByZWdpc3RyeSA9IG5vZGUtPm11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpOwogICAgICAgICBpZiAoIXJlZ2lzdHJ5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggNzUzMjA0YzI0Nzk0ZDRlMzgyZGIw
MjU1MWVhNTQ4MDM1NGRjNGE3NS4uZDc0MTgzM2E5MDcwZjMyMjAzNmVmZGJiYmNkMmU5NGJmMzNk
NjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oCkBA
IC01NCw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICBlbnVtIE11dGF0aW9uVHlwZSB7CiAgICAgICAg
IENoaWxkTGlzdCA9IDEgPDwgMCwKICAgICAgICAgQXR0cmlidXRlcyA9IDEgPDwgMSwKLSAgICAg
ICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMgorICAgICAgICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAy
LAorCisgICAgICAgIEFsbE11dGF0aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwg
Q2hhcmFjdGVyRGF0YQogICAgIH07CiAKICAgICBlbnVtIE9wdGlvbkZsYWdzIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113605</attachid>
            <date>2011-11-03 18:36:11 -0700</date>
            <delta_ts>2011-11-07 13:41:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71499-20111103183610.patch</filename>
            <type>text/plain</type>
            <size>12474</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMjEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YjBlYmJlYmI4YzkyZTM0M2EyZjAx
ZGNjNTI2MDUwMzQ0NzhlNGJhLi4zMGM0MzJiOWUyYjhkZWNlZTI2YWI3YzUzYTdkM2IwYzVlOTFm
ZTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMDMgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVlIGluIHNlYXJj
aCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBDcmVhdGVkIGEgYmFzaWMgdGVzdCBzaG93
aW5nIHRoYXQgTXV0YXRpb25PYnNlcnZlcnMKKyAgICAgICAgYXJlIHByZXNlcnZlZCB3aGVuIGEg
Tm9kZSBzd2l0Y2hlcyBkb2N1bWVudHMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3Nz
LWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9j
cm9zcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wMyAgQW5kcmV5IEtvc3lha292
ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJyb3VnaHQgYmFj
ayBUSU1FT1VUIGZvciBzaG93LWhpZGUtdGFibGUtcm93cy5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkxZWQ0MzkwNDcxODg1ZGFkNWQ4NjYxNGM2NTJjMGVkNGYxNmI3MTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIzIEBACitUZXN0IHRoYXQgTXV0YXRpb25PYnNlcnZlcnMgbW92ZSBj
b3JyZWN0bHkgYWNyb3NzIGRvY3VtZW50cworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVGVzdGluZyBiYXNpYyBhc3BlY3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLgor
UEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0
dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9u
c1swXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWVzcGFjZSBpcyBudWxsCisKK1Rlc3RpbmcgdGhhdCBzdWJ0cmVlIG9ic2VydmF0aW9uIHdvcmtz
IGFmdGVyIG5vZGUgaXMgbW92ZWQuCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFTUyBt
dXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdl
dCBpcyBzdWJEaXYKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFT
UyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlIGlzIG51bGwKKworUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGVlN2YwY2ZjZDg3
NGJlZGJmODhhOWZhZmE3YWJhOWYxODA0ZmExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsMTAwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwordmFyIG11dGF0aW9uczsKK3ZhciBkaXYs
IHN1YkRpdjsKKworZnVuY3Rpb24gdGVzdEJhc2ljKCkgeworICAgIHZhciBvYnNlcnZlcjsKKwor
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdGluZyBiYXNpYyBhc3Bl
Y3RzIG9mIGNyb3NzLWRvY3VtZW50IG9ic2VydmF0aW9uLicpOworCisgICAgICAgIG11dGF0aW9u
cyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11
dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0
cnVlfSk7CisgICAgICAgIHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudCgnJywgJycsIG51bGwpOworICAgICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2
KTsKKyAgICAgICAgZGl2LmlkID0gJ2Zvbyc7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRh
cmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVO
YW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAg
ICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFy
dCgpOworfQorCitmdW5jdGlvbiB0ZXN0U3VidHJlZSgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisK
KyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgdGhhdCBzdWJ0
cmVlIG9ic2VydmF0aW9uIHdvcmtzIGFmdGVyIG5vZGUgaXMgbW92ZWQuJyk7CisKKyAgICAgICAg
bXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIHN1YkRpdiA9IGRpdi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25z
ID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRp
diwge2F0dHJpYnV0ZXM6IHRydWUsIHN1YnRyZWU6IHRydWV9KTsKKyAgICAgICAgdmFyIG5ld0Rv
YyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcnLCAnJywgbnVsbCk7
CisgICAgICAgIG5ld0RvYy5hcHBlbmRDaGlsZChkaXYpOworICAgICAgICBzdWJEaXYuaWQgPSAn
Zm9vJzsKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ3N1YkRpdicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZScsICdudWxsJyk7
CisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAg
ICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK3ZhciB0ZXN0
cyA9IFt0ZXN0QmFzaWMsIHRlc3RTdWJ0cmVlXTsKK3ZhciB0ZXN0SW5kZXggPSAwOworCitmdW5j
dGlvbiBydW5OZXh0VGVzdCgpIHsKKyAgICBpZiAodGVzdEluZGV4IDwgdGVzdHMubGVuZ3RoKQor
ICAgICAgICB0ZXN0c1t0ZXN0SW5kZXgrK10oKTsKKyAgICBlbHNlCisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitkZXNjcmlwdGlvbignVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG1v
dmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMnKTsKKworaWYgKCF3aW5kb3cuV2ViS2l0TXV0
YXRpb25PYnNlcnZlcikKKyAgICB0ZXN0RmFpbGVkKCdUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUyknKTsKK2Vsc2UKKyAgICBydW5OZXh0VGVzdCgpOworCis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjE2ZTU4NWY1ZGU1MGE2ZGE4
NGU4NjgyNzdhODMxZDA4Mzc3Mjk5Li4xNWE5MzEyYmZmNzVjZTMyZTU2MmU2NTQyYWJmYWY2N2Fl
YzVhMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMTEtMDMgIEFkYW0gS2xl
aW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVl
IGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBbmFsb2dvdXMgdG8gbV9s
aXN0ZW5lclR5cGVzLCBhZGRlZCBhbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcyBmaWVsZAorICAg
ICAgICB0byBEb2N1bWVudCB0aGF0IGtlZXBzIHRyYWNrIG9mIHdoaWNoIG9ic2VydmVyIHR5cGVz
IGhhdmUgYmVlbiBhZGRlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQgZG9pbmcg
YW55IGV4dHJhIHdvcmsgaWYgTXV0YXRpb25PYnNlcnZlcnMgYXJlCisgICAgICAgIG5vdCBhdHRh
Y2hlZCB0byBhIGRvY3VtZW50LgorCisgICAgICAgIFRoaXMgY291bGQgYmUgaW1wcm92ZWQgdXBv
biB0byBrZWVwIGEgY291bnQgb2YgZWFjaCB0eXBlLCBhcyByZW1vdmluZworICAgICAgICBhbiBv
YnNlcnZlciBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCBvbiBtX211dGF0aW9uT2JzZXJ2ZXJUeXBl
cy4KKyAgICAgICAgQnV0IHRoYXQgd291bGQgcmVxdWlyZSBhIG1vcmUgY29tcGxleCBpbXBsZW1l
bnRhdGlvbjogb25lIGNvdW50ZXIgcGVyCisgICAgICAgIG11dGF0aW9uIHR5cGUuIEFuZCBpdCB3
b3VsZCBiZSBlYXNpZXIgdG8gZ2V0IHdyb25nOiBpZiB0aGUgY291bnRlcgorICAgICAgICBnZXRz
IG91dCBvZiBzeW5jIHdpdGggdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUgRE9NLCB3ZSBjb3VsZCBz
dGFydAorICAgICAgICBkcm9wcGluZyBtdXRhdGlvbiBub3RpZmljYXRpb25zLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzU3VidHJlZU11dGF0
aW9uT2JzZXJ2ZXJPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1N1YnRy
ZWVNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRTdWJ0
cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KTogVXBkYXRlIG11
dGF0aW9uT2JzZXJ2ZXJUeXBlcyB3aGVuIGEgTm9kZSBpcyBtb3ZlZCB0byBhIG5ldyBkb2N1bWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVy
c09mVHlwZSk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biB0aGF0IG5vIG9ic2VydmVycyBvZiB8
dHlwZXwgYXJlIHJlZ2lzdGVyZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11
dGF0aW9uT2JzZXJ2ZXIpOiBVcGRhdGUgbXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYW4gb2Jz
ZXJ2YXRpb24gb2NjdXJzLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TXV0YXRpb25P
YnNlcnZlcnNOb2RlV2lsbERldGFjaCk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biBubyBzdWJ0
cmVlIG9ic2VydmVycyBvZiBhbnkgdHlwZSBhcmUgcmVnaXN0ZXJlZC4KKyAgICAgICAgKiBkb20v
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5oOiBBZGQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QWxs
TXV0YXRpb25UeXBlcyB0byBlbnVtCisKIDIwMTEtMTEtMDMgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IE9iamVjdCBzdG9yZXMgbm90IHBl
cnNpc3RpbmcgYmV0d2VlbiBzZXNzaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDBj
NzI5ZjYyNDUyN2VjNjYzMTZjMDMwZmFmN2FiMWU3Y2M2NGFjOS4uZWFjNWVmYmFiNjNjZTY5ZGI2
MWQ5ZDVkM2Q0ZWQ1YTM3ZTcxN2MxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNTks
NiArMzU5LDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9k
ZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQog
ICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNpb24pCisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICAsIG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBl
cygwKQorI2VuZGlmCiAgICAgLCBtX3N0eWxlU2hlZXRzKFN0eWxlU2hlZXRMaXN0OjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAgICAgLCBtX3N0eWxlUmVjYWxj
VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmlyZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDRhNGE5MzM5Yzc3ZTRmODQyNzRkOWRiMTFkOWM0NmM1NWU4OTU5NDkuLjQ4
ZGZlYzkwOTZiNjdhNzlkMWVkYzNiZGRhNDNlMTU1YzZiNzgyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJUcmVl
U2NvcGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTc3Niw2ICs3Nzcs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0
ZW5lclR5cGUpIHsgbV9saXN0ZW5lclR5cGVzID0gbV9saXN0ZW5lclR5cGVzIHwgbGlzdGVuZXJU
eXBlOyB9CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGJv
b2wgaGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUoV2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdWJ0
cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzICYgdHlwZTsKKyAgICB9CisgICAgYm9vbCBoYXNTdWJ0
cmVlTXV0YXRpb25PYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3VidHJlZU11dGF0aW9uT2Jz
ZXJ2ZXJUeXBlczsgfQorICAgIHZvaWQgYWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVy
VHlwZXMgfD0gdHlwZXM7IH0KKyNlbmRpZgorCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogZ2V0
T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbHQpOwogCiAgICAg
aW50IG5vZGVBYnNJbmRleChOb2RlKik7CkBAIC0xMjM4LDYgKzEyNDgsMTAgQEAgcHJpdmF0ZToK
IAogICAgIHVuc2lnbmVkIHNob3J0IG1fbGlzdGVuZXJUeXBlczsKIAorI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbV9zdWJ0cmVlTXV0
YXRpb25PYnNlcnZlclR5cGVzOworI2VuZGlmCisKICAgICBSZWZQdHI8U3R5bGVTaGVldExpc3Q+
IG1fc3R5bGVTaGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMgdGhhdCBhcmUgY3VycmVu
dGx5IGluIGVmZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxlc2hlZXQgc2V0LgogICAg
IAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0Q2FuZGlkYXRl
TGlzdEhhc2hTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYmFkZDA3YjI5YzEzODdlY2YyZjc5YjQ2
YmZlYTQ1ZTM5ZmJjYzBhOS4uMzNhZjRkZmIxY2M4OTM4MDljMDRkYmY3YmViMjVmNTEzMjI5NmJj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjU0Nyw2ICsyNTQ3LDE4IEBAIHZvaWQgTm9kZTo6ZGlk
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CiAgICAgQVNTRVJUKCFkaWRNb3ZlVG9OZXdPd25l
ckRvY3VtZW50V2FzQ2FsbGVkKTsKICAgICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2Fz
Q2FsbGVkKHRydWUpOworCisgICAgLy8gRklYTUU6IEV2ZW50IGxpc3RlbmVyIHR5cGVzIGZvciB0
aGlzIG5vZGUgc2hvdWxkIGJlIHNldCBvbiB0aGUgbmV3IG93bmVyIGRvY3VtZW50IGhlcmUuCisK
KyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGlmIChWZWN0b3I8TXV0YXRpb25P
YnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24mIGVudHJ5ID0g
cmVnaXN0cnktPmF0KGkpOworICAgICAgICAgICAgaWYgKGVudHJ5Lmhhc0FsbE9wdGlvbnMoV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZSkpCisgICAgICAgICAgICAgICAgZG9jdW1lbnQo
KS0+YWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhlbnRyeS5vcHRpb25zICYgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlcyk7CisgICAgICAgIH0KKyAgICB9Cisj
ZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yNzIyLDYgKzI3MzQsMTAgQEAgc3RhdGlj
IHZvaWQgYWRkTWF0Y2hpbmdPYnNlcnZlcnMoSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KiwgTXV0YXRpb25PYnNlcnYKIHZvaWQgTm9kZTo6Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2
ZXJzT2ZUeXBlKEhhc2hNYXA8V2ViS2l0TXV0YXRpb25PYnNlcnZlciosIE11dGF0aW9uT2JzZXJ2
ZXJPcHRpb25zPiYgb2JzZXJ2ZXJzLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5
cGUgdHlwZSkKIHsKICAgICBhZGRNYXRjaGluZ09ic2VydmVycyhvYnNlcnZlcnMsIG11dGF0aW9u
T2JzZXJ2ZXJSZWdpc3RyeSgpLCB0eXBlKTsKKworICAgIGlmICghZG9jdW1lbnQoKS0+aGFzU3Vi
dHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUodHlwZSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVu
dE5vZGUoKSkKICAgICAgICAgYWRkTWF0Y2hpbmdPYnNlcnZlcnMob2JzZXJ2ZXJzLCBub2RlLT5t
dXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSwgdHlwZSB8IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6
OlN1YnRyZWUpOwogfQpAQCAtMjczMSw2ICsyNzQ3LDkgQEAgTm9kZTo6TXV0YXRpb25SZWdpc3Ry
YXRpb25SZXN1bHQgTm9kZTo6cmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKFBhc3NSZWZQdHI8V2Vi
S2kKICAgICBWZWN0b3I8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4qIHJlZ2lzdHJ5ID0g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAg
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiByZWdpc3RyYXRpb24ob2JzZXJ2ZXIsIG9wdGlv
bnMsIHJlZ2lzdHJhdGlvbk5vZGUpOwogCisgICAgaWYgKG9wdGlvbnMgJiBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyOjpTdWJ0cmVlKQorICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0cmVlTXV0YXRp
b25PYnNlcnZlclR5cGVzKG9wdGlvbnMgJiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRh
dGlvblR5cGVzKTsKKwogICAgIHNpemVfdCBpbmRleCA9IHJlZ2lzdHJ5LT5maW5kKHJlZ2lzdHJh
dGlvbik7CiAgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAgICAgIHJlZ2lzdHJ5LT5h
cHBlbmQocmVnaXN0cmF0aW9uKTsKQEAgLTI3NTksNiArMjc3OCw5IEBAIHZvaWQgTm9kZTo6dW5y
ZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIoUGFzc1JlZlB0cjxXZWJLaXRNdXRhdGlvbk9ic2VydmVy
PiBvYnNlcnZlCiAKIHZvaWQgTm9kZTo6bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERl
dGFjaCgpCiB7CisgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZl
cigpKQorICAgICAgICByZXR1cm47CisKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBwYXJlbnROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgVmVjdG9yPE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+KiByZWdpc3RyeSA9IG5vZGUtPm11dGF0aW9uT2Jz
ZXJ2ZXJSZWdpc3RyeSgpOwogICAgICAgICBpZiAoIXJlZ2lzdHJ5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggNzUzMjA0YzI0Nzk0ZDRlMzgyZGIw
MjU1MWVhNTQ4MDM1NGRjNGE3NS4uZDc0MTgzM2E5MDcwZjMyMjAzNmVmZGJiYmNkMmU5NGJmMzNk
NjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oCkBA
IC01NCw3ICs1NCw5IEBAIHB1YmxpYzoKICAgICBlbnVtIE11dGF0aW9uVHlwZSB7CiAgICAgICAg
IENoaWxkTGlzdCA9IDEgPDwgMCwKICAgICAgICAgQXR0cmlidXRlcyA9IDEgPDwgMSwKLSAgICAg
ICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMgorICAgICAgICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAy
LAorCisgICAgICAgIEFsbE11dGF0aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRyaWJ1dGVzIHwg
Q2hhcmFjdGVyRGF0YQogICAgIH07CiAKICAgICBlbnVtIE9wdGlvbkZsYWdzIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113919</attachid>
            <date>2011-11-07 13:41:11 -0800</date>
            <delta_ts>2011-11-07 13:46:17 -0800</delta_ts>
            <desc>Merged with refactor</desc>
            <filename>bug-71499-20111107134110.patch</filename>
            <type>text/plain</type>
            <size>14600</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzNDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkYjA5NDFmM2MzMjQ3NzA4Zjg0MGMz
OTA4OWU5NjNkMmRiOWM1NTVhLi4wMjg2N2QzYzY0ZDBlYzczNDc1M2Q2NzMxOGU5YzAxNmM4NDZi
NTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMDcgIEFkYW0gS2xlaW4gIDxhZGFt
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVlIGluIHNlYXJj
aCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBDcmVhdGVkIGEgYmFzaWMgdGVzdCBzaG93
aW5nIHRoYXQgTXV0YXRpb25PYnNlcnZlcnMKKyAgICAgICAgYXJlIHByZXNlcnZlZCB3aGVuIGEg
Tm9kZSBzd2l0Y2hlcyBkb2N1bWVudHMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3Nz
LWRvY3VtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9j
cm9zcy1kb2N1bWVudC5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0wNCAgU3RlcGhlbiBDaGVubmV5
ICA8c2NoZW5uZXlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIFNjcm9sbEFuaW1h
dG9yLmNwcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1
bWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3Vt
ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWVkNDM5MDQ3MTg4NWRhZDVkODY2MTRjNjUy
YzBlZDRmMTZiNzE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorVGVzdCB0aGF0
IE11dGF0aW9uT2JzZXJ2ZXJzIG1vdmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjcm9z
cy1kb2N1bWVudCBvYnNlcnZhdGlvbi4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFy
Z2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNT
IG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQg
c3VidHJlZSBvYnNlcnZhdGlvbiB3b3JrcyBhZnRlciBub2RlIGlzIG1vdmVkLgorUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMi
CitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5h
dHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFj
ZSBpcyBudWxsCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3Vt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjRlZTdmMGNmY2Q4NzRiZWRiZjg4YTlmYWZhN2FiYTlmMTgwNGZhMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQu
aHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
K3ZhciBtdXRhdGlvbnM7Cit2YXIgZGl2LCBzdWJEaXY7CisKK2Z1bmN0aW9uIHRlc3RCYXNpYygp
IHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAg
ZGVidWcoJ1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlv
bi4nKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5t
dXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9i
c2VydmUoZGl2LCB7YXR0cmlidXRlczogdHJ1ZX0pOworICAgICAgICB2YXIgbmV3RG9jID0gZG9j
dW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxsKTsKKyAgICAg
ICAgbmV3RG9jLmFwcGVuZENoaWxkKGRpdik7CisgICAgICAgIGRpdi5pZCA9ICdmb28nOworICAg
ICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNo
KCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgb2Jz
ZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRU
ZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFN1YnRyZWUo
KSB7CisgICAgdmFyIG9ic2VydmVyOworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAg
IGRlYnVnKCdUZXN0aW5nIHRoYXQgc3VidHJlZSBvYnNlcnZhdGlvbiB3b3JrcyBhZnRlciBub2Rl
IGlzIG1vdmVkLicpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBzdWJEaXYgPSBkaXYuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICBvYnNlcnZl
ciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAg
ICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0
cnVlfSk7CisgICAgICAgIHZhciBuZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVh
dGVEb2N1bWVudCgnJywgJycsIG51bGwpOworICAgICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2
KTsKKyAgICAgICAgc3ViRGl2LmlkID0gJ2Zvbyc7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNo
LCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
LnRhcmdldCcsICdzdWJEaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lJywgJyJpZCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lc3BhY2UnLCAnbnVsbCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7
CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAg
ICBzdGFydCgpOworfQorCit2YXIgdGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0U3VidHJlZV07Cit2
YXIgdGVzdEluZGV4ID0gMDsKKworZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgICAgaWYgKHRl
c3RJbmRleCA8IHRlc3RzLmxlbmd0aCkKKyAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7Cisg
ICAgZWxzZQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3Qg
dGhhdCBNdXRhdGlvbk9ic2VydmVycyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzJyk7
CisKK2lmICghd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgn
VGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisg
ICAgcnVuTmV4dFRlc3QoKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMDQwNDQ2YWFlYmI1MmNjNjA5NWMxYmZjMDg3MmI5NjE3NDA5YTAxMi4uNGY3NjU0MTg2
MWVmNWYxZWNkYmFjYjMwNWY2OTFkMTM5OTQxYzdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDExLTExLTA3ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIE9ubHkgd2FsayB1cCB0aGUgdHJlZSBpbiBzZWFyY2ggb2YgTXV0YXRpb25PYnNlcnZlcnMg
aWYgb25lIGhhcyBiZWVuIGFkZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTQ5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisK
KyAgICAgICAgQW5hbG9nb3VzIHRvIG1fbGlzdGVuZXJUeXBlcywgYWRkZWQgYW4gbV9zdWJ0cmVl
TXV0YXRpb25PYnNlcnZlclR5cGVzIGZpZWxkCisgICAgICAgIHRvIERvY3VtZW50IHRoYXQga2Vl
cHMgdHJhY2sgb2Ygd2hpY2ggb2JzZXJ2ZXIgdHlwZXMgaGF2ZSBiZWVuIGFkZGVkLgorICAgICAg
ICBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCBkb2luZyBhbnkgZXh0cmEgd29yayBpZiBNdXRhdGlv
bk9ic2VydmVycyBhcmUKKyAgICAgICAgbm90IGF0dGFjaGVkIHRvIGEgZG9jdW1lbnQuCisKKyAg
ICAgICAgVGhpcyBjb3VsZCBiZSBpbXByb3ZlZCB1cG9uIHRvIGtlZXAgYSBjb3VudCBvZiBlYWNo
IHR5cGUsIGFzIHJlbW92aW5nCisgICAgICAgIGFuIG9ic2VydmVyIGN1cnJlbnRseSBoYXMgbm8g
ZWZmZWN0IG9uIG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcy4KKyAgICAgICAgQnV0IHRo
YXQgd291bGQgcmVxdWlyZSBhIG1vcmUgY29tcGxleCBpbXBsZW1lbnRhdGlvbjogb25lIGNvdW50
ZXIgcGVyCisgICAgICAgIG11dGF0aW9uIHR5cGUuIEFuZCBpdCB3b3VsZCBiZSBlYXNpZXIgdG8g
Z2V0IHdyb25nOiBpZiB0aGUgY291bnRlcgorICAgICAgICBnZXRzIG91dCBvZiBzeW5jIHdpdGgg
dGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUgRE9NLCB3ZSBjb3VsZCBzdGFydAorICAgICAgICBkcm9w
cGluZyBtdXRhdGlvbiBub3RpZmljYXRpb25zLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbXV0YXRp
b24vY3Jvc3MtZG9jdW1lbnQuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc1N1YnRyZWVNdXRhdGlvbk9ic2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZl
clR5cGVzKToKKyAgICAgICAgKiBkb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6aXNTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246OmRlbGl2
ZXJ5T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uOjptdXRhdGlvblR5cGVzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KTogVXBkYXRlIG11dGF0aW9u
T2JzZXJ2ZXJUeXBlcyB3aGVuIGEgTm9kZSBpcyBtb3ZlZCB0byBhIG5ldyBkb2N1bWVudC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVyc09mVHlw
ZSk6IEV4aXQgZWFybHkgaWYgaXQncyBrbm93biB0aGF0IG5vIG9ic2VydmVycyBvZiB8dHlwZXwg
YXJlIHJlZ2lzdGVyZWQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpub3RpZnlNdXRhdGlvbk9i
c2VydmVyc05vZGVXaWxsRGV0YWNoKTogRXhpdCBlYXJseSBpZiBpdCdzIGtub3duIG5vIHN1YnRy
ZWUgb2JzZXJ2ZXJzIG9mIGFueSB0eXBlIGFyZSByZWdpc3RlcmVkLgorICAgICAgICAqIGRvbS9X
ZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE11dGF0
aW9uT2JzZXJ2ZXI6Om9ic2VydmUpOiBVcGRhdGUgbXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4g
YW4gb2JzZXJ2YXRpb24gb2NjdXJzLgorICAgICAgICAqIGRvbS9XZWJLaXRNdXRhdGlvbk9ic2Vy
dmVyLmg6IEFkZCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBbGxNdXRhdGlvblR5cGVzIHRvIGVu
dW0KKwogMjAxMS0xMS0wNCAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIENyYXNoIGluIFNjcm9sbEFuaW1hdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggY2E5ODlmMTkwNWM2MmU0ZWM2YzMyYmRiMjE5MmY5ZGI0YjhhN2Q4Ni4uMzA3
YmQ0YTJhNzhhODk5YjQ2NjdmNzMwY2YxNTdkMDdlMThkMDExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0zNTksNiArMzU5LDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9j
b21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2Rl
TG9ja2VkKGZhbHNlKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigrK3NfZ2xvYmFsVHJlZVZlcnNp
b24pCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICAsIG1fc3VidHJlZU11dGF0
aW9uT2JzZXJ2ZXJUeXBlcygwKQorI2VuZGlmCiAgICAgLCBtX3N0eWxlU2hlZXRzKFN0eWxlU2hl
ZXRMaXN0OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlYWR5U3RhdGUoQ29tcGxldGUpCiAgICAg
LCBtX3N0eWxlUmVjYWxjVGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlY2FsY1RpbWVyRmly
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDRhNGE5MzM5Yzc3ZTRmODQyNzRkOWRiMTFkOWM0
NmM1NWU4OTU5NDkuLjQ4ZGZlYzkwOTZiNjdhNzlkMWVkYzNiZGRhNDNlMTU1YzZiNzgyMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KICNpbmNsdWRlIDx3dGYvRml4ZWRBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
QEAgLTc3Niw2ICs3NzcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIHsgbV9saXN0ZW5lclR5cGVzID0gbV9saXN0ZW5lclR5
cGVzIHwgbGlzdGVuZXJUeXBlOyB9CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JT
RVJWRVJTKQorICAgIGJvb2wgaGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJPZlR5cGUoV2ViS2l0
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9zdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzICYgdHlwZTsKKyAgICB9Cisg
ICAgYm9vbCBoYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Vi
dHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlczsgfQorICAgIHZvaWQgYWRkU3VidHJlZU11dGF0aW9u
T2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBlcykgeyBtX3N1YnRyZWVN
dXRhdGlvbk9ic2VydmVyVHlwZXMgfD0gdHlwZXM7IH0KKyNlbmRpZgorCiAgICAgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogZ2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1
ZG9FbHQpOwogCiAgICAgaW50IG5vZGVBYnNJbmRleChOb2RlKik7CkBAIC0xMjM4LDYgKzEyNDgs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIHNob3J0IG1fbGlzdGVuZXJUeXBlczsKIAor
I2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlv
bnMgbV9zdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzOworI2VuZGlmCisKICAgICBSZWZQdHI8
U3R5bGVTaGVldExpc3Q+IG1fc3R5bGVTaGVldHM7IC8vIEFsbCBvZiB0aGUgc3R5bGVzaGVldHMg
dGhhdCBhcmUgY3VycmVudGx5IGluIGVmZmVjdCBmb3Igb3VyIG1lZGlhIHR5cGUgYW5kIHN0eWxl
c2hlZXQgc2V0LgogICAgIAogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHls
ZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCAyYjgyMjIxMWJlM2QwYTM2ZWQ1NDAz
Mjk2NTNlNDY2MGMzMjQ4MWIyLi4zYzdlNmI1N2I2ZDYyYmM2ZDhiY2Q3NjQ1Yzg1NTA0NDc1NTRh
ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmgKQEAgLTUzLDkgKzUzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXIo
KTsKIAogICAgIGJvb2wgc2hvdWxkUmVjZWl2ZU11dGF0aW9uRnJvbShOb2RlKiwgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlKTsKKyAgICBib29sIGlzU3VidHJlZSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9ucyAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OlN1YnRyZWU7IH0K
IAogICAgIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKCkgeyByZXR1cm4gbV9vYnNl
cnZlci5nZXQoKTsgfQotICAgIE11dGF0aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5
T3B0aW9ucygpIHsgcmV0dXJuIG1fb3B0aW9ucyAmIChXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpB
dHRyaWJ1dGVPbGRWYWx1ZSB8IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFP
bGRWYWx1ZSk7IH0KKyAgICBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucyBkZWxpdmVyeU9w
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMgJiAoV2ViS2l0TXV0YXRpb25PYnNlcnZl
cjo6QXR0cmlidXRlT2xkVmFsdWUgfCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpDaGFyYWN0ZXJE
YXRhT2xkVmFsdWUpOyB9CisgICAgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgbXV0YXRpb25UeXBl
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucyAmIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkFs
bE11dGF0aW9uVHlwZXM7IH0KIAogcHJpdmF0ZToKICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uKFBhc3NSZWZQdHI8V2ViS2l0TXV0YXRpb25PYnNlcnZlcj4sIE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCBiNzZiNmQ2NWI0NTk0ODY5MDdiYjRkNzZjZjhiZmQ0OThlYjFkYWUyLi41
OGI3Y2Y0OTI2NWNlYTkwODgwYTc2MTYwMDhiZGE2NDBhYjBiMTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yNTQ0LDYgKzI1NDQsMjQgQEAgdm9pZCBOb2RlOjpkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkKIHsKICAgICBBU1NFUlQoIWRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQp
OwogICAgIHNldERpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQodHJ1ZSk7CisKKyAg
ICAvLyBGSVhNRTogRXZlbnQgbGlzdGVuZXIgdHlwZXMgZm9yIHRoaXMgbm9kZSBzaG91bGQgYmUg
c2V0IG9uIHRoZSBuZXcgb3duZXIgZG9jdW1lbnQgaGVyZS4KKworI2lmIEVOQUJMRShNVVRBVElP
Tl9PQlNFUlZFUlMpCisgICAgaWYgKFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lz
dHJhdGlvbj4gPiogcmVnaXN0cnkgPSBtdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZ2lzdHJ5LT5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKHJlZ2lzdHJ5LT5hdChpKS0+aXNTdWJ0cmVlKCkpCisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQoKS0+YWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhyZWdpc3RyeS0+
YXQoaSktPm11dGF0aW9uVHlwZXMoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoSGFz
aFNldDxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudFJlZ2lzdHJ5ID0g
dHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKKyAgICAgICAgZm9yIChIYXNo
U2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPjo6aXRlcmF0b3IgaXRlciA9IHRyYW5z
aWVudFJlZ2lzdHJ5LT5iZWdpbigpOyBpdGVyICE9IHRyYW5zaWVudFJlZ2lzdHJ5LT5lbmQoKTsg
KytpdGVyKSB7CisgICAgICAgICAgICBpZiAoKCppdGVyKS0+aXNTdWJ0cmVlKCkpCisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+YWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcygoKml0
ZXIpLT5tdXRhdGlvblR5cGVzKCkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKICNp
ZiBFTkFCTEUoU1ZHKQpAQCAtMjczNCw3ICsyNzUyLDEyIEBAIHZvaWQgTm9kZTo6Y29sbGVjdE1h
dGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24oSGFzaE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVy
KiwKIAogdm9pZCBOb2RlOjpnZXRSZWdpc3RlcmVkTXV0YXRpb25PYnNlcnZlcnNPZlR5cGUoSGFz
aE1hcDxXZWJLaXRNdXRhdGlvbk9ic2VydmVyKiwgTXV0YXRpb25SZWNvcmREZWxpdmVyeU9wdGlv
bnM+JiBvYnNlcnZlcnMsIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6Ok11dGF0aW9uVHlwZSB0eXBl
KQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCkpCisgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24ob2JzZXJ2
ZXJzLCB0aGlzLCB0eXBlKTsKKworICAgIGlmICghZG9jdW1lbnQoKS0+aGFzU3VidHJlZU11dGF0
aW9uT2JzZXJ2ZXJPZlR5cGUodHlwZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoTm9k
ZSogbm9kZSA9IHBhcmVudE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkK
ICAgICAgICAgY29sbGVjdE1hdGNoaW5nT2JzZXJ2ZXJzRm9yTXV0YXRpb24ob2JzZXJ2ZXJzLCBu
b2RlLCB0eXBlKTsKIH0KIApAQCAtMjc4NSw2ICsyODA4LDkgQEAgdm9pZCBOb2RlOjp1bnJlZ2lz
dGVyVHJhbnNpZW50TXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
KiByZWcKIAogdm9pZCBOb2RlOjpub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNo
KCkKIHsKKyAgICBpZiAoIWRvY3VtZW50KCktPmhhc1N1YnRyZWVNdXRhdGlvbk9ic2VydmVyKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAoVmVjdG9yPE93
blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+KiByZWdpc3RyeSA9IG5vZGUtPm11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CiAgICAgICAgICAgICBjb25zdCBzaXplX3Qgc2l6
ZSA9IHJlZ2lzdHJ5LT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRp
b25PYnNlcnZlci5jcHAKaW5kZXggMGM3Y2JmYzI0MGQxOWUxOWNjMTk2NWRlZjc4YTI2NTc1MGI2
ZTc2MC4uOTc3ZmMwZTRjM2YzNGVkZGEwZjU5ODgyYjE0ZWU2NjNkYTg0MjQxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMzQsNiArMzQs
NyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJNdXRhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTXV0
YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgi
CkBAIC02MSw2ICs2Miw5IEBAIHZvaWQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShO
b2RlKiBub2RlLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBvcHRpb25zCiB7CiAgICAgTXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gbm9kZS0+cmVnaXN0ZXJNdXRh
dGlvbk9ic2VydmVyKHRoaXMpOwogICAgIHJlZ2lzdHJhdGlvbi0+cmVzZXRPYnNlcnZhdGlvbihv
cHRpb25zKTsKKworICAgIGlmIChvcHRpb25zICYgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6U3Vi
dHJlZSkKKyAgICAgICAgbm9kZS0+ZG9jdW1lbnQoKS0+YWRkU3VidHJlZU11dGF0aW9uT2JzZXJ2
ZXJUeXBlcyhvcHRpb25zICYgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBl
cyk7CiB9CiAKIHZvaWQgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6ZGlzY29ubmVjdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaAppbmRleCBmZTZlNmUyN2Uw
OWE2MTQ3M2ZmZDgyZTRkN2FlYWRlZTc3Y2EzZGI5Li40OTg5OTU0NzUxOGJiY2RkYjBjYTdmYWI4
ZWI0ODAwNDkzMmU3Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9i
c2VydmVyLmgKQEAgLTU1LDcgKzU1LDkgQEAgcHVibGljOgogICAgIGVudW0gTXV0YXRpb25UeXBl
IHsKICAgICAgICAgQ2hpbGRMaXN0ID0gMSA8PCAwLAogICAgICAgICBBdHRyaWJ1dGVzID0gMSA8
PCAxLAotICAgICAgICBDaGFyYWN0ZXJEYXRhID0gMSA8PCAyCisgICAgICAgIENoYXJhY3RlckRh
dGEgPSAxIDw8IDIsCisKKyAgICAgICAgQWxsTXV0YXRpb25UeXBlcyA9IENoaWxkTGlzdCB8IEF0
dHJpYnV0ZXMgfCBDaGFyYWN0ZXJEYXRhCiAgICAgfTsKIAogICAgIGVudW0gT2JzZXJ2YXRpb25G
bGFncyAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113922</attachid>
            <date>2011-11-07 13:46:21 -0800</date>
            <delta_ts>2011-11-08 10:30:10 -0800</delta_ts>
            <desc>Slightly cleaner</desc>
            <filename>bug-71499-20111107134620.patch</filename>
            <type>text/plain</type>
            <size>14563</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkzNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDA0NDZhYWViYjUyY2M2
MDk1YzFiZmMwODcyYjk2MTc0MDlhMDEyLi40Zjc2NTQxODYxZWY1ZjFlY2RiYWNiMzA1ZjY5MWQx
Mzk5NDFjN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMTEtMDcgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgT25seSB3YWxrIHVwIHRoZSB0
cmVlIGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVycyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KKworICAgICAgICBBbmFsb2dvdXMgdG8g
bV9saXN0ZW5lclR5cGVzLCBhZGRlZCBhbiBtX3N1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMg
ZmllbGQKKyAgICAgICAgdG8gRG9jdW1lbnQgdGhhdCBrZWVwcyB0cmFjayBvZiB3aGljaCBvYnNl
cnZlciB0eXBlcyBoYXZlIGJlZW4gYWRkZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGF2
b2lkIGRvaW5nIGFueSBleHRyYSB3b3JrIGlmIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZQorICAgICAg
ICBub3QgYXR0YWNoZWQgdG8gYSBkb2N1bWVudC4KKworICAgICAgICBUaGlzIGNvdWxkIGJlIGlt
cHJvdmVkIHVwb24gdG8ga2VlcCBhIGNvdW50IG9mIGVhY2ggdHlwZSwgYXMgcmVtb3ZpbmcKKyAg
ICAgICAgYW4gb2JzZXJ2ZXIgY3VycmVudGx5IGhhcyBubyBlZmZlY3Qgb24gbV9zdWJ0cmVlTXV0
YXRpb25PYnNlcnZlclR5cGVzLgorICAgICAgICBCdXQgdGhhdCB3b3VsZCByZXF1aXJlIGEgbW9y
ZSBjb21wbGV4IGltcGxlbWVudGF0aW9uOiBvbmUgY291bnRlciBwZXIKKyAgICAgICAgbXV0YXRp
b24gdHlwZS4gQW5kIGl0IHdvdWxkIGJlIGVhc2llciB0byBnZXQgd3Jvbmc6IGlmIHRoZSBjb3Vu
dGVyCisgICAgICAgIGdldHMgb3V0IG9mIHN5bmMgd2l0aCB0aGUgYWN0dWFsIHN0YXRlIG9mIHRo
ZSBET00sIHdlIGNvdWxkIHN0YXJ0CisgICAgICAgIGRyb3BwaW5nIG11dGF0aW9uIG5vdGlmaWNh
dGlvbnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpoYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6aGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFkZFN1YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMpOgorICAgICAgICAqIGRv
bS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uOjppc1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbjo6ZGVsaXZlcnlPcHRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb246Om11dGF0aW9uVHlwZXMpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnQpOiBVcGRhdGUgbXV0YXRpb25PYnNlcnZlclR5cGVzIHdoZW4gYSBO
b2RlIGlzIG1vdmVkIHRvIGEgbmV3IGRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Z2V0UmVnaXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKTogRXhpdCBlYXJseSBpZiBpdCdz
IGtub3duIHRoYXQgbm8gb2JzZXJ2ZXJzIG9mIHx0eXBlfCBhcmUgcmVnaXN0ZXJlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6Om5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2gp
OiBFeGl0IGVhcmx5IGlmIGl0J3Mga25vd24gbm8gc3VidHJlZSBvYnNlcnZlcnMgb2YgYW55IHR5
cGUgYXJlIHJlZ2lzdGVyZWQuCisgICAgICAgICogZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZSk6
IFVwZGF0ZSBtdXRhdGlvbk9ic2VydmVyVHlwZXMgd2hlbiBhbiBvYnNlcnZhdGlvbiBvY2N1cnMu
CisgICAgICAgICogZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaDogQWRkIFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXI6OkFsbE11dGF0aW9uVHlwZXMgdG8gZW51bQorCiAyMDExLTExLTA0ICBTdGVw
aGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4g
U2Nyb2xsQW5pbWF0b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjYTk4OWYxOTA1
YzYyZTRlYzZjMzJiZGIyMTkyZjlkYjRiOGE3ZDg2Li4zMDdiZDRhMmE3OGE4OTliNDY2N2Y3MzBj
ZjE1N2QwN2UxOGQwMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM1OSw2ICszNTks
OSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJv
b2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlKE5vUXVp
cmtzTW9kZSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFsc2UpCiAgICAgLCBt
X2RvbVRyZWVWZXJzaW9uKCsrc19nbG9iYWxUcmVlVmVyc2lvbikKKyNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQorICAgICwgbV9zdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKDApCisj
ZW5kaWYKICAgICAsIG1fc3R5bGVTaGVldHMoU3R5bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fcmVhZHlTdGF0ZShDb21wbGV0ZSkKICAgICAsIG1fc3R5bGVSZWNhbGNUaW1lcih0
aGlzLCAmRG9jdW1lbnQ6OnN0eWxlUmVjYWxjVGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggNGE0YTkzMzljNzdlNGY4NDI3NGQ5ZGIxMWQ5YzQ2YzU1ZTg5NTk0OS4uNDhkZmVjOTA5
NmI2N2E3OWQxZWRjM2JkZGE0M2UxNTVjNmI3ODIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5o
IgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiV2ViS2l0TXV0YXRp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GaXhl
ZEFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNzc2LDYgKzc3NywxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlw
ZSkgeyBtX2xpc3RlbmVyVHlwZXMgPSBtX2xpc3RlbmVyVHlwZXMgfCBsaXN0ZW5lclR5cGU7IH0K
ICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlKTsKIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgYm9vbCBoYXNT
dWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZShXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRh
dGlvblR5cGUgdHlwZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N1YnRyZWVNdXRh
dGlvbk9ic2VydmVyVHlwZXMgJiB0eXBlOworICAgIH0KKyAgICBib29sIGhhc1N1YnRyZWVNdXRh
dGlvbk9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9zdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5
cGVzOyB9CisgICAgdm9pZCBhZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKE11dGF0aW9u
T2JzZXJ2ZXJPcHRpb25zIHR5cGVzKSB7IG1fc3VidHJlZU11dGF0aW9uT2JzZXJ2ZXJUeXBlcyB8
PSB0eXBlczsgfQorI2VuZGlmCisKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBnZXRPdmVycmlk
ZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHBzZXVkb0VsdCk7CiAKICAgICBpbnQgbm9k
ZUFic0luZGV4KE5vZGUqKTsKQEAgLTEyMzgsNiArMTI0OCwxMCBAQCBwcml2YXRlOgogCiAgICAg
dW5zaWduZWQgc2hvcnQgbV9saXN0ZW5lclR5cGVzOwogCisjaWYgRU5BQkxFKE1VVEFUSU9OX09C
U0VSVkVSUykKKyAgICBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtX3N1YnRyZWVNdXRhdGlvbk9i
c2VydmVyVHlwZXM7CisjZW5kaWYKKwogICAgIFJlZlB0cjxTdHlsZVNoZWV0TGlzdD4gbV9zdHls
ZVNoZWV0czsgLy8gQWxsIG9mIHRoZSBzdHlsZXNoZWV0cyB0aGF0IGFyZSBjdXJyZW50bHkgaW4g
ZWZmZWN0IGZvciBvdXIgbWVkaWEgdHlwZSBhbmQgc3R5bGVzaGVldCBzZXQuCiAgICAgCiAgICAg
dHlwZWRlZiBMaXN0SGFzaFNldDxOb2RlKiwgMzI+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFz
aFNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVn
aXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJh
dGlvbi5oCmluZGV4IDJiODIyMjExYmUzZDBhMzZlZDU0MDMyOTY1M2U0NjYwYzMyNDgxYjIuLjNj
N2U2YjU3YjZkNjJiYzZkOGJjZDc2NDVjODU1MDQ0NzU1NGFlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNTMsOSArNTMs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdpc3RlcigpOwogCiAgICAgYm9vbCBzaG91bGRS
ZWNlaXZlTXV0YXRpb25Gcm9tKE5vZGUqLCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlv
blR5cGUpOworICAgIGJvb2wgaXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zICYg
V2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6U3VidHJlZTsgfQogCiAgICAgV2ViS2l0TXV0YXRpb25P
YnNlcnZlciogb2JzZXJ2ZXIoKSB7IHJldHVybiBtX29ic2VydmVyLmdldCgpOyB9Ci0gICAgTXV0
YXRpb25SZWNvcmREZWxpdmVyeU9wdGlvbnMgZGVsaXZlcnlPcHRpb25zKCkgeyByZXR1cm4gbV9v
cHRpb25zICYgKFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkF0dHJpYnV0ZU9sZFZhbHVlIHwgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcjo6Q2hhcmFjdGVyRGF0YU9sZFZhbHVlKTsgfQorICAgIE11dGF0
aW9uUmVjb3JkRGVsaXZlcnlPcHRpb25zIGRlbGl2ZXJ5T3B0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fb3B0aW9ucyAmIChXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpBdHRyaWJ1dGVPbGRWYWx1ZSB8
IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OkNoYXJhY3RlckRhdGFPbGRWYWx1ZSk7IH0KKyAgICBN
dXRhdGlvbk9ic2VydmVyT3B0aW9ucyBtdXRhdGlvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV9v
cHRpb25zICYgV2ViS2l0TXV0YXRpb25PYnNlcnZlcjo6QWxsTXV0YXRpb25UeXBlczsgfQogCiBw
cml2YXRlOgogICAgIE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24oUGFzc1JlZlB0cjxXZWJL
aXRNdXRhdGlvbk9ic2VydmVyPiwgTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGI3NmI2ZDY1
YjQ1OTQ4NjkwN2JiNGQ3NmNmOGJmZDQ5OGViMWRhZTIuLjU4YjdjZjQ5MjY1Y2VhOTA4ODBhNzYx
NjAwOGJkYTY0MGFiMGIxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI1NDQsNiArMjU0NCwyNCBA
QCB2b2lkIE5vZGU6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQogewogICAgIEFTU0VSVCgh
ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiAgICAgc2V0RGlkTW92ZVRvTmV3
T3duZXJEb2N1bWVudFdhc0NhbGxlZCh0cnVlKTsKKworICAgIC8vIEZJWE1FOiBFdmVudCBsaXN0
ZW5lciB0eXBlcyBmb3IgdGhpcyBub2RlIHNob3VsZCBiZSBzZXQgb24gdGhlIG5ldyBvd25lciBk
b2N1bWVudCBoZXJlLgorCisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBpZiAo
VmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+KiByZWdpc3RyeSA9
IG11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVnaXN0cnktPnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAocmVnaXN0cnkt
PmF0KGkpLT5pc1N1YnRyZWUoKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRTdWJ0
cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJ5LT5hdChpKS0+bXV0YXRpb25UeXBlcygp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24qPiogdHJhbnNpZW50UmVnaXN0cnkgPSB0cmFuc2llbnRNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cnkoKSkgeworICAgICAgICBmb3IgKEhhc2hTZXQ8TXV0YXRpb25PYnNlcnZlclJl
Z2lzdHJhdGlvbio+OjppdGVyYXRvciBpdGVyID0gdHJhbnNpZW50UmVnaXN0cnktPmJlZ2luKCk7
IGl0ZXIgIT0gdHJhbnNpZW50UmVnaXN0cnktPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgICAg
IGlmICgoKml0ZXIpLT5pc1N1YnRyZWUoKSkKKyAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5h
ZGRTdWJ0cmVlTXV0YXRpb25PYnNlcnZlclR5cGVzKCgqaXRlciktPm11dGF0aW9uVHlwZXMoKSk7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0yNzM0
LDcgKzI3NTIsMTIgQEAgdm9pZCBOb2RlOjpjb2xsZWN0TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRh
dGlvbihIYXNoTWFwPFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIqLAogCiB2b2lkIE5vZGU6OmdldFJl
Z2lzdGVyZWRNdXRhdGlvbk9ic2VydmVyc09mVHlwZShIYXNoTWFwPFdlYktpdE11dGF0aW9uT2Jz
ZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4mIG9ic2VydmVycywgV2ViS2l0
TXV0YXRpb25PYnNlcnZlcjo6TXV0YXRpb25UeXBlIHR5cGUpCiB7Ci0gICAgZm9yIChOb2RlKiBu
b2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICBjb2xsZWN0
TWF0Y2hpbmdPYnNlcnZlcnNGb3JNdXRhdGlvbihvYnNlcnZlcnMsIHRoaXMsIHR5cGUpOworCisg
ICAgaWYgKCFkb2N1bWVudCgpLT5oYXNTdWJ0cmVlTXV0YXRpb25PYnNlcnZlck9mVHlwZSh0eXBl
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKQogICAgICAgICBjb2xsZWN0TWF0Y2hp
bmdPYnNlcnZlcnNGb3JNdXRhdGlvbihvYnNlcnZlcnMsIG5vZGUsIHR5cGUpOwogfQogCkBAIC0y
Nzg1LDYgKzI4MDgsOSBAQCB2b2lkIE5vZGU6OnVucmVnaXN0ZXJUcmFuc2llbnRNdXRhdGlvbk9i
c2VydmVyKE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZwogCiB2b2lkIE5vZGU6Om5v
dGlmeU11dGF0aW9uT2JzZXJ2ZXJzTm9kZVdpbGxEZXRhY2goKQogeworICAgIGlmICghZG9jdW1l
bnQoKS0+aGFzU3VidHJlZU11dGF0aW9uT2JzZXJ2ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgZm9yIChOb2RlKiBub2RlID0gcGFyZW50Tm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbm9kZS0+bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5
KCkpIHsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gcmVnaXN0cnktPnNpemUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCAw
YzdjYmZjMjQwZDE5ZTE5Y2MxOTY1ZGVmNzhhMjY1NzUwYjZlNzYwLi5hMDFkMjQ1YzI1OTA1YjE5
YmMzZjZhYTM3ZjhlZDcwYzQwNTdkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0TXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE11dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJXZWJL
aXRNdXRhdGlvbk9ic2VydmVyLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
Ik11dGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0
aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKQEAgLTYxLDYgKzYyLDkgQEAgdm9p
ZCBXZWJLaXRNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUqIG5vZGUsIE11dGF0aW9uT2Jz
ZXJ2ZXJPcHRpb25zIG9wdGlvbnMKIHsKICAgICBNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9u
KiByZWdpc3RyYXRpb24gPSBub2RlLT5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIodGhpcyk7CiAg
ICAgcmVnaXN0cmF0aW9uLT5yZXNldE9ic2VydmF0aW9uKG9wdGlvbnMpOworCisgICAgaWYgKHJl
Z2lzdHJhdGlvbi0+aXNTdWJ0cmVlKCkpCisgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPmFkZFN1
YnRyZWVNdXRhdGlvbk9ic2VydmVyVHlwZXMocmVnaXN0cmF0aW9uLT5tdXRhdGlvblR5cGVzKCkp
OwogfQogCiB2b2lkIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXI6OmRpc2Nvbm5lY3QoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXRNdXRhdGlvbk9ic2VydmVyLmgKaW5kZXggZmU2ZTZlMjdlMDlh
NjE0NzNmZmQ4MmU0ZDdhZWFkZWU3N2NhM2RiOS4uNDk4OTk1NDc1MThiYmNkZGIwY2E3ZmFiOGVi
NDgwMDQ5MzJlN2M3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE11dGF0
aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TXV0YXRpb25PYnNl
cnZlci5oCkBAIC01NSw3ICs1NSw5IEBAIHB1YmxpYzoKICAgICBlbnVtIE11dGF0aW9uVHlwZSB7
CiAgICAgICAgIENoaWxkTGlzdCA9IDEgPDwgMCwKICAgICAgICAgQXR0cmlidXRlcyA9IDEgPDwg
MSwKLSAgICAgICAgQ2hhcmFjdGVyRGF0YSA9IDEgPDwgMgorICAgICAgICBDaGFyYWN0ZXJEYXRh
ID0gMSA8PCAyLAorCisgICAgICAgIEFsbE11dGF0aW9uVHlwZXMgPSBDaGlsZExpc3QgfCBBdHRy
aWJ1dGVzIHwgQ2hhcmFjdGVyRGF0YQogICAgIH07CiAKICAgICBlbnVtIE9ic2VydmF0aW9uRmxh
Z3MgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkYjA5NDFmM2MzMjQ3NzA4Zjg0MGMzOTA4OWU5NjNkMmRiOWM1NTVhLi4w
Mjg2N2QzYzY0ZDBlYzczNDc1M2Q2NzMxOGU5YzAxNmM4NDZiNTNkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMTEtMDcgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgT25seSB3YWxrIHVwIHRoZSB0cmVlIGluIHNlYXJjaCBvZiBNdXRhdGlvbk9ic2VydmVy
cyBpZiBvbmUgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcxNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4K
KworICAgICAgICBDcmVhdGVkIGEgYmFzaWMgdGVzdCBzaG93aW5nIHRoYXQgTXV0YXRpb25PYnNl
cnZlcnMKKyAgICAgICAgYXJlIHByZXNlcnZlZCB3aGVuIGEgTm9kZSBzd2l0Y2hlcyBkb2N1bWVu
dHMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC5odG1sOiBB
ZGRlZC4KKwogMjAxMS0xMS0wNCAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIENyYXNoIGluIFNjcm9sbEFuaW1hdG9yLmNwcApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MWVkNDM5MDQ3MTg4NWRhZDVkODY2MTRjNjUyYzBlZDRmMTZiNzE3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9jcm9zcy1kb2N1bWVudC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorVGVzdCB0aGF0IE11dGF0aW9uT2JzZXJ2ZXJzIG1v
dmUgY29ycmVjdGx5IGFjcm9zcyBkb2N1bWVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1Rlc3RpbmcgYmFzaWMgYXNwZWN0cyBvZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlv
bi4KK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRh
dGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1
dGVOYW1lc3BhY2UgaXMgbnVsbAorCitUZXN0aW5nIHRoYXQgc3VidHJlZSBvYnNlcnZhdGlvbiB3
b3JrcyBhZnRlciBub2RlIGlzIG1vdmVkLgorUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BB
U1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS50
YXJnZXQgaXMgc3ViRGl2CitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIK
K1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL2Nyb3NzLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlZTdmMGNm
Y2Q4NzRiZWRiZjg4YTlmYWZhN2FiYTlmMTgwNGZhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbXV0YXRpb24vY3Jvc3MtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDEwMCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciBtdXRhdGlvbnM7Cit2YXIg
ZGl2LCBzdWJEaXY7CisKK2Z1bmN0aW9uIHRlc3RCYXNpYygpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7
CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3RpbmcgYmFzaWMg
YXNwZWN0cyBvZiBjcm9zcy1kb2N1bWVudCBvYnNlcnZhdGlvbi4nKTsKKworICAgICAgICBtdXRh
dGlvbnMgPSBudWxsOworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlv
bihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7
CisgICAgICAgIH0pOworCisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7YXR0cmlidXRl
czogdHJ1ZX0pOworICAgICAgICB2YXIgbmV3RG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxsKTsKKyAgICAgICAgbmV3RG9jLmFwcGVuZENoaWxk
KGRpdik7CisgICAgICAgIGRpdi5pZCA9ICdmb28nOworICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZScsICciaWQiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZXNwYWNlJywgJ251bGwnKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
ICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAg
c3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdFN1YnRyZWUoKSB7CisgICAgdmFyIG9ic2VydmVy
OworCisgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0aW5nIHRoYXQg
c3VidHJlZSBvYnNlcnZhdGlvbiB3b3JrcyBhZnRlciBub2RlIGlzIG1vdmVkLicpOworCisgICAg
ICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBzdWJEaXYgPSBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2JykpOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlv
bk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0
aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHthdHRyaWJ1dGVzOiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7CisgICAgICAgIHZhciBu
ZXdEb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgJycsIG51
bGwpOworICAgICAgICBuZXdEb2MuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICAgICAgc3ViRGl2Lmlk
ID0gJ2Zvbyc7CisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywg
JzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVz
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdzdWJEaXYnKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lc3BhY2UnLCAnbnVs
bCcpOworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsK
KyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCit2YXIg
dGVzdHMgPSBbdGVzdEJhc2ljLCB0ZXN0U3VidHJlZV07Cit2YXIgdGVzdEluZGV4ID0gMDsKKwor
ZnVuY3Rpb24gcnVuTmV4dFRlc3QoKSB7CisgICAgaWYgKHRlc3RJbmRleCA8IHRlc3RzLmxlbmd0
aCkKKyAgICAgICAgdGVzdHNbdGVzdEluZGV4KytdKCk7CisgICAgZWxzZQorICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKworZGVzY3JpcHRpb24oJ1Rlc3QgdGhhdCBNdXRhdGlvbk9ic2VydmVy
cyBtb3ZlIGNvcnJlY3RseSBhY3Jvc3MgZG9jdW1lbnRzJyk7CisKK2lmICghd2luZG93LldlYktp
dE11dGF0aW9uT2JzZXJ2ZXIpCisgICAgdGVzdEZhaWxlZCgnVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRShNVVRBVElPTl9PQlNFUlZFUlMpJyk7CitlbHNlCisgICAgcnVuTmV4dFRlc3QoKTsKKwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>