<?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>64252</bug_id>
          
          <creation_ts>2011-07-10 23:36:24 -0700</creation_ts>
          <short_desc>[ShadowContentElement] forwarded node list should be a linked-list.</short_desc>
          <delta_ts>2011-07-12 22:43:27 -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>DOM</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>64251</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>434685</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-10 23:36:24 -0700</bug_when>
    <thetext>under bug 64251: Turns ShadowContentElement::m_inclusion array to a linked list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434763</commentid>
    <comment_count>1</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 04:54:16 -0700</bug_when>
    <thetext>Hi Dimitri, could you take a look?

My plan is to maintain a Node* -&gt; ShadowContentElement* table on ShadowRoot,
which allows us to traverse from forwarded node to its including ShadowContentElement*.
In my understanding, the design is closer to your original thought than current one ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434977</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-11 10:26:24 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Hi Dimitri, could you take a look?
&gt; 
&gt; My plan is to maintain a Node* -&gt; ShadowContentElement* table on ShadowRoot,
&gt; which allows us to traverse from forwarded node to its including ShadowContentElement*.
&gt; In my understanding, the design is closer to your original thought than current one ;-)

Yes! Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435346</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 17:53:50 -0700</bug_when>
    <thetext>Ooops! I thought I upload the patch before going home...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435347</commentid>
    <comment_count>4</comment_count>
      <attachid>100394</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-11 17:55:06 -0700</bug_when>
    <thetext>Created attachment 100394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435684</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-12 09:07:24 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=100394) [details]
&gt; Patch

Can you tell me more about the overall design you&apos;re thinking of. This patch makes the double-linked list the storage facility, and I don&apos;t necessarily understand exactly why this is the best choice.

The items in the list aren&apos;t stored outside of the ShadowContentElement, and we only need the linkage to traverse in search of renderers.

So It seems we could go with a map of inclusions so that you can do O(1) find. Then each inclusion has previous/next ptrs, forming a double-linked list. Since they are never destroyed separately, the map owns inclusions, and the maintenance of the double-linked list integrity is simple.

So you have fast find and fast next/previous renderer search. Right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436198</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 20:26:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Created an attachment (id=100394) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Can you tell me more about the overall design you&apos;re thinking of. This patch makes the double-linked list the storage facility, and I don&apos;t necessarily understand exactly why this is the best choice.
&gt; 
&gt; The items in the list aren&apos;t stored outside of the ShadowContentElement, and we only need the linkage to traverse in search of renderers.
&gt; 
&gt; So It seems we could go with a map of inclusions so that you can do O(1) find. Then each inclusion has previous/next ptrs, forming a double-linked list. Since they are never destroyed separately, the map owns inclusions, and the maintenance of the double-linked list integrity is simple.
&gt; 
&gt; So you have fast find and fast next/previous renderer search. Right?

Hi Dimitri, thanks for taking a look!
And I&apos;m sorry for the short of explanation.

&gt; So you have fast find and fast next/previous renderer search. Right?

Yes. What TreeIterator will need is
- nextSibling() - This is what ShadowInclusion::m_next is for
- previousSibling() - Ditto for m_previous
- parent() - Ditto for m_includer.

Here is a plan:
As a next step, I&apos;ll introduce a HashSet on ShadowRoot, which will maintain ShadowInclusion instances as entries.
The hash-value will be computed from ShadowInclusion::m_content.
(HashTranslator allows this kind of trick.)

The hash set is used essentially as same way as ElementRareData (aka. O(1) find.)
But because ElementRareData is different lifetime and usage pattern,
I think it&apos;s better to have a separate table.

With this hash set, we can determine the element is forwarded to a content element or not.
This forwarded-child-to-content traversal is the primary goal of this change.

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436211</commentid>
    <comment_count>7</comment_count>
      <attachid>100394</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-12 20:45:04 -0700</bug_when>
    <thetext>Comment on attachment 100394
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436218</commentid>
    <comment_count>8</comment_count>
      <attachid>100394</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-12 21:05:54 -0700</bug_when>
    <thetext>Comment on attachment 100394
Patch

Thanks! landing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436259</commentid>
    <comment_count>9</comment_count>
      <attachid>100394</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 22:43:23 -0700</bug_when>
    <thetext>Comment on attachment 100394
Patch

Clearing flags on attachment: 100394

Committed r90888: &lt;http://trac.webkit.org/changeset/90888&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436260</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 22:43:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100394</attachid>
            <date>2011-07-11 17:55:06 -0700</date>
            <delta_ts>2011-07-12 22:43:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64252-20110712095504.patch</filename>
            <type>text/plain</type>
            <size>13485</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA3MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYWU3N2ZjNDJmZmIzMGM5
YmRlMDViZGI1ZTQ1M2NhOTI3NjViNDJiLi43NGEwOTBjMTZjOGM5NzlkZWE3NTM3NGYzZjhmZTBm
ZWI4ZWQyNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDctMTEgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXVtT
aGFkb3dDb250ZW50RWxlbWVudF0gRm9yd2FyZGVkIG5vZGUgbGlzdCBzaG91bGQgYmUgYSBsaW5r
ZWQtbGlzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY0MjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW50cm9kdWNlZCBTaGFkb3dJbmNsdXNpb25MaXN0IGFuZCBTaGFkb3dJbmNsdXNpb24gZm9yIG1h
aW50YWluaW5nCisgICAgICAgIGZvcndhcmRlZCBjb250ZW50IGNoaWxkcmVuLiBTaGFkb3dJbmNs
dXNpb24gaXMgZG91Ymx5LWxpbmtlZCBsaXN0LgorICAgICAgICBTaGFkb3dDb250ZW50RWxlbWVu
dDo6bV9pbmNsdXNpb25zIGlzIHJlcGxhY2VkIGJ5IFNoYWRvd0luY2x1c2lvbkxpc3QuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGNoYW5nZSBpcyBhIHByZXByYXRpb24gZm9yIGJ1ZyA2NDI1MSwg
d2hpY2ggd2lsbCBpbnRyb2R1Y2UKKyAgICAgICAgZm9yd2FyZGVkLWNoaWxkcmVuIHRvIGNvbnRl
bnQtZWxlbWVudCB0YWJsZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVo
YXZpb3JhbCBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bmV4dFJlbmRlcmVyT2YpOgorICAgICAgICAoV2ViQ29yZTo6
cHJldmlvdXNSZW5kZXJlck9mKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UmVuZGVyZXJPZik6
CisgICAgICAgIChXZWJDb3JlOjpsYXN0UmVuZGVyZXJPZik6CisgICAgICAgICogZG9tL1NoYWRv
d0NvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbjo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbjo6dW5saW5rKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6OlNoYWRvd0luY2x1c2lvbkxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6flNoYWRvd0luY2x1c2lv
bkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6ZmluZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpjbGVhcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93Q29udGVudEVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmluY2x1ZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbjo6Y29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93SW5jbHVzaW9uOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNp
b246OlNoYWRvd0luY2x1c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpmaXJzdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpsYXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d0NvbnRlbnRFbGVtZW50OjppbmNsdXNpb25zKToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6
c2VsZWN0SW5jbHVzaW9uKToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmg6
CisKIDIwMTEtMDctMTAgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgR2VuZXJhdGUgY29uZGl0aW9uYWwgaW5jbHVkZSBzdGF0ZW1lbnRzIGluIENvZGVH
ZW5lcmF0b3JKUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggMTU1YTM2NmE0YWI1YzRmZGVkZWNjYWUyNzVjNWFlMDA3OWUwZTU0OC4uNTA3Mzk5ZjMx
ZTgyODM2NjI2Y2U2YjEyMTcwNWYzYjViNGJjMDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xMDIsMTMgKzEwMiwxMiBAQCBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkKIAogc3Rh
dGljIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyT2YoU2hhZG93Q29udGVudEVsZW1lbnQqIHBh
cmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBzaXplX3QgY3VycmVudEluZGV4ID0gcGFyZW50
LT5pbmNsdXNpb25JbmRleE9mKGN1cnJlbnQpOwotICAgIGlmIChjdXJyZW50SW5kZXggPT0gbm90
Rm91bmQpCisgICAgU2hhZG93SW5jbHVzaW9uKiBjdXJyZW50SW5jbHVzaW9uID0gcGFyZW50LT5p
bmNsdXNpb25zKCktPmZpbmQoY3VycmVudCk7CisgICAgaWYgKCFjdXJyZW50SW5jbHVzaW9uKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSBjdXJyZW50SW5kZXggKyAx
OyBpIDwgcGFyZW50LT5pbmNsdXNpb25Db3VudCgpOyArK2kpIHsKLSAgICAgICAgTm9kZSogY2Fu
ZGlkYXRlID0gcGFyZW50LT5pbmNsdXNpb25BdChpKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBjYW5kaWRhdGUtPnJlbmRlcmVyKCkpCisgICAgZm9yIChTaGFkb3dJbmNs
dXNpb24qIGluY2x1c2lvbiA9IGN1cnJlbnRJbmNsdXNpb24tPm5leHQoKTsgaW5jbHVzaW9uOyBp
bmNsdXNpb24gPSBpbmNsdXNpb24tPm5leHQoKSkgeworICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IGluY2x1c2lvbi0+Y29udGVudCgpLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTE5LDExICsxMTgsMTAgQEAgc3RhdGlj
IFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9mKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBw
YXJlbnQsIE5vZGUqIGN1cnIKIHsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlciA9IDA7
CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmVudC0+aW5jbHVzaW9uQ291bnQoKTsg
KytpKSB7Ci0gICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHBhcmVudC0+aW5jbHVzaW9uQXQoaSk7
Ci0gICAgICAgIGlmIChjdXJyZW50ID09IGNhbmRpZGF0ZSkKKyAgICBmb3IgKFNoYWRvd0luY2x1
c2lvbiogaW5jbHVzaW9uID0gcGFyZW50LT5pbmNsdXNpb25zKCktPmZpcnN0KCk7IGluY2x1c2lv
bjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGluY2x1c2lv
bi0+Y29udGVudCgpID09IGN1cnJlbnQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjYW5kaWRhdGUtPnJlbmRlcmVyKCkpCisgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5jbHVzaW9uLT5jb250ZW50KCktPnJlbmRl
cmVyKCkpCiAgICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKICAgICB9CiAKQEAg
LTEzMiwxMCArMTMwLDggQEAgc3RhdGljIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9m
KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBwYXJlbnQsIE5vZGUqIGN1cnIKIAogc3RhdGljIFJlbmRl
ck9iamVjdCogZmlyc3RSZW5kZXJlck9mKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBwYXJlbnQpCiB7
Ci0gICAgc2l6ZV90IGluY2x1c2lvbkNvdW50ID0gcGFyZW50LT5pbmNsdXNpb25Db3VudCgpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5jbHVzaW9uQ291bnQ7ICsraSkgewotICAgICAg
ICBOb2RlKiBjYW5kaWRhdGUgPSBwYXJlbnQtPmluY2x1c2lvbkF0KGkpOwotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNhbmRpZGF0ZS0+cmVuZGVyZXIoKSkKKyAgICBmb3Ig
KFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gcGFyZW50LT5pbmNsdXNpb25zKCktPmZpcnN0
KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5uZXh0KCkpIHsKKyAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbmNsdXNpb24tPmNvbnRlbnQoKS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICB9CiAKQEAgLTE0NCwxMCAr
MTQwLDggQEAgc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKFNoYWRvd0NvbnRl
bnRFbGVtZW50KiBwYXJlbnQpCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9m
KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBwYXJlbnQpCiB7Ci0gICAgc2l6ZV90IGluY2x1c2lvbkNv
dW50ID0gcGFyZW50LT5pbmNsdXNpb25Db3VudCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5jbHVzaW9uQ291bnQ7ICsraSkgewotICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBwYXJl
bnQtPmluY2x1c2lvbkF0KGluY2x1c2lvbkNvdW50IC0gaSAtIDEpOwotICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGNhbmRpZGF0ZS0+cmVuZGVyZXIoKSkKKyAgICBmb3IgKFNo
YWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gcGFyZW50LT5pbmNsdXNpb25zKCktPmxhc3QoKTsg
aW5jbHVzaW9uOyBpbmNsdXNpb24gPSBpbmNsdXNpb24tPnByZXZpb3VzKCkpIHsKKyAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbmNsdXNpb24tPmNvbnRlbnQoKS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDFkY2QzZGVjMDcyOWRhMDFl
NmJlZjk0NGQzOGJkMmVlYjFjYjJkZDQuLjZkN2U3NDdiNGI0ZGNlMTMwMDljZjZiYWZjNzBlYThj
YjRhZmNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cApAQCAtMzIsNiArMzIsNzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIFNoYWRv
d0luY2x1c2lvbjo6YXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBuZXh0KQorewor
ICAgIEFTU0VSVCghbV9uZXh0KTsKKyAgICBBU1NFUlQoIW5leHQtPnByZXZpb3VzKCkpOworICAg
IG1fbmV4dCA9IG5leHQ7CisgICAgbV9uZXh0LT5tX3ByZXZpb3VzID0gdGhpczsKK30KKwordm9p
ZCBTaGFkb3dJbmNsdXNpb246OnVubGluaygpCit7CisgICAgQVNTRVJUKCFtX3ByZXZpb3VzKTsg
Ly8gQ2FuIGJlIGNhbGxlZCBvbmx5IGZvciBhIGhlYWQuCisgICAgUmVmUHRyPFNoYWRvd0luY2x1
c2lvbj4gaXRlbSA9IHRoaXM7CisgICAgd2hpbGUgKGl0ZW0pIHsKKyAgICAgICAgQVNTRVJUKCFp
dGVtLT5wcmV2aW91cygpKTsKKyAgICAgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbmV4dEl0
ZW0gPSBpdGVtLT5tX25leHQ7CisgICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigpOworICAgICAg
ICBpZiAobmV4dEl0ZW0pCisgICAgICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91cy5jbGVhcigp
OworICAgICAgICBpdGVtID0gbmV4dEl0ZW07CisgICAgfQorfQorCitTaGFkb3dJbmNsdXNpb25M
aXN0OjpTaGFkb3dJbmNsdXNpb25MaXN0KCkKK3sKK30KKworU2hhZG93SW5jbHVzaW9uTGlzdDo6
flNoYWRvd0luY2x1c2lvbkxpc3QoKQoreworICAgIEFTU0VSVChpc0VtcHR5KCkpOworfQorCitT
aGFkb3dJbmNsdXNpb24qIFNoYWRvd0luY2x1c2lvbkxpc3Q6OmZpbmQoTm9kZSogY29udGVudCkg
Y29uc3QKK3sKKyAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaXRlbSA9IGZpcnN0KCk7IGl0ZW07
IGl0ZW0gPSBpdGVtLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGNvbnRlbnQgPT0gaXRlbS0+Y29u
dGVudCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIHJldHVy
biAwOworfQorCit2b2lkIFNoYWRvd0luY2x1c2lvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBpZiAo
aXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fZmlyc3QtPnVubGluaygpOworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAg
ICBtX2xhc3QuY2xlYXIoKTsKK30KKwordm9pZCBTaGFkb3dJbmNsdXNpb25MaXN0OjphcHBlbmQo
UGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNoaWxkKQoreworICAgIGlmIChpc0VtcHR5KCkp
IHsKKyAgICAgICAgQVNTRVJUKCFtX2xhc3QpOworICAgICAgICBtX2ZpcnN0ID0gbV9sYXN0ID0g
Y2hpbGQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhc3QtPmFwcGVuZChjaGls
ZCk7CisgICAgbV9sYXN0ID0gbV9sYXN0LT5uZXh0KCk7Cit9CisKKwogUGFzc1JlZlB0cjxTaGFk
b3dDb250ZW50RWxlbWVudD4gU2hhZG93Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB0YWdO
YW1lLCAobnVsbEF0b20sICJ3ZWJraXRTaGFkb3dDb250ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcu
bmFtZXNwYWNlVVJJKCkpKTsKQEAgLTUzLDExICsxMTksMTEgQEAgdm9pZCBTaGFkb3dDb250ZW50
RWxlbWVudDo6YXR0YWNoKCkKICAgICBTdHlsZWRFbGVtZW50OjphdHRhY2goKTsKICAgICBpZiAo
U2hhZG93Q29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6
Y3VycmVudEluc3RhbmNlKCkpIHsKICAgICAgICAgc2VsZWN0b3ItPndpbGxBdHRhY2hDb250ZW50
Rm9yKHRoaXMpOwotICAgICAgICBzZWxlY3Rvci0+c2VsZWN0SW5jbHVzaW9uKG1faW5jbHVzaW9u
cyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9pbmNsdXNpb25zLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgbV9pbmNsdXNpb25zW2ldLT5kZXRhY2goKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2luY2x1c2lvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAg
ICBtX2luY2x1c2lvbnNbaV0tPmF0dGFjaCgpOworICAgICAgICBzZWxlY3Rvci0+c2VsZWN0SW5j
bHVzaW9uKCZtX2luY2x1c2lvbnMpOworICAgICAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5j
bHVzaW9uID0gbV9pbmNsdXNpb25zLmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5j
bHVzaW9uLT5uZXh0KCkpCisgICAgICAgICAgICBpbmNsdXNpb24tPmNvbnRlbnQoKS0+ZGV0YWNo
KCk7CisgICAgICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBtX2luY2x1c2lv
bnMuZmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNpb24gPSBpbmNsdXNpb24tPm5leHQoKSkKKyAg
ICAgICAgICAgIGluY2x1c2lvbi0+Y29udGVudCgpLT5hdHRhY2goKTsKICAgICAgICAgc2VsZWN0
b3ItPmRpZEF0dGFjaENvbnRlbnQoKTsKICAgICB9CiB9CkBAIC03Myw0ICsxMzksNSBAQCBib29s
IFNoYWRvd0NvbnRlbnRFbGVtZW50OjpzaG91bGRJbmNsdWRlKE5vZGUqKQogICAgIHJldHVybiB0
cnVlOwogfQogCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgK
aW5kZXggNzk1YjdhMzhkZmU5N2Q5ZWU0NzM1MjEzZjE0NzdhMTc3ODEzZmRlYi4uNWQ2YjBjMzM2
ZDk2NTU1MjJkMjQ0Y2RiNjI4ZWRlNjA5NTMwYmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd0NvbnRlbnRFbGVtZW50LmgKQEAgLTM2LDYgKzM2LDYyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU2hhZG93Q29udGVudEVsZW1lbnQ7CisKK2NsYXNzIFNoYWRvd0luY2x1
c2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYWRvd0luY2x1c2lvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gY3JlYXRlKFNoYWRvd0NvbnRlbnRF
bGVtZW50KiwgTm9kZSopOworCisgICAgU2hhZG93Q29udGVudEVsZW1lbnQqIGluY2x1ZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmNsdWRlcjsgfQorICAgIE5vZGUqIGNvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KKyAgICBTaGFkb3dJbmNsdXNpb24qIG5leHQoKSBj
b25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KKyAgICBTaGFkb3dJbmNsdXNpb24qIHByZXZp
b3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQorCisgICAgdm9pZCBhcHBl
bmQoUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+KTsKKyAgICB2b2lkIHVubGluaygpOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IFNoYWRvd0luY2x1c2lvbihTaGFkb3dDb250ZW50RWxlbWVu
dCogaW5jbHVkZXIsIE5vZGUqIGNvbnRlbnQpCisgICAgICAgIDogbV9pbmNsdWRlcihpbmNsdWRl
ciksIG1fY29udGVudChjb250ZW50KQorICAgIHsgfQorCisgICAgU2hhZG93Q29udGVudEVsZW1l
bnQqIG1faW5jbHVkZXI7CisgICAgUmVmUHRyPE5vZGU+IG1fY29udGVudDsKKyAgICBSZWZQdHI8
U2hhZG93SW5jbHVzaW9uPiBtX25leHQ7CisgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9w
cmV2aW91czsKK307CisKK2lubGluZSBQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gU2hhZG93
SW5jbHVzaW9uOjpjcmVhdGUoU2hhZG93Q29udGVudEVsZW1lbnQqIGluY2x1ZGVyLCBOb2RlKiBj
b250ZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhZG93SW5jbHVzaW9uKGluY2x1
ZGVyLCBjb250ZW50KSk7Cit9CisKKworY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdCB7CitwdWJs
aWM6CisgICAgU2hhZG93SW5jbHVzaW9uTGlzdCgpOworICAgIH5TaGFkb3dJbmNsdXNpb25MaXN0
KCk7CisKKyAgICBTaGFkb3dJbmNsdXNpb24qIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJz
dC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogbGFzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogZmluZChOb2RlKikgY29uc3Q7Cisg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KKworICAgIHZvaWQg
Y2xlYXIoKTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4pOwor
ICAgIHZvaWQgYXBwZW5kKFNoYWRvd0NvbnRlbnRFbGVtZW50KiwgTm9kZSopOworCitwcml2YXRl
OgorICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fZmlyc3Q7CisgICAgUmVmUHRyPFNoYWRv
d0luY2x1c2lvbj4gbV9sYXN0OworfTsKKworaW5saW5lIHZvaWQgU2hhZG93SW5jbHVzaW9uTGlz
dDo6YXBwZW5kKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogbm9kZSkKK3sK
KyAgICBhcHBlbmQoU2hhZG93SW5jbHVzaW9uOjpjcmVhdGUoaW5jbHVkZXIsIG5vZGUpKTsKK30K
KworCiAvLyBOT1RFOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXNuJ3Qgc3VwcG9ydCBkeW5h
bWljIGluc2VydGlvbi9kZWxldGlvbiBvZiBTaGFkb3dDb250ZW50RWxlbWVudC4KIC8vIFlvdSBz
aG91bGQgY3JlYXRlIFNoYWRvd0NvbnRlbnRFbGVtZW50IGR1cmluZyB0aGUgaG9zdCBjb25zdHJ1
Y3Rpb24uCiBjbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudCA6IHB1YmxpYyBTdHlsZWRFbGVtZW50
IHsKQEAgLTQ3LDkgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCi0gICAgTm9kZSogaW5jbHVzaW9uQXQoc2l6
ZV90KSBjb25zdDsKLSAgICBzaXplX3QgaW5jbHVzaW9uQ291bnQoKSBjb25zdDsKLSAgICBzaXpl
X3QgaW5jbHVzaW9uSW5kZXhPZihOb2RlKikgY29uc3Q7CisgICAgY29uc3QgU2hhZG93SW5jbHVz
aW9uTGlzdCogaW5jbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuICZtX2luY2x1c2lvbnM7IH0KIAog
cHJvdGVjdGVkOgogICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwpAQCAtNTksMjQgKzExMyw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKikgeyByZXR1cm4gMDsgfQogCi0gICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG1faW5jbHVzaW9uczsKKyAgICBTaGFkb3dJbmNsdXNpb25MaXN0IG1faW5jbHVz
aW9uczsKIH07CiAKLWlubGluZSBOb2RlKiBTaGFkb3dDb250ZW50RWxlbWVudDo6aW5jbHVzaW9u
QXQoc2l6ZV90IGluZGV4KSBjb25zdAotewotICAgIHJldHVybiBtX2luY2x1c2lvbnMuYXQoaW5k
ZXgpLmdldCgpOwotfQotCi1pbmxpbmUgc2l6ZV90IFNoYWRvd0NvbnRlbnRFbGVtZW50OjppbmNs
dXNpb25Db3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5jbHVzaW9ucy5zaXplKCk7Ci19
Ci0KLWlubGluZSBzaXplX3QgU2hhZG93Q29udGVudEVsZW1lbnQ6OmluY2x1c2lvbkluZGV4T2Yo
Tm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmNsdXNpb25zLmZpbmQobm9kZSk7
Ci19Ci0KIGlubGluZSBTaGFkb3dDb250ZW50RWxlbWVudCogdG9TaGFkb3dDb250ZW50RWxlbWVu
dChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVt
ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcApp
bmRleCBjYWM2MTg5MDRlNWI5MWJmZmEzODY4ZWM0MThmODRjM2FhNTRkNjRhLi4wMTZhNDQ3YWUx
YzBkYTk2MjE2ODEwY2JlNjhiOTI3MTNhY2QzYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Q29udGVudFNlbGVjdG9yLmNwcApAQCAtNTEsOSArNTEsOSBAQCBTaGFkb3dDb250ZW50
U2VsZWN0b3I6On5TaGFkb3dDb250ZW50U2VsZWN0b3IoKQogICAgIHNfY3VycmVudEluc3RhbmNl
ID0gbV9wYXJlbnQ7CiB9CiAKLXZvaWQgU2hhZG93Q29udGVudFNlbGVjdG9yOjpzZWxlY3RJbmNs
dXNpb24oVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBpbmNsdXNpb25zKQordm9pZCBTaGFkb3dDb250
ZW50U2VsZWN0b3I6OnNlbGVjdEluY2x1c2lvbihTaGFkb3dJbmNsdXNpb25MaXN0KiBpbmNsdXNp
b25zKQogewotICAgIGluY2x1c2lvbnMuY2xlYXIoKTsKKyAgICBpbmNsdXNpb25zLT5jbGVhcigp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIE5vZGUqIGNoaWxkID0gbV9jaGlsZHJlbltpXS5nZXQoKTsKQEAgLTYyLDkgKzYy
LDEwIEBAIHZvaWQgU2hhZG93Q29udGVudFNlbGVjdG9yOjpzZWxlY3RJbmNsdXNpb24oVmVjdG9y
PFJlZlB0cjxOb2RlPiA+JiBpbmNsdXNpb25zKQogICAgICAgICBpZiAoIW1fYWN0aXZlRWxlbWVu
dC0+c2hvdWxkSW5jbHVkZShjaGlsZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpbmNsdXNpb25zLmFwcGVuZChjaGlsZCk7CisgICAgICAgIGluY2x1c2lvbnMtPmFwcGVuZCht
X2FjdGl2ZUVsZW1lbnQsIGNoaWxkKTsKICAgICAgICAgbV9jaGlsZHJlbltpXSA9IDA7CiAgICAg
fQorCiB9CiAKIHZvaWQgU2hhZG93Q29udGVudFNlbGVjdG9yOjp3aWxsQXR0YWNoQ29udGVudEZv
cihTaGFkb3dDb250ZW50RWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dDb250ZW50U2VsZWN0b3IuaAppbmRleCBkNDlhZTRkZGMwMDFjY2I1MzgxMTNiNDIxMjRmN2Q3
MTMyMGZjNjAxLi5iNWY2NzE0MzlmM2I1OTY4MmFkNjQ1OTJkZGM4MjgzMWNmODk5YzRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5oCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xh
c3MgU2hhZG93Um9vdDsKK2NsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CiBjbGFzcyBTaGFkb3dD
b250ZW50RWxlbWVudDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIApAQCAtNTAsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHdpbGxBdHRhY2hDb250ZW50Rm9yKFNoYWRvd0NvbnRlbnRFbGVt
ZW50Kik7CiAgICAgdm9pZCBkaWRBdHRhY2hDb250ZW50KCk7Ci0gICAgdm9pZCBzZWxlY3RJbmNs
dXNpb24oVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBpbmNsdXNpb25zKTsKKyAgICB2b2lkIHNlbGVj
dEluY2x1c2lvbihTaGFkb3dJbmNsdXNpb25MaXN0Kik7CiAKICAgICBTaGFkb3dSb290KiBzaGFk
b3dSb290KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dSb290OyB9CiAgICAgU2hhZG93Q29udGVu
dEVsZW1lbnQqIGFjdGl2ZUVsZW1lbnQoKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>