<?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>149031</bug_id>
          
          <creation_ts>2015-09-09 22:03:09 -0700</creation_ts>
          <short_desc>Implement global variables in WebAssembly</short_desc>
          <delta_ts>2015-09-22 03:46:47 -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>JavaScriptCore</component>
          <version>WebKit 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>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124837</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-09 22:03:09 -0700</bug_when>
    <thetext>Implement global variables in WebAssembly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124845</commentid>
    <comment_count>1</comment_count>
      <attachid>260911</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-09 22:48:24 -0700</bug_when>
    <thetext>Created attachment 260911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124846</commentid>
    <comment_count>2</comment_count>
      <attachid>260912</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-09 22:51:51 -0700</bug_when>
    <thetext>Created attachment 260912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124959</commentid>
    <comment_count>3</comment_count>
      <attachid>260912</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 11:29:04 -0700</bug_when>
    <thetext>Comment on attachment 260912
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124979</commentid>
    <comment_count>4</comment_count>
      <attachid>260912</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-10 12:34:51 -0700</bug_when>
    <thetext>Comment on attachment 260912
Patch

Clearing flags on attachment: 260912

Committed r189584: &lt;http://trac.webkit.org/changeset/189584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124980</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-10 12:34:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127979</commentid>
    <comment_count>6</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-22 03:46:47 -0700</bug_when>
    <thetext>Global variables have been removed from the MVP.

&quot;Mutable global variables

In the MVP, there are no global variables; C/C++ global variables are stored in linear memory and thus accessed through normal linear memory operations. Dynamic linking will add some form of immutable global variable analogous to &quot;symbols&quot; in native binaries. In some cases, though, it may be useful to have a fully mutable global variable which lives outside linear memory. This would allow more aggressive compiler optimizations (due to better alias information). If globals are additionally allowed array types, significant portions of memory could be moved out of linear memory which could reduce fragmentation issues. Langauges like FORTRAN which limit aliasing would be one use case. C/C++ compilers could also determine that some global variables never have their address taken.&quot; (https://github.com/WebAssembly/design/blob/master/FutureFeatures.md#mutable-global-variables)

&quot;Postpone adding globals until dynamic linking&quot; (https://github.com/WebAssembly/design/issues/154)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260911</attachid>
            <date>2015-09-09 22:48:24 -0700</date>
            <delta_ts>2015-09-09 22:51:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>19056</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNzcwMjc1YjgzYzdlMjQ5ZmMxNjNjOTAyZWQ4
ODY0NDAzZjQzZTcuLmI4ZTkxZGEyOTdlYmQyMzVlNDUzNGY5YWFiOWMyNDBmZGZiNmQ3ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE1LTA5LTA5ICBTdWtv
bHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCisgICAgICAgIEltcGxlbWVu
dCBnbG9iYWwgdmFyaWFibGVzIGluIFdlYkFzc2VtYmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkwMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgZ2xvYmFsIHZh
cmlhYmxlcyBpbiBXZWJBc3NlbWJseS4gVGhlcmUgYXJlIHR3bworICAgICAgICB0eXBlcyBvZiBn
bG9iYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCB0aGF0IHdlIHVzZSAodGhlIGZv
cm1hdAorICAgICAgICB1c2VkIGJ5IDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvcG9s
eWZpbGwtcHJvdG90eXBlLTE+KTogaW50ZXJuYWwKKyAgICAgICAgZ2xvYmFsIHZhcmlhYmxlcyBh
bmQgaW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCB5ZXQKKyAg
ICAgICAgaW1wb3J0IHZhbHVlcyBmb3IgaW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcy4gSXQgd2ls
bCBiZSBkb25lIGluIGEKKyAgICAgICAgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAqIHRl
c3RzL3N0cmVzcy93YXNtLWdsb2JhbHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy93YXNtL2dsb2JhbHMud2FzbTogQWRkZWQuCisgICAgICAg
ICogd2FzbS9KU1dBU01Nb2R1bGUuaDoKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpnbG9i
YWxWYXJpYWJsZXMpOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkU2V0R2xvYmFsKToKKyAgICAg
ICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkR2V0R2xvYmFsKToKKyAgICAgICAg
KiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlR2V0R2xvYmFsRXhwcmVzc2lvbkkzMik6CisgICAgICAgIChKU0M6OldBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uRjY0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25GNjQpOgorICAgICAgICAqIHdh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1
aWxkU2V0R2xvYmFsKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6
YnVpbGRHZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsU2VjdGlvbik6CisKKzIw
MTUtMDktMDkgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CisKICAg
ICAgICAgSW1wbGVtZW50IGludGVybmFsIGNhbGxzIGluIFdlYkFzc2VtYmx5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg5OTgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93YXNtLWdsb2JhbHMuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tZ2xvYmFscy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjFiNjg3MTAxYWQ5NTVhYjA1ODA5MjM3MmI4NzllNzFlMjljM2YxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93YXNtLWdsb2JhbHMu
anMKQEAgLTAsMCArMSw1NyBAQAorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKy8qCit3YXNtL2dsb2Jh
bHMud2FzbSBpcyBnZW5lcmF0ZWQgYnkgcGFjay1hc21qcyA8aHR0cHM6Ly9naXRodWIuY29tL1dl
YkFzc2VtYmx5L3BvbHlmaWxsLXByb3RvdHlwZS0xPiBmcm9tIHRoZSBmb2xsb3dpbmcgc2NyaXB0
OgorCitmdW5jdGlvbiBhc21Nb2R1bGUoZ2xvYmFsLCBlbnYsIGJ1ZmZlcikgeworICAgICJ1c2Ug
YXNtIjsKKworICAgIHZhciB4ID0gMDsKKyAgICB2YXIgeSA9IDAuMDsKKworICAgIGZ1bmN0aW9u
IGdldFgoKSB7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFko
KSB7CisgICAgICAgIHJldHVybiB5OworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFgobmV3WCkg
eworICAgICAgICBuZXdYID0gbmV3WCB8IDA7CisgICAgICAgIHggPSBuZXdYOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNldFkobmV3WSkgeworICAgICAgICBuZXdZID0gK25ld1k7CisgICAgICAg
IHkgPSBuZXdZOworICAgIH0KKworICAgIHJldHVybiB7CisgICAgICAgIGdldFg6IGdldFgsCisg
ICAgICAgIGdldFk6IGdldFksCisgICAgICAgIHNldFg6IHNldFgsCisgICAgICAgIHNldFk6IHNl
dFksCisgICAgfTsKK30KKyovCisKK3ZhciBtb2R1bGUgPSBsb2FkV2ViQXNzZW1ibHkoIndhc20v
Z2xvYmFscy53YXNtIik7CisKK3Nob3VsZEJlKG1vZHVsZS5nZXRYKCksIDApOworc2hvdWxkQmUo
bW9kdWxlLmdldFkoKSwgMCk7CisKK21vZHVsZS5zZXRYKDEpOworCitzaG91bGRCZShtb2R1bGUu
Z2V0WCgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRZKCksIDApOworCittb2R1bGUuc2V0WSgw
LjUpOworCitzaG91bGRCZShtb2R1bGUuZ2V0WCgpLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRZ
KCksIDAuNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3dhc20vZ2xvYmFscy53YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93
YXNtL2dsb2JhbHMud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjljOGFjMWNmOTZkZDlmMjUwZjA4ZDcyMzk4
M2ZlMDY5ZThlMjE3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA4MAp6Y21YUjxFWTdXRFcmaTtl
MV9tWXVXPTBAbFZxam5kTFhaJDY2RWl+dEJSXzstWSt6aClwbi1BVzAhRWhmKVJHN1cKUzF8Uyo5
eipyMW9HWGNwKzI0KD1Ldjw7dkQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKaW5kZXggZTU0ZThhYzI2M2EzZTZiYmU4ZjEx
ZDZjOTFiMWUwNTA3YjMyNzU5ZC4uMzRlOGI3OTQwMGFlYjFhMWJlNTY4NjU5NzVmZWEzNGI1Nzli
YjlhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKQEAgLTM3
LDYgKzM3LDI1IEBAIGNsYXNzIEpTV0FTTU1vZHVsZSA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOwog
CisgICAgdW5pb24gR2xvYmFsVmFyaWFibGUgeworICAgICAgICBHbG9iYWxWYXJpYWJsZShpbnQz
Ml90IHZhbHVlKQorICAgICAgICAgICAgOiBpbnRWYWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAg
ICAgICB9CisgICAgICAgIEdsb2JhbFZhcmlhYmxlKGZsb2F0IHZhbHVlKQorICAgICAgICAgICAg
OiBmbG9hdFZhbHVlKHZhbHVlKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgR2xvYmFs
VmFyaWFibGUoZG91YmxlIHZhbHVlKQorICAgICAgICAgICAgOiBkb3VibGVWYWx1ZSh2YWx1ZSkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaW50MzJfdCBpbnRWYWx1ZTsKKyAgICAg
ICAgZmxvYXQgZmxvYXRWYWx1ZTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgIH07
CisKICAgICBzdGF0aWMgSlNXQVNNTW9kdWxlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEpTV0FTTU1vZHVsZSogbW9kdWxlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SlNXQVNNTW9kdWxlPih2bS5oZWFwKSkgSlNXQVNNTW9kdWxlKHZt
LCBzdHJ1Y3R1cmUpOwpAQCAtNjcsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPj4mIGZ1bmN0aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9
CiAgICAgVmVjdG9yPHVuc2lnbmVkPiYgZnVuY3Rpb25TdGFydE9mZnNldHNJblNvdXJjZSgpIHsg
cmV0dXJuIG1fZnVuY3Rpb25TdGFydE9mZnNldHNJblNvdXJjZTsgfQogICAgIFZlY3Rvcjx1bnNp
Z25lZD4mIGZ1bmN0aW9uU3RhY2tIZWlnaHRzKCkgeyByZXR1cm4gbV9mdW5jdGlvblN0YWNrSGVp
Z2h0czsgfQorICAgIFZlY3RvcjxHbG9iYWxWYXJpYWJsZT4mIGdsb2JhbFZhcmlhYmxlcygpIHsg
cmV0dXJuIG1fZ2xvYmFsVmFyaWFibGVzOyB9CiAKIHByaXZhdGU6CiAgICAgSlNXQVNNTW9kdWxl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC04Nyw2ICsxMDcsNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4+IG1fZnVuY3Rpb25zOwogICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9mdW5jdGlvblN0YXJ0T2Zmc2V0c0luU291cmNlOwogICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gbV9mdW5jdGlvblN0YWNrSGVpZ2h0czsKKyAgICBWZWN0b3I8R2xvYmFs
VmFyaWFibGU+IG1fZ2xvYmFsVmFyaWFibGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaApp
bmRleCAxNTA1NmYzYWNlNzM3NDQzYWMxYTM4OGU5ZmU3YTRiMTZlZDcwMDQzLi5kZjVlODVhMzE4
OWVjNWU0MDc2MjNjODlmODY0MjI4YzFiODVkMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgKQEAgLTIwOSw2ICsyMDksMjUgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBidWlsZFNldEdsb2JhbCh1aW50
MzJfdCBnbG9iYWxJbmRleCwgaW50LCBXQVNNVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKCZtX21vZHVsZS0+Z2xvYmFsVmFyaWFibGVzKClbZ2xvYmFsSW5kZXhd
KSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXQVNNVHlwZTo6STMyOgorICAgICAgICBjYXNlIFdBU01UeXBlOjpGMzI6CisgICAgICAgICAg
ICBsb2FkMzIodGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEpLCBHUFJJbmZvOjpy
ZWdUMSk7CisgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNVHlwZTo6RjY0OgorICAg
ICAgICAgICAgbG9hZERvdWJsZSh0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0gMSks
IEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICBtX3RlbXBTdGFja1RvcC0tOworICAgIH0KKwogICAgIHZvaWQgYnVpbGRSZXR1cm4oaW50LCBX
QVNNRXhwcmVzc2lvblR5cGUgcmV0dXJuVHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAocmV0
dXJuVHlwZSkgewpAQCAtMjc5LDYgKzI5OCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBV
TlVTRUQ7CiAgICAgfQogCisgICAgaW50IGJ1aWxkR2V0R2xvYmFsKHVpbnQzMl90IGdsb2JhbElu
ZGV4LCBXQVNNVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCZt
X21vZHVsZS0+Z2xvYmFsVmFyaWFibGVzKClbZ2xvYmFsSW5kZXhdKSwgR1BSSW5mbzo6cmVnVDAp
OworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBXQVNNVHlwZTo6STMyOgor
ICAgICAgICBjYXNlIFdBU01UeXBlOjpGMzI6CisgICAgICAgICAgICBsb2FkMzIoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVn
VDAsIHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3ArKykpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgV0FTTVR5cGU6OkY2NDoKKyAgICAgICAgICAgIGxvYWREb3VibGUo
R1BSSW5mbzo6cmVnVDAsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgc3RvcmVEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMCwgdGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCsrKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAg
fQorCiAgICAgaW50IGJ1aWxkVW5hcnlJMzIoaW50LCBXQVNNT3BFeHByZXNzaW9uSTMyIG9wKQog
ICAgIHsKICAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAx
KSwgR1BSSW5mbzo6cmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01GdW5jdGlvblBhcnNlci5jcHAKaW5kZXggNWNiZjFlNzQyMDI5NTNkY2E0N2MzYTc2NzJhZGQ0
NjE1MWEwYWFlZC4uNDRmNWYxY2NkNTkwM2VjYzFhMWE4MzM3YTgwMzhjNjI4NTQwMDBjNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3Bw
CkBAIC0xMzcsNiArMTM3LDkgQEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpTZXRMb2NhbDoKICAgICAgICAgICAgIHBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoY29u
dGV4dCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OlNldEdsb2JhbDoKKyAgICAgICAgICAgIHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KGNvbnRleHQp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpSZXR1
cm46CiAgICAgICAgICAgICBwYXJzZVJldHVyblN0YXRlbWVudChjb250ZXh0KTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTczLDcgKzE3Niw2IEBAIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0
aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQogICAgICAgICBjYXNl
IFdBU01PcFN0YXRlbWVudDo6U3dpdGNoOgogICAgICAgICAgICAgcGFyc2VTd2l0Y2hTdGF0ZW1l
bnQoY29udGV4dCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXQVNNT3BTdGF0
ZW1lbnQ6OlNldEdsb2JhbDoKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3Jl
ODoKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDg6CiAg
ICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZTE2OgpAQCAtMTk4LDggKzIwMCw4
IEBAIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVN0YXRlbWVudChD
b250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChjb250
ZXh0LCBpbW1lZGlhdGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0FTTU9w
U3RhdGVtZW50V2l0aEltbWVkaWF0ZTo6U2V0R2xvYmFsOgotICAgICAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIGluc3RydWN0aW9uLgotICAgICAgICAgICAgRkFJTF9XSVRIX01FU1NB
R0UoIlVuc3VwcG9ydGVkIGluc3RydWN0aW9uLiIpOworICAgICAgICAgICAgcGFyc2VTZXRHbG9i
YWxTdGF0ZW1lbnQoY29udGV4dCwgaW1tZWRpYXRlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KQEAgLTIyNyw2ICsyMjksMjUgQEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlU2V0TG9jYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKIH0KIAogdGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+CitDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCwgdWludDMyX3QgZ2xvYmFs
SW5kZXgpCit7CisgICAgRkFJTF9JRl9GQUxTRShnbG9iYWxJbmRleCA8IG1fbW9kdWxlLT5nbG9i
YWxWYXJpYWJsZVR5cGVzKCkuc2l6ZSgpLCAiVGhlIGdsb2JhbCBpbmRleCBpcyBpbmNvcnJlY3Qu
Iik7CisgICAgV0FTTVR5cGUgdHlwZSA9IG1fbW9kdWxlLT5nbG9iYWxWYXJpYWJsZVR5cGVzKClb
Z2xvYmFsSW5kZXhdOworICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlKHR5cGUpKTsKKyAgICBQUk9QQUdB
VEVfRVJST1IoKTsKKyAgICBjb250ZXh0LmJ1aWxkU2V0R2xvYmFsKGdsb2JhbEluZGV4LCBleHBy
ZXNzaW9uLCB0eXBlKTsKKyAgICByZXR1cm4gVU5VU0VEOworfQorCit0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVNldEds
b2JhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQoreworICAgIHVpbnQzMl90IGdsb2JhbElu
ZGV4OworICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChnbG9iYWxJbmRleCwgIkNhbm5v
dCByZWFkIHRoZSBnbG9iYWwgaW5kZXguIik7CisgICAgcmV0dXJuIHBhcnNlU2V0R2xvYmFsU3Rh
dGVtZW50KGNvbnRleHQsIGdsb2JhbEluZGV4KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRl
eHQ+CiBDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VSZXR1cm5TdGF0
ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDb250ZXh0RXhwcmVzc2lvbiBleHByZXNz
aW9uID0gMDsKQEAgLTQ3NCw2ICs0OTUsOCBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKICAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHZXRMb2NhbDoKICAgICAgICAgICAgIHJldHVybiBw
YXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uSTMyOjpHZXRHbG9iYWw6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VHZXRHbG9i
YWxFeHByZXNzaW9uSTMyKGNvbnRleHQpOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OkNhbGxJbnRlcm5hbDoKICAgICAgICAgICAgIHJldHVybiBwYXJzZUNhbGxJbnRlcm5hbEV4
cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6
TmVnYXRlOgpAQCAtNTE0LDcgKzUzNyw2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5GNjQ6CiAgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6R3JlYXRlclRoYW5PckVxdWFsRjY0OgogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlUmVsYXRpb25hbEY2NEV4cHJlc3Npb25JMzIoY29udGV4dCwgb3ApOwotICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdldEdsb2JhbDoKICAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpTZXRMb2NhbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpTZXRHbG9iYWw6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xvYWQ4
OgpAQCAtNjE1LDYgKzYzNywxNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleAogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VHZXRHbG9iYWxFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCit7CisgICAg
dWludDMyX3QgZ2xvYmFsSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGds
b2JhbEluZGV4LCAiQ2Fubm90IHJlYWQgdGhlIGdsb2JhbCBpbmRleC4iKTsKKyAgICBGQUlMX0lG
X0ZBTFNFKGdsb2JhbEluZGV4IDwgbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKS5zaXpl
KCksICJUaGUgZ2xvYmFsIGluZGV4IGlzIGluY29ycmVjdC4iKTsKKyAgICBGQUlMX0lGX0ZBTFNF
KG1fbW9kdWxlLT5nbG9iYWxWYXJpYWJsZVR5cGVzKClbZ2xvYmFsSW5kZXhdID09IFdBU01UeXBl
OjpJMzIsICJFeHBlY3RlZCBhIGdsb2JhbCB2YXJpYWJsZSBvZiB0eXBlIGludDMyLiIpOworICAg
IHJldHVybiBjb250ZXh0LmJ1aWxkR2V0R2xvYmFsKGdsb2JhbEluZGV4LCBXQVNNVHlwZTo6STMy
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CiBDb250ZXh0RXhwcmVzc2lvbiBXQVNN
RnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2FsbEludGVybmFsRXhwcmVzc2lvbkkzMihDb250ZXh0JiBj
b250ZXh0KQogewogICAgIHJldHVybiBwYXJzZUNhbGxJbnRlcm5hbChjb250ZXh0LCBXQVNNRXhw
cmVzc2lvblR5cGU6OkkzMik7CkBAIC02NzUsNiArNzA3LDcgQEAgQ29udGV4dEV4cHJlc3Npb24g
V0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25GNjQoQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpHZXRMb2NhbDoKICAgICAgICAgICAg
IHJldHVybiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkY2NChjb250ZXh0KTsKICAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpHZXRHbG9iYWw6CisgICAgICAgICAgICByZXR1cm4gcGFy
c2VHZXRHbG9iYWxFeHByZXNzaW9uRjY0KGNvbnRleHQpOwogICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25GNjQ6OlNldExvY2FsOgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6
OlNldEdsb2JhbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpMb2FkOgpAQCAt
NzY5LDYgKzgwMiwxNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlR2V0TG9jYWxFeHByZXNzaW9uRjY0KENvbnRleHQmIGNvbnRleAogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFy
c2VHZXRHbG9iYWxFeHByZXNzaW9uRjY0KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMy
X3QgZ2xvYmFsSW5kZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGdsb2JhbElu
ZGV4LCAiQ2Fubm90IHJlYWQgdGhlIGdsb2JhbCBpbmRleC4iKTsKKyAgICBGQUlMX0lGX0ZBTFNF
KGdsb2JhbEluZGV4IDwgbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKS5zaXplKCksICJU
aGUgZ2xvYmFsIGluZGV4IGlzIGluY29ycmVjdC4iKTsKKyAgICBGQUlMX0lGX0ZBTFNFKG1fbW9k
dWxlLT5nbG9iYWxWYXJpYWJsZVR5cGVzKClbZ2xvYmFsSW5kZXhdID09IFdBU01UeXBlOjpGNjQs
ICJFeHBlY3RlZCBhIGdsb2JhbCB2YXJpYWJsZSBvZiB0eXBlIGZsb2F0NjQuIik7CisgICAgcmV0
dXJuIGNvbnRleHQuYnVpbGRHZXRHbG9iYWwoZ2xvYmFsSW5kZXgsIFdBU01UeXBlOjpGNjQpOwor
fQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRFeHByZXNzaW9uTGlzdCBXQVNN
RnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2FsbEFyZ3VtZW50cyhDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMpCiB7CiAgICAgQ29udGV4dEV4cHJlc3Npb25M
aXN0IGFyZ3VtZW50TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uUGFyc2VyLmgKaW5kZXggYTFhYzM4N2M1NjgzYTkwNjc3NDNjZDg2ZWYyZTJkZTFiNTZk
NWJhYy4uYmU2NDI3ZjkzYjU4NDAyZjJlYmZjNzc3ZTk4NmYwZDhlN2NmOTdjOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTY0LDYg
KzY0LDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0
YXRlbWVudCBwYXJzZVN0YXRlbWVudChDb250ZXh0Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0Jiwg
dWludDMyX3QgbG9jYWxJbmRleCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRl
eHRTdGF0ZW1lbnQgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0Jik7CisgICAgdGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VTZXRHbG9iYWxTdGF0ZW1l
bnQoQ29udGV4dCYsIHVpbnQzMl90IGdsb2JhbEluZGV4KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldEdsb2JhbFN0YXRlbWVudChDb250ZXh0
Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VS
ZXR1cm5TdGF0ZW1lbnQoQ29udGV4dCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBD
b250ZXh0U3RhdGVtZW50IHBhcnNlQmxvY2tTdGF0ZW1lbnQoQ29udGV4dCYpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlSWZTdGF0ZW1lbnQoQ29u
dGV4dCYpOwpAQCAtODYsNiArODgsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUltbWVkaWF0ZUV4cHJlc3Npb25JMzIoQ29u
dGV4dCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBw
YXJzZUdldExvY2FsRXhwcmVzc2lvbkkzMihDb250ZXh0JiwgdWludDMyX3QgbG9jYWxJbmRleCk7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlR2V0
TG9jYWxFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRHbG9iYWxFeHByZXNzaW9uSTMyKENvbnRleHQm
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VD
YWxsSW50ZXJuYWxFeHByZXNzaW9uSTMyKENvbnRleHQmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
Q29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VVbmFyeUV4cHJlc3Npb25JMzIoQ29udGV4
dCYsIFdBU01PcEV4cHJlc3Npb25JMzIpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBD
b250ZXh0RXhwcmVzc2lvbiBwYXJzZUJpbmFyeUV4cHJlc3Npb25JMzIoQ29udGV4dCYsIFdBU01P
cEV4cHJlc3Npb25JMzIpOwpAQCAtOTgsNiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VJbW1lZGlhdGVFeHByZXNz
aW9uRjY0KENvbnRleHQmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4
cHJlc3Npb24gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25GNjQoQ29udGV4dCYsIHVpbnQzMl90IGxv
Y2FsSW5kZXgpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lv
biBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkY2NChDb250ZXh0Jik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlR2V0R2xvYmFsRXhwcmVzc2lvbkY2
NChDb250ZXh0Jik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJl
c3Npb25MaXN0IHBhcnNlQ2FsbEFyZ3VtZW50cyhDb250ZXh0JiwgY29uc3QgVmVjdG9yPFdBU01U
eXBlPiYgYXJndW1lbnRzKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4
cHJlc3Npb24gcGFyc2VDYWxsSW50ZXJuYWwoQ29udGV4dCYsIFdBU01FeHByZXNzaW9uVHlwZSBy
ZXR1cm5UeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
dW5jdGlvblN5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01G
dW5jdGlvblN5bnRheENoZWNrZXIuaAppbmRleCAzYjEyYTYxZjQyOTFiN2ZmYmI0YjU2MjRmMTVl
YjEyMTI1NjdiMGU4Li5jMDY1NDc3YTRlNTU5NDdmZDAyMmMzOTcwOTk5MDM2ODViZmJmY2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhD
aGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3lu
dGF4Q2hlY2tlci5oCkBAIC01NSw2ICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGVtcFN0
YWNrVG9wLS07CiAgICAgfQogCisgICAgdm9pZCBidWlsZFNldEdsb2JhbCh1aW50MzJfdCwgaW50
LCBXQVNNVHlwZSkKKyAgICB7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wLS07CisgICAgfQorCiAg
ICAgdm9pZCBidWlsZFJldHVybihpbnQsIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKQog
ICAgIHsKICAgICAgICAgaWYgKHJldHVyblR5cGUgIT0gV0FTTUV4cHJlc3Npb25UeXBlOjpWb2lk
KQpAQCAtODIsNiArODcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gVU5VU0VEOwogICAg
IH0KIAorICAgIGludCBidWlsZEdldEdsb2JhbCh1aW50MzJfdCwgV0FTTVR5cGUpCisgICAgewor
ICAgICAgICBtX3RlbXBTdGFja1RvcCsrOworICAgICAgICB1cGRhdGVUZW1wU3RhY2tIZWlnaHQo
KTsKKyAgICAgICAgcmV0dXJuIFVOVVNFRDsKKyAgICB9CisKICAgICBpbnQgYnVpbGRVbmFyeUkz
MihpbnQsIFdBU01PcEV4cHJlc3Npb25JMzIpCiAgICAgewogICAgICAgICByZXR1cm4gVU5VU0VE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApp
bmRleCA0NWQxOWNlZTdkODM2YWQ4NTY1MWM4YmNmNjhlYWQ1OWIzNjRiMmQ4Li4xNTE5MDk2ZWE5
MmZkYTY2NjRmMjllNzM4ZjAyN2NmM2NkMTRmNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcApAQCAtMTkxLDI2ICsxOTEsMzcgQEAgdm9p
ZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUdsb2JhbFNlY3Rpb24oKQogCiAgICAgVmVjdG9yPFdB
U01UeXBlPiYgZ2xvYmFsVmFyaWFibGVUeXBlcyA9IG1fbW9kdWxlLT5nbG9iYWxWYXJpYWJsZVR5
cGVzKCk7CiAgICAgZ2xvYmFsVmFyaWFibGVUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51
bWJlck9mR2xvYmFsVmFyaWFibGVzKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbnVt
YmVyT2ZJbnRlcm5hbEkzMkdsb2JhbFZhcmlhYmxlczsgKytpKQorICAgIFZlY3RvcjxKU1dBU01N
b2R1bGU6Okdsb2JhbFZhcmlhYmxlPiYgZ2xvYmFsVmFyaWFibGVzID0gbV9tb2R1bGUtPmdsb2Jh
bFZhcmlhYmxlcygpOworICAgIGdsb2JhbFZhcmlhYmxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG51bWJlck9mR2xvYmFsVmFyaWFibGVzKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZJbnRlcm5hbEkzMkdsb2JhbFZhcmlhYmxlczsgKytpKSB7CiAgICAgICAgIGdsb2Jh
bFZhcmlhYmxlVHlwZXMudW5jaGVja2VkQXBwZW5kKFdBU01UeXBlOjpJMzIpOwotICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBudW1iZXJPZkludGVybmFsRjMyR2xvYmFsVmFyaWFibGVzOyAr
K2kpCisgICAgICAgIGdsb2JhbFZhcmlhYmxlcy51bmNoZWNrZWRBcHBlbmQoSlNXQVNNTW9kdWxl
OjpHbG9iYWxWYXJpYWJsZSgwKSk7CisgICAgfQorICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBudW1iZXJPZkludGVybmFsRjMyR2xvYmFsVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgZ2xv
YmFsVmFyaWFibGVUeXBlcy51bmNoZWNrZWRBcHBlbmQoV0FTTVR5cGU6OkYzMik7Ci0gICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IG51bWJlck9mSW50ZXJuYWxGNjRHbG9iYWxWYXJpYWJsZXM7
ICsraSkKKyAgICAgICAgZ2xvYmFsVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChKU1dBU01Nb2R1
bGU6Okdsb2JhbFZhcmlhYmxlKDAuMGYpKTsKKyAgICB9CisgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IG51bWJlck9mSW50ZXJuYWxGNjRHbG9iYWxWYXJpYWJsZXM7ICsraSkgewogICAgICAg
ICBnbG9iYWxWYXJpYWJsZVR5cGVzLnVuY2hlY2tlZEFwcGVuZChXQVNNVHlwZTo6RjY0KTsKKyAg
ICAgICAgZ2xvYmFsVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChKU1dBU01Nb2R1bGU6Okdsb2Jh
bFZhcmlhYmxlKDAuMCkpOworICAgIH0KICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbnVt
YmVyT2ZJbXBvcnRlZEkzMkdsb2JhbFZhcmlhYmxlczsgKytpKSB7CiAgICAgICAgIFN0cmluZyBp
bXBvcnROYW1lOwogICAgICAgICBSRUFEX1NUUklOR19PUl9GQUlMKGltcG9ydE5hbWUsICJDYW5u
b3QgcmVhZCB0aGUgaW1wb3J0IG5hbWUgb2YgYW4gaW50MzIgZ2xvYmFsIHZhcmlhYmxlLiIpOwog
ICAgICAgICBnbG9iYWxWYXJpYWJsZVR5cGVzLnVuY2hlY2tlZEFwcGVuZChXQVNNVHlwZTo6STMy
KTsKKyAgICAgICAgZ2xvYmFsVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChKU1dBU01Nb2R1bGU6
Okdsb2JhbFZhcmlhYmxlKDApKTsgLy8gRklYTUU6IEltcG9ydCB0aGUgdmFsdWUuCiAgICAgfQog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1iZXJPZkltcG9ydGVkRjMyR2xvYmFsVmFy
aWFibGVzOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGltcG9ydE5hbWU7CiAgICAgICAgIFJFQURf
U1RSSU5HX09SX0ZBSUwoaW1wb3J0TmFtZSwgIkNhbm5vdCByZWFkIHRoZSBpbXBvcnQgbmFtZSBv
ZiBhIGZsb2F0MzIgZ2xvYmFsIHZhcmlhYmxlLiIpOwogICAgICAgICBnbG9iYWxWYXJpYWJsZVR5
cGVzLnVuY2hlY2tlZEFwcGVuZChXQVNNVHlwZTo6RjMyKTsKKyAgICAgICAgZ2xvYmFsVmFyaWFi
bGVzLnVuY2hlY2tlZEFwcGVuZChKU1dBU01Nb2R1bGU6Okdsb2JhbFZhcmlhYmxlKDAuMGYpKTsg
Ly8gRklYTUU6IEltcG9ydCB0aGUgdmFsdWUuCiAgICAgfQogICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBudW1iZXJPZkltcG9ydGVkRjY0R2xvYmFsVmFyaWFibGVzOyArK2kpIHsKICAgICAg
ICAgU3RyaW5nIGltcG9ydE5hbWU7CiAgICAgICAgIFJFQURfU1RSSU5HX09SX0ZBSUwoaW1wb3J0
TmFtZSwgIkNhbm5vdCByZWFkIHRoZSBpbXBvcnQgbmFtZSBvZiBhIGZsb2F0NjQgZ2xvYmFsIHZh
cmlhYmxlLiIpOwogICAgICAgICBnbG9iYWxWYXJpYWJsZVR5cGVzLnVuY2hlY2tlZEFwcGVuZChX
QVNNVHlwZTo6RjY0KTsKKyAgICAgICAgZ2xvYmFsVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChK
U1dBU01Nb2R1bGU6Okdsb2JhbFZhcmlhYmxlKDAuMCkpOyAvLyBGSVhNRTogSW1wb3J0IHRoZSB2
YWx1ZS4KICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260912</attachid>
            <date>2015-09-09 22:51:51 -0700</date>
            <delta_ts>2015-09-10 12:34:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>diff.txt</filename>
            <type>text/plain</type>
            <size>18998</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNzcwMjc1YjgzYzdlMjQ5ZmMxNjNjOTAyZWQ4
ODY0NDAzZjQzZTcuLmI4ZTkxZGEyOTdlYmQyMzVlNDUzNGY5YWFiOWMyNDBmZGZiNmQ3ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA5LTA5ICBTdWtv
bHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBnbG9iYWwgdmFyaWFibGVzIGluIFdlYkFzc2VtYmx5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkwMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgZ2xvYmFsIHZh
cmlhYmxlcyBpbiBXZWJBc3NlbWJseS4gVGhlcmUgYXJlIHR3bworICAgICAgICB0eXBlcyBvZiBn
bG9iYWwgdmFyaWFibGVzIGluIHRoZSBjdXJyZW50IGZvcm1hdCB0aGF0IHdlIHVzZSAodGhlIGZv
cm1hdAorICAgICAgICB1c2VkIGJ5IDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvcG9s
eWZpbGwtcHJvdG90eXBlLTE+KTogaW50ZXJuYWwKKyAgICAgICAgZ2xvYmFsIHZhcmlhYmxlcyBh
bmQgaW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcy4gVGhpcyBwYXRjaCBkb2VzIG5vdCB5ZXQKKyAg
ICAgICAgaW1wb3J0IHZhbHVlcyBmb3IgaW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcy4gSXQgd2ls
bCBiZSBkb25lIGluIGEKKyAgICAgICAgc3Vic2VxdWVudCBwYXRjaC4KKworICAgICAgICAqIHRl
c3RzL3N0cmVzcy93YXNtLWdsb2JhbHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy93YXNtL2dsb2JhbHMud2FzbTogQWRkZWQuCisgICAgICAg
ICogd2FzbS9KU1dBU01Nb2R1bGUuaDoKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjpnbG9i
YWxWYXJpYWJsZXMpOgorICAgICAgICAqIHdhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaDoKKyAg
ICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkU2V0R2xvYmFsKToKKyAgICAg
ICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmJ1aWxkR2V0R2xvYmFsKToKKyAgICAgICAg
KiB3YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlR2V0R2xvYmFsRXhwcmVzc2lvbkkzMik6CisgICAgICAgIChKU0M6OldBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uRjY0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25GNjQpOgorICAgICAgICAqIHdh
c20vV0FTTUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1
aWxkU2V0R2xvYmFsKToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlcjo6
YnVpbGRHZXRHbG9iYWwpOgorICAgICAgICAqIHdhc20vV0FTTU1vZHVsZVBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsU2VjdGlvbik6CisKIDIw
MTUtMDktMDkgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IGludGVybmFsIGNhbGxzIGluIFdlYkFzc2VtYmx5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tZ2xvYmFscy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1nbG9iYWxzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliMWI2ODcxMDFhZDk1NWFiMDU4MDkyMzcyYjg3OWU3MWUyOWMzZjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tZ2xvYmFscy5q
cwpAQCAtMCwwICsxLDU3IEBACisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworLyoKK3dhc20vZ2xvYmFs
cy53YXNtIGlzIGdlbmVyYXRlZCBieSBwYWNrLWFzbWpzIDxodHRwczovL2dpdGh1Yi5jb20vV2Vi
QXNzZW1ibHkvcG9seWZpbGwtcHJvdG90eXBlLTE+IGZyb20gdGhlIGZvbGxvd2luZyBzY3JpcHQ6
CisKK2Z1bmN0aW9uIGFzbU1vZHVsZShnbG9iYWwsIGVudiwgYnVmZmVyKSB7CisgICAgInVzZSBh
c20iOworCisgICAgdmFyIHggPSAwOworICAgIHZhciB5ID0gMC4wOworCisgICAgZnVuY3Rpb24g
Z2V0WCgpIHsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0WSgp
IHsKKyAgICAgICAgcmV0dXJuIHk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0WChuZXdYKSB7
CisgICAgICAgIG5ld1ggPSBuZXdYIHwgMDsKKyAgICAgICAgeCA9IG5ld1g7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc2V0WShuZXdZKSB7CisgICAgICAgIG5ld1kgPSArbmV3WTsKKyAgICAgICAg
eSA9IG5ld1k7CisgICAgfQorCisgICAgcmV0dXJuIHsKKyAgICAgICAgZ2V0WDogZ2V0WCwKKyAg
ICAgICAgZ2V0WTogZ2V0WSwKKyAgICAgICAgc2V0WDogc2V0WCwKKyAgICAgICAgc2V0WTogc2V0
WSwKKyAgICB9OworfQorKi8KKwordmFyIG1vZHVsZSA9IGxvYWRXZWJBc3NlbWJseSgid2FzbS9n
bG9iYWxzLndhc20iKTsKKworc2hvdWxkQmUobW9kdWxlLmdldFgoKSwgMCk7CitzaG91bGRCZSht
b2R1bGUuZ2V0WSgpLCAwKTsKKworbW9kdWxlLnNldFgoMSk7CisKK3Nob3VsZEJlKG1vZHVsZS5n
ZXRYKCksIDEpOworc2hvdWxkQmUobW9kdWxlLmdldFkoKSwgMCk7CisKK21vZHVsZS5zZXRZKDAu
NSk7CisKK3Nob3VsZEJlKG1vZHVsZS5nZXRYKCksIDEpOworc2hvdWxkQmUobW9kdWxlLmdldFko
KSwgMC41KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
d2FzbS9nbG9iYWxzLndhc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dh
c20vZ2xvYmFscy53YXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOWM4YWMxY2Y5NmRkOWYyNTBmMDhkNzIzOTgz
ZmUwNjllOGUyMTcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDgwCnpjbVhSPEVZN1dEVyZpO2Ux
X21ZdVc9MEBsVnFqbmRMWFokNjZFaX50QlJfOy1ZK3poKXBuLUFXMCFFaGYpUkc3VwpTMXxTKjl6
KnIxb0dYY3ArMjQoPUt2PDt2RAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1bGUuaAppbmRleCBlNTRlOGFjMjYzYTNlNmJiZThmMTFk
NmM5MWIxZTA1MDdiMzI3NTlkLi4zNGU4Yjc5NDAwYWViMWExYmU1Njg2NTk3NWZlYTM0YjU3OWJi
OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1bGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1bGUuaApAQCAtMzcs
NiArMzcsMjUgQEAgY2xhc3MgSlNXQVNNTW9kdWxlIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAK
KyAgICB1bmlvbiBHbG9iYWxWYXJpYWJsZSB7CisgICAgICAgIEdsb2JhbFZhcmlhYmxlKGludDMy
X3QgdmFsdWUpCisgICAgICAgICAgICA6IGludFZhbHVlKHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgR2xvYmFsVmFyaWFibGUoZmxvYXQgdmFsdWUpCisgICAgICAgICAgICA6
IGZsb2F0VmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBHbG9iYWxW
YXJpYWJsZShkb3VibGUgdmFsdWUpCisgICAgICAgICAgICA6IGRvdWJsZVZhbHVlKHZhbHVlKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBpbnQzMl90IGludFZhbHVlOworICAgICAg
ICBmbG9hdCBmbG9hdFZhbHVlOworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgfTsK
KwogICAgIHN0YXRpYyBKU1dBU01Nb2R1bGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHsKICAgICAgICAgSlNXQVNNTW9kdWxlKiBtb2R1bGUgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU1dBU01Nb2R1bGU+KHZtLmhlYXApKSBKU1dBU01Nb2R1bGUodm0s
IHN0cnVjdHVyZSk7CkBAIC02Nyw2ICs4Niw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+PiYgZnVuY3Rpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbnM7IH0K
ICAgICBWZWN0b3I8dW5zaWduZWQ+JiBmdW5jdGlvblN0YXJ0T2Zmc2V0c0luU291cmNlKCkgeyBy
ZXR1cm4gbV9mdW5jdGlvblN0YXJ0T2Zmc2V0c0luU291cmNlOyB9CiAgICAgVmVjdG9yPHVuc2ln
bmVkPiYgZnVuY3Rpb25TdGFja0hlaWdodHMoKSB7IHJldHVybiBtX2Z1bmN0aW9uU3RhY2tIZWln
aHRzOyB9CisgICAgVmVjdG9yPEdsb2JhbFZhcmlhYmxlPiYgZ2xvYmFsVmFyaWFibGVzKCkgeyBy
ZXR1cm4gbV9nbG9iYWxWYXJpYWJsZXM7IH0KIAogcHJpdmF0ZToKICAgICBKU1dBU01Nb2R1bGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTg3LDYgKzEwNyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPj4gbV9mdW5jdGlvbnM7CiAgICAg
VmVjdG9yPHVuc2lnbmVkPiBtX2Z1bmN0aW9uU3RhcnRPZmZzZXRzSW5Tb3VyY2U7CiAgICAgVmVj
dG9yPHVuc2lnbmVkPiBtX2Z1bmN0aW9uU3RhY2tIZWlnaHRzOworICAgIFZlY3RvcjxHbG9iYWxW
YXJpYWJsZT4gbV9nbG9iYWxWYXJpYWJsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmlu
ZGV4IDE1MDU2ZjNhY2U3Mzc0NDNhYzFhMzg4ZTlmZTdhNGIxNmVkNzAwNDMuLmRmNWU4NWEzMTg5
ZWM1ZTQwNzYyM2M4OWY4NjQyMjhjMWI4NWQyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaApAQCAtMjA5LDYgKzIwOSwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGJ1aWxkU2V0R2xvYmFsKHVpbnQz
Ml90IGdsb2JhbEluZGV4LCBpbnQsIFdBU01UeXBlIHR5cGUpCisgICAgeworICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoJm1fbW9kdWxlLT5nbG9iYWxWYXJpYWJsZXMoKVtnbG9iYWxJbmRleF0p
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNl
IFdBU01UeXBlOjpJMzI6CisgICAgICAgIGNhc2UgV0FTTVR5cGU6OkYzMjoKKyAgICAgICAgICAg
IGxvYWQzMih0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0gMSksIEdQUkluZm86OnJl
Z1QxKTsKKyAgICAgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Qw
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01UeXBlOjpGNjQ6CisgICAg
ICAgICAgICBsb2FkRG91YmxlKHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSwg
RlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjpmcFJl
Z1QwLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAg
IG1fdGVtcFN0YWNrVG9wLS07CisgICAgfQorCiAgICAgdm9pZCBidWlsZFJldHVybihpbnQsIFdB
U01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChyZXR1
cm5UeXBlKSB7CkBAIC0yNzksNiArMjk4LDI1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFVO
VVNFRDsKICAgICB9CiAKKyAgICBpbnQgYnVpbGRHZXRHbG9iYWwodWludDMyX3QgZ2xvYmFsSW5k
ZXgsIFdBU01UeXBlIHR5cGUpCisgICAgeworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoJm1f
bW9kdWxlLT5nbG9iYWxWYXJpYWJsZXMoKVtnbG9iYWxJbmRleF0pLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIFdBU01UeXBlOjpJMzI6Cisg
ICAgICAgIGNhc2UgV0FTTVR5cGU6OkYzMjoKKyAgICAgICAgICAgIGxvYWQzMihHUFJJbmZvOjpy
ZWdUMCwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgc3RvcmUzMihHUFJJbmZvOjpyZWdU
MCwgdGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCsrKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXQVNNVHlwZTo6RjY0OgorICAgICAgICAgICAgbG9hZERvdWJsZShH
UFJJbmZvOjpyZWdUMCwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBzdG9yZURvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QwLCB0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wKyspKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFVOVVNFRDsKKyAgICB9
CisKICAgICBpbnQgYnVpbGRVbmFyeUkzMihpbnQsIFdBU01PcEV4cHJlc3Npb25JMzIgb3ApCiAg
ICAgewogICAgICAgICBsb2FkMzIodGVtcG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEp
LCBHUFJJbmZvOjpyZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FT
TUZ1bmN0aW9uUGFyc2VyLmNwcAppbmRleCA1Y2JmMWU3NDIwMjk1M2RjYTQ3YzNhNzY3MmFkZDQ2
MTUxYTBhYWVkLi40NGY1ZjFjY2Q1OTAzZWNjMWExYTgzMzdhODAzOGM2Mjg1NDAwMGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAK
QEAgLTEzNyw2ICsxMzcsOSBAQCBDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0
ZW1lbnQ6OlNldExvY2FsOgogICAgICAgICAgICAgcGFyc2VTZXRMb2NhbFN0YXRlbWVudChjb250
ZXh0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6
U2V0R2xvYmFsOgorICAgICAgICAgICAgcGFyc2VTZXRHbG9iYWxTdGF0ZW1lbnQoY29udGV4dCk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlJldHVy
bjoKICAgICAgICAgICAgIHBhcnNlUmV0dXJuU3RhdGVtZW50KGNvbnRleHQpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNzMsNyArMTc2LDYgQEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rp
b25QYXJzZXI6OnBhcnNlU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNhc2Ug
V0FTTU9wU3RhdGVtZW50OjpTd2l0Y2g6CiAgICAgICAgICAgICBwYXJzZVN3aXRjaFN0YXRlbWVu
dChjb250ZXh0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdBU01PcFN0YXRl
bWVudDo6U2V0R2xvYmFsOgogICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmU4
OgogICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmVXaXRoT2Zmc2V0ODoKICAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMTY6CkBAIC0xOTgsOCArMjAwLDgg
QEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU3RhdGVtZW50KENv
bnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICBwYXJzZVNldExvY2FsU3RhdGVtZW50KGNvbnRl
eHQsIGltbWVkaWF0ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXQVNNT3BT
dGF0ZW1lbnRXaXRoSW1tZWRpYXRlOjpTZXRHbG9iYWw6Ci0gICAgICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgaW5zdHJ1Y3Rpb24uCi0gICAgICAgICAgICBGQUlMX1dJVEhfTUVTU0FH
RSgiVW5zdXBwb3J0ZWQgaW5zdHJ1Y3Rpb24uIik7CisgICAgICAgICAgICBwYXJzZVNldEdsb2Jh
bFN0YXRlbWVudChjb250ZXh0LCBpbW1lZGlhdGUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQpAQCAtMjI3LDYgKzIyOSwyNSBAQCBDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VTZXRMb2NhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0KQogfQogCiB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpw
YXJzZVNldEdsb2JhbFN0YXRlbWVudChDb250ZXh0JiBjb250ZXh0LCB1aW50MzJfdCBnbG9iYWxJ
bmRleCkKK3sKKyAgICBGQUlMX0lGX0ZBTFNFKGdsb2JhbEluZGV4IDwgbV9tb2R1bGUtPmdsb2Jh
bFZhcmlhYmxlVHlwZXMoKS5zaXplKCksICJUaGUgZ2xvYmFsIGluZGV4IGlzIGluY29ycmVjdC4i
KTsKKyAgICBXQVNNVHlwZSB0eXBlID0gbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKVtn
bG9iYWxJbmRleF07CisgICAgQ29udGV4dEV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhw
cmVzc2lvbihjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGUodHlwZSkpOworICAgIFBST1BBR0FU
RV9FUlJPUigpOworICAgIGNvbnRleHQuYnVpbGRTZXRHbG9iYWwoZ2xvYmFsSW5kZXgsIGV4cHJl
c3Npb24sIHR5cGUpOworICAgIHJldHVybiBVTlVTRUQ7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PgorQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlU2V0R2xv
YmFsU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCit7CisgICAgdWludDMyX3QgZ2xvYmFsSW5k
ZXg7CisgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKGdsb2JhbEluZGV4LCAiQ2Fubm90
IHJlYWQgdGhlIGdsb2JhbCBpbmRleC4iKTsKKyAgICByZXR1cm4gcGFyc2VTZXRHbG9iYWxTdGF0
ZW1lbnQoY29udGV4dCwgZ2xvYmFsSW5kZXgpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4KIENvbnRleHRTdGF0ZW1lbnQgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZVJldHVyblN0YXRl
bWVudChDb250ZXh0JiBjb250ZXh0KQogewogICAgIENvbnRleHRFeHByZXNzaW9uIGV4cHJlc3Np
b24gPSAwOwpAQCAtNDc0LDYgKzQ5NSw4IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlv
blBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VJbW1lZGlhdGVFeHByZXNzaW9uSTMyKGNvbnRleHQpOwogICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkdldExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHBh
cnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKGNvbnRleHQpOworICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25JMzI6OkdldEdsb2JhbDoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUdldEdsb2Jh
bEV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6Q2FsbEludGVybmFsOgogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2FsbEludGVybmFsRXhw
cmVzc2lvbkkzMihjb250ZXh0KTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpO
ZWdhdGU6CkBAIC01MTQsNyArNTM3LDYgQEAgQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9u
UGFyc2VyOjpwYXJzZUV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpHcmVhdGVyVGhhbkY2NDoKICAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpHcmVhdGVyVGhhbk9yRXF1YWxGNjQ6CiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VSZWxhdGlvbmFsRjY0RXhwcmVzc2lvbkkzMihjb250ZXh0LCBvcCk7Ci0gICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6R2V0R2xvYmFsOgogICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OlNldExvY2FsOgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25J
MzI6OlNldEdsb2JhbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDg6
CkBAIC02MTUsNiArNjM3LDE2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VHZXRMb2NhbEV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4CiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2Vy
OjpwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25JMzIoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1
aW50MzJfdCBnbG9iYWxJbmRleDsKKyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwoZ2xv
YmFsSW5kZXgsICJDYW5ub3QgcmVhZCB0aGUgZ2xvYmFsIGluZGV4LiIpOworICAgIEZBSUxfSUZf
RkFMU0UoZ2xvYmFsSW5kZXggPCBtX21vZHVsZS0+Z2xvYmFsVmFyaWFibGVUeXBlcygpLnNpemUo
KSwgIlRoZSBnbG9iYWwgaW5kZXggaXMgaW5jb3JyZWN0LiIpOworICAgIEZBSUxfSUZfRkFMU0Uo
bV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKVtnbG9iYWxJbmRleF0gPT0gV0FTTVR5cGU6
OkkzMiwgIkV4cGVjdGVkIGEgZ2xvYmFsIHZhcmlhYmxlIG9mIHR5cGUgaW50MzIuIik7CisgICAg
cmV0dXJuIGNvbnRleHQuYnVpbGRHZXRHbG9iYWwoZ2xvYmFsSW5kZXgsIFdBU01UeXBlOjpJMzIp
OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRFeHByZXNzaW9uIFdBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VDYWxsSW50ZXJuYWxFeHByZXNzaW9uSTMyKENvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgcmV0dXJuIHBhcnNlQ2FsbEludGVybmFsKGNvbnRleHQsIFdBU01FeHBy
ZXNzaW9uVHlwZTo6STMyKTsKQEAgLTY3NSw2ICs3MDcsNyBAQCBDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkY2NChDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OkdldExvY2FsOgogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uRjY0KGNvbnRleHQpOwogICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25GNjQ6OkdldEdsb2JhbDoKKyAgICAgICAgICAgIHJldHVybiBwYXJz
ZUdldEdsb2JhbEV4cHJlc3Npb25GNjQoY29udGV4dCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkY2NDo6U2V0TG9jYWw6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkY2NDo6
U2V0R2xvYmFsOgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OkxvYWQ6CkBAIC03
NjksNiArODAyLDE2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFy
c2VHZXRMb2NhbEV4cHJlc3Npb25GNjQoQ29udGV4dCYgY29udGV4CiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJz
ZUdldEdsb2JhbEV4cHJlc3Npb25GNjQoQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICB1aW50MzJf
dCBnbG9iYWxJbmRleDsKKyAgICBSRUFEX0NPTVBBQ1RfVUlOVDMyX09SX0ZBSUwoZ2xvYmFsSW5k
ZXgsICJDYW5ub3QgcmVhZCB0aGUgZ2xvYmFsIGluZGV4LiIpOworICAgIEZBSUxfSUZfRkFMU0Uo
Z2xvYmFsSW5kZXggPCBtX21vZHVsZS0+Z2xvYmFsVmFyaWFibGVUeXBlcygpLnNpemUoKSwgIlRo
ZSBnbG9iYWwgaW5kZXggaXMgaW5jb3JyZWN0LiIpOworICAgIEZBSUxfSUZfRkFMU0UobV9tb2R1
bGUtPmdsb2JhbFZhcmlhYmxlVHlwZXMoKVtnbG9iYWxJbmRleF0gPT0gV0FTTVR5cGU6OkY2NCwg
IkV4cGVjdGVkIGEgZ2xvYmFsIHZhcmlhYmxlIG9mIHR5cGUgZmxvYXQ2NC4iKTsKKyAgICByZXR1
cm4gY29udGV4dC5idWlsZEdldEdsb2JhbChnbG9iYWxJbmRleCwgV0FTTVR5cGU6OkY2NCk7Cit9
CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgogQ29udGV4dEV4cHJlc3Npb25MaXN0IFdBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VDYWxsQXJndW1lbnRzKENvbnRleHQmIGNvbnRleHQsIGNvbnN0
IFZlY3RvcjxXQVNNVHlwZT4mIGFyZ3VtZW50cykKIHsKICAgICBDb250ZXh0RXhwcmVzc2lvbkxp
c3QgYXJndW1lbnRMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVu
Y3Rpb25QYXJzZXIuaAppbmRleCBhMWFjMzg3YzU2ODNhOTA2Nzc0M2NkODZlZjJlMmRlMWI1NmQ1
YmFjLi5iZTY0MjdmOTNiNTg0MDJmMmViZmM3NzdlOTg2ZjBkOGU3Y2Y5N2M4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaApAQCAtNjQsNiAr
NjQsOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0U3Rh
dGVtZW50IHBhcnNlU3RhdGVtZW50KENvbnRleHQmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29u
dGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmLCB1
aW50MzJfdCBsb2NhbEluZGV4KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4
dFN0YXRlbWVudCBwYXJzZVNldExvY2FsU3RhdGVtZW50KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVNldEdsb2JhbFN0YXRlbWVu
dChDb250ZXh0JiwgdWludDMyX3QgZ2xvYmFsSW5kZXgpOworICAgIHRlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PiBDb250ZXh0U3RhdGVtZW50IHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KENvbnRleHQm
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dFN0YXRlbWVudCBwYXJzZVJl
dHVyblN0YXRlbWVudChDb250ZXh0Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRTdGF0ZW1lbnQgcGFyc2VCbG9ja1N0YXRlbWVudChDb250ZXh0Jik7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRTdGF0ZW1lbnQgcGFyc2VJZlN0YXRlbWVudChDb250
ZXh0Jik7CkBAIC04Niw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlSW1tZWRpYXRlRXhwcmVzc2lvbkkzMihDb250
ZXh0Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBh
cnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKENvbnRleHQmLCB1aW50MzJfdCBsb2NhbEluZGV4KTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRM
b2NhbEV4cHJlc3Npb25JMzIoQ29udGV4dCYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0
PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25JMzIoQ29udGV4dCYp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUNh
bGxJbnRlcm5hbEV4cHJlc3Npb25JMzIoQ29udGV4dCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBD
b250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0
JiwgV0FTTU9wRXhwcmVzc2lvbkkzMik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENv
bnRleHRFeHByZXNzaW9uIHBhcnNlQmluYXJ5RXhwcmVzc2lvbkkzMihDb250ZXh0JiwgV0FTTU9w
RXhwcmVzc2lvbkkzMik7CkBAIC05OCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRl
IDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUltbWVkaWF0ZUV4cHJlc3Np
b25GNjQoQ29udGV4dCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhw
cmVzc2lvbiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkY2NChDb250ZXh0JiwgdWludDMyX3QgbG9j
YWxJbmRleCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9u
IHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uRjY0KENvbnRleHQmKTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VHZXRHbG9iYWxFeHByZXNzaW9uRjY0
KENvbnRleHQmKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVz
c2lvbkxpc3QgcGFyc2VDYWxsQXJndW1lbnRzKENvbnRleHQmLCBjb25zdCBWZWN0b3I8V0FTTVR5
cGU+JiBhcmd1bWVudHMpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhw
cmVzc2lvbiBwYXJzZUNhbGxJbnRlcm5hbChDb250ZXh0JiwgV0FTTUV4cHJlc3Npb25UeXBlIHJl
dHVyblR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uU3ludGF4Q2hlY2tlci5oCmluZGV4IDNiMTJhNjFmNDI5MWI3ZmZiYjRiNTYyNGYxNWVi
MTIxMjU2N2IwZTguLmMwNjU0NzdhNGU1NTk0N2ZkMDIyYzM5NzA5OTkwMzY4NWJmYmZjZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50
YXhDaGVja2VyLmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV90ZW1wU3Rh
Y2tUb3AtLTsKICAgICB9CiAKKyAgICB2b2lkIGJ1aWxkU2V0R2xvYmFsKHVpbnQzMl90LCBpbnQs
IFdBU01UeXBlKQorICAgIHsKKyAgICAgICAgbV90ZW1wU3RhY2tUb3AtLTsKKyAgICB9CisKICAg
ICB2b2lkIGJ1aWxkUmV0dXJuKGludCwgV0FTTUV4cHJlc3Npb25UeXBlIHJldHVyblR5cGUpCiAg
ICAgewogICAgICAgICBpZiAocmV0dXJuVHlwZSAhPSBXQVNNRXhwcmVzc2lvblR5cGU6OlZvaWQp
CkBAIC04Miw2ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBVTlVTRUQ7CiAgICAg
fQogCisgICAgaW50IGJ1aWxkR2V0R2xvYmFsKHVpbnQzMl90LCBXQVNNVHlwZSkKKyAgICB7Cisg
ICAgICAgIG1fdGVtcFN0YWNrVG9wKys7CisgICAgICAgIHVwZGF0ZVRlbXBTdGFja0hlaWdodCgp
OworICAgICAgICByZXR1cm4gVU5VU0VEOworICAgIH0KKwogICAgIGludCBidWlsZFVuYXJ5STMy
KGludCwgV0FTTU9wRXhwcmVzc2lvbkkzMikKICAgICB7CiAgICAgICAgIHJldHVybiBVTlVTRUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCmlu
ZGV4IDQ1ZDE5Y2VlN2Q4MzZhZDg1NjUxYzhiY2Y2OGVhZDU5YjM2NGIyZDguLjE1MTkwOTZlYTky
ZmRhNjY2NGYyOWU3MzhmMDI3Y2YzY2QxNGY0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCkBAIC0xOTEsMjYgKzE5MSwzNyBAQCB2b2lk
IFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsU2VjdGlvbigpCiAKICAgICBWZWN0b3I8V0FT
TVR5cGU+JiBnbG9iYWxWYXJpYWJsZVR5cGVzID0gbV9tb2R1bGUtPmdsb2JhbFZhcmlhYmxlVHlw
ZXMoKTsKICAgICBnbG9iYWxWYXJpYWJsZVR5cGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVt
YmVyT2ZHbG9iYWxWYXJpYWJsZXMpOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZkludGVybmFsSTMyR2xvYmFsVmFyaWFibGVzOyArK2kpCisgICAgVmVjdG9yPEpTV0FTTU1v
ZHVsZTo6R2xvYmFsVmFyaWFibGU+JiBnbG9iYWxWYXJpYWJsZXMgPSBtX21vZHVsZS0+Z2xvYmFs
VmFyaWFibGVzKCk7CisgICAgZ2xvYmFsVmFyaWFibGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtYmVyT2ZHbG9iYWxWYXJpYWJsZXMpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBu
dW1iZXJPZkludGVybmFsSTMyR2xvYmFsVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgZ2xvYmFs
VmFyaWFibGVUeXBlcy51bmNoZWNrZWRBcHBlbmQoV0FTTVR5cGU6OkkzMik7Ci0gICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IG51bWJlck9mSW50ZXJuYWxGMzJHbG9iYWxWYXJpYWJsZXM7ICsr
aSkKKyAgICAgICAgZ2xvYmFsVmFyaWFibGVzLnVuY2hlY2tlZEFwcGVuZChKU1dBU01Nb2R1bGU6
Okdsb2JhbFZhcmlhYmxlKDApKTsKKyAgICB9CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IG51bWJlck9mSW50ZXJuYWxGMzJHbG9iYWxWYXJpYWJsZXM7ICsraSkgewogICAgICAgICBnbG9i
YWxWYXJpYWJsZVR5cGVzLnVuY2hlY2tlZEFwcGVuZChXQVNNVHlwZTo6RjMyKTsKLSAgICBmb3Ig
KHVpbnQzMl90IGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnRlcm5hbEY2NEdsb2JhbFZhcmlhYmxlczsg
KytpKQorICAgICAgICBnbG9iYWxWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKEpTV0FTTU1vZHVs
ZTo6R2xvYmFsVmFyaWFibGUoMC4wZikpOworICAgIH0KKyAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgbnVtYmVyT2ZJbnRlcm5hbEY2NEdsb2JhbFZhcmlhYmxlczsgKytpKSB7CiAgICAgICAg
IGdsb2JhbFZhcmlhYmxlVHlwZXMudW5jaGVja2VkQXBwZW5kKFdBU01UeXBlOjpGNjQpOworICAg
ICAgICBnbG9iYWxWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKEpTV0FTTU1vZHVsZTo6R2xvYmFs
VmFyaWFibGUoMC4wKSk7CisgICAgfQogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZkltcG9ydGVkSTMyR2xvYmFsVmFyaWFibGVzOyArK2kpIHsKICAgICAgICAgU3RyaW5nIGlt
cG9ydE5hbWU7CiAgICAgICAgIFJFQURfU1RSSU5HX09SX0ZBSUwoaW1wb3J0TmFtZSwgIkNhbm5v
dCByZWFkIHRoZSBpbXBvcnQgbmFtZSBvZiBhbiBpbnQzMiBnbG9iYWwgdmFyaWFibGUuIik7CiAg
ICAgICAgIGdsb2JhbFZhcmlhYmxlVHlwZXMudW5jaGVja2VkQXBwZW5kKFdBU01UeXBlOjpJMzIp
OworICAgICAgICBnbG9iYWxWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKEpTV0FTTU1vZHVsZTo6
R2xvYmFsVmFyaWFibGUoMCkpOyAvLyBGSVhNRTogSW1wb3J0IHRoZSB2YWx1ZS4KICAgICB9CiAg
ICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG51bWJlck9mSW1wb3J0ZWRGMzJHbG9iYWxWYXJp
YWJsZXM7ICsraSkgewogICAgICAgICBTdHJpbmcgaW1wb3J0TmFtZTsKICAgICAgICAgUkVBRF9T
VFJJTkdfT1JfRkFJTChpbXBvcnROYW1lLCAiQ2Fubm90IHJlYWQgdGhlIGltcG9ydCBuYW1lIG9m
IGEgZmxvYXQzMiBnbG9iYWwgdmFyaWFibGUuIik7CiAgICAgICAgIGdsb2JhbFZhcmlhYmxlVHlw
ZXMudW5jaGVja2VkQXBwZW5kKFdBU01UeXBlOjpGMzIpOworICAgICAgICBnbG9iYWxWYXJpYWJs
ZXMudW5jaGVja2VkQXBwZW5kKEpTV0FTTU1vZHVsZTo6R2xvYmFsVmFyaWFibGUoMC4wZikpOyAv
LyBGSVhNRTogSW1wb3J0IHRoZSB2YWx1ZS4KICAgICB9CiAgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IG51bWJlck9mSW1wb3J0ZWRGNjRHbG9iYWxWYXJpYWJsZXM7ICsraSkgewogICAgICAg
ICBTdHJpbmcgaW1wb3J0TmFtZTsKICAgICAgICAgUkVBRF9TVFJJTkdfT1JfRkFJTChpbXBvcnRO
YW1lLCAiQ2Fubm90IHJlYWQgdGhlIGltcG9ydCBuYW1lIG9mIGEgZmxvYXQ2NCBnbG9iYWwgdmFy
aWFibGUuIik7CiAgICAgICAgIGdsb2JhbFZhcmlhYmxlVHlwZXMudW5jaGVja2VkQXBwZW5kKFdB
U01UeXBlOjpGNjQpOworICAgICAgICBnbG9iYWxWYXJpYWJsZXMudW5jaGVja2VkQXBwZW5kKEpT
V0FTTU1vZHVsZTo6R2xvYmFsVmFyaWFibGUoMC4wKSk7IC8vIEZJWE1FOiBJbXBvcnQgdGhlIHZh
bHVlLgogICAgIH0KIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>