<?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>120318</bug_id>
          
          <creation_ts>2013-08-26 10:24:47 -0700</creation_ts>
          <short_desc>AX: Crash when VoiceOver reference a TextMarker from an iframe that has been removed</short_desc>
          <delta_ts>2013-08-29 16:58:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921067</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-26 10:24:47 -0700</bug_when>
    <thetext>Summary: Safari sometimes crashes when navigating content contained within an iframe.

Steps to Reproduce: 1. Visit http://fyve.de.
2. Click the &quot;My Fave&quot; link.
3. The login form appears in an iframe. Navigate left and right through this iframe a couple of times.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00007fff86c284f8 WebCore::Position::Position(WTF::PassRefPtr&lt;WebCore::Node&gt;, WebCore::Position::LegacyEditingOffset) + 40
1   com.apple.WebCore             	0x00007fff866e16c6 WebCore::AXObjectCache::visiblePositionForTextMarkerData(WebCore::TextMarkerData&amp;) + 134
2   com.apple.WebCore             	0x00007fff86dedd2e -[WebAccessibilityObjectWrapper visiblePositionForTextMarker:] + 126
3   com.apple.WebCore             	0x00007fff86dfb08d -[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:] + 9293
4   com.apple.AppKit              	0x00007fff8864490e CopyParameterizedAttributeValue + 328
5   com.apple.HIServices          	0x00007fff891a2d2d _AXXMIGCopyParameterizedAttributeValue + 265
6   com.apple.HIServices          	0x00007fff891aa510 _XCopyParameterizedAttributeValue + 576
7   com.apple.HIServices          	0x00007fff89187f4e mshMIGPerform + 443
8   com.apple.CoreFoundation      	0x00007fff8c52a2d9 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
9   com.apple.CoreFoundation      	0x00007fff8c52a019 __CFRunLoopDoSource1 + 153
10  com.apple.CoreFoundation      	0x00007fff8c55d19f __CFRunLoopRun + 1775
11  com.apple.CoreFoundation      	0x00007fff8c55c6b2 CFRunLoopRunSpecific + 290
12  com.apple.HIToolbox           	0x00007fff91beb0a4 RunCurrentEventLoopInMode + 209
13  com.apple.HIToolbox           	0x00007fff91beae42 ReceiveNextEventCommon + 356
14  com.apple.HIToolbox           	0x00007fff91beacd3 BlockUntilNextEventMatchingListInMode + 62
15  com.apple.AppKit              	0x00007fff88410613 _DPSNextEvent + 685
16  com.apple.AppKit              	0x00007fff8840fed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
17  com.apple.AppKit              	0x00007fff88407283 -[NSApplication run] + 517
18  com.apple.WebCore             	0x00007fff86cc3e0f WebCore::RunLoop::run() + 63
19  com.apple.WebKit2             	0x00007fff8f3d6c8a WebKit::WebProcessMain(WebKit::CommandLine const&amp;) + 2586
20  com.apple.WebKit2             	0x00007fff8f39e5bd WebKitMain + 285
21  com.apple.WebProcess          	0x00000001024ace7b 0x1024ac000 + 3707
22  libdyld.dylib                 	0x00007fff90cea7e1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921068</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-26 10:24:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/12344806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922509</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 09:52:53 -0700</bug_when>
    <thetext>It looks like what happens is that AXTextMarker references a node in the iframe. the iframe goes away, but the TextMarkerNode cache is not updated correctly (because the document is disconnected by the time it tries). Then we reference a node that has been deallocated and crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922513</commentid>
    <comment_count>3</comment_count>
      <attachid>209995</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 09:58:36 -0700</bug_when>
    <thetext>Created attachment 209995
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922580</commentid>
    <comment_count>4</comment_count>
      <attachid>209995</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 11:55:49 -0700</bug_when>
    <thetext>Comment on attachment 209995
patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        AX: Random crashes when navigating in iFrames with VoiceOver

I am not fond of the phrase “random crashes” nor do I have a clear idea what it means. Maybe remove the word “random” from this bug title?

&gt; Source/WebCore/page/Frame.cpp:637
&gt; +        // We don&apos;t clear the AXObjectCache here because we don&apos;t want to empty the topLevel cache

top level seems better than topLevel in this comment.

&gt; Source/WebCore/page/Frame.cpp:639
&gt; +        if (Document* doc = m_ownerElement-&gt;document()) {

Can we use the full word document here instead of the abbreviation, doc?

Why are we checking for null? Elements always have a non-null document.

&gt; Source/WebCore/page/Frame.cpp:641
&gt; +                cache-&gt;clearTextMarkerNodesInUse(document());

I don’t understand why document() is correct here if it’s incorrect above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922626</commentid>
    <comment_count>5</comment_count>
      <attachid>210021</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 13:14:05 -0700</bug_when>
    <thetext>Created attachment 210021
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922630</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 13:20:46 -0700</bug_when>
    <thetext>Updated patch to address Darin&apos;s comments

(In reply to comment #4)
&gt; (From update of attachment 209995 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=209995&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        AX: Random crashes when navigating in iFrames with VoiceOver
&gt; 
&gt; I am not fond of the phrase “random crashes” nor do I have a clear idea what it means. Maybe remove the word “random” from this bug title?
&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:637
&gt; &gt; +        // We don&apos;t clear the AXObjectCache here because we don&apos;t want to empty the topLevel cache
&gt; 
&gt; top level seems better than topLevel in this comment.
&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:639
&gt; &gt; +        if (Document* doc = m_ownerElement-&gt;document()) {
&gt; 
&gt; Can we use the full word document here instead of the abbreviation, doc?
&gt; 
&gt; Why are we checking for null? Elements always have a non-null document.
&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:641
&gt; &gt; +                cache-&gt;clearTextMarkerNodesInUse(document());
&gt; 
&gt; I don’t understand why document() is correct here if it’s incorrect above.

I added some more comments in code why we&apos;re using document() in this case that will hopefully be clear.

What we&apos;re trying to do is remove a few Nodes from cache of Nodes.
These nodes came from a sub-document [document() in this code snippet]
However, the cache of Nodes lives in the top level document.

So we want to access the cache from the top level document (m_owner-&gt;document()) and cleanup the nodes from document() in that cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922632</commentid>
    <comment_count>7</comment_count>
      <attachid>210021</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 13:21:39 -0700</bug_when>
    <thetext>Comment on attachment 210021
patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:947
&gt; +void AXObjectCache::clearTextMarkerNodesInUse(Document* doc)

Can we call this “document” instead of “doc” please?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:958
&gt; +            break;

It looks like this will stop after finding one node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922633</commentid>
    <comment_count>8</comment_count>
      <attachid>210021</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-29 13:22:03 -0700</bug_when>
    <thetext>Comment on attachment 210021
patch

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

&gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:958
&gt;&gt; +            break;
&gt; 
&gt; It looks like this will stop after finding one node.

To notice this mistake, the test would have to involve two nodes instead of just one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922636</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 13:26:05 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 210021 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210021&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/accessibility/AXObjectCache.cpp:958
&gt; &gt;&gt; +            break;
&gt; &gt; 
&gt; &gt; It looks like this will stop after finding one node.
&gt; 
&gt; To notice this mistake, the test would have to involve two nodes instead of just one.

Ah good catch. Left over from the first patch that I had to cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922644</commentid>
    <comment_count>10</comment_count>
      <attachid>210024</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 13:35:29 -0700</bug_when>
    <thetext>Created attachment 210024
patch

Updated layout test to check two different nodes in an iframe being removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922648</commentid>
    <comment_count>11</comment_count>
      <attachid>210024</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-29 13:44:19 -0700</bug_when>
    <thetext>Comment on attachment 210024
patch

Attachment 210024 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1618705</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922650</commentid>
    <comment_count>12</comment_count>
      <attachid>210024</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-08-29 13:46:08 -0700</bug_when>
    <thetext>Comment on attachment 210024
patch

Attachment 210024 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1644059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922657</commentid>
    <comment_count>13</comment_count>
      <attachid>210026</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 13:49:17 -0700</bug_when>
    <thetext>Created attachment 210026
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922733</commentid>
    <comment_count>14</comment_count>
      <attachid>210026</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-08-29 16:33:54 -0700</bug_when>
    <thetext>Comment on attachment 210026
patch

Thanks Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922744</commentid>
    <comment_count>15</comment_count>
      <attachid>210026</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 16:58:34 -0700</bug_when>
    <thetext>Comment on attachment 210026
patch

Clearing flags on attachment: 210026

Committed r154855: &lt;http://trac.webkit.org/changeset/154855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922745</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 16:58:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209995</attachid>
            <date>2013-08-29 09:58:36 -0700</date>
            <delta_ts>2013-08-29 11:55:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8146</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA4LTI5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFJhbmRvbSBjcmFz
aGVzIHdoZW4gbmF2aWdhdGluZyBpbiBpRnJhbWVzIHdpdGggVm9pY2VPdmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAzMTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBjcmFzaGVzIG9jY3Vy
IGJlY2F1c2UgYW4gQVhUZXh0TWFya2VyIGlzIHJldHJpZXZlZCB0aGF0IHJlZmVyZW5jZSBhIE5v
ZGUgaW4gYW4gaWZyYW1lLgorICAgICAgICBUaGUgaWZyYW1lIGdvZXMgYXdheSwgYnV0IHdoZW4g
aXQgdHJpZXMgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSB0aGF0IE5vZGUgZnJvbSB0aGUgSW5Vc2Ug
Y2FjaGUsCisgICAgICAgIHRoZSBkb2N1bWVudCgpIHRyZWUgaGFzIGFscmVhZHkgYmVlbiBkZXRh
Y2hlZCwgc28gaXQgbmV2ZXIgY2xlYXJzIHRoZSBhY3R1YWwgSW5Vc2UgY2FjaGUuCisKKyAgICAg
ICAgVGhlIGZpeCBoZXJlIGlzIHRvIHByZS1lbXB0aXZlbHkgY2xlYW4gdXAgYW55IG5vZGVzIGlu
IHRoZSBkb2N1bWVudCBnb2luZyBhd2F5IHdoZW4gdGhlIGZyYW1lIGlzIGFib3V0IHRvIGRpc2Nv
bm5lY3QuCisKKyAgICAgICAgSSdtIHJlbW92aW5nIHRoZSBjbGVhckFYT2JqZWN0Q2FjaGUoKSBh
dCB0aGUgZGlzY29ubmVjdE93bmVyRWxlbWVudCBiZWNhdXNlIGl0IAorICAgICAgICAgICAxKSBD
bGVhcmVkIHRoZSBBWE9iamVjdENhY2hlIGZvciB0aGUgaWZyYW1lIGRvY3VtZW50ICh3aGljaCBp
cyBhbHdheXMgZW1wdHkgLS0gb25seSB0aGUgdG9wIGxldmVsIGRvYyBtYWludGFpbnMgdGhlIGNh
Y2hlKSwgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRoZSBkb2N1bWVudCgpIHRyZWUgaGFkIGFs
cmVhZHkgYmVlbiBkZXRhY2hlZC4uLiBzbyBpdCBlc3NlbnRpYWxseSBkaWQgbm90aGluZy4KKyAg
ICAgICAgICAgMikgQW5kIGlmIGl0IGRpZCB3b3JrLCB3ZSB3b3VsZG4ndCB3YW50IHRoaXMgYmVo
YXZpb3IgLS0gdGhhdCBpcyB0byBzYXksIHdoZW4gYW4gaWZyYW1lIGdvZXMgYXdheSwgd2UgZG9u
J3Qgd2FudCB0byBjbGVhciB0aGUgZW50aXJlIGNhY2hlIGZvciBhbGwKKyAgICAgICAgICAgICAg
IHRoZSBvdGhlciBkb2N1bWVudHMgKHRoZXJlJ3MgZXZlbiBhbiBleGlzdGluZyBsYXlvdXQgdGVz
dCB0byB2ZXJpZnkgdGhpcyBiZWhhdmlvcikuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZSk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6ZGlzY29ubmVjdE93bmVyRWxlbWVudCk6CisKIDIwMTMtMDgtMjkg
IFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBCdWlsZGZp
eCBhZnRlciByMTU0ODA2IGZvciAhRU5BQkxFKENTU19SRUdJT05TKSBwbGF0Zm9ybXMuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTU0Nzc5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMiw4ICs2MzIsMTUgQEAKIHZvaWQg
RnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQogewogICAgIGlmIChtX293bmVyRWxlbWVu
dCkgewotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCkpCi0gICAgICAgICAg
ICBkb2MtPnRvcERvY3VtZW50KCktPmNsZWFyQVhPYmplY3RDYWNoZSgpOworICAgICAgICAvLyBV
c2UgdGhlIG93bmVyRWxlbWVudCdzIGRvY3VtZW50IGJlY2F1c2UgdGhlIGNvbnRlbnREb2N1bWVu
dCBmb3IgdGhpcworICAgICAgICAvLyBmcmFtZSBpcyBhbHJlYWR5IGRldGFjaGVkIGZyb20gdGhl
IHRyZWUgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY2xlYXIgdGhlIEFYT2Jq
ZWN0Q2FjaGUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZW1wdHkgdGhlIHRvcExldmVs
IGNhY2hlCisgICAgICAgIC8vIHdoZW4gYSBmcmFtZSBpcyByZW1vdmVkLgorICAgICAgICBpZiAo
RG9jdW1lbnQqIGRvYyA9IG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpKSB7CisgICAgICAgICAg
ICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2MtPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgp
KQorICAgICAgICAgICAgICAgIGNhY2hlLT5jbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlKGRvY3Vt
ZW50KCkpOworICAgICAgICB9CisKICAgICAgICAgbV9vd25lckVsZW1lbnQtPmNsZWFyQ29udGVu
dEZyYW1lKCk7CiAgICAgICAgIGlmIChtX3BhZ2UpCiAgICAgICAgICAgICBtX3BhZ2UtPmRlY3Jl
bWVudFN1YmZyYW1lQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTU0Nzc5KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ0
LDYgKzk0NCwzMCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNo
ZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZShEb2N1bWVudCogZG9jKQoreworICAgIEhhc2hT
ZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IG1fdGV4dE1hcmtlck5vZGVzLmJlZ2luKCk7CisgICAg
SGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGVuZCA9IG1fdGV4dE1hcmtlck5vZGVzLmVuZCgpOwor
CisgICAgLy8gQ2hlY2sgZWFjaCBub2RlIHRvIHNlZSBpZiBpdCdzIGluc2lkZSB0aGUgZG9jdW1l
bnQgYmVpbmcgZGVsZXRlZC4KKyAgICBIYXNoU2V0PE5vZGUqPiBub2Rlc1RvRGVsZXRlOworICAg
IGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgTm9kZSogbm9kZSA9ICppdDsKKyAg
ICAKKyAgICAgICAgZm9yIChEb2N1bWVudCogbm9kZURvY3VtZW50ID0gbm9kZS0+ZG9jdW1lbnQo
KTsgbm9kZURvY3VtZW50OyBub2RlRG9jdW1lbnQgPSBub2RlRG9jdW1lbnQtPnBhcmVudERvY3Vt
ZW50KCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlRG9jdW1lbnQgPT0gZG9jKSB7CisgICAgICAg
ICAgICAgICAgbm9kZXNUb0RlbGV0ZS5hZGQoKml0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpdCA9IG5vZGVzVG9E
ZWxldGUuYmVnaW4oKTsKKyAgICBlbmQgPSBub2Rlc1RvRGVsZXRlLmVuZCgpOworICAgIGZvciAo
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIG1fdGV4dE1hcmtlck5vZGVzLnJlbW92ZSgqaXQp
OworfQorICAgIAogYm9vbCBBWE9iamVjdENhY2hlOjpub2RlSXNUZXh0Q29udHJvbChjb25zdCBO
b2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAxNTQ3NzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjAwLDYgKzIwMCw3IEBACiAgICAgdm9pZCBmcmFtZUxvYWRpbmdFdmVudE5vdGlmaWNhdGlvbihG
cmFtZSosIEFYTG9hZGluZ0V2ZW50KTsKIAogICAgIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSosIGNv
bnN0IEF0b21pY1N0cmluZyYgcm9sZSk7CisgICAgdm9pZCBjbGVhclRleHRNYXJrZXJOb2Rlc0lu
VXNlKERvY3VtZW50Kik7CiAKICAgICB2b2lkIHN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0
cmlidXRlc1VudGlsVHJlZU11dGF0ZXMoKTsKICAgICB2b2lkIHN0b3BDYWNoaW5nQ29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTQ4MTUpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOC0y
OSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBS
YW5kb20gY3Jhc2hlcyB3aGVuIG5hdmlnYXRpbmcgaW4gaUZyYW1lcyB3aXRoIFZvaWNlT3Zlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMzE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1h
cmtlci1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMy0wOC0yOSAgU2ltb24gUGVuYSAgPHNpbW9u
LnBlbmFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgRm9sbG93LXVwIHRvIHIxNTQ4MTAgYW5kIHIx
NTQ4MTA6IE1pc3NpbmcgdGVzdHMgYW5kIGZpeCBvbmUgbWlzcGxhY2VkIGNhbGwgdG8gc2V0Q2Fw
dGlvbkRpc3BsYXlNb2RlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNy
YXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdHMgdGhhdCB1c2luZyBhbiBvbGQgdGV4
dCBtYXJrZXIgdGhhdCByZWZlcmVuY2VzIGEgcmVtb3ZlZCBjb250YWluZXIgbm9kZSB3b24ndCBj
cmFzaC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1RleHQgbWFya2VyIGlzIHZh
bGlkOiB0cnVlCitUZXh0IG1hcmtlciBpcyB2YWxpZDogZmFsc2UKKwpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0
YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBpZD0iYm9keSIgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCk7JywgMSkiPgorCis8ZGl2
IGlkPSJjb250ZW50Ij4KKzxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8Ym9keT48aW5wdXQg
dHlwZT0nc2VhcmNoJyBwbGFjZWhvbGRlcj0nJz4iPjwvaWZyYW1lPgorPC9kaXY+CisKKzxkaXYg
cm9sZT0iZ3JvdXAiIGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdXNpbmcgYW4gb2xkIHRleHQgbWFya2VyIHRoYXQgcmVm
ZXJlbmNlcyBhIHJlbW92ZWQgY29udGFpbmVyIG5vZGUgd29uJ3QgY3Jhc2guIik7CisKKyAgICB2
YXIgY2FjaGVkTWFya2VyID0gMDsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyICYmIHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisKKyAgICAgICAgLy8gUmV0cmlldmUgYSBt
YXJrZXIgZm9yIHRoZSBzZWFyY2ggZmllbGQgaW4gdGhlIGlmcmFtZSBhbmQgY2FjaGUgaXQuCisg
ICAgICAgIHZhciBzZWFyY2hGaWVsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiY29udGVudCIpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCku
Y2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgdmFyIHJhbmdlID0gc2Vh
cmNoRmllbGQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChzZWFyY2hGaWVsZCk7CisgICAgICAg
IGNhY2hlZE1hcmtlciA9IHNlYXJjaEZpZWxkLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShyYW5nZSk7CisKKyAgICAgICAgZGVidWcoIlRleHQgbWFya2VyIGlzIHZhbGlkOiAiICsg
c2VhcmNoRmllbGQuaXNUZXh0TWFya2VyVmFsaWQoY2FjaGVkTWFya2VyKSk7CisKKyAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBpZnJhbWUgYW5kIHRoZSBzZWFyY2ggZmllbGQgaW5zaWRlIGFuZCB0aGVu
IGZvcmNlIGNsZWFudXAuCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50
IikuaW5uZXJIVE1MID0gIiI7CisgICAgICAgIGdjKCk7CisKKyAgICAgICAgc2V0VGltZW91dCgi
YWNjZXNzQ2FjaGVkTWFya2VyKCkiLCAiMTAiKTsKKyAgICB9CisgCisgICAgZnVuY3Rpb24gYWNj
ZXNzQ2FjaGVkTWFya2VyKCkgeworICAgICAgICB2YXIgY29uc29sZSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAKKyAgICAgICAg
Ly8gRG9uJ3QgY3Jhc2ggYWNjZXNzaW5nIHRoZSB0ZXh0IG1hcmtlciB0aGF0IHJlZmVyZW5jZXMg
YSBzdGFsZSBOb2RlLgorICAgICAgICB2YXIgaW5kZXggPSBjb25zb2xlLmluZGV4Rm9yVGV4dE1h
cmtlcihjYWNoZWRNYXJrZXIpOworICAgICAgICBkZWJ1ZygiVGV4dCBtYXJrZXIgaXMgdmFsaWQ6
ICIgKyBjb25zb2xlLmlzVGV4dE1hcmtlclZhbGlkKGNhY2hlZE1hcmtlcikpOworCisgICAgICAg
IHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210021</attachid>
            <date>2013-08-29 13:14:05 -0700</date>
            <delta_ts>2013-08-29 13:35:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8213</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA4LTI5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IENyYXNoIHdoZW4g
Vm9pY2VPdmVyIHJlZmVyZW5jZSBhIFRleHRNYXJrZXIgZnJvbSBhbiBpZnJhbWUgdGhhdCBoYXMg
YmVlbiByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjAzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVzZSBjcmFzaGVzIG9jY3VyIGJlY2F1c2UgYW4gQVhUZXh0TWFya2VyIGlzIHJldHJp
ZXZlZCB0aGF0IHJlZmVyZW5jZSBhIE5vZGUgaW4gYW4gaWZyYW1lLgorICAgICAgICBUaGUgaWZy
YW1lIGdvZXMgYXdheSwgYnV0IHdoZW4gaXQgdHJpZXMgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSB0
aGF0IE5vZGUgZnJvbSB0aGUgSW5Vc2UgY2FjaGUsCisgICAgICAgIHRoZSBkb2N1bWVudCgpIHRy
ZWUgaGFzIGFscmVhZHkgYmVlbiBkZXRhY2hlZCwgc28gaXQgbmV2ZXIgY2xlYXJzIHRoZSBhY3R1
YWwgSW5Vc2UgY2FjaGUuCisKKyAgICAgICAgVGhlIGZpeCBoZXJlIGlzIHRvIHByZS1lbXB0aXZl
bHkgY2xlYW4gdXAgYW55IG5vZGVzIGluIHRoZSBkb2N1bWVudCBnb2luZyBhd2F5IHdoZW4gdGhl
IGZyYW1lIGlzIGFib3V0IHRvIGRpc2Nvbm5lY3QuCisKKyAgICAgICAgSSdtIHJlbW92aW5nIHRo
ZSBjbGVhckFYT2JqZWN0Q2FjaGUoKSBhdCB0aGUgZGlzY29ubmVjdE93bmVyRWxlbWVudCBiZWNh
dXNlIGl0IAorICAgICAgICAgICAxKSBDbGVhcmVkIHRoZSBBWE9iamVjdENhY2hlIGZvciB0aGUg
aWZyYW1lIGRvY3VtZW50ICh3aGljaCBpcyBhbHdheXMgZW1wdHkgLS0gb25seSB0aGUgdG9wIGxl
dmVsIGRvYyBtYWludGFpbnMgdGhlIGNhY2hlKSwgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRo
ZSBkb2N1bWVudCgpIHRyZWUgaGFkIGFscmVhZHkgYmVlbiBkZXRhY2hlZC4uLiBzbyBpdCBlc3Nl
bnRpYWxseSBkaWQgbm90aGluZy4KKyAgICAgICAgICAgMikgQW5kIGlmIGl0IGRpZCB3b3JrLCB3
ZSB3b3VsZG4ndCB3YW50IHRoaXMgYmVoYXZpb3IgLS0gdGhhdCBpcyB0byBzYXksIHdoZW4gYW4g
aWZyYW1lIGdvZXMgYXdheSwgd2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0aGUgZW50aXJlIGNhY2hl
IGZvciBhbGwKKyAgICAgICAgICAgICAgIHRoZSBvdGhlciBkb2N1bWVudHMgKHRoZXJlJ3MgZXZl
biBhbiBleGlzdGluZyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhpcyBiZWhhdmlvcikuCisKKyAg
ICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1j
cmFzaC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVz
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzY29ubmVjdE93bmVy
RWxlbWVudCk6CisKIDIwMTMtMDgtMjkgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBCdWlsZGZpeCBhZnRlciByMTU0ODA2IGZvciAhRU5BQkxFKENTU19S
RUdJT05TKSBwbGF0Zm9ybXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTU0
Nzc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzMiw4ICs2MzIsMTYgQEAKIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQog
ewogICAgIGlmIChtX293bmVyRWxlbWVudCkgewotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9
IGRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2MtPnRvcERvY3VtZW50KCktPmNsZWFyQVhPYmpl
Y3RDYWNoZSgpOworICAgICAgICAvLyBXZSB1c2UgdGhlIG93bmVyRWxlbWVudCdzIGRvY3VtZW50
IHRvIHJldHJpZXZlIHRoZSBjYWNoZSwgYmVjYXVzZSB0aGUgY29udGVudERvY3VtZW50IGZvciB0
aGlzCisgICAgICAgIC8vIGZyYW1lIGlzIGFscmVhZHkgZGV0YWNoZWQgKGFuZCBjYW4ndCBhY2Nl
c3MgdGhlIHRvcCBsZXZlbCBBWCBjYWNoZSkuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdlIHBhc3Mg
aW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgdG8gY2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZSBzbyB3
ZSBjYW4gaWRlbnRpZnkgdGhlCisgICAgICAgIC8vIG5vZGVzIGluc2lkZSB0aGlzIGRvY3VtZW50
IHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgICAgICAKKyAgICAg
ICAgLy8gV2UgZG9uJ3QgY2xlYXIgdGhlIEFYT2JqZWN0Q2FjaGUgaGVyZSBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gY2xlYXIgdGhlIHRvcCBsZXZlbCBjYWNoZQorICAgICAgICAvLyB3aGVuIGEg
c3ViLWZyYW1lIGlzIHJlbW92ZWQuCisgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAg
ICAgICAgICAgIGNhY2hlLT5jbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlKGRvY3VtZW50KCkpOwor
CiAgICAgICAgIG1fb3duZXJFbGVtZW50LT5jbGVhckNvbnRlbnRGcmFtZSgpOwogICAgICAgICBp
ZiAobV9wYWdlKQogICAgICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRTdWJmcmFtZUNvdW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAJKHJldmlzaW9uIDE1NDc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5NDQsMjcgQEAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNsZWFyVGV4dE1hcmtlck5v
ZGVzSW5Vc2UoRG9jdW1lbnQqIGRvYykKK3sKKyAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3Ig
aXQgPSBtX3RleHRNYXJrZXJOb2Rlcy5iZWdpbigpOworICAgIEhhc2hTZXQ8Tm9kZSo+OjppdGVy
YXRvciBlbmQgPSBtX3RleHRNYXJrZXJOb2Rlcy5lbmQoKTsKKworICAgIC8vIENoZWNrIGVhY2gg
bm9kZSB0byBzZWUgaWYgaXQncyBpbnNpZGUgdGhlIGRvY3VtZW50IGJlaW5nIGRlbGV0ZWQuCisg
ICAgSGFzaFNldDxOb2RlKj4gbm9kZXNUb0RlbGV0ZTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgIAorICAgICAgICBpZiAoKCppdCktPmRvY3VtZW50KCkgPT0gZG9jKSB7
CisgICAgICAgICAgICBub2Rlc1RvRGVsZXRlLmFkZCgqaXQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaXQgPSBub2Rlc1RvRGVsZXRlLmJlZ2luKCk7
CisgICAgZW5kID0gbm9kZXNUb0RlbGV0ZS5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBtX3RleHRNYXJrZXJOb2Rlcy5yZW1vdmUoKml0KTsKK30KKyAgICAKIGJv
b2wgQVhPYmplY3RDYWNoZTo6bm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSogbm9kZSkKIHsK
ICAgICBpZiAoIW5vZGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gMTU0Nzc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsNyBA
QAogICAgIHZvaWQgZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oRnJhbWUqLCBBWExvYWRp
bmdFdmVudCk7CiAKICAgICBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBjb25zdCBBdG9taWNTdHJp
bmcmIHJvbGUpOworICAgIHZvaWQgY2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZShEb2N1bWVudCop
OwogCiAgICAgdm9pZCBzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRy
ZWVNdXRhdGVzKCk7CiAgICAgdm9pZCBzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
cygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0ODE1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDgtMjkgIENocmlzIEZsZWl6
YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogQ3Jhc2ggd2hlbiBWb2lj
ZU92ZXIgcmVmZXJlbmNlIGEgVGV4dE1hcmtlciBmcm9tIGFuIGlmcmFtZSB0aGF0IGhhcyBiZWVu
IHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0
YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbDogQWRkZWQuCisKIDIwMTMtMDgtMjkgIFNpbW9uIFBl
bmEgIDxzaW1vbi5wZW5hQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZvbGxvdy11cCB0byByMTU0
ODEwIGFuZCByMTU0ODEwOiBNaXNzaW5nIHRlc3RzIGFuZCBmaXggb25lIG1pc3BsYWNlZCBjYWxs
IHRvIHNldENhcHRpb25EaXNwbGF5TW9kZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4
dG1hcmtlci1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3RzIHRoYXQgdXNpbmcg
YW4gb2xkIHRleHQgbWFya2VyIHRoYXQgcmVmZXJlbmNlcyBhIHJlbW92ZWQgY29udGFpbmVyIG5v
ZGUgd29uJ3QgY3Jhc2guCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUZXh0IG1h
cmtlciBpcyB2YWxpZDogdHJ1ZQorVGV4dCBtYXJrZXIgaXMgdmFsaWQ6IGZhbHNlCisKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXIt
Y3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNo
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgaWQ9ImJvZHkiIG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpOycsIDEp
Ij4KKworPGRpdiBpZD0iY29udGVudCI+Cis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPGJv
ZHk+PGlucHV0IHR5cGU9J3NlYXJjaCcgcGxhY2Vob2xkZXI9Jyc+Ij48L2lmcmFtZT4KKzwvZGl2
PgorCis8ZGl2IHJvbGU9Imdyb3VwIiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisK
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHVzaW5nIGFuIG9sZCB0ZXh0IG1hcmtl
ciB0aGF0IHJlZmVyZW5jZXMgYSByZW1vdmVkIGNvbnRhaW5lciBub2RlIHdvbid0IGNyYXNoLiIp
OworCisgICAgdmFyIGNhY2hlZE1hcmtlciA9IDA7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlciAmJiB3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB3aW5kb3cudGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworCisgICAgICAgIC8vIFJl
dHJpZXZlIGEgbWFya2VyIGZvciB0aGUgc2VhcmNoIGZpZWxkIGluIHRoZSBpZnJhbWUgYW5kIGNh
Y2hlIGl0LgorICAgICAgICB2YXIgc2VhcmNoRmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRB
dEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHZhciBy
YW5nZSA9IHNlYXJjaEZpZWxkLnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoc2VhcmNoRmllbGQp
OworICAgICAgICBjYWNoZWRNYXJrZXIgPSBzZWFyY2hGaWVsZC5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworCisgICAgICAgIGRlYnVnKCJUZXh0IG1hcmtlciBpcyB2
YWxpZDogIiArIHNlYXJjaEZpZWxkLmlzVGV4dE1hcmtlclZhbGlkKGNhY2hlZE1hcmtlcikpOwor
CisgICAgICAgIC8vIFJlbW92ZSB0aGUgaWZyYW1lIGFuZCB0aGUgc2VhcmNoIGZpZWxkIGluc2lk
ZSBhbmQgdGhlbiBmb3JjZSBjbGVhbnVwLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29udGVudCIpLmlubmVySFRNTCA9ICIiOworICAgICAgICBnYygpOworCisgICAgICAgIHNl
dFRpbWVvdXQoImFjY2Vzc0NhY2hlZE1hcmtlcigpIiwgIjEwIik7CisgICAgfQorIAorICAgIGZ1
bmN0aW9uIGFjY2Vzc0NhY2hlZE1hcmtlcigpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAg
CisgICAgICAgIC8vIERvbid0IGNyYXNoIGFjY2Vzc2luZyB0aGUgdGV4dCBtYXJrZXIgdGhhdCBy
ZWZlcmVuY2VzIGEgc3RhbGUgTm9kZS4KKyAgICAgICAgdmFyIGluZGV4ID0gY29uc29sZS5pbmRl
eEZvclRleHRNYXJrZXIoY2FjaGVkTWFya2VyKTsKKyAgICAgICAgZGVidWcoIlRleHQgbWFya2Vy
IGlzIHZhbGlkOiAiICsgY29uc29sZS5pc1RleHRNYXJrZXJWYWxpZChjYWNoZWRNYXJrZXIpKTsK
KworICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgIH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="review"
          id="232100"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210024</attachid>
            <date>2013-08-29 13:35:29 -0700</date>
            <delta_ts>2013-08-29 13:49:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8882</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA4LTI5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IENyYXNoIHdoZW4g
Vm9pY2VPdmVyIHJlZmVyZW5jZSBhIFRleHRNYXJrZXIgZnJvbSBhbiBpZnJhbWUgdGhhdCBoYXMg
YmVlbiByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjAzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVzZSBjcmFzaGVzIG9jY3VyIGJlY2F1c2UgYW4gQVhUZXh0TWFya2VyIGlzIHJldHJp
ZXZlZCB0aGF0IHJlZmVyZW5jZSBhIE5vZGUgaW4gYW4gaWZyYW1lLgorICAgICAgICBUaGUgaWZy
YW1lIGdvZXMgYXdheSwgYnV0IHdoZW4gaXQgdHJpZXMgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSB0
aGF0IE5vZGUgZnJvbSB0aGUgSW5Vc2UgY2FjaGUsCisgICAgICAgIHRoZSBkb2N1bWVudCgpIHRy
ZWUgaGFzIGFscmVhZHkgYmVlbiBkZXRhY2hlZCwgc28gaXQgbmV2ZXIgY2xlYXJzIHRoZSBhY3R1
YWwgSW5Vc2UgY2FjaGUuCisKKyAgICAgICAgVGhlIGZpeCBoZXJlIGlzIHRvIHByZS1lbXB0aXZl
bHkgY2xlYW4gdXAgYW55IG5vZGVzIGluIHRoZSBkb2N1bWVudCBnb2luZyBhd2F5IHdoZW4gdGhl
IGZyYW1lIGlzIGFib3V0IHRvIGRpc2Nvbm5lY3QuCisKKyAgICAgICAgSSdtIHJlbW92aW5nIHRo
ZSBjbGVhckFYT2JqZWN0Q2FjaGUoKSBhdCB0aGUgZGlzY29ubmVjdE93bmVyRWxlbWVudCBiZWNh
dXNlIGl0IAorICAgICAgICAgICAxKSBDbGVhcmVkIHRoZSBBWE9iamVjdENhY2hlIGZvciB0aGUg
aWZyYW1lIGRvY3VtZW50ICh3aGljaCBpcyBhbHdheXMgZW1wdHkgLS0gb25seSB0aGUgdG9wIGxl
dmVsIGRvYyBtYWludGFpbnMgdGhlIGNhY2hlKSwgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRo
ZSBkb2N1bWVudCgpIHRyZWUgaGFkIGFscmVhZHkgYmVlbiBkZXRhY2hlZC4uLiBzbyBpdCBlc3Nl
bnRpYWxseSBkaWQgbm90aGluZy4KKyAgICAgICAgICAgMikgQW5kIGlmIGl0IGRpZCB3b3JrLCB3
ZSB3b3VsZG4ndCB3YW50IHRoaXMgYmVoYXZpb3IgLS0gdGhhdCBpcyB0byBzYXksIHdoZW4gYW4g
aWZyYW1lIGdvZXMgYXdheSwgd2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0aGUgZW50aXJlIGNhY2hl
IGZvciBhbGwKKyAgICAgICAgICAgICAgIHRoZSBvdGhlciBkb2N1bWVudHMgKHRoZXJlJ3MgZXZl
biBhbiBleGlzdGluZyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhpcyBiZWhhdmlvcikuCisKKyAg
ICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1j
cmFzaC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVz
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzY29ubmVjdE93bmVy
RWxlbWVudCk6CisKIDIwMTMtMDgtMjkgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBCdWlsZGZpeCBhZnRlciByMTU0ODA2IGZvciAhRU5BQkxFKENTU19S
RUdJT05TKSBwbGF0Zm9ybXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTU0
Nzc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzMiw4ICs2MzIsMTYgQEAKIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQog
ewogICAgIGlmIChtX293bmVyRWxlbWVudCkgewotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9
IGRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2MtPnRvcERvY3VtZW50KCktPmNsZWFyQVhPYmpl
Y3RDYWNoZSgpOworICAgICAgICAvLyBXZSB1c2UgdGhlIG93bmVyRWxlbWVudCdzIGRvY3VtZW50
IHRvIHJldHJpZXZlIHRoZSBjYWNoZSwgYmVjYXVzZSB0aGUgY29udGVudERvY3VtZW50IGZvciB0
aGlzCisgICAgICAgIC8vIGZyYW1lIGlzIGFscmVhZHkgZGV0YWNoZWQgKGFuZCBjYW4ndCBhY2Nl
c3MgdGhlIHRvcCBsZXZlbCBBWCBjYWNoZSkuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdlIHBhc3Mg
aW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgdG8gY2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZSBzbyB3
ZSBjYW4gaWRlbnRpZnkgdGhlCisgICAgICAgIC8vIG5vZGVzIGluc2lkZSB0aGlzIGRvY3VtZW50
IHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgICAgICAKKyAgICAg
ICAgLy8gV2UgZG9uJ3QgY2xlYXIgdGhlIEFYT2JqZWN0Q2FjaGUgaGVyZSBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gY2xlYXIgdGhlIHRvcCBsZXZlbCBjYWNoZQorICAgICAgICAvLyB3aGVuIGEg
c3ViLWZyYW1lIGlzIHJlbW92ZWQuCisgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IG1fb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAg
ICAgICAgICAgIGNhY2hlLT5jbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlKGRvY3VtZW50KCkpOwor
CiAgICAgICAgIG1fb3duZXJFbGVtZW50LT5jbGVhckNvbnRlbnRGcmFtZSgpOwogICAgICAgICBp
ZiAobV9wYWdlKQogICAgICAgICAgICAgbV9wYWdlLT5kZWNyZW1lbnRTdWJmcmFtZUNvdW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAJKHJldmlzaW9uIDE1NDc3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5NDQsMjQgQEAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIEFYT2JqZWN0Q2FjaGU6OmNsZWFyVGV4dE1hcmtlck5v
ZGVzSW5Vc2UoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEhhc2hTZXQ8Tm9kZSo+OjppdGVy
YXRvciBpdCA9IG1fdGV4dE1hcmtlck5vZGVzLmJlZ2luKCk7CisgICAgSGFzaFNldDxOb2RlKj46
Oml0ZXJhdG9yIGVuZCA9IG1fdGV4dE1hcmtlck5vZGVzLmVuZCgpOworCisgICAgLy8gQ2hlY2sg
ZWFjaCBub2RlIHRvIHNlZSBpZiBpdCdzIGluc2lkZSB0aGUgZG9jdW1lbnQgYmVpbmcgZGVsZXRl
ZC4KKyAgICBIYXNoU2V0PE5vZGUqPiBub2Rlc1RvRGVsZXRlOworICAgIGZvciAoOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQor
ICAgICAgICAgICAgbm9kZXNUb0RlbGV0ZS5hZGQoKml0KTsKKyAgICB9CisgICAgCisgICAgaXQg
PSBub2Rlc1RvRGVsZXRlLmJlZ2luKCk7CisgICAgZW5kID0gbm9kZXNUb0RlbGV0ZS5lbmQoKTsK
KyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBtX3RleHRNYXJrZXJOb2Rlcy5y
ZW1vdmUoKml0KTsKK30KKyAgICAKIGJvb2wgQVhPYmplY3RDYWNoZTo6bm9kZUlzVGV4dENvbnRy
b2woY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gMTU0Nzc5KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMCw2ICsyMDAsNyBAQAogICAgIHZvaWQgZnJhbWVMb2FkaW5nRXZlbnROb3Rp
ZmljYXRpb24oRnJhbWUqLCBBWExvYWRpbmdFdmVudCk7CiAKICAgICBib29sIG5vZGVIYXNSb2xl
KE5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHJvbGUpOworICAgIHZvaWQgY2xlYXJUZXh0TWFy
a2VyTm9kZXNJblVzZShEb2N1bWVudCopOwogCiAgICAgdm9pZCBzdGFydENhY2hpbmdDb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCk7CiAgICAgdm9pZCBzdG9wQ2FjaGlu
Z0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0ODE1KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDgtMjkgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAg
ICAgICBBWDogQ3Jhc2ggd2hlbiBWb2ljZU92ZXIgcmVmZXJlbmNlIGEgVGV4dE1hcmtlciBmcm9t
IGFuIGlmcmFtZSB0aGF0IGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDMxOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3Rh
bGUtdGV4dG1hcmtlci1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbDogQWRkZWQu
CisKIDIwMTMtMDgtMjkgIFNpbW9uIFBlbmEgIDxzaW1vbi5wZW5hQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIEZvbGxvdy11cCB0byByMTU0ODEwIGFuZCByMTU0ODEwOiBNaXNzaW5nIHRlc3RzIGFu
ZCBmaXggb25lIG1pc3BsYWNlZCBjYWxsIHRvIHNldENhcHRpb25EaXNwbGF5TW9kZQpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1j
cmFzaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10
ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorVGhpcyB0ZXN0cyB0aGF0IHVzaW5nIGFuIG9sZCB0ZXh0IG1hcmtlciB0aGF0IHJlZmVyZW5j
ZXMgYSByZW1vdmVkIGNvbnRhaW5lciBub2RlIHdvbid0IGNyYXNoLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworVGV4dCBtYXJrZXIgMSBpcyB2YWxpZDogdHJ1ZQorVGV4dCBtYXJr
ZXIgMiBpcyB2YWxpZDogdHJ1ZQorVGV4dCBtYXJrZXIgMSBpcyB2YWxpZDogZmFsc2UKK1RleHQg
bWFya2VyIDIgaXMgdmFsaWQ6IGZhbHNlCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2Vy
LWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiIG9u
bG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpOycsIDEpIj4KKworPGRpdiBpZD0iY29udGVudCI+
Cis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PGlucHV0IHR5cGU9J3NlYXJjaCcg
cGxhY2Vob2xkZXI9Jyc+PGlucHV0IHR5cGU9J3NlYXJjaCcgcGxhY2Vob2xkZXI9Jyc+Ij48L2lm
cmFtZT4KKzwvZGl2PgorCis8ZGl2IHJvbGU9Imdyb3VwIiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHVzaW5nIGFuIG9s
ZCB0ZXh0IG1hcmtlciB0aGF0IHJlZmVyZW5jZXMgYSByZW1vdmVkIGNvbnRhaW5lciBub2RlIHdv
bid0IGNyYXNoLiIpOworCisgICAgdmFyIGNhY2hlZE1hcmtlcjEgPSAwOworICAgIHZhciBjYWNo
ZWRNYXJrZXIyID0gMDsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyICYm
IHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisKKyAgICAgICAgLy8gUmV0cmlldmUgYSBtYXJrZXIg
Zm9yIHRoZSBzZWFyY2ggZmllbGQgaW4gdGhlIGlmcmFtZSBhbmQgY2FjaGUgaXQuCisgICAgICAg
IHZhciBzZWFyY2hGaWVsZDEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNvbnRlbnQiKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIHZhciByYW5nZTEgPSBzZWFyY2hG
aWVsZDEudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChzZWFyY2hGaWVsZDEpOworICAgICAgICBj
YWNoZWRNYXJrZXIxID0gc2VhcmNoRmllbGQxLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShyYW5nZTEpOworCisgICAgICAgIHZhciBzZWFyY2hGaWVsZDIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKS5jaGlsZEF0SW5kZXgo
MCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMSk7CisgICAg
ICAgIHZhciByYW5nZTIgPSBzZWFyY2hGaWVsZDIudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChz
ZWFyY2hGaWVsZDIpOworICAgICAgICBjYWNoZWRNYXJrZXIyID0gc2VhcmNoRmllbGQyLnN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZTIpOworCisgICAgICAgIGRlYnVnKCJU
ZXh0IG1hcmtlciAxIGlzIHZhbGlkOiAiICsgc2VhcmNoRmllbGQxLmlzVGV4dE1hcmtlclZhbGlk
KGNhY2hlZE1hcmtlcjEpKTsKKyAgICAgICAgZGVidWcoIlRleHQgbWFya2VyIDIgaXMgdmFsaWQ6
ICIgKyBzZWFyY2hGaWVsZDIuaXNUZXh0TWFya2VyVmFsaWQoY2FjaGVkTWFya2VyMikpOworCisg
ICAgICAgIC8vIFJlbW92ZSB0aGUgaWZyYW1lIGFuZCB0aGUgc2VhcmNoIGZpZWxkIGluc2lkZSBh
bmQgdGhlbiBmb3JjZSBjbGVhbnVwLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGVudCIpLmlubmVySFRNTCA9ICIiOworICAgICAgICBnYygpOworCisgICAgICAgIHNldFRp
bWVvdXQoImFjY2Vzc0NhY2hlZE1hcmtlcigpIiwgIjEwIik7CisgICAgfQorIAorICAgIGZ1bmN0
aW9uIGFjY2Vzc0NhY2hlZE1hcmtlcigpIHsKKyAgICAgICAgdmFyIGNvbnNvbGUgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgCisg
ICAgICAgIC8vIERvbid0IGNyYXNoIGFjY2Vzc2luZyB0aGUgdGV4dCBtYXJrZXIgdGhhdCByZWZl
cmVuY2VzIGEgc3RhbGUgTm9kZS4KKyAgICAgICAgdmFyIGluZGV4MSA9IGNvbnNvbGUuaW5kZXhG
b3JUZXh0TWFya2VyKGNhY2hlZE1hcmtlcjEpOworICAgICAgICBkZWJ1ZygiVGV4dCBtYXJrZXIg
MSBpcyB2YWxpZDogIiArIGNvbnNvbGUuaXNUZXh0TWFya2VyVmFsaWQoY2FjaGVkTWFya2VyMSkp
OworCisgICAgICAgIHZhciBpbmRleDIgPSBjb25zb2xlLmluZGV4Rm9yVGV4dE1hcmtlcihjYWNo
ZWRNYXJrZXIyKTsKKyAgICAgICAgZGVidWcoIlRleHQgbWFya2VyIDIgaXMgdmFsaWQ6ICIgKyBj
b25zb2xlLmlzVGV4dE1hcmtlclZhbGlkKGNhY2hlZE1hcmtlcjIpKTsKKworICAgICAgICB3aW5k
b3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="232105"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210026</attachid>
            <date>2013-08-29 13:49:17 -0700</date>
            <delta_ts>2013-08-29 16:58:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>8923</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDgxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA4LTI5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IENyYXNoIHdoZW4g
Vm9pY2VPdmVyIHJlZmVyZW5jZSBhIFRleHRNYXJrZXIgZnJvbSBhbiBpZnJhbWUgdGhhdCBoYXMg
YmVlbiByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjAzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVzZSBjcmFzaGVzIG9jY3VyIGJlY2F1c2UgYW4gQVhUZXh0TWFya2VyIGlzIHJldHJp
ZXZlZCB0aGF0IHJlZmVyZW5jZSBhIE5vZGUgaW4gYW4gaWZyYW1lLgorICAgICAgICBUaGUgaWZy
YW1lIGdvZXMgYXdheSwgYnV0IHdoZW4gaXQgdHJpZXMgdG8gY2xlYW4gdXAgYW5kIHJlbW92ZSB0
aGF0IE5vZGUgZnJvbSB0aGUgSW5Vc2UgY2FjaGUsCisgICAgICAgIHRoZSBkb2N1bWVudCgpIHRy
ZWUgaGFzIGFscmVhZHkgYmVlbiBkZXRhY2hlZCwgc28gaXQgbmV2ZXIgY2xlYXJzIHRoZSBhY3R1
YWwgSW5Vc2UgY2FjaGUuCisKKyAgICAgICAgVGhlIGZpeCBoZXJlIGlzIHRvIHByZS1lbXB0aXZl
bHkgY2xlYW4gdXAgYW55IG5vZGVzIGluIHRoZSBkb2N1bWVudCBnb2luZyBhd2F5IHdoZW4gdGhl
IGZyYW1lIGlzIGFib3V0IHRvIGRpc2Nvbm5lY3QuCisKKyAgICAgICAgSSdtIHJlbW92aW5nIHRo
ZSBjbGVhckFYT2JqZWN0Q2FjaGUoKSBhdCB0aGUgZGlzY29ubmVjdE93bmVyRWxlbWVudCBiZWNh
dXNlIGl0IAorICAgICAgICAgICAxKSBDbGVhcmVkIHRoZSBBWE9iamVjdENhY2hlIGZvciB0aGUg
aWZyYW1lIGRvY3VtZW50ICh3aGljaCBpcyBhbHdheXMgZW1wdHkgLS0gb25seSB0aGUgdG9wIGxl
dmVsIGRvYyBtYWludGFpbnMgdGhlIGNhY2hlKSwgYmVjYXVzZQorICAgICAgICAgICAgICAgIHRo
ZSBkb2N1bWVudCgpIHRyZWUgaGFkIGFscmVhZHkgYmVlbiBkZXRhY2hlZC4uLiBzbyBpdCBlc3Nl
bnRpYWxseSBkaWQgbm90aGluZy4KKyAgICAgICAgICAgMikgQW5kIGlmIGl0IGRpZCB3b3JrLCB3
ZSB3b3VsZG4ndCB3YW50IHRoaXMgYmVoYXZpb3IgLS0gdGhhdCBpcyB0byBzYXksIHdoZW4gYW4g
aWZyYW1lIGdvZXMgYXdheSwgd2UgZG9uJ3Qgd2FudCB0byBjbGVhciB0aGUgZW50aXJlIGNhY2hl
IGZvciBhbGwKKyAgICAgICAgICAgICAgIHRoZSBvdGhlciBkb2N1bWVudHMgKHRoZXJlJ3MgZXZl
biBhbiBleGlzdGluZyBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhpcyBiZWhhdmlvcikuCisKKyAg
ICAgICAgVGVzdDogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc3RhbGUtdGV4dG1hcmtlci1j
cmFzaC5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVz
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzY29ubmVjdE93bmVy
RWxlbWVudCk6CisKIDIwMTMtMDgtMjkgIFRhbWFzIEN6ZW5lICA8dGN6ZW5lQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBCdWlsZGZpeCBhZnRlciByMTU0ODA2IGZvciAhRU5BQkxFKENTU19S
RUdJT05TKSBwbGF0Zm9ybXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMTU0
Nzc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzMiw4ICs2MzIsMTggQEAKIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RPd25lckVsZW1lbnQoKQog
ewogICAgIGlmIChtX293bmVyRWxlbWVudCkgewotICAgICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9
IGRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2MtPnRvcERvY3VtZW50KCktPmNsZWFyQVhPYmpl
Y3RDYWNoZSgpOworICAgICAgICAvLyBXZSB1c2UgdGhlIG93bmVyRWxlbWVudCdzIGRvY3VtZW50
IHRvIHJldHJpZXZlIHRoZSBjYWNoZSwgYmVjYXVzZSB0aGUgY29udGVudERvY3VtZW50IGZvciB0
aGlzCisgICAgICAgIC8vIGZyYW1lIGlzIGFscmVhZHkgZGV0YWNoZWQgKGFuZCBjYW4ndCBhY2Nl
c3MgdGhlIHRvcCBsZXZlbCBBWCBjYWNoZSkuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdlIHBhc3Mg
aW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQgdG8gY2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZSBzbyB3
ZSBjYW4gaWRlbnRpZnkgdGhlCisgICAgICAgIC8vIG5vZGVzIGluc2lkZSB0aGlzIGRvY3VtZW50
IHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGNhY2hlLgorICAgICAgICAKKyAgICAg
ICAgLy8gV2UgZG9uJ3QgY2xlYXIgdGhlIEFYT2JqZWN0Q2FjaGUgaGVyZSBiZWNhdXNlIHdlIGRv
bid0IHdhbnQgdG8gY2xlYXIgdGhlIHRvcCBsZXZlbCBjYWNoZQorICAgICAgICAvLyB3aGVuIGEg
c3ViLWZyYW1lIGlzIHJlbW92ZWQuCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorICAgICAgICBp
ZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX293bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZXhp
c3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgICAgICBjYWNoZS0+Y2xlYXJUZXh0TWFya2Vy
Tm9kZXNJblVzZShkb2N1bWVudCgpKTsKKyNlbmRpZgorICAgICAgICAKICAgICAgICAgbV9vd25l
ckVsZW1lbnQtPmNsZWFyQ29udGVudEZyYW1lKCk7CiAgICAgICAgIGlmIChtX3BhZ2UpCiAgICAg
ICAgICAgICBtX3BhZ2UtPmRlY3JlbWVudFN1YmZyYW1lQ291bnQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTU0
Nzc5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQ0LDYgKzk0NCwyNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZShEb2N1bWVu
dCogZG9jdW1lbnQpCit7CisgICAgSGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gbV90ZXh0
TWFya2VyTm9kZXMuYmVnaW4oKTsKKyAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgZW5kID0g
bV90ZXh0TWFya2VyTm9kZXMuZW5kKCk7CisKKyAgICAvLyBDaGVjayBlYWNoIG5vZGUgdG8gc2Vl
IGlmIGl0J3MgaW5zaWRlIHRoZSBkb2N1bWVudCBiZWluZyBkZWxldGVkLgorICAgIEhhc2hTZXQ8
Tm9kZSo+IG5vZGVzVG9EZWxldGU7CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBpZiAoKCppdCktPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICBub2Rl
c1RvRGVsZXRlLmFkZCgqaXQpOworICAgIH0KKyAgICAKKyAgICBpdCA9IG5vZGVzVG9EZWxldGUu
YmVnaW4oKTsKKyAgICBlbmQgPSBub2Rlc1RvRGVsZXRlLmVuZCgpOworICAgIGZvciAoOyBpdCAh
PSBlbmQ7ICsraXQpCisgICAgICAgIG1fdGV4dE1hcmtlck5vZGVzLnJlbW92ZSgqaXQpOworfQor
ICAgIAogYm9vbCBBWE9iamVjdENhY2hlOjpub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAxNTQ3NzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYg
KzIwMCw3IEBACiAgICAgdm9pZCBmcmFtZUxvYWRpbmdFdmVudE5vdGlmaWNhdGlvbihGcmFtZSos
IEFYTG9hZGluZ0V2ZW50KTsKIAogICAgIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSosIGNvbnN0IEF0
b21pY1N0cmluZyYgcm9sZSk7CisgICAgdm9pZCBjbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlKERv
Y3VtZW50Kik7CiAKICAgICB2b2lkIHN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRl
c1VudGlsVHJlZU11dGF0ZXMoKTsKICAgICB2b2lkIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RB
dHRyaWJ1dGVzKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTQ4MTUpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOC0yOSAgQ2hy
aXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBDcmFzaCB3
aGVuIFZvaWNlT3ZlciByZWZlcmVuY2UgYSBUZXh0TWFya2VyIGZyb20gYW4gaWZyYW1lIHRoYXQg
aGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIwMzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNy
YXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvc3RhbGUtdGV4dG1hcmtlci1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAxMy0wOC0yOSAg
U2ltb24gUGVuYSAgPHNpbW9uLnBlbmFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgRm9sbG93LXVw
IHRvIHIxNTQ4MTAgYW5kIHIxNTQ4MTA6IE1pc3NpbmcgdGVzdHMgYW5kIGZpeCBvbmUgbWlzcGxh
Y2VkIGNhbGwgdG8gc2V0Q2FwdGlvbkRpc3BsYXlNb2RlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zdGFsZS10ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9z
dGFsZS10ZXh0bWFya2VyLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2gt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIHRo
YXQgdXNpbmcgYW4gb2xkIHRleHQgbWFya2VyIHRoYXQgcmVmZXJlbmNlcyBhIHJlbW92ZWQgY29u
dGFpbmVyIG5vZGUgd29uJ3QgY3Jhc2guCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitUZXh0IG1hcmtlciAxIGlzIHZhbGlkOiB0cnVlCitUZXh0IG1hcmtlciAyIGlzIHZhbGlkOiB0
cnVlCitUZXh0IG1hcmtlciAxIGlzIHZhbGlkOiBmYWxzZQorVGV4dCBtYXJrZXIgMiBpcyB2YWxp
ZDogZmFsc2UKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c3RhbGUtdGV4dG1hcmtlci1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxlLXRleHRtYXJrZXItY3Jhc2guaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3N0YWxl
LXRleHRtYXJrZXItY3Jhc2guaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSIgb25sb2FkPSJzZXRUaW1lb3V0
KCdydW5UZXN0KCk7JywgMSkiPgorCis8ZGl2IGlkPSJjb250ZW50Ij4KKzxpZnJhbWUgc3JjPSJk
YXRhOnRleHQvaHRtbCw8Ym9keT48aW5wdXQgdHlwZT0nc2VhcmNoJyBwbGFjZWhvbGRlcj0nJz48
aW5wdXQgdHlwZT0nc2VhcmNoJyBwbGFjZWhvbGRlcj0nJz4iPjwvaWZyYW1lPgorPC9kaXY+CisK
KzxkaXYgcm9sZT0iZ3JvdXAiIGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgdXNpbmcgYW4gb2xkIHRleHQgbWFya2VyIHRo
YXQgcmVmZXJlbmNlcyBhIHJlbW92ZWQgY29udGFpbmVyIG5vZGUgd29uJ3QgY3Jhc2guIik7CisK
KyAgICB2YXIgY2FjaGVkTWFya2VyMSA9IDA7CisgICAgdmFyIGNhY2hlZE1hcmtlcjIgPSAwOwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgJiYgd2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKworICAgICAgICAvLyBSZXRyaWV2ZSBhIG1hcmtlciBmb3IgdGhlIHNlYXJjaCBm
aWVsZCBpbiB0aGUgaWZyYW1lIGFuZCBjYWNoZSBpdC4KKyAgICAgICAgdmFyIHNlYXJjaEZpZWxk
MSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVu
dCIpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDApLmNoaWxk
QXRJbmRleCgwKTsKKyAgICAgICAgdmFyIHJhbmdlMSA9IHNlYXJjaEZpZWxkMS50ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50KHNlYXJjaEZpZWxkMSk7CisgICAgICAgIGNhY2hlZE1hcmtlcjEgPSBz
ZWFyY2hGaWVsZDEuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlMSk7CisK
KyAgICAgICAgdmFyIHNlYXJjaEZpZWxkMiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiY29udGVudCIpLmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgo
MCkuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgxKTsKKyAgICAgICAgdmFyIHJhbmdlMiA9
IHNlYXJjaEZpZWxkMi50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHNlYXJjaEZpZWxkMik7Cisg
ICAgICAgIGNhY2hlZE1hcmtlcjIgPSBzZWFyY2hGaWVsZDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHJhbmdlMik7CisKKyAgICAgICAgZGVidWcoIlRleHQgbWFya2VyIDEgaXMg
dmFsaWQ6ICIgKyBzZWFyY2hGaWVsZDEuaXNUZXh0TWFya2VyVmFsaWQoY2FjaGVkTWFya2VyMSkp
OworICAgICAgICBkZWJ1ZygiVGV4dCBtYXJrZXIgMiBpcyB2YWxpZDogIiArIHNlYXJjaEZpZWxk
Mi5pc1RleHRNYXJrZXJWYWxpZChjYWNoZWRNYXJrZXIyKSk7CisKKyAgICAgICAgLy8gUmVtb3Zl
IHRoZSBpZnJhbWUgYW5kIHRoZSBzZWFyY2ggZmllbGQgaW5zaWRlIGFuZCB0aGVuIGZvcmNlIGNs
ZWFudXAuCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuaW5uZXJI
VE1MID0gIiI7CisgICAgICAgIGdjKCk7CisKKyAgICAgICAgc2V0VGltZW91dCgiYWNjZXNzQ2Fj
aGVkTWFya2VyKCkiLCAiMTAiKTsKKyAgICB9CisgCisgICAgZnVuY3Rpb24gYWNjZXNzQ2FjaGVk
TWFya2VyKCkgeworICAgICAgICB2YXIgY29uc29sZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29uc29sZSIpOworICAKKyAgICAgICAgLy8gRG9uJ3Qg
Y3Jhc2ggYWNjZXNzaW5nIHRoZSB0ZXh0IG1hcmtlciB0aGF0IHJlZmVyZW5jZXMgYSBzdGFsZSBO
b2RlLgorICAgICAgICB2YXIgaW5kZXgxID0gY29uc29sZS5pbmRleEZvclRleHRNYXJrZXIoY2Fj
aGVkTWFya2VyMSk7CisgICAgICAgIGRlYnVnKCJUZXh0IG1hcmtlciAxIGlzIHZhbGlkOiAiICsg
Y29uc29sZS5pc1RleHRNYXJrZXJWYWxpZChjYWNoZWRNYXJrZXIxKSk7CisKKyAgICAgICAgdmFy
IGluZGV4MiA9IGNvbnNvbGUuaW5kZXhGb3JUZXh0TWFya2VyKGNhY2hlZE1hcmtlcjIpOworICAg
ICAgICBkZWJ1ZygiVGV4dCBtYXJrZXIgMiBpcyB2YWxpZDogIiArIGNvbnNvbGUuaXNUZXh0TWFy
a2VyVmFsaWQoY2FjaGVkTWFya2VyMikpOworCisgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>