<?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>57185</bug_id>
          
          <creation_ts>2011-03-27 09:39:25 -0700</creation_ts>
          <short_desc>drop event isn&apos;t fired for contentEditable in edit drag</short_desc>
          <delta_ts>2012-02-23 21:57:49 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76194</blocked>
    
    <blocked>76198</blocked>
    
    <blocked>9915</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alfonso Martínez de Lizarrondo">amla70</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>annevk</cc>
    
    <cc>ayg</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dcheng</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>mitz</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>374161</commentid>
    <comment_count>0</comment_count>
      <attachid>87076</attachid>
    <who name="Alfonso Martínez de Lizarrondo">amla70</who>
    <bug_when>2011-03-27 09:39:25 -0700</bug_when>
    <thetext>Created attachment 87076
Sample testcase

The only way to catch the onDrop event for contentEditable elements is to listen for ondragover and cancel that event, but in that case the normal behavior of allowing drag&amp;drop is broken.

In https://bugs.webkit.org/show_bug.cgi?id=3582#c5 it&apos;s stated that this is the expected behavior by the spec, but that&apos;s hardly useful for real usage. Firefox and IE both fire the onDrop event when something is really dropped into the content.

An example of why we want to listen for that event: http://dev.ckeditor.com/ticket/7422 in order to provide Undo/Redo management we must track the changes to the document. Due to this bug, in Webkit we can opt to not cancel the onDragOver event and so the onDrop isn&apos;t fired, or cancel it and then the user can&apos;t drag anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534103</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-11 12:04:58 -0800</bug_when>
    <thetext>This is causing us to fail http://samples.msdn.microsoft.com/ietestcenter/html5/dragdrop_harness.htm?url=types_attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534111</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-11 12:07:44 -0800</bug_when>
    <thetext>Appears this also causes us to fail http://samples.msdn.microsoft.com/ietestcenter/html5/dragdrop/setData_dragstart.htm

I suspect most of the IETC DnD tests hit this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534576</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-11 22:44:43 -0800</bug_when>
    <thetext>I think we ought to be firing drop event in this case per current HTML5 spec:
http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model

Look at the step 2 after the sentence &quot;Otherwise, the drag operation might be a success; run these substeps:&quot;; this step fires drop event and is executed for drag &amp; drop operations within editable regions before DOM mutations are made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535226</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 15:38:18 -0800</bug_when>
    <thetext>It turned out that this is a really hard bug to fix :(

The spec requires deletion to happen inside the default event handler of dragend event instead of atomically happening immediately after inserting the dragged content once the drop event is fired. However, inserting the content will &quot;orphan&quot; the original selection and we won&apos;t be able to delete the dragged content in some cases; in particular, this happens in the attached case where the dragged content and the destination coincide in the same text node.

Recovering the selection after the fact is particularly challenging because when ReplaceSelectionCommand::doApply is called, the frame&apos;s selection is changed to that of the drag caret&apos;s (i.e. destination&apos;s). Even if we had stored indexForVisiblePosition, we&apos;ll need to adjust the index when the drag source appears after the destination.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535317</commentid>
    <comment_count>5</comment_count>
      <attachid>122342</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 17:14:07 -0800</bug_when>
    <thetext>Created attachment 122342
work in progress

This regresses undo after drag &amp; drop. I think the current spec is flawed. It&apos;s extremely hard for us to split deletion and insertion of contents during drag and still get all editing behaviors (selection, undo, etc...) right. Given that Firefox 9 does it &quot;atomically&quot; in the dragend event, I&apos;m inclined to copy that behavior instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535374</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-12 18:59:40 -0800</bug_when>
    <thetext>Anne would be someone to talk to re: the spec flaws. :)  You should also consider filing a bug with the w3c explaining your disagreement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535422</commentid>
    <comment_count>7</comment_count>
      <attachid>122366</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 21:00:15 -0800</bug_when>
    <thetext>Created attachment 122366
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535423</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-12 21:02:06 -0800</bug_when>
    <thetext>There are so many bugs around this feature and I wasn&apos;t able to fix them all but I think this is a good step forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536963</commentid>
    <comment_count>9</comment_count>
      <attachid>122366</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-17 01:35:14 -0800</bug_when>
    <thetext>Comment on attachment 122366
fixes the bug

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

This was not nearly as scary as it looked at first.  I&apos;m not an expert here.  Please let me know if you&apos;d prefer to have someone more expert in this area review your patch.

&gt; Source/WebCore/page/EventHandler.cpp:1915
&gt; +    bool result = false;

Should this be called &quot;preventedDefault&quot; rather than &quot;result&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538532</commentid>
    <comment_count>10</comment_count>
      <attachid>122366</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 00:21:54 -0800</bug_when>
    <thetext>Comment on attachment 122366
fixes the bug

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:1915
&gt;&gt; +    bool result = false;
&gt; 
&gt; Should this be called &quot;preventedDefault&quot; rather than &quot;result&quot; ?

Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538566</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-01-19 02:16:42 -0800</bug_when>
    <thetext>Committed r105396: &lt;http://trac.webkit.org/changeset/105396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563924</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-02-23 21:57:49 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r105396: &lt;http://trac.webkit.org/changeset/105396&gt;

This caused bug 79443.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>87076</attachid>
            <date>2011-03-27 09:39:25 -0700</date>
            <delta_ts>2011-03-27 09:39:25 -0700</delta_ts>
            <desc>Sample testcase</desc>
            <filename>dragNdrop.html</filename>
            <type>text/html</type>
            <size>937</size>
            <attacher name="Alfonso Martínez de Lizarrondo">amla70</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjb250
ZW50RWRpdGFibGU9InRydWUiIHN0eWxlPSJib3JkZXI6MnB4IHNvbGlkICNlNWU1ZTUiIGlkPSJl
ZGl0YWJsZSI+CjxwPlRoaXMgaXMgYSBjb250ZW50RWRpdGFibGUgem9uZS4gU2VsZWN0IHNvbWUg
dGV4dCBoZXJlIChvciBvdXRzaWRlKSBhbmQgZHJvcCBpdCBoZXJlPC9wPgoKPC9kaXY+Cgo8aW5w
dXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYW5jZWwiPjxsYWJlbCBmb3I9ImNhbmNlbCI+Q2FuY2Vs
ICJvbmRyYWdvdmVyIiBldmVudDwvbGFiZWw+PGJyPgoKPHRleHRhcmVhIHN0eWxlPSd3aWR0aDox
MDAlOyBoZWlnaHQ6MjVlbScgcmVhZG9ubHkgaWQ9J291dCc+PC90ZXh0YXJlYT4KPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiBoYW5kbGVFdmVudChlKQp7Ci8vCWNvbnNv
bGUubG9nKGUpCglsb2cudmFsdWUgPSBsb2cudmFsdWUgKyBlLnR5cGUgKyAiXG4iOwp9Cgp2YXIg
bG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dCIpOwp2YXIgY2FuY2VsID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNhbmNlbCIpOwp2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImVkaXRhYmxlIik7CgpkaXYuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsIGhhbmRsZUV2
ZW50LCBmYWxzZSk7CmRpdi5hZGRFdmVudExpc3RlbmVyKCJkcmFnc3RhcnQiLCBoYW5kbGVFdmVu
dCwgZmFsc2UpOwpkaXYuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsIGhhbmRsZUV2ZW50LCBm
YWxzZSk7CgpkaXYuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbiAoZSkgewoJ
aWYgKGNhbmNlbC5jaGVja2VkKSAKCQllLnByZXZlbnREZWZhdWx0KCk7Cn0sIGZhbHNlKTsKCjwv
c2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122342</attachid>
            <date>2012-01-12 17:14:07 -0800</date>
            <delta_ts>2012-01-12 21:00:09 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>wip57185</filename>
            <type>text/plain</type>
            <size>14280</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1NCw2ICsyODU0LDExIEBACiAgICAg
ICAgIGlmIChldmVudC0+aGFzSW50ZXJmYWNlKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0
RXZlbnQpKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1l
KCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kZWZhdWx0VGV4dElu
cHV0RXZlbnRIYW5kbGVyKHN0YXRpY19jYXN0PFRleHRFdmVudCo+KGV2ZW50KSk7CisjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKKyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuZHJhZ2VuZEV2ZW50KSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgp
LT5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5kZWZhdWx0RHJh
Z2VuZEV2ZW50SGFuZGxlcihldmVudCk7CisjZW5kaWYKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElO
RykKICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZl
bnQgJiYgZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CiAgICAgICAgIE1vdXNlRXZlbnQqIG1vdXNl
RXZlbnQgPSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTkg
KzIwMSwyMSBAQAogewogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAgICAgbV9kb2N1bWVudFVuZGVy
TW91c2UgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNs
aWVudFBvc2l0aW9uKCkpOwotICAgIGlmIChtX2lzSGFuZGxpbmdEcmFnKSB7Ci0gICAgICAgIEFT
U0VSVChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1M
KTsKKyAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gJiBEcmFnRGVzdGluYXRpb25BY3Rp
b25ESFRNTCkgewogICAgICAgICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwsIGRyYWdEYXRhKTsKICAgICAgICAgUmVm
UHRyPEZyYW1lPiBtYWluRnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworICAgICAgICBib29s
IHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKG1haW5GcmFtZS0+dmlldygp
KSB7CiAgICAgICAgICAgICAvLyBTZW5kaW5nIGFuIGV2ZW50IGNhbiByZXN1bHQgaW4gdGhlIGRl
c3RydWN0aW9uIG9mIHRoZSB2aWV3IGFuZCBwYXJ0LgogICAgICAgICAgICAgUmVmUHRyPENsaXBi
b2FyZD4gY2xpcGJvYXJkID0gQ2xpcGJvYXJkOjpjcmVhdGUoQ2xpcGJvYXJkUmVhZGFibGUsIGRy
YWdEYXRhLCBtYWluRnJhbWUuZ2V0KCkpOwogICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRTb3Vy
Y2VPcGVyYXRpb24oZHJhZ0RhdGEtPmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKLSAg
ICAgICAgICAgIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChj
cmVhdGVNb3VzZUV2ZW50KGRyYWdEYXRhKSwgY2xpcGJvYXJkLmdldCgpKTsKKyAgICAgICAgICAg
IHByZXZlbnRlZERlZmF1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5wZXJmb3JtRHJh
Z0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIGNsaXBib2FyZC5nZXQoKSk7CiAg
ICAgICAgICAgICBjbGlwYm9hcmQtPnNldEFjY2Vzc1BvbGljeShDbGlwYm9hcmROdW1iKTsgICAg
Ly8gaW52YWxpZGF0ZSBjbGlwYm9hcmQgaGVyZSBmb3Igc2VjdXJpdHkKICAgICAgICAgfQotICAg
ICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IDA7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAocHJldmVudGVkRGVmYXVsdCB8fCBtX2lzSGFuZGxpbmdEcmFnKSB7CisgICAgICAg
ICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IDA7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICgobV9kcmFnRGVzdGluYXRpb25BY3Rpb24gJiBE
cmFnRGVzdGluYXRpb25BY3Rpb25FZGl0KSAmJiBjb25jbHVkZUVkaXREcmFnKGRyYWdEYXRhKSkg
ewpAQCAtNDMyLDEwICs0MzQsMTAgQEAKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudFVu
ZGVyTW91c2UobV9kb2N1bWVudFVuZGVyTW91c2UuZ2V0KCksIHBvaW50KTsKICAgICBpZiAoIWVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBGcmFtZSogaW5uZXJGcmFtZSA9IGVs
ZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAgICBSZWZQdHI8RnJhbWU+IGlubmVy
RnJhbWUgPSBlbGVtZW50LT5vd25lckRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgQVNTRVJUKGlu
bmVyRnJhbWUpOwogCi0gICAgaWYgKG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5oYXND
YXJldCgpICYmICFkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKGlubmVyRnJhbWUsIGRyYWdEYXRh
KSkKKyAgICBpZiAobV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPmhhc0NhcmV0KCkgJiYg
IWRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoaW5uZXJGcmFtZS5nZXQoKSwgZHJhZ0RhdGEpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkcmFnRGF0YS0+Y29udGFpbnNDb2xvcigp
KSB7CkBAIC00ODQsNDQgKzQ4Niw4NSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyID0gcmFuZ2UtPm93bmVyRG9j
dW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBSZXNvdXJjZUNhY2hlVmFsaWRh
dGlvblN1cHByZXNzb3IgdmFsaWRhdGlvblN1cHByZXNzb3IoY2FjaGVkUmVzb3VyY2VMb2FkZXIp
OwotICAgIGlmIChkcmFnSXNNb3ZlKGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkg
fHwgZHJhZ0NhcmV0LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKLSAgICAgICAgYm9vbCBj
aG9zZVBsYWluVGV4dCA9IGZhbHNlOwotICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZy
YW1lLCByYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpOwotICAgICAgICBpZiAoIWZyYWdtZW50
IHx8ICFpbm5lckZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQs
IHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgeworCisgICAgYm9vbCBjaG9zZVBs
YWluVGV4dCA9IGZhbHNlOworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudDsK
KyAgICBpZiAoZHJhZ0NhcmV0LmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKKyAgICAgICAg
ZnJhZ21lbnQgPSBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBpbm5lckZy
YW1lLmdldCgpLCByYW5nZSwgdHJ1ZSwgY2hvc2VQbGFpblRleHQpOworICAgICAgICBpZiAoIWZy
YWdtZW50IHx8ICFpbm5lckZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJh
Z21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRh
LT5hc1BsYWluVGV4dChpbm5lckZyYW1lLmdldCgpKTsKKyAgICAgICAgaWYgKHRleHQuaXNFbXB0
eSgpIHx8ICFpbm5lckZyYW1lLT5lZGl0b3IoKS0+c2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5n
ZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uRHJvcHBlZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChyYW5nZS5n
ZXQoKSwgdGV4dCk7CisgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBtX2NsaWVudC0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uRWRpdCwgZHJhZ0RhdGEpOworICAgIFJlZlB0cjxFbGVtZW50PiBzb3VyY2VFZGl0
YWJsZVJvb3QgPSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgp
OworICAgIGludCBpbmRleEZvclNlbGVjdGlvblN0YXJ0ID0gMDsKKyAgICBpbnQgaW5kZXhGb3JT
ZWxlY3Rpb25FbmQgPSAwOworICAgIFJlZlB0cjxFbGVtZW50PiBzY29wZUZvckluZGV4ZXM7Cisg
ICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpIHsKKyAg
ICAgICAgRWxlbWVudCogc2NvcGUgPSAwOworICAgICAgICBpbmRleEZvclNlbGVjdGlvblN0YXJ0
ID0gaW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVj
dGlvbigpLnZpc2libGVTdGFydCgpLCAmc2NvcGUpOworICAgICAgICBFbGVtZW50KiBlbmRTY29w
ZSA9IDA7CisgICAgICAgIGluZGV4Rm9yU2VsZWN0aW9uRW5kID0gaW5kZXhGb3JWaXNpYmxlUG9z
aXRpb24oaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnZpc2libGVFbmQoKSwg
JmVuZFNjb3BlKTsKKyAgICAgICAgQVNTRVJUKHNjb3BlID09IGVuZFNjb3BlKTsKKyAgICAgICAg
c2NvcGVGb3JJbmRleGVzID0gc2NvcGU7CisgICAgICAgIG1fc2VsZWN0aW9uVG9EZWxldGVGb3JF
ZGl0RHJhZyA9IGFkb3B0UHRyKG5ldyBWaXNpYmxlU2VsZWN0aW9uKGlubmVyRnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSkpOworICAgIH0gZWxzZQorICAgICAgICBtX3NlbGVjdGlvblRv
RGVsZXRlRm9yRWRpdERyYWcuY2xlYXIoKTsKKworICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdD
YXJldChpbm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpIHsKKyAgICAg
ICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIG9wdGlvbnMgPSBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisKKyAgICAgICAgaW50IGluZGV4QWZ0ZXJJbnNlcnRl
ZENvbnRlbnRzID0gMDsKKyAgICAgICAgYm9vbCBzaG91bGRBZGp1c3RJbmRleCA9IGZhbHNlOwor
ICAgICAgICBpZiAobV9zZWxlY3Rpb25Ub0RlbGV0ZUZvckVkaXREcmFnICYmIHNvdXJjZUVkaXRh
YmxlUm9vdCA9PSBpbm5lckZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgp
KSB7CisgICAgICAgICAgICBFbGVtZW50KiBzY29wZSA9IDA7CisgICAgICAgICAgICBpbmRleEFm
dGVySW5zZXJ0ZWRDb250ZW50cyA9IGluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGlubmVyRnJhbWUt
PnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCksICZzY29wZSk7CisgICAgICAg
ICAgICBBU1NFUlQoc2NvcGUgPT0gc2NvcGVGb3JJbmRleGVzKTsKKyAgICAgICAgICAgIHNob3Vs
ZEFkanVzdEluZGV4ID0gaW5kZXhBZnRlckluc2VydGVkQ29udGVudHMgPCBpbmRleEZvclNlbGVj
dGlvblN0YXJ0OworICAgICAgICAgICAgQVNTRVJUKChpbmRleEFmdGVySW5zZXJ0ZWRDb250ZW50
cyA+PSBpbmRleEZvclNlbGVjdGlvblN0YXJ0KSA9PSAoaW5kZXhBZnRlckluc2VydGVkQ29udGVu
dHMgPj0gaW5kZXhGb3JTZWxlY3Rpb25FbmQpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fY2xp
ZW50LT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rp
b25FZGl0LCBkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnSXNNb3ZlKGlubmVyRnJhbWUtPnNl
bGVjdGlvbigpLCBkcmFnRGF0YSkpIHsKLSAgICAgICAgICAgIC8vIE5TVGV4dFZpZXcgYmVoYXZp
b3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3ZpbmcgYSBzZWxlY3Rpb24sCi0gICAg
ICAgICAgICAvLyBidXQgb25seSB0byBzbWFydCBpbnNlcnQgaWYgdGhlIHNlbGVjdGlvbiBncmFu
dWxhcml0eSBpcyB3b3JkIGdyYW51bGFyaXR5LgotICAgICAgICAgICAgYm9vbCBzbWFydERlbGV0
ZSA9IGlubmVyRnJhbWUtPmVkaXRvcigpLT5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLSAg
ICAgICAgICAgIGJvb2wgc21hcnRJbnNlcnQgPSBzbWFydERlbGV0ZSAmJiBpbm5lckZyYW1lLT5z
ZWxlY3Rpb24oKS0+Z3JhbnVsYXJpdHkoKSA9PSBXb3JkR3JhbnVsYXJpdHkgJiYgZHJhZ0RhdGEt
PmNhblNtYXJ0UmVwbGFjZSgpOwotICAgICAgICAgICAgYXBwbHlDb21tYW5kKE1vdmVTZWxlY3Rp
b25Db21tYW5kOjpjcmVhdGUoZnJhZ21lbnQsIGRyYWdDYXJldC5iYXNlKCksIHNtYXJ0SW5zZXJ0
LCBzbWFydERlbGV0ZSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNldFNl
bGVjdGlvblRvRHJhZ0NhcmV0KGlubmVyRnJhbWUsIGRyYWdDYXJldCwgcmFuZ2UsIHBvaW50KSkg
ewotICAgICAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
cyBvcHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwotICAgICAgICAgICAgICAg
IGlmIChkcmFnRGF0YS0+Y2FuU21hcnRSZXBsYWNlKCkpCi0gICAgICAgICAgICAgICAgICAgIG9w
dGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKLSAgICAgICAg
ICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMg
fD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7Ci0gICAgICAgICAgICAgICAg
YXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUobV9kb2N1bWVudFVu
ZGVyTW91c2UuZ2V0KCksIGZyYWdtZW50LCBvcHRpb25zKSk7CisgICAgICAgIC8vIE5TVGV4dFZp
ZXcgYmVoYXZpb3IgaXMgdG8gYWx3YXlzIHNtYXJ0IGRlbGV0ZSBvbiBtb3ZpbmcgYSBzZWxlY3Rp
b24sCisgICAgICAgIC8vIGJ1dCBvbmx5IHRvIHNtYXJ0IGluc2VydCBpZiB0aGUgc2VsZWN0aW9u
IGdyYW51bGFyaXR5IGlzIHdvcmQgZ3JhbnVsYXJpdHkuCisgICAgICAgIGlmIChkcmFnRGF0YS0+
Y2FuU21hcnRSZXBsYWNlKCkgJiYgaW5uZXJGcmFtZS0+c2VsZWN0aW9uKCktPmdyYW51bGFyaXR5
KCkgPT0gV29yZEdyYW51bGFyaXR5KQorICAgICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOworICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQp
CisgICAgICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0
eWxlOworICAgICAgICBhcHBseUNvbW1hbmQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0
ZShtX2RvY3VtZW50VW5kZXJNb3VzZS5nZXQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKKworICAg
ICAgICBpZiAobV9zZWxlY3Rpb25Ub0RlbGV0ZUZvckVkaXREcmFnKSB7CisgICAgICAgICAgICBp
ZiAoIW1fc2VsZWN0aW9uVG9EZWxldGVGb3JFZGl0RHJhZy0+aXNOb25PcnBoYW5lZENhcmV0T3JS
YW5nZSgpKSB7CisgICAgICAgICAgICAgICAgKm1fc2VsZWN0aW9uVG9EZWxldGVGb3JFZGl0RHJh
ZyA9IFZpc2libGVTZWxlY3Rpb24odmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW5kZXhGb3JTZWxl
Y3Rpb25TdGFydCwgc2NvcGVGb3JJbmRleGVzLmdldCgpKSwKKyAgICAgICAgICAgICAgICAgICAg
dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW5kZXhGb3JTZWxlY3Rpb25FbmQsIHNjb3BlRm9ySW5k
ZXhlcy5nZXQoKSkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5uZXJGcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPnVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZCgqbV9zZWxl
Y3Rpb25Ub0RlbGV0ZUZvckVkaXREcmFnKTsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIFN0cmluZyB0ZXh0ID0gZHJhZ0RhdGEtPmFzUGxhaW5UZXh0KGlubmVyRnJhbWUpOwotICAg
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigpLT5zaG91bGRJ
bnNlcnRUZXh0KHRleHQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkg
ewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9jbGll
bnQtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlv
bkVkaXQsIGRyYWdEYXRhKTsKLSAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0KGlu
bmVyRnJhbWUsIGRyYWdDYXJldCwgcmFuZ2UsIHBvaW50KSkKLSAgICAgICAgICAgIGFwcGx5Q29t
bWFuZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fZG9jdW1lbnRVbmRlck1vdXNl
LmdldCgpLCBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLmdldCgpLCB0ZXh0KSwgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCB8IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpNYXRjaFN0eWxlIHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0
aW5nKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRlbGV0ZVNlbGVjdGlvbkZvckVkaXREcmFnKE5vZGUqIHRhcmdldCkKK3sKKyAgICBGcmFt
ZSogdGFyZ2V0RnJhbWUgPSB0YXJnZXQtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFt
X3NlbGVjdGlvblRvRGVsZXRlRm9yRWRpdERyYWcgfHwgIShtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
biAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkVkaXQpIHx8ICF0YXJnZXRGcmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRklYTUU6IGRlbGV0ZVNlbGVjdGlvbiBzaG91bGQgc3VwcG9ydCBk
ZWxldGluZyBhbiBhcmJpdHJhcnkgcmFuZ2UuCisgICAgVmlzaWJsZVNlbGVjdGlvbiBjdXJyZW50
U2VsZWN0aW9uID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKTsKKyAgICB0
YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbigqbV9zZWxlY3Rpb25Ub0RlbGV0
ZUZvckVkaXREcmFnKTsKKworICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlU2VsZWN0
aW9uV2l0aFNtYXJ0RGVsZXRlKHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+c21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkpOyAgICAKKworICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+c2V0U2Vs
ZWN0aW9uKGN1cnJlbnRTZWxlY3Rpb24pOworfQorCiBib29sIERyYWdDb250cm9sbGVyOjpjYW5Q
cm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMTA0Nzg3KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDcgKzEyNyw5IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIHVwZGF0ZURy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIENsaXBib2FyZCopOwogICAgIHZv
aWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgQ2xpcGJvYXJk
Kik7Ci0gICAgdm9pZCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiwgQ2xpcGJvYXJkKik7CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiwgQ2xpcGJvYXJkKik7CisgICAgdm9pZCBkZWZhdWx0RHJhZ2VuZEV2ZW50
SGFuZGxlcihFdmVudCopOworICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJhZ0lm
TmVlZGVkKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICNlbmRpZgogCiAgICAgdm9pZCBzY2hl
ZHVsZUhvdmVyU3RhdGVVcGRhdGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwOSwxNSArMTkwOSwxOCBAQAogICAgIGNsZWFy
RHJhZ1N0YXRlKCk7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiti
b29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogewogICAgIEZyYW1lKiB0YXJnZXRG
cmFtZTsKKyAgICBib29sIHJlc3VsdDsKICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJn
ZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAg
ICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChl
dmVudCwgY2xpcGJvYXJkKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRhcmdldEZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOwogICAgIH0g
ZWxzZSBpZiAobV9kcmFnVGFyZ2V0LmdldCgpKQotICAgICAgICBkaXNwYXRjaERyYWdFdmVudChl
dmVudE5hbWVzKCkuZHJvcEV2ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9h
cmQpOwotICAgIGNsZWFyRHJhZ1N0YXRlKCk7CisgICAgICAgIHJlc3VsdCA9IGRpc3BhdGNoRHJh
Z0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQsIG1fZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQs
IGNsaXBib2FyZCk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgY2xlYXJEcmFnU3RhdGUoKTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJEcmFnU3Rh
dGUoKQpAQCAtMjc4MSwxMSArMjc4NCwyOCBAQAogICAgIC8vIHRoYXQgY29uc2VjdXRpdmUgbW91
c2Vtb3ZlIGV2ZW50cyBkb24ndCByZWluaXRpYXRlIHRoZSBkcmFnIGFuZCBkcm9wLgogICAgIG1f
bW91c2VEb3duTWF5U3RhcnREcmFnID0gZmFsc2U7CiB9Ci0gICAgCisKK3ZvaWQgRXZlbnRIYW5k
bGVyOjpkZWZhdWx0RHJhZ2VuZEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgTm9k
ZSogdGFyZ2V0ID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBGcmFtZSogdGFyZ2V0
RnJhbWU7CisgICAgQVNTRVJUX1VOVVNFRCh0YXJnZXRGcmFtZSwgIXRhcmdldElzRnJhbWUodGFy
Z2V0LCB0YXJnZXRGcmFtZSkpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIo
KS0+ZGVsZXRlU2VsZWN0aW9uRm9yRWRpdERyYWcodGFyZ2V0KTsKK30KKwordm9pZCBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZChjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAm
JiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjKQorICAgICAgICBkcmFnU3RhdGUoKS5tX2RyYWdTcmMg
PSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOworfQorCiAvLyByZXR1cm5zIGlmIHdl
IHNob3VsZCBjb250aW51ZSAiZGVmYXVsdCBwcm9jZXNzaW5nIiwgaS5lLiwgd2hldGhlciBldmVu
dGhhbmRsZXIgY2FuY2VsZWQKIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdTcmNFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkKIHsKLSAgICByZXR1cm4gIWRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgZHJh
Z1N0YXRlKCkubV9kcmFnU3JjLmdldCgpLCBldmVudCwgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJv
YXJkLmdldCgpKTsKKyAgICBOb2RlKiB0YXJnZXQgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMuZ2V0
KCk7CisvKiAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pbkRvY3VtZW50KCkpCisgICAgICAg
IHRhcmdldCA9IG1fZHJhZ1RhcmdldC5nZXQoKTsqLworICAgIHJldHVybiAhZGlzcGF0Y2hEcmFn
RXZlbnQoZXZlbnRUeXBlLCB0YXJnZXQsIGV2ZW50LCBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9h
cmQuZ2V0KCkpOwogfQogICAgIAogc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291
cmNlQWN0aW9uIG4pCkBAIC0yODIxLDcgKzI4NDEsNyBAQAogICAgICAgICAgICAgZHJhZ1N0YXRl
KCkubV9kcmFnU3JjID0gbV9mcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnZ2Fi
bGVOb2RlKG1fZnJhbWUsIG5vZGUsIG1fbW91c2VEb3duUG9zLCBkcmFnU3RhdGUoKSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IDA7Ci0gICAgICAg
IAorCiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkubV9kcmFnU3JjKQogICAgICAgICAgICAgbV9t
b3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUK
ICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFz
cyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAgICAgY2xhc3MgUmFuZ2U7CisgICAgY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKICAgICAKICAgICBjbGFzcyBEcmFnQ29udHJvbGxlciB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERyYWdDb250cm9sbGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CkBAIC04Miw2ICs4Myw3IEBACiAgICAgICAgIAogICAgICAgICBOb2RlKiBkcmFnZ2FibGVO
b2RlKGNvbnN0IEZyYW1lKiwgTm9kZSosIGNvbnN0IEludFBvaW50JiwgRHJhZ1N0YXRlJikgY29u
c3Q7CiAgICAgICAgIHZvaWQgZHJhZ0VuZGVkKCk7CisgICAgICAgIHZvaWQgZGVsZXRlU2VsZWN0
aW9uRm9yRWRpdERyYWcoTm9kZSopOwogICAgICAgICAKICAgICAgICAgdm9pZCBwbGFjZURyYWdD
YXJldChjb25zdCBJbnRQb2ludCYpOwogICAgICAgICAKQEAgLTEzMSw2ICsxMzMsNyBAQAogICAg
ICAgICBEcmFnT3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJhdGlvbjsgLy8gU2V0IGluIHN0YXJ0
RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAog
ICAgICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgICAgIEtVUkwgbV9kcmFnZ2luZ0lt
YWdlVVJMOworICAgICAgICBPd25QdHI8VmlzaWJsZVNlbGVjdGlvbj4gbV9zZWxlY3Rpb25Ub0Rl
bGV0ZUZvckVkaXREcmFnOwogICAgIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122366</attachid>
            <date>2012-01-12 21:00:15 -0800</date>
            <delta_ts>2012-01-19 00:21:53 -0800</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-57185-20120112210014.patch</filename>
            <type>text/plain</type>
            <size>14905</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNDg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEyLTAxLTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRyb3AgZXZlbnQgaXNuJ3QgZmly
ZWQgZm9yIGNvbnRlbnRFZGl0YWJsZSBpbiBlZGl0IGRyYWcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzcGF0Y2ggZHJvcCBhbmQgZHJhZ2VuZCBldmVu
dHMgYWZ0ZXIgZWRpdCBkcmFnIHBlciBIVE1MNSBzcGVjOgorICAgICAgICBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9kbmQuaHRtbCNk
cmFnLWFuZC1kcm9wLXByb2Nlc3NpbmctbW9kZWwKKworICAgICAgICBUaGVyZSBhcmUgdHdvIG1h
am9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNwZWMgYW5kIFdlYktpdCdzIG5ldyBiZWhhdmlv
cjoKKworICAgICAgICBXaGlsZSB0aGUgc3BlYyBzYXlzIHdlIGhhdmUgdG8gaW5zZXJ0IHRoZSBk
cmFnZ2VkIGNvbnRlbnRzIGltbWVkaWF0ZWx5IGFmdGVyIGRpc3BhdGNoaW5nIGRyb3AgZXZlbnQK
KyAgICAgICAgYW5kIGRlbGV0ZSB0aGUgc291cmNlIGluIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRs
ZXIgb2YgZHJhZ2VuZCBldmVudCwgZG9pbmcgc28gaW4gV2ViS2l0IGlzIGV4dHJlbWVseQorICAg
ICAgICBkaWZmaWN1bHQgYmVjYXVzZSBvZiB0aGUgd2F5IHdlIG1hbmFnZSB0aGUgc2VsZWN0aW9u
LiBJbnN0ZWFkLCB3ZSBjb250aW51ZSB0byBkZWxldGUgdGhlIHNvdXJjZQorICAgICAgICBhbmQg
aW5zZXJ0IHRoZSBkcmFnZ2VkIGNvbnRlbnRzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkcm9wIGV2
ZW50OyB0aGlzIGJlaGF2aW9yIG1hdGNoZXMgdGhhdCBvZiBGaXJlZm94IDkuCisKKyAgICAgICAg
V2hlbiB0aGUgZHJhZ2dlZCBjb250ZW50cyBhbmQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBtb3Zl
IGlzIGluIHRoZSBzYW1lIHRleHQgbm9kZSwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQKKyAgICAg
ICAgbWF5IGVuZCB1cCByZXBsYWNpbmcgaXQgd2l0aCBhIG5ldyB0ZXh0IG5vZGUuIEJ1dCB0aGlz
IHJlbW92YWwgY2F1c2VzIGEgcHJvYmxlbSB3aGVuIEV2ZW50SGFuZGxlciB1c2VzCisgICAgICAg
IHRoZSBub2RlIHRvIGRpc3BhdGNoIGRyYWdlbmQgZXZlbnQgYmVjYXVzZSB0aGUgbm9kZSBpcyAi
b3JwaGFuZWQiIGZyb20gaXRzIHBhcmVudCBhdCB0aGF0IHBvaW50LiBUbyBtaXRpZ2F0ZQorICAg
ICAgICB0aGlzIGlzc3VlLCB3ZSB1cGRhdGUgdGhlIGRyYWdTdGF0ZSdzIG1fZHJhZ1NyYyB3aGVu
IHRoZSBub2RlIGlzIG9ycGhhbmVkIGJ5IHRoZSBlZGl0IGRyYWcuIFdoaWxlIHRoaXMgYmVoYXZp
b3IKKyAgICAgICAgbWF5IGRpZmZlciBmcm9tIHRoZSBzcGVjIGFuZCBvdGhlciBicm93c2Vycywg
bm90IGRlbGl2ZXJpbmcgZHJhZ2VuZCB0byB0aGUgZWRpdGluZyBob3N0IHNlZW1zIHN0cmljdGx5
IHdvcnNlIHRoYW4KKyAgICAgICAgZGlzcGF0Y2hpbmcgaXQgYXQgdGhlIHNsaWdodGx5IHdyb25n
IHRhcmdldC4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxk
LWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0
L2V2ZW50cy9tb3ZpbmctdGV4dC1zaG91bGQtZmlyZS1kcm9wLWFuZC1kcmFnZW5kLWV2ZW50cy5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyk6IERpc3BhdGNoIGRyb3AgZXZlbnQgZXZl
biB3aGVuIG1faXNIYW5kbGluZ0RyYWcgaXMgdHJ1ZSBhcyBsb25nCisgICAgICAgIGFzIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbkRIVE1MIGlzIGFuIGFjY2VwdGFibGUgYWN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBDYWxsIHVwZGF0ZURy
YWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZCBhZnRlciBpbnNlcnRpbmcKKyAgICAgICAgdGhl
IGRyYWdnZWQgY29udGVudHMuIFRoaXMgaXMgbmVjZXNzYXJ5IHdoZW4gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQgb3IgTW92ZVNlbGVjdGlvbkNvbW1hbmQgbW9kaWZpZXMKKyAgICAgICAgdGhlIHNv
dXJjZSBub2RlIHdoaWxlIGluc2VydGluZyB0aGUgZHJhZ2dlZCBjb250ZW50cy4KKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6
OnBlcmZvcm1EcmFnQW5kRHJvcCk6IENsZWFyIHRoZSBkcmFnIHN0YXRlIG9ubHkgaWYgZHJvcCBl
dmVudCdzIGRlZmF1bHQgYWN0aW9uCisgICAgICAgIHdhcyBwcmV2ZW50ZWQgc28gdGhhdCB3ZSBk
aXNwYXRjaCBkcmFnZXZlbnQgZXZlbnQgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZCk6IFVwZGF0ZSBkcmFn
U3RhdGUncyBtX2RyYWdTcmMgd2hlbiB0aGUgbm9kZQorICAgICAgICBpcyBvcnBoYW5lZC4gU2Vl
IGFib3ZlIGZvciB0aGUgcmF0aW9uYWxlLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6
CisKIDIwMTItMDEtMTIgIFdlaSBKYW1lcyAgPGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAg
ICAgQWRkIHZzbWEgaW4gVmVjdG9yTWF0aCB0byBoYW5kbGUgdmVjdG9yIHNjYWxlIG11bHRpcGx5
IGFuZCBhZGQgYW5kIHVzZSBpdCBpbiBBdWRpb0J1cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTkgKzIwMSwyMSBA
QCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZyhEcmFnRGF0CiB7CiAgICAgQVNTRVJU
KGRyYWdEYXRhKTsKICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG1fcGFnZS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSk7Ci0gICAgaWYg
KG1faXNIYW5kbGluZ0RyYWcpIHsKLSAgICAgICAgQVNTRVJUKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uICYgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uREhUTUwpOworICAgIGlmIChtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbiAmIERyYWdEZXN0aW5hdGlvbkFjdGlvbkRIVE1MKSB7CiAgICAgICAgIG1fY2xp
ZW50LT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rp
b25ESFRNTCwgZHJhZ0RhdGEpOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1haW5GcmFtZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCk7CisgICAgICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNl
OwogICAgICAgICBpZiAobWFpbkZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIC8vIFNlbmRp
bmcgYW4gZXZlbnQgY2FuIHJlc3VsdCBpbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIHZpZXcgYW5k
IHBhcnQuCiAgICAgICAgICAgICBSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQgPSBDbGlwYm9h
cmQ6OmNyZWF0ZShDbGlwYm9hcmRSZWFkYWJsZSwgZHJhZ0RhdGEsIG1haW5GcmFtZS5nZXQoKSk7
CiAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldFNvdXJjZU9wZXJhdGlvbihkcmFnRGF0YS0+ZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOwotICAgICAgICAgICAgbWFpbkZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEp
LCBjbGlwYm9hcmQuZ2V0KCkpOwotICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xp
Y3koQ2xpcGJvYXJkTnVtYik7ICAgIC8vIGludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNl
Y3VyaXR5CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+cGVyZm9ybURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBj
bGlwYm9hcmQuZ2V0KCkpOworICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXRBY2Nlc3NQb2xpY3ko
Q2xpcGJvYXJkTnVtYik7IC8vIEludmFsaWRhdGUgY2xpcGJvYXJkIGhlcmUgZm9yIHNlY3VyaXR5
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1faXNIYW5kbGluZ0RyYWcgfHwgcHJldmVudGVkRGVm
YXVsdCkgeworICAgICAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSAwOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbV9kb2N1bWVudFVuZGVyTW91c2Ug
PSAwOwotICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoKG1fZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uICYgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRWRpdCkgJiYgY29uY2x1ZGVFZGl0
RHJhZyhkcmFnRGF0YSkpIHsKQEAgLTQ3Nyw2ICs0NzksNyBAQCBib29sIERyYWdDb250cm9sbGVy
Ojpjb25jbHVkZUVkaXREcmFnKERyCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBkcmFnQ2FyZXQgPSBt
X3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+Y2FyZXRQb3NpdGlvbigpOwogICAgIG1fcGFn
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5jbGVhcigpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBkcmFnQ2FyZXQudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBSZWZQdHI8RWxlbWVudD4g
cm9vdEVkaXRhYmxlRWxlbWVudCA9IGlubmVyRnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFi
bGVFbGVtZW50KCk7CiAKICAgICAvLyBGb3IgcmFuZ2UgdG8gYmUgbnVsbCBhIFdlYktpdCBjbGll
bnQgbXVzdCBoYXZlIGRvbmUgc29tZXRoaW5nIGJhZCB3aGlsZQogICAgIC8vIG1hbnVhbGx5IGNv
bnRyb2xsaW5nIGRyYWcgYmVoYXZpb3VyCkBAIC01MTksNiArNTIyLDExIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHIKICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKG1fZG9jdW1lbnRVbmRlck1vdXNlLmdldCgp
LCBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLmdldCgpLCB0ZXh0KSwgIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpNYXRjaFN0eWxlIHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nKSk7
CiAgICAgfQogCisgICAgaWYgKHJvb3RFZGl0YWJsZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHJvb3RFZGl0YWJsZUVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCkpCisg
ICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRp
dERyYWdJZk5lZWRlZChyb290RWRpdGFibGVFbGVtZW50LmdldCgpKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTA5LDE1ICsxOTA5LDE4IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjpjYW5jZWxEcmFnQW5kRHJvcChjb24KICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCi12b2lk
IEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQsIENsaXBib2FyZCogY2xpcGJvYXJkKQorYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZv
cm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBDbGlwYm9hcmQq
IGNsaXBib2FyZCkKIHsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CisgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdl
dEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgY2xpcGJvYXJk
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+cGVy
Zm9ybURyYWdBbmREcm9wKGV2ZW50LCBjbGlwYm9hcmQpOwogICAgIH0gZWxzZSBpZiAobV9kcmFn
VGFyZ2V0LmdldCgpKQotICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJv
cEV2ZW50LCBtX2RyYWdUYXJnZXQuZ2V0KCksIGV2ZW50LCBjbGlwYm9hcmQpOwotICAgIGNsZWFy
RHJhZ1N0YXRlKCk7CisgICAgICAgIHJlc3VsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFt
ZXMoKS5kcm9wRXZlbnQsIG1fZHJhZ1RhcmdldC5nZXQoKSwgZXZlbnQsIGNsaXBib2FyZCk7Cisg
ICAgaWYgKHJlc3VsdCkKKyAgICAgICAgY2xlYXJEcmFnU3RhdGUoKTsKKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJEcmFnU3RhdGUoKQpAQCAtMjc4MSw3
ICsyNzg0LDE0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb24KICAg
ICAvLyB0aGF0IGNvbnNlY3V0aXZlIG1vdXNlbW92ZSBldmVudHMgZG9uJ3QgcmVpbml0aWF0ZSB0
aGUgZHJhZyBhbmQgZHJvcC4KICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwog
fQotICAgIAorCit2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJh
Z0lmTmVlZGVkKEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQpCit7CisgICAgLy8gSWYgaW5z
ZXJ0aW5nIHRoZSBkcmFnZ2VkIGNvbnRlbnRzIHJlbW92ZWQgdGhlIGRyYWcgc291cmNlLCB3ZSBz
dGlsbCB3YW50IHRvIGZpcmUgZHJhZ2VuZCBhdCB0aGUgcm9vdCBlZGl0YmxlIGVsZW1lbnQuCisg
ICAgaWYgKGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyAmJiAhZHJhZ1N0YXRlKCkubV9kcmFnU3JjLT5p
bkRvY3VtZW50KCkpCisgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYyA9IHJvb3RFZGl0YWJs
ZUVsZW1lbnQ7Cit9CisKIC8vIHJldHVybnMgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlICJkZWZhdWx0
IHByb2Nlc3NpbmciLCBpLmUuLCB3aGV0aGVyIGV2ZW50aGFuZGxlciBjYW5jZWxlZAogYm9vbCBF
dmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1NyY0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDggQEAg
cHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCB1cGRhdGVEcmFnQW5k
RHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBDbGlwYm9hcmQqKTsKICAgICB2b2lkIGNh
bmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIENsaXBib2FyZCopOwot
ICAgIHZvaWQgcGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIENs
aXBib2FyZCopOworICAgIGJvb2wgcGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIENsaXBib2FyZCopOworICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0
RHJhZ0lmTmVlZGVkKEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHNjaGVkdWxlSG92ZXJTdGF0ZVVwZGF0ZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0
ODk0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMDEtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgZHJvcCBldmVudCBpc24ndCBmaXJlZCBmb3IgY29udGVudEVkaXRhYmxlIGluIGVkaXQg
ZHJhZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcx
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0ZXN0cyBlbnN1cmUgbW92aW5nIHRleHQgaW4gY29udGVudGVkaXRhYmxlIHJlZ2lvbnMgZmly
ZSBkcmFnc3RhcnQsIGRyb3AsIGFuZCBkcmFnZW5kIGV2ZW50cy4KKworICAgICAgICAqIGZhc3Qv
ZXZlbnRzL21vdmluZy10ZXh0LXNob3VsZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQtZXZlbnRzLTIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tb3ZpbmctdGV4dC1z
aG91bGQtZmlyZS1kcm9wLWFuZC1kcmFnZW5kLWV2ZW50cy0yLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL21vdmluZy10ZXh0LXNob3VsZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQt
ZXZlbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvbW92aW5n
LXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMuaHRtbDogQWRkZWQuCisK
IDIwMTItMDEtMTIgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZCBtYWMtc25vd2xlb3BhcmQgcGl4ZWwgcmVzdWx0cyBmb3IgdGVzdHMgd2l0aCBzY3JvbGxi
YXJzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3ZpbmctdGV4dC1zaG91bGQtZmly
ZS1kcm9wLWFuZC1kcmFnZW5kLWV2ZW50cy0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tb3ZpbmctdGV4dC1zaG91bGQtZmlyZS1kcm9wLWFuZC1k
cmFnZW5kLWV2ZW50cy0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21vdmluZy10ZXh0LXNob3VsZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQtZXZl
bnRzLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVz
dHMgZHJhZ2dpbmcgdGV4dCB3aXRoaW4gdGhlIHNhbWUgY29udGVudGVkaXRhYmxlIGVsZW1lbnQu
IFRvIG1hbnVhbGx5IHRlc3QsIG1vdmUgdGhlIHRhcmdldCBiZWxvdyB0byB0aGUgZGVzdGluYXRp
b24uIFlvdSBzaG91bGQgc2VlIHNvdXJjZTpkcmFnc3RhcnQsIGRlc3RpbmF0aW9uOmRyb3AsIGFu
ZCBzb3VyY2U6ZHJhZ2VuZCBpbiB0aGUgbG9nLgorCitMb2c6Citzb3VyY2U6ZHJhZ3N0YXJ0Citk
ZXN0aW5hdGlvbjpkcm9wCitzb3VyY2U6ZHJhZ2VuZAorCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tb3ZpbmctdGV4dC1zaG91bGQtZmlyZS1kcm9wLWFuZC1kcmFnZW5kLWV2
ZW50cy0yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW92aW5n
LXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtMi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUt
ZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIGRyYWdn
aW5nIHRleHQgd2l0aGluIHRoZSBzYW1lIGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50LiBUbyBtYW51
YWxseSB0ZXN0LCBtb3ZlIHRoZSB0YXJnZXQgYmVsb3cgdG8gdGhlIGRlc3RpbmF0aW9uLgorWW91
IHNob3VsZCBzZWUgc291cmNlOmRyYWdzdGFydCwgZGVzdGluYXRpb246ZHJvcCwgYW5kIHNvdXJj
ZTpkcmFnZW5kIGluIHRoZSBsb2cuPC9wPgorPGRpdiBpZD0ic291cmNlIiBjb250ZW50ZWRpdGFi
bGU+PHNwYW4+RHJhZyBhbmQgZHJvcCB0aGlzIDxzcGFuIGlkPSJ0YXJnZXQiPnRhcmdldDwvc3Bh
bj4gZnJvbSBoZXJlPC9kaXY+Cis8ZGl2IGlkPSJkZXN0aW5hdGlvbiIgY29udGVudGVkaXRhYmxl
PjxzcGFuPnRvIGhlcmUsIHRoZV9kZXN0aW5hdGlvbi48L3NwYW4+PC9kaXY+Cis8cHJlIGlkPSJs
b2ciPgorTG9nOgorPC9wcmU+Cis8c2NyaXB0PgorCit2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xvZycpOwordmFyIHNvdXJjZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
b3VyY2UnKTsKK3ZhciBkZXN0aW5hdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXN0
aW5hdGlvbicpOwordmFyIGV2ZW50TG9ncyA9IFtdOworCitmdW5jdGlvbiBhdHRhY2hMb2dnZXIo
ZWxlbWVudCkgeworICAgIHZhciBsb2dnZXIgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB2
YXIgdGV4dCA9IGVsZW1lbnQuaWQgKyAnOicgKyBldmVudC50eXBlOworICAgICAgICBldmVudExv
Z3MucHVzaCh0ZXh0KTsKKyAgICAgICAgbG9nLmlubmVySFRNTCArPSB0ZXh0ICsgJ1xuJzsKKyAg
ICB9CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCBsb2dnZXIsIGZh
bHNlKTsKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCBsb2dnZXIsIGZh
bHNlKTsKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBsb2dnZXIsIGZhbHNl
KTsKK30KKworYXR0YWNoTG9nZ2VyKHNvdXJjZSk7CithdHRhY2hMb2dnZXIoZGVzdGluYXRpb24p
OworCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgc291cmNlLmZvY3VzKCk7CisgICAgdmFyIHRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICBnZXRTZWxlY3Rpb24oKS5zZWxl
Y3RBbGxDaGlsZHJlbih0YXJnZXQpOworCisgICAgZnVuY3Rpb24gbW91c2VNb3ZlVG9DZW50ZXJP
ZkVsZW1lbnQoZWxlbWVudCkgeworICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbGVt
ZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwgZWxlbWVudC5vZmZzZXRU
b3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDIpOworICAgIH0KKworICAgIGV2ZW50U2VuZGVy
LmRyYWdNb2RlID0gdHJ1ZTsKKyAgICBtb3VzZU1vdmVUb0NlbnRlck9mRWxlbWVudCh0YXJnZXQp
OworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2VuZGVyLmxlYXBGb3J3
YXJkKDUwMCk7CisgICAgbW91c2VNb3ZlVG9DZW50ZXJPZkVsZW1lbnQoZGVzdGluYXRpb24pOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKworICAgIHNvdXJjZS5zdHlsZS5kaXNwbGF5ID0g
J25vbmUnOworICAgIGRlc3RpbmF0aW9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKyAgICBs
b2cuaW5uZXJIVE1MICs9ICdcbicgKyAoZXZlbnRMb2dzLmpvaW4oJycpID09IFsnc291cmNlOmRy
YWdzdGFydCcsICdkZXN0aW5hdGlvbjpkcm9wJywgJ3NvdXJjZTpkcmFnZW5kJ10uam9pbignJykg
PyAnUEFTUycgOiAnRkFJTCcpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
b3ZpbmctdGV4dC1zaG91bGQtZmlyZS1kcm9wLWFuZC1kcmFnZW5kLWV2ZW50cy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hv
dWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJv
cC1hbmQtZHJhZ2VuZC1ldmVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKK1RoaXMgdGVzdHMgZHJhZ2dpbmcgdGV4dCB3aXRoaW4gdGhlIHNhbWUgY29udGVudGVk
aXRhYmxlIGVsZW1lbnQuIFRvIG1hbnVhbGx5IHRlc3QsIG1vdmUgdGhlIHRhcmdldCBiZWxvdyB0
byB0aGUgZGVzdGluYXRpb24uIFlvdSBzaG91bGQgc2VlIGRyYWdzdGFydCwgZHJvcCwgYW5kIGRy
YWdlbmQgaW4gdGhlIGxvZy4KKworTG9nOgorZHJhZ3N0YXJ0Citkcm9wCitkcmFnZW5kCisKK1BB
U1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdmluZy10ZXh0LXNob3VsZC1maXJl
LWRyb3AtYW5kLWRyYWdlbmQtZXZlbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbW92aW5nLXRleHQtc2hvdWxkLWZpcmUtZHJvcC1hbmQtZHJhZ2VuZC1ldmVu
dHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21vdmluZy10
ZXh0LXNob3VsZC1maXJlLWRyb3AtYW5kLWRyYWdlbmQtZXZlbnRzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRo
aXMgdGVzdHMgZHJhZ2dpbmcgdGV4dCB3aXRoaW4gdGhlIHNhbWUgY29udGVudGVkaXRhYmxlIGVs
ZW1lbnQuIFRvIG1hbnVhbGx5IHRlc3QsIG1vdmUgdGhlIHRhcmdldCBiZWxvdyB0byB0aGUgZGVz
dGluYXRpb24uCitZb3Ugc2hvdWxkIHNlZSBkcmFnc3RhcnQsIGRyb3AsIGFuZCBkcmFnZW5kIGlu
IHRoZSBsb2cuPC9wPgorPGRpdiBjb250ZW50ZWRpdGFibGU+PHNwYW4+RHJhZ19hbmRfZHJvcF90
aGlzX3RhcmdldCB0byBoZXJlLCB0aGVfZGVzdGluYXRpb24uPC9zcGFuPjwvZGl2PgorPHByZSBp
ZD0ibG9nIj4KK0xvZzoKKzwvcHJlPgorPHNjcmlwdD4KKwordmFyIGxvZyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKTsKK3ZhciBkaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdk
aXYnKTsKK3ZhciBldmVudExvZ3MgPSBbXTsKKworZnVuY3Rpb24gbG9nRXZlbnQoZXZlbnQpIHsK
KyAgICBldmVudExvZ3MucHVzaChldmVudC50eXBlKTsKKyAgICBsb2cuaW5uZXJUZXh0ICs9IGV2
ZW50LnR5cGUgKyAnXG4nOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0Jywg
bG9nRXZlbnQsIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCdkcmFnZW5kJywgbG9nRXZl
bnQsIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgbG9nRXZlbnQsIGZhbHNl
KTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKworICAgIGRpdi5mb2N1cygpOworICAgIGdldFNlbGVjdGlvbigpLmNv
bGxhcHNlKGRpdiwgMCk7CisgICAgZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdleHRlbmQnLCAnZm9y
d2FyZCcsICd3b3JkJyk7CisKKyAgICB2YXIgeSA9IGRpdi5vZmZzZXRUb3AgKyBkaXYub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5kcmFnTW9kZSA9IHRydWU7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oZGl2Lm9mZnNldExlZnQgKyBkaXYuZmlyc3RDaGlsZC5vZmZzZXRX
aWR0aCAvIDUsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLmxlYXBGb3J3YXJkKDUwMCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZGl2Lm9m
ZnNldExlZnQgKyBkaXYuZmlyc3RDaGlsZC5vZmZzZXRXaWR0aCAqIDQgLyA1LCB5KTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7CisKKyAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsg
Ly8gVGhlIHJlc3VsdGFudCB0ZXh0IHdpbGwgYmUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiBmb250
IG1ldHJpY3Mgc28gaGlkZSBpdC4KKworICAgIGxvZy5pbm5lckhUTUwgKz0gJ1xuJyArIChldmVu
dExvZ3Muam9pbignJykgPT0gWydkcmFnc3RhcnQnLCAnZHJvcCcsICdkcmFnZW5kJ10uam9pbign
JykgPyAnUEFTUycgOiAnRkFJTCcpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="123127"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>