<?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>78607</bug_id>
          
          <creation_ts>2012-02-14 08:36:38 -0800</creation_ts>
          <short_desc>[BlackBerry] Upstreaming DOMSupport files</short_desc>
          <delta_ts>2012-02-14 14:58:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>73144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nima Ghanavatian">nima.ghanavatian</reporter>
          <assigned_to name="Nima Ghanavatian">nima.ghanavatian</assigned_to>
          <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556326</commentid>
    <comment_count>0</comment_count>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-02-14 08:36:38 -0800</bug_when>
    <thetext>This includes DOMSupport.{h,cpp}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556488</commentid>
    <comment_count>1</comment_count>
      <attachid>127016</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-02-14 12:25:00 -0800</bug_when>
    <thetext>Created attachment 127016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556509</commentid>
    <comment_count>2</comment_count>
      <attachid>127016</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-14 12:52:51 -0800</bug_when>
    <thetext>Comment on attachment 127016
Patch

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556549</commentid>
    <comment_count>3</comment_count>
      <attachid>127016</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-14 13:20:30 -0800</bug_when>
    <thetext>Comment on attachment 127016
Patch

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556557</commentid>
    <comment_count>4</comment_count>
      <attachid>127031</attachid>
    <who name="Nima Ghanavatian">nima.ghanavatian</who>
    <bug_when>2012-02-14 13:29:35 -0800</bug_when>
    <thetext>Created attachment 127031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556596</commentid>
    <comment_count>5</comment_count>
      <attachid>127031</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-02-14 14:23:30 -0800</bug_when>
    <thetext>Comment on attachment 127031
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556644</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 14:56:25 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 127031:

perf/object-keys.html bug 63769 (author: ojan@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556648</commentid>
    <comment_count>7</comment_count>
      <attachid>127031</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 14:58:49 -0800</bug_when>
    <thetext>Comment on attachment 127031
Patch

Clearing flags on attachment: 127031

Committed r107743: &lt;http://trac.webkit.org/changeset/107743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556649</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 14:58:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127016</attachid>
            <date>2012-02-14 12:25:00 -0800</date>
            <delta_ts>2012-02-14 13:29:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78607-20120214152228.patch</filename>
            <type>text/plain</type>
            <size>19026</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1NjczM2NhZDQxNjI3MzZi
MjFlZmYwNGM0YzJmZWZhMzZiNDU1ZWYuLjM5M2E3MTEyNWNmZGQ2ZDljMWJkYTFlMTk4OTkxZjFk
ZGRkZGVjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMTQgIE5pbWEgR2hh
bmF2YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0g
VXBzdHJlYW1pbmcgRE9NU3VwcG9ydCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtaW5nLCBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6IEFkZGVk
LgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0Lmg6IEFkZGVk
LgorCiAyMDEyLTAyLTEzICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+
CiAKICAgICAgICAgSW5pdGlhbCB1cHN0cmVhbWluZyBvZiBzZWxlY3Rpb24gaGFuZGxpbmcgY29k
ZSBmb3IgQmxhY2tCZXJyeSBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OTkwN2IwMjNmYjZm
MzRkMGRmOTExMjA3YzE3NjhkZjQ2NGM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMCwwICsxLDQw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbC5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlZpc2libGVT
ZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJXVEZTdHJpbmcuaCIKKworI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCisjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorCisjaW5jbHVkZSA8bGltaXRzPgor
Cit1c2luZyBXVEY6OlZlY3RvcjsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIERPTVN1cHBv
cnQgeworCit2b2lkIHZpc2libGVUZXh0UXVhZHMoY29uc3QgUmFuZ2UmIHJhbmdlLCBWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQoreworICAgIC8vIFJh
bmdlOjp0ZXh0UXVhZHMgaW5jbHVkZXMgaGlkZGVuIHRleHQsIHdoaWNoIHdlIGRvbid0IHdhbnQu
CisgICAgLy8gVG8gd29yayBhcm91bmQgdGhpcywgdGhpcyBpcyBhIGNvcHkgb2YgaXQgd2hpY2gg
c2tpcHMgaGlkZGVuIGVsZW1lbnRzLgorICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2Uu
c3RhcnRDb250YWluZXIoKTsKKyAgICBOb2RlKiBlbmRDb250YWluZXIgPSByYW5nZS5lbmRDb250
YWluZXIoKTsKKworICAgIGlmICghc3RhcnRDb250YWluZXIgfHwgIWVuZENvbnRhaW5lcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTm9kZSogc3RvcE5vZGUgPSByYW5nZS5wYXN0TGFzdE5vZGUo
KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZS5maXJzdE5vZGUoKTsgbm9kZSAhPSBzdG9w
Tm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBSZW5kZXJP
YmplY3QqIHIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXIgfHwgIXItPmlzVGV4
dCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
UmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChyKTsKKyAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFydENvbnRhaW5lciA/IHJhbmdlLnN0YXJ0T2Zmc2V0KCkg
OiAwOworICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbm9kZSA9PSBlbmRDb250YWluZXIgPyByYW5n
ZS5lbmRPZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAg
IHJlbmRlclRleHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZShxdWFkcywgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgdXNlU2VsZWN0aW9uSGVpZ2h0KTsKKyAgICB9Cit9CisKK2Jvb2wgaXNUZXh0SW5w
dXRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmlzVGV4
dEZvcm1Db250cm9sKCkKKyAgICAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRleHRhcmVhVGFnKQorICAgICAgICAgICB8fCBlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJs
ZSgpOworfQorCitib29sIGlzUGFzc3dvcmRFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlucHV0VGFnKQorICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCktPmlzUGFzc3dvcmRGaWVsZCgpOworfQorCitXVEY6OlN0cmluZyBpbnB1
dEVsZW1lbnRUZXh0KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50KQorICAg
ICAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKKworICAgIFdURjo6U3RyaW5nIGVsZW1lbnRUZXh0
OworICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7Cisg
ICAgICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0
PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudFRleHQg
PSBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7CisgICAgfSBlbHNlIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKSB7CisgICAgICAgIGNvbnN0IEhUTUxUZXh0QXJl
YUVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudFRleHQgPSBpbnB1dEVsZW1lbnQtPnZh
bHVlKCk7CisgICAgfSBlbHNlIGlmIChlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Cisg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JOb2RlID0gcmFuZ2VPZkNvbnRlbnRzKGVsZW1l
bnQpOworICAgICAgICBlbGVtZW50VGV4dCA9IHJhbmdlRm9yTm9kZS5nZXQoKS0+dGV4dCgpOwor
ICAgIH0KKyAgICByZXR1cm4gZWxlbWVudFRleHQ7Cit9CisKK2Jvb2wgaXNFbGVtZW50VHlwZVBs
dWdpbihjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpvYmplY3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpl
bWJlZFRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFwcGxl
dFRhZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogdG9UZXh0Q29udHJvbEVsZW1lbnQoTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIShub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKTsKKyAgICBpZiAoIWVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgaWYg
KCFmb3JtRWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihmb3Jt
RWxlbWVudCk7Cit9CisKK2Jvb2wgaXNQb3B1cElucHV0RmllbGQoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gaXNEYXRlVGltZUlucHV0RmllbGQoZWxlbWVudCkgfHwgaXND
b2xvcklucHV0RmllbGQoZWxlbWVudCk7Cit9CisKK2Jvb2wgaXNEYXRlVGltZUlucHV0RmllbGQo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJ
bnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgaGF2
ZSBwb3B1cCdzLgorICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzRGF0ZUNvbnRyb2woKQorICAgICAg
ICB8fCBpbnB1dEVsZW1lbnQtPmlzRGF0ZVRpbWVDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRF
bGVtZW50LT5pc0RhdGVUaW1lTG9jYWxDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRFbGVtZW50
LT5pc1RpbWVDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRFbGVtZW50LT5pc01vbnRoQ29udHJv
bCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgaXNDb2xvcklucHV0RmllbGQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9
IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKworI2lmIEVO
QUJMRShJTlBVVF9DT0xPUikKKyAgICBpZiAoaW5wdXRFbGVtZW50LT5pc0NvbG9yQ29udHJvbCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50U3VwcG9ydHNBdXRvY29ycmVjdChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQoreworICAgIC8vIEZpcnN0IHdlIGNoZWNrIHRoZSBpbnB1dCBpdGVtIGl0c2Vs
Zi4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZCwKKyAgICAvLyB3ZSBjaGVjayBpdHMg
cGFyZW50IGZvcm0uCisgICAgUXVhbGlmaWVkTmFtZSBhdXRvY29ycmVjdEF0dHIgPSBRdWFsaWZp
ZWROYW1lKG51bGxBdG9tLCAiYXV0b2NvcnJlY3QiLCBudWxsQXRvbSk7CisgICAgaWYgKGVsZW1l
bnQtPmZhc3RIYXNBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyKSkgeworICAgICAgICBBdG9taWNT
dHJpbmcgYXR0cmlidXRlU3RyaW5nID0gZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdXRvY29y
cmVjdEF0dHIpOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5n
LCAib2ZmIikpCisgICAgICAgICAgICByZXR1cm4gT2ZmOworICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5nLCAib24iKSkKKyAgICAgICAgICAgIHJldHVybiBPbjsK
KyAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCByZXR1cm5lZCwgaXQgd2Fzbid0IHNldCBwcm9wZXJs
eS4gQ2hlY2sgdGhlIGZvcm0gZm9yIGFuIGV4cGxpY2l0IHNldHRpbmcKKyAgICAgICAgLy8gYmVj
YXVzZSB0aGUgYXR0cmlidXRlIHdhcyBwcm92aWRlZCwgYnV0IGludmFsaWQuCisgICAgfQorICAg
IGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7CisgICAgICAgIGNvbnN0IEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRN
TEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAoZm9ybUVsZW1lbnQt
PmZvcm0oKSAmJiBmb3JtRWxlbWVudC0+Zm9ybSgpLT5mYXN0SGFzQXR0cmlidXRlKGF1dG9jb3Jy
ZWN0QXR0cikpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVTdHJpbmcgPSBm
b3JtRWxlbWVudC0+Zm9ybSgpLT5mYXN0R2V0QXR0cmlidXRlKGF1dG9jb3JyZWN0QXR0cik7Cisg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5nLCAib2ZmIikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE9mZjsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShhdHRyaWJ1dGVTdHJpbmcsICJvbiIpKQorICAgICAgICAgICAgICAgIHJldHVybiBP
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBEZWZhdWx0OworfQorCisvLyBDaGVj
ayBpZiB0aGlzIGlzIGFuIGlucHV0IGZpZWxkIHRoYXQgd2lsbCBiZSBmb2N1c2VkICYgcmVxdWly
ZSBpbnB1dCBzdXBwb3J0LgorYm9vbCBpc1RleHRCYXNlZENvbnRlbnRFZGl0YWJsZUVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChlbGVtZW50LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzUG9wdXBJbnB1dEZpZWxkKGVsZW1lbnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZWxlbWVudC0+aXNUZXh0Rm9ybUNv
bnRyb2woKSB8fCBlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJsZSgpOworfQorCitJbnRSZWN0IHRy
YW5zZm9ybWVkQm91bmRpbmdCb3hGb3JSYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UpCit7CisgICAg
Ly8gQmFzZWQgb24gUmFuZ2U6OmJvdW5kaW5nQm94LCB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdHJh
bnNmb3JtcywgYW5kCisgICAgLy8gUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCwgd2hpY2ggZG9lcy4KKyAgICBJbnRSZWN0IHJlc3VsdDsKKyAgICBWZWN0b3I8RmxvYXRRdWFk
PiBxdWFkczsKKyAgICB2aXNpYmxlVGV4dFF1YWRzKHJhbmdlLCBxdWFkcyk7CisgICAgY29uc3Qg
c2l6ZV90IG4gPSBxdWFkcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyAr
K2kpCisgICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNl
bGVjdGlvbkZvcklucHV0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiB2
aXNpYmxlU2VsZWN0aW9uRm9yUmFuZ2VJbnB1dEVsZW1lbnQoZWxlbWVudCwgMCwgaW5wdXRFbGVt
ZW50VGV4dChlbGVtZW50KS5sZW5ndGgoKSk7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gdmlzaWJs
ZVNlbGVjdGlvbkZvclJhbmdlSW5wdXRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFy
dCwgaW50IGVuZCkKK3sKKyAgICBpZiAoRE9NU3VwcG9ydDo6dG9UZXh0Q29udHJvbEVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2wqIHRleHRSZW5kZXIgPSB0b1Jl
bmRlclRleHRDb250cm9sKGVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAoIXRleHRS
ZW5kZXIpCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworCisgICAgICAg
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdGV4dFJlbmRlci0+dmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgoc3RhcnQpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb247
CisgICAgICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0
YXJ0UG9zaXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGV4
dFJlbmRlci0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoZW5kKTsKKworICAgICAgICByZXR1cm4g
VmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgfQorCisg
ICAgLy8gTXVzdCBiZSBjb250ZW50IGVkaXRhYmxlLCBnZW5lcmF0ZSB0aGUgcmFuZ2UuCisgICAg
UmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoZWxlbWVudCwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICBpZiAoc3Rh
cnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5n
ZS5nZXQoKS0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKKworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlU3RhcnQoc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNU
UkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoc2VsZWN0aW9uUmFuZ2UtPmVu
ZFBvc2l0aW9uKCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKKworICAgIHJldHVybiBWaXNpYmxl
U2VsZWN0aW9uKHZpc2libGVTdGFydCwgdmlzaWJsZUVuZCk7Cit9CisKK05vZGUqIERPTUNvbnRh
aW5lck5vZGVGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgTm9k
ZSogbm9kZUF0UG9zID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOworICAgIGlmIChub2RlQXRQ
b3MtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG5vZGVBdFBvcyA9IG5vZGVBdFBvcy0+c2hh
ZG93QW5jZXN0b3JOb2RlKCk7CisKKyAgICByZXR1cm4gbm9kZUF0UG9zOworfQorCitib29sIGlz
UG9zaXRpb25Jbk5vZGUoTm9kZSogbm9kZSwgY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQorewor
ICAgIGludCBvZmZzZXQgPSAwOworICAgIE5vZGUqIGRvbU5vZGVBdFBvcyA9IERPTUNvbnRhaW5l
ck5vZGVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAgaWYgKGRvbU5vZGVBdFBvcyA9PSBwb3Np
dGlvbi5jb250YWluZXJOb2RlKCkpCisgICAgICAgIG9mZnNldCA9IHBvc2l0aW9uLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JOb2Rl
ID0gcmFuZ2VPZkNvbnRlbnRzKG5vZGUpOworICAgIGludCBlYzsKKworICAgIHJldHVybiByYW5n
ZUZvck5vZGUtPmlzUG9pbnRJblJhbmdlKGRvbU5vZGVBdFBvcywgb2Zmc2V0LCBlYyk7Cit9CisK
Ky8vIFRoaXMgaXMgYSBUcmlzdGF0ZSByZXR1cm4gdG8gYWxsb3cgdXMgdG8gb3ZlcnJpZGUgbmFt
ZSBtYXRjaGluZyB3aGVuCisvLyBhdXRvY29tcGxldGUgaXMgZXhwcmVzc2x5IHJlcXVlc3RlZCBm
b3IgYSBmaWVsZC4gRGVmYXVsdCBpbmRpY2F0ZXMKKy8vIHRoYXQgdGhlIHNldHRpbmcgaXMgT24g
d2hpY2ggaXMgdGhlIGRlZmF1bHQgYnV0IG5vdCBleHByZXNzbHkgcmVxdWVzdGVkCisvLyBmb3Ig
dGhlIGVsZW1lbnQgYmVpbmcgY2hlY2tlZC4gT24gaW5kaWNhdGVzIHRoYXQgaXQgaXMgZGlyZWN0
bHkgYWRkZWQKKy8vIHRvIHRoZSBlbGVtZW50LgorQXR0cmlidXRlU3RhdGUgZWxlbWVudFN1cHBv
cnRzQXV0b2NvbXBsZXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICByZXR1cm4gRGVm
YXVsdAorCisgICAgY29uc3QgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgSFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOworICAgIGlmIChpbnB1dEVs
ZW1lbnQtPmZhc3RIYXNBdHRyaWJ1dGUoSFRNTE5hbWVzOjphdXRvY29tcGxldGVBdHRyKSkgewor
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaW5wdXRFbGVtZW50LT5mYXN0R2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0ciksICJvbiIpKQorICAgICAgICAgICAgcmV0
dXJuIE9uOworICAgIH0KKworICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnNob3VsZEF1dG9jb21w
bGV0ZSgpID8gRGVmYXVsdCA6IE9mZjsKK30KKworYm9vbCBtYXRjaGVzUmVzZXJ2ZWRTdHJpbmdQ
cmV2ZW50aW5nQXV0b2NvbXBsZXRlKEF0b21pY1N0cmluZyYgc3RyaW5nKQoreworICAgIGlmIChz
dHJpbmcuY29udGFpbnMoImVtYWlsIiwgZmFsc2UgLyogY2FzZVNlbnNpdGl2ZSAqLykKKyAgICAg
ICAgfHwgc3RyaW5nLmNvbnRhaW5zKCJ1c2VyIiwgZmFsc2UgLyogY2FzZVNlbnNpdGl2ZSAqLykK
KyAgICAgICAgfHwgc3RyaW5nLmNvbnRhaW5zKCJuYW1lIiwgZmFsc2UgLyogY2FzZVNlbnNpdGl2
ZSAqLykKKyAgICAgICAgfHwgc3RyaW5nLmNvbnRhaW5zKCJsb2dpbiIsIGZhbHNlIC8qIGNhc2VT
ZW5zaXRpdmUgKi8pKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsK
K30KKworLy8gVGhpcyBjaGVja3MgdG8gc2VlIGlmIGFuIGlucHV0IGVsZW1lbnQgaGFzIGEgbmFt
ZSBvciBpZCBhdHRyaWJ1dGUgc2V0IHRvCisvLyB1c2VybmFtZSBvciBlbWFpbC4gVGhlc2UgYXJl
IHJvdWdoIGNoZWNrcyB0byBhdm9pZCBtYWpvciBzaXRlcyB0aGF0IHVzZQorLy8gbG9naW4gZmll
bGRzIGFzIGlucHV0IHR5cGU9dGV4dCBhbmQgYXV0byBjb3JyZWN0aW9uIGludGVyZmVycyB3aXRo
LgorYm9vbCBlbGVtZW50SWRPck5hbWVJbmRpY2F0ZXNOb0F1dG9jb21wbGV0ZShjb25zdCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlucHV0VGFnKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1hdGNoZXNSZXNl
cnZlZFN0cmluZ1ByZXZlbnRpbmdBdXRvY29tcGxldGUoZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUo
KSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGVsZW1lbnQtPmZhc3RIYXNBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpuYW1lQXR0cikpIHsKKyAgICAgICAgaWYgKG1hdGNoZXNSZXNlcnZl
ZFN0cmluZ1ByZXZlbnRpbmdBdXRvY29tcGxldGUoZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6Om5hbWVBdHRyKSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0ludFBvaW50IGNvbnZlcnRQb2ludFRvRnJhbWUoY29u
c3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IElu
dFBvaW50JiBwb2ludCkKK3sKKyAgICBBU1NFUlQoc291cmNlRnJhbWUgJiYgdGFyZ2V0RnJhbWUp
CisgICAgaWYgKHNvdXJjZUZyYW1lID09IHRhcmdldEZyYW1lKQorICAgICAgICByZXR1cm4gcG9p
bnQ7CisKKyAgICBBU1NFUlQoc291cmNlRnJhbWUtPnZpZXcoKSAmJiB0YXJnZXRGcmFtZS0+dmll
dygpKTsKKyAgICBBU1NFUlQodGFyZ2V0RnJhbWUtPnRyZWUoKSk7CisKKyAgICBGcmFtZSogdGFy
Z2V0RnJhbWVQYXJlbnQgPSB0YXJnZXRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsKKyAgICBJbnRS
ZWN0IHRhcmdldEZyYW1lUmVjdCA9IHRhcmdldEZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgpOwor
CisgICAgLy8gQ29udmVydCB0aGUgdGFyZ2V0IGZyYW1lIHJlY3QgdG8gc291cmNlIHdpbmRvdyBj
b250ZW50IGNvb3JkaW5hdGVzLiBUaGlzIGlzIG9ubHkgcmVxdWlyZWQKKyAgICAvLyBpZiB0aGUg
cGFyZW50IGZyYW1lIGlzIG5vdCB0aGUgc291cmNlLiBJZiB0aGUgcGFyZW50IGlzIHRoZSBzb3Vy
Y2UsIHN1YmZyYW1lUmVjdAorICAgIC8vIGlzIGFscmVhZHkgaW4gc291cmNlIGNvbnRlbnQgY29v
cmRpbmF0ZXMuCisgICAgaWYgKHRhcmdldEZyYW1lUGFyZW50ICE9IHNvdXJjZUZyYW1lKQorICAg
ICAgICB0YXJnZXRGcmFtZVJlY3QgPSBzb3VyY2VGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHRhcmdldEZyYW1lUGFyZW50LT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3codGFyZ2V0RnJh
bWVSZWN0KSk7CisKKyAgICAvLyBSZXF1ZXN0ZWQgcG9pbnQgaXMgb3V0c2lkZSBvZiB0YXJnZXQg
ZnJhbWUsIHJldHVybiBJbnZhbGlkUG9pbnQuCisgICAgaWYgKCF0YXJnZXRGcmFtZVJlY3QuY29u
dGFpbnMocG9pbnQpKQorICAgICAgICByZXR1cm4gSW52YWxpZFBvaW50OworCisgICAgLy8gQWRq
dXN0IHRoZSBwb2ludHMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHRhcmdldC4KKyAgICByZXR1cm4g
dGFyZ2V0RnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzb3VyY2VGcmFtZS0+dmlldygp
LT5jb250ZW50c1RvV2luZG93KHBvaW50KSk7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gdmlzaWJs
ZVNlbGVjdGlvbkZvckNsb3Nlc3RBY3R1YWxXb3JkU3RhcnQoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uKQoreworICAgIC8vIFZpc2libGVTZWxlY3Rpb24gdmFsaWRhdGlvbiBoYXMg
YSBzcGVjaWFsIGNhc2Ugd2hlbiB0aGUgY2FyZXQgaXMgYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFw
aCB3aGVyZQorICAgIC8vIGl0IHNlbGVjdHMgdGhlIHBhcmFncmFwaCBtYXJrZXIuIEFzIHdlbGws
IGlmIHRoZSBwb3NpdGlvbiBpcyBhdCB0aGUgZW5kIG9mIGEgd29yZCwgaXQgd2lsbCBzZWxlY3QK
KyAgICAvLyBvbmx5IHRoZSBzcGFjZSBiZXR3ZWVuIHdvcmRzLiBXZSB3YW50IHRvIHNlbGVjdCBh
biBhY3R1YWwgd29yZCBzbyB3ZSBtb3ZlIHRoZSBzZWxlY3Rpb24gdG8KKyAgICAvLyB0aGUgc3Rh
cnQgb2YgdGhlIGxlZnRtb3N0IHdvcmQgaWYgdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgc2VsZWN0
aW9uIHBvaW50IGlzIHdoaXRlc3BhY2UuCisgICAgaWYgKHNlbGVjdGlvbi5zZWxlY3Rpb25UeXBl
KCkgIT0gVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb24gJiYgaXNXaGl0ZXNwYWNlKHNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKS5jaGFyYWN0ZXJBZnRlcigpKSkgeworICAgICAgICBWaXNp
YmxlU2VsZWN0aW9uIGxlZnRTZWxlY3Rpb24ocHJldmlvdXNXb3JkUG9zaXRpb24oc2VsZWN0aW9u
LnN0YXJ0KCkpKTsKKyAgICAgICAgYm9vbCBsZWZ0U2VsZWN0aW9uSXNPbldvcmQgPSAhaXNXaGl0
ZXNwYWNlKGxlZnRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuY2hhcmFjdGVyQWZ0ZXIoKSk7CisK
KyAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiByYW5nZVNlbGVjdGlvbihlbmRPZldvcmQobGVmdFNl
bGVjdGlvbi5zdGFydCgpKSwgc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKKyAgICAgICAgaW50
IGxlZnREaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VTZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisKKyAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBy
aWdodFNlbGVjdGlvbihuZXh0V29yZFBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKSk7CisgICAg
ICAgIHJpZ2h0U2VsZWN0aW9uID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocmlnaHRTZWxlY3Rpb24u
c3RhcnQoKSk7CisgICAgICAgIGJvb2wgcmlnaHRTZWxlY3Rpb25Jc09uV29yZCA9ICFpc1doaXRl
c3BhY2UocmlnaHRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuY2hhcmFjdGVyQWZ0ZXIoKSk7CisK
KyAgICAgICAgcmFuZ2VTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJpZ2h0U2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLCBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpOworICAgICAgICBpbnQg
cmlnaHREaXN0YW5jZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2VTZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGZv
dW5kIGFuIGFjdHVhbCB3b3JkLiBJZiBub3QsIHJldHVybiB0aGUgb3JpZ2luYWwgc2VsZWN0aW9u
LgorICAgICAgICBpZiAoIWxlZnRTZWxlY3Rpb25Jc09uV29yZCAmJiAhcmlnaHRTZWxlY3Rpb25J
c09uV29yZCkKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb247CisKKyAgICAgICAgaWYgKCFy
aWdodFNlbGVjdGlvbklzT25Xb3JkIHx8IChsZWZ0U2VsZWN0aW9uSXNPbldvcmQgJiYgbGVmdERp
c3RhbmNlIDwgcmlnaHREaXN0YW5jZSkpIHsKKyAgICAgICAgICAgIC8vIExlZnQgaXMgY2xvc2Vy
IG9yIHJpZ2h0IGlzIGludmFsaWQuCisgICAgICAgICAgICByZXR1cm4gbGVmdFNlbGVjdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFJpZ2h0IGlzIGNsb3NlciBvciBlcXVhbCwgb3IgbGVm
dCB3YXMgaW52YWxpZC4KKyAgICAgICAgcmV0dXJuIHJpZ2h0U2VsZWN0aW9uOworICAgIH0KKwor
ICAgIC8vIE5vIGFkanVzdG1lbnQgcmVxdWlyZWQuCisgICAgcmV0dXJuIHNlbGVjdGlvbjsKK30K
KworfSAvLyBET01TdXBwb3J0Cit9IC8vIFdlYktpdAorfSAvLyBCbGFja0JlcnJ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWUwOTQ1MTg5MjU3YzVjZTBmMTM4OTQ3NmVmZDk0NmEzY2RjMGI5MQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0RPTVN1
cHBvcnQuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKyNpZm5kZWYgRE9NU3VwcG9ydF9oCisjZGVmaW5lIERPTVN1cHBvcnRf
aAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgU3RyaW5nOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRmxvYXRRdWFkOwor
Y2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDsKK2NsYXNzIE5v
ZGU7CitjbGFzcyBQb3NpdGlvbjsKK2NsYXNzIFJhbmdlOworY2xhc3MgVmlzaWJsZVNlbGVjdGlv
bjsKK30KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CituYW1l
c3BhY2UgRE9NU3VwcG9ydCB7CisKK2VudW0gQXR0cmlidXRlU3RhdGUgeyBPbiwgT2ZmLCBEZWZh
dWx0IH07CisKK2Jvb2wgaXNFbGVtZW50VHlwZVBsdWdpbihjb25zdCBXZWJDb3JlOjpFbGVtZW50
Kik7CisKK2Jvb2wgaXNUZXh0SW5wdXRFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKK2Jvb2wg
aXNUZXh0QmFzZWRDb250ZW50RWRpdGFibGVFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKTsKK2Jv
b2wgaXNQYXNzd29yZEVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCopOworCitib29sIGlz
UG9wdXBJbnB1dEZpZWxkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqKTsKK2Jvb2wgaXNEYXRlVGlt
ZUlucHV0RmllbGQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCopOworYm9vbCBpc0NvbG9ySW5wdXRG
aWVsZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Kik7CitBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50U3Vw
cG9ydHNBdXRvY29ycmVjdChjb25zdCBXZWJDb3JlOjpFbGVtZW50Kik7CisKK1dURjo6U3RyaW5n
IGlucHV0RWxlbWVudFRleHQoV2ViQ29yZTo6RWxlbWVudCopOworCitXZWJDb3JlOjpIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCogdG9UZXh0Q29udHJvbEVsZW1lbnQoV2ViQ29yZTo6Tm9kZSop
OworCitXZWJDb3JlOjpJbnRSZWN0IHRyYW5zZm9ybWVkQm91bmRpbmdCb3hGb3JSYW5nZShjb25z
dCBXZWJDb3JlOjpSYW5nZSYpOwordm9pZCB2aXNpYmxlVGV4dFF1YWRzKGNvbnN0IFdlYkNvcmU6
OlJhbmdlJiwgV1RGOjpWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdXNl
U2VsZWN0aW9uSGVpZ2h0ID0gZmFsc2UpOworCitXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIHZp
c2libGVTZWxlY3Rpb25Gb3JSYW5nZUlucHV0RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KiwgaW50
IHN0YXJ0LCBpbnQgZW5kKTsKK1dlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVj
dGlvbkZvcklucHV0RWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisKK1dlYkNvcmU6Ok5vZGUq
IERPTUNvbnRhaW5lck5vZGVGb3JQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpQb3NpdGlvbiYpOwor
Ym9vbCBpc1Bvc2l0aW9uSW5Ob2RlKFdlYkNvcmU6Ok5vZGUqLCBjb25zdCBXZWJDb3JlOjpQb3Np
dGlvbiYpOworCitBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50U3VwcG9ydHNBdXRvY29tcGxldGUoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCopOworYm9vbCBlbGVtZW50SWRPck5hbWVJbmRpY2F0ZXNOb0F1
dG9jb21wbGV0ZShjb25zdCBXZWJDb3JlOjpFbGVtZW50Kik7CisKK1dlYkNvcmU6OkludFBvaW50
IGNvbnZlcnRQb2ludFRvRnJhbWUoY29uc3QgV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBj
b25zdCBXZWJDb3JlOjpGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzb3VyY2VQb2ludCk7CisKK3N0YXRpYyBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBJbnZhbGlk
UG9pbnQgPSBXZWJDb3JlOjpJbnRQb2ludCgtMSwgLTEpOworCitXZWJDb3JlOjpWaXNpYmxlU2Vs
ZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JDbG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0IFdl
YkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKTsKKworfSAvLyBET01TdXBwb3J0Cit9IC8vIFdlYktp
dAorfSAvLyBCbGFja0JlcnJ5CisKKyNlbmRpZiAvLyBET01TdXBwb3J0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127031</attachid>
            <date>2012-02-14 13:29:35 -0800</date>
            <delta_ts>2012-02-14 14:58:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78607-20120214162703.patch</filename>
            <type>text/plain</type>
            <size>19126</size>
            <attacher name="Nima Ghanavatian">nima.ghanavatian</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM1NjczM2NhZDQxNjI3MzZi
MjFlZmYwNGM0YzJmZWZhMzZiNDU1ZWYuLjM5M2E3MTEyNWNmZGQ2ZDljMWJkYTFlMTk4OTkxZjFk
ZGRkZGVjODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMTQgIE5pbWEgR2hh
bmF2YXRpYW4gIDxuZ2hhbmF2YXRpYW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0g
VXBzdHJlYW1pbmcgRE9NU3VwcG9ydCBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg2MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtaW5nLCBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5jcHA6IEFkZGVk
LgorICAgICAgICAqIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0Lmg6IEFkZGVk
LgorCiAyMDEyLTAyLTEzICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+
CiAKICAgICAgICAgSW5pdGlhbCB1cHN0cmVhbWluZyBvZiBzZWxlY3Rpb24gaGFuZGxpbmcgY29k
ZSBmb3IgQmxhY2tCZXJyeSBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0RPTVN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkZDVkMjExN2Q4MTFi
ZTE3ZTczZDRmMDQ0ZjFkYWQ3M2Q0M2IzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmNwcApAQCAtMCwwICsxLDQw
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiRmxv
YXRRdWFkLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbC5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlZpc2libGVT
ZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJXVEZTdHJpbmcuaCIKKworI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCisjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorCisjaW5jbHVkZSA8bGltaXRzPgor
Cit1c2luZyBXVEY6OlZlY3RvcjsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIERPTVN1cHBv
cnQgeworCit2b2lkIHZpc2libGVUZXh0UXVhZHMoY29uc3QgUmFuZ2UmIHJhbmdlLCBWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQoreworICAgIC8vIFJh
bmdlOjp0ZXh0UXVhZHMgaW5jbHVkZXMgaGlkZGVuIHRleHQsIHdoaWNoIHdlIGRvbid0IHdhbnQu
CisgICAgLy8gVG8gd29yayBhcm91bmQgdGhpcywgdGhpcyBpcyBhIGNvcHkgb2YgaXQgd2hpY2gg
c2tpcHMgaGlkZGVuIGVsZW1lbnRzLgorICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gcmFuZ2Uu
c3RhcnRDb250YWluZXIoKTsKKyAgICBOb2RlKiBlbmRDb250YWluZXIgPSByYW5nZS5lbmRDb250
YWluZXIoKTsKKworICAgIGlmICghc3RhcnRDb250YWluZXIgfHwgIWVuZENvbnRhaW5lcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTm9kZSogc3RvcE5vZGUgPSByYW5nZS5wYXN0TGFzdE5vZGUo
KTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByYW5nZS5maXJzdE5vZGUoKTsgbm9kZSAhPSBzdG9w
Tm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBSZW5kZXJP
YmplY3QqIHIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXIgfHwgIXItPmlzVGV4
dCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
UmVuZGVyVGV4dCogcmVuZGVyVGV4dCA9IHRvUmVuZGVyVGV4dChyKTsKKyAgICAgICAgaW50IHN0
YXJ0T2Zmc2V0ID0gbm9kZSA9PSBzdGFydENvbnRhaW5lciA/IHJhbmdlLnN0YXJ0T2Zmc2V0KCkg
OiAwOworICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbm9kZSA9PSBlbmRDb250YWluZXIgPyByYW5n
ZS5lbmRPZmZzZXQoKSA6IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAg
IHJlbmRlclRleHQtPmFic29sdXRlUXVhZHNGb3JSYW5nZShxdWFkcywgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCwgdXNlU2VsZWN0aW9uSGVpZ2h0KTsKKyAgICB9Cit9CisKK2Jvb2wgaXNUZXh0SW5w
dXRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmlzVGV4
dEZvcm1Db250cm9sKCkKKyAgICAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnRleHRhcmVhVGFnKQorICAgICAgICAgICB8fCBlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJs
ZSgpOworfQorCitib29sIGlzUGFzc3dvcmRFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlucHV0VGFnKQorICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxjb25zdCBIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCktPmlzUGFzc3dvcmRGaWVsZCgpOworfQorCitXVEY6OlN0cmluZyBpbnB1
dEVsZW1lbnRUZXh0KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50KQorICAg
ICAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKKworICAgIFdURjo6U3RyaW5nIGVsZW1lbnRUZXh0
OworICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKSB7Cisg
ICAgICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0
PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudFRleHQg
PSBpbnB1dEVsZW1lbnQtPnZhbHVlKCk7CisgICAgfSBlbHNlIGlmIChlbGVtZW50LT5oYXNUYWdO
YW1lKEhUTUxOYW1lczo6dGV4dGFyZWFUYWcpKSB7CisgICAgICAgIGNvbnN0IEhUTUxUZXh0QXJl
YUVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgZWxlbWVudFRleHQgPSBpbnB1dEVsZW1lbnQtPnZh
bHVlKCk7CisgICAgfSBlbHNlIGlmIChlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Cisg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JOb2RlID0gcmFuZ2VPZkNvbnRlbnRzKGVsZW1l
bnQpOworICAgICAgICBlbGVtZW50VGV4dCA9IHJhbmdlRm9yTm9kZS5nZXQoKS0+dGV4dCgpOwor
ICAgIH0KKyAgICByZXR1cm4gZWxlbWVudFRleHQ7Cit9CisKK2Jvb2wgaXNFbGVtZW50VHlwZVBs
dWdpbihjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghZWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjpvYmplY3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpl
bWJlZFRhZykKKyAgICAgICAgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFwcGxl
dFRhZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogdG9UZXh0Q29udHJvbEVsZW1lbnQoTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIShub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQq
Pihub2RlKTsKKyAgICBpZiAoIWVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogZm9ybUVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgaWYg
KCFmb3JtRWxlbWVudC0+aXNUZXh0Rm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihmb3Jt
RWxlbWVudCk7Cit9CisKK2Jvb2wgaXNQb3B1cElucHV0RmllbGQoY29uc3QgRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICByZXR1cm4gaXNEYXRlVGltZUlucHV0RmllbGQoZWxlbWVudCkgfHwgaXND
b2xvcklucHV0RmllbGQoZWxlbWVudCk7Cit9CisKK2Jvb2wgaXNEYXRlVGltZUlucHV0RmllbGQo
Y29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJ
bnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgdHlwZXMgaGF2
ZSBwb3B1cCdzLgorICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzRGF0ZUNvbnRyb2woKQorICAgICAg
ICB8fCBpbnB1dEVsZW1lbnQtPmlzRGF0ZVRpbWVDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRF
bGVtZW50LT5pc0RhdGVUaW1lTG9jYWxDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRFbGVtZW50
LT5pc1RpbWVDb250cm9sKCkKKyAgICAgICAgfHwgaW5wdXRFbGVtZW50LT5pc01vbnRoQ29udHJv
bCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgaXNDb2xvcklucHV0RmllbGQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9
IHN0YXRpY19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKworI2lmIEVO
QUJMRShJTlBVVF9DT0xPUikKKyAgICBpZiAoaW5wdXRFbGVtZW50LT5pc0NvbG9yQ29udHJvbCgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitBdHRyaWJ1dGVTdGF0ZSBlbGVtZW50U3VwcG9ydHNBdXRvY29ycmVjdChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQoreworICAgIC8vIEZpcnN0IHdlIGNoZWNrIHRoZSBpbnB1dCBpdGVtIGl0c2Vs
Zi4gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZGVmaW5lZCwKKyAgICAvLyB3ZSBjaGVjayBpdHMg
cGFyZW50IGZvcm0uCisgICAgUXVhbGlmaWVkTmFtZSBhdXRvY29ycmVjdEF0dHIgPSBRdWFsaWZp
ZWROYW1lKG51bGxBdG9tLCAiYXV0b2NvcnJlY3QiLCBudWxsQXRvbSk7CisgICAgaWYgKGVsZW1l
bnQtPmZhc3RIYXNBdHRyaWJ1dGUoYXV0b2NvcnJlY3RBdHRyKSkgeworICAgICAgICBBdG9taWNT
dHJpbmcgYXR0cmlidXRlU3RyaW5nID0gZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhdXRvY29y
cmVjdEF0dHIpOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5n
LCAib2ZmIikpCisgICAgICAgICAgICByZXR1cm4gT2ZmOworICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5nLCAib24iKSkKKyAgICAgICAgICAgIHJldHVybiBPbjsK
KyAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCByZXR1cm5lZCwgaXQgd2Fzbid0IHNldCBwcm9wZXJs
eS4gQ2hlY2sgdGhlIGZvcm0gZm9yIGFuIGV4cGxpY2l0IHNldHRpbmcKKyAgICAgICAgLy8gYmVj
YXVzZSB0aGUgYXR0cmlidXRlIHdhcyBwcm92aWRlZCwgYnV0IGludmFsaWQuCisgICAgfQorICAg
IGlmIChlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKSB7CisgICAgICAgIGNvbnN0IEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRN
TEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICBpZiAoZm9ybUVsZW1lbnQt
PmZvcm0oKSAmJiBmb3JtRWxlbWVudC0+Zm9ybSgpLT5mYXN0SGFzQXR0cmlidXRlKGF1dG9jb3Jy
ZWN0QXR0cikpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBhdHRyaWJ1dGVTdHJpbmcgPSBm
b3JtRWxlbWVudC0+Zm9ybSgpLT5mYXN0R2V0QXR0cmlidXRlKGF1dG9jb3JyZWN0QXR0cik7Cisg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlU3RyaW5nLCAib2ZmIikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE9mZjsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShhdHRyaWJ1dGVTdHJpbmcsICJvbiIpKQorICAgICAgICAgICAgICAgIHJldHVybiBP
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBEZWZhdWx0OworfQorCisvLyBDaGVj
ayBpZiB0aGlzIGlzIGFuIGlucHV0IGZpZWxkIHRoYXQgd2lsbCBiZSBmb2N1c2VkICYgcmVxdWly
ZSBpbnB1dCBzdXBwb3J0LgorYm9vbCBpc1RleHRCYXNlZENvbnRlbnRFZGl0YWJsZUVsZW1lbnQo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChlbGVtZW50LT5pc1JlYWRPbmx5Rm9ybUNvbnRyb2woKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzUG9wdXBJbnB1dEZpZWxkKGVsZW1lbnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZWxlbWVudC0+aXNUZXh0Rm9ybUNv
bnRyb2woKSB8fCBlbGVtZW50LT5pc0NvbnRlbnRFZGl0YWJsZSgpOworfQorCitJbnRSZWN0IHRy
YW5zZm9ybWVkQm91bmRpbmdCb3hGb3JSYW5nZShjb25zdCBSYW5nZSYgcmFuZ2UpCit7CisgICAg
Ly8gQmFzZWQgb24gUmFuZ2U6OmJvdW5kaW5nQm94LCB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdHJh
bnNmb3JtcywgYW5kCisgICAgLy8gUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dCwgd2hpY2ggZG9lcy4KKyAgICBJbnRSZWN0IHJlc3VsdDsKKyAgICBWZWN0b3I8RmxvYXRRdWFk
PiBxdWFkczsKKyAgICB2aXNpYmxlVGV4dFF1YWRzKHJhbmdlLCBxdWFkcyk7CisgICAgY29uc3Qg
c2l6ZV90IG4gPSBxdWFkcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyAr
K2kpCisgICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNl
bGVjdGlvbkZvcklucHV0RWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiB2
aXNpYmxlU2VsZWN0aW9uRm9yUmFuZ2VJbnB1dEVsZW1lbnQoZWxlbWVudCwgMCwgaW5wdXRFbGVt
ZW50VGV4dChlbGVtZW50KS5sZW5ndGgoKSk7Cit9CisKK1Zpc2libGVTZWxlY3Rpb24gdmlzaWJs
ZVNlbGVjdGlvbkZvclJhbmdlSW5wdXRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGludCBzdGFy
dCwgaW50IGVuZCkKK3sKKyAgICBpZiAoRE9NU3VwcG9ydDo6dG9UZXh0Q29udHJvbEVsZW1lbnQo
ZWxlbWVudCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2wqIHRleHRSZW5kZXIgPSB0b1Jl
bmRlclRleHRDb250cm9sKGVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAoIXRleHRS
ZW5kZXIpCisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigpOworCisgICAgICAg
IFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gdGV4dFJlbmRlci0+dmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgoc3RhcnQpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb247
CisgICAgICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0
YXJ0UG9zaXRpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gdGV4
dFJlbmRlci0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoZW5kKTsKKworICAgICAgICByZXR1cm4g
VmlzaWJsZVNlbGVjdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CisgICAgfQorCisg
ICAgLy8gTXVzdCBiZSBjb250ZW50IGVkaXRhYmxlLCBnZW5lcmF0ZSB0aGUgcmFuZ2UuCisgICAg
UmVmUHRyPFJhbmdlPiBzZWxlY3Rpb25SYW5nZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoZWxlbWVudCwgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICBpZiAoc3Rh
cnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihzZWxlY3Rpb25SYW5n
ZS5nZXQoKS0+c3RhcnRQb3NpdGlvbigpLCBET1dOU1RSRUFNKTsKKworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlU3RhcnQoc2VsZWN0aW9uUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgRE9XTlNU
UkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQoc2VsZWN0aW9uUmFuZ2UtPmVu
ZFBvc2l0aW9uKCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKKworICAgIHJldHVybiBWaXNpYmxl
U2VsZWN0aW9uKHZpc2libGVTdGFydCwgdmlzaWJsZUVuZCk7Cit9CisKK05vZGUqIERPTUNvbnRh
aW5lck5vZGVGb3JQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCit7CisgICAgTm9k
ZSogbm9kZUF0UG9zID0gcG9zaXRpb24uY29udGFpbmVyTm9kZSgpOworICAgIGlmIChub2RlQXRQ
b3MtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG5vZGVBdFBvcyA9IG5vZGVBdFBvcy0+c2hh
ZG93QW5jZXN0b3JOb2RlKCk7CisKKyAgICByZXR1cm4gbm9kZUF0UG9zOworfQorCitib29sIGlz
UG9zaXRpb25Jbk5vZGUoTm9kZSogbm9kZSwgY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQorewor
ICAgIGludCBvZmZzZXQgPSAwOworICAgIE5vZGUqIGRvbU5vZGVBdFBvcyA9IERPTUNvbnRhaW5l
ck5vZGVGb3JQb3NpdGlvbihwb3NpdGlvbik7CisgICAgaWYgKGRvbU5vZGVBdFBvcyA9PSBwb3Np
dGlvbi5jb250YWluZXJOb2RlKCkpCisgICAgICAgIG9mZnNldCA9IHBvc2l0aW9uLmNvbXB1dGVP
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JOb2Rl
ID0gcmFuZ2VPZkNvbnRlbnRzKG5vZGUpOworICAgIGludCBlYzsKKworICAgIHJldHVybiByYW5n
ZUZvck5vZGUtPmlzUG9pbnRJblJhbmdlKGRvbU5vZGVBdFBvcywgb2Zmc2V0LCBlYyk7Cit9CisK
Ky8vIFRoaXMgaXMgYSBUcmlzdGF0ZSByZXR1cm4gdG8gYWxsb3cgdXMgdG8gb3ZlcnJpZGUgbmFt
ZSBtYXRjaGluZyB3aGVuCisvLyBhdXRvY29tcGxldGUgaXMgZXhwcmVzc2x5IHJlcXVlc3RlZCBm
b3IgYSBmaWVsZC4gRGVmYXVsdCBpbmRpY2F0ZXMKKy8vIHRoYXQgdGhlIHNldHRpbmcgaXMgT24g
d2hpY2ggaXMgdGhlIGRlZmF1bHQgYnV0IG5vdCBleHByZXNzbHkgcmVxdWVzdGVkCisvLyBmb3Ig
dGhlIGVsZW1lbnQgYmVpbmcgY2hlY2tlZC4gT24gaW5kaWNhdGVzIHRoYXQgaXQgaXMgZGlyZWN0
bHkgYWRkZWQKKy8vIHRvIHRoZSBlbGVtZW50LgorQXR0cmlidXRlU3RhdGUgZWxlbWVudFN1cHBv
cnRzQXV0b2NvbXBsZXRlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpKQorICAgICAgICByZXR1cm4gRGVm
YXVsdDsKKworICAgIGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IHN0YXRp
Y19jYXN0PGNvbnN0IEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKKyAgICBpZiAoaW5wdXRF
bGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXV0b2NvbXBsZXRlQXR0cikpIHsK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGlucHV0RWxlbWVudC0+ZmFzdEdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmF1dG9jb21wbGV0ZUF0dHIpLCAib24iKSkKKyAgICAgICAgICAgIHJl
dHVybiBPbjsKKyAgICB9CisKKyAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29t
cGxldGUoKSA/IERlZmF1bHQgOiBPZmY7Cit9CisKK2Jvb2wgbWF0Y2hlc1Jlc2VydmVkU3RyaW5n
UHJldmVudGluZ0F1dG9jb21wbGV0ZShBdG9taWNTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAo
c3RyaW5nLmNvbnRhaW5zKCJlbWFpbCIsIGZhbHNlIC8qIGNhc2VTZW5zaXRpdmUgKi8pCisgICAg
ICAgIHx8IHN0cmluZy5jb250YWlucygidXNlciIsIGZhbHNlIC8qIGNhc2VTZW5zaXRpdmUgKi8p
CisgICAgICAgIHx8IHN0cmluZy5jb250YWlucygibmFtZSIsIGZhbHNlIC8qIGNhc2VTZW5zaXRp
dmUgKi8pCisgICAgICAgIHx8IHN0cmluZy5jb250YWlucygibG9naW4iLCBmYWxzZSAvKiBjYXNl
U2Vuc2l0aXZlICovKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKy8vIFRoaXMgY2hlY2tzIHRvIHNlZSBpZiBhbiBpbnB1dCBlbGVtZW50IGhhcyBhIG5h
bWUgb3IgaWQgYXR0cmlidXRlIHNldCB0bworLy8gdXNlcm5hbWUgb3IgZW1haWwuIFRoZXNlIGFy
ZSByb3VnaCBjaGVja3MgdG8gYXZvaWQgbWFqb3Igc2l0ZXMgdGhhdCB1c2UKKy8vIGxvZ2luIGZp
ZWxkcyBhcyBpbnB1dCB0eXBlPXRleHQgYW5kIGF1dG8gY29ycmVjdGlvbiBpbnRlcmZlcnMgd2l0
aC4KK2Jvb2wgZWxlbWVudElkT3JOYW1lSW5kaWNhdGVzTm9BdXRvY29tcGxldGUoY29uc3QgRWxl
bWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVz
OjppbnB1dFRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEF0b21pY1N0cmluZyBp
ZEF0dHJpYnV0ZSA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CisgICAgaWYgKG1hdGNoZXNS
ZXNlcnZlZFN0cmluZ1ByZXZlbnRpbmdBdXRvY29tcGxldGUoaWRBdHRyaWJ1dGUpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChlbGVtZW50LT5mYXN0SGFzQXR0cmlidXRlKEhUTUxO
YW1lczo6bmFtZUF0dHIpKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lQXR0cmlidXRlID0g
ZWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6Om5hbWVBdHRyKTsKKyAgICAgICAg
aWYgKG1hdGNoZXNSZXNlcnZlZFN0cmluZ1ByZXZlbnRpbmdBdXRvY29tcGxldGUobmFtZUF0dHJp
YnV0ZSkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0ludFBvaW50IGNvbnZlcnRQb2ludFRvRnJhbWUoY29uc3QgRnJhbWUqIHNvdXJj
ZUZyYW1lLCBjb25zdCBGcmFtZSogdGFyZ2V0RnJhbWUsIGNvbnN0IEludFBvaW50JiBwb2ludCkK
K3sKKyAgICBBU1NFUlQoc291cmNlRnJhbWUgJiYgdGFyZ2V0RnJhbWUpOworICAgIGlmIChzb3Vy
Y2VGcmFtZSA9PSB0YXJnZXRGcmFtZSkKKyAgICAgICAgcmV0dXJuIHBvaW50OworCisgICAgQVNT
RVJUKHNvdXJjZUZyYW1lLT52aWV3KCkgJiYgdGFyZ2V0RnJhbWUtPnZpZXcoKSk7CisgICAgQVNT
RVJUKHRhcmdldEZyYW1lLT50cmVlKCkpOworCisgICAgRnJhbWUqIHRhcmdldEZyYW1lUGFyZW50
ID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CisgICAgSW50UmVjdCB0YXJnZXRGcmFt
ZVJlY3QgPSB0YXJnZXRGcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKTsKKworICAgIC8vIENvbnZl
cnQgdGhlIHRhcmdldCBmcmFtZSByZWN0IHRvIHNvdXJjZSB3aW5kb3cgY29udGVudCBjb29yZGlu
YXRlcy4gVGhpcyBpcyBvbmx5IHJlcXVpcmVkCisgICAgLy8gaWYgdGhlIHBhcmVudCBmcmFtZSBp
cyBub3QgdGhlIHNvdXJjZS4gSWYgdGhlIHBhcmVudCBpcyB0aGUgc291cmNlLCBzdWJmcmFtZVJl
Y3QKKyAgICAvLyBpcyBhbHJlYWR5IGluIHNvdXJjZSBjb250ZW50IGNvb3JkaW5hdGVzLgorICAg
IGlmICh0YXJnZXRGcmFtZVBhcmVudCAhPSBzb3VyY2VGcmFtZSkKKyAgICAgICAgdGFyZ2V0RnJh
bWVSZWN0ID0gc291cmNlRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0YXJnZXRGcmFt
ZVBhcmVudC0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHRhcmdldEZyYW1lUmVjdCkpOworCisg
ICAgLy8gUmVxdWVzdGVkIHBvaW50IGlzIG91dHNpZGUgb2YgdGFyZ2V0IGZyYW1lLCByZXR1cm4g
SW52YWxpZFBvaW50LgorICAgIGlmICghdGFyZ2V0RnJhbWVSZWN0LmNvbnRhaW5zKHBvaW50KSkK
KyAgICAgICAgcmV0dXJuIEludmFsaWRQb2ludDsKKworICAgIC8vIEFkanVzdCB0aGUgcG9pbnRz
IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQuCisgICAgcmV0dXJuIHRhcmdldEZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoc291cmNlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dp
bmRvdyhwb2ludCkpOworfQorCitWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JD
bG9zZXN0QWN0dWFsV29yZFN0YXJ0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikK
K3sKKyAgICAvLyBWaXNpYmxlU2VsZWN0aW9uIHZhbGlkYXRpb24gaGFzIGEgc3BlY2lhbCBjYXNl
IHdoZW4gdGhlIGNhcmV0IGlzIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGggd2hlcmUKKyAgICAv
LyBpdCBzZWxlY3RzIHRoZSBwYXJhZ3JhcGggbWFya2VyLiBBcyB3ZWxsLCBpZiB0aGUgcG9zaXRp
b24gaXMgYXQgdGhlIGVuZCBvZiBhIHdvcmQsIGl0IHdpbGwgc2VsZWN0CisgICAgLy8gb25seSB0
aGUgc3BhY2UgYmV0d2VlbiB3b3Jkcy4gV2Ugd2FudCB0byBzZWxlY3QgYW4gYWN0dWFsIHdvcmQg
c28gd2UgbW92ZSB0aGUgc2VsZWN0aW9uIHRvCisgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBsZWZ0
bW9zdCB3b3JkIGlmIHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHNlbGVjdGlvbiBwb2ludCBpcyB3
aGl0ZXNwYWNlLgorICAgIGlmIChzZWxlY3Rpb24uc2VsZWN0aW9uVHlwZSgpICE9IFZpc2libGVT
ZWxlY3Rpb246OlJhbmdlU2VsZWN0aW9uICYmIGlzV2hpdGVzcGFjZShzZWxlY3Rpb24udmlzaWJs
ZVN0YXJ0KCkuY2hhcmFjdGVyQWZ0ZXIoKSkpIHsKKyAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBs
ZWZ0U2VsZWN0aW9uKHByZXZpb3VzV29yZFBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKSk7Cisg
ICAgICAgIGJvb2wgbGVmdFNlbGVjdGlvbklzT25Xb3JkID0gIWlzV2hpdGVzcGFjZShsZWZ0U2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpLmNoYXJhY3RlckFmdGVyKCkpOworCisgICAgICAgIFZpc2li
bGVTZWxlY3Rpb24gcmFuZ2VTZWxlY3Rpb24oZW5kT2ZXb3JkKGxlZnRTZWxlY3Rpb24uc3RhcnQo
KSksIHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSk7CisgICAgICAgIGludCBsZWZ0RGlzdGFuY2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCkpOworCisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gcmlnaHRTZWxlY3Rpb24o
bmV4dFdvcmRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSkpOworICAgICAgICByaWdodFNlbGVj
dGlvbiA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHJpZ2h0U2VsZWN0aW9uLnN0YXJ0KCkpOworICAg
ICAgICBib29sIHJpZ2h0U2VsZWN0aW9uSXNPbldvcmQgPSAhaXNXaGl0ZXNwYWNlKHJpZ2h0U2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpLmNoYXJhY3RlckFmdGVyKCkpOworCisgICAgICAgIHJhbmdl
U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyaWdodFNlbGVjdGlvbi52aXNpYmxlU3RhcnQo
KSwgc2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKKyAgICAgICAgaW50IHJpZ2h0RGlzdGFuY2Ug
PSBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHJhbmdlU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCkpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmb3VuZCBhbiBhY3R1YWwg
d29yZC4gSWYgbm90LCByZXR1cm4gdGhlIG9yaWdpbmFsIHNlbGVjdGlvbi4KKyAgICAgICAgaWYg
KCFsZWZ0U2VsZWN0aW9uSXNPbldvcmQgJiYgIXJpZ2h0U2VsZWN0aW9uSXNPbldvcmQpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZWN0aW9uOworCisgICAgICAgIGlmICghcmlnaHRTZWxlY3Rpb25J
c09uV29yZCB8fCAobGVmdFNlbGVjdGlvbklzT25Xb3JkICYmIGxlZnREaXN0YW5jZSA8IHJpZ2h0
RGlzdGFuY2UpKSB7CisgICAgICAgICAgICAvLyBMZWZ0IGlzIGNsb3NlciBvciByaWdodCBpcyBp
bnZhbGlkLgorICAgICAgICAgICAgcmV0dXJuIGxlZnRTZWxlY3Rpb247CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBSaWdodCBpcyBjbG9zZXIgb3IgZXF1YWwsIG9yIGxlZnQgd2FzIGludmFsaWQu
CisgICAgICAgIHJldHVybiByaWdodFNlbGVjdGlvbjsKKyAgICB9CisKKyAgICAvLyBObyBhZGp1
c3RtZW50IHJlcXVpcmVkLgorICAgIHJldHVybiBzZWxlY3Rpb247Cit9CisKK30gLy8gRE9NU3Vw
cG9ydAorfSAvLyBXZWJLaXQKK30gLy8gQmxhY2tCZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRE9NU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlMDk0
NTE4OTI1N2M1Y2UwZjEzODk0NzZlZmQ5NDZhM2NkYzBiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9ET01TdXBwb3J0LmgKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaWZuZGVmIERPTVN1cHBvcnRfaAorI2RlZmluZSBET01TdXBwb3J0X2gKKworI2luY2x1ZGUg
IkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIFN0cmluZzsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEZsb2F0UXVhZDsKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ7CitjbGFzcyBOb2RlOworY2xhc3MgUG9z
aXRpb247CitjbGFzcyBSYW5nZTsKK2NsYXNzIFZpc2libGVTZWxlY3Rpb247Cit9CisKK25hbWVz
cGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIERPTVN1cHBv
cnQgeworCitlbnVtIEF0dHJpYnV0ZVN0YXRlIHsgT24sIE9mZiwgRGVmYXVsdCB9OworCitib29s
IGlzRWxlbWVudFR5cGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6RWxlbWVudCopOworCitib29sIGlz
VGV4dElucHV0RWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7Citib29sIGlzVGV4dEJhc2VkQ29u
dGVudEVkaXRhYmxlRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7Citib29sIGlzUGFzc3dvcmRF
bGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqKTsKKworYm9vbCBpc1BvcHVwSW5wdXRGaWVs
ZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Kik7Citib29sIGlzRGF0ZVRpbWVJbnB1dEZpZWxkKGNv
bnN0IFdlYkNvcmU6OkVsZW1lbnQqKTsKK2Jvb2wgaXNDb2xvcklucHV0RmllbGQoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudCopOworQXR0cmlidXRlU3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvcnJl
Y3QoY29uc3QgV2ViQ29yZTo6RWxlbWVudCopOworCitXVEY6OlN0cmluZyBpbnB1dEVsZW1lbnRU
ZXh0KFdlYkNvcmU6OkVsZW1lbnQqKTsKKworV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQqIHRvVGV4dENvbnRyb2xFbGVtZW50KFdlYkNvcmU6Ok5vZGUqKTsKKworV2ViQ29yZTo6
SW50UmVjdCB0cmFuc2Zvcm1lZEJvdW5kaW5nQm94Rm9yUmFuZ2UoY29uc3QgV2ViQ29yZTo6UmFu
Z2UmKTsKK3ZvaWQgdmlzaWJsZVRleHRRdWFkcyhjb25zdCBXZWJDb3JlOjpSYW5nZSYsIFdURjo6
VmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHVzZVNlbGVjdGlvbkhlaWdo
dCA9IGZhbHNlKTsKKworV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxlU2VsZWN0aW9u
Rm9yUmFuZ2VJbnB1dEVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCosIGludCBzdGFydCwgaW50IGVu
ZCk7CitXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25Gb3JJbnB1dEVs
ZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOworCitXZWJDb3JlOjpOb2RlKiBET01Db250YWluZXJO
b2RlRm9yUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6UG9zaXRpb24mKTsKK2Jvb2wgaXNQb3NpdGlv
bkluTm9kZShXZWJDb3JlOjpOb2RlKiwgY29uc3QgV2ViQ29yZTo6UG9zaXRpb24mKTsKKworQXR0
cmlidXRlU3RhdGUgZWxlbWVudFN1cHBvcnRzQXV0b2NvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnQqKTsKK2Jvb2wgZWxlbWVudElkT3JOYW1lSW5kaWNhdGVzTm9BdXRvY29tcGxldGUoY29u
c3QgV2ViQ29yZTo6RWxlbWVudCopOworCitXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0UG9pbnRU
b0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgV2ViQ29yZTo6
RnJhbWUqIHRhcmdldEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlUG9pbnQp
OworCitzdGF0aWMgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgSW52YWxpZFBvaW50ID0gV2ViQ29y
ZTo6SW50UG9pbnQoLTEsIC0xKTsKKworV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiB2aXNpYmxl
U2VsZWN0aW9uRm9yQ2xvc2VzdEFjdHVhbFdvcmRTdGFydChjb25zdCBXZWJDb3JlOjpWaXNpYmxl
U2VsZWN0aW9uJik7CisKK30gLy8gRE9NU3VwcG9ydAorfSAvLyBXZWJLaXQKK30gLy8gQmxhY2tC
ZXJyeQorCisjZW5kaWYgLy8gRE9NU3VwcG9ydF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>