<?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>97358</bug_id>
          
          <creation_ts>2012-09-21 13:42:37 -0700</creation_ts>
          <short_desc>Optimized closures that capture arguments</short_desc>
          <delta_ts>2012-09-21 23:34:28 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725769</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-21 13:42:37 -0700</bug_when>
    <thetext>Optimized closures that capture arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725959</commentid>
    <comment_count>1</comment_count>
      <attachid>165224</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-21 16:34:52 -0700</bug_when>
    <thetext>Created attachment 165224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725964</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 16:36:50 -0700</bug_when>
    <thetext>Attachment 165224 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSActivation.h:44:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/ChangeLog:67:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 13 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>726007</commentid>
    <comment_count>3</comment_count>
      <attachid>165224</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 17:41:47 -0700</bug_when>
    <thetext>Comment on attachment 165224
Patch

Attachment 165224 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13975570

New failing tests:
jquery/event.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726027</commentid>
    <comment_count>4</comment_count>
      <attachid>165224</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-21 18:43:56 -0700</bug_when>
    <thetext>Comment on attachment 165224
Patch

Attachment 165224 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13954831

New failing tests:
jquery/event.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726057</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-21 23:34:28 -0700</bug_when>
    <thetext>Committed r129297: &lt;http://trac.webkit.org/changeset/129297&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165224</attachid>
            <date>2012-09-21 16:34:52 -0700</date>
            <delta_ts>2012-09-21 18:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97358-20120921163416.patch</filename>
            <type>text/plain</type>
            <size>34679</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5MjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMi0wOS0yMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIE9wdGltaXplZCBjbG9zdXJlcyB0aGF0IGNhcHR1cmUgYXJndW1lbnRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM1OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHksIHRoZSBhY3Rp
dmF0aW9uIG9iamVjdCB3YXMgcmVzcG9uc2libGUgZm9yIGNhcHR1cmluZyBhbGwKKyAgICAgICAg
YXJndW1lbnRzIGluIGEgd2F5IHRoYXQgd2FzIGNvbnZlbmllbnQgZm9yIHRoZSBhcmd1bWVudHMg
b2JqZWN0LiBOb3csCisgICAgICAgIHdlIG1vdmUgYWxsIGNhcHR1cmVkIHZhcmlhYmxlcyBpbnRv
IGEgY29udGlndW91cyByZWdpb24gaW4gdGhlIHN0YWNrLAorICAgICAgICBhbGxvY2F0ZSBhbiBh
Y3RpdmF0aW9uIGZvciBleGFjdGx5IHRoYXQgc2l6ZSwgYW5kIG1ha2UgdGhlIGFyZ3VtZW50cwor
ICAgICAgICBvYmplY3QgcmVzcG9uc2libGUgZm9yIGtub3dpbmcgYWxsIHRoZSBwbGFjZXMgdG8g
d2hpY2ggYXJndW1lbnRzIGNvdWxkCisgICAgICAgIGhhdmUgbW92ZWQuCisKKyAgICAgICAgVGhp
cyBzZWVtcyBsaWtlIHRoZSByaWdodCB0cmFkZW9mZiBiZWNhdXNlCisKKyAgICAgICAgICAgIChh
KSBDbG9zdXJlcyBhcmUgY29tbW9uIGFuZCBsb25nLWxpdmVkLCBzbyB3ZSB3YW50IHRoZW0gdG8g
YmUgc21hbGwuCisKKyAgICAgICAgICAgIChiKSBPdXIgcHJpbWFyeSBzdHJhdGVneSBmb3Igb3B0
aW1pemluZyB0aGUgYXJndW1lbnRzIG9iamVjdCBpcyB0byBtYWtlCisgICAgICAgICAgICBpdCBn
byBhd2F5LiBJZiB5b3UncmUgYWxsb2NhdGluZyBhcmd1bWVudHMgb2JqZWN0cywgeW91J3JlIGFs
cmVhZHkgaGF2aW5nCisgICAgICAgICAgICBhIGJhZCB0aW1lLgorCisgICAgICAgICAgICAoYykg
SXQncyBjb21tb24gdG8gdXNlIGVpdGhlciB0aGUgYXJndW1lbnRzIG9iamVjdCBvciBuYW1lZCBh
cmd1bWVudAorICAgICAgICAgICAgY2xvc3VyZSwgYnV0IG5vdCBib3RoLgorCisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFyZ3VtZW50c1JlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphY3RpdmF0aW9uUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmlzQ2FwdHVyZWQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmFyZ3VtZW50SW5kZXhBZnRlckNhcHR1cmUpOiBtX251bUNhcHR1cmVkVmFycyBpcyBnb25lCisg
ICAgICAgIG5vdyAtLSB3ZSBoYXZlIGFuIGV4cGxpY2l0IHJhbmdlIGluc3RlYWQuCisKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOiBNb3ZlIGNhcHR1cmVkIGFyZ3Vt
ZW50cworICAgICAgICBpbnRvIHRoZSBjYXB0dXJlZCByZWdpb24gb2YgbG9jYWwgdmFyaWFibGVz
IGZvciBzcGFjZSBlZmZpY2llbmN5LiBSZWNvcmQKKyAgICAgICAgcHJlY2lzZSBkYXRhIGFib3V0
IHdoZXJlIHRoZXkgbW92ZWQgZm9yIHRoZSBzYWtlIG9mIHRoZSBhcmd1bWVudHMgb2JqZWN0Lgor
CisgICAgICAgIFNvbWUgb2YgdGhpcyBkYXRhIHdhcyBwcmV2aW91c2x5IHdyb25nLCBidXQgaXQg
ZGlkbid0IGNhdXNlIGFueSBwcm9ibGVtcworICAgICAgICBiZWNhdXNlIHRoZSBhcmd1bWVudHMg
d2VyZW4ndCBhY3R1YWxseSBtb3ZpbmcuCisKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaEFyZ3VtZW50
c0FuZENhcHR1cmVkVmFyaWFibGVzKTogRG9uJ3QKKyAgICAgICAgYXNzdW1lIHRoYXQgY2FwdHVy
ZWQgdmFycyBhcmUgaW4gYW55IHBhcnRpY3VsYXIgbG9jYXRpb24gLS0gYWx3YXlzIGFzaworICAg
ICAgICB0aGUgQ29kZUJsb2NrLiBUaGlzIGlzIGJldHRlciBlbmNhcHN1bGF0aW9uLgorCisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6IEkgcmVu
YW1lIHRoaW5ncyBzb21ldGltZXMuCisKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6
CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dGVhck9mZik6IEFjY291bnQgZm9yIGEgcGFydGlj
dWxhcmx5IG5hc3R5IGVkZ2UgY2FzZS4KKworICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmRpZFRl
YXJPZmZBY3RpdmF0aW9uKTogRG9uJ3QgYWxsb2NhdGUgb3VyIHNsb3cgYXJndW1lbnRzCisgICAg
ICAgIGRhdGEgb24gdGVhci1vZmYuIFdlIG5lZWQgdG8gYWxsb2NhdGUgaXQgZWFnZXJseSBpbnN0
ZWFkLCBzaW5jZSB3ZSBuZWVkCisgICAgICAgIHRvIGtub3cgYWJvdXQgZGlzcGxhY2VkLCBjYXB0
dXJlZCBhcmd1bWVudHMgZHVyaW5nIGFjY2VzcyBiZWZvcmUgdGVhci1vZmYuCisKKyAgICAgICAg
KiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmFsbG9jYXRl
U2xvd0FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6YXJndW1lbnQpOiBUZWxs
IG91ciBzbG93IGFyZ3VtZW50cyBhcnJheSB3aGVyZSBhbGwgYXJndW1lbnRzCisgICAgICAgIGFy
ZSwgZXZlbiBpZiB0aGV5IGFyZSBub3QgY2FwdHVyZWQuIFRoaXMgc2ltcGxpZmllcyBzb21lIHRo
aW5ncywgc28gd2UgZG9uJ3QKKyAgICAgICAgaGF2ZSB0byBhY2NvdW50IGV4cGxpY2l0bHkgZm9y
IHRoZSBmdWxsIG1hdHJpeCBvZiAobm90IHRvcm4gb2ZmLCB0b3JuIG9mZikKKyAgICAgICAgKiAo
Y2FwdHVyZWQsIG5vdCBjYXB0dXJlZCkuCisKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpmaW5p
c2hDcmVhdGlvbik6IEFsbG9jYXRlIG91ciBzbG93IGFyZ3VtZW50cyBhcnJheSBlYWdlcmx5Cisg
ICAgICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBrbm93IGFib3V0IGRpc3BsYWNlZCwgY2FwdHVyZWQg
YXJndW1lbnRzIGR1cmluZyBhY2Nlc3MKKyAgICAgICAgYmVmb3JlIHRlYXItb2ZmLgorCisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFyYW1l
dGVyQ291bnQpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpT
QWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6SlNBY3RpdmF0aW9uOjpKU0FjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnJlZ2lzdGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjp0
ZWFyT2ZmKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjphbGxvY2F0aW9uU2l6ZSk6Cisg
ICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6aXNWYWxpZCk6IFRoaXMgaXMgcmVhbGx5IHRoZSBw
b2ludCBvZiB0aGUgcGF0Y2guIEFsbAorICAgICAgICB0aGUgcG9pbnRlciBtYXRoIGluIEFjdGl2
YXRpb25zIGJhc2ljYWxseSBib2lscyBhd2F5LCBzaW5jZSB3ZSBhbHdheXMKKyAgICAgICAgY29w
eSBhIGNvbnRpZ3VvdXMgcmVnaW9uIG9mIGNhcHR1cmVkIHZhcmlhYmxlcyBub3cuCisKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgIChKU0M6OlNsb3dBcmd1bWVudDo6
U2xvd0FyZ3VtZW50KToKKyAgICAgICAgKFNsb3dBcmd1bWVudCk6CisgICAgICAgIChTaGFyZWRT
eW1ib2xUYWJsZSk6CisgICAgICAgIChKU0M6OlNoYXJlZFN5bWJvbFRhYmxlOjpjYXB0dXJlQ291
bnQpOgorICAgICAgICAoSlNDOjpTaGFyZWRTeW1ib2xUYWJsZTo6U2hhcmVkU3ltYm9sVGFibGUp
OiBBbGxPZlRoZVRoaW5ncyBjYXB0dXJlIG1vZGUKKyAgICAgICAgaXMgZ29uZSBub3cgLS0gdGhh
dCdzIHRoZSBwb2ludCBvZiB0aGUgcGF0Y2guIGluZGV4SWZDYXB0dXJlZCBnZXRzIHJlbmFtZWQK
KyAgICAgICAgdG8gaW5kZXggYmVjYXVzZSB3ZSBhbHdheXMgaGF2ZSBhbiBpbmRleCwgZXZlbiBp
ZiBub3QgY2FwdHVyZWQuIChUaGUgb25seQorICAgICAgICB0aW1lIHdoZW4gdGhlIGluZGV4IGlz
IG1lYW5pbmdsZXNzIGlzIHdoZW4gd2UncmUgRGVsZXRlZC4pCisKIDIwMTItMDktMjEgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgQ1NFIGFzc3VtZXMgdGhh
dCBhIGhvbHkgUHV0QnlWYWwgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggR2V0QXJyYXlMZW5ndGgs
IHdoZW4gaXQgY2xlYXJseSBkb2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw4ICs1
MzIsOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJ
bnN0cnVjdGlvbikpLAogICAgICAgICB0aGlzLCBjb2RlVHlwZVRvU3RyaW5nKGNvZGVUeXBlKCkp
LCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLAogICAgICAgICBtX251bVZh
cnMpOwotICAgIGlmIChtX251bUNhcHR1cmVkVmFycykKLSAgICAgICAgZGF0YUxvZygiOyAlZCBj
YXB0dXJlZCB2YXIocykiLCBtX251bUNhcHR1cmVkVmFycyk7CisgICAgaWYgKG1fc3ltYm9sVGFi
bGUtPmNhcHR1cmVDb3VudCgpKQorICAgICAgICBkYXRhTG9nKCI7ICVkIGNhcHR1cmVkIHZhcihz
KSIsIG1fc3ltYm9sVGFibGUtPmNhcHR1cmVDb3VudCgpKTsKICAgICBpZiAodXNlc0FyZ3VtZW50
cygpKSB7CiAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAiOyB1c2VzIGFyZ3VtZW50cywg
aW4gciVkLCByJWQiLApAQCAtMTcwNyw3ICsxNzA3LDYgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrVGFnLAogICAgICwgbV9oZWFwKG90aGVyLm1faGVhcCkKICAgICAsIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKG90aGVyLm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKQogICAgICwgbV9u
dW1WYXJzKG90aGVyLm1fbnVtVmFycykKLSAgICAsIG1fbnVtQ2FwdHVyZWRWYXJzKG90aGVyLm1f
bnVtQ2FwdHVyZWRWYXJzKQogICAgICwgbV9pc0NvbnN0cnVjdG9yKG90aGVyLm1faXNDb25zdHJ1
Y3RvcikKICAgICAsIG1fb3duZXJFeGVjdXRhYmxlKCpvdGhlci5tX2dsb2JhbERhdGEsIG90aGVy
Lm1fb3duZXJFeGVjdXRhYmxlLmdldCgpLCBvdGhlci5tX293bmVyRXhlY3V0YWJsZS5nZXQoKSkK
ICAgICAsIG1fZ2xvYmFsRGF0YShvdGhlci5tX2dsb2JhbERhdGEpCkBAIC0xNzczLDcgKzE3NzIs
NiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgLCBtX2hl
YXAoJm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaGVhcCkKICAgICAsIG1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKDApCiAgICAgLCBtX251bVZhcnMoMCkKLSAgICAsIG1fbnVtQ2FwdHVyZWRWYXJz
KDApCiAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKICAgICAsIG1fbnVtUGFy
YW1ldGVycygwKQogICAgICwgbV9vd25lckV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIG93bmVyRXhlY3V0YWJsZSwgb3duZXJFeGVjdXRhYmxlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTI5MTkxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MTYsNyArNTE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2FyZ3Vt
ZW50c1JlZ2lzdGVyID0gYXJndW1lbnRzUmVnaXN0ZXI7CiAgICAgICAgICAgICBBU1NFUlQodXNl
c0FyZ3VtZW50cygpKTsKICAgICAgICAgfQotICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIo
KQorICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIoKSBjb25zdAogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQodXNlc0FyZ3VtZW50cygpKTsKICAgICAgICAgICAgIHJldHVybiBtX2Fy
Z3VtZW50c1JlZ2lzdGVyOwpAQCAtNTMxLDcgKzUzMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgICAgICBtX2FjdGl2YXRpb25SZWdpc3RlciA9IGFjdGl2YXRpb25SZWdp
c3RlcjsKICAgICAgICAgfQotICAgICAgICBpbnQgYWN0aXZhdGlvblJlZ2lzdGVyKCkKKyAgICAg
ICAgaW50IGFjdGl2YXRpb25SZWdpc3RlcigpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChuZWVkc0Z1bGxTY29wZUNoYWluKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fYWN0
aXZhdGlvblJlZ2lzdGVyOwpAQCAtNTU0LDExICs1NTQsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lICYmICFvcGVyYW5kSXNBcmd1bWVudChvcGVy
YW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5jYXB0dXJlZFZh
cnMuZ2V0KG9wZXJhbmQpOwogCi0gICAgICAgICAgICAvLyBPdXIgZXN0aW1hdGUgb2YgYXJndW1l
bnQgY2FwdHVyZSBpcyBjb25zZXJ2YXRpdmUuCiAgICAgICAgICAgICBpZiAob3BlcmFuZElzQXJn
dW1lbnQob3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5lZWRzQWN0aXZhdGlvbigp
IHx8IHVzZXNBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdXNlc0FyZ3VtZW50
cygpOwogCi0gICAgICAgICAgICByZXR1cm4gb3BlcmFuZCA8IG1fbnVtQ2FwdHVyZWRWYXJzOwor
ICAgICAgICAgICAgLy8gVGhlIGFjdGl2YXRpb24gb2JqZWN0IGlzbid0IGluIHRoZSBjYXB0dXJl
ZCByZWdpb24sIGJ1dCBpdCdzICJjYXB0dXJlZCIKKyAgICAgICAgICAgIC8vIGluIHRoZSBzZW5z
ZSB0aGF0IHN0b3JlcyB0byBpdHMgbG9jYXRpb24gY2FuIGJlIG9ic2VydmVkIGluZGlyZWN0bHku
CisgICAgICAgICAgICBpZiAobmVlZHNBY3RpdmF0aW9uKCkgJiYgb3BlcmFuZCA9PSBhY3RpdmF0
aW9uUmVnaXN0ZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAg
ICAgLy8gRGl0dG8gZm9yIHRoZSBhcmd1bWVudHMgb2JqZWN0LgorICAgICAgICAgICAgaWYgKHVz
ZXNBcmd1bWVudHMoKSAmJiBvcGVyYW5kID09IGFyZ3VtZW50c1JlZ2lzdGVyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIC8vIERpdHRvIGZvciB0aGUgYXJn
dW1lbnRzIG9iamVjdC4KKyAgICAgICAgICAgIGlmICh1c2VzQXJndW1lbnRzKCkgJiYgb3BlcmFu
ZCA9PSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIHJldHVybiBvcGVyYW5k
ID49IG1fc3ltYm9sVGFibGUtPmNhcHR1cmVTdGFydCgpIAorICAgICAgICAgICAgICAgICYmIG9w
ZXJhbmQgPCBtX3N5bWJvbFRhYmxlLT5jYXB0dXJlRW5kKCk7CiAgICAgICAgIH0KIAogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KQEAgLTEx
NzYsNyArMTE4OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludCBtX251bUNhbGxl
ZVJlZ2lzdGVyczsKICAgICAgICAgaW50IG1fbnVtVmFyczsKLSAgICAgICAgaW50IG1fbnVtQ2Fw
dHVyZWRWYXJzOwogICAgICAgICBib29sIG1faXNDb25zdHJ1Y3RvcjsKIAogICAgIHByb3RlY3Rl
ZDoKQEAgLTE1MzIsNyArMTU0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQpOwogCiAgICAgICAgIEFTU0VS
VChzbG93QXJndW1lbnRzW2FyZ3VtZW50XS5zdGF0dXMgPT0gU2xvd0FyZ3VtZW50OjpDYXB0dXJl
ZCk7Ci0gICAgICAgIHJldHVybiBzbG93QXJndW1lbnRzW2FyZ3VtZW50XS5pbmRleElmQ2FwdHVy
ZWQ7CisgICAgICAgIHJldHVybiBzbG93QXJndW1lbnRzW2FyZ3VtZW50XS5pbmRleDsKICAgICB9
CiAKICAgICBpbmxpbmUgUmVnaXN0ZXImIEV4ZWNTdGF0ZTo6cihpbnQgaW5kZXgpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NCw4ICszMDQsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvCiAK
ICAgICAvLyBGSVhNRTogTW92ZSBjb2RlIHRoYXQgbW9kaWZpZXMgdGhlIGdsb2JhbCBvYmplY3Qg
dG8gSW50ZXJwcmV0ZXI6OmV4ZWN1dGUuCiAgICAgCi0gICAgY29kZUJsb2NrLT5tX251bUNhcHR1
cmVkVmFycyA9IGNvZGVCbG9jay0+bV9udW1WYXJzOwotICAgIAogICAgIGlmIChjb21waWxhdGlv
bktpbmQgPT0gT3B0aW1pemluZ0NvbXBpbGF0aW9uKQogICAgICAgICByZXR1cm47CiAKQEAgLTM5
Miw2ICszOTAsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5zZXRBY3RpdmF0aW9uUmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVn
aXN0ZXItPmluZGV4KCkpOwogICAgIH0KIAorICAgIHN5bWJvbFRhYmxlLT5zZXRDYXB0dXJlU3Rh
cnQobV9jb2RlQmxvY2stPm1fbnVtVmFycyk7CisKICAgICBpZiAoZnVuY3Rpb25Cb2R5LT51c2Vz
QXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IG1fc2hvdWxkRW1pdERlYnVn
SG9va3MpIHsgLy8gTWF5IHJlaWZ5IGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIFJlZ2lzdGVy
SUQqIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZFZhcigpOyAvLyBBbm9ueW1vdXMs
IHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29kZS4KICAgICAgICAgUmVnaXN0ZXJJ
RCogYXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cywg
ZmFsc2UpOyAvLyBDYW4gYmUgY2hhbmdlZCBieSBhc3NpZ25pbmcgdG8gJ2FyZ3VtZW50cycuCkBA
IC00MjMsMzIgKzQyMywzMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
RnVuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG1heVJlaWZ5QXJndW1lbnRzT2JqZWN0
ID0gY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8
IG1fc2hvdWxkRW1pdERlYnVnSG9va3M7CiAgICAgYm9vbCBjYXB0dXJlc0FueUFyZ3VtZW50QnlO
YW1lID0gZmFsc2U7CisgICAgVmVjdG9yPFJlZ2lzdGVySUQqPiBjYXB0dXJlZEFyZ3VtZW50czsK
ICAgICBpZiAoZnVuY3Rpb25Cb2R5LT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpKSB7CiAgICAgICAg
IEZ1bmN0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycyA9ICpmdW5jdGlvbkJvZHktPnBhcmFtZXRl
cnMoKTsKKyAgICAgICAgY2FwdHVyZWRBcmd1bWVudHMucmVzaXplKHBhcmFtZXRlcnMuc2l6ZSgp
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBjYXB0dXJlZEFyZ3VtZW50c1tpXSA9IDA7CiAgICAgICAgICAgICBp
ZiAoIWZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMocGFyYW1ldGVyc1tpXSkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lID0gdHJ1
ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FwdHVyZWRBcmd1bWVudHNbaV0g
PSBhZGRWYXIoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtYXlSZWlmeUFyZ3VtZW50
c09iamVjdCB8fCBjYXB0dXJlc0FueUFyZ3VtZW50QnlOYW1lKSB7Ci0gICAgICAgIHN5bWJvbFRh
YmxlLT5zZXRDYXB0dXJlTW9kZShTaGFyZWRTeW1ib2xUYWJsZTo6QWxsT2ZUaGVUaGluZ3MpOwot
ICAgICAgICBzeW1ib2xUYWJsZS0+c2V0Q2FwdHVyZVN0YXJ0KC1DYWxsRnJhbWU6Om9mZnNldEZv
cihzeW1ib2xUYWJsZS0+cGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzKCkpKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBzeW1ib2xUYWJsZS0+c2V0Q2FwdHVyZU1vZGUoU2hhcmVkU3ltYm9sVGFi
bGU6OlNvbWVPZlRoZVRoaW5ncyk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLT5zZXRDYXB0dXJlU3Rh
cnQobV9jb2RlQmxvY2stPm1fbnVtVmFycyk7Ci0gICAgfQotCi0gICAgaWYgKG1heVJlaWZ5QXJn
dW1lbnRzT2JqZWN0ICYmIGNhcHR1cmVzQW55QXJndW1lbnRCeU5hbWUpIHsKKyAgICBpZiAoY2Fw
dHVyZXNBbnlBcmd1bWVudEJ5TmFtZSAmJiAhY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewog
ICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQgPSBzeW1ib2xUYWJsZS0+cGFyYW1ldGVyQ291
bnQoKTsKICAgICAgICAgT3duQXJyYXlQdHI8U2xvd0FyZ3VtZW50PiBzbG93QXJndW1lbnRzID0g
YWRvcHRBcnJheVB0cihuZXcgU2xvd0FyZ3VtZW50W3BhcmFtZXRlckNvdW50XSk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1ldGVyQ291bnQ7ICsraSkgeworICAgICAgICAg
ICAgaWYgKCFjYXB0dXJlZEFyZ3VtZW50c1tpXSkgeworICAgICAgICAgICAgICAgIEFTU0VSVChz
bG93QXJndW1lbnRzW2ldLnN0YXR1cyA9PSBTbG93QXJndW1lbnQ6Ok5vcm1hbCk7CisgICAgICAg
ICAgICAgICAgc2xvd0FyZ3VtZW50c1tpXS5pbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZz
ZXQoaSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBzbG93QXJndW1lbnRzW2ldLnN0YXR1cyA9IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQ7Ci0g
ICAgICAgICAgICBzbG93QXJndW1lbnRzW2ldLmluZGV4SWZDYXB0dXJlZCA9IENhbGxGcmFtZTo6
YXJndW1lbnRPZmZzZXQoaSk7CisgICAgICAgICAgICBzbG93QXJndW1lbnRzW2ldLmluZGV4ID0g
Y2FwdHVyZWRBcmd1bWVudHNbaV0tPmluZGV4KCk7CiAgICAgICAgIH0KICAgICAgICAgc3ltYm9s
VGFibGUtPnNldFNsb3dBcmd1bWVudHMoc2xvd0FyZ3VtZW50cy5yZWxlYXNlKCkpOwogICAgIH0K
QEAgLTQ5MSw3ICs0OTAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
RnVuCiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+
aW5kZXgoKSk7CiAgICAgfQogCi0gICAgY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFycyA9IGNv
ZGVCbG9jay0+bV9udW1WYXJzOworICAgIHN5bWJvbFRhYmxlLT5zZXRDYXB0dXJlRW5kKGNvZGVC
bG9jay0+bV9udW1WYXJzKTsKIAogICAgIG1fZmlyc3RMYXp5RnVuY3Rpb24gPSBjb2RlQmxvY2st
Pm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6
ZSgpOyArK2kpIHsKQEAgLTUxOSw5ICs1MTgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoRnVuCiAgICAgfQogCiAgICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3Mg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpKQotICAgICAgICBjb2RlQmxvY2stPm1fbnVtQ2FwdHVy
ZWRWYXJzID0gY29kZUJsb2NrLT5tX251bVZhcnM7Ci0KLSAgICBzeW1ib2xUYWJsZS0+c2V0Q2Fw
dHVyZUVuZChjb2RlQmxvY2stPm1fbnVtQ2FwdHVyZWRWYXJzKTsKKyAgICAgICAgc3ltYm9sVGFi
bGUtPnNldENhcHR1cmVFbmQoY29kZUJsb2NrLT5tX251bVZhcnMpOwogCiAgICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKmZ1bmN0aW9uQm9keS0+cGFyYW1ldGVycygpOwogICAg
IG1fcGFyYW1ldGVycy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3Bh
Y2UgZm9yICJ0aGlzIgpAQCAtNTMxLDkgKzUyOCwxNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoRnVuCiAgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgobmV4dFBhcmFt
ZXRlckluZGV4LS0pOwogICAgIG1fY29kZUJsb2NrLT5hZGRQYXJhbWV0ZXIoKTsKICAgICAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzW2ldLCBuZXh0UGFyYW1ldGVySW5kZXgtLSk7Ci0KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2ksIC0tbmV4dFBh
cmFtZXRlckluZGV4KSB7CisgICAgICAgIGludCBpbmRleCA9IG5leHRQYXJhbWV0ZXJJbmRleDsK
KyAgICAgICAgaWYgKGNhcHR1cmVkQXJndW1lbnRzLnNpemUoKSAmJiBjYXB0dXJlZEFyZ3VtZW50
c1tpXSkgeworICAgICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keS0+aGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSAmJiBmdW5jdGlvbkJvZHktPmNhcHR1cmVzKHBhcmFtZXRlcnNbaV0pKTsKKyAgICAg
ICAgICAgIGluZGV4ID0gY2FwdHVyZWRBcmd1bWVudHNbaV0tPmluZGV4KCk7CisgICAgICAgICAg
ICBSZWdpc3RlcklEIG9yaWdpbmFsKG5leHRQYXJhbWV0ZXJJbmRleCk7CisgICAgICAgICAgICBl
bWl0TW92ZShjYXB0dXJlZEFyZ3VtZW50c1tpXSwgJm9yaWdpbmFsKTsKKyAgICAgICAgfQorICAg
ICAgICBhZGRQYXJhbWV0ZXIocGFyYW1ldGVyc1tpXSwgaW5kZXgpOworICAgIH0KICAgICBwcmVz
ZXJ2ZUxhc3RWYXIoKTsKIAogICAgIC8vIFdlIGRlY2xhcmUgdGhlIGNhbGxlZSdzIG5hbWUgbGFz
dCBiZWNhdXNlIGl0IHNob3VsZCBsb3NlIHRvIGEgdmFyLCBmdW5jdGlvbiwgYW5kL29yIHBhcmFt
ZXRlciBkZWNsYXJhdGlvbi4KQEAgLTYwMyw3ICs2MDcsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoRXZhCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1WYXJp
YWJsZXM7ICsraSkKICAgICAgICAgdmFyaWFibGVzLmFwcGVuZCgqdmFyU3RhY2tbaV0uZmlyc3Qp
OwogICAgIGNvZGVCbG9jay0+YWRvcHRWYXJpYWJsZXModmFyaWFibGVzKTsKLSAgICBjb2RlQmxv
Y2stPm1fbnVtQ2FwdHVyZWRWYXJzID0gY29kZUJsb2NrLT5tX251bVZhcnM7CiAgICAgcHJlc2Vy
dmVMYXN0VmFyKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY3
LDggKzQ2NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbnVtQXJndW1lbnRzID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBhcmd1bWVudCA9IG51bUFyZ3VtZW50czsgYXJndW1lbnQtLSA+IDE7KQogICAgICAg
ICAgICAgZmx1c2goYXJndW1lbnRUb09wZXJhbmQoYXJndW1lbnQpKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBsb2NhbCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5tX251bUNhcHR1
cmVkVmFyczsgbG9jYWwtLTspCisgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBt
X2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bV9udW1WYXJzOyArK2xvY2FsKSB7CisgICAg
ICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5pc0NhcHR1cmVkKGxv
Y2FsKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGZsdXNoKGxvY2Fs
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEdldCBhbiBvcGVyYW5kLCBhbmQgcGVyZm9y
bSBhIFRvSW50MzIvVG9OdW1iZXIgY29udmVyc2lvbiBvbiBpdC4KQEAgLTMyODMsMTAgKzMyODYs
MTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGRhdGFMb2coIlBhcnNpbmcgY29kZSBibG9j
ayAlcC4gY29kZVR5cGUgPSAlcywgbnVtQ2FwdHVyZWRWYXJzID0gJXUsIG5lZWRzRnVsbFNjb3Bl
Q2hhaW4gPSAlcywgbmVlZHNBY3RpdmF0aW9uID0gJXMsIGlzU3RyaWN0TW9kZSA9ICVzXG4iLAor
ICAgIGRhdGFMb2coIlBhcnNpbmcgY29kZSBibG9jayAlcC4gY29kZVR5cGUgPSAlcywgY2FwdHVy
ZUNvdW50ID0gJXUsIG5lZWRzRnVsbFNjb3BlQ2hhaW4gPSAlcywgbmVlZHNBY3RpdmF0aW9uID0g
JXMsIGlzU3RyaWN0TW9kZSA9ICVzXG4iLAogICAgICAgICAgICAgY29kZUJsb2NrLAogICAgICAg
ICAgICAgY29kZVR5cGVUb1N0cmluZyhjb2RlQmxvY2stPmNvZGVUeXBlKCkpLAotICAgICAgICAg
ICAgY29kZUJsb2NrLT5tX251bUNhcHR1cmVkVmFycywKKyAgICAgICAgICAgIGNvZGVCbG9jay0+
c3ltYm9sVGFibGUoKS0+Y2FwdHVyZUNvdW50KCksCiAgICAgICAgICAgICBjb2RlQmxvY2stPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKT8idHJ1ZSI6ImZhbHNlIiwKICAgICAgICAgICAgIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPm5lZWRzQWN0aXZhdGlvbigpPyJ0cnVlIjoiZmFsc2UiLAog
ICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCk/
InRydWUiOiJmYWxzZSIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMjkxOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjE1LDcgKzQyMTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkJhc2VJbmRleCgKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9h
ZEdQUiwgaW5kZXhHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCAKLSAgICAgICAgICAgICAg
ICAgICAgT0JKRUNUX09GRlNFVE9GKFNsb3dBcmd1bWVudCwgaW5kZXhJZkNhcHR1cmVkKSksIAor
ICAgICAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0YoU2xvd0FyZ3VtZW50LCBpbmRleCkp
LCAKICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKIAogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKApAQCAtNDI5Miw3ICs0MjkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFBh
eWxvYWRHUFIsIGluZGV4R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgCi0gICAgICAgICAg
ICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTbG93QXJndW1lbnQsIGluZGV4SWZDYXB0dXJlZCkp
LCAKKyAgICAgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNsb3dBcmd1bWVudCwgaW5k
ZXgpKSwgCiAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRleCgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE2NCw3ICs0MTY0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgaW5kZXhHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0Vp
Z2h0LCAKLSAgICAgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNsb3dBcmd1bWVudCwg
aW5kZXhJZkNhcHR1cmVkKSksIAorICAgICAgICAgICAgICAgICAgICBPQkpFQ1RfT0ZGU0VUT0Yo
U2xvd0FyZ3VtZW50LCBpbmRleCkpLCAKICAgICAgICAgICAgICAgICByZXN1bHRHUFIpOwogICAg
ICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cigKQEAgLTQyMjksNyArNDIyOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIG1faml0LmxvYWQz
MigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIGluZGV4R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgCi0g
ICAgICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihTbG93QXJndW1lbnQsIGluZGV4SWZD
YXB0dXJlZCkpLCAKKyAgICAgICAgICAgICAgICAgICAgT0JKRUNUX09GRlNFVE9GKFNsb3dBcmd1
bWVudCwgaW5kZXgpKSwgCiAgICAgICAgICAgICAgICAgcmVzdWx0R1BSKTsKICAgICAgICAgICAg
IG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMsMTgg
QEAgdm9pZCBBcmd1bWVudHM6OnRlYXJPZmYoQ2FsbEZyYW1lKiBjYWxsRgogICAgIG1fcmVnaXN0
ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX251bUFy
Z3VtZW50c10pOwogICAgIG1fcmVnaXN0ZXJzID0gbV9yZWdpc3RlckFycmF5LmdldCgpICsgQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IobV9udW1Bcmd1bWVudHMgKyAxKTsKIAorICAgIC8vIElmIHdlIGhh
dmUgYSBjYXB0dXJlZCBhcmd1bWVudCB0aGF0IGxvZ2ljYWxseSBhbGlhc2VzIGFjdGl2YXRpb24g
c3RvcmFnZSwKKyAgICAvLyBidXQgd2Ugb3B0aW1pemUgYXdheSB0aGUgYWN0aXZhdGlvbiwgdGhl
IGFyZ3VtZW50IG5lZWRzIHRvIHRlYXIgb2ZmIGludG8KKyAgICAvLyBvdXIgc3RvcmFnZS4gVGhl
IHNpbXBsZXN0IHdheSB0byBkbyB0aGlzIGlzIHRvIHJldmVydCBpdCB0byBOb3JtYWwgc3RhdHVz
LgorICAgIGlmIChtX3Nsb3dBcmd1bWVudHMgJiYgIW1fYWN0aXZhdGlvbikgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChtX3Nsb3dBcmd1bWVudHNbaV0uc3RhdHVzICE9IFNsb3dBcmd1bWVudDo6Q2FwdHVyZWQp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBtX3Nsb3dBcmd1bWVudHNb
aV0uc3RhdHVzID0gU2xvd0FyZ3VtZW50OjpOb3JtYWw7CisgICAgICAgICAgICBtX3Nsb3dBcmd1
bWVudHNbaV0uaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpOworICAgICAgICB9
CisgICAgfQorCiAgICAgaWYgKCFjYWxsRnJhbWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpIHsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bUFyZ3VtZW50czsgKytpKQogICAgICAg
ICAgICAgdHJ5U2V0QXJndW1lbnQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGksIGNhbGxGcmFt
ZS0+YXJndW1lbnRBZnRlckNhcHR1cmUoaSkpOwpAQCAtMzYyLDIwICszNzQsOCBAQCB2b2lkIEFy
Z3VtZW50czo6ZGlkVGVhck9mZkFjdGl2YXRpb24oRXhlCiAgICAgaWYgKCFtX251bUFyZ3VtZW50
cykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHRlYXJPZmYoZXhlYyk7Ci0KLSAgICBTaGFy
ZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBhY3RpdmF0aW9uLT5zeW1ib2xUYWJsZSgpOwot
ICAgIGNvbnN0IFNsb3dBcmd1bWVudCogc2xvd0FyZ3VtZW50cyA9IHN5bWJvbFRhYmxlLT5zbG93
QXJndW1lbnRzKCk7Ci0gICAgaWYgKCFzbG93QXJndW1lbnRzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBBU1NFUlQoc3ltYm9sVGFibGUtPmNhcHR1cmVNb2RlKCkgPT0gU2hhcmVkU3ltYm9sVGFi
bGU6OkFsbE9mVGhlVGhpbmdzKTsKICAgICBtX2FjdGl2YXRpb24uc2V0KGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgYWN0aXZhdGlvbik7Ci0KLSAgICBhbGxvY2F0ZVNsb3dBcmd1bWVudHMoKTsK
LSAgICBzaXplX3QgY291bnQgPSBtaW48dW5zaWduZWQ+KG1fbnVtQXJndW1lbnRzLCBzeW1ib2xU
YWJsZS0+cGFyYW1ldGVyQ291bnQoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKQotICAgICAgICBtX3Nsb3dBcmd1bWVudHNbaV0gPSBzbG93QXJndW1lbnRzW2ldOwor
ICAgIHRlYXJPZmYoZXhlYyk7CiB9CiAKIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxMjkxOTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMTYxLDYgKzE2MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKG1f
c2xvd0FyZ3VtZW50cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9zbG93QXJndW1l
bnRzID0gYWRvcHRBcnJheVB0cihuZXcgU2xvd0FyZ3VtZW50W21fbnVtQXJndW1lbnRzXSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1Bcmd1bWVudHM7ICsraSkgeworICAg
ICAgICAgICAgQVNTRVJUKG1fc2xvd0FyZ3VtZW50c1tpXS5zdGF0dXMgPT0gU2xvd0FyZ3VtZW50
OjpOb3JtYWwpOworICAgICAgICAgICAgbV9zbG93QXJndW1lbnRzW2ldLmluZGV4ID0gQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldChpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlubGluZSBi
b29sIEFyZ3VtZW50czo6dHJ5RGVsZXRlQXJndW1lbnQoc2l6ZV90IGFyZ3VtZW50KQpAQCAtMjEw
LDE0ICsyMTQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4mIEFyZ3VtZW50czo6YXJndW1lbnQoc2l6ZV90IGFyZ3VtZW50KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzQXJndW1lbnQoYXJndW1lbnQpKTsKLSAgICAgICAgaWYgKCFtX3Ns
b3dBcmd1bWVudHMgfHwgbV9zbG93QXJndW1lbnRzW2FyZ3VtZW50XS5zdGF0dXMgPT0gU2xvd0Fy
Z3VtZW50OjpOb3JtYWwpCisgICAgICAgIGlmICghbV9zbG93QXJndW1lbnRzKQogICAgICAgICAg
ICAgcmV0dXJuIG1fcmVnaXN0ZXJzW0NhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoYXJndW1lbnQp
XTsKIAotICAgICAgICBBU1NFUlQobV9zbG93QXJndW1lbnRzW2FyZ3VtZW50XS5zdGF0dXMgPT0g
U2xvd0FyZ3VtZW50OjpDYXB0dXJlZCk7CisgICAgICAgIGludCBpbmRleCA9IG1fc2xvd0FyZ3Vt
ZW50c1thcmd1bWVudF0uaW5kZXg7CiAgICAgICAgIGlmICghbV9hY3RpdmF0aW9uKQotICAgICAg
ICAgICAgcmV0dXJuIG1fcmVnaXN0ZXJzW21fc2xvd0FyZ3VtZW50c1thcmd1bWVudF0uaW5kZXhJ
ZkNhcHR1cmVkXTsKKyAgICAgICAgICAgIHJldHVybiBtX3JlZ2lzdGVyc1tpbmRleF07CiAKLSAg
ICAgICAgcmV0dXJuIG1fYWN0aXZhdGlvbi0+cmVnaXN0ZXJBdChtX3Nsb3dBcmd1bWVudHNbYXJn
dW1lbnRdLmluZGV4SWZDYXB0dXJlZCk7CisgICAgICAgIHJldHVybiBtX2FjdGl2YXRpb24tPnJl
Z2lzdGVyQXQoaW5kZXgpOwogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEFyZ3VtZW50czo6Zmlu
aXNoQ3JlYXRpb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC0yMzQsNiArMjM4LDE1IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtX292ZXJyb2RlQ2FsbGVyID0gZmFsc2U7CiAgICAgICAg
IG1faXNTdHJpY3RNb2RlID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7
CiAKKyAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+c3ltYm9sVGFibGUoKTsKKyAgICAgICAgY29uc3QgU2xvd0FyZ3VtZW50KiBz
bG93QXJndW1lbnRzID0gc3ltYm9sVGFibGUtPnNsb3dBcmd1bWVudHMoKTsKKyAgICAgICAgaWYg
KHNsb3dBcmd1bWVudHMpIHsKKyAgICAgICAgICAgIGFsbG9jYXRlU2xvd0FyZ3VtZW50cygpOwor
ICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+KG1fbnVtQXJndW1l
bnRzLCBzeW1ib2xUYWJsZS0+cGFyYW1ldGVyQ291bnQoKSk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgbV9zbG93QXJndW1l
bnRzW2ldID0gc2xvd0FyZ3VtZW50c1tpXTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRoZSBi
eXRlY29kZSBnZW5lcmF0b3Igb21pdHMgb3BfdGVhcl9vZmZfYWN0aXZhdGlvbiBpbiBjYXNlcyBv
ZiBubwogICAgICAgICAvLyBkZWNsYXJlZCBwYXJhbWV0ZXJzLCBzbyB3ZSBuZWVkIHRvIHRlYXIg
b2ZmIGltbWVkaWF0ZWx5LgogICAgICAgICBpZiAobV9pc1N0cmljdE1vZGUgfHwgIWNhbGxlZS0+
anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpCkBAIC0yNTQsNiArMjY3LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIG1fb3ZlcnJvZGVDYWxsZXIgPSBmYWxzZTsKICAgICAgICAg
bV9pc1N0cmljdE1vZGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaW5saW5lQ2FsbEZy
YW1lLT5leGVjdXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7CiAKKyAgICAgICAgQVNTRVJU
KCFqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxl
LmdldCgpKS0+c3ltYm9sVGFibGUoKS0+c2xvd0FyZ3VtZW50cygpKTsKKwogICAgICAgICAvLyBU
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIG9taXRzIG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24gaW4gY2Fz
ZXMgb2Ygbm8KICAgICAgICAgLy8gZGVjbGFyZWQgcGFyYW1ldGVycywgc28gd2UgbmVlZCB0byB0
ZWFyIG9mZiBpbW1lZGlhdGVseS4KICAgICAgICAgaWYgKG1faXNTdHJpY3RNb2RlIHx8ICFjYWxs
ZWUtPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEyOTE5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzUsNyArMTM1LDYgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6c19pbgogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCiAgICAgOiBTY3JpcHRF
eGVjdXRhYmxlKGdsb2JhbERhdGEuZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBn
bG9iYWxEYXRhLCBub2RlLT5zb3VyY2UoKSwgbm9kZS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgLCBt
X251bUNhcHR1cmVkVmFyaWFibGVzKDApCiAgICAgLCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyhub2Rl
LT51c2VzQXJndW1lbnRzKCkpCiAgICAgLCBtX3BhcmFtZXRlcnMobm9kZS0+cGFyYW1ldGVycygp
KQogICAgICwgbV9uYW1lKG5vZGUtPmlkZW50KCkpCkBAIC01MjcsNyArNTI2LDYgQEAgSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIAogICAgIG1fbnVtUGFyYW1l
dGVyc0ZvckNhbGwgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPm51bVBhcmFtZXRlcnMoKTsKICAgICBB
U1NFUlQobV9udW1QYXJhbWV0ZXJzRm9yQ2FsbCk7Ci0gICAgbV9udW1DYXB0dXJlZFZhcmlhYmxl
cyA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+bV9udW1DYXB0dXJlZFZhcnM7CiAgICAgbV9zeW1ib2xU
YWJsZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX2NvZGVCbG9ja0ZvckNhbGwtPnN5
bWJvbFRhYmxlKCkpOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTU3MCw3ICs1NjgsNiBAQCBKU09i
amVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgCiAgICAgbV9udW1QYXJh
bWV0ZXJzRm9yQ29uc3RydWN0ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPm51bVBhcmFtZXRl
cnMoKTsKICAgICBBU1NFUlQobV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0KTsKLSAgICBtX251
bUNhcHR1cmVkVmFyaWFibGVzID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPm1fbnVtQ2FwdHVy
ZWRWYXJzOwogICAgIG1fc3ltYm9sVGFibGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnN5bWJvbFRhYmxlKCkpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJl
dmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjkyLDcgKzY5Miw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpbmZlcnJlZE5hbWUoKSB7IHJldHVybiBtX2luZmVy
cmVkTmFtZTsgfQogICAgICAgICBKU1N0cmluZyogbmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lVmFsdWUuZ2V0KCk7IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXplKCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEK
LSAgICAgICAgdW5zaWduZWQgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9udW1DYXB0dXJlZFZhcmlhYmxlczsgfQogICAgICAgICBTdHJpbmcgcGFyYW1TdHJpbmcoKSBj
b25zdDsKICAgICAgICAgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zeW1ib2xUYWJsZS5nZXQoKTsgfQogCkBAIC03NDIsOCArNzQxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU2NyaXB0RXhlY3V0YWJsZTo6
U3RydWN0dXJlRmxhZ3M7Ci0gICAgICAgIHVuc2lnbmVkIG1fbnVtQ2FwdHVyZWRWYXJpYWJsZXMg
OiAzMTsKLSAgICAgICAgYm9vbCBtX2ZvcmNlVXNlc0FyZ3VtZW50cyA6IDE7CisgICAgICAgIGJv
b2wgbV9mb3JjZVVzZXNBcmd1bWVudHM7CiAKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uUGFyYW1l
dGVycz4gbV9wYXJhbWV0ZXJzOwogICAgICAgICBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IG1f
Y29kZUJsb2NrRm9yQ2FsbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcAkocmV2aXNpb24gMTI5MTkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsNyBAQCB2b2lkIEpTQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqCiAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pc1Rvcm5PZmYoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5zdG9yYWdlU2l6ZSgpOyArK2kpCisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCB0aGlzT2JqZWN0LT5zeW1ib2xUYWJsZSgpLT5jYXB0dXJlQ291bnQo
KTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+c3RvcmFnZSgpW2ld
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHJldmlzaW9uIDEyOTE5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwyMSArNDEsMjAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uIDogcHVibGljIEpTVmFyaWFi
bGVPYmplY3QgewogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQWN0aXZhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSosIFNoYXJlZFN5bWJvbFRhYmxlKiwgc2l6ZV90IHN0
b3JhZ2VTaXplKTsKKyAgICAgICAgSlNBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgQ2FsbEZyYW1lKiwgU2hhcmVkU3ltYm9sVGFibGUqKTsKICAgICAKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgSlNWYXJpYWJsZU9iamVjdCBCYXNlOwogCiAgICAgICAgIHN0YXRpYyBK
U0FjdGl2YXRpb24qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKICAgICAg
ICAgewotICAgICAgICAgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gSlNBY3RpdmF0aW9uOjpzdG9y
YWdlU2l6ZShmdW5jdGlvbkV4ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCkpOwogICAgICAgICAgICAg
SlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3ICgKICAgICAgICAgICAgICAgICBOb3ROdWxs
LAogICAgICAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxKU0FjdGl2YXRpb24+KAogICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxEYXRhLmhlYXAsCi0gICAgICAgICAgICAgICAgICAgIGFsbG9jYXRp
b25TaXplKHN0b3JhZ2VTaXplKQorICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9uU2l6ZShm
dW5jdGlvbkV4ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCkpCiAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgKSBKU0FjdGl2YXRpb24oZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBmdW5jdGlvbkV4
ZWN1dGFibGUtPnN5bWJvbFRhYmxlKCksIHN0b3JhZ2VTaXplKTsKKyAgICAgICAgICAgICkgSlNB
Y3RpdmF0aW9uKGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZnVuY3Rpb25FeGVjdXRhYmxlLT5zeW1i
b2xUYWJsZSgpKTsKICAgICAgICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIGFjdGl2YXRpb247CiAgICAgICAgIH0KQEAgLTk3
LDE5ICs5NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJn
dW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIFByb3BlcnR5TmFtZSk7CiAgICAgICAg
IE5FVkVSX0lOTElORSBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXRBcmd1bWVudHNHZXR0
ZXIoKTsKIAotICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBzdG9y
YWdlU2l6ZSk7Ci0gICAgICAgIHN0YXRpYyBzaXplX3Qgc3RvcmFnZVNpemUoU2hhcmVkU3ltYm9s
VGFibGUqKTsKLSAgICAgICAgc3RhdGljIGludCBjYXB0dXJlU3RhcnQoU2hhcmVkU3ltYm9sVGFi
bGUqKTsKKyAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShTaGFyZWRTeW1ib2xU
YWJsZSopOwogCiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCgpOwotICAgICAgICBzaXplX3Qg
c3RvcmFnZVNpemUoKTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBzdG9yYWdlKCk7
IC8vIHN0b3JhZ2VTaXplKCkgbnVtYmVyIG9mIHJlZ2lzdGVycy4KKyAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBzdG9yYWdlKCk7IC8vIGNhcHR1cmVDb3VudCgpIG51bWJlciBvZiByZWdp
c3RlcnMuCiAgICAgfTsKIAogICAgIGV4dGVybiBpbnQgYWN0aXZhdGlvbkNvdW50OwogICAgIGV4
dGVybiBpbnQgYWxsVGhlVGhpbmdzQ291bnQ7CiAKLSAgICBpbmxpbmUgSlNBY3RpdmF0aW9uOjpK
U0FjdGl2YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBzaXplX3Qgc3RvcmFnZVNpemUpCisg
ICAgaW5saW5lIEpTQWN0aXZhdGlvbjo6SlNBY3RpdmF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJs
ZSkKICAgICAgICAgOiBCYXNlKAogICAgICAgICAgICAgZ2xvYmFsRGF0YSwKICAgICAgICAgICAg
IGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCks
CkBAIC0xMTksNyArMTE1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICkKICAgICB7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogc3RvcmFnZSA9IHRoaXMtPnN0b3JhZ2UoKTsK
LSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdG9yYWdlU2l6ZTsgKytpKQorICAgICAg
ICBzaXplX3QgY2FwdHVyZUNvdW50ID0gc3ltYm9sVGFibGUtPmNhcHR1cmVDb3VudCgpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhcHR1cmVDb3VudDsgKytpKQogICAgICAgICAg
ICAgbmV3KCZzdG9yYWdlW2ldKSBXcml0ZUJhcnJpZXI8VW5rbm93bj47CiAgICAgfQogCkBAIC0x
NDIsMjYgKzEzOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaW5saW5lIGludCBKU0FjdGl2YXRpb246OmNhcHR1cmVTdGFydChTaGFyZWRT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCi0gICAgewotICAgICAgICBpZiAoc3ltYm9sVGFibGUt
PmNhcHR1cmVNb2RlKCkgPT0gU2hhcmVkU3ltYm9sVGFibGU6OkFsbE9mVGhlVGhpbmdzKQotICAg
ICAgICAgICAgcmV0dXJuIC1DYWxsRnJhbWU6Om9mZnNldEZvcihzeW1ib2xUYWJsZS0+cGFyYW1l
dGVyQ291bnRJbmNsdWRpbmdUaGlzKCkpOwotICAgICAgICByZXR1cm4gc3ltYm9sVGFibGUtPmNh
cHR1cmVTdGFydCgpOwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgSlNBY3RpdmF0aW9uOjpz
dG9yYWdlU2l6ZShTaGFyZWRTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gc3ltYm9sVGFibGUtPmNhcHR1cmVFbmQoKSAtIGNhcHR1cmVTdGFydChzeW1ib2xU
YWJsZSk7Ci0gICAgfQotCiAgICAgaW5saW5lIGludCBKU0FjdGl2YXRpb246OnJlZ2lzdGVyT2Zm
c2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAtY2FwdHVyZVN0YXJ0KHN5bWJvbFRhYmxlKCkp
OwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgSlNBY3RpdmF0aW9uOjpzdG9yYWdlU2l6ZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gc3RvcmFnZVNpemUoc3ltYm9sVGFibGUoKSk7CisgICAg
ICAgIHJldHVybiAtc3ltYm9sVGFibGUoKS0+Y2FwdHVyZVN0YXJ0KCk7CiAgICAgfQogCiAgICAg
aW5saW5lIHZvaWQgSlNBY3RpdmF0aW9uOjp0ZWFyT2ZmKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKQEAgLTE3MiwyMyArMTUyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGRzdCA9IHN0b3JhZ2UoKSArIHJlZ2lzdGVyT2Zmc2V0OwogICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBzcmMgPSBtX3JlZ2lzdGVyczsKIAotICAg
ICAgICBpZiAoc3ltYm9sVGFibGUoKS0+Y2FwdHVyZU1vZGUoKSA9PSBTaGFyZWRTeW1ib2xUYWJs
ZTo6QWxsT2ZUaGVUaGluZ3MpIHsKLSAgICAgICAgICAgIGludCBmcm9tID0gLXJlZ2lzdGVyT2Zm
c2V0OwotICAgICAgICAgICAgaW50IHRvID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KTsgLy8gU2tpcCAndGhpcycgYmVjYXVzZSBpdCdzIG5vdCBsZXhpY2FsbHkgYWNjZXNzaWJsZS4K
LSAgICAgICAgICAgIGZvciAoaW50IGkgPSBmcm9tOyBpIDwgdG87ICsraSkKLSAgICAgICAgICAg
ICAgICBkc3RbaV0uc2V0KGdsb2JhbERhdGEsIHRoaXMsIHNyY1tpXS5nZXQoKSk7Ci0KLSAgICAg
ICAgICAgIGRzdFtSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnNldChnbG9iYWxEYXRhLCB0
aGlzLCBKU1ZhbHVlKAotICAgICAgICAgICAgICAgIENhbGxGcmFtZTo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8UmVnaXN0ZXIqPihzcmMpKS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSkp
OwotCi0gICAgICAgICAgICBpbnQgY2FwdHVyZUVuZCA9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVF
bmQoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FwdHVyZUVuZDsgKytpKQot
ICAgICAgICAgICAgICAgIGRzdFtpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3JjW2ldLmdldCgp
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGludCBjYXB0dXJlRW5kID0gc3ltYm9s
VGFibGUoKS0+Y2FwdHVyZUVuZCgpOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IHN5bWJvbFRh
YmxlKCktPmNhcHR1cmVTdGFydCgpOyBpIDwgY2FwdHVyZUVuZDsgKytpKQotICAgICAgICAgICAg
ICAgIGRzdFtpXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgc3JjW2ldLmdldCgpKTsKLSAgICAgICAg
fQorICAgICAgICBpbnQgY2FwdHVyZUVuZCA9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVFbmQoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IHN5bWJvbFRhYmxlKCktPmNhcHR1cmVTdGFydCgpOyBpIDwg
Y2FwdHVyZUVuZDsgKytpKQorICAgICAgICAgICAgZHN0W2ldLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBzcmNbaV0uZ2V0KCkpOwogCiAgICAgICAgIG1fcmVnaXN0ZXJzID0gZHN0OwogICAgICAgICBB
U1NFUlQoaXNUb3JuT2ZmKCkpOwpAQCAtMjA3LDE2ICsxNzMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICk7CiAgICAgfQogCi0gICAgaW5saW5lIHNpemVfdCBKU0FjdGl2YXRpb246OmFs
bG9jYXRpb25TaXplKHNpemVfdCBzdG9yYWdlU2l6ZSkKKyAgICBpbmxpbmUgc2l6ZV90IEpTQWN0
aXZhdGlvbjo6YWxsb2NhdGlvblNpemUoU2hhcmVkU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlKQog
ICAgIHsKICAgICAgICAgc2l6ZV90IG9iamVjdFNpemVJbkJ5dGVzID0gV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoSlNBY3RpdmF0
aW9uKSk7Ci0gICAgICAgIHNpemVfdCBzdG9yYWdlU2l6ZUluQnl0ZXMgPSBzdG9yYWdlU2l6ZSAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgICAgICBzaXplX3Qgc3RvcmFnZVNp
emVJbkJ5dGVzID0gc3ltYm9sVGFibGUtPmNhcHR1cmVDb3VudCgpICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPik7CiAgICAgICAgIHJldHVybiBvYmplY3RTaXplSW5CeXRlcyArIHN0b3Jh
Z2VTaXplSW5CeXRlczsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBKU0FjdGl2YXRpb246Omlz
VmFsaWQoY29uc3QgU3ltYm9sVGFibGVFbnRyeSYgZW50cnkpCiAgICAgewotICAgICAgICBpZiAo
ZW50cnkuZ2V0SW5kZXgoKSA8IGNhcHR1cmVTdGFydChzeW1ib2xUYWJsZSgpKSkKKyAgICAgICAg
aWYgKGVudHJ5LmdldEluZGV4KCkgPCBzeW1ib2xUYWJsZSgpLT5jYXB0dXJlU3RhcnQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGVudHJ5LmdldEluZGV4KCkgPj0g
c3ltYm9sVGFibGUoKS0+Y2FwdHVyZUVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZp
c2lvbiAxMjkxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMiArNDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgU2xvd0FyZ3VtZW50KCkKICAgICAgICAgICAgIDogc3RhdHVzKE5vcm1hbCkKLSAg
ICAgICAgICAgICwgaW5kZXhJZkNhcHR1cmVkKDApCisgICAgICAgICAgICAsIGluZGV4KDApCiAg
ICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFN0YXR1cyBzdGF0dXM7Ci0gICAgICAgIGlu
dCBpbmRleElmQ2FwdHVyZWQ7IC8vIElmIHN0YXR1cyBpcyAnQ2FwdHVyZWQnLCBpbmRleElmQ2Fw
dHVyZWQgaXMgb3VyIGluZGV4IGluIHRoZSBDYWxsRnJhbWUuCisgICAgICAgIGludCBpbmRleDsg
Ly8gSWYgc3RhdHVzIGlzICdEZWxldGVkJywgaW5kZXggaXMgYm9ndXMuCiAgICAgfTsKIAogICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIGludCBtaXNzaW5nU3ltYm9sTWFya2VyKCkgeyByZXR1cm4g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsgfQpAQCAtMzYwLDIwICszNjAsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgdXNlc05vblN0cmljdEV2YWwoKSB7IHJldHVy
biBtX3VzZXNOb25TdHJpY3RFdmFsOyB9CiAgICAgICAgIHZvaWQgc2V0VXNlc05vblN0cmljdEV2
YWwoYm9vbCB1c2VzTm9uU3RyaWN0RXZhbCkgeyBtX3VzZXNOb25TdHJpY3RFdmFsID0gdXNlc05v
blN0cmljdEV2YWw7IH0KIAotICAgICAgICBlbnVtIENhcHR1cmVNb2RlIHsKLSAgICAgICAgICAg
IFNvbWVPZlRoZVRoaW5ncywKLSAgICAgICAgICAgIEFsbE9mVGhlVGhpbmdzCi0gICAgICAgIH07
Ci0KLSAgICAgICAgQ2FwdHVyZU1vZGUgY2FwdHVyZU1vZGUoKSB7IHJldHVybiBtX2NhcHR1cmVN
b2RlOyB9Ci0gICAgICAgIHZvaWQgc2V0Q2FwdHVyZU1vZGUoQ2FwdHVyZU1vZGUgY2FwdHVyZU1v
ZGUpIHsgbV9jYXB0dXJlTW9kZSA9IGNhcHR1cmVNb2RlOyB9Ci0KICAgICAgICAgaW50IGNhcHR1
cmVTdGFydCgpIHsgcmV0dXJuIG1fY2FwdHVyZVN0YXJ0OyB9CiAgICAgICAgIHZvaWQgc2V0Q2Fw
dHVyZVN0YXJ0KGludCBjYXB0dXJlU3RhcnQpIHsgbV9jYXB0dXJlU3RhcnQgPSBjYXB0dXJlU3Rh
cnQ7IH0KIAogICAgICAgICBpbnQgY2FwdHVyZUVuZCgpIHsgcmV0dXJuIG1fY2FwdHVyZUVuZDsg
fQogICAgICAgICB2b2lkIHNldENhcHR1cmVFbmQoaW50IGNhcHR1cmVFbmQpIHsgbV9jYXB0dXJl
RW5kID0gY2FwdHVyZUVuZDsgfQogCisgICAgICAgIGludCBjYXB0dXJlQ291bnQoKSB7IHJldHVy
biBtX2NhcHR1cmVFbmQgLSBtX2NhcHR1cmVTdGFydDsgfQorCiAgICAgICAgIGludCBwYXJhbWV0
ZXJDb3VudCgpIHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzIC0gMTsgfQog
ICAgICAgICBpbnQgcGFyYW1ldGVyQ291bnRJbmNsdWRpbmdUaGlzKCkgeyByZXR1cm4gbV9wYXJh
bWV0ZXJDb3VudEluY2x1ZGluZ1RoaXM7IH0KICAgICAgICAgdm9pZCBzZXRQYXJhbWV0ZXJDb3Vu
dEluY2x1ZGluZ1RoaXMoaW50IHBhcmFtZXRlckNvdW50SW5jbHVkaW5nVGhpcykgeyBtX3BhcmFt
ZXRlckNvdW50SW5jbHVkaW5nVGhpcyA9IHBhcmFtZXRlckNvdW50SW5jbHVkaW5nVGhpczsgfQpA
QCAtMzg5LDcgKzM4Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zaGFyZWRTeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkK
ICAgICAgICAgICAgICwgbV9wYXJhbWV0ZXJDb3VudEluY2x1ZGluZ1RoaXMoMCkKICAgICAgICAg
ICAgICwgbV91c2VzTm9uU3RyaWN0RXZhbChmYWxzZSkKLSAgICAgICAgICAgICwgbV9jYXB0dXJl
TW9kZShTb21lT2ZUaGVUaGluZ3MpCiAgICAgICAgICAgICAsIG1fY2FwdHVyZVN0YXJ0KDApCiAg
ICAgICAgICAgICAsIG1fY2FwdHVyZUVuZCgwKQogICAgICAgICB7CkBAIC0zOTgsNyArMzkxLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX3BhcmFtZXRlckNvdW50SW5jbHVkaW5n
VGhpczsKICAgICAgICAgYm9vbCBtX3VzZXNOb25TdHJpY3RFdmFsOwogCi0gICAgICAgIENhcHR1
cmVNb2RlIG1fY2FwdHVyZU1vZGU7CiAgICAgICAgIGludCBtX2NhcHR1cmVTdGFydDsKICAgICAg
ICAgaW50IG1fY2FwdHVyZUVuZDsKIAo=
</data>
<flag name="review"
          id="177211"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="177225"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>