<?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>63100</bug_id>
          
          <creation_ts>2011-06-21 15:40:47 -0700</creation_ts>
          <short_desc>Add BeforeChildren and AfterChildren to the Position&apos;s anchor types</short_desc>
          <delta_ts>2011-06-24 10:45:21 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63040</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>sullivan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>424808</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-21 15:40:47 -0700</bug_when>
    <thetext>In order to resolve the bug 63040, we need to add BeforeChildren and AfterChildren as new anchor types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424810</commentid>
    <comment_count>1</comment_count>
      <attachid>98069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-21 15:42:10 -0700</bug_when>
    <thetext>Created attachment 98069
work in progress

Here&apos;s my first attempt.  format-block-contenteditable-false.html and move-left-right.html mysteriously fail for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424943</commentid>
    <comment_count>2</comment_count>
      <attachid>98096</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-21 18:48:21 -0700</bug_when>
    <thetext>Created attachment 98096
Adds BeforeChildren/AfterChildren</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425354</commentid>
    <comment_count>3</comment_count>
      <attachid>98199</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 10:48:57 -0700</bug_when>
    <thetext>Created attachment 98199
updated after 89440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425363</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 10:56:08 -0700</bug_when>
    <thetext>The reason I&apos;d like to introduce BeforeChildren and AfterChildren anchor types now is to ease the pain to transition from legacy editing positions to new (non-legacy) editing positions.

Because old legacy positions were almost always anchored before/after nodes, the editing code in general isn&apos;t good at supporting a position which hangs off of a non-text node with an offset.  Adding BeforeChildren and AfterChildren, and restricting nodes that can be used for OffsetInAnchor to be text nodes will make it easier for us to mitigate this issue. (I&apos;m also going to add a new constructor that takes Text* and offset to Position).

Once Text*, offset constructor and the patch for this bug is landed, then I can start removing places where we instantiate positions that are offsets in non-text node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425444</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 12:00:10 -0700</bug_when>
    <thetext>Can someone review this patch?  It&apos;s really important to get these anchor types be added to proceed our refactoring process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425545</commentid>
    <comment_count>6</comment_count>
      <attachid>98199</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-22 13:47:52 -0700</bug_when>
    <thetext>Comment on attachment 98199
updated after 89440

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

&gt; Source/WebCore/dom/Position.cpp:371
&gt; +    // FIXME: Position after anchor shouldn&apos;t be considered as at the first editing position for node
&gt; +    // since that position resides outside of the node.

Perhaps.  This was done to match old behavior of Position(img, 0), etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425548</commentid>
    <comment_count>7</comment_count>
      <attachid>98199</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 13:49:28 -0700</bug_when>
    <thetext>Comment on attachment 98199
updated after 89440

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

&gt;&gt; Source/WebCore/dom/Position.cpp:371
&gt;&gt; +    // since that position resides outside of the node.
&gt; 
&gt; Perhaps.  This was done to match old behavior of Position(img, 0), etc.

Right.  We&apos;d have to fix it at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425944</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-22 21:39:54 -0700</bug_when>
    <thetext>Now that the bug 63181 has been fixed, this is the only blocker for the bug 63040 - &quot;positionIsOffsetInAnchor should only accept text nodes&quot;.

Once this patch is landed, we can start removing positions that are offsets in the middle of a non-text nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426586</commentid>
    <comment_count>9</comment_count>
      <attachid>98199</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-06-23 16:12:36 -0700</bug_when>
    <thetext>Comment on attachment 98199
updated after 89440

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

Overall it looks good. Are all the editing tests passing?

&gt; Source/WebCore/ChangeLog:19
&gt; +        the offset in the anchor node for AfterChildren.

I believe here it should be &quot;the last offset&quot;

&gt; Source/WebCore/ChangeLog:25
&gt; +        (WebCore::Position::computeNodeAfterPosition): Returns the first child of the anchor node for BeforeChildren

And for AfterChildren ?

&gt; Source/WebCore/dom/Position.cpp:351
&gt; +    // since that position resides outside of the node.

What would be the fix here? Why do you return true then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426594</commentid>
    <comment_count>10</comment_count>
      <attachid>98199</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-23 16:17:57 -0700</bug_when>
    <thetext>Comment on attachment 98199
updated after 89440

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        the offset in the anchor node for AfterChildren.
&gt; 
&gt; I believe here it should be &quot;the last offset&quot;

Oops, right.  Will fix.

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        (WebCore::Position::computeNodeAfterPosition): Returns the first child of the anchor node for BeforeChildren
&gt; 
&gt; And for AfterChildren ?

and null for AfterChildren.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426595</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-23 16:18:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 98199 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98199&amp;action=review
&gt; 
&gt; Overall it looks good. Are all the editing tests passing?

Yes, all editing tests passed at least when I ran them last night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426957</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-24 10:45:05 -0700</bug_when>
    <thetext>Committed r89683: &lt;http://trac.webkit.org/changeset/89683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426958</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-24 10:45:21 -0700</bug_when>
    <thetext>Thanks for the review!  I&apos;m so excited to land this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98069</attachid>
            <date>2011-06-21 15:42:10 -0700</date>
            <delta_ts>2011-06-21 18:48:18 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip63100</filename>
            <type>text/plain</type>
            <size>11930</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCShyZXZpc2lvbiA4OTM2MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQAogcHVi
bGljOgogICAgIGVudW0gQW5jaG9yVHlwZSB7CiAgICAgICAgIFBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvciwKKyAgICAgICAgUG9zaXRpb25Jc0JlZm9yZUFuY2hvciwKICAgICAgICAgUG9zaXRpb25J
c0FmdGVyQW5jaG9yLAotICAgICAgICBQb3NpdGlvbklzQmVmb3JlQW5jaG9yCisgICAgICAgIFBv
c2l0aW9uSXNCZWZvcmVDaGlsZHJlbiwKKyAgICAgICAgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4s
CiAgICAgfTsKIAogICAgIFBvc2l0aW9uKCkKQEAgLTkyLDcgKzk0LDcgQEAKICAgICAvLyBOZXcg
Y29kZSBzaG91bGQgbm90IHVzZSB0aGlzIGZ1bmN0aW9uLgogICAgIGludCBkZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pc0xlZ2FjeUVkaXRpbmdQ
b3NpdGlvbiB8fCBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yKQorICAgICAg
ICBpZiAobV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiB8fCAobV9hbmNob3JUeXBlICE9IFBvc2l0
aW9uSXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRy
ZW4pKQogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgICByZXR1cm4gb2Zmc2V0
Rm9yUG9zaXRpb25BZnRlckFuY2hvcigpOwogICAgIH0KQEAgLTE4OSw3ICsxOTEsNyBAQAogICAg
IC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBwbGFjZXMgaW4gZWRpdGluZyB3aWxsIHRyZWF0
IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUgYW5jaG9yIgogICAgIC8vIGFuZCBtX29mZnNl
dCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9kZSIuICBTZWUgcGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50IGZvciBtb3JlIGluZm8uCiAgICAgaW50IG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1f
YW5jaG9yVHlwZSA6IDI7CisgICAgdW5zaWduZWQgbV9hbmNob3JUeXBlIDogMzsKICAgICBib29s
IG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwogfTsKIApAQCAtMjQ1LDEyICsyNDcsMTgg
QEAKIC8vIGZpcnN0UG9zaXRpb25Jbk5vZGUgYW5kIGxhc3RQb3NpdGlvbkluTm9kZSByZXR1cm4g
cGFyZW50LWFuY2hvcmVkIHBvc2l0aW9ucywgbGFzdFBvc2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlv
biBpcyBPKG4pIGR1ZSB0byBjaGlsZE5vZGVDb3VudCgpCiBpbmxpbmUgUG9zaXRpb24gZmlyc3RQ
b3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2RlKQogewotICAgIHJldHVybiBQb3NpdGlvbihh
bmNob3JOb2RlLCAwLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBp
ZiAoYW5jaG9yTm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oYW5j
aG9yTm9kZSwgMCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0aW9u
SXNCZWZvcmVDaGlsZHJlbik7CiB9CiAKIGlubGluZSBQb3NpdGlvbiBsYXN0UG9zaXRpb25Jbk5v
ZGUoTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwg
bGFzdE9mZnNldEluTm9kZShhbmNob3JOb2RlKSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvcik7CisgICAgaWYgKGFuY2hvck5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0
dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIGxhc3RPZmZzZXRJbk5vZGUoYW5jaG9yTm9kZSksIFBv
c2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIGVsc2UKKyAgICAgICAgcmV0
dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJl
bik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAkocmV2aXNpb24gODkzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDggQEAKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBzd2l0Y2ggKGFuY2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUNo
aWxkcmVuOgorICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CiAgICAgY2FzZSBQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3I6CiAgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUuZ2V0KCk7
CiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yOgpAQCAtMTQyLDYgKzE0NCwxMCBAQAog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAoYW5jaG9yVHlwZSgpKSB7CisgICAgY2Fz
ZSBQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2Ug
UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgICAgIHJldHVybiBsYXN0T2Zmc2V0SW5Ob2Rl
KG1fYW5jaG9yTm9kZS5nZXQoKSk7CiAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6
CiAgICAgICAgIHJldHVybiBzdGQ6Om1pbihsYXN0T2Zmc2V0SW5Ob2RlKG1fYW5jaG9yTm9kZS5n
ZXQoKSksIG1fb2Zmc2V0KTsKICAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CkBAIC0x
NTUsNyArMTYxLDcgQEAKIAogaW50IFBvc2l0aW9uOjpvZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5j
aG9yKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRl
ckFuY2hvcik7CisgICAgQVNTRVJUKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNo
b3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKTsKICAgICBBU1NF
UlQoIW1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24pOwogICAgIHJldHVybiBsYXN0T2Zmc2V0Rm9y
RWRpdGluZyhtX2FuY2hvck5vZGUuZ2V0KCkpOwogfQpAQCAtMTY4LDEyICsxNzQsMTMgQEAKICAg
ICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IG9ubHkgYmUgbmVjZXNzYXJ5IGZvciBsZWdhY3kgcG9zaXRpb25zLCBidXQgaXMgYWxzbyBuZWVk
ZWQgZm9yIHBvc2l0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIFRhYmxlcwotICAgIGlmIChtX29mZnNl
dCA8PSAwICYmIG1fYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpIHsKKyAgICBp
ZiAobV9vZmZzZXQgPD0gMCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hv
ciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7CiAgICAgICAg
IGlmIChtX2FuY2hvck5vZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChlZGl0
aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudCht
X2FuY2hvck5vZGUuZ2V0KCkpKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50
QmVmb3JlTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwotICAgICAgICByZXR1cm4gZmlyc3RQb3Np
dGlvbkluT3JCZWZvcmVOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBQ
b3NpdGlvbihtX2FuY2hvck5vZGUuZ2V0KCksIDAsIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7
CiAgICAgfQotICAgIGlmICghbV9hbmNob3JOb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSAmJiAo
bV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9vZmZzZXQpID09IG1fYW5jaG9yTm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICBp
ZiAoIW1fYW5jaG9yTm9kZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkKKyAgICAgICAgJiYgKG1fYW5j
aG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0
aW9uSXNBZnRlckNoaWxkcmVuIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0g
bV9hbmNob3JOb2RlLT5jaGlsZE5vZGVDb3VudCgpKQogICAgICAgICAmJiAoZWRpdGluZ0lnbm9y
ZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JO
b2RlLmdldCgpKSkKICAgICAgICAgJiYgY29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIHJldHVy
biBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CkBAIC0xODgs
OCArMTk1LDEyIEBACiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChhbmNob3JUeXBl
KCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJuIG1f
YW5jaG9yTm9kZS0+bGFzdENoaWxkKCk7CiAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3I6Ci0gICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPmNoaWxkTm9kZShtX29mZnNldCAtIDEp
OyAvLyAtMSBjb252ZXJ0cyB0byBjaGlsZE5vZGUoKHVuc2lnbmVkKS0xKSBhbmQgcmV0dXJucyBu
dWxsLgorICAgIHJldHVybiBtX2FuY2hvck5vZGUtPmNoaWxkTm9kZShtX29mZnNldCAtIDEpOyAv
LyAtMSBjb252ZXJ0cyB0byBjaGlsZE5vZGUoKHVuc2lnbmVkKS0xKSBhbmQgcmV0dXJucyBudWxs
LgogICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hvcjoKICAgICAgICAgcmV0dXJuIG1fYW5j
aG9yTm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNo
b3I6CkBAIC0yMDUsNiArMjE2LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNo
IChhbmNob3JUeXBlKCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAg
ICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+Zmlyc3RDaGlsZCgpOworICAgIGNhc2UgUG9zaXRp
b25Jc0FmdGVyQ2hpbGRyZW46CisgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgUG9zaXRpb25J
c09mZnNldEluQW5jaG9yOgogICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5jaGlsZE5vZGUo
bV9vZmZzZXQpOwogICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hvcjoKQEAgLTMzMSwxNCAr
MzQ2LDE4IEBACiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNCZWZvcmVBbmNob3IgfHwgbV9vZmZz
ZXQgPD0gMDsKKyAgICAvLyBGSVhNRTogUG9zaXRpb24gYmVmb3JlIGFuY2hvciBzaG91bGRuJ3Qg
YmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGluZyBwb3NpdGlvbiBmb3Igbm9kZQor
ICAgIC8vIHNpbmNlIHRoYXQgcG9zaXRpb24gcmVzaWRlcyBvdXRzaWRlIG9mIHRoZSBub2RlLgor
ICAgIHJldHVybiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yICYmIG1fYW5j
aG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiAmJiBtX29mZnNldCA8PSAwOwogfQog
CiBib29sIFBvc2l0aW9uOjphdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2RlKCkgY29uc3QKIHsK
ICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2Fu
Y2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IG1fb2Zmc2V0ID49IGxhc3RPZmZz
ZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOworICAgIC8vIEZJWE1FOiBQb3NpdGlvbiBh
ZnRlciBhbmNob3Igc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQgYXMgYXQgdGhlIGZpcnN0IGVkaXRp
bmcgcG9zaXRpb24gZm9yIG5vZGUKKyAgICAvLyBzaW5jZSB0aGF0IHBvc2l0aW9uIHJlc2lkZXMg
b3V0c2lkZSBvZiB0aGUgbm9kZS4KKyAgICByZXR1cm4gbV9hbmNob3JUeXBlID09IFBvc2l0aW9u
SXNBZnRlckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4g
fHwgbV9vZmZzZXQgPj0gbGFzdE9mZnNldEZvckVkaXRpbmcoZGVwcmVjYXRlZE5vZGUoKSk7CiB9
CiAKIC8vIEEgcG9zaXRpb24gaXMgY29uc2lkZXJlZCBhdCBlZGl0aW5nIGJvdW5kYXJ5IGlmIG9u
ZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CkBAIC0xMjU3LDE1ICsxMjc2LDE5IEBACiAgICAg
aWYgKG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24pCiAgICAgICAgIGZwdXRzKCJsZWdhY3ksICIs
IHN0ZGVycik7CiAgICAgc3dpdGNoIChhbmNob3JUeXBlKCkpIHsKKyAgICBjYXNlIFBvc2l0aW9u
SXNCZWZvcmVDaGlsZHJlbjoKKyAgICAgICAgZnB1dHMoImJlZm9yZUNoaWxkcmVuLCAiLCBzdGRl
cnIpOworICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgICAgIGZwdXRzKCJh
ZnRlckNoaWxkcmVuLCAiLCBzdGRlcnIpOwogICAgIGNhc2UgUG9zaXRpb25Jc09mZnNldEluQW5j
aG9yOgotICAgICAgICBmcHV0cygib2Zmc2V0Iiwgc3RkZXJyKTsKKyAgICAgICAgZnB1dHMoIm9m
ZnNldCwgIiwgc3RkZXJyKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQb3NpdGlvbklzQmVm
b3JlQW5jaG9yOgorICAgICAgICBmcHV0cygiYmVmb3JlLCAiLCBzdGRlcnIpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgZnB1dHMoImFm
dGVyIiwgc3RkZXJyKTsKKyAgICAgICAgZnB1dHMoImFmdGVyLCAiLCBzdGRlcnIpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVBbmNob3I6Ci0gICAgICAgIGZwdXRz
KCJiZWZvcmUiLCBzdGRlcnIpOwotICAgICAgICBicmVhazsKICAgICB9CiAgICAgZnByaW50Zihz
dGRlcnIsICIsIG9mZnNldDolZFxuIiwgbV9vZmZzZXQpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDg5MzYx
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2MCwxMCArMzYwLDE4IEBACiAgICAgaWYgKCFpc1RhYlNwYW5UZXh0
Tm9kZShwb3MuYW5jaG9yTm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHBvczsKIAotICAgIGlmIChw
b3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpCisgICAg
c3dpdGNoIChwb3MuYW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25J
c0JlZm9yZUNoaWxkcmVuOgorICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxk
cmVuOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHBvczsK
KyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CisgICAgICAg
IHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShwb3MuYW5jaG9yTm9kZSgpKTsKKyAg
ICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CiAgICAgICAgIHJldHVybiBw
b3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHBvcy5hbmNob3JOb2RlKCkpOwotICAgIGlmIChwb3Mu
YW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKQotICAgICAg
ICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUocG9zLmFuY2hvck5vZGUoKSk7Cisg
ICAgfQogCiAgICAgTm9kZSogdGFiU3BhbiA9IHRhYlNwYW5Ob2RlKHBvcy5jb250YWluZXJOb2Rl
KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDg5MzYxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE5LDYgKzMx
OSwxNCBAQAogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IHN3aXRjaCAocG9zaXRpb24uYW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgICAgICBpZiAocG9zaXRpb24uY29udGFpbmVyTm9k
ZSgpID09IG5vZGUpCisgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRCZWZv
cmVOb2RlKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgaWYgKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSA9
PSBub2RlKQorICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2Rl
KG5vZGUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zm
c2V0SW5BbmNob3I6CiAgICAgICAgIGlmIChwb3NpdGlvbi5jb250YWluZXJOb2RlKCkgPT0gbm9k
ZS0+cGFyZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbi5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSkgPiBub2RlLT5ub2RlSW5kZXgoKSkKICAgICAgICAgICAgIHBvc2l0
aW9uLm1vdmVUb09mZnNldChwb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAtIDEpOwpA
QCAtNDk4LDExICs1MDYsMTIgQEAKICAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dE5v
ZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgLy8gaWYg
d2UganVzdCByZW1vdmVkIGEgbm9kZSBmcm9tIHRoZSBlbmQgY29udGFpbmVyLCB1cGRhdGUgZW5k
IHBvc2l0aW9uIHNvIHRoZQogICAgICAgICAgICAgICAgIC8vIGNoZWNrIGFib3ZlIHdpbGwgd29y
awotICAgICAgICAgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgPT0gbV9kb3duc3RyZWFt
RW5kLmRlcHJlY2F0ZWROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVQb3NpdGlvbkZv
ck5vZGVSZW1vdmFsKG5vZGUuZ2V0KCksIG1fZG93bnN0cmVhbUVuZCk7CisvKiAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpID09IG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVk
Tm9kZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2Rvd25zdHJlYW1FbmQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5ub2RlSW5kZXgoKSA8ICh1bnNpZ25lZCltX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1fZG93bnN0cmVhbUVuZC5tb3ZlVG9P
ZmZzZXQobV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSAxKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSovCiAgICAgICAgICAgICAgICAgcmVt
b3ZlTm9kZShub2RlLmdldCgpKTsKICAgICAgICAgICAgICAgICBub2RlID0gbmV4dE5vZGUuZ2V0
KCk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNTQyLDcgKzU1MSw3IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbi0+bm9kZUluZGV4KCkgKyAxOwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNoaWxkcmVuSW5SYW5nZSht
X2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSwgb2Zmc2V0LCBtX2Rvd25zdHJlYW1FbmQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZG93bnN0
cmVhbUVuZC5tb3ZlVG9PZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgbV9kb3du
c3RyZWFtRW5kID0gUG9zaXRpb24obV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCksIG9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lvbiA4
OTM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQxLDEwICs1NDEsMTcgQEAKICAgICAvLyBXZSBjYW5vbmljYWxpemUg
dG8gdGhlIGZpcnN0IG9mIHR3byBlcXVpdmFsZW50IGNhbmRpZGF0ZXMsIGJ1dCB0aGUgc2Vjb25k
IG9mIHRoZSB0d28gY2FuZGlkYXRlcwogICAgIC8vIGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIGlu
c2lkZSB0aGUgdGV4dCBub2RlIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhZnRlciB0aGlzIHZp
c2libGUgcG9zaXRpb24uCiAgICAgUG9zaXRpb24gcG9zID0gbV9kZWVwUG9zaXRpb24uZG93bnN0
cmVhbSgpOwotICAgIE5vZGUqIG5vZGUgPSBwb3MuY29udGFpbmVyTm9kZSgpOwotICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNUZXh0Tm9kZSgpIHx8IHBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRp
b246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikKKyAgICBpZiAoIXBvcy5jb250YWluZXJOb2RlKCkg
fHwgIXBvcy5jb250YWluZXJOb2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgQVNTRVJUKHBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IgfHwgcG9zLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKTsKKyAgICBzd2l0Y2ggKHBvcy5hbmNob3JUeXBlKCkpIHsKKyAgICBjYXNlIFBv
c2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3Np
dGlvbklzQWZ0ZXJBbmNob3I6CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFu
Y2hvcjoKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46CisgICAg
ICAgIHJldHVybiAwOworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hv
cjoKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nh
c3Q8VGV4dCo+KHBvcy5jb250YWluZXJOb2RlKCkpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHBv
cy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciA/IHBv
cy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA6IDA7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4
dE5vZGUtPmxlbmd0aCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98096</attachid>
            <date>2011-06-21 18:48:21 -0700</date>
            <delta_ts>2011-06-22 10:48:52 -0700</delta_ts>
            <desc>Adds BeforeChildren/AfterChildren</desc>
            <filename>bug-63100-20110621184820.patch</filename>
            <type>text/plain</type>
            <size>17514</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5Mzk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDYtMjEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEJlZm9yZUNoaWxkcmVuIGFuZCBBZnRlckNoaWxkcmVuIHRv
IHRoZSBQb3NpdGlvbidzIGFuY2hvciB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMxMDAKKworICAgICAgICBBZGRlZCBQb3NpdGlvbklzQmVm
b3JlQ2hpbGRyZW4gYW5kIFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHRvIFBvc2l0aW9uOjpBbmNo
b3JUeXBlIGFuZCBkZXBsb3llZCB0aGVtIGluCisgICAgICAgIGZpcnN0UG9zaXRpb25Jbk5vZGUg
YW5kIGxhc3RQb3NpdGlvbkluTm9kZS4KKworICAgICAgICBUaGVzZSBuZXcgdHlwZXMgb2YgcG9z
aXRpb25zIHdpbGwgbGV0IHVzIGV4cHJlc3MgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBwb3NpdGlv
bnMgaW4gYSBub24tdGV4dCBub2RlIGluIE8oMSkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJl
Y2F1c2UgdGhlcmUgaXMgbm8gbmV3IGJlaGF2aW9yIG9yIGZlYXR1cmUgZXhwb3NlZC4KKworICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6UG9z
aXRpb24pOiBBc3NlcnQgdGhhdCB0aGUgYW5jaG9yIHR5cGUgaXMgbm90IEJlZm9yZUNoaWxkcmVu
IGFuZCBBZnRlckNoaWxkcmVuIGZvciB0ZXh0IG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OmNvbnRhaW5lck5vZGUpOiBGb3IgQmVmb3JlQ2hpbGRyZW4gYW5kIEFmdGVyQ2hpbGRy
ZW4sIHRoZSBhbmNob3Igbm9kZSBpcyB0aGUgY29udGFpbmVyIG5vZGUuCisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSk6IFRoZSBvZmZzZXQg
aW4gdGhlIGNvbnRhaW5lciBub2RlIGlzIDAgZm9yIEJlZm9yZUNoaWxkcmVuIGFuZAorICAgICAg
ICB0aGUgb2Zmc2V0IGluIHRoZSBhbmNob3Igbm9kZSBmb3IgQWZ0ZXJDaGlsZHJlbi4KKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpvZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5jaG9yKTogQ2Fs
bGVkIGJ5IGRlcHJlY2F0ZWROb2RlOyB0aGUgYW5jaG9yIHR5cGUgY291bGQgYmUgQWZ0ZXJDaGls
ZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQpOiBJZiB0aGUgYW5jaG9yIG5vZGUgaXMgYmVmb3JlIG9yIGFmdGVyIGNoaWxkcmVuLCB0aGVu
IGRvIHRoZSB0cmljaworICAgICAgICBmb3IgdGFibGUgYW5kIGlnbm9yZWQgY29udGVudHMgbGlr
ZSBiZWZvcmUgb3IgYWZ0ZXIgYW5jaG9yLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmNv
bXB1dGVOb2RlQmVmb3JlUG9zaXRpb24pOiBSZXR1cm5zIG51bGwgZm9yIEJlZm9yZUNoaWxkcmVu
IGFuZCByZXR1cm5zIHRoZSBsYXN0IGNoaWxkIG9mCisgICAgICAgIHRoZSBhbmNob3Igbm9kZSBm
b3IgQWZ0ZXJDaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpjb21wdXRlTm9k
ZUFmdGVyUG9zaXRpb24pOiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgYW5jaG9yIG5v
ZGUgZm9yIEJlZm9yZUNoaWxkcmVuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6YXRGaXJz
dEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOiBBIHBvc2l0aW9uIGlzIGF0IHRoZSBsYXN0IGVkaXRp
bmcgcG9zaXRpb24gaWYgdGhlIGFuY2hvciB0eXBlCisgICAgICAgIGlzIEJlZm9yZUNoaWxkcmVu
LCBvciB0aGUgYW5jaG9yIHR5cGUgaXMgQWZ0ZXJDaGlsZHJlbiBvciBBZnRlckFuY2hvciBhbmQg
dGhlIGFuY2hvciBkb2Vzbid0IGhhdmUgYW55IGNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246OmF0TGFzdEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOiBBIHBvc2l0aW9uIGlzIGF0
IHRoZSBsYXN0IGVkaXRpbmcgcG9zaXRpb24gaWYgdGhlIGFuY2hvciB0eXBlCisgICAgICAgIGlz
IEFmdGVyQ2hpbGRyZW4uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6c2hvd0FuY2hvclR5
cGVBbmRPZmZzZXQpOiBTdXBwb3J0cyBCZWZvcmVDaGlsZHJlbiBhbmQgQWZ0ZXJDaGlsZHJlbi4K
KyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpk
ZXByZWNhdGVkRWRpdGluZ09mZnNldCk6IFJldHVybnMgbV9vZmZzZXQgaWYgdGhlIGFuY2hvciB0
eXBlIGlzIEJlZm9yZUNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbklu
Tm9kZSk6IFJldHVybnMgYSBwb3NpdGlvbiBpbiBvZmZzZXQgZm9yIGEgdGV4dCBub2RlLiBPdGhl
cndpc2UgcmV0dXJucyBCZWZvcmVDaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Omxhc3RQb3Np
dGlvbkluTm9kZSk6IFJldHVybnMgYSBwb3NpdGlvbiBpbiBvZmZzZXQgZm9yIGEgdGV4dCBub2Rl
LiBPdGhlcndpc2UgcmV0dXJucyBBZnRlckNoaWxkcmVuLgorICAgICAgICAqIGVkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6OnBvc2l0aW9uT3V0c2lkZVRhYlNwYW4pOiBTaW5jZSB0aGUgYW5jaG9yIG5vZGUgd2Fz
IGEgdGV4dCBub2RlLAorICAgICAgICB0aGUgYW5jaG9yIHR5cGUgc2hvdWxkbid0IGJlIEJlZm9y
ZUNoaWxkcmVuIG9yIEFmdGVyQ2hpbGRyZW4uCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9k
ZVJlbW92YWwpOiBTdXBwb3J0cyBCZWZvcmVDaGlsZHJlbiBhbmQgQWZ0ZXJDaGlsZHJlbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxl
dGUpOiBDYWxscyB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsIG9uIG1fZG93bnN0cmVtRW5k
CisgICAgICAgIHdoZW4gaXRzIGFuY2hvciBub2RlIGlzIHJlbW92ZWQgaW5zdGVhZCBvZiBtYW51
YWxseSB1cGRhdGluZyB0aGUgb2Zmc2V0OyBhbHNvIGF2b2lkIGNhbGxpbmcgbW92ZVRvT2Zmc2V0
CisgICAgICAgIG9uIEJlZm9yZUNoaWxkcmVuIG9yIEFmdGVyQ2hpbGRyZW4gcG9zaXRpb24uCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZSk6IFNpbmNlIGxhc3RQYXJhZ3JhcGhJ
bkJsb2NrTm9kZSBpcyB1c2VkIHRvIGluc2VydCBhIHBsYWNlaG9sZGVyCisgICAgICAgIGFmdGVy
IHBhcmFncmFwaHMgYmVsb3cgdGhlIGJsb2NrIGlzIG1vdmVkIGludG8sIGl0IG5lZWRzIHRvIGJl
IHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY3VycmVudCBsYXN0IGNoaWxkIGluCisgICAgICAgIHRo
ZSBibG9jayBpbnN0ZWFkIG9mIGFmdGVyIGNoaWxkcmVuIGluIHRoZSBibG9jazsgb3RoZXJ3aXNl
IHRoZSBwb3NpdGlvbiB3aWxsIG1vdmUgdG8gdGhlIGVuZCBvZiBibG9jay4KKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb246OmNoYXJhY3RlckFmdGVyKTogU2luY2UgdGhlIGNvbnRhaW5lciBub2RlIGlzIG5ldmVy
IGEgdGV4dCBmb3IgcG9zaXRpb24gYmVmb3JlL2FmdGVyCisgICAgICAgIGNoaWxkcmVuIG9yIGJl
Zm9yZS9hZnRlciBhbmNob3IsIGp1c3QgcmV0dXJuIG51bGwgZm9yIHRoZXNlIGFuY2hvciB0eXBl
cy4KKwogMjAxMS0wNi0yMSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAkocmV2aXNpb24gODkzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNz
UmVmUHRyPE5vZGU+IGFuY2gKIHsKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNo
b3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAgICAgQVNTRVJUKGFuY2hvclR5cGUgIT0gUG9zaXRp
b25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBBU1NFUlQoISgoYW5jaG9yVHlwZSA9PSBQb3NpdGlv
bklzQmVmb3JlQ2hpbGRyZW4gfHwgYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJl
bikgJiYgbV9hbmNob3JOb2RlLT5pc1RleHROb2RlKCkpKTsKIH0KIAogUG9zaXRpb246OlBvc2l0
aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaG9yTm9kZSwgaW50IG9mZnNldCwgQW5jaG9yVHlwZSBh
bmNob3JUeXBlKQpAQCAtMTI2LDYgKzEyNyw4IEBAIE5vZGUqIFBvc2l0aW9uOjpjb250YWluZXJO
b2RlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKGFuY2hvclR5cGUo
KSkgeworICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgIGNhc2UgUG9zaXRp
b25Jc0FmdGVyQ2hpbGRyZW46CiAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6CiAg
ICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUuZ2V0KCk7CiAgICAgY2FzZSBQb3NpdGlvbklzQmVm
b3JlQW5jaG9yOgpAQCAtMTQyLDYgKzE0NSwxMCBAQCBpbnQgUG9zaXRpb246OmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChhbmNob3JU
eXBlKCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJu
IGxhc3RPZmZzZXRJbk5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKICAgICBjYXNlIFBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvcjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGxhc3RPZmZzZXRJbk5v
ZGUobV9hbmNob3JOb2RlLmdldCgpKSwgbV9vZmZzZXQpOwogICAgIGNhc2UgUG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvcjoKQEAgLTE1NSw3ICsxNjIsNyBAQCBpbnQgUG9zaXRpb246OmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vCiAKIGludCBQb3NpdGlvbjo6b2Zmc2V0Rm9yUG9zaXRpb25BZnRlckFu
Y2hvcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0
ZXJBbmNob3IpOworICAgIEFTU0VSVChtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5j
aG9yIHx8IG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbik7CiAgICAgQVNT
RVJUKCFtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKTsKICAgICByZXR1cm4gbGFzdE9mZnNldEZv
ckVkaXRpbmcobV9hbmNob3JOb2RlLmdldCgpKTsKIH0KQEAgLTE2OCwxMiArMTc1LDEzIEBAIFBv
c2l0aW9uIFBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWwKICAgICAgICAgcmV0dXJuIFBv
c2l0aW9uKCk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgbmVjZXNz
YXJ5IGZvciBsZWdhY3kgcG9zaXRpb25zLCBidXQgaXMgYWxzbyBuZWVkZWQgZm9yIHBvc2l0aW9u
cyBiZWZvcmUgYW5kIGFmdGVyIFRhYmxlcwotICAgIGlmIChtX29mZnNldCA8PSAwICYmIG1fYW5j
aG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpIHsKKyAgICBpZiAobV9vZmZzZXQgPD0g
MCAmJiAobV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5
cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pKSB7CiAgICAgICAgIGlmIChtX2FuY2hvck5v
ZGUtPm5vblNoYWRvd0JvdW5kYXJ5UGFyZW50Tm9kZSgpICYmIChlZGl0aW5nSWdub3Jlc0NvbnRl
bnQobV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0
KCkpKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShtX2Fu
Y2hvck5vZGUuZ2V0KCkpOwotICAgICAgICByZXR1cm4gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBQb3NpdGlvbihtX2FuY2hv
ck5vZGUuZ2V0KCksIDAsIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiAgICAgfQotICAgIGlm
ICghbV9hbmNob3JOb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSAmJiAobV9hbmNob3JUeXBlID09
IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQp
ID09IG1fYW5jaG9yTm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKKyAgICBpZiAoIW1fYW5jaG9yTm9k
ZS0+b2Zmc2V0SW5DaGFyYWN0ZXJzKCkKKyAgICAgICAgJiYgKG1fYW5jaG9yVHlwZSA9PSBQb3Np
dGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxk
cmVuIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gbV9hbmNob3JOb2RlLT5j
aGlsZE5vZGVDb3VudCgpKQogICAgICAgICAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgaXNUYWJsZUVsZW1lbnQobV9hbmNob3JOb2RlLmdldCgpKSkKICAg
ICAgICAgJiYgY29udGFpbmVyTm9kZSgpKSB7CiAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFy
ZW50QWZ0ZXJOb2RlKG1fYW5jaG9yTm9kZS5nZXQoKSk7CkBAIC0xODgsNiArMTk2LDEwIEBAIE5v
ZGUqIFBvc2l0aW9uOjpjb21wdXRlTm9kZUJlZm9yZVBvc2l0aW8KICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBzd2l0Y2ggKGFuY2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9y
ZUNoaWxkcmVuOgorICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckNo
aWxkcmVuOgorICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5sYXN0Q2hpbGQoKTsKICAgICBj
YXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9k
ZS0+Y2hpbGROb2RlKG1fb2Zmc2V0IC0gMSk7IC8vIC0xIGNvbnZlcnRzIHRvIGNoaWxkTm9kZSgo
dW5zaWduZWQpLTEpIGFuZCByZXR1cm5zIG51bGwuCiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yOgpAQCAtMjA1LDYgKzIxNywxMCBAQCBOb2RlKiBQb3NpdGlvbjo6Y29tcHV0ZU5vZGVB
ZnRlclBvc2l0aW9uCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoIChhbmNob3JUeXBl
KCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJu
IG1fYW5jaG9yTm9kZS0+Zmlyc3RDaGlsZCgpOworICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW46CisgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgUG9zaXRpb25Jc09mZnNldEluQW5j
aG9yOgogICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5jaGlsZE5vZGUobV9vZmZzZXQpOwog
ICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUFuY2hvcjoKQEAgLTMzMSwxNCArMzQ3LDI5IEBAIGJv
b2wgUG9zaXRpb246OmF0Rmlyc3RFZGl0aW5nUG9zaXRpb25Gb3IKIHsKICAgICBpZiAoaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2FuY2hvclR5cGUgPT0gUG9z
aXRpb25Jc0JlZm9yZUFuY2hvciB8fCBtX29mZnNldCA8PSAwOworICAgIC8vIEZJWE1FOiBQb3Np
dGlvbiBiZWZvcmUgYW5jaG9yIHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGFzIGF0IHRoZSBmaXJz
dCBlZGl0aW5nIHBvc2l0aW9uIGZvciBub2RlCisgICAgLy8gc2luY2UgdGhhdCBwb3NpdGlvbiBy
ZXNpZGVzIG91dHNpZGUgb2YgdGhlIG5vZGUuCisgICAgc3dpdGNoIChtX2FuY2hvclR5cGUpIHsK
KyAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKKyAgICAgICAgcmV0dXJuIG1fb2Zm
c2V0IDw9IDA7CisgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46CisgICAgY2FzZSBQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFBv
c2l0aW9uSXNBZnRlckNoaWxkcmVuOgorICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQW5jaG9yOgor
ICAgICAgICByZXR1cm4gIWxhc3RPZmZzZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkpOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgUG9zaXRpb246OmF0TGFzdEVkaXRpbmdQb3NpdGlvbkZvck5vZGUoKSBjb25zdAogewog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fYW5j
aG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9vZmZzZXQgPj0gbGFzdE9mZnNl
dEZvckVkaXRpbmcoZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgLy8gRklYTUU6IFBvc2l0aW9uIGFm
dGVyIGFuY2hvciBzaG91bGRuJ3QgYmUgY29uc2lkZXJlZCBhcyBhdCB0aGUgZmlyc3QgZWRpdGlu
ZyBwb3NpdGlvbiBmb3Igbm9kZQorICAgIC8vIHNpbmNlIHRoYXQgcG9zaXRpb24gcmVzaWRlcyBv
dXRzaWRlIG9mIHRoZSBub2RlLgorICAgIHJldHVybiBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25J
c0FmdGVyQW5jaG9yIHx8IG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiB8
fCBtX29mZnNldCA+PSBsYXN0T2Zmc2V0Rm9yRWRpdGluZyhkZXByZWNhdGVkTm9kZSgpKTsKIH0K
IAogLy8gQSBwb3NpdGlvbiBpcyBjb25zaWRlcmVkIGF0IGVkaXRpbmcgYm91bmRhcnkgaWYgb25l
IG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKQEAgLTEyNjAsMTIgKzEyOTEsMTggQEAgdm9pZCBQ
b3NpdGlvbjo6c2hvd0FuY2hvclR5cGVBbmRPZmZzZXQoKQogICAgIGNhc2UgUG9zaXRpb25Jc09m
ZnNldEluQW5jaG9yOgogICAgICAgICBmcHV0cygib2Zmc2V0Iiwgc3RkZXJyKTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6Ci0gICAgICAgIGZwdXRzKCJh
ZnRlciIsIHN0ZGVycik7CisgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46CisgICAg
ICAgIGZwdXRzKCJiZWZvcmVDaGlsZHJlbiIsIHN0ZGVycik7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgICAgIGZwdXRzKCJhZnRlckNoaWxk
cmVuIiwgc3RkZXJyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yOgogICAgICAgICBmcHV0cygiYmVmb3JlIiwgc3RkZXJyKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CisgICAgICAgIGZwdXRzKCJhZnRlciIs
IHN0ZGVycik7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgIiwg
b2Zmc2V0OiVkXG4iLCBtX29mZnNldCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkocmV2
aXNpb24gODkzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNTMsOCArNTMsMTAgQEAgY2xhc3MgUG9zaXRpb24gewogcHVibGljOgogICAgIGVu
dW0gQW5jaG9yVHlwZSB7CiAgICAgICAgIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciwKKyAgICAg
ICAgUG9zaXRpb25Jc0JlZm9yZUFuY2hvciwKICAgICAgICAgUG9zaXRpb25Jc0FmdGVyQW5jaG9y
LAotICAgICAgICBQb3NpdGlvbklzQmVmb3JlQW5jaG9yCisgICAgICAgIFBvc2l0aW9uSXNCZWZv
cmVDaGlsZHJlbiwKKyAgICAgICAgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4sCiAgICAgfTsKIAog
ICAgIFBvc2l0aW9uKCkKQEAgLTkyLDcgKzk0LDcgQEAgcHVibGljOgogICAgIC8vIE5ldyBjb2Rl
IHNob3VsZCBub3QgdXNlIHRoaXMgZnVuY3Rpb24uCiAgICAgaW50IGRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uIHx8IG1fYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJBbmNob3IpCisgICAgICAgIGlm
IChtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uIHx8IChtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25J
c0FmdGVyQW5jaG9yICYmIG1fYW5jaG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikp
CiAgICAgICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgICAgIHJldHVybiBvZmZzZXRGb3JQ
b3NpdGlvbkFmdGVyQW5jaG9yKCk7CiAgICAgfQpAQCAtMTg5LDcgKzE5MSw3IEBAIHByaXZhdGU6
CiAgICAgLy8gcmV0dXJucyB0cnVlLCB0aGVuIG90aGVyIHBsYWNlcyBpbiBlZGl0aW5nIHdpbGwg
dHJlYXQgbV9vZmZzZXQgPT0gMCBhcyAiYmVmb3JlIHRoZSBhbmNob3IiCiAgICAgLy8gYW5kIG1f
b2Zmc2V0ID4gMCBhcyAiYWZ0ZXIgdGhlIGFuY2hvciBub2RlIi4gIFNlZSBwYXJlbnRBbmNob3Jl
ZEVxdWl2YWxlbnQgZm9yIG1vcmUgaW5mby4KICAgICBpbnQgbV9vZmZzZXQ7Ci0gICAgdW5zaWdu
ZWQgbV9hbmNob3JUeXBlIDogMjsKKyAgICB1bnNpZ25lZCBtX2FuY2hvclR5cGUgOiAzOwogICAg
IGJvb2wgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA6IDE7CiB9OwogCkBAIC0yNDUsMTIgKzI0
NywxNiBAQCBpbmxpbmUgaW50IGxhc3RPZmZzZXRJbk5vZGUoTm9kZSogbm9kZSkKIC8vIGZpcnN0
UG9zaXRpb25Jbk5vZGUgYW5kIGxhc3RQb3NpdGlvbkluTm9kZSByZXR1cm4gcGFyZW50LWFuY2hv
cmVkIHBvc2l0aW9ucywgbGFzdFBvc2l0aW9uSW5Ob2RlIGNvbnN0cnVjdGlvbiBpcyBPKG4pIGR1
ZSB0byBjaGlsZE5vZGVDb3VudCgpCiBpbmxpbmUgUG9zaXRpb24gZmlyc3RQb3NpdGlvbkluTm9k
ZShOb2RlKiBhbmNob3JOb2RlKQogewotICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCAw
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBpZiAoYW5jaG9yTm9k
ZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgMCwg
UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgcmV0dXJuIFBvc2l0aW9u
KGFuY2hvck5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW4pOwogfQogCiBp
bmxpbmUgUG9zaXRpb24gbGFzdFBvc2l0aW9uSW5Ob2RlKE5vZGUqIGFuY2hvck5vZGUpCiB7Ci0g
ICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIGxhc3RPZmZzZXRJbk5vZGUoYW5jaG9yTm9k
ZSksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIGlmIChhbmNob3JO
b2RlLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBs
YXN0T2Zmc2V0SW5Ob2RlKGFuY2hvck5vZGUpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldElu
QW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9yTm9kZSwgUG9zaXRpb246OlBvc2l0
aW9uSXNBZnRlckNoaWxkcmVuKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDg5MzYxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCwxMCArMzYwLDE4IEBAIFBvc2l0aW9uIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbk8KICAgICBpZiAoIWlzVGFiU3BhblRleHROb2Rl
KHBvcy5hbmNob3JOb2RlKCkpKQogICAgICAgICByZXR1cm4gcG9zOwogCi0gICAgaWYgKHBvcy5h
bmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikKLSAgICAgICAg
cmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUocG9zLmFuY2hvck5vZGUoKSk7Ci0gICAg
aWYgKHBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3Ip
CisgICAgc3dpdGNoIChwb3MuYW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRl
ckNoaWxkcmVuOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IHBvczsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CiAg
ICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShwb3MuYW5jaG9yTm9kZSgp
KTsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CisgICAgICAgIHJl
dHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHBvcy5hbmNob3JOb2RlKCkpOworICAgIH0K
IAogICAgIE5vZGUqIHRhYlNwYW4gPSB0YWJTcGFuTm9kZShwb3MuY29udGFpbmVyTm9kZSgpKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCShyZXZpc2lvbiA4OTM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw2ICszMTksMTQg
QEAgc3RhdGljIHZvaWQgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbAogICAgIGlmIChwb3Np
dGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAocG9zaXRpb24uYW5j
aG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVu
OgorICAgICAgICBpZiAocG9zaXRpb24uY29udGFpbmVyTm9kZSgpID09IG5vZGUpCisgICAgICAg
ICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAg
ICAgICAgaWYgKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSA9PSBub2RlKQorICAgICAgICAgICAg
cG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKG5vZGUpOworICAgICAgICBicmVh
azsKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6CiAgICAgICAg
IGlmIChwb3NpdGlvbi5jb250YWluZXJOb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpICYmIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkgPiBu
b2RlLT5ub2RlSW5kZXgoKSkKICAgICAgICAgICAgIHBvc2l0aW9uLm1vdmVUb09mZnNldChwb3Np
dGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAtIDEpOwpAQCAtNDk4LDExICs1MDYsNyBAQCB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyCiAgICAgICAgICAgICAgICAg
UmVmUHRyPE5vZGU+IG5leHROb2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZygpOwogICAg
ICAgICAgICAgICAgIC8vIGlmIHdlIGp1c3QgcmVtb3ZlZCBhIG5vZGUgZnJvbSB0aGUgZW5kIGNv
bnRhaW5lciwgdXBkYXRlIGVuZCBwb3NpdGlvbiBzbyB0aGUKICAgICAgICAgICAgICAgICAvLyBj
aGVjayBhYm92ZSB3aWxsIHdvcmsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9k
ZSgpID09IG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5ub2RlSW5kZXgoKSA8ICh1bnNpZ25l
ZCltX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fZG93bnN0cmVhbUVuZC5tb3ZlVG9PZmZzZXQobV9kb3duc3RyZWFtRW5kLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSAxKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgdXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3ZhbChub2RlLmdldCgpLCBtX2Rvd25z
dHJlYW1FbmQpOwogICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUobm9kZS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgbm9kZSA9IG5leHROb2RlLmdldCgpOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTU0Miw3ICs1NDYsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdl
bmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbi0+bm9kZUluZGV4KCkg
KyAxOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNo
aWxkcmVuSW5SYW5nZShtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSwgb2Zmc2V0LCBt
X2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fZG93bnN0cmVhbUVuZC5tb3ZlVG9PZmZzZXQob2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9kb3duc3RyZWFtRW5kID0gUG9zaXRpb24obV9kb3duc3RyZWFtRW5kLmRlcHJl
Y2F0ZWROb2RlKCksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0Nv
bW1hbmQuY3BwCShyZXZpc2lvbiA4OTM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9y
bWF0QmxvY2tDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lk
IEZvcm1hdEJsb2NrQ29tbWFuZDo6Zm9ybWF0UmFuZ2UoY29uCiAgICAgICAgIGluc2VydE5vZGVC
ZWZvcmUoYmxvY2tOb2RlLCBub2RlQWZ0ZXJJbnNlcnRpb25Qb3NpdGlvbik7CiAgICAgfQogCi0g
ICAgUG9zaXRpb24gbGFzdFBhcmFncmFwaEluQmxvY2tOb2RlID0gbGFzdFBvc2l0aW9uSW5Ob2Rl
KGJsb2NrTm9kZS5nZXQoKSk7CisgICAgUG9zaXRpb24gbGFzdFBhcmFncmFwaEluQmxvY2tOb2Rl
ID0gYmxvY2tOb2RlLT5sYXN0Q2hpbGQoKSA/IHBvc2l0aW9uQWZ0ZXJOb2RlKGJsb2NrTm9kZS0+
bGFzdENoaWxkKCkpIDogUG9zaXRpb24oKTsKICAgICBib29sIHdhc0VuZE9mUGFyYWdyYXBoID0g
aXNFbmRPZlBhcmFncmFwaChsYXN0UGFyYWdyYXBoSW5CbG9ja05vZGUpOwogCiAgICAgbW92ZVBh
cmFncmFwaFdpdGhDbG9uZXMoc3RhcnQsIGVuZCwgYmxvY2tOb2RlLmdldCgpLCBvdXRlckJsb2Nr
LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDg5MzYxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsMTAgKzU0MSwxNyBAQCBVQ2hhcjMyIFZp
c2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoCiAgICAgLy8gV2UgY2Fub25pY2FsaXplIHRv
IHRoZSBmaXJzdCBvZiB0d28gZXF1aXZhbGVudCBjYW5kaWRhdGVzLCBidXQgdGhlIHNlY29uZCBv
ZiB0aGUgdHdvIGNhbmRpZGF0ZXMKICAgICAvLyBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSBpbnNp
ZGUgdGhlIHRleHQgbm9kZSBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhpcyB2aXNp
YmxlIHBvc2l0aW9uLgogICAgIFBvc2l0aW9uIHBvcyA9IG1fZGVlcFBvc2l0aW9uLmRvd25zdHJl
YW0oKTsKLSAgICBOb2RlKiBub2RlID0gcG9zLmNvbnRhaW5lck5vZGUoKTsKLSAgICBpZiAoIW5v
ZGUgfHwgIW5vZGUtPmlzVGV4dE5vZGUoKSB8fCBwb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpCisgICAgaWYgKCFwb3MuY29udGFpbmVyTm9kZSgpIHx8
ICFwb3MuY29udGFpbmVyTm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIEFTU0VSVChwb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yIHx8IHBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvcik7CisgICAgc3dpdGNoIChwb3MuYW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3Np
dGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRp
b25Jc0FmdGVyQW5jaG9yOgorICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNo
b3I6CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgICAg
ICByZXR1cm4gMDsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0
PFRleHQqPihwb3MuY29udGFpbmVyTm9kZSgpKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBwb3Mu
YW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IgPyBwb3Mu
b2Zmc2V0SW5Db250YWluZXJOb2RlKCkgOiAwOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHRO
b2RlLT5sZW5ndGgoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98199</attachid>
            <date>2011-06-22 10:48:57 -0700</date>
            <delta_ts>2011-06-23 16:49:51 -0700</delta_ts>
            <desc>updated after 89440</desc>
            <filename>bug-63100-20110622104855.patch</filename>
            <type>text/plain</type>
            <size>17540</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NDQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDYtMjEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEJlZm9yZUNoaWxkcmVuIGFuZCBBZnRlckNoaWxkcmVuIHRv
IHRoZSBQb3NpdGlvbidzIGFuY2hvciB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMxMDAKKworICAgICAgICBBZGRlZCBQb3NpdGlvbklzQmVm
b3JlQ2hpbGRyZW4gYW5kIFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuIHRvIFBvc2l0aW9uOjpBbmNo
b3JUeXBlIGFuZCBkZXBsb3llZCB0aGVtIGluCisgICAgICAgIGZpcnN0UG9zaXRpb25Jbk5vZGUg
YW5kIGxhc3RQb3NpdGlvbkluTm9kZS4KKworICAgICAgICBUaGVzZSBuZXcgdHlwZXMgb2YgcG9z
aXRpb25zIHdpbGwgbGV0IHVzIGV4cHJlc3MgdGhlIGZpcnN0IGFuZCB0aGUgbGFzdCBwb3NpdGlv
bnMgaW4gYSBub24tdGV4dCBub2RlIGluIE8oMSkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJl
Y2F1c2UgdGhlcmUgaXMgbm8gbmV3IGJlaGF2aW9yIG9yIGZlYXR1cmUgZXhwb3NlZC4KKworICAg
ICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6UG9z
aXRpb24pOiBBc3NlcnQgdGhhdCB0aGUgYW5jaG9yIHR5cGUgaXMgbm90IEJlZm9yZUNoaWxkcmVu
IGFuZCBBZnRlckNoaWxkcmVuIGZvciB0ZXh0IG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OmNvbnRhaW5lck5vZGUpOiBGb3IgQmVmb3JlQ2hpbGRyZW4gYW5kIEFmdGVyQ2hpbGRy
ZW4sIHRoZSBhbmNob3Igbm9kZSBpcyB0aGUgY29udGFpbmVyIG5vZGUuCisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSk6IFRoZSBvZmZzZXQg
aW4gdGhlIGNvbnRhaW5lciBub2RlIGlzIDAgZm9yIEJlZm9yZUNoaWxkcmVuIGFuZAorICAgICAg
ICB0aGUgb2Zmc2V0IGluIHRoZSBhbmNob3Igbm9kZSBmb3IgQWZ0ZXJDaGlsZHJlbi4KKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpvZmZzZXRGb3JQb3NpdGlvbkFmdGVyQW5jaG9yKTogQ2Fs
bGVkIGJ5IGRlcHJlY2F0ZWROb2RlOyB0aGUgYW5jaG9yIHR5cGUgY291bGQgYmUgQWZ0ZXJDaGls
ZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpwYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQpOiBJZiB0aGUgYW5jaG9yIG5vZGUgaXMgYmVmb3JlIG9yIGFmdGVyIGNoaWxkcmVuLCB0aGVu
IGRvIHRoZSB0cmljaworICAgICAgICBmb3IgdGFibGUgYW5kIGlnbm9yZWQgY29udGVudHMgbGlr
ZSBiZWZvcmUgb3IgYWZ0ZXIgYW5jaG9yLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmNv
bXB1dGVOb2RlQmVmb3JlUG9zaXRpb24pOiBSZXR1cm5zIG51bGwgZm9yIEJlZm9yZUNoaWxkcmVu
IGFuZCByZXR1cm5zIHRoZSBsYXN0IGNoaWxkIG9mCisgICAgICAgIHRoZSBhbmNob3Igbm9kZSBm
b3IgQWZ0ZXJDaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpjb21wdXRlTm9k
ZUFmdGVyUG9zaXRpb24pOiBSZXR1cm5zIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgYW5jaG9yIG5v
ZGUgZm9yIEJlZm9yZUNoaWxkcmVuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6YXRGaXJz
dEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOiBBIHBvc2l0aW9uIGlzIGF0IHRoZSBsYXN0IGVkaXRp
bmcgcG9zaXRpb24gaWYgdGhlIGFuY2hvciB0eXBlCisgICAgICAgIGlzIEJlZm9yZUNoaWxkcmVu
LCBvciB0aGUgYW5jaG9yIHR5cGUgaXMgQWZ0ZXJDaGlsZHJlbiBvciBBZnRlckFuY2hvciBhbmQg
dGhlIGFuY2hvciBkb2Vzbid0IGhhdmUgYW55IGNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb246OmF0TGFzdEVkaXRpbmdQb3NpdGlvbkZvck5vZGUpOiBBIHBvc2l0aW9uIGlzIGF0
IHRoZSBsYXN0IGVkaXRpbmcgcG9zaXRpb24gaWYgdGhlIGFuY2hvciB0eXBlCisgICAgICAgIGlz
IEFmdGVyQ2hpbGRyZW4uCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6c2hvd0FuY2hvclR5
cGVBbmRPZmZzZXQpOiBTdXBwb3J0cyBCZWZvcmVDaGlsZHJlbiBhbmQgQWZ0ZXJDaGlsZHJlbi4K
KyAgICAgICAgKiBkb20vUG9zaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpk
ZXByZWNhdGVkRWRpdGluZ09mZnNldCk6IFJldHVybnMgbV9vZmZzZXQgaWYgdGhlIGFuY2hvciB0
eXBlIGlzIEJlZm9yZUNoaWxkcmVuLgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbklu
Tm9kZSk6IFJldHVybnMgYSBwb3NpdGlvbiBpbiBvZmZzZXQgZm9yIGEgdGV4dCBub2RlLiBPdGhl
cndpc2UgcmV0dXJucyBCZWZvcmVDaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Omxhc3RQb3Np
dGlvbkluTm9kZSk6IFJldHVybnMgYSBwb3NpdGlvbiBpbiBvZmZzZXQgZm9yIGEgdGV4dCBub2Rl
LiBPdGhlcndpc2UgcmV0dXJucyBBZnRlckNoaWxkcmVuLgorICAgICAgICAqIGVkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENv
bW1hbmQ6OnBvc2l0aW9uT3V0c2lkZVRhYlNwYW4pOiBTaW5jZSB0aGUgYW5jaG9yIG5vZGUgd2Fz
IGEgdGV4dCBub2RlLAorICAgICAgICB0aGUgYW5jaG9yIHR5cGUgc2hvdWxkbid0IGJlIEJlZm9y
ZUNoaWxkcmVuIG9yIEFmdGVyQ2hpbGRyZW4uCisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9k
ZVJlbW92YWwpOiBTdXBwb3J0cyBCZWZvcmVDaGlsZHJlbiBhbmQgQWZ0ZXJDaGlsZHJlbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxl
dGUpOiBDYWxscyB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsIG9uIG1fZG93bnN0cmVtRW5k
CisgICAgICAgIHdoZW4gaXRzIGFuY2hvciBub2RlIGlzIHJlbW92ZWQgaW5zdGVhZCBvZiBtYW51
YWxseSB1cGRhdGluZyB0aGUgb2Zmc2V0OyBhbHNvIGF2b2lkIGNhbGxpbmcgbW92ZVRvT2Zmc2V0
CisgICAgICAgIG9uIEJlZm9yZUNoaWxkcmVuIG9yIEFmdGVyQ2hpbGRyZW4gcG9zaXRpb24uCisg
ICAgICAgICogZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5nZSk6IFNpbmNlIGxhc3RQYXJhZ3JhcGhJ
bkJsb2NrTm9kZSBpcyB1c2VkIHRvIGluc2VydCBhIHBsYWNlaG9sZGVyCisgICAgICAgIGFmdGVy
IHBhcmFncmFwaHMgYmVsb3cgdGhlIGJsb2NrIGlzIG1vdmVkIGludG8sIGl0IG5lZWRzIHRvIGJl
IHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY3VycmVudCBsYXN0IGNoaWxkIGluCisgICAgICAgIHRo
ZSBibG9jayBpbnN0ZWFkIG9mIGFmdGVyIGNoaWxkcmVuIGluIHRoZSBibG9jazsgb3RoZXJ3aXNl
IHRoZSBwb3NpdGlvbiB3aWxsIG1vdmUgdG8gdGhlIGVuZCBvZiBibG9jay4KKyAgICAgICAgKiBl
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb246OmNoYXJhY3RlckFmdGVyKTogU2luY2UgdGhlIGNvbnRhaW5lciBub2RlIGlzIG5ldmVy
IGEgdGV4dCBmb3IgcG9zaXRpb24gYmVmb3JlL2FmdGVyCisgICAgICAgIGNoaWxkcmVuIG9yIGJl
Zm9yZS9hZnRlciBhbmNob3IsIGp1c3QgcmV0dXJuIG51bGwgZm9yIHRoZXNlIGFuY2hvciB0eXBl
cy4KKwogMjAxMS0wNi0yMiAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCShyZXZpc2lvbiA4OTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgUG9zaXRpb246OlBvc2l0aW9u
KFBhc3NSZWZQdHI8Tm9kZT4gYW5jaAogewogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFt
X2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICAgICBBU1NFUlQoYW5jaG9yVHlwZSAhPSBQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIEFTU0VSVCghKChhbmNob3JUeXBlID09IFBv
c2l0aW9uSXNCZWZvcmVDaGlsZHJlbiB8fCBhbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNo
aWxkcmVuKSAmJiBtX2FuY2hvck5vZGUtPmlzVGV4dE5vZGUoKSkpOwogfQogCiBQb3NpdGlvbjo6
UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNob3JOb2RlLCBpbnQgb2Zmc2V0LCBBbmNob3JU
eXBlIGFuY2hvclR5cGUpCkBAIC0xMjYsNiArMTI3LDggQEAgTm9kZSogUG9zaXRpb246OmNvbnRh
aW5lck5vZGUoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAoYW5jaG9y
VHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQ2hpbGRyZW46CisgICAgY2FzZSBQ
b3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFuY2hv
cjoKICAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS5nZXQoKTsKICAgICBjYXNlIFBvc2l0aW9u
SXNCZWZvcmVBbmNob3I6CkBAIC0xNDIsNiArMTQ1LDEwIEBAIGludCBQb3NpdGlvbjo6Y29tcHV0
ZU9mZnNldEluQ29udGFpbmVyTm8KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKGFu
Y2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgICAg
ICByZXR1cm4gMDsKKyAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuOgorICAgICAgICBy
ZXR1cm4gbGFzdE9mZnNldEluTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpOwogICAgIGNhc2UgUG9z
aXRpb25Jc09mZnNldEluQW5jaG9yOgogICAgICAgICByZXR1cm4gc3RkOjptaW4obGFzdE9mZnNl
dEluTm9kZShtX2FuY2hvck5vZGUuZ2V0KCkpLCBtX29mZnNldCk7CiAgICAgY2FzZSBQb3NpdGlv
bklzQmVmb3JlQW5jaG9yOgpAQCAtMTU1LDcgKzE2Miw3IEBAIGludCBQb3NpdGlvbjo6Y29tcHV0
ZU9mZnNldEluQ29udGFpbmVyTm8KIAogaW50IFBvc2l0aW9uOjpvZmZzZXRGb3JQb3NpdGlvbkFm
dGVyQW5jaG9yKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9hbmNob3JUeXBlID09IFBvc2l0aW9u
SXNBZnRlckFuY2hvcik7CisgICAgQVNTRVJUKG1fYW5jaG9yVHlwZSA9PSBQb3NpdGlvbklzQWZ0
ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKTsKICAg
ICBBU1NFUlQoIW1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24pOwogICAgIHJldHVybiBsYXN0T2Zm
c2V0Rm9yRWRpdGluZyhtX2FuY2hvck5vZGUuZ2V0KCkpOwogfQpAQCAtMTY4LDEyICsxNzUsMTMg
QEAgUG9zaXRpb24gUG9zaXRpb246OnBhcmVudEFuY2hvcmVkRXF1aXZhbAogICAgICAgICByZXR1
cm4gUG9zaXRpb24oKTsKICAgICAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgb25seSBiZSBu
ZWNlc3NhcnkgZm9yIGxlZ2FjeSBwb3NpdGlvbnMsIGJ1dCBpcyBhbHNvIG5lZWRlZCBmb3IgcG9z
aXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgVGFibGVzCi0gICAgaWYgKG1fb2Zmc2V0IDw9IDAgJiYg
bV9hbmNob3JUeXBlICE9IFBvc2l0aW9uSXNBZnRlckFuY2hvcikgeworICAgIGlmIChtX29mZnNl
dCA8PSAwICYmIChtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yICYmIG1fYW5j
aG9yVHlwZSAhPSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikpIHsKICAgICAgICAgaWYgKG1fYW5j
aG9yTm9kZS0+bm9uU2hhZG93Qm91bmRhcnlQYXJlbnROb2RlKCkgJiYgKGVkaXRpbmdJZ25vcmVz
Q29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8IGlzVGFibGVFbGVtZW50KG1fYW5jaG9yTm9k
ZS5nZXQoKSkpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2Rl
KG1fYW5jaG9yTm9kZS5nZXQoKSk7Ci0gICAgICAgIHJldHVybiBmaXJzdFBvc2l0aW9uSW5PckJl
Zm9yZU5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG1f
YW5jaG9yTm9kZS5nZXQoKSwgMCwgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKICAgICB9Ci0g
ICAgaWYgKCFtX2FuY2hvck5vZGUtPm9mZnNldEluQ2hhcmFjdGVycygpICYmIChtX2FuY2hvclR5
cGUgPT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29m
ZnNldCkgPT0gbV9hbmNob3JOb2RlLT5jaGlsZE5vZGVDb3VudCgpKQorICAgIGlmICghbV9hbmNo
b3JOb2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKQorICAgICAgICAmJiAobV9hbmNob3JUeXBlID09
IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBtX2FuY2hvclR5cGUgPT0gUG9zaXRpb25Jc0FmdGVy
Q2hpbGRyZW4gfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBtX2FuY2hvck5v
ZGUtPmNoaWxkTm9kZUNvdW50KCkpCiAgICAgICAgICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQo
bV9hbmNob3JOb2RlLmdldCgpKSB8fCBpc1RhYmxlRWxlbWVudChtX2FuY2hvck5vZGUuZ2V0KCkp
KQogICAgICAgICAmJiBjb250YWluZXJOb2RlKCkpIHsKICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
SW5QYXJlbnRBZnRlck5vZGUobV9hbmNob3JOb2RlLmdldCgpKTsKQEAgLTE4OCw2ICsxOTYsMTAg
QEAgTm9kZSogUG9zaXRpb246OmNvbXB1dGVOb2RlQmVmb3JlUG9zaXRpbwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHN3aXRjaCAoYW5jaG9yVHlwZSgpKSB7CisgICAgY2FzZSBQb3NpdGlvbklz
QmVmb3JlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgUG9zaXRpb25Jc0Fm
dGVyQ2hpbGRyZW46CisgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPmxhc3RDaGlsZCgpOwog
ICAgIGNhc2UgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yOgogICAgICAgICByZXR1cm4gbV9hbmNo
b3JOb2RlLT5jaGlsZE5vZGUobV9vZmZzZXQgLSAxKTsgLy8gLTEgY29udmVydHMgdG8gY2hpbGRO
b2RlKCh1bnNpZ25lZCktMSkgYW5kIHJldHVybnMgbnVsbC4KICAgICBjYXNlIFBvc2l0aW9uSXNC
ZWZvcmVBbmNob3I6CkBAIC0yMDUsNiArMjE3LDEwIEBAIE5vZGUqIFBvc2l0aW9uOjpjb21wdXRl
Tm9kZUFmdGVyUG9zaXRpb24KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBzd2l0Y2ggKGFuY2hv
clR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuOgorICAgICAgICBy
ZXR1cm4gbV9hbmNob3JOb2RlLT5maXJzdENoaWxkKCk7CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0
ZXJDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBQb3NpdGlvbklzT2Zmc2V0
SW5BbmNob3I6CiAgICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPmNoaWxkTm9kZShtX29mZnNl
dCk7CiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yOgpAQCAtMzMxLDE0ICszNDcsMjkg
QEAgYm9vbCBQb3NpdGlvbjo6YXRGaXJzdEVkaXRpbmdQb3NpdGlvbkZvcgogewogICAgIGlmIChp
c051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fYW5jaG9yVHlwZSA9
PSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yIHx8IG1fb2Zmc2V0IDw9IDA7CisgICAgLy8gRklYTUU6
IFBvc2l0aW9uIGJlZm9yZSBhbmNob3Igc2hvdWxkbid0IGJlIGNvbnNpZGVyZWQgYXMgYXQgdGhl
IGZpcnN0IGVkaXRpbmcgcG9zaXRpb24gZm9yIG5vZGUKKyAgICAvLyBzaW5jZSB0aGF0IHBvc2l0
aW9uIHJlc2lkZXMgb3V0c2lkZSBvZiB0aGUgbm9kZS4KKyAgICBzd2l0Y2ggKG1fYW5jaG9yVHlw
ZSkgeworICAgIGNhc2UgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yOgorICAgICAgICByZXR1cm4g
bV9vZmZzZXQgPD0gMDsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICBj
YXNlIFBvc2l0aW9uSXNCZWZvcmVBbmNob3I6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNh
c2UgUG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW46CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJBbmNo
b3I6CisgICAgICAgIHJldHVybiAhbGFzdE9mZnNldEZvckVkaXRpbmcoZGVwcmVjYXRlZE5vZGUo
KSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBQb3NpdGlvbjo6YXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpIGNvbnN0
CiB7CiAgICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
bV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBtX29mZnNldCA+PSBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhkZXByZWNhdGVkTm9kZSgpKTsKKyAgICAvLyBGSVhNRTogUG9zaXRp
b24gYWZ0ZXIgYW5jaG9yIHNob3VsZG4ndCBiZSBjb25zaWRlcmVkIGFzIGF0IHRoZSBmaXJzdCBl
ZGl0aW5nIHBvc2l0aW9uIGZvciBub2RlCisgICAgLy8gc2luY2UgdGhhdCBwb3NpdGlvbiByZXNp
ZGVzIG91dHNpZGUgb2YgdGhlIG5vZGUuCisgICAgcmV0dXJuIG1fYW5jaG9yVHlwZSA9PSBQb3Np
dGlvbklzQWZ0ZXJBbmNob3IgfHwgbV9hbmNob3JUeXBlID09IFBvc2l0aW9uSXNBZnRlckNoaWxk
cmVuIHx8IG1fb2Zmc2V0ID49IGxhc3RPZmZzZXRGb3JFZGl0aW5nKGRlcHJlY2F0ZWROb2RlKCkp
OwogfQogCiAvLyBBIHBvc2l0aW9uIGlzIGNvbnNpZGVyZWQgYXQgZWRpdGluZyBib3VuZGFyeSBp
ZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgpAQCAtMTI2MCwxMiArMTI5MSwxOCBAQCB2
b2lkIFBvc2l0aW9uOjpzaG93QW5jaG9yVHlwZUFuZE9mZnNldCgpCiAgICAgY2FzZSBQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3I6CiAgICAgICAgIGZwdXRzKCJvZmZzZXQiLCBzdGRlcnIpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgZnB1
dHMoImFmdGVyIiwgc3RkZXJyKTsKKyAgICBjYXNlIFBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoK
KyAgICAgICAgZnB1dHMoImJlZm9yZUNoaWxkcmVuIiwgc3RkZXJyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgZnB1dHMoImFmdGVy
Q2hpbGRyZW4iLCBzdGRlcnIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBvc2l0aW9uSXNC
ZWZvcmVBbmNob3I6CiAgICAgICAgIGZwdXRzKCJiZWZvcmUiLCBzdGRlcnIpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKKyAgICAgICAgZnB1dHMoImFm
dGVyIiwgc3RkZXJyKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGZwcmludGYoc3RkZXJy
LCAiLCBvZmZzZXQ6JWRcbiIsIG1fb2Zmc2V0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5o
CShyZXZpc2lvbiA4OTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQCBjbGFzcyBQb3NpdGlvbiB7CiBwdWJsaWM6CiAg
ICAgZW51bSBBbmNob3JUeXBlIHsKICAgICAgICAgUG9zaXRpb25Jc09mZnNldEluQW5jaG9yLAor
ICAgICAgICBQb3NpdGlvbklzQmVmb3JlQW5jaG9yLAogICAgICAgICBQb3NpdGlvbklzQWZ0ZXJB
bmNob3IsCi0gICAgICAgIFBvc2l0aW9uSXNCZWZvcmVBbmNob3IKKyAgICAgICAgUG9zaXRpb25J
c0JlZm9yZUNoaWxkcmVuLAorICAgICAgICBQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbiwKICAgICB9
OwogCiAgICAgUG9zaXRpb24oKQpAQCAtMTAzLDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICAvLyBO
ZXcgY29kZSBzaG91bGQgbm90IHVzZSB0aGlzIGZ1bmN0aW9uLgogICAgIGludCBkZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV9pc0xlZ2FjeUVkaXRp
bmdQb3NpdGlvbiB8fCBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQW5jaG9yKQorICAg
ICAgICBpZiAobV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiB8fCAobV9hbmNob3JUeXBlICE9IFBv
c2l0aW9uSXNBZnRlckFuY2hvciAmJiBtX2FuY2hvclR5cGUgIT0gUG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW4pKQogICAgICAgICAgICAgcmV0dXJuIG1fb2Zmc2V0OwogICAgICAgICByZXR1cm4gb2Zm
c2V0Rm9yUG9zaXRpb25BZnRlckFuY2hvcigpOwogICAgIH0KQEAgLTIwMCw3ICsyMDIsNyBAQCBw
cml2YXRlOgogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBwbGFjZXMgaW4gZWRpdGlu
ZyB3aWxsIHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUgYW5jaG9yIgogICAgIC8v
IGFuZCBtX29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9kZSIuICBTZWUgcGFyZW50
QW5jaG9yZWRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCiAgICAgaW50IG1fb2Zmc2V0OwotICAg
IHVuc2lnbmVkIG1fYW5jaG9yVHlwZSA6IDI7CisgICAgdW5zaWduZWQgbV9hbmNob3JUeXBlIDog
MzsKICAgICBib29sIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24gOiAxOwogfTsKIApAQCAtMjYx
LDEyICsyNjMsMTYgQEAgaW5saW5lIGludCBsYXN0T2Zmc2V0SW5Ob2RlKE5vZGUqIG5vZGUpCiAv
LyBmaXJzdFBvc2l0aW9uSW5Ob2RlIGFuZCBsYXN0UG9zaXRpb25Jbk5vZGUgcmV0dXJuIHBhcmVu
dC1hbmNob3JlZCBwb3NpdGlvbnMsIGxhc3RQb3NpdGlvbkluTm9kZSBjb25zdHJ1Y3Rpb24gaXMg
TyhuKSBkdWUgdG8gY2hpbGROb2RlQ291bnQoKQogaW5saW5lIFBvc2l0aW9uIGZpcnN0UG9zaXRp
b25Jbk5vZGUoTm9kZSogYW5jaG9yTm9kZSkKIHsKLSAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9y
Tm9kZSwgMCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgaWYgKGFu
Y2hvck5vZGUtPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5v
ZGUsIDAsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOworICAgIHJldHVybiBQ
b3NpdGlvbihhbmNob3JOb2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUNoaWxkcmVuKTsK
IH0KIAogaW5saW5lIFBvc2l0aW9uIGxhc3RQb3NpdGlvbkluTm9kZShOb2RlKiBhbmNob3JOb2Rl
KQogewotICAgIHJldHVybiBQb3NpdGlvbihhbmNob3JOb2RlLCBsYXN0T2Zmc2V0SW5Ob2RlKGFu
Y2hvck5vZGUpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBpZiAo
YW5jaG9yTm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICByZXR1cm4gUG9zaXRpb24oYW5jaG9y
Tm9kZSwgbGFzdE9mZnNldEluTm9kZShhbmNob3JOb2RlKSwgUG9zaXRpb246OlBvc2l0aW9uSXNP
ZmZzZXRJbkFuY2hvcik7CisgICAgcmV0dXJuIFBvc2l0aW9uKGFuY2hvck5vZGUsIFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCShyZXZpc2lvbiA4OTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTAgKzM2MCwxOCBAQCBQb3Np
dGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cG9zaXRpb25PCiAgICAgaWYgKCFpc1RhYlNwYW5U
ZXh0Tm9kZShwb3MuYW5jaG9yTm9kZSgpKSkKICAgICAgICAgcmV0dXJuIHBvczsKIAotICAgIGlm
IChwb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpCi0g
ICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKHBvcy5hbmNob3JOb2RlKCkp
OwotICAgIGlmIChwb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yKQorICAgIHN3aXRjaCAocG9zLmFuY2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRp
b246OlBvc2l0aW9uSXNCZWZvcmVDaGlsZHJlbjoKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJDaGlsZHJlbjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBwb3M7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
OgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5j
aG9yOgogICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUocG9zLmFuY2hv
ck5vZGUoKSk7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yOgorICAg
ICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShwb3MuYW5jaG9yTm9kZSgpKTsK
KyAgICB9CiAKICAgICBOb2RlKiB0YWJTcGFuID0gdGFiU3Bhbk5vZGUocG9zLmNvbnRhaW5lck5v
ZGUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gODk0NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNiAr
MzE5LDE0IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwKICAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKHBvc2l0
aW9uLmFuY2hvclR5cGUoKSkgeworICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVD
aGlsZHJlbjoKKyAgICAgICAgaWYgKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSA9PSBub2RlKQor
ICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRy
ZW46CisgICAgICAgIGlmIChwb3NpdGlvbi5jb250YWluZXJOb2RlKCkgPT0gbm9kZSkKKyAgICAg
ICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShub2RlKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yOgog
ICAgICAgICBpZiAocG9zaXRpb24uY29udGFpbmVyTm9kZSgpID09IG5vZGUtPnBhcmVudE5vZGUo
KSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2Rl
KCkpID4gbm9kZS0+bm9kZUluZGV4KCkpCiAgICAgICAgICAgICBwb3NpdGlvbi5tb3ZlVG9PZmZz
ZXQocG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkgLSAxKTsKQEAgLTQ5OCwxMSArNTA2
LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcgogICAgICAgICAg
ICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dFNpYmxpbmco
KTsKICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBqdXN0IHJlbW92ZWQgYSBub2RlIGZyb20gdGhl
IGVuZCBjb250YWluZXIsIHVwZGF0ZSBlbmQgcG9zaXRpb24gc28gdGhlCiAgICAgICAgICAgICAg
ICAgLy8gY2hlY2sgYWJvdmUgd2lsbCB3b3JrCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKSA9PSBtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+bm9kZUluZGV4KCkgPCAo
dW5zaWduZWQpbV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAg
ICAgICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1FbmQubW92ZVRvT2Zmc2V0KG1fZG93bnN0cmVh
bUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gMSk7Ci0gICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwobm9kZS5nZXQoKSwg
bV9kb3duc3RyZWFtRW5kKTsKICAgICAgICAgICAgICAgICByZW1vdmVOb2RlKG5vZGUuZ2V0KCkp
OwogICAgICAgICAgICAgICAgIG5vZGUgPSBuZXh0Tm9kZS5nZXQoKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC01NDIsNyArNTQ2LDcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpo
YW5kbGVHZW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG4tPm5vZGVJ
bmRleCgpICsgMTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBy
ZW1vdmVDaGlsZHJlbkluUmFuZ2UobV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCksIG9m
ZnNldCwgbV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1FbmQubW92ZVRvT2Zmc2V0KG9mZnNldCk7CisgICAg
ICAgICAgICAgICAgICAgIG1fZG93bnN0cmVhbUVuZCA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSwgb2Zmc2V0KTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRm9ybWF0QmxvY2tDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0Zvcm1hdEJsb2NrQ29tbWFuZC5jcHAJKHJldmlzaW9uIDg5NDQyKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb3JtYXRCbG9ja0NvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgRm9ybWF0QmxvY2tDb21tYW5kOjpmb3JtYXRSYW5n
ZShjb24KICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShibG9ja05vZGUsIG5vZGVBZnRlckluc2Vy
dGlvblBvc2l0aW9uKTsKICAgICB9CiAKLSAgICBQb3NpdGlvbiBsYXN0UGFyYWdyYXBoSW5CbG9j
a05vZGUgPSBsYXN0UG9zaXRpb25Jbk5vZGUoYmxvY2tOb2RlLmdldCgpKTsKKyAgICBQb3NpdGlv
biBsYXN0UGFyYWdyYXBoSW5CbG9ja05vZGUgPSBibG9ja05vZGUtPmxhc3RDaGlsZCgpID8gcG9z
aXRpb25BZnRlck5vZGUoYmxvY2tOb2RlLT5sYXN0Q2hpbGQoKSkgOiBQb3NpdGlvbigpOwogICAg
IGJvb2wgd2FzRW5kT2ZQYXJhZ3JhcGggPSBpc0VuZE9mUGFyYWdyYXBoKGxhc3RQYXJhZ3JhcGhJ
bkJsb2NrTm9kZSk7CiAKICAgICBtb3ZlUGFyYWdyYXBoV2l0aENsb25lcyhzdGFydCwgZW5kLCBi
bG9ja05vZGUuZ2V0KCksIG91dGVyQmxvY2suZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkocmV2aXNpb24gODk0NDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
MSwxMCArNTQxLDE3IEBAIFVDaGFyMzIgVmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcigK
ICAgICAvLyBXZSBjYW5vbmljYWxpemUgdG8gdGhlIGZpcnN0IG9mIHR3byBlcXVpdmFsZW50IGNh
bmRpZGF0ZXMsIGJ1dCB0aGUgc2Vjb25kIG9mIHRoZSB0d28gY2FuZGlkYXRlcwogICAgIC8vIGlz
IHRoZSBvbmUgdGhhdCB3aWxsIGJlIGluc2lkZSB0aGUgdGV4dCBub2RlIGNvbnRhaW5pbmcgdGhl
IGNoYXJhY3RlciBhZnRlciB0aGlzIHZpc2libGUgcG9zaXRpb24uCiAgICAgUG9zaXRpb24gcG9z
ID0gbV9kZWVwUG9zaXRpb24uZG93bnN0cmVhbSgpOwotICAgIE5vZGUqIG5vZGUgPSBwb3MuY29u
dGFpbmVyTm9kZSgpOwotICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNUZXh0Tm9kZSgpIHx8IHBv
cy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikKKyAgICBp
ZiAoIXBvcy5jb250YWluZXJOb2RlKCkgfHwgIXBvcy5jb250YWluZXJOb2RlKCktPmlzVGV4dE5v
ZGUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQVNTRVJUKHBvcy5hbmNob3JUeXBlKCkgPT0g
UG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IgfHwgcG9zLmFuY2hvclR5cGUoKSA9PSBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKKyAgICBzd2l0Y2ggKHBvcy5hbmNo
b3JUeXBlKCkpIHsKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbjoK
KyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3I6CisgICAgY2FzZSBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcjoKKyAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlv
bklzQmVmb3JlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHBvcy5jb250YWluZXJOb2RlKCkpOwog
ICAgIHVuc2lnbmVkIG9mZnNldCA9IHBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0
aW9uSXNPZmZzZXRJbkFuY2hvciA/IHBvcy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSA6IDA7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE5vZGUtPmxlbmd0aCgpOwo=
</data>
<flag name="review"
          id="92357"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>