<?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>64849</bug_id>
          
          <creation_ts>2011-07-20 00:11:06 -0700</creation_ts>
          <short_desc>[Refactoring] Shadow inclusion cache should be managed by ShadowContentSelector</short_desc>
          <delta_ts>2011-07-21 02:39:56 -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>64072</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>439655</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-20 00:11:06 -0700</bug_when>
    <thetext>This is another preparation for introducing TreeIterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439662</commentid>
    <comment_count>1</comment_count>
      <attachid>101432</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-20 00:32:37 -0700</bug_when>
    <thetext>Created attachment 101432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439836</commentid>
    <comment_count>2</comment_count>
      <attachid>101432</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-20 09:23:11 -0700</bug_when>
    <thetext>Comment on attachment 101432
Patch

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

This is a great clean-up!

&gt; Source/WebCore/dom/ShadowContentSelector.h:61
&gt; +    { }

This looks a bit weird. Perhaps move definition out of decl, include at the bottom of the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440305</commentid>
    <comment_count>3</comment_count>
      <attachid>101432</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-21 01:34:42 -0700</bug_when>
    <thetext>Comment on attachment 101432
Patch

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

&gt;&gt; Source/WebCore/dom/ShadowContentSelector.h:61
&gt;&gt; +    { }
&gt; 
&gt; This looks a bit weird. Perhaps move definition out of decl, include at the bottom of the header?

Thanks for review, Dimitri!
I&apos;ll give a non-inlined definition then land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440306</commentid>
    <comment_count>4</comment_count>
      <attachid>101560</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-07-21 01:36:48 -0700</bug_when>
    <thetext>Created attachment 101560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440321</commentid>
    <comment_count>5</comment_count>
      <attachid>101560</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 02:39:52 -0700</bug_when>
    <thetext>Comment on attachment 101560
Patch

Clearing flags on attachment: 101560

Committed r91453: &lt;http://trac.webkit.org/changeset/91453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440322</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-21 02:39:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101432</attachid>
            <date>2011-07-20 00:32:37 -0700</date>
            <delta_ts>2011-07-21 01:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64849-20110720163235.patch</filename>
            <type>text/plain</type>
            <size>23386</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjMwNGEzMjg2MGJmOWRk
ZDVjYjAzNzM1ZDIwNTBjMDEzOTA2MjQxLi43ZDhkNGZmOTczOTIxMDNjMTY2OTU3N2QxZTczOThm
MjJiNDhmYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMDctMTkgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBT
aGFkb3cgaW5jbHVzaW9uIGNhY2hlIHNob3VsZCBiZSBtYW5hZ2VkIGJ5IFNoYWRvd0NvbnRlbnRT
ZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQ4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBpcyBhIHJlb3JnIGFyb3VuZCBTaGFkb3cgaW5jbHVzaW9uIG1lY2hhbmlzbS4K
KyAgICAgICAgLSBNb3ZlZCBkZWZpbml0aW9uIG9mIFNoYWRvd0luY2x1c2lvbiwgU2hhZG93SW5j
bHVzaW9uU2V0IGFuZCBTaGFkb3dJbmNsdXNpb25MaXN0CisgICAgICAgICAgZnJvbSBTaGFkb3dD
b250ZW50RWxlbWVudC5oIHRvIFNoYWRvd0NvbnRlbnRTZWxlY3Rvci5oLCB3aGljaCBpcyBpbmNs
dWRlZAorICAgICAgICAgIGZyb20gc21hbGxlciBudW1iZXIgb2YgcGxhY2VzLgorICAgICAgICAt
IE1vdmVkIFNoYWRvd0luY2x1c2lvblNldCBmcm9tIFNoYWRvd1Jvb3QgdG8gU2hhZG93Q29udGVu
dFNlbGVjdG9yCisgICAgICAgIC0gTWFkZSBTaGFkb3dDb250ZW50U2VsZWN0b3IncyBsaWZldGlt
ZSBtYW5hZ2VkIGJ5IFNoYWRvd1Jvb3QKKyAgICAgICAgICBiZWNhdXNlIFNoYWRvd0luY2x1c2lv
blNldCBpcyBoZWxkIGJ5IHRoZSBzZWxlY3Rvci4KKyAgICAgICAgLSBUaHVzLCB0aGVyZSBpcyBu
byBsb25nZXIgImFjdGl2ZSIgc2VsZWN0b3IgKFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6c19jdXJy
ZW50SW5zdGFuY2UpCisgICAgICAgICAgQmVjYXVzZSB0aGUgc2VsZWN0b3IgaXMgYXNzb2NpYXRl
ZCBmb3IgZWFjaCBTaGFkb3dSb290IG9iamVjdC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRvd0NvbnRlbnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjphdHRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgICog
ZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250
ZW50RWxlbWVudDo6aW5jbHVzaW9ucyk6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OnVubGluayk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpTaGFkb3dJbmNsdXNpb25MaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNpb25MaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6OmZpbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRl
bnRTZWxlY3Rvcjo6U2hhZG93Q29udGVudFNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0NvbnRlbnRTZWxlY3Rvcjo6flNoYWRvd0NvbnRlbnRTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3I6OnNlbGVjdEluY2x1c2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3I6OnVuc2VsZWN0SW5jbHVzaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6ZmluZEluY2x1c2lvbkZvcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3I6OmRpZFNlbGVjdEluY2x1
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3I6OndpbGxTZWxl
Y3RJbmNsdXNpb25PdmVyKToKKyAgICAgICAgKiBkb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmluY2x1ZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvbjo6Y29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dJbmNsdXNpb246Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9u
OjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OlNoYWRvd0lu
Y2x1c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpmaXJzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpsYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0luY2x1c2lvbkxpc3Q6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5j
bHVzaW9uU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2V0Ojpy
ZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2V0Ojppc0VtcHR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNldDo6VHJhbnNsYXRvcjo6aGFzaCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6OlRyYW5zbGF0b3I6OmVxdWFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNldDo6SGFzaDo6aGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNldDo6ZmluZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dDb250ZW50U2VsZWN0b3I6Omhhc0NoaWxkcmVuKToKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojp+U2hhZG93Um9vdCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjppbmNsdWRlckZvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6aW5jbHVzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjplbnN1cmVJbmNs
dXNpb25zKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorCiAyMDExLTA3LTE5ICBTdGV2
ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNZWRpYSBw
bGF5ZXIgY29udHJvbHMgZG8gbm90IGZhZGUgb3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggM2ExNzJkMDVjMTE1YjlmZGU2MWQ5OTJmYmJmZDkx
ZjM3NWM2YmVkMS4uMjk4MDkwZDZlYTEzMjBjYzc5MTZlNzA0YzJkZGFkNTBhYmRkN2E4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd0NvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU2hh
ZG93Q29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNw
cAppbmRleCBjM2MxOTE4NjFjZjNlMWQ5MzU0MmExYzk3NjgwNDE5MmM5YTFmZGU4Li45MDVhY2E1
YTM2ODcxNDBiNTIyODhiYWNlNDhhYmExNzdmNGY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dDb250ZW50RWxlbWVudC5jcHAKQEAgLTMzLDcxICszMyw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdm9pZCBTaGFkb3dJbmNsdXNpb246OmFwcGVuZChQYXNzUmVmUHRyPFNo
YWRvd0luY2x1c2lvbj4gbmV4dCkKLXsKLSAgICBBU1NFUlQoIW1fbmV4dCk7Ci0gICAgQVNTRVJU
KCFuZXh0LT5wcmV2aW91cygpKTsKLSAgICBtX25leHQgPSBuZXh0OwotICAgIG1fbmV4dC0+bV9w
cmV2aW91cyA9IHRoaXM7Ci19Ci0KLXZvaWQgU2hhZG93SW5jbHVzaW9uOjp1bmxpbmsoKQotewot
ICAgIEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFk
LgotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGl0ZW0gPSB0aGlzOwotICAgIHdoaWxlIChp
dGVtKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMoKSk7Ci0gICAgICAgIFJlZlB0
cjxTaGFkb3dJbmNsdXNpb24+IG5leHRJdGVtID0gaXRlbS0+bV9uZXh0OwotICAgICAgICBpdGVt
LT5tX25leHQuY2xlYXIoKTsKLSAgICAgICAgaWYgKG5leHRJdGVtKQotICAgICAgICAgICAgbmV4
dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKLSAgICAgICAgaXRlbSA9IG5leHRJdGVtOwotICAg
IH0KLX0KLQotU2hhZG93SW5jbHVzaW9uTGlzdDo6U2hhZG93SW5jbHVzaW9uTGlzdCgpCi17Ci19
Ci0KLVNoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNpb25MaXN0KCkKLXsKLSAgICBB
U1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25M
aXN0OjpmaW5kKE5vZGUqIGNvbnRlbnQpIGNvbnN0Ci17Ci0gICAgZm9yIChTaGFkb3dJbmNsdXNp
b24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7Ci0gICAgICAg
IGlmIChjb250ZW50ID09IGl0ZW0tPmNvbnRlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBpdGVt
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBTaGFkb3dJbmNsdXNpb25M
aXN0OjpjbGVhcigpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1f
bGFzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ZpcnN0LT51bmxpbmsoKTsK
LSAgICBtX2ZpcnN0LmNsZWFyKCk7Ci0gICAgbV9sYXN0LmNsZWFyKCk7Ci19Ci0KLXZvaWQgU2hh
ZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBjaGls
ZCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9sYXN0KTsKLSAg
ICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNoaWxkOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQpOwotICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgp
OwotfQotCiBQYXNzUmVmUHRyPFNoYWRvd0NvbnRlbnRFbGVtZW50PiBTaGFkb3dDb250ZW50RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFF1YWxpZmllZE5hbWUsIHRhZ05hbWUsIChudWxsQXRvbSwgIndlYmtpdFNoYWRvd0NvbnRl
bnQiLCBIVE1MTmFtZXM6OmRpdlRhZy5uYW1lc3BhY2VVUkkoKSkpOwpAQCAtMTA2LDYgKzQxLDcg
QEAgUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gU2hhZG93Q29udGVudEVsZW1lbnQ6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQKIAogU2hhZG93Q29udGVudEVsZW1lbnQ6OlNoYWRv
d0NvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFN0eWxlZEVsZW1lbnQobmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVt
ZW50KQorICAgICwgbV9pbmNsdXNpb25zKGFkb3B0UHRyKG5ldyBTaGFkb3dJbmNsdXNpb25MaXN0
KCkpKQogewogfQogCkBAIC0xMTMsMzIgKzQ5LDE4IEBAIFNoYWRvd0NvbnRlbnRFbGVtZW50Ojp+
U2hhZG93Q29udGVudEVsZW1lbnQoKQogewogfQogCi1zdGF0aWMgdm9pZCByZW1vdmVGcm9tU2V0
KFNoYWRvd0luY2x1c2lvbkxpc3QqIGxpc3QsIFNoYWRvd0luY2x1c2lvblNldCogc2V0KQotewot
ICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBsaXN0LT5maXJzdCgpOyBpbmNs
dXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgpKQotICAgICAgICBzZXQtPnJlbW92
ZShpbmNsdXNpb24pOwotfQotCi1zdGF0aWMgdm9pZCBhZGRUb1NldChTaGFkb3dJbmNsdXNpb25M
aXN0KiBsaXN0LCBTaGFkb3dJbmNsdXNpb25TZXQqIHNldCkKLXsKLSAgICBmb3IgKFNoYWRvd0lu
Y2x1c2lvbiogaW5jbHVzaW9uID0gbGlzdC0+Zmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNpb24g
PSBpbmNsdXNpb24tPm5leHQoKSkKLSAgICAgICAgc2V0LT5hZGQoaW5jbHVzaW9uKTsKLX0KLQog
dm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIHsKICAgICBBU1NFUlQoIWZpcnN0
Q2hpbGQoKSk7IC8vIEN1cnJlbnRseSBkb2Vzbid0IHN1cHBvcnQgYW55IGxpZ2h0IGNoaWxkLgog
ICAgIFN0eWxlZEVsZW1lbnQ6OmF0dGFjaCgpOwotICAgIGlmIChTaGFkb3dDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yID0gU2hhZG93Q29udGVudFNlbGVjdG9yOjpjdXJyZW50SW5zdGFuY2UoKSkg
ewogCi0gICAgICAgIHJlbW92ZUZyb21TZXQoJm1faW5jbHVzaW9ucywgc2VsZWN0b3ItPnNoYWRv
d1Jvb3QoKS0+ZW5zdXJlSW5jbHVzaW9ucygpKTsKLSAgICAgICAgbV9pbmNsdXNpb25zLmNsZWFy
KCk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZWxlY3RJbmNsdXNpb24odGhpcywgJm1faW5jbHVzaW9u
cyk7Ci0gICAgICAgIGFkZFRvU2V0KCZtX2luY2x1c2lvbnMsIHNlbGVjdG9yLT5zaGFkb3dSb290
KCktPmVuc3VyZUluY2x1c2lvbnMoKSk7Ci0KLSAgICAgICAgZm9yIChTaGFkb3dJbmNsdXNpb24q
IGluY2x1c2lvbiA9IG1faW5jbHVzaW9ucy5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9
IGluY2x1c2lvbi0+bmV4dCgpKQorICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dS
b290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgeworICAgICAgICBTaGFkb3dDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yID0gcm9vdC0+ZW5zdXJlSW5jbHVzaW9ucygpOworICAgICAgICBzZWxlY3Rv
ci0+dW5zZWxlY3RJbmNsdXNpb24obV9pbmNsdXNpb25zLmdldCgpKTsKKyAgICAgICAgc2VsZWN0
b3ItPnNlbGVjdEluY2x1c2lvbih0aGlzLCBtX2luY2x1c2lvbnMuZ2V0KCkpOworICAgICAgICBm
b3IgKFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gbV9pbmNsdXNpb25zLT5maXJzdCgpOyBp
bmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgpKQogICAgICAgICAgICAgaW5j
bHVzaW9uLT5jb250ZW50KCktPmRldGFjaCgpOwotICAgICAgICBmb3IgKFNoYWRvd0luY2x1c2lv
biogaW5jbHVzaW9uID0gbV9pbmNsdXNpb25zLmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9u
ID0gaW5jbHVzaW9uLT5uZXh0KCkpCisgICAgICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNs
dXNpb24gPSBtX2luY2x1c2lvbnMtPmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5j
bHVzaW9uLT5uZXh0KCkpCiAgICAgICAgICAgICBpbmNsdXNpb24tPmNvbnRlbnQoKS0+YXR0YWNo
KCk7CiAgICAgfQogfQpAQCAtMTQ2LDExICs2OCwxMSBAQCB2b2lkIFNoYWRvd0NvbnRlbnRFbGVt
ZW50OjphdHRhY2goKQogdm9pZCBTaGFkb3dDb250ZW50RWxlbWVudDo6ZGV0YWNoKCkKIHsKICAg
ICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUo
KSkpIHsKLSAgICAgICAgcmVtb3ZlRnJvbVNldCgmbV9pbmNsdXNpb25zLCByb290LT5lbnN1cmVJ
bmNsdXNpb25zKCkpOwotICAgICAgICBtX2luY2x1c2lvbnMuY2xlYXIoKTsKKyAgICAgICAgaWYg
KFNoYWRvd0NvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5pbmNsdXNpb25zKCkpCisg
ICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3RJbmNsdXNpb24obV9pbmNsdXNpb25zLmdldCgp
KTsKICAgICB9CiAKLSAgICBBU1NFUlQobV9pbmNsdXNpb25zLmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKG1faW5jbHVzaW9ucy0+aXNFbXB0eSgpKTsKICAgICBTdHlsZWRFbGVtZW50OjpkZXRhY2go
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudEVsZW1lbnQuaAppbmRleCBi
ZGE0ODJiZGIxZDZhZWNhNTNhZDNiOTk1NTk0OWFjNjFlOTEyYmM4Li43YjM2NjYyMWI3Yjk2M2E0
MzBmYzE0MzA5YmQ0NjVlYWVkZmEwNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29u
dGVudEVsZW1lbnQuaApAQCAtMzMsOTQgKzMzLDEwIEBACiAKICNpbmNsdWRlICJTdHlsZWRFbGVt
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNoYWRvd0NvbnRlbnRFbGVtZW50Owot
Ci1jbGFzcyBTaGFkb3dJbmNsdXNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkb3dJbmNsdXNp
b24+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNy
ZWF0ZShTaGFkb3dDb250ZW50RWxlbWVudCosIE5vZGUqKTsKLQotICAgIFNoYWRvd0NvbnRlbnRF
bGVtZW50KiBpbmNsdWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZXI7IH0KLSAgICBOb2Rl
KiBjb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9Ci0gICAgU2hhZG93
SW5jbHVzaW9uKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgU2hh
ZG93SW5jbHVzaW9uKiBwcmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7
IH0KLQotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7Ci0gICAg
dm9pZCB1bmxpbmsoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTaGFkb3dJbmNsdXNpb24o
U2hhZG93Q29udGVudEVsZW1lbnQqIGluY2x1ZGVyLCBOb2RlKiBjb250ZW50KQotICAgICAgICA6
IG1faW5jbHVkZXIoaW5jbHVkZXIpLCBtX2NvbnRlbnQoY29udGVudCkKLSAgICB7IH0KLQotICAg
IFNoYWRvd0NvbnRlbnRFbGVtZW50KiBtX2luY2x1ZGVyOwotICAgIFJlZlB0cjxOb2RlPiBtX2Nv
bnRlbnQ7Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9uZXh0OwotICAgIFJlZlB0cjxT
aGFkb3dJbmNsdXNpb24+IG1fcHJldmlvdXM7Ci19OwotCi1pbmxpbmUgUGFzc1JlZlB0cjxTaGFk
b3dJbmNsdXNpb24+IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKFNoYWRvd0NvbnRlbnRFbGVtZW50
KiBpbmNsdWRlciwgTm9kZSogY29udGVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNo
YWRvd0luY2x1c2lvbihpbmNsdWRlciwgY29udGVudCkpOwotfQotCi1jbGFzcyBTaGFkb3dJbmNs
dXNpb25MaXN0IHsKLXB1YmxpYzoKLSAgICBTaGFkb3dJbmNsdXNpb25MaXN0KCk7Ci0gICAgflNo
YWRvd0luY2x1c2lvbkxpc3QoKTsKLQotICAgIFNoYWRvd0luY2x1c2lvbiogZmlyc3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpcnN0LmdldCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBsYXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5k
KE5vZGUqKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJz
dDsgfQotCi0gICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPik7Ci0gICAgdm9pZCBhcHBlbmQoU2hhZG93Q29udGVudEVsZW1lbnQqLCBO
b2RlKik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsK
LSAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBtX2xhc3Q7Ci19OwotCi1pbmxpbmUgdm9pZCBT
aGFkb3dJbmNsdXNpb25MaXN0OjphcHBlbmQoU2hhZG93Q29udGVudEVsZW1lbnQqIGluY2x1ZGVy
LCBOb2RlKiBub2RlKQotewotICAgIGFwcGVuZChTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShpbmNs
dWRlciwgbm9kZSkpOwotfQotCi1jbGFzcyBTaGFkb3dJbmNsdXNpb25TZXQgewotcHVibGljOgot
ICAgIHZvaWQgYWRkKFNoYWRvd0luY2x1c2lvbiogdmFsdWUpIHsgbV9zZXQuYWRkKHZhbHVlKTsg
fQotICAgIHZvaWQgcmVtb3ZlKFNoYWRvd0luY2x1c2lvbiogdmFsdWUpIHsgbV9zZXQucmVtb3Zl
KHZhbHVlKTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0LmlzRW1w
dHkoKTsgfQotICAgIFNoYWRvd0luY2x1c2lvbiogZmluZChOb2RlKiBrZXkpIGNvbnN0OwotCi1w
cml2YXRlOgotICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25z
dCBOb2RlKj46Omhhc2goa2V5KTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBT
aGFkb3dJbmNsdXNpb24qIGluY2x1c2lvbiwgY29uc3QgTm9kZSogY29udGVudCkgeyByZXR1cm4g
aW5jbHVzaW9uLT5jb250ZW50KCkgPT0gY29udGVudDsgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3Qg
SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKFNoYWRvd0luY2x1c2lvbioga2V5
KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXktPmNvbnRlbnQoKSk7IH0K
LSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoU2hhZG93SW5jbHVzaW9uKiBhLCBTaGFkb3dJbmNs
dXNpb24qIGIpIHsgcmV0dXJuIGEtPmNvbnRlbnQoKSA9PSBiLT5jb250ZW50KCk7IH0KLSAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxz
ZTsKLSAgICB9OwotCi0gICAgdHlwZWRlZiBIYXNoU2V0PFNoYWRvd0luY2x1c2lvbiosIEhhc2g+
IFBvaW50ZXJTZXQ7Ci0KLSAgICBQb2ludGVyU2V0IG1fc2V0OwotfTsKLQotaW5saW5lIFNoYWRv
d0luY2x1c2lvbiogU2hhZG93SW5jbHVzaW9uU2V0OjpmaW5kKE5vZGUqIGtleSkgY29uc3QKLXsK
LSAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1fc2V0LmZpbmQ8Tm9kZSosIFNoYWRv
d0luY2x1c2lvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKLSAgICByZXR1cm4gZm91bmQgIT0gbV9z
ZXQuZW5kKCkgPyAqZm91bmQgOiAwOwotfQorY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIAog
Ly8gTk9URTogQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBp
bnNlcnRpb24vZGVsZXRpb24gb2YgU2hhZG93Q29udGVudEVsZW1lbnQuCiAvLyBZb3Ugc2hvdWxk
IGNyZWF0ZSBTaGFkb3dDb250ZW50RWxlbWVudCBkdXJpbmcgdGhlIGhvc3QgY29uc3RydWN0aW9u
LgpAQCAtMTMzLDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAKLSAgICBjb25zdCBTaGFkb3dJbmNsdXNpb25M
aXN0KiBpbmNsdXNpb25zKCkgY29uc3QgeyByZXR1cm4gJm1faW5jbHVzaW9uczsgfQorICAgIGNv
bnN0IFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1c2lvbnMuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtMTQzLDcgKzU5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVy
aW5nQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSB7IHJldHVybiAwOyB9
CiAKLSAgICBTaGFkb3dJbmNsdXNpb25MaXN0IG1faW5jbHVzaW9uczsKKyAgICBPd25QdHI8U2hh
ZG93SW5jbHVzaW9uTGlzdD4gbV9pbmNsdXNpb25zOwogfTsKIAogaW5saW5lIFNoYWRvd0NvbnRl
bnRFbGVtZW50KiB0b1NoYWRvd0NvbnRlbnRFbGVtZW50KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuY3BwCmluZGV4IGIwOGZjNzViOGUzMDRh
OWVmYTMyOTYzZmVlMjIzNDA0Mjk2MGRiYzEuLjQxN2QwODA5ODdlYjBlYjJlMWQzOTlmOWRhMzg1
MGVlOWNiOWI1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0
b3IuY3BwCkBAIC0zMywyMSArMzMsNzggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TaGFk
b3dDb250ZW50U2VsZWN0b3IqIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6c19jdXJyZW50SW5zdGFu
Y2UgPSAwOwordm9pZCBTaGFkb3dJbmNsdXNpb246OmFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0lu
Y2x1c2lvbj4gbmV4dCkKK3sKKyAgICBBU1NFUlQoIW1fbmV4dCk7CisgICAgQVNTRVJUKCFuZXh0
LT5wcmV2aW91cygpKTsKKyAgICBtX25leHQgPSBuZXh0OworICAgIG1fbmV4dC0+bV9wcmV2aW91
cyA9IHRoaXM7Cit9CiAKLVNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6U2hhZG93Q29udGVudFNlbGVj
dG9yKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCi0gICAgOiBtX3BhcmVudChzX2N1cnJlbnRJbnN0
YW5jZSkKLSAgICAsIG1fc2hhZG93Um9vdChzaGFkb3dSb290KQordm9pZCBTaGFkb3dJbmNsdXNp
b246OnVubGluaygpCit7CisgICAgQVNTRVJUKCFtX3ByZXZpb3VzKTsgLy8gQ2FuIGJlIGNhbGxl
ZCBvbmx5IGZvciBhIGhlYWQuCisgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gaXRlbSA9IHRo
aXM7CisgICAgd2hpbGUgKGl0ZW0pIHsKKyAgICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygp
KTsKKyAgICAgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbmV4dEl0ZW0gPSBpdGVtLT5tX25l
eHQ7CisgICAgICAgIGl0ZW0tPm1fbmV4dC5jbGVhcigpOworICAgICAgICBpZiAobmV4dEl0ZW0p
CisgICAgICAgICAgICBuZXh0SXRlbS0+bV9wcmV2aW91cy5jbGVhcigpOworICAgICAgICBpdGVt
ID0gbmV4dEl0ZW07CisgICAgfQorfQorCitTaGFkb3dJbmNsdXNpb25MaXN0OjpTaGFkb3dJbmNs
dXNpb25MaXN0KCkKK3sKK30KKworU2hhZG93SW5jbHVzaW9uTGlzdDo6flNoYWRvd0luY2x1c2lv
bkxpc3QoKQoreworICAgIEFTU0VSVChpc0VtcHR5KCkpOworfQorCitTaGFkb3dJbmNsdXNpb24q
IFNoYWRvd0luY2x1c2lvbkxpc3Q6OmZpbmQoTm9kZSogY29udGVudCkgY29uc3QKK3sKKyAgICBm
b3IgKFNoYWRvd0luY2x1c2lvbiogaXRlbSA9IGZpcnN0KCk7IGl0ZW07IGl0ZW0gPSBpdGVtLT5u
ZXh0KCkpIHsKKyAgICAgICAgaWYgKGNvbnRlbnQgPT0gaXRlbS0+Y29udGVudCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCit2b2lk
IFNoYWRvd0luY2x1c2lvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7Cisg
ICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
Zmlyc3QtPnVubGluaygpOworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xhc3QuY2xlYXIo
KTsKK30KKwordm9pZCBTaGFkb3dJbmNsdXNpb25MaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxTaGFk
b3dJbmNsdXNpb24+IGNoaWxkKQoreworICAgIGlmIChpc0VtcHR5KCkpIHsKKyAgICAgICAgQVNT
RVJUKCFtX2xhc3QpOworICAgICAgICBtX2ZpcnN0ID0gbV9sYXN0ID0gY2hpbGQ7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2xhc3QtPmFwcGVuZChjaGlsZCk7CisgICAgbV9sYXN0
ID0gbV9sYXN0LT5uZXh0KCk7Cit9CisKK1NoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6U2hhZG93Q29u
dGVudFNlbGVjdG9yKCkKIHsKLSAgICBzX2N1cnJlbnRJbnN0YW5jZSA9IHRoaXM7Ci0gICAgZm9y
IChOb2RlKiBub2RlID0gc2hhZG93Um9vdC0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChub2RlKTsKIH0KIAogU2hhZG93Q29udGVudFNlbGVjdG9yOjp+U2hhZG93Q29udGVudFNlbGVj
dG9yKCkKIHsKLSAgICBBU1NFUlQoc19jdXJyZW50SW5zdGFuY2UgPT0gdGhpcyk7Ci0gICAgc19j
dXJyZW50SW5zdGFuY2UgPSBtX3BhcmVudDsKKyAgICBBU1NFUlQobV9jaGlsZHJlbi5pc0VtcHR5
KCkpOwogfQogCiB2b2lkIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0SW5jbHVzaW9uKFNo
YWRvd0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgU2hhZG93SW5jbHVzaW9uTGlzdCog
aW5jbHVzaW9ucykKQEAgLTYxLDkgKzExOCwzNiBAQCB2b2lkIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
cjo6c2VsZWN0SW5jbHVzaW9uKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBjb250ZW50RWxlbWVudAog
ICAgICAgICBpZiAoIWNvbnRlbnRFbGVtZW50LT5zaG91bGRJbmNsdWRlKGNoaWxkKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGluY2x1c2lvbnMtPmFwcGVuZChjb250ZW50RWxl
bWVudCwgY2hpbGQpOworICAgICAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpbmNsdXNpb24g
PSBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hpbGQpOworICAgICAg
ICBpbmNsdXNpb25zLT5hcHBlbmQoaW5jbHVzaW9uKTsKKyAgICAgICAgbV9pbmNsdXNpb25TZXQu
YWRkKGluY2x1c2lvbi5nZXQoKSk7CiAgICAgICAgIG1fY2hpbGRyZW5baV0gPSAwOwogICAgIH0K
IH0KIAordm9pZCBTaGFkb3dDb250ZW50U2VsZWN0b3I6OnVuc2VsZWN0SW5jbHVzaW9uKFNoYWRv
d0luY2x1c2lvbkxpc3QqIGxpc3QpCit7CisgICAgZm9yIChTaGFkb3dJbmNsdXNpb24qIGluY2x1
c2lvbiA9IGxpc3QtPmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5u
ZXh0KCkpCisgICAgICAgIG1faW5jbHVzaW9uU2V0LnJlbW92ZShpbmNsdXNpb24pOworICAgIGxp
c3QtPmNsZWFyKCk7Cit9CisKK1NoYWRvd0luY2x1c2lvbiogU2hhZG93Q29udGVudFNlbGVjdG9y
OjpmaW5kSW5jbHVzaW9uRm9yKE5vZGUqIGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmNs
dXNpb25TZXQuZmluZChrZXkpOworfQorCit2b2lkIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6ZGlk
U2VsZWN0SW5jbHVzaW9uKCkKK3sKKyAgICBtX2NoaWxkcmVuLmNsZWFyKCk7Cit9CisKK3ZvaWQg
U2hhZG93Q29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0SW5jbHVzaW9uT3ZlcihTaGFkb3dSb290
KiBzY29wZSkKK3sKKyAgICBpZiAoIW1fY2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQobm9kZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dDb250ZW50U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50
U2VsZWN0b3IuaAppbmRleCBiMTk2MGVmMjFmMjQ1ODNjZTQwOGZlZjFlNTEyMGQwNTk1YWFhOGU2
Li4wN2QwODcxZjczOTI2NTM4NDk3NjI2NTQyYmZjYzk0OWY0Nzk0MjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5oCkBAIC0zMiw2ICszMiw4IEBACiAjZGVm
aW5lIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcl9oCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM5LDI3ICs0
MSwxMDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIE5vZGU7
CiBjbGFzcyBTaGFkb3dSb290OwotY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdDsKIGNsYXNzIFNo
YWRvd0NvbnRlbnRFbGVtZW50OwotY2xhc3MgUmVuZGVyT2JqZWN0OworCitjbGFzcyBTaGFkb3dJ
bmNsdXNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkb3dJbmNsdXNpb24+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNyZWF0ZShTaGFkb3dDb250
ZW50RWxlbWVudCosIE5vZGUqKTsKKworICAgIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZXI7IH0KKyAgICBOb2RlKiBjb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBuZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBw
cmV2aW91cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJldmlvdXMuZ2V0KCk7IH0KKworICAgIHZvaWQg
YXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7CisgICAgdm9pZCB1bmxpbmsoKTsK
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTaGFkb3dJbmNsdXNpb24oU2hhZG93Q29udGVudEVs
ZW1lbnQqIGluY2x1ZGVyLCBOb2RlKiBjb250ZW50KQorICAgICAgICA6IG1faW5jbHVkZXIoaW5j
bHVkZXIpLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICB7IH0KKworICAgIFNoYWRvd0NvbnRlbnRF
bGVtZW50KiBtX2luY2x1ZGVyOworICAgIFJlZlB0cjxOb2RlPiBtX2NvbnRlbnQ7CisgICAgUmVm
UHRyPFNoYWRvd0luY2x1c2lvbj4gbV9uZXh0OworICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+
IG1fcHJldmlvdXM7Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IFNo
YWRvd0luY2x1c2lvbjo6Y3JlYXRlKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9k
ZSogY29udGVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0luY2x1c2lvbihp
bmNsdWRlciwgY29udGVudCkpOworfQorCitjbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0IHsKK3B1
YmxpYzoKKyAgICBTaGFkb3dJbmNsdXNpb25MaXN0KCk7CisgICAgflNoYWRvd0luY2x1c2lvbkxp
c3QoKTsKKworICAgIFNoYWRvd0luY2x1c2lvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2Zp
cnN0LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0LmdldCgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqKSBjb25zdDsK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQorCisgICAgdm9p
ZCBjbGVhcigpOworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsKKyAgICBS
ZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBtX2xhc3Q7Cit9OworCisKK2NsYXNzIFNoYWRvd0luY2x1
c2lvblNldCB7CitwdWJsaWM6CisgICAgdm9pZCBhZGQoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkg
eyBtX3NldC5hZGQodmFsdWUpOyB9CisgICAgdm9pZCByZW1vdmUoU2hhZG93SW5jbHVzaW9uKiB2
YWx1ZSkgeyBtX3NldC5yZW1vdmUodmFsdWUpOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9zZXQuaXNFbXB0eSgpOyB9CisgICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5v
ZGUqIGtleSkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IFRyYW5zbGF0b3IgeworICAg
IHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7
IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uLCBjb25zdCBOb2Rl
KiBjb250ZW50KSB7IHJldHVybiBpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjb250ZW50OyB9Cisg
ICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
U2hhZG93SW5jbHVzaW9uKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNo
KGtleS0+Y29udGVudCgpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChTaGFkb3dJbmNs
dXNpb24qIGEsIFNoYWRvd0luY2x1c2lvbiogYikgeyByZXR1cm4gYS0+Y29udGVudCgpID09IGIt
PmNvbnRlbnQoKTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hTZXQ8U2hh
ZG93SW5jbHVzaW9uKiwgSGFzaD4gUG9pbnRlclNldDsKKworICAgIFBvaW50ZXJTZXQgbV9zZXQ7
Cit9OworCitpbmxpbmUgU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQo
Tm9kZSoga2V5KSBjb25zdAoreworICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9z
ZXQuZmluZDxOb2RlKiwgU2hhZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOworICAg
IHJldHVybiBmb3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7Cit9CiAKIGNsYXNzIFNo
YWRvd0NvbnRlbnRTZWxlY3RvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93Q29u
dGVudFNlbGVjdG9yKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTaGFkb3dDb250ZW50U2VsZWN0
b3IoU2hhZG93Um9vdCopOworICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvcigpOwogICAgIH5TaGFk
b3dDb250ZW50U2VsZWN0b3IoKTsKIAogICAgIHZvaWQgc2VsZWN0SW5jbHVzaW9uKFNoYWRvd0Nv
bnRlbnRFbGVtZW50KiwgU2hhZG93SW5jbHVzaW9uTGlzdCopOworICAgIHZvaWQgdW5zZWxlY3RJ
bmNsdXNpb24oU2hhZG93SW5jbHVzaW9uTGlzdCopOworICAgIFNoYWRvd0luY2x1c2lvbiogZmlu
ZEluY2x1c2lvbkZvcihOb2RlKiBrZXkpIGNvbnN0OworCisgICAgdm9pZCB3aWxsU2VsZWN0SW5j
bHVzaW9uT3ZlcihTaGFkb3dSb290Kik7CisgICAgdm9pZCBkaWRTZWxlY3RJbmNsdXNpb24oKTsK
KyAgICBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gIW1fY2hpbGRyZW4uaXNFbXB0
eSgpOyB9CiAKLSAgICBTaGFkb3dSb290KiBzaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbV9z
aGFkb3dSb290OyB9Ci0gICAgc3RhdGljIFNoYWRvd0NvbnRlbnRTZWxlY3RvciogY3VycmVudElu
c3RhbmNlKCkgeyByZXR1cm4gc19jdXJyZW50SW5zdGFuY2U7IH0KIAogcHJpdmF0ZToKLSAgICBT
aGFkb3dDb250ZW50U2VsZWN0b3IqIG1fcGFyZW50OwotICAgIFNoYWRvd1Jvb3QqIG1fc2hhZG93
Um9vdDsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9jaGlsZHJlbjsKKyAgICB2b2lkIHJl
bW92ZUZyb21TZXQoU2hhZG93SW5jbHVzaW9uTGlzdCopOworICAgIHZvaWQgYWRkVG9TZXQoU2hh
ZG93SW5jbHVzaW9uTGlzdCopOwogCi0gICAgc3RhdGljIFNoYWRvd0NvbnRlbnRTZWxlY3Rvciog
c19jdXJyZW50SW5zdGFuY2U7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2hpbGRyZW47
CisgICAgU2hhZG93SW5jbHVzaW9uU2V0IG1faW5jbHVzaW9uU2V0OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDFjYjA0YTQ3M2QzYTljZTA3ZWE4Y2U0YTRhOWI4Y2E5
NmJkNDg1Y2YuLmMzNjA3MDk3Njk3NzdlMmZiZjFlZjUyOTkzNjA1NDE1YWY0YWYyMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgU2hhZG93Um9vdDo6U2hh
ZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCiAKIFNoYWRvd1Jvb3Q6On5TaGFkb3dSb290KCkK
IHsKLSAgICBBU1NFUlQoIW1faW5jbHVzaW9ucyB8fCBtX2luY2x1c2lvbnMtPmlzRW1wdHkoKSk7
CiB9CiAKIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0CkBAIC0xMDEsNyArMTAw
LDcgQEAgU2hhZG93Q29udGVudEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmluY2x1ZGVyRm9yKE5vZGUq
IG5vZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2luY2x1c2lvbnMpCiAgICAgICAgIHJldHVybiAw
OwotICAgIFNoYWRvd0luY2x1c2lvbiogZm91bmQgPSBtX2luY2x1c2lvbnMtPmZpbmQobm9kZSk7
CisgICAgU2hhZG93SW5jbHVzaW9uKiBmb3VuZCA9IG1faW5jbHVzaW9ucy0+ZmluZEluY2x1c2lv
bkZvcihub2RlKTsKICAgICBpZiAoIWZvdW5kKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1
cm4gZm91bmQtPmluY2x1ZGVyKCk7CkBAIC0xMzcsMTkgKzEzNiwyNSBAQCB2b2lkIFNoYWRvd1Jv
b3Q6OnNldEFwcGx5QXV0aG9yU2hlZXRzKGJvb2wgdmFsdWUpCiAKIHZvaWQgU2hhZG93Um9vdDo6
YXR0YWNoKCkKIHsKLSAgICBTaGFkb3dDb250ZW50U2VsZWN0b3Igc2VsZWN0b3IodGhpcyk7Cisg
ICAgLy8gQ2hpbGRyZW4gb2YgbV9pbmNsdXNpb25zIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KKyAg
ICAvLyBlbnN1cmVJbmNsdXNpb25zKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKKyAg
ICAvLyBpdCBpcyBpbiBjbGVhbiBzdGF0ZS4KKyAgICBBU1NFUlQoIW1faW5jbHVzaW9ucyB8fCAh
bV9pbmNsdXNpb25zLT5oYXNDaGlsZHJlbigpKTsKICAgICBUcmVlU2NvcGU6OmF0dGFjaCgpOwor
ICAgIGlmIChtX2luY2x1c2lvbnMpCisgICAgICAgIG1faW5jbHVzaW9ucy0+ZGlkU2VsZWN0SW5j
bHVzaW9uKCk7CiB9CiAKLVNoYWRvd0luY2x1c2lvblNldCogU2hhZG93Um9vdDo6aW5jbHVzaW9u
cygpIGNvbnN0CitTaGFkb3dDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmluY2x1c2lvbnMo
KSBjb25zdAogewogICAgIHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7CiB9CiAKLVNoYWRvd0lu
Y2x1c2lvblNldCogU2hhZG93Um9vdDo6ZW5zdXJlSW5jbHVzaW9ucygpCitTaGFkb3dDb250ZW50
U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZUluY2x1c2lvbnMoKQogewogICAgIGlmICghbV9p
bmNsdXNpb25zKQotICAgICAgICBtX2luY2x1c2lvbnMgPSBhZG9wdFB0cihuZXcgU2hhZG93SW5j
bHVzaW9uU2V0KCkpOworICAgICAgICBtX2luY2x1c2lvbnMgPSBhZG9wdFB0cihuZXcgU2hhZG93
Q29udGVudFNlbGVjdG9yKCkpOworICAgIG1faW5jbHVzaW9ucy0+d2lsbFNlbGVjdEluY2x1c2lv
bk92ZXIodGhpcyk7CiAgICAgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKaW5kZXggZWQwZTc4N2FhZWRhYTJjZDZkNjM1NjhmZTA5YmVjN2E2OWNi
ZDI2ZS4uZDE1ZTQ2NWY2ZDg0OWU0N2FlYTU2ZjE0NTZiMTMzNTE4MmYwMmY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsKLWNsYXNzIFNoYWRv
d0luY2x1c2lvblNldDsKK2NsYXNzIFNoYWRvd0NvbnRlbnRTZWxlY3RvcjsKIAogY2xhc3MgU2hh
ZG93Um9vdCA6IHB1YmxpYyBUcmVlU2NvcGUgewogcHVibGljOgpAQCAtNDksOCArNDksOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRBcHBseUF1dGhvclNoZWV0cyhib29sKTsKIAotICAgIFNoYWRvd0luY2x1c2lvblNl
dCogaW5jbHVzaW9ucygpIGNvbnN0OwotICAgIFNoYWRvd0luY2x1c2lvblNldCogZW5zdXJlSW5j
bHVzaW9ucygpOworICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvciogaW5jbHVzaW9ucygpIGNvbnN0
OworICAgIFNoYWRvd0NvbnRlbnRTZWxlY3RvciogZW5zdXJlSW5jbHVzaW9ucygpOwogCiBwcml2
YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3Q7CiAKICAgICBib29sIG1fYXBw
bHlBdXRob3JTaGVldHM7Ci0gICAgT3duUHRyPFNoYWRvd0luY2x1c2lvblNldD4gbV9pbmNsdXNp
b25zOworICAgIE93blB0cjxTaGFkb3dDb250ZW50U2VsZWN0b3I+IG1faW5jbHVzaW9uczsKIH07
CiAKIGlubGluZSBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101560</attachid>
            <date>2011-07-21 01:36:48 -0700</date>
            <delta_ts>2011-07-21 02:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64849-20110721173646.patch</filename>
            <type>text/plain</type>
            <size>23444</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEzNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YjMwNGEzMjg2MGJmOWRk
ZDVjYjAzNzM1ZDIwNTBjMDEzOTA2MjQxLi5iM2M1ZjY5YWUzYTZlNmUzMmJlMzI1YmMyZjgwNmZl
ZmM0MDc4MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTEtMDctMTkgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBT
aGFkb3cgaW5jbHVzaW9uIGNhY2hlIHNob3VsZCBiZSBtYW5hZ2VkIGJ5IFNoYWRvd0NvbnRlbnRT
ZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQ4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaXMgYSByZW9yZyBhcm91bmQgU2hhZG93IGluY2x1c2lvbiBtZWNoYW5pc20u
CisgICAgICAgIC0gTW92ZWQgZGVmaW5pdGlvbiBvZiBTaGFkb3dJbmNsdXNpb24sIFNoYWRvd0lu
Y2x1c2lvblNldCBhbmQgU2hhZG93SW5jbHVzaW9uTGlzdAorICAgICAgICAgIGZyb20gU2hhZG93
Q29udGVudEVsZW1lbnQuaCB0byBTaGFkb3dDb250ZW50U2VsZWN0b3IuaCwgd2hpY2ggaXMgaW5j
bHVkZWQKKyAgICAgICAgICBmcm9tIHNtYWxsZXIgbnVtYmVyIG9mIHBsYWNlcy4KKyAgICAgICAg
LSBNb3ZlZCBTaGFkb3dJbmNsdXNpb25TZXQgZnJvbSBTaGFkb3dSb290IHRvIFNoYWRvd0NvbnRl
bnRTZWxlY3RvcgorICAgICAgICAtIE1hZGUgU2hhZG93Q29udGVudFNlbGVjdG9yJ3MgbGlmZXRp
bWUgbWFuYWdlZCBieSBTaGFkb3dSb290CisgICAgICAgICAgYmVjYXVzZSBTaGFkb3dJbmNsdXNp
b25TZXQgaXMgaGVsZCBieSB0aGUgc2VsZWN0b3IuCisgICAgICAgIC0gVGh1cywgdGhlcmUgaXMg
bm8gbG9uZ2VyICJhY3RpdmUiIHNlbGVjdG9yIChTaGFkb3dDb250ZW50U2VsZWN0b3I6OnNfY3Vy
cmVudEluc3RhbmNlKQorICAgICAgICAgIEJlY2F1c2UgdGhlIHNlbGVjdG9yIGlzIGFzc29jaWF0
ZWQgZm9yIGVhY2ggU2hhZG93Um9vdCBvYmplY3QuCisgICAgICAgIAorICAgICAgICBObyBuZXcg
dGVzdHMuIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFkb3dDb250ZW50RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50RWxlbWVudDo6YXR0YWNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0NvbnRlbnRFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAq
IGRvbS9TaGFkb3dDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29u
dGVudEVsZW1lbnQ6OmluY2x1c2lvbnMpOgorICAgICAgICAqIGRvbS9TaGFkb3dDb250ZW50U2Vs
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjphcHBlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjp1bmxpbmspOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6U2hhZG93SW5jbHVzaW9uTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0Ojp+U2hhZG93SW5jbHVzaW9uTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25MaXN0OjpmaW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd0luY2x1c2lvbkxpc3Q6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd0luY2x1c2lvbkxpc3Q6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250
ZW50U2VsZWN0b3I6OlNoYWRvd0NvbnRlbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dDb250ZW50U2VsZWN0b3I6On5TaGFkb3dDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yOjpzZWxlY3RJbmNsdXNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yOjp1bnNlbGVjdEluY2x1c2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dDb250ZW50U2VsZWN0b3I6OmZpbmRJbmNsdXNpb25Gb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yOjpkaWRTZWxlY3RJbmNs
dXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Q29udGVudFNlbGVjdG9yOjp3aWxsU2Vs
ZWN0SW5jbHVzaW9uT3Zlcik6CisgICAgICAgICogZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjppbmNsdWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb246OmNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93SW5jbHVzaW9uOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lv
bjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjpTaGFkb3dJ
bmNsdXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6Zmlyc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uTGlzdDo6bGFzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dJbmNsdXNpb25MaXN0Ojppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0lu
Y2x1c2lvblNldDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNldDo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0luY2x1c2lvblNldDo6aXNFbXB0eSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6OlRyYW5zbGF0b3I6Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yOjplcXVh
bCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6Okhhc2g6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93SW5jbHVzaW9uU2V0OjpIYXNoOjplcXVhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Q29udGVudFNlbGVjdG9yOjpoYXNDaGlsZHJlbik6CisgICAgICAgICogZG9tL1No
YWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6flNoYWRvd1Jvb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6aW5jbHVkZXJGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3Q6OmluY2x1c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6ZW5zdXJlSW5j
bHVzaW9ucyk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKwogMjAxMS0wNy0xOSAgU3Rl
dmUgTGFjZXkgIDxzamxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWEg
cGxheWVyIGNvbnRyb2xzIGRvIG5vdCBmYWRlIG91dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDNhMTcyZDA1YzExNWI5ZmRlNjFkOTkyZmJiZmQ5
MWYzNzVjNmJlZDEuLjI5ODA5MGQ2ZWExMzIwY2M3OTE2ZTcwNGMyZGRhZDUwYWJkZDdhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dDb250ZW50RWxlbWVudC5oIgorI2luY2x1ZGUgIlNo
YWRvd0NvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRl
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxlbWVudC5j
cHAKaW5kZXggYzNjMTkxODYxY2YzZTFkOTM1NDJhMWM5NzY4MDQxOTJjOWExZmRlOC4uOTA1YWNh
NWEzNjg3MTQwYjUyMjg4YmFjZTQ4YWJhMTc3ZjRmN2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Q29udGVudEVsZW1lbnQuY3BwCkBAIC0zMyw3MSArMzMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXZvaWQgU2hhZG93SW5jbHVzaW9uOjphcHBlbmQoUGFzc1JlZlB0cjxT
aGFkb3dJbmNsdXNpb24+IG5leHQpCi17Ci0gICAgQVNTRVJUKCFtX25leHQpOwotICAgIEFTU0VS
VCghbmV4dC0+cHJldmlvdXMoKSk7Ci0gICAgbV9uZXh0ID0gbmV4dDsKLSAgICBtX25leHQtPm1f
cHJldmlvdXMgPSB0aGlzOwotfQotCi12b2lkIFNoYWRvd0luY2x1c2lvbjo6dW5saW5rKCkKLXsK
LSAgICBBU1NFUlQoIW1fcHJldmlvdXMpOyAvLyBDYW4gYmUgY2FsbGVkIG9ubHkgZm9yIGEgaGVh
ZC4KLSAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBpdGVtID0gdGhpczsKLSAgICB3aGlsZSAo
aXRlbSkgewotICAgICAgICBBU1NFUlQoIWl0ZW0tPnByZXZpb3VzKCkpOwotICAgICAgICBSZWZQ
dHI8U2hhZG93SW5jbHVzaW9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKLSAgICAgICAgaXRl
bS0+bV9uZXh0LmNsZWFyKCk7Ci0gICAgICAgIGlmIChuZXh0SXRlbSkKLSAgICAgICAgICAgIG5l
eHRJdGVtLT5tX3ByZXZpb3VzLmNsZWFyKCk7Ci0gICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKLSAg
ICB9Ci19Ci0KLVNoYWRvd0luY2x1c2lvbkxpc3Q6OlNoYWRvd0luY2x1c2lvbkxpc3QoKQotewot
fQotCi1TaGFkb3dJbmNsdXNpb25MaXN0Ojp+U2hhZG93SW5jbHVzaW9uTGlzdCgpCi17Ci0gICAg
QVNTRVJUKGlzRW1wdHkoKSk7Ci19Ci0KLVNoYWRvd0luY2x1c2lvbiogU2hhZG93SW5jbHVzaW9u
TGlzdDo6ZmluZChOb2RlKiBjb250ZW50KSBjb25zdAotewotICAgIGZvciAoU2hhZG93SW5jbHVz
aW9uKiBpdGVtID0gZmlyc3QoKTsgaXRlbTsgaXRlbSA9IGl0ZW0tPm5leHQoKSkgewotICAgICAg
ICBpZiAoY29udGVudCA9PSBpdGVtLT5jb250ZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gaXRl
bTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU2hhZG93SW5jbHVzaW9u
TGlzdDo6Y2xlYXIoKQotewotICAgIGlmIChpc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFt
X2xhc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9maXJzdC0+dW5saW5rKCk7
Ci0gICAgbV9maXJzdC5jbGVhcigpOwotICAgIG1fbGFzdC5jbGVhcigpOwotfQotCi12b2lkIFNo
YWRvd0luY2x1c2lvbkxpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gY2hp
bGQpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIW1fbGFzdCk7Ci0g
ICAgICAgIG1fZmlyc3QgPSBtX2xhc3QgPSBjaGlsZDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fbGFzdC0+YXBwZW5kKGNoaWxkKTsKLSAgICBtX2xhc3QgPSBtX2xhc3QtPm5leHQo
KTsKLX0KLQogUGFzc1JlZlB0cjxTaGFkb3dDb250ZW50RWxlbWVudD4gU2hhZG93Q29udGVudEVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChRdWFsaWZpZWROYW1lLCB0YWdOYW1lLCAobnVsbEF0b20sICJ3ZWJraXRTaGFkb3dDb250
ZW50IiwgSFRNTE5hbWVzOjpkaXZUYWcubmFtZXNwYWNlVVJJKCkpKTsKQEAgLTEwNiw2ICs0MSw3
IEBAIFBhc3NSZWZQdHI8U2hhZG93Q29udGVudEVsZW1lbnQ+IFNoYWRvd0NvbnRlbnRFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50CiAKIFNoYWRvd0NvbnRlbnRFbGVtZW50OjpTaGFk
b3dDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KG5hbWUsIGRvY3VtZW50LCBDcmVhdGVIVE1MRWxl
bWVudCkKKyAgICAsIG1faW5jbHVzaW9ucyhhZG9wdFB0cihuZXcgU2hhZG93SW5jbHVzaW9uTGlz
dCgpKSkKIHsKIH0KIApAQCAtMTEzLDMyICs0OSwxOCBAQCBTaGFkb3dDb250ZW50RWxlbWVudDo6
flNoYWRvd0NvbnRlbnRFbGVtZW50KCkKIHsKIH0KIAotc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVNl
dChTaGFkb3dJbmNsdXNpb25MaXN0KiBsaXN0LCBTaGFkb3dJbmNsdXNpb25TZXQqIHNldCkKLXsK
LSAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gbGlzdC0+Zmlyc3QoKTsgaW5j
bHVzaW9uOyBpbmNsdXNpb24gPSBpbmNsdXNpb24tPm5leHQoKSkKLSAgICAgICAgc2V0LT5yZW1v
dmUoaW5jbHVzaW9uKTsKLX0KLQotc3RhdGljIHZvaWQgYWRkVG9TZXQoU2hhZG93SW5jbHVzaW9u
TGlzdCogbGlzdCwgU2hhZG93SW5jbHVzaW9uU2V0KiBzZXQpCi17Ci0gICAgZm9yIChTaGFkb3dJ
bmNsdXNpb24qIGluY2x1c2lvbiA9IGxpc3QtPmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9u
ID0gaW5jbHVzaW9uLT5uZXh0KCkpCi0gICAgICAgIHNldC0+YWRkKGluY2x1c2lvbik7Ci19Ci0K
IHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmF0dGFjaCgpCiB7CiAgICAgQVNTRVJUKCFmaXJz
dENoaWxkKCkpOyAvLyBDdXJyZW50bHkgZG9lc24ndCBzdXBwb3J0IGFueSBsaWdodCBjaGlsZC4K
ICAgICBTdHlsZWRFbGVtZW50OjphdHRhY2goKTsKLSAgICBpZiAoU2hhZG93Q29udGVudFNlbGVj
dG9yKiBzZWxlY3RvciA9IFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6Y3VycmVudEluc3RhbmNlKCkp
IHsKIAotICAgICAgICByZW1vdmVGcm9tU2V0KCZtX2luY2x1c2lvbnMsIHNlbGVjdG9yLT5zaGFk
b3dSb290KCktPmVuc3VyZUluY2x1c2lvbnMoKSk7Ci0gICAgICAgIG1faW5jbHVzaW9ucy5jbGVh
cigpOwotICAgICAgICBzZWxlY3Rvci0+c2VsZWN0SW5jbHVzaW9uKHRoaXMsICZtX2luY2x1c2lv
bnMpOwotICAgICAgICBhZGRUb1NldCgmbV9pbmNsdXNpb25zLCBzZWxlY3Rvci0+c2hhZG93Um9v
dCgpLT5lbnN1cmVJbmNsdXNpb25zKCkpOwotCi0gICAgICAgIGZvciAoU2hhZG93SW5jbHVzaW9u
KiBpbmNsdXNpb24gPSBtX2luY2x1c2lvbnMuZmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNpb24g
PSBpbmNsdXNpb24tPm5leHQoKSkKKyAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93
Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKKyAgICAgICAgU2hhZG93Q29udGVudFNlbGVj
dG9yKiBzZWxlY3RvciA9IHJvb3QtPmVuc3VyZUluY2x1c2lvbnMoKTsKKyAgICAgICAgc2VsZWN0
b3ItPnVuc2VsZWN0SW5jbHVzaW9uKG1faW5jbHVzaW9ucy5nZXQoKSk7CisgICAgICAgIHNlbGVj
dG9yLT5zZWxlY3RJbmNsdXNpb24odGhpcywgbV9pbmNsdXNpb25zLmdldCgpKTsKKyAgICAgICAg
Zm9yIChTaGFkb3dJbmNsdXNpb24qIGluY2x1c2lvbiA9IG1faW5jbHVzaW9ucy0+Zmlyc3QoKTsg
aW5jbHVzaW9uOyBpbmNsdXNpb24gPSBpbmNsdXNpb24tPm5leHQoKSkKICAgICAgICAgICAgIGlu
Y2x1c2lvbi0+Y29udGVudCgpLT5kZXRhY2goKTsKLSAgICAgICAgZm9yIChTaGFkb3dJbmNsdXNp
b24qIGluY2x1c2lvbiA9IG1faW5jbHVzaW9ucy5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lv
biA9IGluY2x1c2lvbi0+bmV4dCgpKQorICAgICAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5j
bHVzaW9uID0gbV9pbmNsdXNpb25zLT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGlu
Y2x1c2lvbi0+bmV4dCgpKQogICAgICAgICAgICAgaW5jbHVzaW9uLT5jb250ZW50KCktPmF0dGFj
aCgpOwogICAgIH0KIH0KQEAgLTE0NiwxMSArNjgsMTEgQEAgdm9pZCBTaGFkb3dDb250ZW50RWxl
bWVudDo6YXR0YWNoKCkKIHZvaWQgU2hhZG93Q29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2Rl
KCkpKSB7Ci0gICAgICAgIHJlbW92ZUZyb21TZXQoJm1faW5jbHVzaW9ucywgcm9vdC0+ZW5zdXJl
SW5jbHVzaW9ucygpKTsKLSAgICAgICAgbV9pbmNsdXNpb25zLmNsZWFyKCk7CisgICAgICAgIGlm
IChTaGFkb3dDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aW5jbHVzaW9ucygpKQor
ICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0SW5jbHVzaW9uKG1faW5jbHVzaW9ucy5nZXQo
KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1faW5jbHVzaW9ucy5pc0VtcHR5KCkpOworICAgIEFT
U0VSVChtX2luY2x1c2lvbnMtPmlzRW1wdHkoKSk7CiAgICAgU3R5bGVkRWxlbWVudDo6ZGV0YWNo
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKaW5kZXgg
YmRhNDgyYmRiMWQ2YWVjYTUzYWQzYjk5NTU5NDlhYzYxZTkxMmJjOC4uN2IzNjY2MjFiN2I5NjNh
NDMwZmMxNDMwOWJkNDY1ZWFlZGZhMDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd0NvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0Nv
bnRlbnRFbGVtZW50LmgKQEAgLTMzLDk0ICszMywxMCBAQAogCiAjaW5jbHVkZSAiU3R5bGVkRWxl
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFkb3dDb250ZW50RWxlbWVudDsK
LQotY2xhc3MgU2hhZG93SW5jbHVzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhZG93SW5jbHVz
aW9uPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBj
cmVhdGUoU2hhZG93Q29udGVudEVsZW1lbnQqLCBOb2RlKik7Ci0KLSAgICBTaGFkb3dDb250ZW50
RWxlbWVudCogaW5jbHVkZXIoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVyOyB9Ci0gICAgTm9k
ZSogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQotICAgIFNoYWRv
d0luY2x1c2lvbiogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQotICAgIFNo
YWRvd0luY2x1c2lvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgp
OyB9Ci0KLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4pOwotICAg
IHZvaWQgdW5saW5rKCk7Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2hhZG93SW5jbHVzaW9u
KFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVudCkKLSAgICAgICAg
OiBtX2luY2x1ZGVyKGluY2x1ZGVyKSwgbV9jb250ZW50KGNvbnRlbnQpCi0gICAgeyB9Ci0KLSAg
ICBTaGFkb3dDb250ZW50RWxlbWVudCogbV9pbmNsdWRlcjsKLSAgICBSZWZQdHI8Tm9kZT4gbV9j
b250ZW50OwotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fbmV4dDsKLSAgICBSZWZQdHI8
U2hhZG93SW5jbHVzaW9uPiBtX3ByZXZpb3VzOwotfTsKLQotaW5saW5lIFBhc3NSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPiBTaGFkb3dJbmNsdXNpb246OmNyZWF0ZShTaGFkb3dDb250ZW50RWxlbWVu
dCogaW5jbHVkZXIsIE5vZGUqIGNvbnRlbnQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
aGFkb3dJbmNsdXNpb24oaW5jbHVkZXIsIGNvbnRlbnQpKTsKLX0KLQotY2xhc3MgU2hhZG93SW5j
bHVzaW9uTGlzdCB7Ci1wdWJsaWM6Ci0gICAgU2hhZG93SW5jbHVzaW9uTGlzdCgpOwotICAgIH5T
aGFkb3dJbmNsdXNpb25MaXN0KCk7Ci0KLSAgICBTaGFkb3dJbmNsdXNpb24qIGZpcnN0KCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQotICAgIFNoYWRvd0luY2x1c2lvbiogbGFzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdC5nZXQoKTsgfQotICAgIFNoYWRvd0luY2x1c2lvbiogZmlu
ZChOb2RlKikgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZmly
c3Q7IH0KLQotICAgIHZvaWQgY2xlYXIoKTsKLSAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFNo
YWRvd0luY2x1c2lvbj4pOwotICAgIHZvaWQgYXBwZW5kKFNoYWRvd0NvbnRlbnRFbGVtZW50Kiwg
Tm9kZSopOwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fZmlyc3Q7
Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9sYXN0OwotfTsKLQotaW5saW5lIHZvaWQg
U2hhZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKFNoYWRvd0NvbnRlbnRFbGVtZW50KiBpbmNsdWRl
ciwgTm9kZSogbm9kZSkKLXsKLSAgICBhcHBlbmQoU2hhZG93SW5jbHVzaW9uOjpjcmVhdGUoaW5j
bHVkZXIsIG5vZGUpKTsKLX0KLQotY2xhc3MgU2hhZG93SW5jbHVzaW9uU2V0IHsKLXB1YmxpYzoK
LSAgICB2b2lkIGFkZChTaGFkb3dJbmNsdXNpb24qIHZhbHVlKSB7IG1fc2V0LmFkZCh2YWx1ZSk7
IH0KLSAgICB2b2lkIHJlbW92ZShTaGFkb3dJbmNsdXNpb24qIHZhbHVlKSB7IG1fc2V0LnJlbW92
ZSh2YWx1ZSk7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0Vt
cHR5KCk7IH0KLSAgICBTaGFkb3dJbmNsdXNpb24qIGZpbmQoTm9kZSoga2V5KSBjb25zdDsKLQot
cHJpdmF0ZToKLSAgICBzdHJ1Y3QgVHJhbnNsYXRvciB7Ci0gICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBOb2RlKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29u
c3QgTm9kZSo+OjpoYXNoKGtleSk7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
U2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24sIGNvbnN0IE5vZGUqIGNvbnRlbnQpIHsgcmV0dXJu
IGluY2x1c2lvbi0+Y29udGVudCgpID09IGNvbnRlbnQ7IH0KLSAgICB9OwotCi0gICAgc3RydWN0
IEhhc2ggewotICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTaGFkb3dJbmNsdXNpb24qIGtl
eSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5LT5jb250ZW50KCkpOyB9
Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKFNoYWRvd0luY2x1c2lvbiogYSwgU2hhZG93SW5j
bHVzaW9uKiBiKSB7IHJldHVybiBhLT5jb250ZW50KCkgPT0gYi0+Y29udGVudCgpOyB9Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFs
c2U7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgSGFzaFNldDxTaGFkb3dJbmNsdXNpb24qLCBIYXNo
PiBQb2ludGVyU2V0OwotCi0gICAgUG9pbnRlclNldCBtX3NldDsKLX07Ci0KLWlubGluZSBTaGFk
b3dJbmNsdXNpb24qIFNoYWRvd0luY2x1c2lvblNldDo6ZmluZChOb2RlKiBrZXkpIGNvbnN0Ci17
Ci0gICAgUG9pbnRlclNldDo6aXRlcmF0b3IgZm91bmQgPSBtX3NldC5maW5kPE5vZGUqLCBTaGFk
b3dJbmNsdXNpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7Ci0gICAgcmV0dXJuIGZvdW5kICE9IG1f
c2V0LmVuZCgpID8gKmZvdW5kIDogMDsKLX0KK2NsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CiAK
IC8vIE5PVEU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMg
aW5zZXJ0aW9uL2RlbGV0aW9uIG9mIFNoYWRvd0NvbnRlbnRFbGVtZW50LgogLy8gWW91IHNob3Vs
ZCBjcmVhdGUgU2hhZG93Q29udGVudEVsZW1lbnQgZHVyaW5nIHRoZSBob3N0IGNvbnN0cnVjdGlv
bi4KQEAgLTEzMyw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogCi0gICAgY29uc3QgU2hhZG93SW5jbHVzaW9u
TGlzdCogaW5jbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuICZtX2luY2x1c2lvbnM7IH0KKyAgICBj
b25zdCBTaGFkb3dJbmNsdXNpb25MaXN0KiBpbmNsdXNpb25zKCkgY29uc3QgeyByZXR1cm4gbV9p
bmNsdXNpb25zLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBTaGFkb3dDb250ZW50RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTE0Myw3ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgeyByZXR1cm4gMDsg
fQogCi0gICAgU2hhZG93SW5jbHVzaW9uTGlzdCBtX2luY2x1c2lvbnM7CisgICAgT3duUHRyPFNo
YWRvd0luY2x1c2lvbkxpc3Q+IG1faW5jbHVzaW9uczsKIH07CiAKIGlubGluZSBTaGFkb3dDb250
ZW50RWxlbWVudCogdG9TaGFkb3dDb250ZW50RWxlbWVudChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVjdG9yLmNwcAppbmRleCBiMDhmYzc1YjhlMzA0
YTllZmEzMjk2M2ZlZTIyMzQwNDI5NjBkYmMxLi40MTdkMDgwOTg3ZWIwZWIyZTFkMzk5ZjlkYTM4
NTBlZTljYjliNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVudFNlbGVj
dG9yLmNwcApAQCAtMzMsMjEgKzMzLDc4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2hh
ZG93Q29udGVudFNlbGVjdG9yKiBTaGFkb3dDb250ZW50U2VsZWN0b3I6OnNfY3VycmVudEluc3Rh
bmNlID0gMDsKK3ZvaWQgU2hhZG93SW5jbHVzaW9uOjphcHBlbmQoUGFzc1JlZlB0cjxTaGFkb3dJ
bmNsdXNpb24+IG5leHQpCit7CisgICAgQVNTRVJUKCFtX25leHQpOworICAgIEFTU0VSVCghbmV4
dC0+cHJldmlvdXMoKSk7CisgICAgbV9uZXh0ID0gbmV4dDsKKyAgICBtX25leHQtPm1fcHJldmlv
dXMgPSB0aGlzOworfQogCi1TaGFkb3dDb250ZW50U2VsZWN0b3I6OlNoYWRvd0NvbnRlbnRTZWxl
Y3RvcihTaGFkb3dSb290KiBzaGFkb3dSb290KQotICAgIDogbV9wYXJlbnQoc19jdXJyZW50SW5z
dGFuY2UpCi0gICAgLCBtX3NoYWRvd1Jvb3Qoc2hhZG93Um9vdCkKK3ZvaWQgU2hhZG93SW5jbHVz
aW9uOjp1bmxpbmsoKQoreworICAgIEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBjYWxs
ZWQgb25seSBmb3IgYSBoZWFkLgorICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGl0ZW0gPSB0
aGlzOworICAgIHdoaWxlIChpdGVtKSB7CisgICAgICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMo
KSk7CisgICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG5leHRJdGVtID0gaXRlbS0+bV9u
ZXh0OworICAgICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKKyAgICAgICAgaWYgKG5leHRJdGVt
KQorICAgICAgICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKKyAgICAgICAgaXRl
bSA9IG5leHRJdGVtOworICAgIH0KK30KKworU2hhZG93SW5jbHVzaW9uTGlzdDo6U2hhZG93SW5j
bHVzaW9uTGlzdCgpCit7Cit9CisKK1NoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNp
b25MaXN0KCkKK3sKKyAgICBBU1NFUlQoaXNFbXB0eSgpKTsKK30KKworU2hhZG93SW5jbHVzaW9u
KiBTaGFkb3dJbmNsdXNpb25MaXN0OjpmaW5kKE5vZGUqIGNvbnRlbnQpIGNvbnN0Cit7CisgICAg
Zm9yIChTaGFkb3dJbmNsdXNpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+
bmV4dCgpKSB7CisgICAgICAgIGlmIChjb250ZW50ID09IGl0ZW0tPmNvbnRlbnQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwordm9p
ZCBTaGFkb3dJbmNsdXNpb25MaXN0OjpjbGVhcigpCit7CisgICAgaWYgKGlzRW1wdHkoKSkgewor
ICAgICAgICBBU1NFUlQoIW1fbGFzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2ZpcnN0LT51bmxpbmsoKTsKKyAgICBtX2ZpcnN0LmNsZWFyKCk7CisgICAgbV9sYXN0LmNsZWFy
KCk7Cit9CisKK3ZvaWQgU2hhZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPiBjaGlsZCkKK3sKKyAgICBpZiAoaXNFbXB0eSgpKSB7CisgICAgICAgIEFT
U0VSVCghbV9sYXN0KTsKKyAgICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNoaWxkOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQpOworICAgIG1fbGFz
dCA9IG1fbGFzdC0+bmV4dCgpOworfQorCitTaGFkb3dDb250ZW50U2VsZWN0b3I6OlNoYWRvd0Nv
bnRlbnRTZWxlY3RvcigpCiB7Ci0gICAgc19jdXJyZW50SW5zdGFuY2UgPSB0aGlzOwotICAgIGZv
ciAoTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3QtPnNoYWRvd0hvc3QoKS0+Zmlyc3RDaGlsZCgpOyBu
b2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBl
bmQobm9kZSk7CiB9CiAKIFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6flNoYWRvd0NvbnRlbnRTZWxl
Y3RvcigpCiB7Ci0gICAgQVNTRVJUKHNfY3VycmVudEluc3RhbmNlID09IHRoaXMpOwotICAgIHNf
Y3VycmVudEluc3RhbmNlID0gbV9wYXJlbnQ7CisgICAgQVNTRVJUKG1fY2hpbGRyZW4uaXNFbXB0
eSgpKTsKIH0KIAogdm9pZCBTaGFkb3dDb250ZW50U2VsZWN0b3I6OnNlbGVjdEluY2x1c2lvbihT
aGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvd0luY2x1c2lvbkxpc3Qq
IGluY2x1c2lvbnMpCkBAIC02MSw5ICsxMTgsMzYgQEAgdm9pZCBTaGFkb3dDb250ZW50U2VsZWN0
b3I6OnNlbGVjdEluY2x1c2lvbihTaGFkb3dDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQK
ICAgICAgICAgaWYgKCFjb250ZW50RWxlbWVudC0+c2hvdWxkSW5jbHVkZShjaGlsZCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpbmNsdXNpb25zLT5hcHBlbmQoY29udGVudEVs
ZW1lbnQsIGNoaWxkKTsKKyAgICAgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gaW5jbHVzaW9u
ID0gU2hhZG93SW5jbHVzaW9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQsIGNoaWxkKTsKKyAgICAg
ICAgaW5jbHVzaW9ucy0+YXBwZW5kKGluY2x1c2lvbik7CisgICAgICAgIG1faW5jbHVzaW9uU2V0
LmFkZChpbmNsdXNpb24uZ2V0KCkpOwogICAgICAgICBtX2NoaWxkcmVuW2ldID0gMDsKICAgICB9
CiB9CiAKK3ZvaWQgU2hhZG93Q29udGVudFNlbGVjdG9yOjp1bnNlbGVjdEluY2x1c2lvbihTaGFk
b3dJbmNsdXNpb25MaXN0KiBsaXN0KQoreworICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNs
dXNpb24gPSBsaXN0LT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+
bmV4dCgpKQorICAgICAgICBtX2luY2x1c2lvblNldC5yZW1vdmUoaW5jbHVzaW9uKTsKKyAgICBs
aXN0LT5jbGVhcigpOworfQorCitTaGFkb3dJbmNsdXNpb24qIFNoYWRvd0NvbnRlbnRTZWxlY3Rv
cjo6ZmluZEluY2x1c2lvbkZvcihOb2RlKiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5j
bHVzaW9uU2V0LmZpbmQoa2V5KTsKK30KKwordm9pZCBTaGFkb3dDb250ZW50U2VsZWN0b3I6OmRp
ZFNlbGVjdEluY2x1c2lvbigpCit7CisgICAgbV9jaGlsZHJlbi5jbGVhcigpOworfQorCit2b2lk
IFNoYWRvd0NvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVjdEluY2x1c2lvbk92ZXIoU2hhZG93Um9v
dCogc2NvcGUpCit7CisgICAgaWYgKCFtX2NoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5zaGFkb3dIb3N0KCktPmZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKG5vZGUpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Q29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Q29udGVu
dFNlbGVjdG9yLmgKaW5kZXggYjE5NjBlZjIxZjI0NTgzY2U0MDhmZWYxZTUxMjBkMDU5NWFhYThl
Ni4uNzE3YTAyYmE5ZjQzMDVlMTIxNTM3NzEyMzYzN2UwYjZhODUwNTgzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd0NvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dDb250ZW50U2VsZWN0b3IuaApAQCAtMzIsNiArMzIsOCBAQAogI2Rl
ZmluZSBTaGFkb3dDb250ZW50U2VsZWN0b3JfaAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSwyNyAr
NDEsMTA5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CiBjbGFzcyBT
aGFkb3dDb250ZW50RWxlbWVudDsKLWNsYXNzIFJlbmRlck9iamVjdDsKKworY2xhc3MgU2hhZG93
SW5jbHVzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhZG93SW5jbHVzaW9uPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBjcmVhdGUoU2hhZG93Q29u
dGVudEVsZW1lbnQqLCBOb2RlKik7CisKKyAgICBTaGFkb3dDb250ZW50RWxlbWVudCogaW5jbHVk
ZXIoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVyOyB9CisgICAgTm9kZSogY29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogbmV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiog
cHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9CisKKyAgICB2b2lk
IGFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4pOworICAgIHZvaWQgdW5saW5rKCk7
CisKK3ByaXZhdGU6CisgICAgU2hhZG93SW5jbHVzaW9uKFNoYWRvd0NvbnRlbnRFbGVtZW50Kiwg
Tm9kZSopOworCisgICAgU2hhZG93Q29udGVudEVsZW1lbnQqIG1faW5jbHVkZXI7CisgICAgUmVm
UHRyPE5vZGU+IG1fY29udGVudDsKKyAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBtX25leHQ7
CisgICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9wcmV2aW91czsKK307CisKK2lubGluZSBT
aGFkb3dJbmNsdXNpb246OlNoYWRvd0luY2x1c2lvbihTaGFkb3dDb250ZW50RWxlbWVudCogaW5j
bHVkZXIsIE5vZGUqIGNvbnRlbnQpCisgICAgOiBtX2luY2x1ZGVyKGluY2x1ZGVyKSwgbV9jb250
ZW50KGNvbnRlbnQpCit7IH0KKworaW5saW5lIFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBT
aGFkb3dJbmNsdXNpb246OmNyZWF0ZShTaGFkb3dDb250ZW50RWxlbWVudCogaW5jbHVkZXIsIE5v
ZGUqIGNvbnRlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dJbmNsdXNpb24o
aW5jbHVkZXIsIGNvbnRlbnQpKTsKK30KKworY2xhc3MgU2hhZG93SW5jbHVzaW9uTGlzdCB7Citw
dWJsaWM6CisgICAgU2hhZG93SW5jbHVzaW9uTGlzdCgpOworICAgIH5TaGFkb3dJbmNsdXNpb25M
aXN0KCk7CisKKyAgICBTaGFkb3dJbmNsdXNpb24qIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXJzdC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogbGFzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdC5nZXQoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogZmluZChOb2RlKikgY29uc3Q7
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZmlyc3Q7IH0KKworICAgIHZv
aWQgY2xlYXIoKTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4p
OworCitwcml2YXRlOgorICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG1fZmlyc3Q7CisgICAg
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9sYXN0OworfTsKKworCitjbGFzcyBTaGFkb3dJbmNs
dXNpb25TZXQgeworcHVibGljOgorICAgIHZvaWQgYWRkKFNoYWRvd0luY2x1c2lvbiogdmFsdWUp
IHsgbV9zZXQuYWRkKHZhbHVlKTsgfQorICAgIHZvaWQgcmVtb3ZlKFNoYWRvd0luY2x1c2lvbiog
dmFsdWUpIHsgbV9zZXQucmVtb3ZlKHZhbHVlKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2V0LmlzRW1wdHkoKTsgfQorICAgIFNoYWRvd0luY2x1c2lvbiogZmluZChO
b2RlKiBrZXkpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVjdCBUcmFuc2xhdG9yIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IE5vZGUqIGtleSkg
eyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5KTsgfQorICAgICAgICBzdGF0
aWMgYm9vbCBlcXVhbChjb25zdCBTaGFkb3dJbmNsdXNpb24qIGluY2x1c2lvbiwgY29uc3QgTm9k
ZSogY29udGVudCkgeyByZXR1cm4gaW5jbHVzaW9uLT5jb250ZW50KCkgPT0gY29udGVudDsgfQor
ICAgIH07CisKKyAgICBzdHJ1Y3QgSGFzaCB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KFNoYWRvd0luY2x1c2lvbioga2V5KSB7IHJldHVybiBQdHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFz
aChrZXktPmNvbnRlbnQoKSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoU2hhZG93SW5j
bHVzaW9uKiBhLCBTaGFkb3dJbmNsdXNpb24qIGIpIHsgcmV0dXJuIGEtPmNvbnRlbnQoKSA9PSBi
LT5jb250ZW50KCk7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoU2V0PFNo
YWRvd0luY2x1c2lvbiosIEhhc2g+IFBvaW50ZXJTZXQ7CisKKyAgICBQb2ludGVyU2V0IG1fc2V0
OworfTsKKworaW5saW5lIFNoYWRvd0luY2x1c2lvbiogU2hhZG93SW5jbHVzaW9uU2V0OjpmaW5k
KE5vZGUqIGtleSkgY29uc3QKK3sKKyAgICBQb2ludGVyU2V0OjppdGVyYXRvciBmb3VuZCA9IG1f
c2V0LmZpbmQ8Tm9kZSosIFNoYWRvd0luY2x1c2lvblNldDo6VHJhbnNsYXRvcj4oa2V5KTsKKyAg
ICByZXR1cm4gZm91bmQgIT0gbV9zZXQuZW5kKCkgPyAqZm91bmQgOiAwOworfQogCiBjbGFzcyBT
aGFkb3dDb250ZW50U2VsZWN0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd0Nv
bnRlbnRTZWxlY3Rvcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU2hhZG93Q29udGVudFNlbGVj
dG9yKFNoYWRvd1Jvb3QqKTsKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3IoKTsKICAgICB+U2hh
ZG93Q29udGVudFNlbGVjdG9yKCk7CiAKICAgICB2b2lkIHNlbGVjdEluY2x1c2lvbihTaGFkb3dD
b250ZW50RWxlbWVudCosIFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKKyAgICB2b2lkIHVuc2VsZWN0
SW5jbHVzaW9uKFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKKyAgICBTaGFkb3dJbmNsdXNpb24qIGZp
bmRJbmNsdXNpb25Gb3IoTm9kZSoga2V5KSBjb25zdDsKKworICAgIHZvaWQgd2lsbFNlbGVjdElu
Y2x1c2lvbk92ZXIoU2hhZG93Um9vdCopOworICAgIHZvaWQgZGlkU2VsZWN0SW5jbHVzaW9uKCk7
CisgICAgYm9vbCBoYXNDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuICFtX2NoaWxkcmVuLmlzRW1w
dHkoKTsgfQogCi0gICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93Um9vdDsgfQotICAgIHN0YXRpYyBTaGFkb3dDb250ZW50U2VsZWN0b3IqIGN1cnJlbnRJ
bnN0YW5jZSgpIHsgcmV0dXJuIHNfY3VycmVudEluc3RhbmNlOyB9CiAKIHByaXZhdGU6Ci0gICAg
U2hhZG93Q29udGVudFNlbGVjdG9yKiBtX3BhcmVudDsKLSAgICBTaGFkb3dSb290KiBtX3NoYWRv
d1Jvb3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2hpbGRyZW47CisgICAgdm9pZCBy
ZW1vdmVGcm9tU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKKyAgICB2b2lkIGFkZFRvU2V0KFNo
YWRvd0luY2x1c2lvbkxpc3QqKTsKIAotICAgIHN0YXRpYyBTaGFkb3dDb250ZW50U2VsZWN0b3Iq
IHNfY3VycmVudEluc3RhbmNlOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NoaWxkcmVu
OworICAgIFNoYWRvd0luY2x1c2lvblNldCBtX2luY2x1c2lvblNldDsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAxY2IwNGE0NzNkM2E5Y2UwN2VhOGNlNGE0YTliOGNh
OTZiZDQ4NWNmLi5jMzYwNzA5NzY5Nzc3ZTJmYmYxZWY1Mjk5MzYwNTQxNWFmNGFmMjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01MCw3ICs1MCw2IEBAIFNoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgp
CiB7Ci0gICAgQVNTRVJUKCFtX2luY2x1c2lvbnMgfHwgbV9pbmNsdXNpb25zLT5pc0VtcHR5KCkp
OwogfQogCiBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUoKSBjb25zdApAQCAtMTAxLDcgKzEw
MCw3IEBAIFNoYWRvd0NvbnRlbnRFbGVtZW50KiBTaGFkb3dSb290OjppbmNsdWRlckZvcihOb2Rl
KiBub2RlKSBjb25zdAogewogICAgIGlmICghbV9pbmNsdXNpb25zKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBTaGFkb3dJbmNsdXNpb24qIGZvdW5kID0gbV9pbmNsdXNpb25zLT5maW5kKG5vZGUp
OworICAgIFNoYWRvd0luY2x1c2lvbiogZm91bmQgPSBtX2luY2x1c2lvbnMtPmZpbmRJbmNsdXNp
b25Gb3Iobm9kZSk7CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGZvdW5kLT5pbmNsdWRlcigpOwpAQCAtMTM3LDE5ICsxMzYsMjUgQEAgdm9pZCBTaGFkb3dS
b290OjpzZXRBcHBseUF1dGhvclNoZWV0cyhib29sIHZhbHVlKQogCiB2b2lkIFNoYWRvd1Jvb3Q6
OmF0dGFjaCgpCiB7Ci0gICAgU2hhZG93Q29udGVudFNlbGVjdG9yIHNlbGVjdG9yKHRoaXMpOwor
ICAgIC8vIENoaWxkcmVuIG9mIG1faW5jbHVzaW9ucyBpcyBwb3B1bGF0ZWQgbGF6aWx5IGluCisg
ICAgLy8gZW5zdXJlSW5jbHVzaW9ucygpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0Cisg
ICAgLy8gaXQgaXMgaW4gY2xlYW4gc3RhdGUuCisgICAgQVNTRVJUKCFtX2luY2x1c2lvbnMgfHwg
IW1faW5jbHVzaW9ucy0+aGFzQ2hpbGRyZW4oKSk7CiAgICAgVHJlZVNjb3BlOjphdHRhY2goKTsK
KyAgICBpZiAobV9pbmNsdXNpb25zKQorICAgICAgICBtX2luY2x1c2lvbnMtPmRpZFNlbGVjdElu
Y2x1c2lvbigpOwogfQogCi1TaGFkb3dJbmNsdXNpb25TZXQqIFNoYWRvd1Jvb3Q6OmluY2x1c2lv
bnMoKSBjb25zdAorU2hhZG93Q29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290OjppbmNsdXNpb25z
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOwogfQogCi1TaGFkb3dJ
bmNsdXNpb25TZXQqIFNoYWRvd1Jvb3Q6OmVuc3VyZUluY2x1c2lvbnMoKQorU2hhZG93Q29udGVu
dFNlbGVjdG9yKiBTaGFkb3dSb290OjplbnN1cmVJbmNsdXNpb25zKCkKIHsKICAgICBpZiAoIW1f
aW5jbHVzaW9ucykKLSAgICAgICAgbV9pbmNsdXNpb25zID0gYWRvcHRQdHIobmV3IFNoYWRvd0lu
Y2x1c2lvblNldCgpKTsKKyAgICAgICAgbV9pbmNsdXNpb25zID0gYWRvcHRQdHIobmV3IFNoYWRv
d0NvbnRlbnRTZWxlY3RvcigpKTsKKyAgICBtX2luY2x1c2lvbnMtPndpbGxTZWxlY3RJbmNsdXNp
b25PdmVyKHRoaXMpOwogICAgIHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCmluZGV4IGVkMGU3ODdhYWVkYWEyY2Q2ZDYzNTY4ZmUwOWJlYzdhNjlj
YmQyNmUuLmQxNWU0NjVmNmQ4NDllNDdhZWE1NmYxNDU2YjEzMzUxODJmMDJmNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2hhZG93Q29udGVudEVsZW1lbnQ7Ci1jbGFzcyBTaGFk
b3dJbmNsdXNpb25TZXQ7CitjbGFzcyBTaGFkb3dDb250ZW50U2VsZWN0b3I7CiAKIGNsYXNzIFNo
YWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKQEAgLTQ5LDggKzQ5LDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhcHBseUF1dGhvclNoZWV0cygpIGNvbnN0OwogICAg
IHZvaWQgc2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCk7CiAKLSAgICBTaGFkb3dJbmNsdXNpb25T
ZXQqIGluY2x1c2lvbnMoKSBjb25zdDsKLSAgICBTaGFkb3dJbmNsdXNpb25TZXQqIGVuc3VyZUlu
Y2x1c2lvbnMoKTsKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3IqIGluY2x1c2lvbnMoKSBjb25z
dDsKKyAgICBTaGFkb3dDb250ZW50U2VsZWN0b3IqIGVuc3VyZUluY2x1c2lvbnMoKTsKIAogcHJp
dmF0ZToKICAgICBTaGFkb3dSb290KERvY3VtZW50Kik7CkBAIC02NCw3ICs2NCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0OwogCiAgICAgYm9vbCBtX2Fw
cGx5QXV0aG9yU2hlZXRzOwotICAgIE93blB0cjxTaGFkb3dJbmNsdXNpb25TZXQ+IG1faW5jbHVz
aW9uczsKKyAgICBPd25QdHI8U2hhZG93Q29udGVudFNlbGVjdG9yPiBtX2luY2x1c2lvbnM7CiB9
OwogCiBpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>