<?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>140377</bug_id>
          
          <creation_ts>2015-01-12 17:03:43 -0800</creation_ts>
          <short_desc>Basic block start offsets should never be larger than end offsets in the control flow profiler</short_desc>
          <delta_ts>2015-01-19 20:48:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138454</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060726</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-12 17:03:43 -0800</bug_when>
    <thetext>There are a few bugs where a basic block will be created with a start text offset that is larger than its end offset. This is wrong and needs to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061504</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-15 00:26:19 -0800</bug_when>
    <thetext>This patch is actually turning into a fix that allows a single textual JavaScript statement to have its AST node instructions emitted multiple times and to not mess up the control flow profiler&apos;s computation of basic block boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061506</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-15 00:27:35 -0800</bug_when>
    <thetext>*** Bug 139287 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061598</commentid>
    <comment_count>3</comment_count>
      <attachid>244705</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-15 11:35:56 -0800</bug_when>
    <thetext>Created attachment 244705
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061599</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-15 11:38:34 -0800</bug_when>
    <thetext>Attachment 244705 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:4082:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062593</commentid>
    <comment_count>5</comment_count>
      <attachid>244952</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-19 19:27:37 -0800</bug_when>
    <thetext>Created attachment 244952
patch (check build)

making sure it builds everywhere</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062594</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-19 19:28:17 -0800</bug_when>
    <thetext>Attachment 244952 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:4082:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062631</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-01-19 20:48:25 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/178692</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244705</attachid>
            <date>2015-01-15 11:35:56 -0800</date>
            <delta_ts>2015-01-19 18:54:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>18264</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTAxLTE1ICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBCYXNpYyBibG9jayBzdGFydCBvZmZzZXRzIHNob3VsZCBuZXZlciBiZSBsYXJnZXIgdGhh
biBlbmQgb2Zmc2V0cyBpbiB0aGUgY29udHJvbCBmbG93IHByb2ZpbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAzNzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYnR5ZWNvZGUgZ2VuZXJhdG9y
IHdpbGwgZW1pdCBjb2RlIG1vcmUgdGhhbiBvbmNlIGZvciBzb21lIEFTVCBub2Rlcy4gRm9yIGlu
c3RhbmNlLCAKKyAgICAgICAgdGhlIGZpbmFsbHkgYmxvY2sgb2YgVHJ5Tm9kZSB3aWxsIGVtaXQg
dHdvIGNvZGUgcGF0aHMgZm9yIGl0cyBmaW5hbGx5IGJsb2NrOiBvbmUgZm9yIAorICAgICAgICB0
aGUgbm9ybWFsIHBhdGgsIGFuZCBhbm90aGVyIGZvciB0aGUgcGF0aCB3aGVyZSBhbiBleGNlcHRp
b24gaXMgdGhyb3duIGluIHRoZSBjYXRjaCBibG9jay4gCisgICAgICAgIAorICAgICAgICBUaGlz
IHJlcGVhdGVkIGNvZGUgZW1pc3Npb24gb2YgdGhlIHNhbWUgQVNUIG5vZGUgcHJldmlvdXNseSBi
cm9rZSBob3cgdGhlIGNvbnRyb2wgCisgICAgICAgIGZsb3cgcHJvZmlsZXIgY29tcHV0ZWQgdGV4
dCByYW5nZXMgb2YgYmFzaWMgYmxvY2tzIGJlY2F1c2Ugd2hlbiB0aGUgc2FtZSBBU1Qgbm9kZSAK
KyAgICAgICAgaXMgZW1pdHRlZCBtdWx0aXBsZSB0aW1lcywgdGhlcmUgaXMgYSBnb29kIGNoYW5j
ZSB0aGF0IHRoZXJlIGFyZSByYW5nZXMgdGhhdCBzcGFuIAorICAgICAgICBmcm9tIHRoZSBlbmQg
b2Zmc2V0IG9mIG9uZSBvZiB0aGVzZSBkdXBsaWNhdGVkIG5vZGVzIGJhY2sgdG8gdGhlIHN0YXJ0
IG9mZnNldCBvZiAKKyAgICAgICAgdGhlIHNhbWUgZHVwbGljYXRlZCBub2RlLiBUaGlzIGNhdXNl
ZCBhIGJhc2ljIGJsb2NrIHJhbmdlIHRvIHJlcG9ydCBhIGxhcmdlciBzdGFydCAKKyAgICAgICAg
b2Zmc2V0IHRoYW4gZW5kIG9mZnNldC4gVGhpcyB3YXMgaW5jb3JyZWN0LiBOb3csIHdoZW4gdGhp
cyBzaXR1dGF0aW9uIGlzIGVuY291bnRlcmVkIAorICAgICAgICB3aGlsZSBsaW5raW5nIGEgQ29k
ZUJsb2NrLCB0aGUgZmF1bHR5IHJhbmdlIGluIHF1ZXN0aW9uIGlzIGlnbm9yZWQuCisKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5k
YXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6Rm9ySW5Ob2RlOjplbWl0TXVsdGlMb29wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
b3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbik6CisgICAgICAgICogcnVu
dGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29udHJvbEZsb3dQ
cm9maWxlcjo6Q29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogcnVudGltZS9Db250cm9s
Rmxvd1Byb2ZpbGVyLmg6CisgICAgICAgIChKU0M6OkNvbnRyb2xGbG93UHJvZmlsZXI6OmR1bW15
QmFzaWNCbG9jayk6CisKIDIwMTUtMDEtMTQgIE1hdHRoZXcgTWlybWFuICA8bW1pcm1hbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBhY2NpZGVudGFsIGNvbW1pdCBvZiAiaW52YWxpZF9h
cnJheS5qcyIgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzYsNDUgKzIxMzYsOCBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIGkgKz0gb3BM
ZW5ndGg7CiAgICAgfQogCi0gICAgaWYgKHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewot
ICAgICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5rZWRD
b2RlQmxvY2stPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBvZmZzZXRzTGVuZ3RoID0gYnl0ZWNvZGVPZmZzZXRzLnNpemUo
KTsgaSA8IG9mZnNldHNMZW5ndGg7IGkrKykgewotICAgICAgICAgICAgLy8gQmVjYXVzZSBvcF9w
cm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkg
YmFzaWMgYmxvY2ssIGZpbmRpbmcgCi0gICAgICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxl
X2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFz
aWMgYmxvY2suCi0gICAgICAgICAgICBzaXplX3Qgc3RhcnRJZHggPSBieXRlY29kZU9mZnNldHNb
aV07Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zW3N0YXJ0SWR4XS51Lm9wY29kZSkgPT0gb3BfcHJvZmlsZV9jb250
cm9sX2Zsb3cpOwotICAgICAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IGluc3Ry
dWN0aW9uc1tzdGFydElkeCArIDFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBiYXNpY0Js
b2NrRW5kT2Zmc2V0OwotICAgICAgICAgICAgaWYgKGkgKyAxIDwgb2Zmc2V0c0xlbmd0aCkgewot
ICAgICAgICAgICAgICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOwot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNbZW5kSWR4XS51Lm9wY29kZSkgPT0gb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cpOwotICAgICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBpbnN0cnVjdGlv
bnNbZW5kSWR4ICsgMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgYmFzaWNCbG9ja0VuZE9mZnNldCA9IG1fc291cmNlT2Zmc2V0ICsgbV9vd25lckV4ZWN1
dGFibGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMTsKLQotICAgICAgICAgICAgQmFzaWNCbG9ja0xv
Y2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCkt
PmdldEJhc2ljQmxvY2tMb2NhdGlvbihtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgYmFz
aWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2NrRW5kT2Zmc2V0KTsKLQotICAgICAgICAgICAg
Ly8gRmluZCBhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIGVuY2xvc2VkIHdpdGhpbiB0aGUgcmFuZ2U6
IFtiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2ljQmxvY2tFbmRPZmZzZXRdCi0gICAgICAgICAg
ICAvLyBhbmQgaW5zZXJ0IHRoZXNlIGZ1bmN0aW9ucycgc3RhcnQvZW5kIG9mZnNldHMgYXMgZ2Fw
cyBpbiB0aGUgY3VycmVudCBCYXNpY0Jsb2NrTG9jYXRpb24uCi0gICAgICAgICAgICAvLyBUaGlz
IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGV4dCBvZiBhIEph
dmFTY3JpcHQgcHJvZ3JhbSwgCi0gICAgICAgICAgICAvLyBmdW5jdGlvbiBsaXRlcmFscyBmb3Jt
IG5ldyBiYXNpYyBibG9ja3MgYm91bmRhcmllcywgYnV0IHRoZXkgYXJlbid0IHJlcHJlc2VudGVk
IAotICAgICAgICAgICAgLy8gaW5zaWRlIHRoZSBDb2RlQmxvY2sncyBpbnN0cnVjdGlvbiBzdHJl
YW0uCi0gICAgICAgICAgICBhdXRvIGluc2VydEZ1bmN0aW9uR2FwcyA9IFtiYXNpY0Jsb2NrTG9j
YXRpb24sIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldF0gKGNvbnN0
IFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+JiBmdW5jdGlvbkV4ZWN1dGFibGUpIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+dW5saW5rZWRFeGVjdXRhYmxlKCk7Ci0gICAgICAg
ICAgICAgICAgaW50IGZ1bmN0aW9uU3RhcnQgPSBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25FbmQgPSBleGVjdXRhYmxl
LT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9u
U3RhcnQgPj0gYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0ICYmIGZ1bmN0aW9uRW5kIDw9IGJhc2ljQmxv
Y2tFbmRPZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGJhc2ljQmxvY2tMb2NhdGlvbi0+aW5z
ZXJ0R2FwKGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uRW5kKTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4mIGV4
ZWN1dGFibGUgOiBtX2Z1bmN0aW9uRGVjbHMpCi0gICAgICAgICAgICAgICAgaW5zZXJ0RnVuY3Rp
b25HYXBzKGV4ZWN1dGFibGUpOwotICAgICAgICAgICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6IG1fZnVuY3Rpb25FeHBycykKLSAgICAg
ICAgICAgICAgICBpbnNlcnRGdW5jdGlvbkdhcHMoZXhlY3V0YWJsZSk7Ci0KLSAgICAgICAgICAg
IGluc3RydWN0aW9uc1tzdGFydElkeCArIDFdLnUuYmFzaWNCbG9ja0xvY2F0aW9uID0gYmFzaWNC
bG9ja0xvY2F0aW9uOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICh2bSgpLT5jb250cm9sRmxv
d1Byb2ZpbGVyKCkpCisgICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJv
bEZsb3dQcm9maWxlcihpbnN0cnVjdGlvbnMpOwogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6
OlJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4oaW5zdHJ1Y3Rpb25zKTsKIApAQCAtNDA2Niw0
ICs0MDI5LDcxIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIENvZGVCbG9jazo6Y2FwYWJpbGkKIH0K
ICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKFZlY3RvcjxJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+JiBpbnN0cnVjdGlvbnMpCit7CisgICAgY29uc3QgVmVjdG9yPHNpemVfdD4mIGJ5dGVj
b2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBi
eXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7CisgICAgICAg
IC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVn
aW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBmaW5kaW5nIAorICAgICAgICAvLyB0aGUgbmV4
dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2Yg
YSBzaW5nbGUgYmFzaWMgYmxvY2suCisgICAgICAgIHNpemVfdCBzdGFydElkeCA9IGJ5dGVjb2Rl
T2Zmc2V0c1tpXTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc1tzdGFydElkeF0udS5vcGNvZGUpID09IG9wX3Byb2ZpbGVf
Y29udHJvbF9mbG93KTsKKyAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IGluc3Ry
dWN0aW9uc1tzdGFydElkeCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGJhc2ljQmxvY2tF
bmRPZmZzZXQ7CisgICAgICAgIGlmIChpICsgMSA8IG9mZnNldHNMZW5ndGgpIHsKKyAgICAgICAg
ICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c1tlbmRJZHhdLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7CisgICAgICAg
ICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zW2VuZElkeCArIDFdLnUub3Bl
cmFuZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQg
PSBtX3NvdXJjZU9mZnNldCArIG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSAt
IDE7IC8vIE9mZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICBiYXNp
Y0Jsb2NrU3RhcnRPZmZzZXQgPSBzdGQ6Om1pbihiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2lj
QmxvY2tFbmRPZmZzZXQpOyAvLyBTb21lIHN0YXJ0IG9mZnNldHMgbWF5IGJlIGF0IHRoZSBjbG9z
aW5nIGJyYWNlLCBlbnN1cmUgaXQgaXMgdGhlIG9mZnNldCBiZWZvcmUuCisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrIGFsbG93cyBmb3IgdGhlIHNhbWUgdGV4dHVh
bCBKYXZhU2NyaXB0IGJhc2ljIGJsb2NrIHRvIGhhdmUgaXRzIGJ5dGVjb2RlIGVtaXR0ZWQgbW9y
ZQorICAgICAgICAvLyB0aGFuIG9uY2UgYW5kIHN0aWxsIHBsYXkgbmljZSB3aXRoIHRoZSBjb250
cm9sIGZsb3cgcHJvZmlsZXIuIFdoZW4gYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0IGlzIGxhcmdlciB0
aGFuIAorICAgICAgICAvLyBiYXNpY0Jsb2NrRW5kT2Zmc2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGhhcyBlbWl0dGVkIGNvZGUgZm9yIHRoZSBzYW1lIEFTVCBu
b2RlIAorICAgICAgICAvLyBtb3JlIHRoYW4gb25jZSAoZm9yIGV4YW1wbGU6IEZvckluTm9kZSwg
RmluYWxseSBibG9ja3MgaW4gVHJ5Tm9kZSwgZXRjKS4gVGhvdWdoIHRoZXNlIGFyZSBkaWZmZXJl
bnQgCisgICAgICAgIC8vIGJhc2ljIGJsb2NrcyBhdCB0aGUgYnl0ZWNvZGUgbGV2ZWwsIHRoZXkg
YXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBzYW1lIHRleHR1YWwgYmFzaWMgYmxvY2sgaW4gdGhlIEph
dmFTY3JpcHQgCisgICAgICAgIC8vIHByb2dyYW0uIFRoZSBjb25kaXRpb246IAorICAgICAgICAv
LyAoYmFzaWNCbG9ja0VuZE9mZnNldCA8IGJhc2ljQmxvY2tTdGFydE9mZnNldCkgCisgICAgICAg
IC8vIGlzIGVuY291bnRlcmVkIHdoZW4gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgbGllcyBhY3Jv
c3MgdGhlIGJvdW5kYXJ5IG9mIHRoZXNlIGR1cGxpY2F0ZWQgYnl0ZWNvZGUgYmFzaWMgCisgICAg
ICAgIC8vIGJsb2NrcyBhbmQgdGhlIHRleHR1YWwgb2Zmc2V0IGdvZXMgZnJvbSB0aGUgZW5kIG9m
IHRoZSBkdXBsaWNhdGVkIGJsb2NrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4gVGhlc2UgCisgICAg
ICAgIC8vIHJhbmdlcyBhcmUgZHVtbXkgcmFuZ2VzIGFuZCBhcmUgaWdub3JlZC4gVGhlIGR1cGxp
Y2F0ZWQgYnl0ZWNvZGUgYmFzaWMgYmxvY2tzIHBvaW50IHRvIHRoZSBzYW1lIAorICAgICAgICAv
LyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSwgc28gaWYgYW55IG9mIHRoZW0gZXhlY3V0ZSwgaXQg
d2lsbCByZWNvcmQgdGhlIHNhbWUgdGV4dHVhbCBiYXNpYyBibG9jayBpbiB0aGUgCisgICAgICAg
IC8vIEphdmFTY3JpcHQgcHJvZ3JhbSBhcyBleGVjdXRpbmcuCisgICAgICAgIC8vIEF0IHRoZSBi
eXRlY29kZSBsZXZlbCwgdGhpcyBzaXR1YXRpb24gbG9va3MgbGlrZToKKyAgICAgICAgLy8gajog
b3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgKGZyb20gai0+aywgd2UgaGF2ZSBiYXNpY0Jsb2NrRW5k
T2Zmc2V0IDwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0KQorICAgICAgICAvLyAuLi4KKyAgICAgICAg
Ly8gazogb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgKHdlIHdhbnQgdG8gc2tpcCBvdmVyIHRoZSBq
LT5rIGJsb2NrIGFuZCBzdGFydCBmcmVzaCBhdCBvZmZzZXQgayBhcyB0aGUgc3RhcnQgb2YgYSBu
ZXcgYmFzaWMgYmxvY2sgay0+bSkuCisgICAgICAgIC8vIC4uLgorICAgICAgICAvLyBtOiBvcF9w
cm9maWxlX2NvbnRyb2xfZmxvdworICAgICAgICBpZiAoYmFzaWNCbG9ja0VuZE9mZnNldCA8IGJh
c2ljQmxvY2tTdGFydE9mZnNldCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSArIDEg
PCBvZmZzZXRzTGVuZ3RoKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGVuY291bnRlciBkdW1teSBibG9j
a3MgYXQgdGhlIGVuZCBvZiBhIENvZGVCbG9jay4KKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tz
dGFydElkeCArIDFdLnUuYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0oKS0+Y29udHJvbEZsb3dQcm9m
aWxlcigpLT5kdW1teUJhc2ljQmxvY2soKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2
bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tMb2NhdGlvbihtX293bmVy
RXhlY3V0YWJsZS0+c291cmNlSUQoKSwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2Nr
RW5kT2Zmc2V0KTsKKworICAgICAgICAvLyBGaW5kIGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgZW5j
bG9zZWQgd2l0aGluIHRoZSByYW5nZTogW2Jhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9j
a0VuZE9mZnNldF0KKyAgICAgICAgLy8gYW5kIGluc2VydCB0aGVzZSBmdW5jdGlvbnMnIHN0YXJ0
L2VuZCBvZmZzZXRzIGFzIGdhcHMgaW4gdGhlIGN1cnJlbnQgQmFzaWNCbG9ja0xvY2F0aW9uLgor
ICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluIHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgdGV4dCBvZiBhIEphdmFTY3JpcHQgcHJvZ3JhbSwgCisgICAgICAgIC8vIGZ1bmN0aW9uIGxp
dGVyYWxzIGZvcm0gbmV3IGJhc2ljIGJsb2NrcyBib3VuZGFyaWVzLCBidXQgdGhleSBhcmVuJ3Qg
cmVwcmVzZW50ZWQgCisgICAgICAgIC8vIGluc2lkZSB0aGUgQ29kZUJsb2NrJ3MgaW5zdHJ1Y3Rp
b24gc3RyZWFtLgorICAgICAgICBhdXRvIGluc2VydEZ1bmN0aW9uR2FwcyA9IFtiYXNpY0Jsb2Nr
TG9jYXRpb24sIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldF0gKGNv
bnN0IFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+JiBmdW5jdGlvbkV4ZWN1dGFibGUp
IHsKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gZnVuY3Rpb25FeGVjdXRhYmxlLT51bmxpbmtlZEV4ZWN1dGFibGUoKTsKKyAgICAgICAg
ICAgIGludCBmdW5jdGlvblN0YXJ0ID0gZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCk7CisgICAgICAgICAgICBpbnQgZnVuY3Rpb25FbmQgPSBleGVjdXRhYmxlLT50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25TdGFydCA+PSBiYXNp
Y0Jsb2NrU3RhcnRPZmZzZXQgJiYgZnVuY3Rpb25FbmQgPD0gYmFzaWNCbG9ja0VuZE9mZnNldCkK
KyAgICAgICAgICAgICAgICBiYXNpY0Jsb2NrTG9jYXRpb24tPmluc2VydEdhcChmdW5jdGlvblN0
YXJ0LCBmdW5jdGlvbkVuZCk7CisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChjb25zdCBXcml0
ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6IG1fZnVuY3Rpb25EZWNs
cykKKyAgICAgICAgICAgIGluc2VydEZ1bmN0aW9uR2FwcyhleGVjdXRhYmxlKTsKKyAgICAgICAg
Zm9yIChjb25zdCBXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6
IG1fZnVuY3Rpb25FeHBycykKKyAgICAgICAgICAgIGluc2VydEZ1bmN0aW9uR2FwcyhleGVjdXRh
YmxlKTsKKworICAgICAgICBpbnN0cnVjdGlvbnNbc3RhcnRJZHggKyAxXS51LmJhc2ljQmxvY2tM
b2NhdGlvbiA9IGJhc2ljQmxvY2tMb2NhdGlvbjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDYgKzEwMzcsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CiAgICAg
fQogCisgICAgdm9pZCBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJv
ZmlsZXIoVmVjdG9yPEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCByZXNldFN0dWJJbnRlcm5hbChSZXBhdGNoQnVmZmVy
JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICB2b2lkIHJlc2V0U3R1YkR1cmluZ0dDSW50ZXJu
YWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZp
c2lvbiAxNzg0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMTAsMTAgKzIxMTAsMTQgQEAgdm9pZCBG
b3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeQogICAgICAgICBnZW5lcmF0b3IuZW1p
dFRvSW5kZXhTdHJpbmcocHJvcGVydHlOYW1lLmdldCgpLCBpLmdldCgpKTsKICAgICAgICAgdGhp
cy0+ZW1pdExvb3BIZWFkZXIoZ2VuZXJhdG9yLCBwcm9wZXJ0eU5hbWUuZ2V0KCkpOwogCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9m
ZnNldCgpKTsKKwogICAgICAgICBnZW5lcmF0b3IucHVzaEluZGV4ZWRGb3JJblNjb3BlKGxvY2Fs
LmdldCgpLCBpLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0
ZW1lbnQpOwogICAgICAgICBnZW5lcmF0b3IucG9wSW5kZXhlZEZvckluU2NvcGUobG9jYWwuZ2V0
KCkpOwogCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVt
ZW50LT5lbmRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGkuZ2V0KCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKQEAgLTIxNDQsMTAg
KzIxNDgsMTQgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeQogCiAg
ICAgICAgIHRoaXMtPmVtaXRMb29wSGVhZGVyKGdlbmVyYXRvciwgcHJvcGVydHlOYW1lLmdldCgp
KTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVu
dC0+c3RhcnRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJ
blNjb3BlKGxvY2FsLmdldCgpLCBpLmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVy
ZUVudW1lcmF0b3IuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0
YXRlbWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2Fs
LmdldCgpKTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0
YXRlbWVudC0+ZW5kT2Zmc2V0KCkpOworCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEluYyhpLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROZXh0RW51bWVyYXRvclByb3BlcnR5TmFtZShwcm9w
ZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVyZUVudW1lcmF0b3IuZ2V0KCksIGkuZ2V0KCkpOwpAQCAt
MjE3Nyw2ICsyMTg1LDggQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShC
eQogCiAgICAgICAgIHRoaXMtPmVtaXRMb29wSGVhZGVyKGdlbmVyYXRvciwgcHJvcGVydHlOYW1l
LmdldCgpKTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0
YXRlbWVudC0+c3RhcnRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwpAQCAtMjE5Niw2ICsyMjA2LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVt
aXRNdWx0aUxvb3BCeXRlY29kZShCeQogCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5lbmRPZmZzZXQoKSk7CiB9
CiAKIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMjI0Nyw5ICsyMjU4LDExIEBAIHZvaWQgRm9yT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIERlY29uc3RydWN0aW5n
QXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZWNvbnN0cnVjdGluZ0Fz
c2lnbm1lbnROb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBhc3NpZ25Ob2RlLT5iaW5kaW5n
cygpLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSk7CiAgICAgICAgIH0KKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAgICAgfTsK
ICAgICBnZW5lcmF0b3IuZW1pdEVudW1lcmF0aW9uKHRoaXMsIG1fZXhwciwgZXh0cmFjdG9yKTsK
KyAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVudC0+ZW5kT2Zm
c2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29udGludWVO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjYwOCwyNiArMjYyMSwy
MyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAKICAgICAgICAg
UmVmUHRyPExhYmVsPiBmaW5hbGx5RW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgICAgICAvLyBGSVhNRTogVG8gdGhlIEpTIHByb2dyYW1tZXIsIHJ1bm5pbmcgdGhlIG5vcm1h
bCBwYXRoIGlzIHRoZSBzYW1lIGJhc2ljIGJsb2NrIGFzIHJ1bm5pbmcgdGhlIHVuY2F1Z2h0IGV4
Y2VwdGlvbiBwYXRoLgotICAgICAgICAvLyBCdXQsIHdlIGdlbmVyYXRlIHR3byBkaWZmZXJlbnQg
Y29kZSBwYXRocyBmb3IgdGhpcywgYnV0IHdlIHNob3VsZG4ndCBnZW5lcmF0ZSB0d28gb3BfcHJv
ZmlsZV9jb250cm9sX2Zsb3dzIGZvciB0aGVzZSBiZWNhdXNlIHRoZXkKLSAgICAgICAgLy8gbG9n
aWNhbGx5IHJlcHJlc2VudCB0aGUgc2FtZSBiYXNpYyBibG9jay4KLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTI4NwotICAgICAgICBpZiAobV9j
YXRjaEJsb2NrKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3co
bV9jYXRjaEJsb2NrLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpKTsK
KyAgICAgICAgaW50IGZpbmFsbHlTdGFydE9mZnNldCA9IG1fY2F0Y2hCbG9jayA/IG1fY2F0Y2hC
bG9jay0+ZW5kT2Zmc2V0KCkgOiBtX3RyeUJsb2NrLT5lbmRPZmZzZXQoKTsKIAogICAgICAgICAv
LyBOb3JtYWwgcGF0aDogcnVuIHRoZSBmaW5hbGx5IGNvZGUsIGFuZCBqdW1wIHRvIHRoZSBlbmQu
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9m
ZnNldCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9maW5hbGx5QmxvY2st
PmVuZE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGZpbmFsbHlFbmRMYWJl
bC5nZXQoKSk7CiAKICAgICAgICAgLy8gVW5jYXVnaHQgZXhjZXB0aW9uIHBhdGg6IGludm9rZSB0
aGUgZmluYWxseSBibG9jaywgdGhlbiByZS10aHJvdyB0aGUgZXhjZXB0aW9uLgogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcEV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLnBvcFRy
eUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByZUZpbmFs
bHlMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93
KGZpbmFsbHlTdGFydE9mZnNldCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
ZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyh0ZW1wRXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZmluYWxseUVu
ZExhYmVsLmdldCgpKTsKLSAgICB9IGVsc2UgCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZUNvbnRyb2xGbG93KG1fZmluYWxseUJsb2NrLT5lbmRPZmZzZXQoKSk7CisgICAgfSBlbHNlCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fY2F0Y2hCbG9jay0+ZW5k
T2Zmc2V0KCkpOwogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNzg0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsMTIgKzE3MDYsMTIgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRv
bnRCdWlsZFN0cmluZ3MpOwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UobGhzLCAiQ2Fubm90IHBhcnNl
IGxlZnQgaGFuZCBzaWRlIG9mIHRlcm5hcnkgb3BlcmF0b3IiKTsKLSAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChsaHMsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgY29udGV4dC5zZXRF
bmRPZmZzZXQobGhzLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CiAgICAgY29uc3Vt
ZU9yRmFpbFdpdGhGbGFncyhDT0xPTiwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MsICJF
eHBlY3RlZCAnOicgaW4gdGVybmFyeSBvcGVyYXRvciIpOwogICAgIAogICAgIFRyZWVFeHByZXNz
aW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElm
RmFsc2UocmhzLCAiQ2Fubm90IHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJh
dG9yIik7Ci0gICAgY29udGV4dC5zZXRFbmRPZmZzZXQocmhzLCBtX2xleGVyLT5jdXJyZW50T2Zm
c2V0KCkpOworICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KHJocywgbV9sYXN0VG9rZW5FbmRQb3Np
dGlvbi5vZmZzZXQpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihs
b2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcAkocmV2aXNpb24g
MTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9m
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitDb250cm9sRmxvd1Byb2ZpbGVyOjpDb250cm9sRmxvd1Byb2ZpbGVyKCkKKyAgICA6
IG1fZHVtbXlCYXNpY0Jsb2NrKEJhc2ljQmxvY2tMb2NhdGlvbigtMSwgLTEpKQoreworfQorCiBD
b250cm9sRmxvd1Byb2ZpbGVyOjp+Q29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgZm9yIChj
b25zdCBCbG9ja0xvY2F0aW9uQ2FjaGUmIGNhY2hlIDogbV9zb3VyY2VJREJ1Y2tldHMudmFsdWVz
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJv
ZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250
cm9sRmxvd1Byb2ZpbGVyLmgJKHJldmlzaW9uIDE3ODQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTEs
MTYgKzkxLDE5IEBAIHN0cnVjdCBCYXNpY0Jsb2NrUmFuZ2UgewogCiBjbGFzcyBDb250cm9sRmxv
d1Byb2ZpbGVyIHsKIHB1YmxpYzoKKyAgICBDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgfkNv
bnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxv
Y2tMb2NhdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBEYXRhKCkgY29uc3Q7CiAgICAg
VmVjdG9yPEJhc2ljQmxvY2tSYW5nZT4gZ2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChpbnRwdHJf
dCBzb3VyY2VJRCwgVk0mKSBjb25zdDsKKyAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFz
aWNCbG9jaygpIHsgcmV0dXJuICZtX2R1bW15QmFzaWNCbG9jazsgfQogCiBwcml2YXRlOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxCYXNpY0Jsb2NrS2V5LCBCYXNpY0Jsb2NrTG9jYXRpb24qPiBCbG9j
a0xvY2F0aW9uQ2FjaGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBCbG9ja0xvY2F0
aW9uQ2FjaGU+IFNvdXJjZUlEQnVja2V0czsKIAogICAgIFNvdXJjZUlEQnVja2V0cyBtX3NvdXJj
ZUlEQnVja2V0czsKKyAgICBCYXNpY0Jsb2NrTG9jYXRpb24gbV9kdW1teUJhc2ljQmxvY2s7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="269634"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244952</attachid>
            <date>2015-01-19 19:27:37 -0800</date>
            <delta_ts>2015-01-19 19:27:37 -0800</delta_ts>
            <desc>patch (check build)</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>18264</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NTE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTAxLTE1ICBTYWFtIEJhcmF0aSAgPHNhYW1iYXJhdGkxQGdtYWlsLmNvbT4KKworICAg
ICAgICBCYXNpYyBibG9jayBzdGFydCBvZmZzZXRzIHNob3VsZCBuZXZlciBiZSBsYXJnZXIgdGhh
biBlbmQgb2Zmc2V0cyBpbiB0aGUgY29udHJvbCBmbG93IHByb2ZpbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAzNzcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYnR5ZWNvZGUgZ2VuZXJhdG9y
IHdpbGwgZW1pdCBjb2RlIG1vcmUgdGhhbiBvbmNlIGZvciBzb21lIEFTVCBub2Rlcy4gRm9yIGlu
c3RhbmNlLCAKKyAgICAgICAgdGhlIGZpbmFsbHkgYmxvY2sgb2YgVHJ5Tm9kZSB3aWxsIGVtaXQg
dHdvIGNvZGUgcGF0aHMgZm9yIGl0cyBmaW5hbGx5IGJsb2NrOiBvbmUgZm9yIAorICAgICAgICB0
aGUgbm9ybWFsIHBhdGgsIGFuZCBhbm90aGVyIGZvciB0aGUgcGF0aCB3aGVyZSBhbiBleGNlcHRp
b24gaXMgdGhyb3duIGluIHRoZSBjYXRjaCBibG9jay4gCisgICAgICAgIAorICAgICAgICBUaGlz
IHJlcGVhdGVkIGNvZGUgZW1pc3Npb24gb2YgdGhlIHNhbWUgQVNUIG5vZGUgcHJldmlvdXNseSBi
cm9rZSBob3cgdGhlIGNvbnRyb2wgCisgICAgICAgIGZsb3cgcHJvZmlsZXIgY29tcHV0ZWQgdGV4
dCByYW5nZXMgb2YgYmFzaWMgYmxvY2tzIGJlY2F1c2Ugd2hlbiB0aGUgc2FtZSBBU1Qgbm9kZSAK
KyAgICAgICAgaXMgZW1pdHRlZCBtdWx0aXBsZSB0aW1lcywgdGhlcmUgaXMgYSBnb29kIGNoYW5j
ZSB0aGF0IHRoZXJlIGFyZSByYW5nZXMgdGhhdCBzcGFuIAorICAgICAgICBmcm9tIHRoZSBlbmQg
b2Zmc2V0IG9mIG9uZSBvZiB0aGVzZSBkdXBsaWNhdGVkIG5vZGVzIGJhY2sgdG8gdGhlIHN0YXJ0
IG9mZnNldCBvZiAKKyAgICAgICAgdGhlIHNhbWUgZHVwbGljYXRlZCBub2RlLiBUaGlzIGNhdXNl
ZCBhIGJhc2ljIGJsb2NrIHJhbmdlIHRvIHJlcG9ydCBhIGxhcmdlciBzdGFydCAKKyAgICAgICAg
b2Zmc2V0IHRoYW4gZW5kIG9mZnNldC4gVGhpcyB3YXMgaW5jb3JyZWN0LiBOb3csIHdoZW4gdGhp
cyBzaXR1dGF0aW9uIGlzIGVuY291bnRlcmVkIAorICAgICAgICB3aGlsZSBsaW5raW5nIGEgQ29k
ZUJsb2NrLCB0aGUgZmF1bHR5IHJhbmdlIGluIHF1ZXN0aW9uIGlzIGlnbm9yZWQuCisKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5k
YXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6Rm9ySW5Ob2RlOjplbWl0TXVsdGlMb29wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpG
b3JPZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbik6CisgICAgICAgICogcnVu
dGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q29udHJvbEZsb3dQ
cm9maWxlcjo6Q29udHJvbEZsb3dQcm9maWxlcik6CisgICAgICAgICogcnVudGltZS9Db250cm9s
Rmxvd1Byb2ZpbGVyLmg6CisgICAgICAgIChKU0M6OkNvbnRyb2xGbG93UHJvZmlsZXI6OmR1bW15
QmFzaWNCbG9jayk6CisKIDIwMTUtMDEtMTQgIE1hdHRoZXcgTWlybWFuICA8bW1pcm1hbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBhY2NpZGVudGFsIGNvbW1pdCBvZiAiaW52YWxpZF9h
cnJheS5qcyIgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzYsNDUgKzIxMzYsOCBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIGkgKz0gb3BM
ZW5ndGg7CiAgICAgfQogCi0gICAgaWYgKHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewot
ICAgICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgYnl0ZWNvZGVPZmZzZXRzID0gdW5saW5rZWRD
b2RlQmxvY2stPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBvZmZzZXRzTGVuZ3RoID0gYnl0ZWNvZGVPZmZzZXRzLnNpemUo
KTsgaSA8IG9mZnNldHNMZW5ndGg7IGkrKykgewotICAgICAgICAgICAgLy8gQmVjYXVzZSBvcF9w
cm9maWxlX2NvbnRyb2xfZmxvdyBpcyBlbWl0dGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkg
YmFzaWMgYmxvY2ssIGZpbmRpbmcgCi0gICAgICAgICAgICAvLyB0aGUgbmV4dCBvcF9wcm9maWxl
X2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2YgYSBzaW5nbGUgYmFz
aWMgYmxvY2suCi0gICAgICAgICAgICBzaXplX3Qgc3RhcnRJZHggPSBieXRlY29kZU9mZnNldHNb
aV07Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zW3N0YXJ0SWR4XS51Lm9wY29kZSkgPT0gb3BfcHJvZmlsZV9jb250
cm9sX2Zsb3cpOwotICAgICAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IGluc3Ry
dWN0aW9uc1tzdGFydElkeCArIDFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBiYXNpY0Js
b2NrRW5kT2Zmc2V0OwotICAgICAgICAgICAgaWYgKGkgKyAxIDwgb2Zmc2V0c0xlbmd0aCkgewot
ICAgICAgICAgICAgICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOwot
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtKCktPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNbZW5kSWR4XS51Lm9wY29kZSkgPT0gb3BfcHJvZmlsZV9jb250cm9s
X2Zsb3cpOwotICAgICAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBpbnN0cnVjdGlv
bnNbZW5kSWR4ICsgMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgYmFzaWNCbG9ja0VuZE9mZnNldCA9IG1fc291cmNlT2Zmc2V0ICsgbV9vd25lckV4ZWN1
dGFibGUtPnNvdXJjZSgpLmxlbmd0aCgpIC0gMTsKLQotICAgICAgICAgICAgQmFzaWNCbG9ja0xv
Y2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCkt
PmdldEJhc2ljQmxvY2tMb2NhdGlvbihtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgYmFz
aWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2NrRW5kT2Zmc2V0KTsKLQotICAgICAgICAgICAg
Ly8gRmluZCBhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIGVuY2xvc2VkIHdpdGhpbiB0aGUgcmFuZ2U6
IFtiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2ljQmxvY2tFbmRPZmZzZXRdCi0gICAgICAgICAg
ICAvLyBhbmQgaW5zZXJ0IHRoZXNlIGZ1bmN0aW9ucycgc3RhcnQvZW5kIG9mZnNldHMgYXMgZ2Fw
cyBpbiB0aGUgY3VycmVudCBCYXNpY0Jsb2NrTG9jYXRpb24uCi0gICAgICAgICAgICAvLyBUaGlz
IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGV4dCBvZiBhIEph
dmFTY3JpcHQgcHJvZ3JhbSwgCi0gICAgICAgICAgICAvLyBmdW5jdGlvbiBsaXRlcmFscyBmb3Jt
IG5ldyBiYXNpYyBibG9ja3MgYm91bmRhcmllcywgYnV0IHRoZXkgYXJlbid0IHJlcHJlc2VudGVk
IAotICAgICAgICAgICAgLy8gaW5zaWRlIHRoZSBDb2RlQmxvY2sncyBpbnN0cnVjdGlvbiBzdHJl
YW0uCi0gICAgICAgICAgICBhdXRvIGluc2VydEZ1bmN0aW9uR2FwcyA9IFtiYXNpY0Jsb2NrTG9j
YXRpb24sIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldF0gKGNvbnN0
IFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+JiBmdW5jdGlvbkV4ZWN1dGFibGUpIHsK
LSAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+dW5saW5rZWRFeGVjdXRhYmxlKCk7Ci0gICAgICAg
ICAgICAgICAgaW50IGZ1bmN0aW9uU3RhcnQgPSBleGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3Rh
cnRPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25FbmQgPSBleGVjdXRhYmxl
LT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9u
U3RhcnQgPj0gYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0ICYmIGZ1bmN0aW9uRW5kIDw9IGJhc2ljQmxv
Y2tFbmRPZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGJhc2ljQmxvY2tMb2NhdGlvbi0+aW5z
ZXJ0R2FwKGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uRW5kKTsKLSAgICAgICAgICAgIH07Ci0KLSAg
ICAgICAgICAgIGZvciAoY29uc3QgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uRXhlY3V0YWJsZT4mIGV4
ZWN1dGFibGUgOiBtX2Z1bmN0aW9uRGVjbHMpCi0gICAgICAgICAgICAgICAgaW5zZXJ0RnVuY3Rp
b25HYXBzKGV4ZWN1dGFibGUpOwotICAgICAgICAgICAgZm9yIChjb25zdCBXcml0ZUJhcnJpZXI8
RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6IG1fZnVuY3Rpb25FeHBycykKLSAgICAg
ICAgICAgICAgICBpbnNlcnRGdW5jdGlvbkdhcHMoZXhlY3V0YWJsZSk7Ci0KLSAgICAgICAgICAg
IGluc3RydWN0aW9uc1tzdGFydElkeCArIDFdLnUuYmFzaWNCbG9ja0xvY2F0aW9uID0gYmFzaWNC
bG9ja0xvY2F0aW9uOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICh2bSgpLT5jb250cm9sRmxv
d1Byb2ZpbGVyKCkpCisgICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJv
bEZsb3dQcm9maWxlcihpbnN0cnVjdGlvbnMpOwogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEY6
OlJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4oaW5zdHJ1Y3Rpb25zKTsKIApAQCAtNDA2Niw0
ICs0MDI5LDcxIEBAIERGRzo6Q2FwYWJpbGl0eUxldmVsIENvZGVCbG9jazo6Y2FwYWJpbGkKIH0K
ICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JD
b250cm9sRmxvd1Byb2ZpbGVyKFZlY3RvcjxJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+JiBpbnN0cnVjdGlvbnMpCit7CisgICAgY29uc3QgVmVjdG9yPHNpemVfdD4mIGJ5dGVj
b2RlT2Zmc2V0cyA9IHVubGlua2VkQ29kZUJsb2NrKCktPm9wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDAsIG9mZnNldHNMZW5ndGggPSBi
eXRlY29kZU9mZnNldHMuc2l6ZSgpOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7CisgICAgICAg
IC8vIEJlY2F1c2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgaXMgZW1pdHRlZCBhdCB0aGUgYmVn
aW5uaW5nIG9mIGV2ZXJ5IGJhc2ljIGJsb2NrLCBmaW5kaW5nIAorICAgICAgICAvLyB0aGUgbmV4
dCBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyB3aWxsIGdpdmUgdXMgdGhlIHRleHQgcmFuZ2Ugb2Yg
YSBzaW5nbGUgYmFzaWMgYmxvY2suCisgICAgICAgIHNpemVfdCBzdGFydElkeCA9IGJ5dGVjb2Rl
T2Zmc2V0c1tpXTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc1tzdGFydElkeF0udS5vcGNvZGUpID09IG9wX3Byb2ZpbGVf
Y29udHJvbF9mbG93KTsKKyAgICAgICAgaW50IGJhc2ljQmxvY2tTdGFydE9mZnNldCA9IGluc3Ry
dWN0aW9uc1tzdGFydElkeCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgaW50IGJhc2ljQmxvY2tF
bmRPZmZzZXQ7CisgICAgICAgIGlmIChpICsgMSA8IG9mZnNldHNMZW5ndGgpIHsKKyAgICAgICAg
ICAgIHNpemVfdCBlbmRJZHggPSBieXRlY29kZU9mZnNldHNbaSArIDFdOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodm0oKS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c1tlbmRJZHhdLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdyk7CisgICAgICAg
ICAgICBiYXNpY0Jsb2NrRW5kT2Zmc2V0ID0gaW5zdHJ1Y3Rpb25zW2VuZElkeCArIDFdLnUub3Bl
cmFuZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQg
PSBtX3NvdXJjZU9mZnNldCArIG1fb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSAt
IDE7IC8vIE9mZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICBiYXNp
Y0Jsb2NrU3RhcnRPZmZzZXQgPSBzdGQ6Om1pbihiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2lj
QmxvY2tFbmRPZmZzZXQpOyAvLyBTb21lIHN0YXJ0IG9mZnNldHMgbWF5IGJlIGF0IHRoZSBjbG9z
aW5nIGJyYWNlLCBlbnN1cmUgaXQgaXMgdGhlIG9mZnNldCBiZWZvcmUuCisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrIGFsbG93cyBmb3IgdGhlIHNhbWUgdGV4dHVh
bCBKYXZhU2NyaXB0IGJhc2ljIGJsb2NrIHRvIGhhdmUgaXRzIGJ5dGVjb2RlIGVtaXR0ZWQgbW9y
ZQorICAgICAgICAvLyB0aGFuIG9uY2UgYW5kIHN0aWxsIHBsYXkgbmljZSB3aXRoIHRoZSBjb250
cm9sIGZsb3cgcHJvZmlsZXIuIFdoZW4gYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0IGlzIGxhcmdlciB0
aGFuIAorICAgICAgICAvLyBiYXNpY0Jsb2NrRW5kT2Zmc2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIGhhcyBlbWl0dGVkIGNvZGUgZm9yIHRoZSBzYW1lIEFTVCBu
b2RlIAorICAgICAgICAvLyBtb3JlIHRoYW4gb25jZSAoZm9yIGV4YW1wbGU6IEZvckluTm9kZSwg
RmluYWxseSBibG9ja3MgaW4gVHJ5Tm9kZSwgZXRjKS4gVGhvdWdoIHRoZXNlIGFyZSBkaWZmZXJl
bnQgCisgICAgICAgIC8vIGJhc2ljIGJsb2NrcyBhdCB0aGUgYnl0ZWNvZGUgbGV2ZWwsIHRoZXkg
YXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBzYW1lIHRleHR1YWwgYmFzaWMgYmxvY2sgaW4gdGhlIEph
dmFTY3JpcHQgCisgICAgICAgIC8vIHByb2dyYW0uIFRoZSBjb25kaXRpb246IAorICAgICAgICAv
LyAoYmFzaWNCbG9ja0VuZE9mZnNldCA8IGJhc2ljQmxvY2tTdGFydE9mZnNldCkgCisgICAgICAg
IC8vIGlzIGVuY291bnRlcmVkIHdoZW4gb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgbGllcyBhY3Jv
c3MgdGhlIGJvdW5kYXJ5IG9mIHRoZXNlIGR1cGxpY2F0ZWQgYnl0ZWNvZGUgYmFzaWMgCisgICAg
ICAgIC8vIGJsb2NrcyBhbmQgdGhlIHRleHR1YWwgb2Zmc2V0IGdvZXMgZnJvbSB0aGUgZW5kIG9m
IHRoZSBkdXBsaWNhdGVkIGJsb2NrIGJhY2sgdG8gdGhlIGJlZ2lubmluZy4gVGhlc2UgCisgICAg
ICAgIC8vIHJhbmdlcyBhcmUgZHVtbXkgcmFuZ2VzIGFuZCBhcmUgaWdub3JlZC4gVGhlIGR1cGxp
Y2F0ZWQgYnl0ZWNvZGUgYmFzaWMgYmxvY2tzIHBvaW50IHRvIHRoZSBzYW1lIAorICAgICAgICAv
LyBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSwgc28gaWYgYW55IG9mIHRoZW0gZXhlY3V0ZSwgaXQg
d2lsbCByZWNvcmQgdGhlIHNhbWUgdGV4dHVhbCBiYXNpYyBibG9jayBpbiB0aGUgCisgICAgICAg
IC8vIEphdmFTY3JpcHQgcHJvZ3JhbSBhcyBleGVjdXRpbmcuCisgICAgICAgIC8vIEF0IHRoZSBi
eXRlY29kZSBsZXZlbCwgdGhpcyBzaXR1YXRpb24gbG9va3MgbGlrZToKKyAgICAgICAgLy8gajog
b3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgKGZyb20gai0+aywgd2UgaGF2ZSBiYXNpY0Jsb2NrRW5k
T2Zmc2V0IDwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0KQorICAgICAgICAvLyAuLi4KKyAgICAgICAg
Ly8gazogb3BfcHJvZmlsZV9jb250cm9sX2Zsb3cgKHdlIHdhbnQgdG8gc2tpcCBvdmVyIHRoZSBq
LT5rIGJsb2NrIGFuZCBzdGFydCBmcmVzaCBhdCBvZmZzZXQgayBhcyB0aGUgc3RhcnQgb2YgYSBu
ZXcgYmFzaWMgYmxvY2sgay0+bSkuCisgICAgICAgIC8vIC4uLgorICAgICAgICAvLyBtOiBvcF9w
cm9maWxlX2NvbnRyb2xfZmxvdworICAgICAgICBpZiAoYmFzaWNCbG9ja0VuZE9mZnNldCA8IGJh
c2ljQmxvY2tTdGFydE9mZnNldCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSArIDEg
PCBvZmZzZXRzTGVuZ3RoKTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGVuY291bnRlciBkdW1teSBibG9j
a3MgYXQgdGhlIGVuZCBvZiBhIENvZGVCbG9jay4KKyAgICAgICAgICAgIGluc3RydWN0aW9uc1tz
dGFydElkeCArIDFdLnUuYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0oKS0+Y29udHJvbEZsb3dQcm9m
aWxlcigpLT5kdW1teUJhc2ljQmxvY2soKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgQmFzaWNCbG9ja0xvY2F0aW9uKiBiYXNpY0Jsb2NrTG9jYXRpb24gPSB2
bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCktPmdldEJhc2ljQmxvY2tMb2NhdGlvbihtX293bmVy
RXhlY3V0YWJsZS0+c291cmNlSUQoKSwgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2Nr
RW5kT2Zmc2V0KTsKKworICAgICAgICAvLyBGaW5kIGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgZW5j
bG9zZWQgd2l0aGluIHRoZSByYW5nZTogW2Jhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9j
a0VuZE9mZnNldF0KKyAgICAgICAgLy8gYW5kIGluc2VydCB0aGVzZSBmdW5jdGlvbnMnIHN0YXJ0
L2VuZCBvZmZzZXRzIGFzIGdhcHMgaW4gdGhlIGN1cnJlbnQgQmFzaWNCbG9ja0xvY2F0aW9uLgor
ICAgICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluIHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgdGV4dCBvZiBhIEphdmFTY3JpcHQgcHJvZ3JhbSwgCisgICAgICAgIC8vIGZ1bmN0aW9uIGxp
dGVyYWxzIGZvcm0gbmV3IGJhc2ljIGJsb2NrcyBib3VuZGFyaWVzLCBidXQgdGhleSBhcmVuJ3Qg
cmVwcmVzZW50ZWQgCisgICAgICAgIC8vIGluc2lkZSB0aGUgQ29kZUJsb2NrJ3MgaW5zdHJ1Y3Rp
b24gc3RyZWFtLgorICAgICAgICBhdXRvIGluc2VydEZ1bmN0aW9uR2FwcyA9IFtiYXNpY0Jsb2Nr
TG9jYXRpb24sIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldF0gKGNv
bnN0IFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+JiBmdW5jdGlvbkV4ZWN1dGFibGUp
IHsKKyAgICAgICAgICAgIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlID0gZnVuY3Rpb25FeGVjdXRhYmxlLT51bmxpbmtlZEV4ZWN1dGFibGUoKTsKKyAgICAgICAg
ICAgIGludCBmdW5jdGlvblN0YXJ0ID0gZXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCk7CisgICAgICAgICAgICBpbnQgZnVuY3Rpb25FbmQgPSBleGVjdXRhYmxlLT50eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KCk7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25TdGFydCA+PSBiYXNp
Y0Jsb2NrU3RhcnRPZmZzZXQgJiYgZnVuY3Rpb25FbmQgPD0gYmFzaWNCbG9ja0VuZE9mZnNldCkK
KyAgICAgICAgICAgICAgICBiYXNpY0Jsb2NrTG9jYXRpb24tPmluc2VydEdhcChmdW5jdGlvblN0
YXJ0LCBmdW5jdGlvbkVuZCk7CisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChjb25zdCBXcml0
ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6IG1fZnVuY3Rpb25EZWNs
cykKKyAgICAgICAgICAgIGluc2VydEZ1bmN0aW9uR2FwcyhleGVjdXRhYmxlKTsKKyAgICAgICAg
Zm9yIChjb25zdCBXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPiYgZXhlY3V0YWJsZSA6
IG1fZnVuY3Rpb25FeHBycykKKyAgICAgICAgICAgIGluc2VydEZ1bmN0aW9uR2FwcyhleGVjdXRh
YmxlKTsKKworICAgICAgICBpbnN0cnVjdGlvbnNbc3RhcnRJZHggKyAxXS51LmJhc2ljQmxvY2tM
b2NhdGlvbiA9IGJhc2ljQmxvY2tMb2NhdGlvbjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM3LDYgKzEwMzcsOCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CiAgICAg
fQogCisgICAgdm9pZCBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJv
ZmlsZXIoVmVjdG9yPEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4mKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCByZXNldFN0dWJJbnRlcm5hbChSZXBhdGNoQnVmZmVy
JiwgU3RydWN0dXJlU3R1YkluZm8mKTsKICAgICB2b2lkIHJlc2V0U3R1YkR1cmluZ0dDSW50ZXJu
YWwoUmVwYXRjaEJ1ZmZlciYsIFN0cnVjdHVyZVN0dWJJbmZvJik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZp
c2lvbiAxNzg0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMTAsMTAgKzIxMTAsMTQgQEAgdm9pZCBG
b3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeQogICAgICAgICBnZW5lcmF0b3IuZW1p
dFRvSW5kZXhTdHJpbmcocHJvcGVydHlOYW1lLmdldCgpLCBpLmdldCgpKTsKICAgICAgICAgdGhp
cy0+ZW1pdExvb3BIZWFkZXIoZ2VuZXJhdG9yLCBwcm9wZXJ0eU5hbWUuZ2V0KCkpOwogCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5zdGFydE9m
ZnNldCgpKTsKKwogICAgICAgICBnZW5lcmF0b3IucHVzaEluZGV4ZWRGb3JJblNjb3BlKGxvY2Fs
LmdldCgpLCBpLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0
ZW1lbnQpOwogICAgICAgICBnZW5lcmF0b3IucG9wSW5kZXhlZEZvckluU2NvcGUobG9jYWwuZ2V0
KCkpOwogCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVt
ZW50LT5lbmRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SW5jKGkuZ2V0KCkpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAobG9vcFN0YXJ0LmdldCgpKTsKQEAgLTIxNDQsMTAg
KzIxNDgsMTQgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShCeQogCiAg
ICAgICAgIHRoaXMtPmVtaXRMb29wSGVhZGVyKGdlbmVyYXRvciwgcHJvcGVydHlOYW1lLmdldCgp
KTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVu
dC0+c3RhcnRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hTdHJ1Y3R1cmVGb3JJ
blNjb3BlKGxvY2FsLmdldCgpLCBpLmdldCgpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVy
ZUVudW1lcmF0b3IuZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0
YXRlbWVudCk7CiAgICAgICAgIGdlbmVyYXRvci5wb3BTdHJ1Y3R1cmVGb3JJblNjb3BlKGxvY2Fs
LmdldCgpKTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0
YXRlbWVudC0+ZW5kT2Zmc2V0KCkpOworCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEluYyhpLmdldCgp
KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROZXh0RW51bWVyYXRvclByb3BlcnR5TmFtZShwcm9w
ZXJ0eU5hbWUuZ2V0KCksIHN0cnVjdHVyZUVudW1lcmF0b3IuZ2V0KCksIGkuZ2V0KCkpOwpAQCAt
MjE3Nyw2ICsyMTg1LDggQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRNdWx0aUxvb3BCeXRlY29kZShC
eQogCiAgICAgICAgIHRoaXMtPmVtaXRMb29wSGVhZGVyKGdlbmVyYXRvciwgcHJvcGVydHlOYW1l
LmdldCgpKTsKIAorICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0
YXRlbWVudC0+c3RhcnRPZmZzZXQoKSk7CisKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRz
dCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwpAQCAtMjE5Niw2ICsyMjA2LDcgQEAgdm9pZCBGb3JJbk5vZGU6OmVt
aXRNdWx0aUxvb3BCeXRlY29kZShCeQogCiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkpOworICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fc3RhdGVtZW50LT5lbmRPZmZzZXQoKSk7CiB9
CiAKIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMjI0Nyw5ICsyMjU4LDExIEBAIHZvaWQgRm9yT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIERlY29uc3RydWN0aW5n
QXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZWNvbnN0cnVjdGluZ0Fz
c2lnbm1lbnROb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBhc3NpZ25Ob2RlLT5iaW5kaW5n
cygpLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSk7CiAgICAgICAgIH0KKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAgICAgfTsK
ICAgICBnZW5lcmF0b3IuZW1pdEVudW1lcmF0aW9uKHRoaXMsIG1fZXhwciwgZXh0cmFjdG9yKTsK
KyAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRlbWVudC0+ZW5kT2Zm
c2V0KCkpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29udGludWVO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjYwOCwyNiArMjYyMSwy
MyBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAKICAgICAgICAg
UmVmUHRyPExhYmVsPiBmaW5hbGx5RW5kTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgICAgICAvLyBGSVhNRTogVG8gdGhlIEpTIHByb2dyYW1tZXIsIHJ1bm5pbmcgdGhlIG5vcm1h
bCBwYXRoIGlzIHRoZSBzYW1lIGJhc2ljIGJsb2NrIGFzIHJ1bm5pbmcgdGhlIHVuY2F1Z2h0IGV4
Y2VwdGlvbiBwYXRoLgotICAgICAgICAvLyBCdXQsIHdlIGdlbmVyYXRlIHR3byBkaWZmZXJlbnQg
Y29kZSBwYXRocyBmb3IgdGhpcywgYnV0IHdlIHNob3VsZG4ndCBnZW5lcmF0ZSB0d28gb3BfcHJv
ZmlsZV9jb250cm9sX2Zsb3dzIGZvciB0aGVzZSBiZWNhdXNlIHRoZXkKLSAgICAgICAgLy8gbG9n
aWNhbGx5IHJlcHJlc2VudCB0aGUgc2FtZSBiYXNpYyBibG9jay4KLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTI4NwotICAgICAgICBpZiAobV9j
YXRjaEJsb2NrKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3co
bV9jYXRjaEJsb2NrLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fdHJ5QmxvY2stPmVuZE9mZnNldCgpKTsK
KyAgICAgICAgaW50IGZpbmFsbHlTdGFydE9mZnNldCA9IG1fY2F0Y2hCbG9jayA/IG1fY2F0Y2hC
bG9jay0+ZW5kT2Zmc2V0KCkgOiBtX3RyeUJsb2NrLT5lbmRPZmZzZXQoKTsKIAogICAgICAgICAv
LyBOb3JtYWwgcGF0aDogcnVuIHRoZSBmaW5hbGx5IGNvZGUsIGFuZCBqdW1wIHRvIHRoZSBlbmQu
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KGZpbmFsbHlTdGFydE9m
ZnNldCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZmluYWxseUJsb2NrKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9maW5hbGx5QmxvY2st
PmVuZE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKGZpbmFsbHlFbmRMYWJl
bC5nZXQoKSk7CiAKICAgICAgICAgLy8gVW5jYXVnaHQgZXhjZXB0aW9uIHBhdGg6IGludm9rZSB0
aGUgZmluYWxseSBibG9jaywgdGhlbiByZS10aHJvdyB0aGUgZXhjZXB0aW9uLgogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcEV4Y2VwdGlvblJlZ2lzdGVyID0gZ2VuZXJhdG9yLnBvcFRy
eUFuZEVtaXRDYXRjaCh0cnlEYXRhLCBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHByZUZpbmFs
bHlMYWJlbC5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93
KGZpbmFsbHlTdGFydE9mZnNldCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1f
ZmluYWxseUJsb2NrKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyh0ZW1wRXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZmluYWxseUVu
ZExhYmVsLmdldCgpKTsKLSAgICB9IGVsc2UgCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmls
ZUNvbnRyb2xGbG93KG1fZmluYWxseUJsb2NrLT5lbmRPZmZzZXQoKSk7CisgICAgfSBlbHNlCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZUNvbnRyb2xGbG93KG1fY2F0Y2hCbG9jay0+ZW5k
T2Zmc2V0KCkpOwogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNzg0OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsMTIgKzE3MDYsMTIgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzcwogICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRv
bnRCdWlsZFN0cmluZ3MpOwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UobGhzLCAiQ2Fubm90IHBhcnNl
IGxlZnQgaGFuZCBzaWRlIG9mIHRlcm5hcnkgb3BlcmF0b3IiKTsKLSAgICBjb250ZXh0LnNldEVu
ZE9mZnNldChsaHMsIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CisgICAgY29udGV4dC5zZXRF
bmRPZmZzZXQobGhzLCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLm9mZnNldCk7CiAgICAgY29uc3Vt
ZU9yRmFpbFdpdGhGbGFncyhDT0xPTiwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MsICJF
eHBlY3RlZCAnOicgaW4gdGVybmFyeSBvcGVyYXRvciIpOwogICAgIAogICAgIFRyZWVFeHByZXNz
aW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElm
RmFsc2UocmhzLCAiQ2Fubm90IHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0ZXJuYXJ5IG9wZXJh
dG9yIik7Ci0gICAgY29udGV4dC5zZXRFbmRPZmZzZXQocmhzLCBtX2xleGVyLT5jdXJyZW50T2Zm
c2V0KCkpOworICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KHJocywgbV9sYXN0VG9rZW5FbmRQb3Np
dGlvbi5vZmZzZXQpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihs
b2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250cm9sRmxvd1Byb2ZpbGVyLmNwcAkocmV2aXNpb24g
MTc4NDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29udHJvbEZsb3dQcm9m
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitDb250cm9sRmxvd1Byb2ZpbGVyOjpDb250cm9sRmxvd1Byb2ZpbGVyKCkKKyAgICA6
IG1fZHVtbXlCYXNpY0Jsb2NrKEJhc2ljQmxvY2tMb2NhdGlvbigtMSwgLTEpKQoreworfQorCiBD
b250cm9sRmxvd1Byb2ZpbGVyOjp+Q29udHJvbEZsb3dQcm9maWxlcigpCiB7CiAgICAgZm9yIChj
b25zdCBCbG9ja0xvY2F0aW9uQ2FjaGUmIGNhY2hlIDogbV9zb3VyY2VJREJ1Y2tldHMudmFsdWVz
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJv
ZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db250
cm9sRmxvd1Byb2ZpbGVyLmgJKHJldmlzaW9uIDE3ODQ5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnRyb2xGbG93UHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTEs
MTYgKzkxLDE5IEBAIHN0cnVjdCBCYXNpY0Jsb2NrUmFuZ2UgewogCiBjbGFzcyBDb250cm9sRmxv
d1Byb2ZpbGVyIHsKIHB1YmxpYzoKKyAgICBDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgfkNv
bnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGdldEJhc2ljQmxv
Y2tMb2NhdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0KTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXBEYXRhKCkgY29uc3Q7CiAgICAg
VmVjdG9yPEJhc2ljQmxvY2tSYW5nZT4gZ2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChpbnRwdHJf
dCBzb3VyY2VJRCwgVk0mKSBjb25zdDsKKyAgICBCYXNpY0Jsb2NrTG9jYXRpb24qIGR1bW15QmFz
aWNCbG9jaygpIHsgcmV0dXJuICZtX2R1bW15QmFzaWNCbG9jazsgfQogCiBwcml2YXRlOgogICAg
IHR5cGVkZWYgSGFzaE1hcDxCYXNpY0Jsb2NrS2V5LCBCYXNpY0Jsb2NrTG9jYXRpb24qPiBCbG9j
a0xvY2F0aW9uQ2FjaGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBCbG9ja0xvY2F0
aW9uQ2FjaGU+IFNvdXJjZUlEQnVja2V0czsKIAogICAgIFNvdXJjZUlEQnVja2V0cyBtX3NvdXJj
ZUlEQnVja2V0czsKKyAgICBCYXNpY0Jsb2NrTG9jYXRpb24gbV9kdW1teUJhc2ljQmxvY2s7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>

          </attachment>
      

    </bug>

</bugzilla>