<?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>93883</bug_id>
          
          <creation_ts>2012-08-13 12:52:27 -0700</creation_ts>
          <short_desc>[WK2] Move a remaining per-process message from WebContext to WebProcessProxy</short_desc>
          <delta_ts>2012-08-13 14:29:35 -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>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>693972</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 12:52:27 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693981</commentid>
    <comment_count>1</comment_count>
      <attachid>158079</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 12:58:51 -0700</bug_when>
    <thetext>Created attachment 158079
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694020</commentid>
    <comment_count>2</comment_count>
      <attachid>158089</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 13:27:02 -0700</bug_when>
    <thetext>Created attachment 158089
against newer ToT

Updated to see what EWS thinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694050</commentid>
    <comment_count>3</comment_count>
      <attachid>158089</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 13:59:15 -0700</bug_when>
    <thetext>Comment on attachment 158089
against newer ToT

Attachment 158089 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13481936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694091</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 14:29:35 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/125451&gt; with a build fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158079</attachid>
            <date>2012-08-13 12:58:51 -0700</date>
            <delta_ts>2012-08-13 13:27:02 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>MovePluginMethods.txt</filename>
            <type>text/plain</type>
            <size>20902</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTQzNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE1vdmUgYSByZW1h
aW5pbmcgcGVyLXByb2Nlc3MgbWVzc2FnZSBmcm9tIFdlYkNvbnRleHQgdG8gV2ViUHJvY2Vzc1By
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJl
IHdhcyBvbmUgcGx1Zy1pbiBtZXNzYWdlIHJlbmFtaW5nLiBNb3ZpbmcgaXQsIGFuZCBhbHNvIG90
aGVyIHBsdWctaW4gbWVzc2FnZXMKKyAgICAgICAgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0KTogR290IHJpZCBv
ZiB0aGUgbGFzdCBNRVNTQUdFX0NIRUNLIGluIHRoaXMgZmlsZS4KKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6IE1vdmVkIG1fcGx1Z2luV29ya1F1ZXVlIHRvIGEgc2lu
Z2xldG9uLgorICAgICAgICBXZSBkb24ndCBuZWVkIG1vcmUgdGhhbiBvbmUgcXVldWUgKGFsbCBp
dCBkb2VzIGlzIHJlYWQgcGx1Zy1pbiBpbmZvKSwgYW5kIGlmIHdlCisgICAgICAgIG5lZWRlZCwg
aXQgd291bGQgaGF2ZSBiZWVuIHBlci1wcm9jZXNzLCBub3QgcGVyLWNvbnRleHQuCisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250ZXh0KTogTm8gbW9yZSB3b3JrIHF1ZXVlLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOiBObyBsb25nZXIgbmVl
ZHMgdG8gYmUgYSBRdWV1ZUNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgIE1vdmVkIHBsdWctaW4gcmVsYXRlZCBtZXNzYWdlcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVn
aW5Xb3JrUXVldWUpOiBNb3ZlZCBmcm9tIFdlYkNvbnRleHQgdG8gYSBzaW5nbGV0b24uCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VuZERpZEdldFBsdWdpbnMpOiBNb3ZlZCBm
cm9tIFdlYkNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aGFuZGxl
R2V0UGx1Z2lucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omdl
dFBsdWdpbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQ
bHVnaW5QYXRoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSk6IERpdHRvLgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOiBQcm9jZXNzIHByb3h5IG5l
ZWRzIHRvIGJlIHRocmVhZCBzYWZlIHJlZiBjb3VudGVkCisgICAgICAgIG5vdywgc2luY2UgaXQg
c2VuZHMgbWVzc2FnZXMgdG8gaXRzZWxmIG9uIGEgd29yayBxdWV1ZSBhbmQgYmFjay4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdp
bkNhY2hlKTogVXBkYXRlZCBmb3IgbmV3IHJlY2VpdmVyLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOiAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBE
aXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IChXZWJLaXQ6OmNh
blBsdWdpbkhhbmRsZVJlc3BvbnNlKTogRGl0dG8uCisKIDIwMTItMDgtMTMgIENocmlzdG9waGUg
RHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbU09VUF1bV0sy
XSBNaXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJDb29raWVNYW5hZ2VyOjpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMjUzMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2Miw2IEBACiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
IAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJCdWlsdEluUERGVmlldy5oIgotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAjaW5jbHVkZSAiV2ViQmF0dGVyeU1hbmFn
ZXJQcm94eS5oIgogI2VuZGlmCkBAIC04Niw4ICs4Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwo
dXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5jaGVja1VSTFJlY2VpdmVkRnJvbVdl
YlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCi0KIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE2MCw3ICsxNTQsNiBAQCBXZWJD
b250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jCiAgICAgLCBtX2luaXRpYWxIVFRQ
Q29va2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMpCiAjZW5kaWYK
ICAgICAsIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVlKQotICAgICwgbV9wbHVnaW5X
b3JrUXVldWUoImNvbS5hcHBsZS5Db3JlSVBDLlBsdWdpblF1ZXVlIikKIHsKICNpZiAhTE9HX0RJ
U0FCTEVECiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwpA
QCAtMTgxLDExICsxNzQsNiBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBw
cm9jCiAKIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKIHsKLSAgICBtX3BsdWdpbldvcmtRdWV1
ZS5pbnZhbGlkYXRlKCk7Ci0KLSAgICBpZiAobV9wcm9jZXNzICYmIG1fcHJvY2Vzcy0+aXNWYWxp
ZCgpKQotICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQo
dGhpcyk7Ci0KICAgICBBU1NFUlQoY29udGV4dHMoKS5maW5kKHRoaXMpICE9IG5vdEZvdW5kKTsK
ICAgICBjb250ZXh0cygpLnJlbW92ZShjb250ZXh0cygpLmZpbmQodGhpcykpOwogCkBAIC0zOTgs
OCArMzg2LDYgQEAgdm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaQogCiAg
ICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKTsKIAot
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5hZGRRdWV1ZUNsaWVudCh0aGlzKTsKLSAgICAK
ICAgICAvLyBTb21ldGltZXMgdGhlIG1lbW9yeVNhbXBsZXIgZ2V0cyBpbml0aWFsaXplZCBhZnRl
ciBwcm9jZXNzIGluaXRpYWxpemF0aW9uIGhhcyBoYXBwZW5lZCBidXQgYmVmb3JlIHRoZSBwcm9j
ZXNzIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcKICAgICAvLyBzbyBjaGVjayBpZiBpdCBuZWVkcyB0
byBiZSBzdGFydGVkIGhlcmUKICAgICBpZiAobV9tZW1vcnlTYW1wbGVyRW5hYmxlZCkgewpAQCAt
NTk1LDc0ICs1ODEsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5r
CiAgICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLmFkZFZpc2l0ZWRMaW5rKGxpbmtIYXNoKTsKIH0K
IAotdm9pZCBXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQs
IFBhc3NPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MpCi17Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIE93blB0cjxWZWN0b3I8UGx1Z2luSW5mbz4gPiBw
bHVnaW5zKHBsdWdpbkluZm9zKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBBZGQgYnVp
bHQtaW4gUERGIGxhc3QsIHNvIHRoYXQgaXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBwbHVnLWlu
IGlzIGluc3RhbGxlZC4KLSAgICAvLyBOT1RFOiBUaGlzIGhhcyB0byBiZSBkb25lIG9uIHRoZSBt
YWluIHRocmVhZCBhcyBpdCBjYWxscyBsb2NhbGl6ZWRTdHJpbmcoKS4KLSAgICBpZiAoIW9taXRQ
REZTdXBwb3J0KCkpCi0gICAgICAgIHBsdWdpbnMtPmFwcGVuZChCdWlsdEluUERGVmlldzo6cGx1
Z2luSW5mbygpKTsKLSNlbmRpZgotCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEaWRHZXRQbHVnaW5zKHJlcXVlc3RJRCwgKnBsdWdpbnMpLCAwKTsKLX0KLQotdm9p
ZCBXZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBy
ZWZyZXNoKQotewotICAgIGlmIChyZWZyZXNoKQotICAgICAgICBtX3BsdWdpbkluZm9TdG9yZS5y
ZWZyZXNoKCk7Ci0KLSAgICBPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3Mg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFBsdWdpbkluZm8+KTsKLQotICAgIFZlY3RvcjxQbHVnaW5N
b2R1bGVJbmZvPiBwbHVnaW5zID0gbV9wbHVnaW5JbmZvU3RvcmUucGx1Z2lucygpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkKLSAgICAgICAgcGx1Z2lu
SW5mb3MtPmFwcGVuZChwbHVnaW5zW2ldLmluZm8pOwotCi0gICAgLy8gTk9URTogV2UgaGF2ZSB0
byBwYXNzIHRoZSBQbHVnaW5JbmZvIHZlY3RvciB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCB2aWEg
YSBwb2ludGVyIGFzIG90aGVyd2lzZQotICAgIC8vICAgICAgIHdlJ2QgZW5kIHVwIHdpdGggYSBk
ZXJlZigpIHJhY2Ugb24gYWxsIHRoZSBXVEY6OlN0cmluZ3MgaXQgY29udGFpbnMuCi0gICAgUnVu
TG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lu
cywgdGhpcywgcmVxdWVzdElELCBwbHVnaW5JbmZvcy5yZWxlYXNlKCkpKTsKLX0KLQotdm9pZCBX
ZWJDb250ZXh0OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1
ZXN0SUQsIGJvb2wgcmVmcmVzaCkKLXsKLSAgICBtX3BsdWdpbldvcmtRdWV1ZS5kaXNwYXRjaChi
aW5kKCZXZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zLCB0aGlzLCByZXF1ZXN0SUQsIHJlZnJl
c2gpKTsKLX0KLQotdm9pZCBXZWJDb250ZXh0OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIGJv
b2wmIGJsb2NrZWQpCi17Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwodXJsU3RyaW5nKTsKLQotICAg
IFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlLmxvd2VyKCk7Ci0KLSAgICBibG9ja2VkID0g
ZmFsc2U7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUoKS5m
aW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSk7Ci0gICAgaWYg
KCFwbHVnaW4ucGF0aCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBsdWdpbkluZm9TdG9y
ZSgpLnNob3VsZEJsb2NrUGx1Z2luKHBsdWdpbikpIHsKLSAgICAgICAgYmxvY2tlZCA9IHRydWU7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbHVnaW5QYXRoID0gcGx1Z2luLnBhdGg7
Ci19Ci0KLSNpZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotdm9pZCBXZWJDb250ZXh0OjpkaWRH
ZXRTaXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKLXsKLSAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdlci0+ZGlkR2V0U2l0
ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCk7Ci19Ci0KLXZvaWQgV2ViQ29udGV4dDo6ZGlk
Q2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIG1fcGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLT5kaWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpOwotfQotI2VuZGlm
Ci0KIERvd25sb2FkUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZURvd25sb2FkUHJveHkoKQogewog
ICAgIFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6
Y3JlYXRlKHRoaXMpOwpAQCAtOTc5LDEyICs4OTcsNCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldEph
dmFTY3JpcHRHYXJiYWdlQ29sCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChmbGFnKSk7
CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3Jr
UXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlE
IG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIGRp
ZEhhbmRsZU1lc3NhZ2UpCi17Ci0gICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NXZWJDb250ZXh0PigpKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVXZWJDb250ZXh0TWVzc2Fn
ZU9uQ29ubmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywg
ZGlkSGFuZGxlTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShy
ZXZpc2lvbiAxMjUzMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5
UmVmPiBEaWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJ
T2JqZWN0LCBwcml2YXRlIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKK2NsYXNz
IFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7CiAKQEAgLTIzMCwxNCArMjMwLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
OwogICAgIAotICAgIC8vIFBsdWdpbnMKLSAgICB2b2lkIGdldFBsdWdpbnMoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKLSAgICB2b2lkIGdl
dFBsdWdpblBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCYgYmxvY2tlZCk7Ci0jaWYgIUVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKLSAgICB2b2lkIGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZENs
ZWFyUGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0jZW5kaWYKLQogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lk
IGdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxTdHJpbmc+JiBwYXRobmFt
ZXMpOwpAQCAtMjYwLDkgKzI1Miw2IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4g
Z2VuZXJhdGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNl
aXZlV2ViQ29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y1dlYkNvbnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rp
b25Xb3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSkgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgdm9p
ZCBsYW5ndWFnZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5n
ZWQoKTsKQEAgLTI3NSw5ICsyNjQsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0
X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpOwotICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnMo
dWludDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZv
PiA+KTsKLQogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICAvLyBG
SVhNRTogSW4gdGhlIGZ1dHVyZSwgdGhpcyBzaG91bGQgYmUgb25lIG9yIG1vcmUgV2ViUHJvY2Vz
c1Byb3hpZXMuCkBAIC0zNTQsOCArMzQwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vz
c1Rlcm1pbmF0aW9uRW5hYmxlZDsKICAgICAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKLQotICAgIFdvcmtR
dWV1ZSBtX3BsdWdpbldvcmtRdWV1ZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGlu
ZSBib29sIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDEyNTMzMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQsNiBAQCBtZXNzYWdl
cyAtPiBXZWJDb250ZXh0IHsKIAogICAgICMgVmlzaXRlZCBsaW5rIHByb3ZpZGVyIG1lc3NhZ2Vz
LgogICAgIEFkZFZpc2l0ZWRMaW5rSGFzaCh1aW50NjRfdCBsaW5rSGFzaCkKLSAgICAKLSAgICAj
IFBsdWdpbiBtZXNzYWdlcy4KLSAgICBHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9v
bCByZWZyZXNoKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCi0gICAgR2V0UGx1Z2luUGF0aChX
VEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKSAtPiAoV1RGOjpTdHJp
bmcgcGx1Z2luUGF0aCwgYm9vbCBibG9ja2VkKQotCi0jaWYgIUVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5n
PiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERpZENsZWFyUGx1Z2luU2l0
ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSNlbmRpZgogCiAgICAgRGlkR2V0V2ViQ29yZVN0
YXRpc3RpY3MoV2ViS2l0OjpTdGF0aXN0aWNzRGF0YSBzdGF0aXN0aWNzRGF0YSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDEyNTMzMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCwxNCBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJCdWlsdEluUERGVmlldy5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApAQCAtNjMsNiArNjgsMTIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCkKICAg
ICByZXR1cm4gdW5pcXVlUGFnZUlEKys7CiB9CiAKK3N0YXRpYyBXb3JrUXVldWUmIHBsdWdpbldv
cmtRdWV1ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXb3JrUXVldWUsIHF1ZXVlLCAo
ImNvbS5hcHBsZS5Db3JlSVBDLlBsdWdpblF1ZXVlIikpOworICAgIHJldHVybiBxdWV1ZTsKK30K
KwogUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFBh
c3NSZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYlByb2Nlc3NQcm94eShjb250ZXh0KSk7CkBAIC0yOTAsMTYgKzMwMSw4NiBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT5z
ZWNvbmQtPnNldEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9y
d2FyZERhdGEuc2l6ZSgpKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmREaWRHZXRQ
bHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8UGx1Z2luSW5mbz4g
PiBwbHVnaW5JbmZvcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgT3du
UHRyPFZlY3RvcjxQbHVnaW5JbmZvPiA+IHBsdWdpbnMocGx1Z2luSW5mb3MpOworCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIC8vIEFkZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5v
dCB1c2VkIHdoZW4gYSByZWFsIHBsdWctaW4gaXMgaW5zdGFsbGVkLgorICAgIC8vIE5PVEU6IFRo
aXMgaGFzIHRvIGJlIGRvbmUgb24gdGhlIG1haW4gdGhyZWFkIGFzIGl0IGNhbGxzIGxvY2FsaXpl
ZFN0cmluZygpLgorICAgIGlmICghbV9jb250ZXh0LT5vbWl0UERGU3VwcG9ydCgpKQorICAgICAg
ICBwbHVnaW5zLT5hcHBlbmQoQnVpbHRJblBERlZpZXc6OnBsdWdpbkluZm8oKSk7CisjZW5kaWYK
KworICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEdldFBsdWdpbnMocmVxdWVzdElE
LCAqcGx1Z2lucyksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6aGFuZGxlR2V0UGx1
Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKK3sKKyAgICBpZiAocmVmcmVz
aCkKKyAgICAgICAgbV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5yZWZyZXNoKCk7CisKKyAg
ICBPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPFBsdWdpbkluZm8+KTsKKworICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVn
aW5zID0gbV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5wbHVnaW5zKCk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKQorICAgICAgICBwbHVnaW5JbmZv
cy0+YXBwZW5kKHBsdWdpbnNbaV0uaW5mbyk7CisKKyAgICAvLyBOT1RFOiBXZSBoYXZlIHRvIHBh
c3MgdGhlIFBsdWdpbkluZm8gdmVjdG9yIHRvIHRoZSBzZWNvbmRhcnkgdGhyZWFkIHZpYSBhIHBv
aW50ZXIgYXMgb3RoZXJ3aXNlCisgICAgLy8gICAgICAgd2UnZCBlbmQgdXAgd2l0aCBhIGRlcmVm
KCkgcmFjZSBvbiBhbGwgdGhlIFdURjo6U3RyaW5ncyBpdCBjb250YWlucy4KKyAgICBSdW5Mb29w
OjptYWluKCktPmRpc3BhdGNoKGJpbmQoJldlYlByb2Nlc3NQcm94eTo6c2VuZERpZEdldFBsdWdp
bnMsIHRoaXMsIHJlcXVlc3RJRCwgcGx1Z2luSW5mb3MucmVsZWFzZSgpKSk7Cit9CisKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRf
dCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKK3sKKyAgICBwbHVnaW5Xb3JrUXVldWUoKS5kaXNw
YXRjaChiaW5kKCZXZWJQcm9jZXNzUHJveHk6OmhhbmRsZUdldFBsdWdpbnMsIHRoaXMsIHJlcXVl
c3RJRCwgcmVmcmVzaCkpOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUGF0
aChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RyaW5n
JiBwbHVnaW5QYXRoLCBib29sJiBibG9ja2VkKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVy
bFN0cmluZyk7CisKKyAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOwor
CisgICAgYmxvY2tlZCA9IGZhbHNlOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9j
b250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtV
UkwoKSwgdXJsU3RyaW5nKSk7CisgICAgaWYgKCFwbHVnaW4ucGF0aCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCkuc2hvdWxkQmxvY2tQbHVn
aW4ocGx1Z2luKSkgeworICAgICAgICBibG9ja2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHBsdWdpblBhdGggPSBwbHVnaW4ucGF0aDsKK30KKwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTUykKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
PiByZXBseSkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24oY29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0
aCwgcmVwbHkpOworICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihtX2NvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLCBwbHVnaW5QYXRo
LCByZXBseSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbHVnaW5TeW5jTWVzc2FnZVNl
bmRUaW1lZE91dChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7CiAgICAgUGx1Z2luUHJvY2Vz
c01hbmFnZXI6OnNoYXJlZCgpLnBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KHBsdWdpblBh
dGgpOwogfQorCisjZWxzZQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkR2V0U2l0ZXNXaXRo
UGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit7CisgICAgbV9jb250ZXh0LT5wbHVnaW5TaXRlRGF0YU1hbmFnZXIoKS0+ZGlkR2V0U2l0
ZXNXaXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRDbGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9j
b250ZXh0LT5wbHVnaW5TaXRlRGF0YU1hbmFnZXIoKS0+ZGlkQ2xlYXJTaXRlRGF0YShjYWxsYmFj
a0lEKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQg
bWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEyNTMz
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViUGFn
ZUdyb3VwOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNsYXNzIFdlYlByb2Nl
c3NQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNv
bm5lY3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1
bmNoZXI6OkNsaWVudCwgVGhyZWFkTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVjdGlv
bjo6UXVldWVDbGllbnQgeworY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwg
VGhyZWFkTGF1bmNoZXI6OkNsaWVudCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6UXVldWVDbGllbnQg
ewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1l
UHJveHk+ID4gV2ViRnJhbWVQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiA+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1N
YXA7CkBAIC0xMzMsMTAgKzEzMywyMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc2hvdWxk
VGVybWluYXRlKGJvb2wmIHNob3VsZFRlcm1pbmF0ZSk7CiAKKyAgICAvLyBQbHVnaW5zCisgICAg
dm9pZCBnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGJvb2wgcmVmcmVzaCk7CisgICAgdm9pZCBnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wm
IGJsb2NrZWQpOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICB2b2lkIGdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5Pik7CiAgICAgdm9pZCBwbHVnaW5TeW5jTWVzc2FnZVNlbmRUaW1lZE91dChjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgpOworI2Vsc2UKKyAgICB2b2lkIGRpZEdldFNpdGVzV2l0aFBs
dWdpbkRhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIGRpZENsZWFyUGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7
CiAjZW5kaWYKKworICAgIHZvaWQgaGFuZGxlR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQs
IGJvb2wgcmVmcmVzaCk7CisgICAgdm9pZCBzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1
ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+ID4pOworCiAjaWYg
VVNFKFNFQ1VSSVRZX0ZSQU1FV09SSykKICAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0KENvcmVJUEM6
OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0l0ZW1SZXF1ZXN0RGF0
YSYpOwogICAgIHZvaWQgc2VjS2V5Y2hhaW5JdGVtUmVxdWVzdChDb3JlSVBDOjpDb25uZWN0aW9u
KiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTZWNLZXljaGFpbkl0ZW1SZXF1ZXN0RGF0YSYp
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMjUzMzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
MCArMzMsMTcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsKIAogICAgIFNob3VsZFRl
cm1pbmF0ZSgpIC0+IChib29sIHNob3VsZFRlcm1pbmF0ZSkKIAorICAgICMgUGx1Z2luIG1lc3Nh
Z2VzLgorICAgIEdldFBsdWdpbnModWludDY0X3QgcmVxdWVzdElELCBib29sIHJlZnJlc2gpIERp
c3BhdGNoT25Db25uZWN0aW9uUXVldWUKKyAgICBHZXRQbHVnaW5QYXRoKFdURjo6U3RyaW5nIG1p
bWVUeXBlLCBXVEY6OlN0cmluZyB1cmxTdHJpbmcpIC0+IChXVEY6OlN0cmluZyBwbHVnaW5QYXRo
LCBib29sIGJsb2NrZWQpCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIEdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpB
dHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbikgRGVsYXllZAogICAgIFBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KFdU
Rjo6U3RyaW5nIHBsdWdpblBhdGgpCiAjZW5kaWYKKyNpZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQorICAgIHZvaWQgRGlkR2V0U2l0ZXNXaXRoUGx1Z2luRGF0YShWZWN0b3I8V1RGOjpTdHJpbmc+
IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIHZvaWQgRGlkQ2xlYXJQbHVnaW5TaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQorI2VuZGlmCiAKICNpZiBVU0UoU0VDVVJJVFlfRlJB
TUVXT1JLKQogICAgIFNlY0l0ZW1SZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0OjpT
ZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMjUz
MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OTYsNyArNzk2LDcgQEAgc3RhdGljIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVz
cG9uc2UoY29ucwogICAgIFN0cmluZyBwbHVnaW5QYXRoOwogICAgIGJvb2wgYmxvY2tlZDsKIAot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2luUGF0aChyZXNwb25zZS5taW1lVHlwZSgpLCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKSksIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5QYXRo
OjpSZXBseShwbHVnaW5QYXRoLCBibG9ja2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldFBsdWdpblBhdGgocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudXJsKCkuc3RyaW5n
KCkpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5QYXRoOjpSZXBseShwbHVn
aW5QYXRoLCBibG9ja2VkKSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biAhYmxvY2tlZCAmJiAhcGx1Z2luUGF0aC5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMjUzMzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgpAQCAtMTMwLDcgKzEzMSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpwb3B1bGF0ZVBsdWcKICAgICAKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHNvbWV0
aGluZyBpbiBjYXNlIG9mIGVycm9yIGhlcmU/CiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gZ2Vu
ZXJhdGVSZXF1ZXN0SUQoKTsKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBsdWdpbnMocmVxdWVzdElELCBtX3Nob3Vs
ZFJlZnJlc2hQbHVnaW5zKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpbnMocmVxdWVzdElE
LCBtX3Nob3VsZFJlZnJlc2hQbHVnaW5zKSwgMCk7CiAKICAgICBtX2NhY2hlZFBsdWdpbnMgPSAq
cmVzcG9uc2VNYXAoKS53YWl0Rm9yUmVzcG9uc2UocmVxdWVzdElEKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDEyNTMzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMyLDggKzQzMiw4IEBAIFBhc3NSZWZQdHI8UGx1Z2luPiBX
ZWJQYWdlOjpjcmVhdGVQbHVnaW4KICAgICBib29sIGJsb2NrZWQ7CiAKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoCi0gICAgICAgICAgICBNZXNz
YWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2luUGF0aChwYXJhbWV0ZXJzLm1pbWVUeXBlLCBwYXJh
bWV0ZXJzLnVybC5zdHJpbmcoKSksIAotICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNvbnRleHQ6
OkdldFBsdWdpblBhdGg6OlJlcGx5KHBsdWdpblBhdGgsIGJsb2NrZWQpLCAwKSkgeworICAgICAg
ICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUGF0aChwYXJhbWV0ZXJz
Lm1pbWVUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSksCisgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5QYXRoOjpSZXBseShwbHVnaW5QYXRoLCBibG9j
a2VkKSwgMCkpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="168116"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158089</attachid>
            <date>2012-08-13 13:27:02 -0700</date>
            <delta_ts>2012-08-13 13:59:15 -0700</delta_ts>
            <desc>against newer ToT</desc>
            <filename>MovePluginMethods.txt</filename>
            <type>text/plain</type>
            <size>20853</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTQ0MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIE1vdmUgYSByZW1h
aW5pbmcgcGVyLXByb2Nlc3MgbWVzc2FnZSBmcm9tIFdlYkNvbnRleHQgdG8gV2ViUHJvY2Vzc1By
b3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mzg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IFNhbW4gV2VpbmlnLgorCisgICAgICAgIFRoZXJlIHdh
cyBvbmUgcGx1Zy1pbiBtZXNzYWdlIHJlbmFtaW5nLiBNb3ZpbmcgaXQsIGFuZCBhbHNvIG90aGVy
IHBsdWctaW4gbWVzc2FnZXMKKyAgICAgICAgZm9yIGNvbnNpc3RlbmN5LgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0KTogR290IHJpZCBvZiB0
aGUgbGFzdCBNRVNTQUdFX0NIRUNLIGluIHRoaXMgZmlsZS4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6V2ViQ29udGV4dCk6IE1vdmVkIG1fcGx1Z2luV29ya1F1ZXVlIHRvIGEgc2luZ2xl
dG9uLgorICAgICAgICBXZSBkb24ndCBuZWVkIG1vcmUgdGhhbiBvbmUgcXVldWUgKGFsbCBpdCBk
b2VzIGlzIHJlYWQgcGx1Zy1pbiBpbmZvKSwgYW5kIGlmIHdlCisgICAgICAgIG5lZWRlZCwgaXQg
d291bGQgaGF2ZSBiZWVuIHBlci1wcm9jZXNzLCBub3QgcGVyLWNvbnRleHQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJDb250ZXh0KTogTm8gbW9yZSB3b3JrIHF1ZXVlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKTogRGl0
dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOiBObyBsb25nZXIgbmVlZHMg
dG8gYmUgYSBRdWV1ZUNsaWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgIE1vdmVkIHBsdWctaW4gcmVsYXRlZCBtZXNzYWdlcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5X
b3JrUXVldWUpOiBNb3ZlZCBmcm9tIFdlYkNvbnRleHQgdG8gYSBzaW5nbGV0b24uCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2VuZERpZEdldFBsdWdpbnMpOiBNb3ZlZCBmcm9t
IFdlYkNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aGFuZGxlR2V0
UGx1Z2lucyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldFBs
dWdpbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRQbHVn
aW5QYXRoKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpkaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSk6IERpdHRvLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOiBQcm9jZXNzIHByb3h5IG5lZWRz
IHRvIGJlIHRocmVhZCBzYWZlIHJlZiBjb3VudGVkCisgICAgICAgIG5vdywgc2luY2UgaXQgc2Vu
ZHMgbWVzc2FnZXMgdG8gaXRzZWxmIG9uIGEgd29yayBxdWV1ZSBhbmQgYmFjay4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpwb3B1bGF0ZVBsdWdpbkNh
Y2hlKTogVXBkYXRlZCBmb3IgbmV3IHJlY2VpdmVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOiAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOiBEaXR0
by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IChXZWJLaXQ6OmNhblBs
dWdpbkhhbmRsZVJlc3BvbnNlKTogRGl0dG8uCisKIDIwMTItMDgtMTMgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbU09VUF1bV0syXSBN
aXNzaW5nIExvY2FsVGVybWluYXRpb25EaXNhYmxlciBpbiBXZWJDb29raWVNYW5hZ2VyOjpzZXRD
b29raWVQZXJzaXN0ZW50U3RvcmFnZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMjU0NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDEwICs2Miw2IEBACiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAot
I2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJCdWlsdEluUERGVmlldy5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAjaW5jbHVkZSAiV2ViQmF0dGVyeU1hbmFnZXJQ
cm94eS5oIgogI2VuZGlmCkBAIC04Niw4ICs4Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWRMZWFrQ291bnRlci5oPgogI2VuZGlmCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwodXJs
KSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlBy
b2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCi0KIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTE1Myw3ICsxNDcsNiBAQCBXZWJDb250
ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jCiAgICAgLCBtX2luaXRpYWxIVFRQQ29v
a2llQWNjZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMpCiAjZW5kaWYKICAg
ICAsIG1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCh0cnVlKQotICAgICwgbV9wbHVnaW5Xb3Jr
UXVldWUoImNvbS5hcHBsZS5Db3JlSVBDLlBsdWdpblF1ZXVlIikKIHsKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgV2ViS2l0Ojppbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwpAQCAt
MTc0LDExICsxNjcsNiBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9j
CiAKIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKIHsKLSAgICBtX3BsdWdpbldvcmtRdWV1ZS5p
bnZhbGlkYXRlKCk7Ci0KLSAgICBpZiAobV9wcm9jZXNzICYmIG1fcHJvY2Vzcy0+aXNWYWxpZCgp
KQotICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+cmVtb3ZlUXVldWVDbGllbnQodGhp
cyk7Ci0KICAgICBBU1NFUlQoY29udGV4dHMoKS5maW5kKHRoaXMpICE9IG5vdEZvdW5kKTsKICAg
ICBjb250ZXh0cygpLnJlbW92ZShjb250ZXh0cygpLmZpbmQodGhpcykpOwogCkBAIC0zOTEsOCAr
Mzc5LDYgQEAgdm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaQogCiAgICAg
bV92aXNpdGVkTGlua1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKTsKIAotICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5hZGRRdWV1ZUNsaWVudCh0aGlzKTsKLSAgICAKICAg
ICAvLyBTb21ldGltZXMgdGhlIG1lbW9yeVNhbXBsZXIgZ2V0cyBpbml0aWFsaXplZCBhZnRlciBw
cm9jZXNzIGluaXRpYWxpemF0aW9uIGhhcyBoYXBwZW5lZCBidXQgYmVmb3JlIHRoZSBwcm9jZXNz
IGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcKICAgICAvLyBzbyBjaGVjayBpZiBpdCBuZWVkcyB0byBi
ZSBzdGFydGVkIGhlcmUKICAgICBpZiAobV9tZW1vcnlTYW1wbGVyRW5hYmxlZCkgewpAQCAtNTg4
LDc0ICs1NzQsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OmFkZFZpc2l0ZWRMaW5rSGFzaChMaW5rCiAg
ICAgbV92aXNpdGVkTGlua1Byb3ZpZGVyLmFkZFZpc2l0ZWRMaW5rKGxpbmtIYXNoKTsKIH0KIAot
dm9pZCBXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBh
c3NPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLQotICAgIE93blB0cjxWZWN0b3I8UGx1Z2luSW5mbz4gPiBwbHVn
aW5zKHBsdWdpbkluZm9zKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAgICAvLyBBZGQgYnVpbHQt
aW4gUERGIGxhc3QsIHNvIHRoYXQgaXQncyBub3QgdXNlZCB3aGVuIGEgcmVhbCBwbHVnLWluIGlz
IGluc3RhbGxlZC4KLSAgICAvLyBOT1RFOiBUaGlzIGhhcyB0byBiZSBkb25lIG9uIHRoZSBtYWlu
IHRocmVhZCBhcyBpdCBjYWxscyBsb2NhbGl6ZWRTdHJpbmcoKS4KLSAgICBpZiAoIW9taXRQREZT
dXBwb3J0KCkpCi0gICAgICAgIHBsdWdpbnMtPmFwcGVuZChCdWlsdEluUERGVmlldzo6cGx1Z2lu
SW5mbygpKTsKLSNlbmRpZgotCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpEaWRHZXRQbHVnaW5zKHJlcXVlc3RJRCwgKnBsdWdpbnMpLCAwKTsKLX0KLQotdm9pZCBX
ZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZy
ZXNoKQotewotICAgIGlmIChyZWZyZXNoKQotICAgICAgICBtX3BsdWdpbkluZm9TdG9yZS5yZWZy
ZXNoKCk7Ci0KLSAgICBPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPFBsdWdpbkluZm8+KTsKLQotICAgIFZlY3RvcjxQbHVnaW5Nb2R1
bGVJbmZvPiBwbHVnaW5zID0gbV9wbHVnaW5JbmZvU3RvcmUucGx1Z2lucygpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2lucy5zaXplKCk7ICsraSkKLSAgICAgICAgcGx1Z2luSW5m
b3MtPmFwcGVuZChwbHVnaW5zW2ldLmluZm8pOwotCi0gICAgLy8gTk9URTogV2UgaGF2ZSB0byBw
YXNzIHRoZSBQbHVnaW5JbmZvIHZlY3RvciB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCB2aWEgYSBw
b2ludGVyIGFzIG90aGVyd2lzZQotICAgIC8vICAgICAgIHdlJ2QgZW5kIHVwIHdpdGggYSBkZXJl
ZigpIHJhY2Ugb24gYWxsIHRoZSBXVEY6OlN0cmluZ3MgaXQgY29udGFpbnMuCi0gICAgUnVuTG9v
cDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKCZXZWJDb250ZXh0OjpzZW5kRGlkR2V0UGx1Z2lucywg
dGhpcywgcmVxdWVzdElELCBwbHVnaW5JbmZvcy5yZWxlYXNlKCkpKTsKLX0KLQotdm9pZCBXZWJD
b250ZXh0OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0
SUQsIGJvb2wgcmVmcmVzaCkKLXsKLSAgICBtX3BsdWdpbldvcmtRdWV1ZS5kaXNwYXRjaChiaW5k
KCZXZWJDb250ZXh0OjpoYW5kbGVHZXRQbHVnaW5zLCB0aGlzLCByZXF1ZXN0SUQsIHJlZnJlc2gp
KTsKLX0KLQotdm9pZCBXZWJDb250ZXh0OjpnZXRQbHVnaW5QYXRoKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBTdHJpbmcmIHBsdWdpblBhdGgsIGJvb2wm
IGJsb2NrZWQpCi17Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwodXJsU3RyaW5nKTsKLQotICAgIFN0
cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlLmxvd2VyKCk7Ci0KLSAgICBibG9ja2VkID0gZmFs
c2U7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBwbHVnaW5JbmZvU3RvcmUoKS5maW5k
UGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSk7Ci0gICAgaWYgKCFw
bHVnaW4ucGF0aCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHBsdWdpbkluZm9TdG9yZSgp
LnNob3VsZEJsb2NrUGx1Z2luKHBsdWdpbikpIHsKLSAgICAgICAgYmxvY2tlZCA9IHRydWU7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBwbHVnaW5QYXRoID0gcGx1Z2luLnBhdGg7Ci19
Ci0KLSNpZiAhRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotdm9pZCBXZWJDb250ZXh0OjpkaWRHZXRT
aXRlc1dpdGhQbHVnaW5EYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKLXsKLSAgICBtX3BsdWdpblNpdGVEYXRhTWFuYWdlci0+ZGlkR2V0U2l0ZXNX
aXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCk7Ci19Ci0KLXZvaWQgV2ViQ29udGV4dDo6ZGlkQ2xl
YXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQotewotICAgIG1fcGx1Z2luU2l0
ZURhdGFNYW5hZ2VyLT5kaWRDbGVhclNpdGVEYXRhKGNhbGxiYWNrSUQpOwotfQotI2VuZGlmCi0K
IERvd25sb2FkUHJveHkqIFdlYkNvbnRleHQ6OmNyZWF0ZURvd25sb2FkUHJveHkoKQogewogICAg
IFJlZlB0cjxEb3dubG9hZFByb3h5PiBkb3dubG9hZFByb3h5ID0gRG93bmxvYWRQcm94eTo6Y3Jl
YXRlKHRoaXMpOwpAQCAtOTcyLDEyICs4OTAsNCBAQCB2b2lkIFdlYkNvbnRleHQ6OnNldEphdmFT
Y3JpcHRHYXJiYWdlQ29sCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChmbGFnKSk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVl
dWUoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIGJvb2wmIGRpZEhh
bmRsZU1lc3NhZ2UpCi17Ci0gICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xh
c3NXZWJDb250ZXh0PigpKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVXZWJDb250ZXh0TWVzc2FnZU9u
Q29ubmVjdGlvbldvcmtRdWV1ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgZGlk
SGFuZGxlTWVzc2FnZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZp
c2lvbiAxMjU0NDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOwogICAgIAogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8V0tEaWN0aW9uYXJ5UmVm
PiBEaWN0aW9uYXJ5Q2FsbGJhY2s7CiAKLWNsYXNzIFdlYkNvbnRleHQgOiBwdWJsaWMgQVBJT2Jq
ZWN0LCBwcml2YXRlIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKK2NsYXNzIFdl
YkNvbnRleHQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHQ7CiAKQEAgLTIyOCwxNCArMjI4LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwog
ICAgIAotICAgIC8vIFBsdWdpbnMKLSAgICB2b2lkIGdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKLSAgICB2b2lkIGdldFBs
dWdpblBhdGgoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IFN0cmluZyYgcGx1Z2luUGF0aCwgYm9vbCYgYmxvY2tlZCk7Ci0jaWYgIUVOQUJMRShQTFVHSU5f
UFJPQ0VTUykKLSAgICB2b2lkIGRpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZENsZWFy
UGx1Z2luU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKTsKICAgICB2b2lkIGdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMp
OwpAQCAtMjU4LDkgKzI1MCw2IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2Vu
ZXJhdGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZl
V2ViQ29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dl
YkNvbnRleHRNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2VPbkNvbm5lY3Rpb25X
b3JrUXVldWUoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSk7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VPbkNvbm5lY3Rpb25Xb3JrUXVldWUoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgYm9vbCYgZGlkSGFuZGxlTWVzc2FnZSkgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgdm9pZCBs
YW5ndWFnZUNoYW5nZWQodm9pZCogY29udGV4dCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQo
KTsKQEAgLTI3Myw5ICsyNjIsNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKSBjb25zdDsKICAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGhhbmRsZUdldFBsdWdpbnModWludDY0X3Qg
cmVxdWVzdElELCBib29sIHJlZnJlc2gpOwotICAgIHZvaWQgc2VuZERpZEdldFBsdWdpbnModWlu
dDY0X3QgcmVxdWVzdElELCBQYXNzT3duUHRyPFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiA+
KTsKLQogICAgIFByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbDsKICAgICAKICAgICAvLyBGSVhN
RTogSW4gdGhlIGZ1dHVyZSwgdGhpcyBzaG91bGQgYmUgb25lIG9yIG1vcmUgV2ViUHJvY2Vzc1By
b3hpZXMuCkBAIC0zNTIsOCArMzM4LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJvY2Vzc1Rl
cm1pbmF0aW9uRW5hYmxlZDsKICAgICAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGlj
dGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKLQotICAgIFdvcmtRdWV1
ZSBtX3BsdWdpbldvcmtRdWV1ZTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDEyNTQ0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNSArMjQsNiBAQCBtZXNzYWdlcyAt
PiBXZWJDb250ZXh0IHsKIAogICAgICMgVmlzaXRlZCBsaW5rIHByb3ZpZGVyIG1lc3NhZ2VzLgog
ICAgIEFkZFZpc2l0ZWRMaW5rSGFzaCh1aW50NjRfdCBsaW5rSGFzaCkKLSAgICAKLSAgICAjIFBs
dWdpbiBtZXNzYWdlcy4KLSAgICBHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBy
ZWZyZXNoKSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1ZXVlCi0gICAgR2V0UGx1Z2luUGF0aChXVEY6
OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgdXJsU3RyaW5nKSAtPiAoV1RGOjpTdHJpbmcg
cGx1Z2luUGF0aCwgYm9vbCBibG9ja2VkKQotCi0jaWYgIUVOQUJMRShQTFVHSU5fUFJPQ0VTUykK
LSAgICB2b2lkIERpZEdldFNpdGVzV2l0aFBsdWdpbkRhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBz
aXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICB2b2lkIERpZENsZWFyUGx1Z2luU2l0ZURh
dGEodWludDY0X3QgY2FsbGJhY2tJRCkKLSNlbmRpZgogCiAgICAgRGlkR2V0V2ViQ29yZVN0YXRp
c3RpY3MoV2ViS2l0OjpTdGF0aXN0aWNzRGF0YSBzdGF0aXN0aWNzRGF0YSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAJKHJldmlzaW9uIDEyNTQ0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCwxNCBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJM
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJCdWlsdEluUERGVmlldy5oIgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApA
QCAtNjMsNiArNjgsMTIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCkKICAgICBy
ZXR1cm4gdW5pcXVlUGFnZUlEKys7CiB9CiAKK3N0YXRpYyBXb3JrUXVldWUmIHBsdWdpbldvcmtR
dWV1ZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXb3JrUXVldWUsIHF1ZXVlLCAoImNv
bS5hcHBsZS5Db3JlSVBDLlBsdWdpblF1ZXVlIikpOworICAgIHJldHVybiBxdWV1ZTsKK30KKwog
UGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8V2ViQ29udGV4dD4gY29udGV4dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YlByb2Nlc3NQcm94eShjb250ZXh0KSk7CkBAIC0yODIsMTYgKzI5Myw4NiBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQtPnNldEJhY2tGb3J3YXJkRGF0YShiYWNrRm9yd2FyZERhdGEuZGF0YSgpLCBiYWNrRm9yd2Fy
ZERhdGEuc2l6ZSgpKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmREaWRHZXRQbHVn
aW5zKHVpbnQ2NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8UGx1Z2luSW5mbz4gPiBw
bHVnaW5JbmZvcykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgT3duUHRy
PFZlY3RvcjxQbHVnaW5JbmZvPiA+IHBsdWdpbnMocGx1Z2luSW5mb3MpOworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIC8vIEFkZCBidWlsdC1pbiBQREYgbGFzdCwgc28gdGhhdCBpdCdzIG5vdCB1
c2VkIHdoZW4gYSByZWFsIHBsdWctaW4gaXMgaW5zdGFsbGVkLgorICAgIC8vIE5PVEU6IFRoaXMg
aGFzIHRvIGJlIGRvbmUgb24gdGhlIG1haW4gdGhyZWFkIGFzIGl0IGNhbGxzIGxvY2FsaXplZFN0
cmluZygpLgorICAgIGlmICghbV9jb250ZXh0LT5vbWl0UERGU3VwcG9ydCgpKQorICAgICAgICBw
bHVnaW5zLT5hcHBlbmQoQnVpbHRJblBERlZpZXc6OnBsdWdpbkluZm8oKSk7CisjZW5kaWYKKwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRpZEdldFBsdWdpbnMocmVxdWVzdElELCAq
cGx1Z2lucyksIDApOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6aGFuZGxlR2V0UGx1Z2lu
cyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKK3sKKyAgICBpZiAocmVmcmVzaCkK
KyAgICAgICAgbV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5yZWZyZXNoKCk7CisKKyAgICBP
d25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFBsdWdpbkluZm8+KTsKKworICAgIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBwbHVnaW5z
ID0gbV9jb250ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5wbHVnaW5zKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwbHVnaW5zLnNpemUoKTsgKytpKQorICAgICAgICBwbHVnaW5JbmZvcy0+
YXBwZW5kKHBsdWdpbnNbaV0uaW5mbyk7CisKKyAgICAvLyBOT1RFOiBXZSBoYXZlIHRvIHBhc3Mg
dGhlIFBsdWdpbkluZm8gdmVjdG9yIHRvIHRoZSBzZWNvbmRhcnkgdGhyZWFkIHZpYSBhIHBvaW50
ZXIgYXMgb3RoZXJ3aXNlCisgICAgLy8gICAgICAgd2UnZCBlbmQgdXAgd2l0aCBhIGRlcmVmKCkg
cmFjZSBvbiBhbGwgdGhlIFdURjo6U3RyaW5ncyBpdCBjb250YWlucy4KKyAgICBSdW5Mb29wOjpt
YWluKCktPmRpc3BhdGNoKGJpbmQoJldlYlByb2Nlc3NQcm94eTo6c2VuZERpZEdldFBsdWdpbnMs
IHRoaXMsIHJlcXVlc3RJRCwgcGx1Z2luSW5mb3MucmVsZWFzZSgpKSk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpnZXRQbHVnaW5zKENvcmVJUEM6OkNvbm5lY3Rpb24qLCB1aW50NjRfdCBy
ZXF1ZXN0SUQsIGJvb2wgcmVmcmVzaCkKK3sKKyAgICBwbHVnaW5Xb3JrUXVldWUoKS5kaXNwYXRj
aChiaW5kKCZXZWJQcm9jZXNzUHJveHk6OmhhbmRsZUdldFBsdWdpbnMsIHRoaXMsIHJlcXVlc3RJ
RCwgcmVmcmVzaCkpOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0UGx1Z2luUGF0aChj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RyaW5nJiBw
bHVnaW5QYXRoLCBib29sJiBibG9ja2VkKQoreworICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybFN0
cmluZyk7CisKKyAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOworCisg
ICAgYmxvY2tlZCA9IGZhbHNlOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9jb250
ZXh0LT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwo
KSwgdXJsU3RyaW5nKSk7CisgICAgaWYgKCFwbHVnaW4ucGF0aCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fY29udGV4dC0+cGx1Z2luSW5mb1N0b3JlKCkuc2hvdWxkQmxvY2tQbHVnaW4o
cGx1Z2luKSkgeworICAgICAgICBibG9ja2VkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHBsdWdpblBhdGggPSBwbHVnaW4ucGF0aDsKK30KKwogI2lmIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBy
ZXBseSkKIHsKLSAgICBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6c2hhcmVkKCkuZ2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oY29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKSwgcGx1Z2luUGF0aCwg
cmVwbHkpOworICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKS5nZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihtX2NvbnRleHQtPnBsdWdpbkluZm9TdG9yZSgpLCBwbHVnaW5QYXRoLCBy
ZXBseSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbHVnaW5TeW5jTWVzc2FnZVNlbmRU
aW1lZE91dChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7CiAgICAgUGx1Z2luUHJvY2Vzc01h
bmFnZXI6OnNoYXJlZCgpLnBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KHBsdWdpblBhdGgp
OwogfQorCisjZWxzZQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkR2V0U2l0ZXNXaXRoUGx1
Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit7CisgICAgbV9jb250ZXh0LT5wbHVnaW5TaXRlRGF0YU1hbmFnZXIoKS0+ZGlkR2V0U2l0ZXNX
aXRoRGF0YShzaXRlcywgY2FsbGJhY2tJRCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRDbGVhclBsdWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9jb250
ZXh0LT5wbHVnaW5TaXRlRGF0YU1hbmFnZXIoKS0+ZGlkQ2xlYXJTaXRlRGF0YShjYWxsYmFja0lE
KTsKK30KKwogI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDEyNTQ0MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBXZWJDb250ZXh0OwogY2xhc3MgV2ViUGFnZUdy
b3VwOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNsYXNzIFdlYlByb2Nlc3NQ
cm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNo
ZXI6OkNsaWVudCwgIENvcmVJUEM6OkNvbm5lY3Rpb246OlF1ZXVlQ2xpZW50IHsKK2NsYXNzIFdl
YlByb2Nlc3NQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXZWJQcm9jZXNzUHJv
eHk+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNs
aWVudCwgUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQsICBDb3JlSVBDOjpDb25uZWN0aW9uOjpRdWV1
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViRnJhbWVQcm94eT4gPiBXZWJGcmFtZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+ID4gV2ViQmFja0ZvcndhcmRM
aXN0SXRlbU1hcDsKQEAgLTEzMiwxMCArMTMyLDIwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBzaG91bGRUZXJtaW5hdGUoYm9vbCYgc2hvdWxkVGVybWluYXRlKTsKIAorICAgIC8vIFBsdWdp
bnMKKyAgICB2b2lkIGdldFBsdWdpbnMoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKKyAgICB2b2lkIGdldFBsdWdpblBhdGgoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFN0cmluZyYgcGx1Z2luUGF0
aCwgYm9vbCYgYmxvY2tlZCk7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQogICAgIHZvaWQg
Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQYXNz
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+KTsKICAgICB2b2lkIHBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVk
T3V0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisjZWxzZQorICAgIHZvaWQgZGlkR2V0U2l0
ZXNXaXRoUGx1Z2luRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZGlkQ2xlYXJQbHVnaW5TaXRlRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKTsKICNlbmRpZgorCisgICAgdm9pZCBoYW5kbGVHZXRQbHVnaW5zKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCByZWZyZXNoKTsKKyAgICB2b2lkIHNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2
NF90IHJlcXVlc3RJRCwgUGFzc093blB0cjxWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4gPik7
CisKICNpZiBVU0UoU0VDVVJJVFlfRlJBTUVXT1JLKQogICAgIHZvaWQgc2VjSXRlbVJlcXVlc3Qo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRlbVJl
cXVlc3REYXRhJik7CiAgICAgdm9pZCBzZWNLZXljaGFpbkl0ZW1SZXF1ZXN0KENvcmVJUEM6OkNv
bm5lY3Rpb24qLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFNlY0tleWNoYWluSXRlbVJlcXVl
c3REYXRhJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEyNTQ0MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTMzLDEwICszMywxNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgewogCiAgICAg
U2hvdWxkVGVybWluYXRlKCkgLT4gKGJvb2wgc2hvdWxkVGVybWluYXRlKQogCisgICAgIyBQbHVn
aW4gbWVzc2FnZXMuCisgICAgR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgcmVm
cmVzaCkgRGlzcGF0Y2hPbkNvbm5lY3Rpb25RdWV1ZQorICAgIEdldFBsdWdpblBhdGgoV1RGOjpT
dHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHVybFN0cmluZykgLT4gKFdURjo6U3RyaW5nIHBs
dWdpblBhdGgsIGJvb2wgYmxvY2tlZCkKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCiAgICAg
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENv
cmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAgICAgUGx1Z2luU3luY01lc3NhZ2VTZW5kVGlt
ZWRPdXQoV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkKICNlbmRpZgorI2lmICFFTkFCTEUoUExVR0lO
X1BST0NFU1MpCisgICAgdm9pZCBEaWRHZXRTaXRlc1dpdGhQbHVnaW5EYXRhKFZlY3RvcjxXVEY6
OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEaWRDbGVhclBs
dWdpblNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisjZW5kaWYKIAogI2lmIFVTRShTRUNV
UklUWV9GUkFNRVdPUkspCiAgICAgU2VjSXRlbVJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBX
ZWJLaXQ6OlNlY0l0ZW1SZXF1ZXN0RGF0YSByZXF1ZXN0KSBEaXNwYXRjaE9uQ29ubmVjdGlvblF1
ZXVlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDEyNTQ0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc5Niw3ICs3OTYsNyBAQCBzdGF0aWMgYm9vbCBjYW5QbHVnaW5I
YW5kbGVSZXNwb25zZShjb25zCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CiAgICAgYm9vbCBibG9j
a2VkOwogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5QYXRoKHJlc3BvbnNlLm1pbWVUeXBl
KCksIHJlc3BvbnNlLnVybCgpLnN0cmluZygpKSwgTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBs
dWdpblBhdGg6OlJlcGx5KHBsdWdpblBhdGgsIGJsb2NrZWQpLCAwKSkKKyAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nl
c3NQcm94eTo6R2V0UGx1Z2luUGF0aChyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS51cmwo
KS5zdHJpbmcoKSksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBhdGg6OlJl
cGx5KHBsdWdpblBhdGgsIGJsb2NrZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuICFibG9ja2VkICYmICFwbHVnaW5QYXRoLmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEyNTQ0MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tp
ZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlLmg+CkBAIC0xMzAsNyArMTMxLDcgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnBvcHVsYXRlUGx1ZwogICAgIAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
ZG8gc29tZXRoaW5nIGluIGNhc2Ugb2YgZXJyb3IgaGVyZT8KICAgICB1aW50NjRfdCByZXF1ZXN0
SUQgPSBnZW5lcmF0ZVJlcXVlc3RJRCgpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0UGx1Z2lucyhyZXF1ZXN0SUQs
IG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2lucyhy
ZXF1ZXN0SUQsIG1fc2hvdWxkUmVmcmVzaFBsdWdpbnMpLCAwKTsKIAogICAgIG1fY2FjaGVkUGx1
Z2lucyA9ICpyZXNwb25zZU1hcCgpLndhaXRGb3JSZXNwb25zZShyZXF1ZXN0SUQpOwogICAgIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMTI1NDQwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzIsOCArNDMyLDggQEAgUGFzc1JlZlB0cjxQ
bHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbgogICAgIGJvb2wgYmxvY2tlZDsKIAogICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYygKLSAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQbHVnaW5QYXRoKHBhcmFtZXRlcnMubWltZVR5
cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpKSwgCi0gICAgICAgICAgICBNZXNzYWdlczo6V2Vi
Q29udGV4dDo6R2V0UGx1Z2luUGF0aDo6UmVwbHkocGx1Z2luUGF0aCwgYmxvY2tlZCksIDApKSB7
CisgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5QYXRoKHBh
cmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpKSwKKyAgICAgICAgICAg
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblBhdGg6OlJlcGx5KHBsdWdpblBh
dGgsIGJsb2NrZWQpLCAwKSkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
</data>
<flag name="commit-queue"
          id="168139"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>