<?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>152224</bug_id>
          
          <creation_ts>2015-12-12 22:29:35 -0800</creation_ts>
          <short_desc>B3 should not give ValueReps for the non-stackmap children of a CheckValue to the generator callback</short_desc>
          <delta_ts>2015-12-14 12:29: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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>152162</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148788</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-12 22:29:35 -0800</bug_when>
    <thetext>Right now, a stackmap generator for a Check has to know how many children the B3 value for the Check had at the time of code generation.  That means that B3 cannot change the kind of Check that it was - for example it cannot turn a Check into a Patchpoint and it cannot turn a CheckAdd into a Check.  But just changing the contract so that the stackmap generation params only get the stackmap children of the check means that B3 can transform Checks as it likes.

This is meant to aid sinking values into checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148789</commentid>
    <comment_count>1</comment_count>
      <attachid>267255</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-12 22:31:49 -0800</bug_when>
    <thetext>Created attachment 267255
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148790</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-12 22:34:38 -0800</bug_when>
    <thetext>Attachment 267255 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:5710:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5713:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5746:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5749:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5782:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5819:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5852:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5926:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5929:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5963:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6001:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6039:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6112:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6142:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6177:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6218:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6264:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6267:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6298:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 19 in 5 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>1148818</commentid>
    <comment_count>3</comment_count>
      <attachid>267264</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-13 10:33:56 -0800</bug_when>
    <thetext>Created attachment 267264
the patch

Improved some comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148819</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-13 10:36:50 -0800</bug_when>
    <thetext>Attachment 267264 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:5710:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5713:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5746:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5749:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5782:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5819:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5852:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5926:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5929:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:5963:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6001:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6039:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6112:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6142:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6177:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6218:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6264:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6267:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:6298:  Consider using CHECK_EQ instead of CHECK(a == b)  [readability/check] [2]
Total errors found: 19 in 6 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>1149026</commentid>
    <comment_count>5</comment_count>
      <attachid>267264</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-14 11:37:43 -0800</bug_when>
    <thetext>Comment on attachment 267264
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149051</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-14 12:29:25 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/194048 and http://trac.webkit.org/changeset/194050.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267255</attachid>
            <date>2015-12-12 22:31:49 -0800</date>
            <delta_ts>2015-12-13 10:33:56 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20044</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE1LTEyLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgc2hvdWxkIG5vdCBnaXZlIFZhbHVlUmVwcyBmb3IgdGhlIG5vbi1zdGFja21hcCBjaGlsZHJl
biBvZiBhIENoZWNrVmFsdWUgdG8gdGhlIGdlbmVyYXRvciBjYWxsYmFjaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgYSBzdGFja21h
cCBnZW5lcmF0b3IgZm9yIGEgQ2hlY2sgaGFkIHRvIGtub3cgaG93IG1hbnkgY2hpbGRyZW4gdGhl
IEIzIHZhbHVlIGZvciB0aGUKKyAgICAgICAgQ2hlY2sgaGFkIGF0IHRoZSB0aW1lIG9mIGNvZGUg
Z2VuZXJhdGlvbi4gVGhhdCBtZWFudCB0aGF0IEIzIGNvdWxkIG5vdCBjaGFuZ2UgdGhlIGtpbmQg
b2YgQ2hlY2sKKyAgICAgICAgdGhhdCBpdCB3YXMgLSBmb3IgZXhhbXBsZSBpdCBjYW5ub3QgdHVy
biBhIENoZWNrIGludG8gYSBQYXRjaHBvaW50IGFuZCBpdCBjYW5ub3QgdHVybiBhIENoZWNrQWRk
CisgICAgICAgIGludG8gYSBDaGVjay4gQnV0IGp1c3QgY2hhbmdpbmcgdGhlIGNvbnRyYWN0IHNv
IHRoYXQgdGhlIHN0YWNrbWFwIGdlbmVyYXRpb24gcGFyYW1zIG9ubHkgZ2V0IHRoZQorICAgICAg
ICBzdGFja21hcCBjaGlsZHJlbiBvZiB0aGUgY2hlY2sgbWVhbnMgdGhhdCBCMyBjYW4gdHJhbnNm
b3JtIENoZWNrcyBhcyBpdCBsaWtlcy4KKworICAgICAgICBUaGlzIGlzIG1lYW50IHRvIGFpZCBz
aW5raW5nIHZhbHVlcyBpbnRvIGNoZWNrcy4KKworICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFs
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6Z2VuZXJhdGUpOgorICAgICAg
ICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChK
U0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RTaW1wbGVDaGVjayk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hl
Y2tMZXNzVGhhbik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tNZWdhQ29tYm8pOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RD
aGVja0FkZEltbUNvbW11dGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkSW1tU29t
ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZCk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0Q2hlY2tBZGQ2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tTdWJJ
bW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrU3ViQmFkSW1tKToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RDaGVja1N1Yik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tTdWI2NCk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tOZWcpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dENoZWNrTmVnNjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTXVsKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RDaGVja011bE1lbW9yeSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hl
Y2tNdWwyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja011bDY0KToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmJsZXNzU3BlY3VsYXRpb24pOgorCiAyMDE1LTEyLTEyICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbSlNDXSBBZGQgbG93ZXJpbmcg
Zm9yIEIzJ3MgU3RvcmU4IG9wY29kZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q2hlY2tTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDaGVja1NwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQwMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsOSArMTQz
LDYgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3BlY2lhbDo6Z2VuZXJhdAogICAgIEFTU0VS
VCh2YWx1ZSk7CiAKICAgICBWZWN0b3I8VmFsdWVSZXA+IHJlcHM7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtQjNBcmdzKHZhbHVlKTsgaS0tOykKLSAgICAgICAgcmVwcy5hcHBlbmQoVmFsdWVS
ZXAoKSk7Ci0KICAgICBhcHBlbmRSZXBzSW1wbChjb250ZXh0LCBtX251bUNoZWNrQXJncyArIDEs
IGluc3QsIHJlcHMpOwogCiAgICAgLy8gU2V0IGFzaWRlIHRoZSBhcmdzIHRoYXQgYXJlIHJlbGV2
YW50IHRvIHVuZG9pbmcgdGhlIG9wZXJhdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGRvbid0IHdh
bnQgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oCShyZXZpc2lvbiAxOTQw
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc0LDkgKzE3NCw4IEBAIGVudW0gT3Bjb2RlIDogaW50MTZfdCB7CiAgICAgLy8gYWZ0
ZXIgdGhlIGZpcnN0IENoZWNrQWRkIGV4ZWN1dGVzLCB0aGUgc2Vjb25kIENoZWNrQWRkIGNvdWxk
IG5vdCBoYXZlIHBvc3NpYmx5IHRha2VuIHNsb3cKICAgICAvLyBwYXRoLiBUaGVyZWZvcmUsIHRo
ZSBzZWNvbmQgQ2hlY2tBZGQncyBjYWxsYmFjayBpcyBpcnJlbGV2YW50LgogICAgIC8vCi0gICAg
Ly8gTm90ZSB0aGF0IHRoZSBmaXJzdCB0d28gY2hpbGRyZW4gb2YgdGhlc2Ugb3BlcmF0aW9ucyBo
YXZlIFZhbHVlUmVwJ3MsIGJvdGggYXMgaW5wdXQgY29uc3RyYWludHMgYW5kCi0gICAgLy8gaW4g
dGhlIHJlcHMgcHJvdmlkZWQgdG8gdGhlIGdlbmVyYXRvci4gVGhlIG91dHB1dCBjb25zdHJhaW50
cyBjb3VsZCBiZSBhbnl0aGluZywgYW5kIHNob3VsZCBub3QgYmUKLSAgICAvLyBpbnNwZWN0ZWQg
Zm9yIG1lYW5pbmcuIElmIHlvdSB3YW50IHRvIGNhcHR1cmUgdGhlIHZhbHVlcyBvZiB0aGUgaW5w
dXRzLCB1c2Ugc3RhY2ttYXAgYXJndW1lbnRzLgorICAgIC8vIE5vdGUgdGhhdCB0aGUgZmlyc3Qg
dHdvIGNoaWxkcmVuIG9mIHRoZXNlIG9wZXJhdGlvbnMgaGF2ZSBWYWx1ZVJlcCdzIGFzIGlucHV0
IGNvbnN0cmFpbnRzIGJ1dCBkbworICAgIC8vIG5vdCBoYXZlIG91dHB1dCBjb25zdHJhaW50cy4K
ICAgICBDaGVja0FkZCwKICAgICBDaGVja1N1YiwKICAgICBDaGVja011bCwKQEAgLTE4NCw4ICsx
ODMsOCBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8vIENoZWNrIHRoYXQgc2lkZS1l
eGl0cy4gVXNlIHRoZSBDaGVja1ZhbHVlIGNsYXNzLiBMaWtlIENoZWNrQWRkIGFuZCBmcmllbmRz
LCB0aGlzIGhhcyBhCiAgICAgLy8gc3RhY2ttYXAgd2l0aCBhIGdlbmVyYXRpb24gY2FsbGJhY2su
IFRoaXMgdGFrZXMgYW4gaW50IGFyZ3VtZW50IHRoYXQgdGhpcyBicmFuY2hlcyBvbiwgd2l0aAog
ICAgIC8vIGZ1bGwgYnJhbmNoIGZ1c2lvbiBpbiB0aGUgaW5zdHJ1Y3Rpb24gc2VsZWN0b3IuIEEg
dHJ1ZSB2YWx1ZSBqdW1wcyB0byB0aGUgZ2VuZXJhdG9yJ3Mgc2xvdwotICAgIC8vIHBhdGguIE5v
dGUgdGhhdCB0aGUgcHJlZGljYXRlIGNoaWxkIGlzIGhhcyBib3RoIGFuIGlucHV0IGFuZCBvdXRw
dXQgVmFsdWVSZXAuIFRoZSBpbnB1dCBjb25zdHJhaW50Ci0gICAgLy8gbXVzdCBiZSBBbnksIGFu
ZCB0aGUgb3V0cHV0IGNvdWxkIGJlIGFueXRoaW5nLgorICAgIC8vIHBhdGguIE5vdGUgdGhhdCB0
aGUgcHJlZGljYXRlIGNoaWxkIGlzIGhhcyBib3RoIGFuIGlucHV0IFZhbHVlUmVwLiBUaGUgaW5w
dXQgY29uc3RyYWludCBtdXN0IGJlCisgICAgLy8gV2FybUFueS4gSXQgd2lsbCBub3QgaGF2ZSBh
biBvdXRwdXQgY29uc3RyYWludC4KICAgICBDaGVjaywKIAogICAgIC8vIFNTQSBzdXBwb3J0LCBp
biB0aGUgc3R5bGUgb2YgREZHIFNTQS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1
ZS5jcHAJKHJldmlzaW9uIDE5NDAxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE1LDYgKzQxNSw3IEBAIEVmZmVjdHMgVmFsdWU6
OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgQ2hlY2tNdWw6CiAgICAgY2FzZSBDaGVjazoKICAg
ICAgICAgcmVzdWx0LmV4aXRzU2lkZXdheXMgPSB0cnVlOworICAgICAgICByZXN1bHQucmVhZHMg
PSBIZWFwUmFuZ2U6OnRvcCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVwc2lsb246CiAg
ICAgICAgIHJlc3VsdC53cml0ZXNTU0FTdGF0ZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMTk0MDEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1ODksNyArNTU4OSw3IEBAIHZv
aWQgdGVzdFNpbXBsZUNoZWNrKCkKICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAogICAgICAgICBb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAg
ICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKIAogICAgICAgICAgICAgLy8gVGhpcyBz
aG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBu
ZXZlciBoYXZlIGNhbGxlZQogICAgICAgICAgICAgLy8gc2F2ZXMuCkBAIC01NjIxLDcgKzU2MjEs
NyBAQCB2b2lkIHRlc3RDaGVja0xlc3NUaGFuKCkKICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMuc2l6ZSgpKTsKIAogICAgICAgICAgICAg
Ly8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxl
IHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQogICAgICAgICAgICAgLy8gc2F2ZXMuCkBAIC01NjY3
LDcgKzU2NjcsNyBAQCB2b2lkIHRlc3RDaGVja01lZ2FDb21ibygpCiAgICAgY2hlY2stPnNldEdl
bmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBDSEVDSyghcGFyYW1zLnNpemUoKSk7CiAKICAg
ICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0
aGlzIHNpbXBsZSBzaG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKICAgICAgICAgICAgIC8vIHNhdmVz
LgpAQCAtNTcwNywxMSArNTcwNywxMSBAQCB2b2lkIHRlc3RDaGVja0FkZEltbSgpCiAgICAgY2hl
Y2tBZGQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0u
aXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNDb25zdGFudCgpKTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1szXS52YWx1ZSgpID09IDQyKTsKLSAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENI
RUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0Nv
bnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLnZhbHVlKCkgPT0gNDIpOwor
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAg
ICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAg
ICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKQEAgLTU3NDMsMTEgKzU3NDMs
MTEgQEAgdm9pZCB0ZXN0Q2hlY2tBZGRJbW1Db21tdXRlKCkKICAgICBjaGVja0FkZC0+c2V0R2Vu
ZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdl
bmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hS
ZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
LnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzNdLnZhbHVlKCkgPT0gNDIpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBd
LmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSA0Mik7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKICAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LmFkZERv
dWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwpAQCAtNTc3OSwxMSArNTc3OSwxMSBAQCB2b2lkIHRl
c3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpCiAgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigK
ICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkg
PT0gNCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbM10uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbM10uZ3ByKCksIEZQUkluZm86OmZwUmVn
VDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAg
IENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5p
c0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0u
Z3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBq
aXQuYWRkRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7
CkBAIC01ODE2LDExICs1ODE2LDExIEBAIHZvaWQgdGVzdENoZWNrQWRkKCkKICAgICBjaGVja0Fk
ZC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQ
UigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVn
VDApOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1szXS5ncHIo
KSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09
IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKICAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAg
ICAgICAgIGppdC5yZXQoKTsKQEAgLTU4NDksMTEgKzU4NDksMTEgQEAgdm9pZCB0ZXN0Q2hlY2tB
ZGQ2NCgpCiAgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNH
UFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzJdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0Rv
dWJsZShwYXJhbXNbM10uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQ
UigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAg
IGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVn
VDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1sxXS5ncHIo
KSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86
OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlv
bkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CkBAIC01OTIzLDExICs1OTIzLDEx
IEBAIHZvaWQgdGVzdENoZWNrU3ViSW1tKCkKICAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAog
ICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25Q
YXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9
PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAg
IENIRUNLKHBhcmFtc1szXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1z
WzNdLnZhbHVlKCkgPT0gNDIpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KHBhcmFtc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMV0udmFsdWUoKSA9PSA0Mik7CisgICAgICAgICAgICBqaXQuY29udmVy
dEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
Mig0MiksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LnN1YkRvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwpAQCAtNTk2MCwxMSArNTk2MCwxMSBAQCB2b2lkIHRlc3RDaGVja1N1
YkJhZEltbSgpCiAgICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10u
aXNDb25zdGFudCgpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS52YWx1ZSgpID09IGJh
ZEltbSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzJdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkg
PT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbMV0uaXNDb25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
c1sxXS52YWx1ZSgpID09IGJhZEltbSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9E
b3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihiYWRJbW0p
LCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6
ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9u
RXBpbG9ndWUoKTsKQEAgLTU5OTgsMTEgKzU5OTgsMTEgQEAgdm9pZCB0ZXN0Q2hlY2tTdWIoKQog
ICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzJdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLmlzR1BSKCkpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFy
YW1zWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAg
ICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUklu
Zm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1Qx
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwogICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtNjAzNiwxMSArNjAzNiwxMSBAQCB2b2lk
IHRlc3RDaGVja1N1YjY0KCkKICAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAogICAgICAgICBb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBh
cmFtc1szXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShw
YXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNvbnZl
cnRJbnQ2NFRvRG91YmxlKHBhcmFtc1szXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAg
ICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOwor
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFy
YW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5zdWJEb3Vi
bGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQu
ZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTYxMDks
OSArNjEwOSw5IEBAIHZvaWQgdGVzdENoZWNrTmVnKCkKICAgICBjaGVja05lZy0+c2V0R2VuZXJh
dG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNp
emUoKSA9PSAzKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86
OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAg
ICAgICAgaml0Lm5lZ2F0ZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAg
aml0LnJldCgpOwpAQCAtNjEzOSw5ICs2MTM5LDkgQEAgdm9pZCB0ZXN0Q2hlY2tOZWc2NCgpCiAg
ICAgY2hlY2tOZWctPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGpp
dCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMyk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFy
YW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5uZWdhdGVEb3VibGUoRlBSSW5mbzo6ZnBS
ZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTYxNzQsMTEgKzYxNzQsMTEgQEAg
dm9pZCB0ZXN0Q2hlY2tNdWwoKQogICAgIGNoZWNrTXVsLT5zZXRHZW5lcmF0b3IoCiAgICAgICAg
IFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYg
cGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxs
b3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzNdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KHBhcmFtc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUocGFyYW1zWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7
CisgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShw
YXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0Lm11bERv
dWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtNjIx
NSwxMSArNjIxNSwxMSBAQCB2b2lkIHRlc3RDaGVja011bE1lbW9yeSgpCiAgICAgY2hlY2tNdWwt
PnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIo
KSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNHUFIoKSk7Ci0gICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbM10uZ3ByKCks
IEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAy
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENI
RUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0
LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7
CiAgICAgICAgICAgICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZw
UmVnVDApOwogICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAg
ICAgICBqaXQucmV0KCk7CkBAIC02MjYxLDExICs2MjYxLDExIEBAIHZvaWQgdGVzdENoZWNrTXVs
MigpCiAgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNDb25z
dGFudCgpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS52YWx1ZSgpID09IDIpOwotICAg
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFy
YW1zWzFdLmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFsdWUo
KSA9PSAyKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0u
Z3ByKCksIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
ICAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKQEAgLTYyOTUs
MTEgKzYyOTUsMTEgQEAgdm9pZCB0ZXN0Q2hlY2tNdWw2NCgpCiAgICAgY2hlY2tNdWwtPnNldEdl
bmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBH
ZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFt
cy5zaXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0g
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29u
dmVydEludDY0VG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAg
ICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNbM10uZ3ByKCksIEZQUklu
Zm86OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShw
YXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZl
cnRJbnQ2NFRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAg
ICAgICAgICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDAp
OwogICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBq
aXQucmV0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTk0MDEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0ODQsMTQgKzk0
ODQsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE9TUkV4aXREZXNjcmlwdG9yKiBleGl0
RGVzY3JpcHRvciA9IGFwcGVuZE9TUkV4aXREZXNjcmlwdG9yKGxvd1ZhbHVlLCBoaWdoVmFsdWUp
OwogICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdmFsdWUtPm51bUNoaWxkcmVu
KCk7CiAgICAgICAgIHZhbHVlLT5hcHBlbmRDb2xkQW55cyhidWlsZEV4aXRBcmd1bWVudHMoZXhp
dERlc2NyaXB0b3IsIG9yaWdpbi5mb3JFeGl0LCBsb3dWYWx1ZSkpOwogCiAgICAgICAgIFN0YXRl
KiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOwogICAgICAgICB2YWx1ZS0+c2V0R2VuZXJhdG9yKAogICAg
ICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgZXhpdERlc2NyaXB0b3ItPmVt
aXRPU1JFeGl0KAotICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIGtpbmQsIG9yaWdpbiwgaml0
LCBwYXJhbXMsIG9mZnNldCwgaXNFeGNlcHRpb25IYW5kbGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBraW5kLCBvcmlnaW4sIGppdCwgcGFyYW1zLCAwLCBpc0V4Y2VwdGlvbkhhbmRs
ZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267264</attachid>
            <date>2015-12-13 10:33:56 -0800</date>
            <delta_ts>2015-12-14 11:37:43 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22851</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk0MDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE1LTEyLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgc2hvdWxkIG5vdCBnaXZlIFZhbHVlUmVwcyBmb3IgdGhlIG5vbi1zdGFja21hcCBjaGlsZHJl
biBvZiBhIENoZWNrVmFsdWUgdG8gdGhlIGdlbmVyYXRvciBjYWxsYmFjaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMjI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgYSBzdGFja21h
cCBnZW5lcmF0b3IgZm9yIGEgQ2hlY2sgaGFkIHRvIGtub3cgaG93IG1hbnkgY2hpbGRyZW4gdGhl
IEIzIHZhbHVlIGZvciB0aGUKKyAgICAgICAgQ2hlY2sgaGFkIGF0IHRoZSB0aW1lIG9mIGNvZGUg
Z2VuZXJhdGlvbi4gVGhhdCBtZWFudCB0aGF0IEIzIGNvdWxkIG5vdCBjaGFuZ2UgdGhlIGtpbmQg
b2YgQ2hlY2sKKyAgICAgICAgdGhhdCBpdCB3YXMgLSBmb3IgZXhhbXBsZSBpdCBjYW5ub3QgdHVy
biBhIENoZWNrIGludG8gYSBQYXRjaHBvaW50IGFuZCBpdCBjYW5ub3QgdHVybiBhIENoZWNrQWRk
CisgICAgICAgIGludG8gYSBDaGVjay4gQnV0IGp1c3QgY2hhbmdpbmcgdGhlIGNvbnRyYWN0IHNv
IHRoYXQgdGhlIHN0YWNrbWFwIGdlbmVyYXRpb24gcGFyYW1zIG9ubHkgZ2V0IHRoZQorICAgICAg
ICBzdGFja21hcCBjaGlsZHJlbiBvZiB0aGUgY2hlY2sgbWVhbnMgdGhhdCBCMyBjYW4gdHJhbnNm
b3JtIENoZWNrcyBhcyBpdCBsaWtlcy4KKworICAgICAgICBUaGlzIGlzIG1lYW50IHRvIGFpZCBz
aW5raW5nIHZhbHVlcyBpbnRvIGNoZWNrcy4KKworICAgICAgICBBbHNvLCBJIGZvdW5kIHRoYXQg
dGhlIGVmZmVjdHMgb2YgYSBDaGVjayBkaWQgbm90IGluY2x1ZGUgSGVhcFJhbmdlOjp0b3AoKS4g
SSB0aGluayBpdCdzIGJlc3QgaWYKKyAgICAgICAgZXhpdHNTaWRld2F5cyBkb2VzIG5vdCBpbXBs
eSByZWFkaW5nIHRvcCwgdGhlIHdheSB0aGF0IGl0IGRvZXMgaW4gREZHLiBJbiB0aGUgREZHLCB0
aGF0IG1ha2VzCisgICAgICAgIHNlbnNlIGJlY2F1c2UgdGhlIGV4aXQgYW5hbHlzaXMgaXMgb3J0
aG9nb25hbCwgc28gdGhlIGNsb2JiZXIgYW5hbHlzaXMgdGVsbHMgeW91IGFib3V0IHRoZSByZWFk
cworICAgICAgICBub3QgY291bnRpbmcgT1NSIGV4aXQgLSBpZiB5b3UgbmVlZCB0byB5b3UgY2Fu
IGNvbmRpdGlvbmFsbHkgbWVyZ2UgdGhhdCB3aXRoIFdvcmxkIGJhc2VkIG9uIGEKKyAgICAgICAg
c2VwYXJhdGUgZXhpdCBhbmFseXNpcy4gQnV0IGluIEIzLCB0aGUgRWZmZWN0cyBvYmplY3QgdGVs
bHMgeW91IGFib3V0IGJvdGggZXhpdGluZyBhbmQgcmVhZGluZywKKyAgICAgICAgYW5kIGl0J3Mg
Y29tcHV0ZWQgYnkgb25lIGFuYWx5c2lzLiBQcmlvciB0byB0aGlzIGNoYW5nZSwgQ2hlY2sgd2Fz
IG5vdCBzZXR0aW5nIHJlYWRzIHRvIHRvcCgpIHNvCisgICAgICAgIHdlIHdlcmUgZWZmZWN0aXZl
bHkgc2F5aW5nIHRoYXQgRWZmZWN0czo6cmVhZHMgaXMgbWVhbmluZ2xlc3Mgd2hlbiBleGl0c1Np
ZGV3YXlzIGlzIHRydWUuIEl0CisgICAgICAgIHNlZW1zIG1vcmUgc2Vuc2libGUgdG8gaW5zdGVh
ZCBmb3JjZSB0aGUgYW5hbHlzaXMgdG8gc2V0IHJlYWRzIHRvIHRvcCgpIHdoZW4gc2V0dGluZwor
ICAgICAgICBleGl0c1NpZGV3YXlzIHRvIHRydWUsIG5vdCBsZWFzdCBiZWNhdXNlIHdlIG9ubHkg
aGF2ZSBvbmUgc3VjaCBhbmFseXNpcyBhbmQgbWFueSB1c2Vycy4gQnV0IGl0CisgICAgICAgIGFs
c28gbWFrZXMgc2Vuc2UgZm9yIGFub3RoZXIgcmVhc29uOiBpdCBhbGxvd3MgdXMgdG8gYm91bmQg
dGhlIHNldCBvZiB0aGluZ3MgdGhhdCB0aGUgcHJvZ3JhbQorICAgICAgICB3aWxsIHJlYWQgYWZ0
ZXIgaXQgZXhpdHMuIFRoYXQgbWlnaHQgbm90IGJlIHVzZWZ1bCB0byB1cyBub3csIGJ1dCBpdCdz
IGEgbmljZSBmZWF0dXJlIHRvIGdldCBmb3IKKyAgICAgICAgZnJlZS4gSSd2ZSBzZWVuIGxhbmd1
YWdlIGZlYXR1cmVzIHRoYXQgaGF2ZSBiZWhhdmUgbGlrZSBleGl0c1NpZGV3YXlzIHRoYXQgZG9u
J3QgYWxzbyByZWFkIHRvcCwKKyAgICAgICAgbGlrZSBhbiBhcnJheSBib3VuZHMgY2hlY2sgdGhh
dCBjYXVzZXMgc3VkZGVuIHRlcm1pbmF0aW9uIHdpdGhvdXQgbWFraW5nIGFueSBwcm9taXNlcyBh
Ym91dCBob3cKKyAgICAgICAgcHJldHR5IHRoZSBjcmFzaCBkdW1wIHdpbGwgbG9vay4KKworICAg
ICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3Bl
Y2lhbDo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6CisgICAgICAgICogYjMv
QjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6ZWZmZWN0cyk6CisgICAgICAg
ICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTaW1wbGVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tMZXNzVGhhbik6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Q2hlY2tNZWdhQ29tYm8pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkSW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZEltbUNvbW11dGUpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdENoZWNrQWRkSW1tU29tZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RDaGVja0FkZCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGQ2NCk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0Q2hlY2tTdWJJbW0pOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNr
U3ViQmFkSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja1N1Yik6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0Q2hlY2tTdWI2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tOZWcp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTmVnNjQpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdENoZWNrTXVsKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja011bE1lbW9yeSk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tNdWwyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RD
aGVja011bDY0KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmJsZXNzU3BlY3VsYXRpb24pOgorCiAy
MDE1LTEyLTEyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbSlNDXSBBZGQgbG93ZXJpbmcgZm9yIEIzJ3MgU3RvcmU4IG9wY29kZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTQw
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDMsOSArMTQzLDYgQEAgQ0NhbGxIZWxwZXJzOjpKdW1wIENoZWNrU3Bl
Y2lhbDo6Z2VuZXJhdAogICAgIEFTU0VSVCh2YWx1ZSk7CiAKICAgICBWZWN0b3I8VmFsdWVSZXA+
IHJlcHM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbnVtQjNBcmdzKHZhbHVlKTsgaS0tOykKLSAg
ICAgICAgcmVwcy5hcHBlbmQoVmFsdWVSZXAoKSk7Ci0KICAgICBhcHBlbmRSZXBzSW1wbChjb250
ZXh0LCBtX251bUNoZWNrQXJncyArIDEsIGluc3QsIHJlcHMpOwogCiAgICAgLy8gU2V0IGFzaWRl
IHRoZSBhcmdzIHRoYXQgYXJlIHJlbGV2YW50IHRvIHVuZG9pbmcgdGhlIG9wZXJhdGlvbi4gVGhp
cyBpcyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0VmZmVjdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNFZmZlY3RzLmgJKHJldmlzaW9uIDE5NDAxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0VmZmVjdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDExIEBAIHN0cnVjdCBF
ZmZlY3RzIHsKICAgICBib29sIHRlcm1pbmFsIHsgZmFsc2UgfTsKIAogICAgIC8vIFRydWUgaWYg
dGhpcyB2YWx1ZSBjYW4gY2F1c2UgZXhlY3V0aW9uIHRvIHRlcm1pbmF0ZSBhYnJ1cHRseSwgYW5k
IHRoYXQgdGhpcyBhYnJ1cHQgdGVybWluYXRpb24gaXMKLSAgICAvLyBvYnNlcnZhYmxlLiBOb3Rl
IHRoYXQgaWYgZXhpdHNTaWRld2F5cyBpcyBzZXQgdG8gdHJ1ZSBidXQgcmVhZHMgaXMgYm90dG9t
LCB0aGVuIEIzIGlzIGZyZWUgdG8KLSAgICAvLyBhc3N1bWUgdGhhdCBhZnRlciBhYnJ1cHQgdGVy
bWluYXRpb24gb2YgdGhpcyBwcm9jZWR1cmUsIG5vbmUgb2YgdGhlIGhlYXAgd2lsbCBiZSByZWFk
LiBUaGF0J3MKLSAgICAvLyB1c3VhbGx5IGZhbHNlLCBzbyBtYWtlIHN1cmUgdGhhdCByZWFkcyBj
b3JyZXNwb25kcyB0byB0aGUgc2V0IG9mIHRoaW5ncyB0aGF0IGFyZSByZWFkYWJsZSBhZnRlcgot
ICAgIC8vIHRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyBhYnJ1cHRseS4KKyAgICAvLyBvYnNlcnZh
YmxlLiBBbiBleGFtcGxlIG9mIGhvdyB0aGlzIGdldHMgdXNlZCBpcyB0byBsaW1pdCB0aGUgaG9p
c3Rpbmcgb2YgY29udHJvbERlcGVuZGVudCB2YWx1ZXMuCisgICAgLy8gTm90ZSB0aGF0IGlmIGV4
aXRzU2lkZXdheXMgaXMgc2V0IHRvIHRydWUgYnV0IHJlYWRzIGlzIGJvdHRvbSwgdGhlbiBCMyBp
cyBmcmVlIHRvIGFzc3VtZSB0aGF0CisgICAgLy8gYWZ0ZXIgYWJydXB0IHRlcm1pbmF0aW9uIG9m
IHRoaXMgcHJvY2VkdXJlLCBub25lIG9mIHRoZSBoZWFwIHdpbGwgYmUgcmVhZC4gVGhhdCdzIHVz
dWFsbHkgZmFsc2UsCisgICAgLy8gc28gbWFrZSBzdXJlIHRoYXQgcmVhZHMgY29ycmVzcG9uZHMg
dG8gdGhlIHNldCBvZiB0aGluZ3MgdGhhdCBhcmUgcmVhZGFibGUgYWZ0ZXIgdGhpcyBmdW5jdGlv
bgorICAgIC8vIHRlcm1pbmF0ZXMgYWJydXB0bHkuCiAgICAgYm9vbCBleGl0c1NpZGV3YXlzIHsg
ZmFsc2UgfTsKIAogICAgIC8vIFRydWUgaWYgdGhlIGluc3RydWN0aW9uIG1heSBjaGFuZ2Ugc2Vt
YW50aWNzIGlmIGhvaXN0ZWQgYWJvdmUgc29tZSBjb250cm9sIGZsb3cuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMTk0MDEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw5ICsxNzQsOCBA
QCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBDaGVja0Fk
ZCBleGVjdXRlcywgdGhlIHNlY29uZCBDaGVja0FkZCBjb3VsZCBub3QgaGF2ZSBwb3NzaWJseSB0
YWtlbiBzbG93CiAgICAgLy8gcGF0aC4gVGhlcmVmb3JlLCB0aGUgc2Vjb25kIENoZWNrQWRkJ3Mg
Y2FsbGJhY2sgaXMgaXJyZWxldmFudC4KICAgICAvLwotICAgIC8vIE5vdGUgdGhhdCB0aGUgZmly
c3QgdHdvIGNoaWxkcmVuIG9mIHRoZXNlIG9wZXJhdGlvbnMgaGF2ZSBWYWx1ZVJlcCdzLCBib3Ro
IGFzIGlucHV0IGNvbnN0cmFpbnRzIGFuZAotICAgIC8vIGluIHRoZSByZXBzIHByb3ZpZGVkIHRv
IHRoZSBnZW5lcmF0b3IuIFRoZSBvdXRwdXQgY29uc3RyYWludHMgY291bGQgYmUgYW55dGhpbmcs
IGFuZCBzaG91bGQgbm90IGJlCi0gICAgLy8gaW5zcGVjdGVkIGZvciBtZWFuaW5nLiBJZiB5b3Ug
d2FudCB0byBjYXB0dXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cywgdXNlIHN0YWNrbWFwIGFy
Z3VtZW50cy4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIGZpcnN0IHR3byBjaGlsZHJlbiBvZiB0aGVz
ZSBvcGVyYXRpb25zIGhhdmUgVmFsdWVSZXAncyBhcyBpbnB1dCBjb25zdHJhaW50cyBidXQgZG8K
KyAgICAvLyBub3QgaGF2ZSBvdXRwdXQgY29uc3RyYWludHMuCiAgICAgQ2hlY2tBZGQsCiAgICAg
Q2hlY2tTdWIsCiAgICAgQ2hlY2tNdWwsCkBAIC0xODQsOCArMTgzLDggQEAgZW51bSBPcGNvZGUg
OiBpbnQxNl90IHsKICAgICAvLyBDaGVjayB0aGF0IHNpZGUtZXhpdHMuIFVzZSB0aGUgQ2hlY2tW
YWx1ZSBjbGFzcy4gTGlrZSBDaGVja0FkZCBhbmQgZnJpZW5kcywgdGhpcyBoYXMgYQogICAgIC8v
IHN0YWNrbWFwIHdpdGggYSBnZW5lcmF0aW9uIGNhbGxiYWNrLiBUaGlzIHRha2VzIGFuIGludCBh
cmd1bWVudCB0aGF0IHRoaXMgYnJhbmNoZXMgb24sIHdpdGgKICAgICAvLyBmdWxsIGJyYW5jaCBm
dXNpb24gaW4gdGhlIGluc3RydWN0aW9uIHNlbGVjdG9yLiBBIHRydWUgdmFsdWUganVtcHMgdG8g
dGhlIGdlbmVyYXRvcidzIHNsb3cKLSAgICAvLyBwYXRoLiBOb3RlIHRoYXQgdGhlIHByZWRpY2F0
ZSBjaGlsZCBpcyBoYXMgYm90aCBhbiBpbnB1dCBhbmQgb3V0cHV0IFZhbHVlUmVwLiBUaGUgaW5w
dXQgY29uc3RyYWludAotICAgIC8vIG11c3QgYmUgQW55LCBhbmQgdGhlIG91dHB1dCBjb3VsZCBi
ZSBhbnl0aGluZy4KKyAgICAvLyBwYXRoLiBOb3RlIHRoYXQgdGhlIHByZWRpY2F0ZSBjaGlsZCBp
cyBoYXMgYm90aCBhbiBpbnB1dCBWYWx1ZVJlcC4gVGhlIGlucHV0IGNvbnN0cmFpbnQgbXVzdCBi
ZQorICAgIC8vIFdhcm1BbnkuIEl0IHdpbGwgbm90IGhhdmUgYW4gb3V0cHV0IGNvbnN0cmFpbnQu
CiAgICAgQ2hlY2ssCiAKICAgICAvLyBTU0Egc3VwcG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBT
U0EuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCShyZXZpc2lvbiAxOTQw
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxNSw2ICs0MTUsOCBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAg
ICBjYXNlIENoZWNrTXVsOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIHJlc3VsdC5leGl0c1Np
ZGV3YXlzID0gdHJ1ZTsKKyAgICAgICAgLy8gVGhlIHByb2dyYW0gY291bGQgcmVhZCBhbnl0aGlu
ZyBhZnRlciBleGl0aW5nLCBhbmQgaXQncyBvbiB1cyB0byBkZWNsYXJlIHRoaXMuCisgICAgICAg
IHJlc3VsdC5yZWFkcyA9IEhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVXBzaWxvbjoKICAgICAgICAgcmVzdWx0LndyaXRlc1NTQVN0YXRlID0gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAxOTQwMTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU4OSw3
ICs1NTg5LDcgQEAgdm9pZCB0ZXN0U2ltcGxlQ2hlY2soKQogICAgIGNoZWNrLT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6
ZSgpID09IDEpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwogCiAgICAgICAg
ICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBz
aW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCiAgICAgICAgICAgICAvLyBzYXZlcy4KQEAg
LTU2MjEsNyArNTYyMSw3IEBAIHZvaWQgdGVzdENoZWNrTGVzc1RoYW4oKQogICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgQ0hFQ0soIXBhcmFtcy5zaXplKCkpOwog
CiAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rp
b24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCiAgICAgICAgICAgICAvLyBz
YXZlcy4KQEAgLTU2NjcsNyArNTY2Nyw3IEBAIHZvaWQgdGVzdENoZWNrTWVnYUNvbWJvKCkKICAg
ICBjaGVjay0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIENIRUNLKCFwYXJhbXMu
c2l6ZSgpKTsKIAogICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVz
ZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQogICAgICAg
ICAgICAgLy8gc2F2ZXMuCkBAIC01NzA3LDExICs1NzA3LDExIEBAIHZvaWQgdGVzdENoZWNrQWRk
SW1tKCkKICAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVs
cGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENI
RUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0Nv
bnN0YW50KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLnZhbHVlKCkgPT0gNDIpOwot
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOwor
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzFdLmlzQ29uc3RhbnQoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0udmFs
dWUoKSA9PSA0Mik7CisgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
MzJUb0RvdWJsZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEZQUkluZm86OmZwUmVn
VDEpOwogICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwpAQCAt
NTc0MywxMSArNTc0MywxMSBAQCB2b2lkIHRlc3RDaGVja0FkZEltbUNvbW11dGUoKQogICAgIGNo
ZWNrQWRkLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJd
LmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLmlzQ29uc3RhbnQoKSk7Ci0g
ICAgICAgICAgICBDSEVDSyhwYXJhbXNbM10udmFsdWUoKSA9PSA0Mik7Ci0gICAgICAgICAgICBq
aXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBD
SEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXND
b25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS52YWx1ZSgpID09IDQyKTsK
KyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQ
UkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDQyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAg
ICAgICBqaXQuYWRkRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwog
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC01Nzc5LDExICs1Nzc5
LDExIEBAIHZvaWQgdGVzdENoZWNrQWRkSW1tU29tZVJlZ2lzdGVyKCkKICAgICBjaGVja0FkZC0+
c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigp
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGpp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1szXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hF
Q0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
ICAgICAgICAgICAgIGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAg
ICAgIGppdC5yZXQoKTsKQEAgLTU4MTYsMTEgKzU4MTYsMTEgQEAgdm9pZCB0ZXN0Q2hlY2tBZGQo
KQogICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0g
ICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzJdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLmlzR1BSKCkp
OwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUo
cGFyYW1zWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7
CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsK
KyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQ
UkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJbmZvOjpmcFJl
Z1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOwogICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtNTg0OSwxMSArNTg0OSwxMSBAQCB2
b2lkIHRlc3RDaGVja0FkZDY0KCkKICAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNL
KHBhcmFtc1szXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJs
ZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNv
bnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1szXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkp
OworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwg
RlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUo
cGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5hZGRE
b3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTU5
MjMsMTEgKzU5MjMsMTEgQEAgdm9pZCB0ZXN0Q2hlY2tTdWJJbW0oKQogICAgIGNoZWNrU3ViLT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhw
YXJhbXMuc2l6ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzR1BSKCkp
OwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXNbM10udmFsdWUoKSA9PSA0Mik7Ci0gICAgICAgICAgICBqaXQuY29udmVy
dEludDMyVG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMV0uaXNDb25zdGFudCgp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS52YWx1ZSgpID09IDQyKTsKKyAgICAgICAg
ICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZw
UmVnVDApOwogICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKDQyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBqaXQu
c3ViRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAg
ICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC01OTYwLDExICs1OTYwLDExIEBAIHZv
aWQgdGVzdENoZWNrU3ViQmFkSW1tKCkKICAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAogICAg
ICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
IGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0
KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENI
RUNLKHBhcmFtc1szXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNd
LnZhbHVlKCkgPT0gYmFkSW1tKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJs
ZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigp
KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0NvbnN0YW50KCkpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zWzFdLnZhbHVlKCkgPT0gYmFkSW1tKTsKKyAgICAgICAgICAgIGppdC5j
b252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwog
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGJhZEltbSksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LnN1YkRv
dWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGpp
dC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwpAQCAtNTk5OCwxMSArNTk5OCwxMSBAQCB2b2lkIHRl
c3RDaGVja1N1YigpCiAgICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gNCk7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNb
M10uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1z
WzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
MzJUb0RvdWJsZShwYXJhbXNbM10uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sw
XS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sxXS5pc0dQUigpKTsKKyAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMF0uZ3ByKCksIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1sx
XS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQ
UkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CkBAIC02MDM2LDExICs2
MDM2LDExIEBAIHZvaWQgdGVzdENoZWNrU3ViNjQoKQogICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6
ZSgpID09IDQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlzR1BSKCkpOwotICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzNdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHBhcmFtc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0gICAgICAg
ICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzNdLmdwcigpLCBGUFJJbmZvOjpm
cFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXplKCkgPT0gMik7CisgICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNb
MV0uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
WzBdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMV0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAg
ICAgaml0LnN1YkRvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAg
ICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgaml0LnJl
dCgpOwpAQCAtNjEwOSw5ICs2MTA5LDkgQEAgdm9pZCB0ZXN0Q2hlY2tOZWcoKQogICAgIGNoZWNr
TmVnLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXMuc2l6ZSgpID09IDMpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzJdLmlz
R1BSKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1syXS5n
cHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6ZSgp
ID09IDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAgICAg
ICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBS
ZWdUMSk7CiAgICAgICAgICAgICBqaXQubmVnYXRlRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQ
UkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7
CiAgICAgICAgICAgICBqaXQucmV0KCk7CkBAIC02MTM5LDkgKzYxMzksOSBAQCB2b2lkIHRlc3RD
aGVja05lZzY0KCkKICAgICBjaGVja05lZy0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
ewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAzKTsKLSAgICAgICAg
ICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50
NjRUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtc1sw
XS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNb
MF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0Lm5lZ2F0ZURvdWJs
ZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5l
bWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtNjE3NCwx
MSArNjE3NCwxMSBAQCB2b2lkIHRlc3RDaGVja011bCgpCiAgICAgY2hlY2tNdWwtPnNldEdlbmVy
YXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5z
aXplKCkgPT0gNCk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXNbMl0uaXNHUFIoKSk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXNbM10uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVy
dEludDMyVG9Eb3VibGUocGFyYW1zWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbM10uZ3ByKCksIEZQUkluZm86
OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSAyKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtc1swXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFt
c1sxXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQzMlRvRG91YmxlKHBhcmFtc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAg
ICAgICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwog
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQu
cmV0KCk7CkBAIC02MjE1LDExICs2MjE1LDExIEBAIHZvaWQgdGVzdENoZWNrTXVsTWVtb3J5KCkK
ICAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBh
cmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0dQUigpKTsK
LSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQ
UkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBh
cmFtc1szXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXMuc2l6ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOwor
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNv
bnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTYyNjEsMTEgKzYyNjEsMTEgQEAgdm9p
ZCB0ZXN0Q2hlY2tNdWwyKCkKICAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtc1syXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBh
cmFtc1szXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzNdLnZhbHVl
KCkgPT0gMik7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zWzJd
LmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5zaXpl
KCkgPT0gMik7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXNbMF0uaXNHUFIoKSk7CisgICAgICAg
ICAgICBDSEVDSyhwYXJhbXNbMV0uaXNDb25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtc1sxXS52YWx1ZSgpID09IDIpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMiksIEZQUklu
Zm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0Lm11bERvdWJsZShGUFJJbmZvOjpmcFJlZ1Qx
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1
ZSgpOwpAQCAtNjI5NSwxMSArNjI5NSwxMSBAQCB2b2lkIHRlc3RDaGVja011bDY0KCkKICAgICBj
aGVja011bC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAg
ICAgQ0hFQ0socGFyYW1zLnNpemUoKSA9PSA0KTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1sy
XS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtc1szXS5pc0dQUigpKTsKLSAgICAg
ICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXNbMl0uZ3ByKCksIEZQUkluZm86
OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtc1sz
XS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMuc2l6
ZSgpID09IDIpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zWzBdLmlzR1BSKCkpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zWzFdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJ
bnQ2NFRvRG91YmxlKHBhcmFtc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zWzFdLmdwcigpLCBGUFJJbmZvOjpm
cFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBS
SW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsK
ICAgICAgICAgICAgIGppdC5yZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxOTQwMTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTQ4NCwxNCArOTQ4NCwxMyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgT1NSRXhpdERl
c2NyaXB0b3IqIGV4aXREZXNjcmlwdG9yID0gYXBwZW5kT1NSRXhpdERlc2NyaXB0b3IobG93VmFs
dWUsIGhpZ2hWYWx1ZSk7CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2YWx1
ZS0+bnVtQ2hpbGRyZW4oKTsKICAgICAgICAgdmFsdWUtPmFwcGVuZENvbGRBbnlzKGJ1aWxkRXhp
dEFyZ3VtZW50cyhleGl0RGVzY3JpcHRvciwgb3JpZ2luLmZvckV4aXQsIGxvd1ZhbHVlKSk7CiAK
ICAgICAgICAgU3RhdGUqIHN0YXRlID0gJm1fZnRsU3RhdGU7CiAgICAgICAgIHZhbHVlLT5zZXRH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBleGl0
RGVzY3JpcHRvci0+ZW1pdE9TUkV4aXQoCi0gICAgICAgICAgICAgICAgICAgICpzdGF0ZSwga2lu
ZCwgb3JpZ2luLCBqaXQsIHBhcmFtcywgb2Zmc2V0LCBpc0V4Y2VwdGlvbkhhbmRsZXIpOworICAg
ICAgICAgICAgICAgICAgICAqc3RhdGUsIGtpbmQsIG9yaWdpbiwgaml0LCBwYXJhbXMsIDAsIGlz
RXhjZXB0aW9uSGFuZGxlcik7CiAgICAgICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="292322"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>