<?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>87929</bug_id>
          
          <creation_ts>2012-05-30 23:44:09 -0700</creation_ts>
          <short_desc>DFG CSE should be able to eliminate unnecessary flushes of arguments and captured variables</short_desc>
          <delta_ts>2012-06-02 15:59:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>638029</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-30 23:44:09 -0700</bug_when>
    <thetext>We currently flush SetLocals to captured variables and arguments to inline functions.  But this is not necessary, if the code between the SetLocal and the Flush is speculated to not be clobbering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638036</commentid>
    <comment_count>1</comment_count>
      <attachid>144997</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-30 23:47:50 -0700</bug_when>
    <thetext>Created attachment 144997
work in progress

It appears to do things, but needs a lot more testing.  Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639955</commentid>
    <comment_count>2</comment_count>
      <attachid>145429</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-01 23:05:53 -0700</bug_when>
    <thetext>Created attachment 145429
more

Making progress.

But it still crashes on some of my more awesome tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639969</commentid>
    <comment_count>3</comment_count>
      <attachid>145434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-01 23:49:50 -0700</bug_when>
    <thetext>Created attachment 145434
moar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639999</commentid>
    <comment_count>4</comment_count>
      <attachid>145439</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-02 02:01:58 -0700</bug_when>
    <thetext>Created attachment 145439
bigger patch = better patch... ?...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640077</commentid>
    <comment_count>5</comment_count>
      <attachid>145439</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-02 14:03:57 -0700</bug_when>
    <thetext>Comment on attachment 145439
bigger patch = better patch... ?...

This appears to pass all of the tests on 64-bit.  Now I need to port it to 32-bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640084</commentid>
    <comment_count>6</comment_count>
      <attachid>145460</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-02 15:15:56 -0700</bug_when>
    <thetext>Created attachment 145460
the patch

Both 64-bit and 32-bit work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640086</commentid>
    <comment_count>7</comment_count>
      <attachid>145460</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-02 15:46:57 -0700</bug_when>
    <thetext>Comment on attachment 145460
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640089</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-02 15:59:34 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/119342</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144997</attachid>
            <date>2012-05-30 23:47:50 -0700</date>
            <delta_ts>2012-06-01 23:05:53 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>dontflush_patch_1.diff</filename>
            <type>text/plain</type>
            <size>12098</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MDYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDEyLTA1LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENTRSBzaG91bGQgYmUgYWJsZSB0byBlbGltaW5hdGUgdW5uZWNlc3NhcnkgZmx1c2hlcyBv
ZiBhcmd1bWVudHMgYW5kIGNhcHR1cmVkIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdvcmsgaW4gcHJvZ3Jlc3MuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0
OjpTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQpOgorICAgICAgICAoU2V0TG9jYWxTdG9y
ZUVsaW1pbmF0aW9uUmVzdWx0KToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0TG9j
YWxTdG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9y
bU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTA1LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSGVhcCBzaG91bGQgc3dlZXAgaW5jcmVtZW50
YWxseQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwCShyZXZpc2lvbiAxMTg5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEwLDEwICsxMjEwLDEzIEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKLSAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KAotICAgICAgICAgICAgIWlzRW1wdHlQcmVkaWN0aW9uKAorICAgICAgICBpZiAoaXNF
bXB0eVByZWRpY3Rpb24oCiAgICAgICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVP
cmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBub2Rl
LnNldENhbkV4aXQoZmFsc2UpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwogICAg
ICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAx
MTg5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjE5LDkgKzYxOSwyMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
Tm9Ob2RlOwogICAgIH0KICAgICAKLSAgICAvLyBUaGlzIHJldHVybnMgdGhlIEZsdXNoIG5vZGUg
dGhhdCBpcyBrZWVwaW5nIGEgU2V0TG9jYWwgYWxpdmUuCi0gICAgTm9kZUluZGV4IHNldExvY2Fs
U3RvcmVFbGltaW5hdGlvbihWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCBleHBlY3Rl
ZE5vZGVJbmRleCkKKyAgICBzdHJ1Y3QgU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0IHsK
KyAgICAgICAgU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0KCkKKyAgICAgICAgICAgIDog
bWF5QmVBY2Nlc3NlZChmYWxzZSkKKyAgICAgICAgICAgICwgbWF5RXhpdChmYWxzZSkKKyAgICAg
ICAgICAgICwgbWF5Q2xvYmJlcldvcmxkKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGJvb2wgbWF5QmVBY2Nlc3NlZDsKKyAgICAgICAgYm9vbCBtYXlFeGl0
OworICAgICAgICBib29sIG1heUNsb2JiZXJXb3JsZDsKKyAgICB9OworICAgIFNldExvY2FsU3Rv
cmVFbGltaW5hdGlvblJlc3VsdCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oCisgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBsb2NhbCwgTm9kZUluZGV4IGV4cGVjdGVkTm9kZUluZGV4KQogICAgIHsK
KyAgICAgICAgU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0IHJlc3VsdDsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5v
ZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKICAgICAgICAgICAgIE5vZGUm
IG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKQEAgLTYzMSwyNyArNjQ0LDMyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICAgICAgY2FzZSBGbHVzaDoKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS5sb2NhbCgpID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9Ob2RlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3Nl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUu
dW5saW5rZWRMb2NhbCgpID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9O
b2RlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNl
IFNldExvY2FsOiB7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSAhPSBsb2NhbCkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9
IGV4cGVjdGVkTm9kZUluZGV4KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGhbaW5kZXhdLnJlZkNvdW50KCkgPiAxKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTm9Ob2RlOwotICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIEdldFNjb3BlQ2hhaW46CisgICAgICAgICAgICBjYXNlIENoZWNrQXJn
dW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6
CisgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKKyAgICAgICAgICAg
IGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWxTYWZlOgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRp
b25SZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pID09IGxvY2FsKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9Ob2RlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nl
c3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIFRlYXJPZmZBY3RpdmF0aW9uOgpAQCAtNjYwLDE3ICs2NzgsMTkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVy
IGhlcmUgYW5kIGNoZWNrIGlmIHRoZSBsb2NhbCBxdWFsaWZpZXMgYXMgYW4KICAgICAgICAgICAg
ICAgICAvLyBhcmd1bWVudCByZWdpc3Rlci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBi
dXkgdXMgdmVyeSBsaXR0bGUgc2luY2UKICAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0
ZWFyIG9mZnMgYXJlIHJhcmUgdG8gYmVnaW4gd2l0aC4KLSAgICAgICAgICAgICAgICByZXR1cm4g
Tm9Ob2RlOworICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS5jYW5FeGl0KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5v
ZGUuY2FuRXhpdCgpOworICAgICAgICAgICAgcmVzdWx0Lm1heUNsb2JiZXJXb3JsZCB8PSBtX2dy
YXBoLmNsb2JiZXJzV29ybGQoaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb05v
ZGU7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAvLyBCZSBzYWZlIGlu
IHJlbGVhc2UgbW9kZS4KKyAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1TdWJzdGl0
dXRpb24oRWRnZSYgY2hpbGQsIGJvb2wgYWRkUmVmID0gdHJ1ZSkKQEAgLTg2MSwxNiArODgxLDE4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50
Tm90Q29udmVyZ2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpOwotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkK
LSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2Nh
bCA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCBy
ZXBsYWNlbWVudEluZGV4ID0gc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKGxvY2FsLCBub2RlLmNo
aWxkMSgpLmluZGV4KCkpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50SW5kZXggPT0gTm9O
b2RlKQorICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ub3AoKSAhPSBTZXRM
b2NhbCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFNldExvY2FsU3RvcmVF
bGltaW5hdGlvblJlc3VsdCByZXN1bHQgPQorICAgICAgICAgICAgICAgIHNldExvY2FsU3RvcmVF
bGltaW5hdGlvbihsb2NhbCwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAgICAgICAgIGlm
IChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1bHQubWF5Q2xvYmJlcldvcmxkKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBo
W3JlcGxhY2VtZW50SW5kZXhdOworICAgICAgICAgICAgTm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50Lm9wKCkg
PT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50LnJlZkNvdW50KCkg
PT0gMSk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQuc2hvdWxkR2VuZXJhdGUoKSk7
CisgICAgICAgICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgdXNpbmcgbWF5RXhpdCBhcyBhIGZ1
cnRoZXIgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFn
cyhQaGFudG9tKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBkYXRhTm9kZUluZGV4ID0gcmVwbGFj
ZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoW2RhdGFO
b2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxMTg5MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsMzUgQEAgcHVibGljOgogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6
ZSgpOyArK2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxp
ZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBzdGF0ZS5l
eGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRl
eCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIE5vZGUmIG5vZGUg
PSBtX2dyYXBoW25vZGVJbmRleF07CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
Ym9vbCBlbGltaW5hdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDaGVja0Fy
Z3VtZW50c05vdENyZWF0ZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5UHJl
ZGljdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YXJpYWJsZXMoKS5v
cGVyYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUucmVmQ291bnQo
KSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQ
aGFudG9tKTsKKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd291bGQgYmUgYSBncmVhdCBwbGFj
ZSB0byByZW1vdmUgQ2hlY2tTdHJ1Y3R1cmUncy4KKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChlbGltaW5h
dGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAg
ICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpCiAgICAgICAgICAgICAgICAgICAgIHx8IG1f
Z3JhcGguY2xvYmJlcnNXb3JsZChub2RlKQogICAgICAgICAgICAgICAgICAgICB8fCBub2RlLmhh
c0NvbnN0YW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDExODkzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4NTgsMTYgKzM4NTgsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENy
ZWF0ZWQ6IHsKLSAgICAgICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgIG1faml0
LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90eXBlKSkg
ewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJG
b3Iobm9kZS5jb2RlT3JpZ2luKSksCi0gICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCghaXNF
bXB0eVByZWRpY3Rpb24oCisgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQo
CisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICBt
X2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCisg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgp
OwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExODkzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQwMzIsMTYgKzQwMzIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05v
dENyZWF0ZWQ6IHsKLSAgICAgICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAgICAgICAgIG1f
aml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90eXBl
KSkgewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBBcmd1
bWVudHNFc2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblpl
cm8sCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3Jp
Z2luKSkpKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoIWlzRW1wdHlQcmVkaWN0aW9uKAor
ICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAorICAgICAgICAgICAgICAg
IG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90
eXBlKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBBcmd1bWVudHNF
c2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hU
ZXN0UHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOwogICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lv
biAxMTg5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MSw3ICsxMDUxLDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJc
blJlY292ZXJ5IGZvciBhcmd1bWVudCAlZDogIiwgaSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
Y292ZXJ5LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWkgfHwgKHJlY292ZXJ5LmlzQWxyZWFkeUluUmVnaXN0ZXJGaWxlKCkgfHwgcmVj
b3ZlcnkuaXNDb25zdGFudCgpKSk7CiAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzW2ldID0gcmVjb3Zlcnk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145429</attachid>
            <date>2012-06-01 23:05:53 -0700</date>
            <delta_ts>2012-06-01 23:49:50 -0700</delta_ts>
            <desc>more</desc>
            <filename>dontflush_patch_2.diff</filename>
            <type>text/plain</type>
            <size>23404</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDEyLTA2LTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENTRSBzaG91bGQgYmUgYWJsZSB0byBlbGltaW5hdGUgdW5uZWNlc3NhcnkgZmx1c2hlcyBv
ZiBhcmd1bWVudHMgYW5kIGNhcHR1cmVkIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFNsaWdodCBzcGVlZC11cCBvbiBWOC4g
QmlnIHdpbiAodXAgdG8gNTAlKSBvbiBwcm9ncmFtcyB0aGF0IGlubGluZSB2ZXJ5IHNtYWxsIGZ1
bmN0aW9ucy4KKyAgICAgICAgU3RpbGwgbmVlZHMgbW9yZSB0ZXN0aW5nLgorCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
OjpydW4pOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1NFUGhhc2U6OlNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdDo6U2V0TG9jYWxTdG9y
ZUVsaW1pbmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJl
c3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnNldExvY2FsU3RvcmVFbGltaW5h
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAg
ICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21w
aWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTA2LTAxICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIENGQSBzaG91bGQg
a25vdyB0aGF0IFB1dEJ5VmFsIGNhbiBjbG9iYmVyIHRoZSB3b3JsZApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTg5
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjEwLDEwICsxMjEwLDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENoZWNrQXJn
dW1lbnRzTm90Q3JlYXRlZDoKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAg
IWlzRW1wdHlQcmVkaWN0aW9uKAorICAgICAgICBpZiAoaXNFbXB0eVByZWRpY3Rpb24oCiAgICAg
ICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVP
cmlnaW4pKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwor
ICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBicmVhazsKICAgICAgICAg
CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTE4OTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk4
LDEwICszOTgsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLm9w
KCkgIT0gQ3JlYXRlQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobV9jcmVhdGVzQXJn
dW1lbnRzLmNvbnRhaW5zKHNvdXJjZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9k
ZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLmNvZGVPcmlnaW4pID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihtX2dy
YXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpID09IHZhcmlhYmxlQWNj
ZXNzRGF0YS0+bG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2hpbGQg
b2YgdGhpcyBzdG9yZSBzaG91bGQgcmVhbGx5IGJlIHRoZSBlbXB0eSB2YWx1ZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIE5vZGUgZW1wdHlKU1ZhbHVlKEpTQ29uc3RhbnQsIG5vZGUuY29kZU9y
aWdpbiwgT3BJbmZvKGNvZGVCbG9jaygpLT5hZGRPckZpbmRDb25zdGFudChKU1ZhbHVlKCkpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUpTVmFsdWUucmVmKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBOb2RlSW5kZXggZW1wdHlKU1ZhbHVlSW5kZXggPSBtX2dyYXBoLnNpemUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobm9kZS5jaGlsZDEoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMSgpID0gRWRnZShl
bXB0eUpTVmFsdWVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVu
ZChlbXB0eUpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFw
cGVuZChpbmRleEluQmxvY2ssIGVtcHR5SlNWYWx1ZUluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdG9yZSBpbnRvIGEgVmFyaWFibGVBY2Nlc3NEYXRhKiB0
aGF0IGlzIG1hcmtlZCBhcwogICAgICAgICAgICAgICAgICAgICAvLyBhcmd1bWVudHMgYWxpYXNp
bmcgZm9yIGFuIElubGluZUNhbGxGcmFtZSogdGhhdCBkb2VzIG5vdCBjcmVhdGUKQEAgLTQxMCwx
MSArNDI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3MuIE5vdGUg
YWxzbyB0aGF0IHRoZSBTZXRMb2NhbCBzaG91bGQgYmVjb21lIGRlYWQgYXMgc29vbiBhcwogICAg
ICAgICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIGFsbCB1c2VzIG9mIHRoaXMgdmFyaWFibGUg
d2l0aCBHZXRNeUFyZ3VtZW50c0xlbmd0aCBhbmQKICAgICAgICAgICAgICAgICAgICAgLy8gR2V0
TXlBcmd1bWVudEJ5VmFsLgotICAgICAgICAgICAgICAgICAgICBpZiAobV9hcmd1bWVudHNBbGlh
c2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZC5pc1ZhbGlkKCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMoc291cmNlLmNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNBcmd1bWVudHNBbGlhcyh0cnVlKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50c0FsaWFzaW5nLmZpbmQodmFyaWFi
bGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIGNo
YW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQXJndW1lbnRzQWxpYXModHJ1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAkocmV2aXNpb24gMTE4OTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
U0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw5ICs2MTksMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCi0gICAgLy8gVGhpcyByZXR1cm5z
IHRoZSBGbHVzaCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExvY2FsIGFsaXZlLgotICAgIE5v
ZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBO
b2RlSW5kZXggZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgc3RydWN0IFNldExvY2FsU3RvcmVFbGlt
aW5hdGlvblJlc3VsdCB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCgp
CisgICAgICAgICAgICA6IG1heUJlQWNjZXNzZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1heUV4
aXQoZmFsc2UpCisgICAgICAgICAgICAsIG1heUNsb2JiZXJXb3JsZChmYWxzZSkKKyAgICAgICAg
eworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG1heUJlQWNjZXNzZWQ7CisgICAg
ICAgIGJvb2wgbWF5RXhpdDsKKyAgICAgICAgYm9vbCBtYXlDbG9iYmVyV29ybGQ7CisgICAgfTsK
KyAgICBTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgc2V0TG9jYWxTdG9yZUVsaW1pbmF0
aW9uKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCBleHBlY3RlZE5v
ZGVJbmRleCkKICAgICB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCBy
ZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7
CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CiAg
ICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CkBAIC02MzEsNDYgKzY0NCw1
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgIGNh
c2UgRmx1c2g6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSA9PSBsb2NhbCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAg
ICAgICAgIGlmIChub2RlLnVubGlua2VkTG9jYWwoKSA9PSBsb2NhbCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNj
ZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlmIChub2RlLmxv
Y2FsKCkgIT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGlmIChpbmRleCAhPSBleHBlY3RlZE5vZGVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoW2luZGV4XS5yZWZDb3VudCgpID4g
MSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRTY29wZUNoYWluOgogICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIENoZWNr
QXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5n
dGg6CisgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKKyAgICAgICAg
ICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50QnlWYWxTYWZlOgorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikgPT0gbG9jYWwpCisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgog
ICAgICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgVGVh
ck9mZkFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhY3RpdmF0aW9uIGlzIGJl
aW5nIHRvcm4gb2ZmIHRoZW4gaXQgbWVhbnMgdGhhdCBjYXB0dXJlZCB2YXJpYWJsZXMKICAgICAg
ICAgICAgICAgICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVyIGhlcmUgYW5kIGNoZWNr
IGlmIHRoZSBsb2NhbCBxdWFsaWZpZXMgYXMgYW4KICAgICAgICAgICAgICAgICAvLyBhcmd1bWVu
dCByZWdpc3Rlci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBidXkgdXMgdmVyeSBsaXR0
bGUgc2luY2UKICAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0ZWFyIG9mZnMgYXJlIHJh
cmUgdG8gYmVnaW4gd2l0aC4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAobm9kZS5jYW5FeGl0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE5vTm9kZTsKKyAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5vZGUuY2FuRXhpdCgpOwor
ICAgICAgICAgICAgcmVzdWx0Lm1heUNsb2JiZXJXb3JsZCB8PSBtX2dyYXBoLmNsb2JiZXJzV29y
bGQoaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb05vZGU7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAvLyBCZSBzYWZlIGluIHJlbGVhc2UgbW9kZS4K
KyAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oRWRnZSYgY2hp
bGQsIGJvb2wgYWRkUmVmID0gdHJ1ZSkKQEAgLTg2MSwxNiArODg2LDIyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAg
ICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKLSAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IHZhcmlhYmxlQWNj
ZXNzRGF0YS0+bG9jYWwoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCByZXBsYWNlbWVudEluZGV4
ID0gc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKGxvY2FsLCBub2RlLmNoaWxkMSgpLmluZGV4KCkp
OwotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50SW5kZXggPT0gTm9Ob2RlKQorICAgICAgICAg
ICAgTm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAgICAgICAg
ICAgaWYgKHJlcGxhY2VtZW50Lm9wKCkgIT0gU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIFNl
dExvY2FscyB0aGF0IGNhbiBleGl0OyB3ZSBqdXN0IG5lZWQKKyAgICAgICAgICAgIC8vIHRvIHJl
cGxhY2UgdGhlbSB3aXRoIGFwcHJvcHJpYXRlIHR5cGUgY2hlY2tzLgorICAgICAgICAgICAgaWYg
KHJlcGxhY2VtZW50LmNhbkV4aXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCByZXN1bHQgPQorICAgICAgICAgICAg
ICAgIHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCwgbm9kZS5jaGlsZDEoKS5pbmRleCgp
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1bHQubWF5Q2xv
YmJlcldvcmxkKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9kZSYgcmVw
bGFjZW1lbnQgPSBtX2dyYXBoW3JlcGxhY2VtZW50SW5kZXhdOwogICAgICAgICAgICAgQVNTRVJU
KHJlcGxhY2VtZW50Lm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxh
Y2VtZW50LnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQu
c2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgdXNp
bmcgbWF5RXhpdCBhcyBhIGZ1cnRoZXIgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgbm9kZS5z
ZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBkYXRh
Tm9kZUluZGV4ID0gcmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKICAgICAgICAgICAgIEFT
U0VSVChtX2dyYXBoW2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CShyZXZpc2lvbiAxMTg5MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsMzUgQEAgcHVi
bGljOgogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleElu
QmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgICAg
IGlmICghc3RhdGUuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICAgICAg
Tm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAg
ICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgYm9vbCBlbGltaW5hdGVkID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6IHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKG5vZGUucmVmQ291bnQoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRP
cEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd291
bGQgYmUgYSBncmVhdCBwbGFjZSB0byByZW1vdmUgQ2hlY2tTdHJ1Y3R1cmUncy4KKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGlmIChlbGltaW5hdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxv
Y2spOwogICAgICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpCiAgICAgICAg
ICAgICAgICAgICAgIHx8IG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2RlKQogICAgICAgICAgICAg
ICAgICAgICB8fCBub2RlLmhhc0NvbnN0YW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTE4OTM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxMSw1OCArNTExLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIDEzKSBD
cmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHBy
b3ByaWF0ZSBhbGlhc2VkCi0gICAgLy8gICAgIHJlZ2lzdGVycy4KLSAgICAKLSAgICBpZiAoaGF2
ZUFyZ3VtZW50cykgewotICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5u
dW1iZXJPZlJlY292ZXJpZXMoKTsgKytpbmRleCkgewotICAgICAgICAgICAgY29uc3QgVmFsdWVS
ZWNvdmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOwotICAgICAgICAg
ICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRl
ZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGludCBvcGVyYW5kID0g
ZXhpdC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOwotICAgICAgICAgICAgLy8gRmluZCB0aGUgcmln
aHQgaW5saW5lIGNhbGwgZnJhbWUuCi0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9IDA7Ci0gICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVu
dCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAg
Y3VycmVudDsKLSAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxp
bmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQg
PD0gb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJy
ZW50OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1
bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNS
ZWdpc3RlciksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCBoYXZlQXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lk
Kj4ob3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJh
dGlvbkNyZWF0ZUFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25B
cmdHUFIwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmNhbGwoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSk7
Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwotICAg
ICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVn
VDApOyAvLyBuby1vcCBtb3ZlIG9uIGFsbW9zdCBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBoYXZlQXJndW1lbnRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDE0KSBBZGp1c3QgdGhl
IG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Ug
a25vdworICAgIC8vIDEzKSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNp
bmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vICAgICB0aGF0IGFsbCBuZXcg
Y2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1
dGUKICAgICAvLyAgICAgY291bnRlciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJm
b3JtZWQgT1NSIGV4aXQgYW5kIGNhbGwgZnJhbWVzCiAgICAgLy8gICAgIHRoYXQgd2VyZSBzdGls
bCBleGVjdXRpbmcgdGhlIG9sZCBKSVQgYXQgdGhlIHRpbWUgb2YgYW5vdGhlciBjYWxsIGZyYW1l
J3MKQEAgLTYwMCwxMiArNTQ5LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0
KGNvbnN0IAogICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHMoZXhpdCk7CiAgICAgCi0gICAgLy8g
MTUpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50byBy
ZWdUMC4KLSAgICAKLSAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpCi0gICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwg
R1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotICAgIAotICAgIC8vIDE2KSBGaXggY2Fs
bCBmcmFtZShzKS4KKyAgICAvLyAxNCkgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAgICAK
ICAgICBBU1NFUlQobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVy
czo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKVJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrKSk7
CkBAIC02MzgsMTAgKzU4Miw2MyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQo
Y29uc3QgCiAgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSksIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsg
UmVnaXN0ZXJGaWxlOjpDYWxsZWUpKSk7CiAgICAgfQogICAgIAorICAgIC8vIDE1KSBDcmVhdGUg
YXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0
ZSBhbGlhc2VkCisgICAgLy8gICAgIHJlZ2lzdGVycy4KKyAgICAKKyAgICBpZiAoaGF2ZUFyZ3Vt
ZW50cykgeworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1iZXJP
ZlJlY292ZXJpZXMoKTsgKytpbmRleCkgeworICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVy
eSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOworICAgICAgICAgICAgaWYg
KHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGludCBvcGVyYW5kID0gZXhpdC5v
cGVyYW5kRm9ySW5kZXgoaW5kZXgpOworICAgICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQgaW5s
aW5lIGNhbGwgZnJhbWUuCisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IDA7CisgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGV4
aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAgY3VycmVu
dDsKKyAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxs
RnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0gb3Bl
cmFuZCkgeworICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNS
ZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3Rl
ciksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBo
YXZlQXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIG1faml0LmFk
ZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHMoR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUo
CisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAorICAgICAg
ICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50
cykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAg
bV9qaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
UHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
YXJndW1lbnRzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKAorICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0Zvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1l
bnRzUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIG5vLW9wIG1vdmUgb24gYWxtb3N0IGFsbCBwbGF0
Zm9ybXMuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGhhdmVBcmd1bWVudHMubGluaygmbV9q
aXQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgLy8gMTYpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24g
aW50byByZWdUMC4KKyAgICAKKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCisgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVy
YW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOworICAgIAorICAgIC8vIDE3KSBB
ZGp1c3QgdGhlIGNhbGwgZnJhbWUuCisgICAgCiAgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkKICAgICAgICAgbV9qaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwog
ICAgIAotICAgIC8vIDE3KSBKdW1wIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgYmFzZWxpbmUgSklU
IGNvZGUuCisgICAgLy8gMTgpIEp1bXAgaW50byB0aGUgY29ycmVzcG9uZGluZyBiYXNlbGluZSBK
SVQgY29kZS4KICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoZXhpdC5tX2NvZGVPcmlnaW4pOwogICAgIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IG1faml0LmRlY29kZWRDb2Rl
TWFwRm9yKGJhc2VsaW5lQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTE4OTM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg1OCwxNiArMzg1OCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNr
QXJndW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVkaWN0aW9uKAot
ICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmln
aW4pKS5tX3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAg
ICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1
bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSwKLSAgICAgICAgICAgICAgICAgICAg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgIG1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZCgKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAorICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICBub1Jlc3VsdCht
X2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MTE4OTM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyNCw3ICsxOTI0LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNl
IEpTQ29uc3RhbnQ6CisgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgpOwor
ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICAgICAgLy8g
VGhpcyBzaG91bGQgbmV2ZXIgYmUgbXVzdC1nZW5lcmF0ZS4KKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIC8vIEJ1dCBhcyBhIHJlbGVhc2UtbW9kZSBmYWxsLWJhY2sgbWFr
ZSBpdCB0aGUgZW1wdHkgdmFsdWUuCiAgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxl
SW5kZXgpOwogICAgICAgICBicmVhazsKIApAQCAtNDAzMiwxNiArNDAzOCwxNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVk
aWN0aW9uKAotICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LmNvZGVPcmlnaW4pKS5tX3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAot
ICAgICAgICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwK
LSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5hcmd1bWVudHNSZWdp
c3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCgh
aXNFbXB0eVByZWRpY3Rpb24oCisgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJh
bmQoCisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAg
ICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vblplcm8sCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdp
bikpKSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDExODkzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUxLDcgKzEwNTEs
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coIlxuUmVjb3ZlcnkgZm9yIGFyZ3VtZW50ICVkOiAiLCBpKTsKICAg
ICAgICAgICAgICAgICAgICAgcmVjb3ZlcnkuZHVtcChXVEY6OmRhdGFGaWxlKCkpOwogI2VuZGlm
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaSB8fCAocmVjb3ZlcnkuaXNBbHJlYWR5SW5S
ZWdpc3RlckZpbGUoKSB8fCByZWNvdmVyeS5pc0NvbnN0YW50KCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbaV0gPSByZWNvdmVyeTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145434</attachid>
            <date>2012-06-01 23:49:50 -0700</date>
            <delta_ts>2012-06-02 02:01:58 -0700</delta_ts>
            <desc>moar</desc>
            <filename>dontflush_patch_3.diff</filename>
            <type>text/plain</type>
            <size>28316</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTA2LTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIENTRSBzaG91bGQgYmUgYWJsZSB0byBlbGltaW5hdGUgdW5uZWNlc3NhcnkgZmx1c2hlcyBv
ZiBhcmd1bWVudHMgYW5kIGNhcHR1cmVkIHZhcmlhYmxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc5MjkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFNsaWdodCBzcGVlZC11cCBvbiBWOC4g
QmlnIHdpbiAodXAgdG8gNTAlKSBvbiBwcm9ncmFtcyB0aGF0IGlubGluZSB2ZXJ5IHNtYWxsIGZ1
bmN0aW9ucy4KKyAgICAgICAgU3RpbGwgbmVlZHMgbW9yZSB0ZXN0aW5nLgorCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6cHJlZGljdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6ZG91YmxlRm9ybWF0U3RhdGUpOgorICAgICAgICAo
SlNDOjpERkc6OkFyZ3VtZW50UG9zaXRpb246OnNob3VsZFVzZURvdWJsZUZvcm1hdCk6CisgICAg
ICAgIChBcmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0OjpTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25S
ZXN1bHQpOgorICAgICAgICAoU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FyZ3VtZW50UG9zaXRpb25TdGFydCk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6YXJndW1lbnRQb3NpdGlvblN0YXJ0KToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9T
UkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKwogMjAxMi0wNi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIERGRyBDRkEgc2hvdWxkIGtub3cgdGhhdCBQdXRCeVZhbCBjYW4gY2xvYmJlciB0aGUgd29y
bGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMywxMCArMTIxMywxMyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0gICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdCgKLSAgICAgICAgICAgICFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKGlzRW1w
dHlQcmVkaWN0aW9uKAogICAgICAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3Jp
Z2luKSkubV90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVn
aXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90eXBlKSkgeworICAgICAgICAgICAgbm9kZS5z
ZXRDYW5FeGl0KGZhbHNlKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAko
cmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAorICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGljdGlvbjsgfQorICAgIERvdWJsZUZvcm1h
dFN0YXRlIGRvdWJsZUZvcm1hdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVGb3JtYXRT
dGF0ZTsgfQorICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBkb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0Owor
ICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgUHJlZGljdGVkVHlwZSBtX3ByZWRpY3Rpb247CiAg
ICAgRG91YmxlRm9ybWF0U3RhdGUgbV9kb3VibGVGb3JtYXRTdGF0ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk4LDEwICszOTgsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAo
c291cmNlLm9wKCkgIT0gQ3JlYXRlQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKHNvdXJjZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5hcmd1bWVudHNSZWdp
c3RlckZvcihub2RlLmNvZGVPcmlnaW4pID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpID09IHZh
cmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
aGUgY2hpbGQgb2YgdGhpcyBzdG9yZSBzaG91bGQgcmVhbGx5IGJlIHRoZSBlbXB0eSB2YWx1ZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgZW1wdHlKU1ZhbHVlKEpTQ29uc3RhbnQsIG5v
ZGUuY29kZU9yaWdpbiwgT3BJbmZvKGNvZGVCbG9jaygpLT5hZGRPckZpbmRDb25zdGFudChKU1Zh
bHVlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUpTVmFsdWUucmVmKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZW1wdHlKU1ZhbHVlSW5kZXggPSBtX2dy
YXBoLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobm9kZS5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMSgp
ID0gRWRnZShlbXB0eUpTVmFsdWVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChlbXB0eUpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGVtcHR5SlNWYWx1ZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdG9yZSBpbnRvIGEgVmFyaWFibGVBY2Nl
c3NEYXRhKiB0aGF0IGlzIG1hcmtlZCBhcwogICAgICAgICAgICAgICAgICAgICAvLyBhcmd1bWVu
dHMgYWxpYXNpbmcgZm9yIGFuIElubGluZUNhbGxGcmFtZSogdGhhdCBkb2VzIG5vdCBjcmVhdGUK
QEAgLTQxMCwxMSArNDI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyB0aGlu
Z3MuIE5vdGUgYWxzbyB0aGF0IHRoZSBTZXRMb2NhbCBzaG91bGQgYmVjb21lIGRlYWQgYXMgc29v
biBhcwogICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIGFsbCB1c2VzIG9mIHRoaXMg
dmFyaWFibGUgd2l0aCBHZXRNeUFyZ3VtZW50c0xlbmd0aCBhbmQKICAgICAgICAgICAgICAgICAg
ICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsLgotICAgICAgICAgICAgICAgICAgICBpZiAobV9hcmd1
bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZC5pc1ZhbGlkKCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
c291cmNlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNBcmd1bWVudHNBbGlh
cyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50c0FsaWFzaW5nLmZp
bmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQXJndW1lbnRzQWxp
YXModHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNzAsNiArMTI3MCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJv
b2wKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tpXS0+ZW5zdXJlTG9jYWxzKG5l
d051bUxvY2Fscyk7CiAgICAgfQorICAgIAorICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3Rh
cnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgSW5saW5lU3Rh
Y2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIHByb2Zp
bGVkQmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpIC0gMSwKQEAgLTEyODQsNyArMTI4Niw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICBtX2N1cnJl
bnRJbmRleCA9IDA7CiAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSAwOwogCi0gICAgYWRk
VG9HcmFwaChJbmxpbmVTdGFydCk7CisgICAgYWRkVG9HcmFwaChJbmxpbmVTdGFydCwgT3BJbmZv
KGFyZ3VtZW50UG9zaXRpb25TdGFydCkpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2
aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw5ICs2MTksMjIgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCi0gICAgLy8gVGhpcyByZXR1cm5zIHRoZSBGbHVz
aCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExvY2FsIGFsaXZlLgotICAgIE5vZGVJbmRleCBz
ZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBOb2RlSW5kZXgg
ZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgc3RydWN0IFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJl
c3VsdCB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCgpCisgICAgICAg
ICAgICA6IG1heUJlQWNjZXNzZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1heUV4aXQoZmFsc2Up
CisgICAgICAgICAgICAsIG1heUNsb2JiZXJXb3JsZChmYWxzZSkKKyAgICAgICAgeworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBib29sIG1heUJlQWNjZXNzZWQ7CisgICAgICAgIGJvb2wg
bWF5RXhpdDsKKyAgICAgICAgYm9vbCBtYXlDbG9iYmVyV29ybGQ7CisgICAgfTsKKyAgICBTZXRM
b2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKAorICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCBleHBlY3RlZE5vZGVJbmRleCkK
ICAgICB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCByZXN1bHQ7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CiAgICAgICAgICAg
ICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CkBAIC02MzEsNDYgKzY0NCw1OCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAgICAgIGNhc2UgRmx1c2g6
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSA9PSBsb2NhbCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJl
QWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAgICAgICAgICAgICAgIGlm
IChub2RlLnVubGlua2VkTG9jYWwoKSA9PSBsb2NhbCkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0
cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlmIChub2RlLmxvY2FsKCkgIT0g
bG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChp
bmRleCAhPSBleHBlY3RlZE5vZGVJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5v
Tm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoW2luZGV4XS5yZWZDb3VudCgpID4gMSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5k
ZXg7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBHZXRTY29wZUNoYWluOgogICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4p
ID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIENoZWNrQXJndW1lbnRz
Tm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CisgICAg
ICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKKyAgICAgICAgICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxT
YWZlOgorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUuY29kZU9yaWdpbikgPT0gbG9jYWwpCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOgogICAgICAgICAg
ICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgVGVhck9mZkFyZ3Vt
ZW50czoKICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhY3RpdmF0aW9uIGlzIGJlaW5nIHRvcm4g
b2ZmIHRoZW4gaXQgbWVhbnMgdGhhdCBjYXB0dXJlZCB2YXJpYWJsZXMKICAgICAgICAgICAgICAg
ICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVyIGhlcmUgYW5kIGNoZWNrIGlmIHRoZSBs
b2NhbCBxdWFsaWZpZXMgYXMgYW4KICAgICAgICAgICAgICAgICAvLyBhcmd1bWVudCByZWdpc3Rl
ci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBidXkgdXMgdmVyeSBsaXR0bGUgc2luY2UK
ICAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0ZWFyIG9mZnMgYXJlIHJhcmUgdG8gYmVn
aW4gd2l0aC4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOworICAgICAgICAgICAgICAg
IHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobm9kZS5jYW5FeGl0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsK
KyAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5vZGUuY2FuRXhpdCgpOworICAgICAgICAg
ICAgcmVzdWx0Lm1heUNsb2JiZXJXb3JsZCB8PSBtX2dyYXBoLmNsb2JiZXJzV29ybGQoaW5kZXgp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb05vZGU7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAvLyBCZSBzYWZlIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgICAg
cmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oRWRnZSYgY2hpbGQsIGJvb2wg
YWRkUmVmID0gdHJ1ZSkKQEAgLTg2MSwxNiArODg2LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgaWYgKCF2
YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKLSAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+
bG9jYWwoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCByZXBsYWNlbWVudEluZGV4ID0gc2V0TG9j
YWxTdG9yZUVsaW1pbmF0aW9uKGxvY2FsLCBub2RlLmNoaWxkMSgpLmluZGV4KCkpOwotICAgICAg
ICAgICAgaWYgKHJlcGxhY2VtZW50SW5kZXggPT0gTm9Ob2RlKQorICAgICAgICAgICAgTm9kZSYg
cmVwbGFjZW1lbnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAgICAgICAgICAgaWYgKHJl
cGxhY2VtZW50Lm9wKCkgIT0gU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIFNldExvY2FscyB0
aGF0IGNhbiBleGl0OyB3ZSBqdXN0IG5lZWQKKyAgICAgICAgICAgIC8vIHRvIHJlcGxhY2UgdGhl
bSB3aXRoIGFwcHJvcHJpYXRlIHR5cGUgY2hlY2tzLgorICAgICAgICAgICAgaWYgKHJlcGxhY2Vt
ZW50LmNhbkV4aXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFNldExv
Y2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCByZXN1bHQgPQorICAgICAgICAgICAgICAgIHNldExv
Y2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKTsKKyAgICAg
ICAgICAgIGlmIChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1bHQubWF5Q2xvYmJlcldvcmxk
KQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9kZSYgcmVwbGFjZW1lbnQg
PSBtX2dyYXBoW3JlcGxhY2VtZW50SW5kZXhdOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2Vt
ZW50Lm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50LnJl
ZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQuc2hvdWxkR2Vu
ZXJhdGUoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgdXNpbmcgbWF5RXhp
dCBhcyBhIGZ1cnRoZXIgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERl
ZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBkYXRhTm9kZUluZGV4
ID0gcmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoW2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAxMTkzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsMzUgQEAgcHVibGljOgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBi
bG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewogICAgICAgICAgICAgICAgIGlmICghc3Rh
dGUuaXNWYWxpZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICAgICAgTm9kZUluZGV4
IG5vZGVJbmRleCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgIE5v
ZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgYm9vbCBlbGltaW5hdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFp
c0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS52YXJp
YWJsZXMoKS5vcGVyYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUu
cmVmQ291bnQoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1
bHRGbGFncyhQaGFudG9tKTsKKyAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgd291bGQgYmUgYSBn
cmVhdCBwbGFjZSB0byByZW1vdmUgQ2hlY2tTdHJ1Y3R1cmUncy4KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChlbGltaW5hdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAg
ICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRHZW5lcmF0ZSgpCiAgICAgICAgICAgICAgICAg
ICAgIHx8IG1fZ3JhcGguY2xvYmJlcnNXb3JsZChub2RlKQogICAgICAgICAgICAgICAgICAgICB8
fCBub2RlLmhhc0NvbnN0YW50KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4Miw2ICs2ODIsMTcgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICBBU1NFUlQobV92aXJ0dWFsUmVnaXN0ZXIgPT0gSW52YWxpZFZpcnR1YWxSZWdpc3Rlcik7
CiAgICAgICAgIG1fdmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJlZ2lzdGVyOwogICAgIH0KKyAg
ICAKKyAgICBib29sIGhhc0FyZ3VtZW50UG9zaXRpb25TdGFydCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBJbmxpbmVTdGFydDsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgYXJn
dW1lbnRQb3NpdGlvblN0YXJ0KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNBcmd1bWVudFBv
c2l0aW9uU3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CiAKICAgICBi
b29sIHNob3VsZEdlbmVyYXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTE5MzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxMSw1OCArNTExLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIDEzKSBDcmVh
dGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3By
aWF0ZSBhbGlhc2VkCi0gICAgLy8gICAgIHJlZ2lzdGVycy4KLSAgICAKLSAgICBpZiAoaGF2ZUFy
Z3VtZW50cykgewotICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1i
ZXJPZlJlY292ZXJpZXMoKTsgKytpbmRleCkgewotICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNv
dmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOwotICAgICAgICAgICAg
aWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGludCBvcGVyYW5kID0gZXhp
dC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOwotICAgICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQg
aW5saW5lIGNhbGwgZnJhbWUuCi0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSA9IDA7Ci0gICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9
IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAgY3Vy
cmVudDsKLSAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVD
YWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0g
b3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVu
dHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNSZWdp
c3RlciksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVt
cCBoYXZlQXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgICAgICBB
c3NlbWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4o
b3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAgICBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKAotICAgICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoCi0gICAgICAgICAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlv
bkNyZWF0ZUFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdH
UFIwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmNhbGwoR1BSSW5mbzo6bm9u
QXJnR1BSMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSk7Ci0g
ICAgICAgICAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwotICAgICAg
ICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDAp
OyAvLyBuby1vcCBtb3ZlIG9uIGFsbW9zdCBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBoYXZlQXJndW1lbnRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIG1faml0
LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3Bl
cmFuZCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDE0KSBBZGp1c3QgdGhlIG9s
ZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25v
dworICAgIC8vIDEzKSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNl
IHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vICAgICB0aGF0IGFsbCBuZXcgY2Fs
bHMgaW50byB0aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUK
ICAgICAvLyAgICAgY291bnRlciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3Jt
ZWQgT1NSIGV4aXQgYW5kIGNhbGwgZnJhbWVzCiAgICAgLy8gICAgIHRoYXQgd2VyZSBzdGlsbCBl
eGVjdXRpbmcgdGhlIG9sZCBKSVQgYXQgdGhlIHRpbWUgb2YgYW5vdGhlciBjYWxsIGZyYW1lJ3MK
QEAgLTYwMCwxMiArNTQ5LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNv
bnN0IAogICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHMoZXhpdCk7CiAgICAgCi0gICAgLy8gMTUp
IExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50byByZWdU
MC4KLSAgICAKLSAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCkpCi0gICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJz
OjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BS
SW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotICAgIAotICAgIC8vIDE2KSBGaXggY2FsbCBm
cmFtZShzKS4KKyAgICAvLyAxNCkgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAgICAKICAg
ICBBU1NFUlQobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKVJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrKSk7CkBA
IC02MzgsMTAgKzU4Miw2MyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29u
c3QgCiAgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVz
c0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVn
aXN0ZXJGaWxlOjpDYWxsZWUpKSk7CiAgICAgfQogICAgIAorICAgIC8vIDE1KSBDcmVhdGUgYXJn
dW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBh
bGlhc2VkCisgICAgLy8gICAgIHJlZ2lzdGVycy4KKyAgICAKKyAgICBpZiAoaGF2ZUFyZ3VtZW50
cykgeworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1iZXJPZlJl
Y292ZXJpZXMoKTsgKytpbmRleCkgeworICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYg
cmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOworICAgICAgICAgICAgaWYgKHJl
Y292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGludCBvcGVyYW5kID0gZXhpdC5vcGVy
YW5kRm9ySW5kZXgoaW5kZXgpOworICAgICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQgaW5saW5l
IGNhbGwgZnJhbWUuCisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IDA7CisgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGV4aXQu
bV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAgY3VycmVudDsK
KyAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJh
bWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0gb3BlcmFu
ZCkgeworICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50OworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNSZWdp
c3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3Rlciks
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBoYXZl
QXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIG1faml0LmFkZFB0
cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMo
R1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoCisg
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAorICAgICAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cykp
LAorICAgICAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgbV9q
aXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRy
KEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoYXJn
dW1lbnRzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICAg
ICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0Zvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXIpKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIG5vLW9wIG1vdmUgb24gYWxtb3N0IGFsbCBwbGF0Zm9y
bXMuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGhhdmVBcmd1bWVudHMubGluaygmbV9qaXQp
OworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
Ly8gMTYpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50
byByZWdUMC4KKyAgICAKKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCisgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5k
KSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOworICAgIAorICAgIC8vIDE3KSBBZGp1
c3QgdGhlIGNhbGwgZnJhbWUuCisgICAgCiAgICAgaWYgKGV4aXQubV9jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSkKICAgICAgICAgbV9qaXQuYWRkUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogICAg
IAotICAgIC8vIDE3KSBKdW1wIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgYmFzZWxpbmUgSklUIGNv
ZGUuCisgICAgLy8gMTgpIEp1bXAgaW50byB0aGUgY29ycmVzcG9uZGluZyBiYXNlbGluZSBKSVQg
Y29kZS4KICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gbV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2tGb3IoZXhpdC5tX2NvZGVPcmlnaW4pOwogICAgIFZlY3RvcjxCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IG1faml0LmRlY29kZWRDb2RlTWFw
Rm9yKGJhc2VsaW5lQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTE5MzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzg1OCwxNiArMzg1OCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJn
dW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVkaWN0aW9uKAotICAg
ICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4p
KS5tX3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAg
ICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1bWVu
dHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0gICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVz
KCkub3BlcmFuZCgKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAorICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAg
ICAgICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmFyZ3Vt
ZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICBub1Jlc3VsdChtX2Nv
bXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE5
MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTkyNCw3ICsxOTI0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpT
Q29uc3RhbnQ6CisgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgpOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICAgICAgLy8gVGhp
cyBzaG91bGQgbmV2ZXIgYmUgbXVzdC1nZW5lcmF0ZS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIC8vIEJ1dCBhcyBhIHJlbGVhc2UtbW9kZSBmYWxsLWJhY2sgbWFrZSBp
dCB0aGUgZW1wdHkgdmFsdWUuCiAgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5k
ZXgpOwogICAgICAgICBicmVhazsKIApAQCAtNDAzMiwxNiArNDAzOCwxNSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVkaWN0
aW9uKAotICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pKS5tX3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAg
ICAgICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAotICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5hcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCghaXNF
bXB0eVByZWRpY3Rpb24oCisgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQo
CisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2Rl
LmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAg
ICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
blplcm8sCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCisgICAgICAg
ICAgICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikp
KSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDExOTMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDggKzEwNDAsMjkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICAgICAg
Y2FzZSBJbmxpbmVTdGFydDogewogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAg
ICAgICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRQb3Np
dGlvblN0YXJ0ID0gbm9kZS5hcmd1bWVudFBvc2l0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgICAg
ICBib29sIGFyZ3VtZW50c0FyZUNhcHR1cmVkID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxp
bmVDb2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRz
QXJlQ2FwdHVyZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWVS
ZWNvdmVyeSByZWNvdmVyeSA9IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKG1fdmFyaWFibGVzW2lu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5j
bHVkaW5nVGhpcyhpKV0pOworICAgICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292
ZXJ5OworICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzQXJlQ2FwdHVyZWQpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJl
Z2lzdGVyRmlsZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24mIGFyZ3VtZW50UG9zaXRpb24gPQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubV9hcmd1bWVudFBvc2l0aW9uc1thcmd1
bWVudFBvc2l0aW9uU3RhcnQgKyBpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU291
cmNlIHZhbHVlU291cmNlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50UG9z
aXRpb24uc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShEb3VibGVJblJlZ2lzdGVyRmlsZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0ludDMyUHJlZGljdGlvbihhcmd1bWVudFBv
c2l0aW9uLnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVT
b3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJl
ZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZh
bHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNl
KEJvb2xlYW5JblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1
ZUluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5ID0gY29t
cHV0ZVZhbHVlUmVjb3ZlcnlGb3IodmFsdWVTb3VyY2UpOworICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZWNvdmVyeSBzaG91bGQgcmVmZXIgZWl0aGVy
IHRvIHNvbWV0aGluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4KICAgICAgICAgICAgICAgICAgICAg
Ly8gc3RvcmVkIGludG8gdGhlIHJlZ2lzdGVyIGZpbGUgYXQgdGhlIHJpZ2h0IHBsYWNlLCBvciB0
byBhIGNvbnN0YW50LAogICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgQXJndW1lbnRz
IGNvZGUgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGhhbmRsZSBhbnl0aGluZyBlbHNlLgpAQCAtMTA1
MSw3ICsxMDcyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcblJlY292ZXJ5IGZvciBhcmd1bWVudCAlZDog
IiwgaSk7CiAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5LmR1bXAoV1RGOjpkYXRhRmlsZSgp
KTsKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWkgfHwgKHJlY292ZXJ5Lmlz
QWxyZWFkeUluUmVnaXN0ZXJGaWxlKCkgfHwgcmVjb3ZlcnkuaXNDb25zdGFudCgpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2ldID0gcmVjb3Zlcnk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145439</attachid>
            <date>2012-06-02 02:01:58 -0700</date>
            <delta_ts>2012-06-02 15:15:56 -0700</delta_ts>
            <desc>bigger patch = better patch... ?...</desc>
            <filename>dontflush_patch_5.diff</filename>
            <type>text/plain</type>
            <size>38719</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MzE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOSBA
QAorMjAxMi0wNi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBDU0Ugc2hvdWxkIGJlIGFibGUgdG8gZWxpbWluYXRlIHVubmVjZXNzYXJ5IGZsdXNoZXMg
b2YgYXJndW1lbnRzIGFuZCBjYXB0dXJlZCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTbGlnaHQgc3BlZWQtdXAgb24gVjgu
IEJpZyB3aW4gKHVwIHRvIDUwJSkgb24gcHJvZ3JhbXMgdGhhdCBpbmxpbmUgdmVyeSBzbWFsbCBm
dW5jdGlvbnMuCisgICAgICAgIFN0aWxsIG5lZWRzIG1vcmUgdGVzdGluZyEhCisgICAgICAgIAor
ICAgICAgICBUaGlzIHJlcXVpcmVkIGEgYnVuY2ggb2YgY2hhbmdlczoKKyAgICAgICAgCisgICAg
ICAgIC0gVGhlIG9idmlvdXMgY2hhbmdlIGlzIG1ha2luZyBDU0UgZXNzZW50aWFsbHkgaWdub3Jl
IHdoZXRoZXIgb3Igbm90IHRoZSBzZXQgb2YKKyAgICAgICAgICBvcGVyYXRpb25zIGJldHdlZW4g
dGhlIEZsdXNoIGFuZCB0aGUgU2V0TG9jYWwgY2FuIGV4aXQsIGFuZCBpbnN0ZWFkIGZvY3VzIG9u
IHdoZXRoZXIgb3IKKyAgICAgICAgICBub3QgdGhhdCBzZXQgb2Ygb3BlcmF0aW9ucyBjYW4gY2xv
YmJlciB0aGUgd29ybGQgb3IgYWNjZXNzIGxvY2FsIHZhcmlhYmxlcy4gVGhpcyBjb2RlCisgICAg
ICAgICAgaXMgbm93IHJlZmFjdG9yZWQgdG8gcmV0dXJuIGEgc2V0IG9mIGZsYWdzIGluZGljYXRp
bmcgYW55IG9mIHRoZXNlIGV2ZW50cywgYW5kIHRoZSBDU0UKKyAgICAgICAgICBkZWNpZGVzIHdo
YXQgdG8gZG8gYmFzZWQgb24gdGhvc2UgZmxhZ3MuIElmIHRoZSBzZXQgb2Ygb3BlcmF0aW9ucyBp
cyBub24tY2xvYmJlcmluZworICAgICAgICAgIGFuZCBub24tYWNjZXNzaW5nLCB0aGVuIHRoZSBG
bHVzaCBpcyB0dXJuZWQgaW50byBhIFBoYW50b20gb24gdGhlIGNoaWxkIG9mIHRoZQorICAgICAg
ICAgIFNldExvY2FsLiBUaGlzIGV4cGFuZHMgdGhlIGxpdmVuZXNzIG9mIHRoZSByZWxldmFudCB2
YXJpYWJsZSBidXQgdmlydHVhbGx5IGd1YXJhbnRlZXMKKyAgICAgICAgICB0aGF0IGl0IHdpbGwg
YmUgcmVnaXN0ZXIgYWxsb2NhdGVkIGFuZCBub3QgZmx1c2hlZCB0byB0aGUgc3RhY2suIFNvLCB5
ZWFoLCB0aGlzIHBhdGNoCisgICAgICAgICAgaXMgYSBsb3Qgb2Ygd29yayB0byBzYXZlIGEgZmV3
IHN0b3JlcyB0byB0aGUgc3RhY2suCisgICAgICAgIAorICAgICAgICAtIFByZXZpb3VzbHksIENo
ZWNrQXJndW1lbnRzTm90Q3JlYXRlZCB3YXMgb3B0aW1pemVkICJsYXppbHkiIGluIHRoYXQgeW91
IG9ubHkga25ldyBpZgorICAgICAgICAgIGl0IHdhcyBhIG5vLW9wIGlmIHlvdSB3ZXJlIGhvbGRp
bmcgb250byBhIENGQSBhYnN0cmFjdCBzdGF0ZS4gQnV0IHRoaXMgd291bGQgbWFrZSB0aGUKKyAg
ICAgICAgICBDU0UgYWN0IHBlc3NpbWlzdGljYWxseSwgc2luY2UgaXQgZG9lc24ndCB1c2UgdGhl
IENGQS4gSGVuY2UsIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUKKyAgICAgICAgICBjb25zdGFudCBm
b2xkaW5nIHBoYXNlIGludG8gc29tZXRoaW5nIG1vcmUgYnJvYWQ7IGl0IG5vdyBmaXhlcyB1cAor
ICAgICAgICAgIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCBub2RlcyBieSB0dXJuaW5nIHRoZW0g
aW50byBwaGFudG9tcyBpZiBpdCBrbm93cyB0aGF0IHRoZXkgYXJlCisgICAgICAgICAgbm8tb3Bz
LgorICAgICAgICAKKyAgICAgICAgLSBBcmd1bWVudHMgc2ltcGxpZmljYXRpb24gd2FzIHByZXZp
b3VzbHkgcmVseWluZyBvbiB0aGlzIHZlcnkgc3RyYW5nZSBQaGFudG9tQXJndW1lbnRzCisgICAg
ICAgICAgbm9kZSwgd2hpY2ggaGFkIHR3byBkaWZmZXJlbnQgbWVhbmluZ3M6IGZvciBub3JtYWwg
ZXhlY3V0aW9uIGl0IG1lYW50IHRoZSBlbXB0eSB2YWx1ZQorICAgICAgICAgIGJ1dCBmb3IgT1NS
IGV4aXQgaXQgbWVhbnQgdGhhdCB0aGUgYXJndW1lbnRzIHNob3VsZCBiZSByZWlmaWVkLiBUaGlz
IHByb2R1Y2VzIHByb2JsZW1zCisgICAgICAgICAgd2hlbiBzZXQgU2V0TG9jYWxzIHRvIHRoZSBj
YXB0dXJlZCBhcmd1bWVudHMgcmVnaXN0ZXJzIGFyZSBDU0UnZCBhd2F5LCBzaW5jZSB3ZSdkIGJl
CisgICAgICAgICAgdHJpZ2dlcmluZyByZWlmaWNhdGlvbiBvZiBhcmd1bWVudHMgd2l0aG91dCBo
YXZpbmcgaW5pdGlhbGl6ZWQgdGhlIGFyZ3VtZW50cyByZWdpc3RlcnMKKyAgICAgICAgICB0byBl
bXB0eS4gVGhlIGNsZWFuZXN0IHNvbHV0aW9uIHdhcyB0byBmaXggUGhhbnRvbUFyZ3VtZW50cyB0
byBoYXZlIG9uZSBtZWFuaW5nOgorICAgICAgICAgIG5hbWVseSwgYXJndW1lbnRzIHJlaWZpY2F0
aW9uIG9uIE9TUiBleGl0LiBIZW5jZSwgdGhpcyBwYXRjaCBjaGFuZ2VzIGFyZ3VtZW50cworICAg
ICAgICAgIHNpbXBsaWZpY2F0aW9uIHRvIGNoYW5nZSBTZXRMb2NhbCBvZiBDcmVhdGVBcmd1bWVu
dHMgb24gdGhlIGFyZ3VtZW50cyByZWdpc3RlcnMgdG8gYmUKKyAgICAgICAgICBhIFNldExvY2Fs
IG9mIEVtcHR5LgorICAgICAgICAKKyAgICAgICAgLSBBcmd1bWVudCB2YWx1ZSByZWNvdmVyaWVz
IHdlcmUgcHJldmlvdXNseSBkZXJpdmVkIGZyb20gdGhlIHZhbHVlIHNvdXJjZSBvZiB0aGUKKyAg
ICAgICAgICBhcmd1bWVudHMgYXQgdGhlIElubGluZVN0YXJ0LiBCdXQgdGhhdCByZWxpZXMgb24g
YWxsIFNldExvY2FscyB0byBhcmd1bWVudHMgaGF2aW5nCisgICAgICAgICAgYmVlbiBmbHVzaGVk
LiBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgY291bGQgaGF2ZSBlbGlkZWQgdGhlIFNldExvY2FsIHRv
IHRoZSBhcmd1bWVudHMKKyAgICAgICAgICBhdCB0aGUgY2FsbHNpdGUgYmVjYXVzZSB0aGVyZSB3
ZXJlIHN1YnNlcXVlbnQgU2V0TG9jYWxzIHRvIHRoZSBhcmd1bWVudHMgaW5zaWRlIG9mIHRoZQor
ICAgICAgICAgIGNhbGxlZSwgaW4gd2hpY2ggY2FzZSB0aGUgSW5saW5lU3RhcnQgd291bGQgZ2V0
IHRoZSB3cm9uZyBpbmZvcm1hdGlvbi4gSGVuY2UsIHRoaXMKKyAgICAgICAgICBwYXRjaCBjaGFu
Z2VzIGFyZ3VtZW50IHZhbHVlIHJlY292ZXJ5IGNvbXB1dGF0aW9uIHRvIG9wZXJhdGUgb3ZlciB0
aGUgQXJndW1lbnRQb3NpdGlvbnMKKyAgICAgICAgICBkaXJlY3RseS4KKyAgICAgICAgCisgICAg
ICAgIC0gQnV0IHRoYXQgZG9lc24ndCBhY3R1YWxseSB3b3JrLCBiZWNhdXNlIHByZXZpb3NseSwg
dGhlcmUgd2FzIG5vIHdheSB0byBsaW5rIGFuCisgICAgICAgICAgSW5saW5lU3RhcnQgYmFjayB0
byB0aGUgY29ycmVzcG9uZGluZyBBcmd1bWVudFBvc2l0aW9ucywgYXQgbGVhc3Qgbm90IHdpdGhv
dXQgc29tZQorICAgICAgICAgIHVnbGluZXNzLiBTbyB0aGlzIHBhdGNoIGluc3RhdGVzIHRoZSBy
dWxlIHRoYXQgdGhlIG1fYXJndW1lbnRQb3NpdGlvbnMgdmVjdG9yIGNvbnNpc3RzCisgICAgICAg
ICAgb2YgZGlzam9pbnQgc3Vic2VxdWVuY2VzIHN1Y2ggdGhhdCBlYWNoIHN1YnNlcXVlbmNlIGNv
cnJlc3BvbmRzIHRvIGFuIGlubGluZSBjYWxsc2l0ZQorICAgICAgICAgIGFuZCBjYW4gYmUgaWRl
bnRpZmllZCBieSBpdHMgZmlyc3QgaW5kZXgsIGFuZCB3aXRoaW4gZWFjaCBzdWJzZXF1ZW5jZSBh
cmUgdGhlCisgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbnMgb2YgYWxsIG9mIHRoZSBhcmd1bWVu
dHMgb3JkZXJlZCBieSBhcmd1bWVudCBpbmRleC4gVGhpcyByZXF1aXJlZAorICAgICAgICAgIGZs
aXBwaW5nIHRoZSBvcmRlciBpbiB3aGljaCBBcmd1bWVudFBvc2l0aW9ucyBhcmUgYWRkZWQgdG8g
dGhlIHZlY3RvciwgYW5kIGdpdmluZworICAgICAgICAgIElubGluZVN0YXJ0IGFuIG9wZXJhbmQg
dGhhdCBpbmRpY2F0ZXMgdGhlIHN0YXJ0IG9mIHRoYXQgaW5saW5lIGNhbGxzaXRlJ3MKKyAgICAg
ICAgICBBcmd1bWVudFBvc2l0aW9uIHN1YnNlcXVlbmNlLgorICAgICAgICAKKyAgICAgICAgLSBU
aGlzIHBhdGNoIGFsc28gcmV2ZWFsZWQgYSBuYXN0eSBidWcgaW4gdGhlIHJlaWZpY2F0aW9uIG9m
IGFyZ3VtZW50cyBpbiBpbmxpbmUgY2FsbAorICAgICAgICAgIGZyYW1lcyBvbiBPU1IgZXhpdC4g
U2luY2UgdGhlIHJlaWZpY2F0aW9uIHdhcyBoYXBwZW5pbmcgYWZ0ZXIgdGhlIHZhbHVlcyBvZiB2
aXJ0dWFsCisgICAgICAgICAgcmVnaXN0ZXJzIHdlcmUgcmVjb3ZlcmVkLCB0aGUgdmFsdWUgcmVj
b3ZlcmllcyBvZiB0aGUgaW5saW5lIGFyZ3VtZW50cyB3ZXJlIHdyb25nLgorICAgICAgICAgIEhl
bmNlIHVzaW5nIG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMgaXMgd3JvbmcuIEZvciBl
eGFtcGxlIGEgdmFsdWUgcmVjb3ZlcnkKKyAgICAgICAgICBtaWdodCBzYXkgdGhhdCB5b3UgaGF2
ZSB0byBib3ggYSBkb3VibGUsIGJ1dCBpZiB3ZSBoYWQgYWxyZWFkeSBib3hlZCBpdCB0aGVuIGJv
eGluZworICAgICAgICAgIGl0IGEgc2Vjb25kIHRpbWUgd2lsbCByZXN1bHQgaW4gZ2FyYmFnZS4g
VGhlIHNwZWNpZmljIGNhc2Ugb2YgdGhpcyBidWcgd2FzIHRoaXMgcGF0Y2gKKyAgICAgICAgICB1
bmNvdmVyZWQgd2FzIHRoYXQgbm93IGl0IGlzIHBvc3NpYmxlIGZvciBhbiBpbmxpbmUgY2FsbCBm
cmFtZSB0byBub3QgaGF2ZSBhbnkgdmFsaWQKKyAgICAgICAgICB2YWx1ZSByZWNvdmVyaWVzIGZv
ciBhbnkgaW5saW5lIGFyZ3VtZW50cywgaWYgdGhlIG9wdGltaXphdGlvbiBlbGlkZXMgYWxsIGFy
Z3VtZW50CisgICAgICAgICAgZmx1c2hlcywgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBvcHRpbWl6
aW5nIGF3YXkgYXJndW1lbnRzIGNyZWF0aW9uLiBUaGVuIE9TUiBleGl0CisgICAgICAgICAgd291
bGQgdHJ5IHRvIHJlY292ZXIgdGhlIGFyZ3VtZW50cyB1c2luZyB0aGUgaW5saW5lIGNhbGwgZnJh
bWUsIHdoaWNoIGhhZCBib2d1cworICAgICAgICAgIGluZm9ybWF0aW9uLCBhbmQgaHVtb3JvdXMg
Y3Jhc2hlcyB3b3VsZCBlbnN1ZS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIGJ5IG1vdmlu
ZworICAgICAgICAgIGFyZ3VtZW50cyByZWlmaWNhdGlvbiB0byBhZnRlciBjYWxsIGZyYW1lIHJl
aWZpY2F0aW9uLCBzbyB0aGF0IGFyZ3VtZW50cyByZWlmaWNhdGlvbgorICAgICAgICAgIGNhbiBh
bHdheXMgdXNlIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cyBpbnN0ZWFkIG9mIG9wZXJhdGlvbkNy
ZWF0ZUlubGluZWRBcmd1bWVudHMuCisgICAgICAgIAorICAgICAgICAtIFRoaXMgcGF0Y2ggbWF5
IHR1cm4gYSBGbHVzaCBpbnRvIGEgUGhhbnRvbS4gVGhhdCdzIGtpbmQgb2YgdGhlIHdob2xlIHBv
aW50LiBCdXQgdGhhdAorICAgICAgICAgIGJyb2tlIGZvcndhcmQgc3BlY3VsYXRpb24gY2hlY2tz
LCB3aGljaCBrbmV3IHRvIGxvb2sgZm9yIGEgRmx1c2ggcHJpb3IgdG8gYSBTZXRMb2NhbAorICAg
ICAgICAgIGJ1dCBkaWRuJ3Qga25vdyB0aGF0IHRoZXJlIGNvdWxkIGFsdGVybmF0aXZlbHkgYmUg
YSBQaGFudG9tIGluIHBsYWNlIG9mIHRoZSBGbHVzaC4KKyAgICAgICAgICBUaGlzIHBhdGNoIGZp
eGVzIHRoYXQgYnkgYXVnbWVudGluZyB0aGUgZm9yd2FyZCBzcGVjdWxhdGlvbiBjaGVjayBsb2dp
Yy4KKyAgICAgICAgCisgICAgICAgIC0gRmluYWxseSwgaW4gdGhlIHByb2Nlc3Mgb2YgaGF2aW5n
IGZ1biB3aXRoIGFsbCBvZiB0aGUgYWJvdmUsIEkgcmVhbGl6ZWQgdGhhdCBteSBERkcKKyAgICAg
ICAgICB2YWxpZGF0aW9uIHdhcyBub3QgYWN0dWFsbHkgcnVubmluZyBvbiBldmVyeSBwaGFzZSBs
aWtlIEkgaGFkIG9yaWdpbmFsbHkgZGVzaWduZWQgaXQKKyAgICAgICAgICB0by4gSW4gZmFjdCBp
dCB3YXMgb25seSBydW5uaW5nIGp1c3QgYWZ0ZXIgYnl0ZWNvZGUgcGFyc2luZy4gSSBpbml0aWFs
bHkgdHJpZWQgdG8KKyAgICAgICAgICBtYWtlIGl0IHJ1biBpbiBldmVyeSBwaGFzZSBidXQgZm91
bmQgdGhhdCB0aGlzIGNhdXNlcyBzb21lIHRlc3RzIHRvIHRpbWVvdXQKKyAgICAgICAgICAoc3Bl
Y2lmaWNhbGx5IHRoZSBldmlsIGZ1enppbmcgb25lcyksIHNvIEkgZGVjaWRlZCBvbiBhIGNvbXBy
b21pc2Ugd2hlcmU6IChpKSBpbgorICAgICAgICAgIHJlbGVhc2UgbW9kZSB2YWxpZGF0aW9uIG5l
dmVyIHJ1bnMsIChpaSkgaW4gZGVidWcgbW9kZSB2YWxpZGF0aW9uIHdpbGwgcnVuIGp1c3QKKyAg
ICAgICAgICBhZnRlciBwYXJzaW5nIGFuZCBqdXN0IGJlZm9yZSB0aGUgYmFja2VuZCwgYW5kIChp
aWkpIGl0J3MgcG9zc2libGUgd2l0aCBhIHNpbXBsZQorICAgICAgICAgIHN3aXRjaCB0byBlbmFi
bGUgdmFsaWRhdGlvbiB0byBydW4gb24gZXZlcnkgcGhhc2UuCisKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpwcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpBcmd1bWVudFBvc2l0aW9uOjpkb3VibGVGb3JtYXRTdGF0ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QXJndW1lbnRQb3NpdGlvbjo6c2hvdWxkVXNlRG91YmxlRm9ybWF0KToKKyAgICAgICAgKEFy
Z3VtZW50UG9zaXRpb24pOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRy
eSk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
U0VQaGFzZTo6U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0OjpTZXRMb2NhbFN0b3JlRWxp
bWluYXRpb25SZXN1bHQpOgorICAgICAgICAoU2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0
KToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9u
KToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAg
ICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNBcmd1bWVudFBvc2l0aW9uU3RhcnQpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmFyZ3VtZW50UG9zaXRpb25TdGFydCk6CisgICAgICAgICogZGZnL0RGR09TUkV4
aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHUGhhc2UuY3BwOgorICAgICAgICAoREZHKToK
KyAgICAgICAgKiBkZmcvREZHUGhhc2UuaDoKKyAgICAgICAgKFBoYXNlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2spOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKwogMjAxMi0wNi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIERGRyBDRkEgc2hvdWxkIGtub3cgdGhhdCBQdXRCeVZhbCBjYW4gY2xvYmJlciB0aGUgd29y
bGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMywxMCArMTIxMywxMyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0gICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdCgKLSAgICAgICAgICAgICFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKGlzRW1w
dHlQcmVkaWN0aW9uKAogICAgICAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQoCi0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3Jp
Z2luKSkubV90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVn
aXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90eXBlKSkgeworICAgICAgICAgICAgbm9kZS5z
ZXRDYW5FeGl0KGZhbHNlKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAko
cmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAorICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGljdGlvbjsgfQorICAgIERvdWJsZUZvcm1h
dFN0YXRlIGRvdWJsZUZvcm1hdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVGb3JtYXRT
dGF0ZTsgfQorICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBkb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0Owor
ICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgUHJlZGljdGVkVHlwZSBtX3ByZWRpY3Rpb247CiAg
ICAgRG91YmxlRm9ybWF0U3RhdGUgbV9kb3VibGVGb3JtYXRTdGF0ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlm
aWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk4LDEwICszOTgsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAo
c291cmNlLm9wKCkgIT0gQ3JlYXRlQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobV9j
cmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKHNvdXJjZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NE
YXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5hcmd1bWVudHNSZWdp
c3RlckZvcihub2RlLmNvZGVPcmlnaW4pID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpID09IHZh
cmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
aGUgY2hpbGQgb2YgdGhpcyBzdG9yZSBzaG91bGQgcmVhbGx5IGJlIHRoZSBlbXB0eSB2YWx1ZS4K
KyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgZW1wdHlKU1ZhbHVlKEpTQ29uc3RhbnQsIG5v
ZGUuY29kZU9yaWdpbiwgT3BJbmZvKGNvZGVCbG9jaygpLT5hZGRPckZpbmRDb25zdGFudChKU1Zh
bHVlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUpTVmFsdWUucmVmKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZW1wdHlKU1ZhbHVlSW5kZXggPSBtX2dy
YXBoLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobm9kZS5j
aGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMSgp
ID0gRWRnZShlbXB0eUpTVmFsdWVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZChlbXB0eUpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGVtcHR5SlNWYWx1ZUluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdG9yZSBpbnRvIGEgVmFyaWFibGVBY2Nl
c3NEYXRhKiB0aGF0IGlzIG1hcmtlZCBhcwogICAgICAgICAgICAgICAgICAgICAvLyBhcmd1bWVu
dHMgYWxpYXNpbmcgZm9yIGFuIElubGluZUNhbGxGcmFtZSogdGhhdCBkb2VzIG5vdCBjcmVhdGUK
QEAgLTQxMCwxMSArNDI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyB0aGlu
Z3MuIE5vdGUgYWxzbyB0aGF0IHRoZSBTZXRMb2NhbCBzaG91bGQgYmVjb21lIGRlYWQgYXMgc29v
biBhcwogICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIGFsbCB1c2VzIG9mIHRoaXMg
dmFyaWFibGUgd2l0aCBHZXRNeUFyZ3VtZW50c0xlbmd0aCBhbmQKICAgICAgICAgICAgICAgICAg
ICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsLgotICAgICAgICAgICAgICAgICAgICBpZiAobV9hcmd1
bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZC5pc1ZhbGlkKCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFpbnMo
c291cmNlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNBcmd1bWVudHNBbGlh
cyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50c0FsaWFzaW5nLmZp
bmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQXJndW1lbnRzQWxp
YXModHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNzAsNiArMTI3MCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJv
b2wKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tpXS0+ZW5zdXJlTG9jYWxzKG5l
d051bUxvY2Fscyk7CiAgICAgfQorICAgIAorICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9uU3Rh
cnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgSW5saW5lU3Rh
Y2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIHByb2Zp
bGVkQmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpIC0gMSwKQEAgLTEyODQsNyArMTI4Niw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICBtX2N1cnJl
bnRJbmRleCA9IDA7CiAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSAwOwogCi0gICAgYWRk
VG9HcmFwaChJbmxpbmVTdGFydCk7CisgICAgYWRkVG9HcmFwaChJbmxpbmVTdGFydCwgT3BJbmZv
KGFyZ3VtZW50UG9zaXRpb25TdGFydCkpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7CiAg
ICAgCkBAIC0yODQzLDcgKzI4NDUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRy
eTo6SW5saW5lCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1Rv
cCkKIHsKICAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7IGktLTspIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOyArK2kpIHsKICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVu
dFBvc2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3NpdGlvbigpKTsKICAgICAgICAgQXJndW1lbnRQ
b3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2Fy
Z3VtZW50UG9zaXRpb25zLmxhc3QoKTsKICAgICAgICAgbV9hcmd1bWVudFBvc2l0aW9uc1tpXSA9
IGFyZ3VtZW50UG9zaXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw5ICs2MTksMjIgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCi0gICAgLy8gVGhpcyBy
ZXR1cm5zIHRoZSBGbHVzaCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExvY2FsIGFsaXZlLgot
ICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVhbFJlZ2lzdGVyIGxv
Y2FsLCBOb2RlSW5kZXggZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgc3RydWN0IFNldExvY2FsU3Rv
cmVFbGltaW5hdGlvblJlc3VsdCB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJl
c3VsdCgpCisgICAgICAgICAgICA6IG1heUJlQWNjZXNzZWQoZmFsc2UpCisgICAgICAgICAgICAs
IG1heUV4aXQoZmFsc2UpCisgICAgICAgICAgICAsIG1heUNsb2JiZXJXb3JsZChmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG1heUJlQWNjZXNzZWQ7
CisgICAgICAgIGJvb2wgbWF5RXhpdDsKKyAgICAgICAgYm9vbCBtYXlDbG9iYmVyV29ybGQ7Cisg
ICAgfTsKKyAgICBTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgc2V0TG9jYWxTdG9yZUVs
aW1pbmF0aW9uKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCBleHBl
Y3RlZE5vZGVJbmRleCkKICAgICB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJl
c3VsdCByZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBp
LS07KSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQo
aSk7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CkBAIC02MzEsNDYg
KzY0NCw1OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAgICAg
ICAgIGNhc2UgRmx1c2g6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSA9PSBsb2Nh
bCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgogICAg
ICAgICAgICAgICAgIGlmIChub2RlLnVubGlua2VkTG9jYWwoKSA9PSBsb2NhbCkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1h
eUJlQWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlmIChu
b2RlLmxvY2FsKCkgIT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGlmIChpbmRleCAhPSBleHBlY3RlZE5vZGVJbmRleCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJlQWNj
ZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoW2luZGV4XS5yZWZDb3Vu
dCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vz
c2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRTY29wZUNoYWluOgogICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlckZvcihu
b2RlLmNvZGVPcmlnaW4pID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9O
b2RlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVu
dHNMZW5ndGg6CisgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToKKyAg
ICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY2FzZSBHZXRN
eUFyZ3VtZW50QnlWYWxTYWZlOgorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tl
ZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikgPT0gbG9jYWwpCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1l
bnRzOgogICAgICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNh
c2UgVGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhY3RpdmF0aW9u
IGlzIGJlaW5nIHRvcm4gb2ZmIHRoZW4gaXQgbWVhbnMgdGhhdCBjYXB0dXJlZCB2YXJpYWJsZXMK
ICAgICAgICAgICAgICAgICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVyIGhlcmUgYW5k
IGNoZWNrIGlmIHRoZSBsb2NhbCBxdWFsaWZpZXMgYXMgYW4KICAgICAgICAgICAgICAgICAvLyBh
cmd1bWVudCByZWdpc3Rlci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBidXkgdXMgdmVy
eSBsaXR0bGUgc2luY2UKICAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0ZWFyIG9mZnMg
YXJlIHJhcmUgdG8gYmVnaW4gd2l0aC4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS5jYW5FeGl0KCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5vZGUuY2FuRXhp
dCgpOworICAgICAgICAgICAgcmVzdWx0Lm1heUNsb2JiZXJXb3JsZCB8PSBtX2dyYXBoLmNsb2Ji
ZXJzV29ybGQoaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb05vZGU7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAvLyBCZSBzYWZlIGluIHJlbGVhc2Ug
bW9kZS4KKyAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24oRWRn
ZSYgY2hpbGQsIGJvb2wgYWRkUmVmID0gdHJ1ZSkKQEAgLTg2MSwxNiArODg2LDIyIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29udmVy
Z2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKLSAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IHZhcmlh
YmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCByZXBsYWNlbWVu
dEluZGV4ID0gc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKGxvY2FsLCBub2RlLmNoaWxkMSgpLmlu
ZGV4KCkpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50SW5kZXggPT0gTm9Ob2RlKQorICAg
ICAgICAgICAgTm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOworICAg
ICAgICAgICAgaWYgKHJlcGxhY2VtZW50Lm9wKCkgIT0gU2V0TG9jYWwpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVt
b3ZlIFNldExvY2FscyB0aGF0IGNhbiBleGl0OyB3ZSBqdXN0IG5lZWQKKyAgICAgICAgICAgIC8v
IHRvIHJlcGxhY2UgdGhlbSB3aXRoIGFwcHJvcHJpYXRlIHR5cGUgY2hlY2tzLgorICAgICAgICAg
ICAgaWYgKHJlcGxhY2VtZW50LmNhbkV4aXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCByZXN1bHQgPQorICAgICAg
ICAgICAgICAgIHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCwgbm9kZS5jaGlsZDEoKS5p
bmRleCgpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1bHQu
bWF5Q2xvYmJlcldvcmxkKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9k
ZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBoW3JlcGxhY2VtZW50SW5kZXhdOwogICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50Lm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgQVNTRVJU
KHJlcGxhY2VtZW50LnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogSW52ZXN0aWdh
dGUgdXNpbmcgbWF5RXhpdCBhcyBhIGZ1cnRoZXIgb3B0aW1pemF0aW9uLgogICAgICAgICAgICAg
bm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICAgICAgICAgIE5vZGVJbmRl
eCBkYXRhTm9kZUluZGV4ID0gcmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKICAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoW2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTE5MzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NiArNTUsOCBAQAogI2Vsc2UKICNkZWZpbmUgREZHX0VOQUJMRV9WQUxJREFUSU9OIDAKICNlbmRp
ZgorLy8gRW5hYmxlIHZhbGlkYXRpb24gb24gY29tcGxldGlvbiBvZiBlYWNoIHBoYXNlLgorI2Rl
ZmluZSBERkdfRU5BQkxFX1BFUl9QSEFTRV9WQUxJREFUSU9OIDAKIC8vIENvbnNpc3RlbmN5IGNo
ZWNrIGNvbnRlbnRzIGNvbXBpbGVyIGRhdGEgc3RydWN0dXJlcy4KICNkZWZpbmUgREZHX0VOQUJM
RV9DT05TSVNURU5DWV9DSEVDSyAwCiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBoZWFk
IG9mIGV2ZXJ5IGdlbmVyYXRlZCBmdW5jdGlvbiwgdG8gYWlkIGRlYnVnZ2luZyBpbiBHREIuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDkg
KzYwLDM1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2Nr
ID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKICAg
ICAgICAgICAgICAgICBpZiAoIXN0YXRlLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAg
ICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay0+YXQoaW5kZXhJbkJsb2Nr
KTsKICAgICAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJvb2wgZWxpbWluYXRlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkg
eworICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmln
aW4pKS5tX3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlLnJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICAgICAg
ICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CisgICAgICAgICAgICAgICAg
ICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgcGxhY2UgdG8gcmVtb3ZlIENoZWNrU3RydWN0dXJl
J3MuCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBpZiAoZWxpbWluYXRlZCkgeworICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0YXRlLmV4ZWN1
dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJh
dGUoKQogICAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9kZSkK
ICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS5oYXNDb25zdGFudCgpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NCwxMCArOTQsMTMgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQog
ICAgIGRmZy5tX2RvbWluYXRvcnMuY29tcHV0ZShkZmcpOwogICAgIHBlcmZvcm1WaXJ0dWFsUmVn
aXN0ZXJBbGxvY2F0aW9uKGRmZyk7CiAKKyAgICBHcmFwaER1bXBNb2RlIG1vZGVGb3JGaW5hbFZh
bGlkYXRlID0gRHVtcEdyYXBoOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBk
YXRhTG9nKCJHcmFwaCBhZnRlciBvcHRpbWl6YXRpb246XG4iKTsKICAgICBkZmcuZHVtcCgpOwor
ICAgIG1vZGVGb3JGaW5hbFZhbGlkYXRlID0gRG9udER1bXBHcmFwaDsKICNlbmRpZgorICAgIHZh
bGlkYXRlKGRmZywgbW9kZUZvckZpbmFsVmFsaWRhdGUpOwogICAgIAogICAgIEpJVENvbXBpbGVy
IGRhdGFGbG93SklUKGRmZyk7CiAgICAgYm9vbCByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4Miw2ICs2ODIsMTcgQEAgc3Ry
dWN0IE5vZGUgewogICAgICAgICBBU1NFUlQobV92aXJ0dWFsUmVnaXN0ZXIgPT0gSW52YWxpZFZp
cnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIG1fdmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJlZ2lz
dGVyOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0FyZ3VtZW50UG9zaXRpb25TdGFydCgpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBJbmxpbmVTdGFydDsKKyAgICB9CisgICAgCisg
ICAgdW5zaWduZWQgYXJndW1lbnRQb3NpdGlvblN0YXJ0KCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNBcmd1bWVudFBvc2l0aW9uU3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsK
KyAgICB9CiAKICAgICBib29sIHNob3VsZEdlbmVyYXRlKCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2
aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMSw1OCArNTExLDcgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIC8vIDEzKSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBp
bnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2VkCi0gICAgLy8gICAgIHJlZ2lzdGVycy4KLSAgICAK
LSAgICBpZiAoaGF2ZUFyZ3VtZW50cykgewotICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGlu
ZGV4IDwgZXhpdC5udW1iZXJPZlJlY292ZXJpZXMoKTsgKytpbmRleCkgewotICAgICAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgp
OwotICAgICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRX
ZXJlTm90Q3JlYXRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlu
dCBvcGVyYW5kID0gZXhpdC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOwotICAgICAgICAgICAgLy8g
RmluZCB0aGUgcmlnaHQgaW5saW5lIGNhbGwgZnJhbWUuCi0gICAgICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IDA7Ci0gICAgICAgICAgICBmb3IgKElubGluZUNhbGxG
cmFtZSogY3VycmVudCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKLSAgICAg
ICAgICAgICAgICAgY3VycmVudDsKLSAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt
PmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+
c3RhY2tPZmZzZXQgPD0gb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxs
RnJhbWUgPSBjdXJyZW50OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIg
PSBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihhcmd1bWVudHNSZWdpc3RlciksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBoYXZlQXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgewotICAgICAg
ICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkp
OwotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgICAgIEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cykpLAotICAgICAg
ICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAgICBH
UFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0LmNh
bGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKGFyZ3VtZW50
c1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3IodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lz
dGVyKSkpOwotICAgICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
R1BSSW5mbzo6cmVnVDApOyAvLyBuby1vcCBtb3ZlIG9uIGFsbW9zdCBhbGwgcGxhdGZvcm1zLgot
ICAgICAgICAgICAgCi0gICAgICAgICAgICBoYXZlQXJndW1lbnRzLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDE0
KSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0
aW5nIE9TUiwgd2Uga25vdworICAgIC8vIDEzKSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRl
IGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdwogICAgIC8vICAgICB0
aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUgd2lsbCBnbyB0byB0aGUgbmV3IEpJVCwg
c28gdGhlIGV4ZWN1dGUKICAgICAvLyAgICAgY291bnRlciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFt
ZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQgYW5kIGNhbGwgZnJhbWVzCiAgICAgLy8gICAgIHRo
YXQgd2VyZSBzdGlsbCBleGVjdXRpbmcgdGhlIG9sZCBKSVQgYXQgdGhlIHRpbWUgb2YgYW5vdGhl
ciBjYWxsIGZyYW1lJ3MKQEAgLTYwMCwxMiArNTQ5LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIGhhbmRsZUV4aXRDb3VudHMoZXhpdCk7CiAg
ICAgCi0gICAgLy8gMTUpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVy
YXRpb24gaW50byByZWdUMC4KLSAgICAKLSAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCi0gICAgICAgIG1faml0LmxvYWRQdHIo
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RT
ZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOwotICAgIAotICAgIC8v
IDE2KSBGaXggY2FsbCBmcmFtZShzKS4KKyAgICAvLyAxNCkgUmVpZnkgaW5saW5lZCBjYWxsIGZy
YW1lcy4KICAgICAKICAgICBBU1NFUlQobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKICAgICBtX2ppdC5zdG9yZVB0cihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQuYmFzZWxpbmVDb2RlQmxvY2soKSksIEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKVJlZ2lzdGVyRmlsZTo6
Q29kZUJsb2NrKSk7CkBAIC02MzgsMTAgKzU4Miw2MyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZS5nZXQoKSksIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsZWUpKSk7CiAgICAgfQogICAgIAorICAgIC8v
IDE1KSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRo
ZSBhcHByb3ByaWF0ZSBhbGlhc2VkCisgICAgLy8gICAgIHJlZ2lzdGVycy4KKyAgICAKKyAgICBp
ZiAoaGF2ZUFyZ3VtZW50cykgeworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwg
ZXhpdC5udW1iZXJPZlJlY292ZXJpZXMoKTsgKytpbmRleCkgeworICAgICAgICAgICAgY29uc3Qg
VmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOworICAg
ICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90
Q3JlYXRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGludCBvcGVy
YW5kID0gZXhpdC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOworICAgICAgICAgICAgLy8gRmluZCB0
aGUgcmlnaHQgaW5saW5lIGNhbGwgZnJhbWUuCisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IDA7CisgICAgICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSog
Y3VycmVudCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAg
ICAgICAgY3VycmVudDsKKyAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxl
ci5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tP
ZmZzZXQgPD0gb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUg
PSBjdXJyZW50OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2pp
dC5hcmd1bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1
bWVudHNSZWdpc3RlciksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBoYXZlQXJndW1lbnRzID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8sIEdQUkluZm86OnJlZ1QwKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAg
ICAgIG1faml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxs
RnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHMoR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmUoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKAorICAgICAgICAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNy
ZWF0ZUFyZ3VtZW50cykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86Om5vbkFyZ0dQUjApOwor
ICAgICAgICAgICAgbV9qaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6
OmFkZHJlc3NGb3IoYXJndW1lbnRzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
UHRyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUklu
Zm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIG5vLW9wIG1vdmUgb24gYWxt
b3N0IGFsbCBwbGF0Zm9ybXMuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGhhdmVBcmd1bWVu
dHMubGluaygmbV9qaXQpOworICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgLy8gMTYpIExvYWQgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBieXRlY29k
ZSBvcGVyYXRpb24gaW50byByZWdUMC4KKyAgICAKKyAgICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVy
YW5kICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpCisgICAgICAgIG1faml0Lmxv
YWRQdHIoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5t
X2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0ZXIpOworICAgIAor
ICAgIC8vIDE3KSBBZGp1c3QgdGhlIGNhbGwgZnJhbWUuCisgICAgCiAgICAgaWYgKGV4aXQubV9j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgbV9qaXQuYWRkUHRyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwgR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIpOwogICAgIAotICAgIC8vIDE3KSBKdW1wIGludG8gdGhlIGNvcnJlc3BvbmRpbmcg
YmFzZWxpbmUgSklUIGNvZGUuCisgICAgLy8gMTgpIEp1bXAgaW50byB0aGUgY29ycmVzcG9uZGlu
ZyBiYXNlbGluZSBKSVQgY29kZS4KICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJs
b2NrID0gbV9qaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoZXhpdC5tX2NvZGVPcmlnaW4pOwogICAg
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcCA9IG1faml0
LmRlY29kZWRDb2RlTWFwRm9yKGJhc2VsaW5lQ29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGhhc2UuY3BwCShyZXZpc2lvbiAxMTkzMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksOSBA
QCB2b2lkIFBoYXNlOjpiZWdpblBoYXNlKCkKICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgJXM6
XG4iLCBtX25hbWUpOwogICAgIG1fZ3JhcGguZHVtcCgpOwogfQorI2VuZGlmCiAKKyNpZiBERkdf
RU5BQkxFKFBFUl9QSEFTRV9WQUxJREFUSU9OKQogdm9pZCBQaGFzZTo6ZW5kUGhhc2UoKQogewog
ICAgIHZhbGlkYXRlKG1fZ3JhcGgsIER1bXBHcmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQaGFzZS5oCShyZXZpc2lvbiAxMTkzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDExICs2NSwxNCBAQCBwcml2YXRl
OgogICAgIC8vIENhbGwgdGhlc2UgaG9va3Mgd2hlbiBzdGFydGluZyBhbmQgZmluaXNoaW5nLgog
I2lmIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKICAgICB2b2lkIGJlZ2lu
UGhhc2UoKTsKLSAgICB2b2lkIGVuZFBoYXNlKCk7Ci0jZWxzZSAvLyBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCisjZWxzZQogICAgIHZvaWQgYmVnaW5QaGFzZSgpIHsgfQor
I2VuZGlmCisjaWYgREZHX0VOQUJMRShQRVJfUEhBU0VfVkFMSURBVElPTikKKyAgICB2b2lkIGVu
ZFBoYXNlKCk7CisjZWxzZQogICAgIHZvaWQgZW5kUGhhc2UoKSB7IH0KLSNlbmRpZiAvLyBERkdf
RU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCisjZW5kaWYKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFBoYXNlVHlwZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzg1OCwxNiArMzg1OCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJndW1l
bnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVkaWN0aW9uKAotICAgICAg
ICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5t
X3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAg
IFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSwKLSAgICAgICAgICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCku
b3BlcmFuZCgKKyAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAorICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmFyZ3VtZW50
c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICBub1Jlc3VsdChtX2NvbXBp
bGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE5MzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkyNCw3ICsxOTI0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29u
c3RhbnQ6CisgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgpOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICAgICAgLy8gVGhpcyBz
aG91bGQgbmV2ZXIgYmUgbXVzdC1nZW5lcmF0ZS4KKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIC8vIEJ1dCBhcyBhIHJlbGVhc2UtbW9kZSBmYWxsLWJhY2sgbWFrZSBpdCB0
aGUgZW1wdHkgdmFsdWUuCiAgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgp
OwogICAgICAgICBicmVhazsKIApAQCAtNDAzMiwxNiArNDAzOCwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENo
ZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBpZiAoIWlzRW1wdHlQcmVkaWN0aW9u
KAotICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVP
cmlnaW4pKS5tX3R5cGUpKSB7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAg
ICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAotICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZv
cihub2RlLmNvZGVPcmlnaW4pKSkpOwotICAgICAgICB9CisgICAgICAgIEFTU0VSVCghaXNFbXB0
eVByZWRpY3Rpb24oCisgICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCisg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pKS5tX3R5cGUpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAg
ICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblpl
cm8sCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCisgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpKSk7
CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDExOTMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDggKzEwNDAsMjkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAgICAgICAgICAgY2Fz
ZSBJbmxpbmVTdGFydDogewogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAg
ICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRQb3NpdGlv
blN0YXJ0ID0gbm9kZS5hcmd1bWVudFBvc2l0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgICAgICBi
b29sIGFyZ3VtZW50c0FyZUNhcHR1cmVkID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVD
b2RlQmxvY2tGb3JJbmxpbmVDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzQXJl
Q2FwdHVyZWQoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgVmFsdWVSZWNv
dmVyeSByZWNvdmVyeSA9IGNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKG1fdmFyaWFibGVzW2lubGlu
ZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVk
aW5nVGhpcyhpKV0pOworICAgICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5
OworICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzQXJlQ2FwdHVyZWQpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZWNvdmVyeSA9IFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJlZ2lz
dGVyRmlsZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFyZ3VtZW50UG9zaXRpb24mIGFyZ3VtZW50UG9zaXRpb24gPQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubV9hcmd1bWVudFBvc2l0aW9uc1thcmd1bWVu
dFBvc2l0aW9uU3RhcnQgKyBpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlU291cmNl
IHZhbHVlU291cmNlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50UG9zaXRp
b24uc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShEb3VibGVJblJlZ2lzdGVyRmlsZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0ludDMyUHJlZGljdGlvbihhcmd1bWVudFBvc2l0
aW9uLnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3Vy
Y2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGlj
dGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVl
U291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigpKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEJv
b2xlYW5JblJlZ2lzdGVyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUlu
UmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5ID0gY29tcHV0
ZVZhbHVlUmVjb3ZlcnlGb3IodmFsdWVTb3VyY2UpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZWNvdmVyeSBzaG91bGQgcmVmZXIgZWl0aGVyIHRv
IHNvbWV0aGluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4KICAgICAgICAgICAgICAgICAgICAgLy8g
c3RvcmVkIGludG8gdGhlIHJlZ2lzdGVyIGZpbGUgYXQgdGhlIHJpZ2h0IHBsYWNlLCBvciB0byBh
IGNvbnN0YW50LAogICAgICAgICAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgQXJndW1lbnRzIGNv
ZGUgaXNuJ3Qgc21hcnQgZW5vdWdoIHRvIGhhbmRsZSBhbnl0aGluZyBlbHNlLgpAQCAtMTA1MSw3
ICsxMDcyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcblJlY292ZXJ5IGZvciBhcmd1bWVudCAlZDogIiwg
aSk7CiAgICAgICAgICAgICAgICAgICAgIHJlY292ZXJ5LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsK
ICNlbmRpZgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWkgfHwgKHJlY292ZXJ5LmlzQWxy
ZWFkeUluUmVnaXN0ZXJGaWxlKCkgfHwgcmVjb3ZlcnkuaXNDb25zdGFudCgpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzW2ldID0gcmVjb3Zlcnk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTE5MzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTk3LDcgKzIxOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXRM
b2NhbCA9ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdCgrK3NldExvY2Fs
SW5kZXhJbkJsb2NrKSk7CiAgICAgICAgICAgICBoYWRJbnQzMlRvRG91YmxlID0gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoc2V0TG9jYWwtPm9wKCkgPT0gRmx1c2gpCisgICAgICAgIGlm
IChzZXRMb2NhbC0+b3AoKSA9PSBGbHVzaCB8fCBzZXRMb2NhbC0+b3AoKSA9PSBQaGFudG9tKQog
ICAgICAgICAgICAgc2V0TG9jYWwgPSAmYXQobV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2Nr
XS0+YXQoKytzZXRMb2NhbEluZGV4SW5CbG9jaykpOwogICAgICAgICAKICAgICAgICAgaWYgKGhh
ZEludDMyVG9Eb3VibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145460</attachid>
            <date>2012-06-02 15:15:56 -0700</date>
            <delta_ts>2012-06-02 15:46:57 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>dontflush_patch_6.diff</filename>
            <type>text/plain</type>
            <size>48273</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MzQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMCBA
QAorMjAxMi0wNi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IERGRyBDU0Ugc2hvdWxkIGJlIGFibGUgdG8gZWxpbWluYXRlIHVubmVjZXNzYXJ5IGZsdXNoZXMg
b2YgYXJndW1lbnRzIGFuZCBjYXB0dXJlZCB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3OTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBTbGlnaHQgc3BlZWQtdXAgb24gVjgu
IEJpZyB3aW4gKHVwIHRvIDUwJSkgb24gcHJvZ3JhbXMgdGhhdCBpbmxpbmUgdmVyeSBzbWFsbCBm
dW5jdGlvbnMuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlcXVpcmVkIGEgYnVuY2ggb2YgY2hh
bmdlczoKKyAgICAgICAgCisgICAgICAgIC0gVGhlIG9idmlvdXMgY2hhbmdlIGlzIG1ha2luZyBD
U0UgZXNzZW50aWFsbHkgaWdub3JlIHdoZXRoZXIgb3Igbm90IHRoZSBzZXQgb2YKKyAgICAgICAg
ICBvcGVyYXRpb25zIGJldHdlZW4gdGhlIEZsdXNoIGFuZCB0aGUgU2V0TG9jYWwgY2FuIGV4aXQs
IGFuZCBpbnN0ZWFkIGZvY3VzIG9uIHdoZXRoZXIgb3IKKyAgICAgICAgICBub3QgdGhhdCBzZXQg
b2Ygb3BlcmF0aW9ucyBjYW4gY2xvYmJlciB0aGUgd29ybGQgb3IgYWNjZXNzIGxvY2FsIHZhcmlh
Ymxlcy4gVGhpcyBjb2RlCisgICAgICAgICAgaXMgbm93IHJlZmFjdG9yZWQgdG8gcmV0dXJuIGEg
c2V0IG9mIGZsYWdzIGluZGljYXRpbmcgYW55IG9mIHRoZXNlIGV2ZW50cywgYW5kIHRoZSBDU0UK
KyAgICAgICAgICBkZWNpZGVzIHdoYXQgdG8gZG8gYmFzZWQgb24gdGhvc2UgZmxhZ3MuIElmIHRo
ZSBzZXQgb2Ygb3BlcmF0aW9ucyBpcyBub24tY2xvYmJlcmluZworICAgICAgICAgIGFuZCBub24t
YWNjZXNzaW5nLCB0aGVuIHRoZSBGbHVzaCBpcyB0dXJuZWQgaW50byBhIFBoYW50b20gb24gdGhl
IGNoaWxkIG9mIHRoZQorICAgICAgICAgIFNldExvY2FsLiBUaGlzIGV4cGFuZHMgdGhlIGxpdmVu
ZXNzIG9mIHRoZSByZWxldmFudCB2YXJpYWJsZSBidXQgdmlydHVhbGx5IGd1YXJhbnRlZXMKKyAg
ICAgICAgICB0aGF0IGl0IHdpbGwgYmUgcmVnaXN0ZXIgYWxsb2NhdGVkIGFuZCBub3QgZmx1c2hl
ZCB0byB0aGUgc3RhY2suIFNvLCB5ZWFoLCB0aGlzIHBhdGNoCisgICAgICAgICAgaXMgYSBsb3Qg
b2Ygd29yayB0byBzYXZlIGEgZmV3IHN0b3JlcyB0byB0aGUgc3RhY2suCisgICAgICAgIAorICAg
ICAgICAtIFByZXZpb3VzbHksIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCB3YXMgb3B0aW1pemVk
ICJsYXppbHkiIGluIHRoYXQgeW91IG9ubHkga25ldyBpZgorICAgICAgICAgIGl0IHdhcyBhIG5v
LW9wIGlmIHlvdSB3ZXJlIGhvbGRpbmcgb250byBhIENGQSBhYnN0cmFjdCBzdGF0ZS4gQnV0IHRo
aXMgd291bGQgbWFrZSB0aGUKKyAgICAgICAgICBDU0UgYWN0IHBlc3NpbWlzdGljYWxseSwgc2lu
Y2UgaXQgZG9lc24ndCB1c2UgdGhlIENGQS4gSGVuY2UsIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUK
KyAgICAgICAgICBjb25zdGFudCBmb2xkaW5nIHBoYXNlIGludG8gc29tZXRoaW5nIG1vcmUgYnJv
YWQ7IGl0IG5vdyBmaXhlcyB1cAorICAgICAgICAgIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCBu
b2RlcyBieSB0dXJuaW5nIHRoZW0gaW50byBwaGFudG9tcyBpZiBpdCBrbm93cyB0aGF0IHRoZXkg
YXJlCisgICAgICAgICAgbm8tb3BzLgorICAgICAgICAKKyAgICAgICAgLSBBcmd1bWVudHMgc2lt
cGxpZmljYXRpb24gd2FzIHByZXZpb3VzbHkgcmVseWluZyBvbiB0aGlzIHZlcnkgc3RyYW5nZSBQ
aGFudG9tQXJndW1lbnRzCisgICAgICAgICAgbm9kZSwgd2hpY2ggaGFkIHR3byBkaWZmZXJlbnQg
bWVhbmluZ3M6IGZvciBub3JtYWwgZXhlY3V0aW9uIGl0IG1lYW50IHRoZSBlbXB0eSB2YWx1ZQor
ICAgICAgICAgIGJ1dCBmb3IgT1NSIGV4aXQgaXQgbWVhbnQgdGhhdCB0aGUgYXJndW1lbnRzIHNo
b3VsZCBiZSByZWlmaWVkLiBUaGlzIHByb2R1Y2VzIHByb2JsZW1zCisgICAgICAgICAgd2hlbiBz
ZXQgU2V0TG9jYWxzIHRvIHRoZSBjYXB0dXJlZCBhcmd1bWVudHMgcmVnaXN0ZXJzIGFyZSBDU0Un
ZCBhd2F5LCBzaW5jZSB3ZSdkIGJlCisgICAgICAgICAgdHJpZ2dlcmluZyByZWlmaWNhdGlvbiBv
ZiBhcmd1bWVudHMgd2l0aG91dCBoYXZpbmcgaW5pdGlhbGl6ZWQgdGhlIGFyZ3VtZW50cyByZWdp
c3RlcnMKKyAgICAgICAgICB0byBlbXB0eS4gVGhlIGNsZWFuZXN0IHNvbHV0aW9uIHdhcyB0byBm
aXggUGhhbnRvbUFyZ3VtZW50cyB0byBoYXZlIG9uZSBtZWFuaW5nOgorICAgICAgICAgIG5hbWVs
eSwgYXJndW1lbnRzIHJlaWZpY2F0aW9uIG9uIE9TUiBleGl0LiBIZW5jZSwgdGhpcyBwYXRjaCBj
aGFuZ2VzIGFyZ3VtZW50cworICAgICAgICAgIHNpbXBsaWZpY2F0aW9uIHRvIGNoYW5nZSBTZXRM
b2NhbCBvZiBDcmVhdGVBcmd1bWVudHMgb24gdGhlIGFyZ3VtZW50cyByZWdpc3RlcnMgdG8gYmUK
KyAgICAgICAgICBhIFNldExvY2FsIG9mIEVtcHR5LgorICAgICAgICAKKyAgICAgICAgLSBBcmd1
bWVudCB2YWx1ZSByZWNvdmVyaWVzIHdlcmUgcHJldmlvdXNseSBkZXJpdmVkIGZyb20gdGhlIHZh
bHVlIHNvdXJjZSBvZiB0aGUKKyAgICAgICAgICBhcmd1bWVudHMgYXQgdGhlIElubGluZVN0YXJ0
LiBCdXQgdGhhdCByZWxpZXMgb24gYWxsIFNldExvY2FscyB0byBhcmd1bWVudHMgaGF2aW5nCisg
ICAgICAgICAgYmVlbiBmbHVzaGVkLiBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgY291bGQgaGF2ZSBl
bGlkZWQgdGhlIFNldExvY2FsIHRvIHRoZSBhcmd1bWVudHMKKyAgICAgICAgICBhdCB0aGUgY2Fs
bHNpdGUgYmVjYXVzZSB0aGVyZSB3ZXJlIHN1YnNlcXVlbnQgU2V0TG9jYWxzIHRvIHRoZSBhcmd1
bWVudHMgaW5zaWRlIG9mIHRoZQorICAgICAgICAgIGNhbGxlZSwgaW4gd2hpY2ggY2FzZSB0aGUg
SW5saW5lU3RhcnQgd291bGQgZ2V0IHRoZSB3cm9uZyBpbmZvcm1hdGlvbi4gSGVuY2UsIHRoaXMK
KyAgICAgICAgICBwYXRjaCBjaGFuZ2VzIGFyZ3VtZW50IHZhbHVlIHJlY292ZXJ5IGNvbXB1dGF0
aW9uIHRvIG9wZXJhdGUgb3ZlciB0aGUgQXJndW1lbnRQb3NpdGlvbnMKKyAgICAgICAgICBkaXJl
Y3RseS4KKyAgICAgICAgCisgICAgICAgIC0gQnV0IHRoYXQgZG9lc24ndCBhY3R1YWxseSB3b3Jr
LCBiZWNhdXNlIHByZXZpb3VzbHksIHRoZXJlIHdhcyBubyB3YXkgdG8gbGluayBhbgorICAgICAg
ICAgIElubGluZVN0YXJ0IGJhY2sgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQXJndW1lbnRQb3NpdGlv
bnMsIGF0IGxlYXN0IG5vdCB3aXRob3V0IHNvbWUKKyAgICAgICAgICB1Z2xpbmVzcy4gU28gdGhp
cyBwYXRjaCBpbnN0YXRlcyB0aGUgcnVsZSB0aGF0IHRoZSBtX2FyZ3VtZW50UG9zaXRpb25zIHZl
Y3RvciBjb25zaXN0cworICAgICAgICAgIG9mIGRpc2pvaW50IHN1YnNlcXVlbmNlcyBzdWNoIHRo
YXQgZWFjaCBzdWJzZXF1ZW5jZSBjb3JyZXNwb25kcyB0byBhbiBpbmxpbmUgY2FsbHNpdGUKKyAg
ICAgICAgICBhbmQgY2FuIGJlIGlkZW50aWZpZWQgYnkgaXRzIGZpcnN0IGluZGV4LCBhbmQgd2l0
aGluIGVhY2ggc3Vic2VxdWVuY2UgYXJlIHRoZQorICAgICAgICAgIEFyZ3VtZW50UG9zaXRpb25z
IG9mIGFsbCBvZiB0aGUgYXJndW1lbnRzIG9yZGVyZWQgYnkgYXJndW1lbnQgaW5kZXguIFRoaXMg
cmVxdWlyZWQKKyAgICAgICAgICBmbGlwcGluZyB0aGUgb3JkZXIgaW4gd2hpY2ggQXJndW1lbnRQ
b3NpdGlvbnMgYXJlIGFkZGVkIHRvIHRoZSB2ZWN0b3IsIGFuZCBnaXZpbmcKKyAgICAgICAgICBJ
bmxpbmVTdGFydCBhbiBvcGVyYW5kIHRoYXQgaW5kaWNhdGVzIHRoZSBzdGFydCBvZiB0aGF0IGlu
bGluZSBjYWxsc2l0ZSdzCisgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiBzdWJzZXF1ZW5jZS4K
KyAgICAgICAgCisgICAgICAgIC0gVGhpcyBwYXRjaCBhbHNvIHJldmVhbGVkIGEgbmFzdHkgYnVn
IGluIHRoZSByZWlmaWNhdGlvbiBvZiBhcmd1bWVudHMgaW4gaW5saW5lIGNhbGwKKyAgICAgICAg
ICBmcmFtZXMgb24gT1NSIGV4aXQuIFNpbmNlIHRoZSByZWlmaWNhdGlvbiB3YXMgaGFwcGVuaW5n
IGFmdGVyIHRoZSB2YWx1ZXMgb2YgdmlydHVhbAorICAgICAgICAgIHJlZ2lzdGVycyB3ZXJlIHJl
Y292ZXJlZCwgdGhlIHZhbHVlIHJlY292ZXJpZXMgb2YgdGhlIGlubGluZSBhcmd1bWVudHMgd2Vy
ZSB3cm9uZy4KKyAgICAgICAgICBIZW5jZSB1c2luZyBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJn
dW1lbnRzIGlzIHdyb25nLiBGb3IgZXhhbXBsZSBhIHZhbHVlIHJlY292ZXJ5CisgICAgICAgICAg
bWlnaHQgc2F5IHRoYXQgeW91IGhhdmUgdG8gYm94IGEgZG91YmxlLCBidXQgaWYgd2UgaGFkIGFs
cmVhZHkgYm94ZWQgaXQgdGhlbiBib3hpbmcKKyAgICAgICAgICBpdCBhIHNlY29uZCB0aW1lIHdp
bGwgcmVzdWx0IGluIGdhcmJhZ2UuIFRoZSBzcGVjaWZpYyBjYXNlIG9mIHRoaXMgYnVnIHdhcyB0
aGlzIHBhdGNoCisgICAgICAgICAgdW5jb3ZlcmVkIHdhcyB0aGF0IG5vdyBpdCBpcyBwb3NzaWJs
ZSBmb3IgYW4gaW5saW5lIGNhbGwgZnJhbWUgdG8gbm90IGhhdmUgYW55IHZhbGlkCisgICAgICAg
ICAgdmFsdWUgcmVjb3ZlcmllcyBmb3IgYW55IGlubGluZSBhcmd1bWVudHMsIGlmIHRoZSBvcHRp
bWl6YXRpb24gZWxpZGVzIGFsbCBhcmd1bWVudAorICAgICAgICAgIGZsdXNoZXMsIHdoaWxlIGF0
IHRoZSBzYW1lIHRpbWUgb3B0aW1pemluZyBhd2F5IGFyZ3VtZW50cyBjcmVhdGlvbi4gVGhlbiBP
U1IgZXhpdAorICAgICAgICAgIHdvdWxkIHRyeSB0byByZWNvdmVyIHRoZSBhcmd1bWVudHMgdXNp
bmcgdGhlIGlubGluZSBjYWxsIGZyYW1lLCB3aGljaCBoYWQgYm9ndXMKKyAgICAgICAgICBpbmZv
cm1hdGlvbiwgYW5kIGh1bW9yb3VzIGNyYXNoZXMgd291bGQgZW5zdWUuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpc3N1ZSBieSBtb3ZpbmcKKyAgICAgICAgICBhcmd1bWVudHMgcmVpZmljYXRpb24g
dG8gYWZ0ZXIgY2FsbCBmcmFtZSByZWlmaWNhdGlvbiwgc28gdGhhdCBhcmd1bWVudHMgcmVpZmlj
YXRpb24KKyAgICAgICAgICBjYW4gYWx3YXlzIHVzZSBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMg
aW5zdGVhZCBvZiBvcGVyYXRpb25DcmVhdGVJbmxpbmVkQXJndW1lbnRzLgorICAgICAgICAKKyAg
ICAgICAgLSBUaGlzIHBhdGNoIG1heSB0dXJuIGEgRmx1c2ggaW50byBhIFBoYW50b20uIFRoYXQn
cyBraW5kIG9mIHRoZSB3aG9sZSBwb2ludC4gQnV0IHRoYXQKKyAgICAgICAgICBicm9rZSBmb3J3
YXJkIHNwZWN1bGF0aW9uIGNoZWNrcywgd2hpY2gga25ldyB0byBsb29rIGZvciBhIEZsdXNoIHBy
aW9yIHRvIGEgU2V0TG9jYWwKKyAgICAgICAgICBidXQgZGlkbid0IGtub3cgdGhhdCB0aGVyZSBj
b3VsZCBhbHRlcm5hdGl2ZWx5IGJlIGEgUGhhbnRvbSBpbiBwbGFjZSBvZiB0aGUgRmx1c2guCisg
ICAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0IGJ5IGF1Z21lbnRpbmcgdGhlIGZvcndhcmQg
c3BlY3VsYXRpb24gY2hlY2sgbG9naWMuCisgICAgICAgIAorICAgICAgICAtIEZpbmFsbHksIGlu
IHRoZSBwcm9jZXNzIG9mIGhhdmluZyBmdW4gd2l0aCBhbGwgb2YgdGhlIGFib3ZlLCBJIHJlYWxp
emVkIHRoYXQgbXkgREZHCisgICAgICAgICAgdmFsaWRhdGlvbiB3YXMgbm90IGFjdHVhbGx5IHJ1
bm5pbmcgb24gZXZlcnkgcGhhc2UgbGlrZSBJIGhhZCBvcmlnaW5hbGx5IGRlc2lnbmVkIGl0Cisg
ICAgICAgICAgdG8uIEluIGZhY3QgaXQgd2FzIG9ubHkgcnVubmluZyBqdXN0IGFmdGVyIGJ5dGVj
b2RlIHBhcnNpbmcuIEkgaW5pdGlhbGx5IHRyaWVkIHRvCisgICAgICAgICAgbWFrZSBpdCBydW4g
aW4gZXZlcnkgcGhhc2UgYnV0IGZvdW5kIHRoYXQgdGhpcyBjYXVzZXMgc29tZSB0ZXN0cyB0byB0
aW1lb3V0CisgICAgICAgICAgKHNwZWNpZmljYWxseSB0aGUgZXZpbCBmdXp6aW5nIG9uZXMpLCBz
byBJIGRlY2lkZWQgb24gYSBjb21wcm9taXNlIHdoZXJlOiAoaSkgaW4KKyAgICAgICAgICByZWxl
YXNlIG1vZGUgdmFsaWRhdGlvbiBuZXZlciBydW5zLCAoaWkpIGluIGRlYnVnIG1vZGUgdmFsaWRh
dGlvbiB3aWxsIHJ1biBqdXN0CisgICAgICAgICAgYWZ0ZXIgcGFyc2luZyBhbmQganVzdCBiZWZv
cmUgdGhlIGJhY2tlbmQsIGFuZCAoaWlpKSBpdCdzIHBvc3NpYmxlIHdpdGggYSBzaW1wbGUKKyAg
ICAgICAgICBzd2l0Y2ggdG8gZW5hYmxlIHZhbGlkYXRpb24gdG8gcnVuIG9uIGV2ZXJ5IHBoYXNl
LgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudFBv
c2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6cHJlZGljdGlv
bik6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6ZG91YmxlRm9ybWF0U3Rh
dGUpOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50UG9zaXRpb246OnNob3VsZFVzZURvdWJs
ZUZvcm1hdCk6CisgICAgICAgIChBcmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNr
RW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OlNldExvY2FsU3RvcmVFbGltaW5hdGlvblJl
c3VsdDo6U2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFNldExvY2Fs
U3RvcmVFbGltaW5hdGlvblJlc3VsdCk6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnNl
dExvY2FsU3RvcmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBl
cmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQXJndW1lbnRQb3NpdGlvblN0
YXJ0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjphcmd1bWVudFBvc2l0aW9uU3RhcnQpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHUGhhc2UuY3BwOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKiBkZmcvREZHUGhhc2UuaDoKKyAgICAgICAgKFBoYXNlKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKwogMjAxMi0wNi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIERGRyBDRkEgc2hvdWxkIGtub3cgdGhhdCBQdXRCeVZhbCBjYW4gY2xvYmJlciB0aGUg
d29ybGQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMywxMCArMTIxMywxMyBA
QCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQ6Ci0gICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCgKLSAgICAgICAgICAgICFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKGlz
RW1wdHlQcmVkaWN0aW9uKAogICAgICAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQoCi0g
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2Rl
T3JpZ2luKSkubV90eXBlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkubV90eXBlKSkgeworICAgICAgICAgICAgbm9k
ZS5zZXRDYW5FeGl0KGZhbHNlKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVl
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24u
aAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAorICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGljdGlvbjsgfQorICAgIERvdWJsZUZv
cm1hdFN0YXRlIGRvdWJsZUZvcm1hdFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVGb3Jt
YXRTdGF0ZTsgfQorICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBkb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0
OworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgUHJlZGljdGVkVHlwZSBtX3ByZWRpY3Rpb247
CiAgICAgRG91YmxlRm9ybWF0U3RhdGUgbV9kb3VibGVGb3JtYXRTdGF0ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzk4LDEwICszOTgsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBp
ZiAoc291cmNlLm9wKCkgIT0gQ3JlYXRlQXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAo
bV9jcmVhdGVzQXJndW1lbnRzLmNvbnRhaW5zKHNvdXJjZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJl
ZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5hcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pID09IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpID09
IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgY2hpbGQgb2YgdGhpcyBzdG9yZSBzaG91bGQgcmVhbGx5IGJlIHRoZSBlbXB0eSB2YWx1
ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUgZW1wdHlKU1ZhbHVlKEpTQ29uc3RhbnQs
IG5vZGUuY29kZU9yaWdpbiwgT3BJbmZvKGNvZGVCbG9jaygpLT5hZGRPckZpbmRDb25zdGFudChK
U1ZhbHVlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUpTVmFsdWUucmVmKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW5kZXggZW1wdHlKU1ZhbHVlSW5kZXggPSBt
X2dyYXBoLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZGVyZWYobm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxk
MSgpID0gRWRnZShlbXB0eUpTVmFsdWVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLmFwcGVuZChlbXB0eUpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGVtcHR5SlNWYWx1ZUluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdG9yZSBpbnRvIGEgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB0aGF0IGlzIG1hcmtlZCBhcwogICAgICAgICAgICAgICAgICAgICAvLyBhcmd1
bWVudHMgYWxpYXNpbmcgZm9yIGFuIElubGluZUNhbGxGcmFtZSogdGhhdCBkb2VzIG5vdCBjcmVh
dGUKQEAgLTQxMCwxMSArNDI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAvLyB0
aGluZ3MuIE5vdGUgYWxzbyB0aGF0IHRoZSBTZXRMb2NhbCBzaG91bGQgYmVjb21lIGRlYWQgYXMg
c29vbiBhcwogICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZXBsYWNlIGFsbCB1c2VzIG9mIHRo
aXMgdmFyaWFibGUgd2l0aCBHZXRNeUFyZ3VtZW50c0xlbmd0aCBhbmQKICAgICAgICAgICAgICAg
ICAgICAgLy8gR2V0TXlBcmd1bWVudEJ5VmFsLgotICAgICAgICAgICAgICAgICAgICBpZiAobV9h
cmd1bWVudHNBbGlhc2luZy5maW5kKHZhcmlhYmxlQWNjZXNzRGF0YSktPnNlY29uZC5pc1ZhbGlk
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmICFtX2NyZWF0ZXNBcmd1bWVudHMuY29udGFp
bnMoc291cmNlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNBcmd1bWVudHNB
bGlhcyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3VtZW50c0FsaWFzaW5n
LmZpbmQodmFyaWFibGVBY2Nlc3NEYXRhKS0+c2Vjb25kLmlzVmFsaWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUlzQXJndW1lbnRz
QWxpYXModHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyNzAsNiArMTI3MCw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KGJvb2wKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNp
emUoKTsgKytpKQogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tpXS0+ZW5zdXJlTG9jYWxz
KG5ld051bUxvY2Fscyk7CiAgICAgfQorICAgIAorICAgIHNpemVfdCBhcmd1bWVudFBvc2l0aW9u
U3RhcnQgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOwogCiAgICAgSW5saW5l
U3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBjb2RlQmxvY2ssIHBy
b2ZpbGVkQmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpIC0gMSwKQEAgLTEyODQsNyArMTI4
Niw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICBtX2N1
cnJlbnRJbmRleCA9IDA7CiAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSAwOwogCi0gICAg
YWRkVG9HcmFwaChJbmxpbmVTdGFydCk7CisgICAgYWRkVG9HcmFwaChJbmxpbmVTdGFydCwgT3BJ
bmZvKGFyZ3VtZW50UG9zaXRpb25TdGFydCkpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7
CiAgICAgCkBAIC0yODQzLDcgKzI4NDUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tF
bnRyeTo6SW5saW5lCiAgICAgLCBtX2NhbGxlcihieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFj
a1RvcCkKIHsKICAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXM7IGktLTspIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOyArK2kpIHsKICAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1
bWVudFBvc2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3NpdGlvbigpKTsKICAgICAgICAgQXJndW1l
bnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5t
X2FyZ3VtZW50UG9zaXRpb25zLmxhc3QoKTsKICAgICAgICAgbV9hcmd1bWVudFBvc2l0aW9uc1tp
XSA9IGFyZ3VtZW50UG9zaXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOSw5ICs2MTksMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCi0gICAgLy8gVGhp
cyByZXR1cm5zIHRoZSBGbHVzaCBub2RlIHRoYXQgaXMga2VlcGluZyBhIFNldExvY2FsIGFsaXZl
LgotICAgIE5vZGVJbmRleCBzZXRMb2NhbFN0b3JlRWxpbWluYXRpb24oVmlydHVhbFJlZ2lzdGVy
IGxvY2FsLCBOb2RlSW5kZXggZXhwZWN0ZWROb2RlSW5kZXgpCisgICAgc3RydWN0IFNldExvY2Fs
U3RvcmVFbGltaW5hdGlvblJlc3VsdCB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlv
blJlc3VsdCgpCisgICAgICAgICAgICA6IG1heUJlQWNjZXNzZWQoZmFsc2UpCisgICAgICAgICAg
ICAsIG1heUV4aXQoZmFsc2UpCisgICAgICAgICAgICAsIG1heUNsb2JiZXJXb3JsZChmYWxzZSkK
KyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIG1heUJlQWNjZXNz
ZWQ7CisgICAgICAgIGJvb2wgbWF5RXhpdDsKKyAgICAgICAgYm9vbCBtYXlDbG9iYmVyV29ybGQ7
CisgICAgfTsKKyAgICBTZXRMb2NhbFN0b3JlRWxpbWluYXRpb25SZXN1bHQgc2V0TG9jYWxTdG9y
ZUVsaW1pbmF0aW9uKAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCBl
eHBlY3RlZE5vZGVJbmRleCkKICAgICB7CisgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlv
blJlc3VsdCByZXN1bHQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2Nr
OyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+
YXQoaSk7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CkBAIC02MzEs
NDYgKzY0NCw1OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKICAgICAg
ICAgICAgIGNhc2UgRmx1c2g6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSA9PSBs
b2NhbCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgog
ICAgICAgICAgICAgICAgIGlmIChub2RlLnVubGlua2VkTG9jYWwoKSA9PSBsb2NhbCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
Lm1heUJlQWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIGlm
IChub2RlLmxvY2FsKCkgIT0gbG9jYWwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGlmIChpbmRleCAhPSBleHBlY3RlZE5vZGVJbmRleCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJl
QWNjZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoW2luZGV4XS5yZWZD
b3VudCgpID4gMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFj
Y2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBHZXRTY29wZUNoYWluOgog
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlckZv
cihub2RlLmNvZGVPcmlnaW4pID09IGxvY2FsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
Tm9Ob2RlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBj
YXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1
bWVudHNMZW5ndGg6CisgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZToK
KyAgICAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWxTYWZlOgorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVuY2hl
Y2tlZEFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikgPT0gbG9jYWwpCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ3JlYXRlQXJn
dW1lbnRzOgogICAgICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKICAgICAgICAgICAg
IGNhc2UgVGVhck9mZkFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhY3RpdmF0
aW9uIGlzIGJlaW5nIHRvcm4gb2ZmIHRoZW4gaXQgbWVhbnMgdGhhdCBjYXB0dXJlZCB2YXJpYWJs
ZXMKICAgICAgICAgICAgICAgICAvLyBhcmUgbGl2ZS4gV2UgY291bGQgYmUgY2xldmVyIGhlcmUg
YW5kIGNoZWNrIGlmIHRoZSBsb2NhbCBxdWFsaWZpZXMgYXMgYW4KICAgICAgICAgICAgICAgICAv
LyBhcmd1bWVudCByZWdpc3Rlci4gQnV0IHRoYXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBidXkgdXMg
dmVyeSBsaXR0bGUgc2luY2UKICAgICAgICAgICAgICAgICAvLyBhbnkga2luZCBvZiB0ZWFyIG9m
ZnMgYXJlIHJhcmUgdG8gYmVnaW4gd2l0aC4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2Rl
OworICAgICAgICAgICAgICAgIHJlc3VsdC5tYXlCZUFjY2Vzc2VkID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguY2xvYmJlcnNXb3JsZChpbmRleCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS5jYW5FeGl0KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vTm9kZTsKKyAgICAgICAgICAgIHJlc3VsdC5tYXlFeGl0IHw9IG5vZGUuY2Fu
RXhpdCgpOworICAgICAgICAgICAgcmVzdWx0Lm1heUNsb2JiZXJXb3JsZCB8PSBtX2dyYXBoLmNs
b2JiZXJzV29ybGQoaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOb05vZGU7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAvLyBCZSBzYWZlIGluIHJlbGVh
c2UgbW9kZS4KKyAgICAgICAgcmVzdWx0Lm1heUJlQWNjZXNzZWQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICB2b2lkIHBlcmZvcm1TdWJzdGl0dXRpb24o
RWRnZSYgY2hpbGQsIGJvb2wgYWRkUmVmID0gdHJ1ZSkKQEAgLTg2MSwxNiArODg2LDIyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBpZiAobV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29u
dmVyZ2VkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwot
ICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IHZh
cmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKLSAgICAgICAgICAgIE5vZGVJbmRleCByZXBsYWNl
bWVudEluZGV4ID0gc2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKGxvY2FsLCBub2RlLmNoaWxkMSgp
LmluZGV4KCkpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50SW5kZXggPT0gTm9Ob2RlKQor
ICAgICAgICAgICAgTm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwor
ICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50Lm9wKCkgIT0gU2V0TG9jYWwpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8g
cmVtb3ZlIFNldExvY2FscyB0aGF0IGNhbiBleGl0OyB3ZSBqdXN0IG5lZWQKKyAgICAgICAgICAg
IC8vIHRvIHJlcGxhY2UgdGhlbSB3aXRoIGFwcHJvcHJpYXRlIHR5cGUgY2hlY2tzLgorICAgICAg
ICAgICAgaWYgKHJlcGxhY2VtZW50LmNhbkV4aXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIFNldExvY2FsU3RvcmVFbGltaW5hdGlvblJlc3VsdCByZXN1bHQgPQorICAg
ICAgICAgICAgICAgIHNldExvY2FsU3RvcmVFbGltaW5hdGlvbihsb2NhbCwgbm9kZS5jaGlsZDEo
KS5pbmRleCgpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQubWF5QmVBY2Nlc3NlZCB8fCByZXN1
bHQubWF5Q2xvYmJlcldvcmxkKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Tm9kZSYgcmVwbGFjZW1lbnQgPSBtX2dyYXBoW3JlcGxhY2VtZW50SW5kZXhdOwogICAgICAgICAg
ICAgQVNTRVJUKHJlcGxhY2VtZW50Lm9wKCkgPT0gU2V0TG9jYWwpOwogICAgICAgICAgICAgQVNT
RVJUKHJlcGxhY2VtZW50LnJlZkNvdW50KCkgPT0gMSk7CiAgICAgICAgICAgICBBU1NFUlQocmVw
bGFjZW1lbnQuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogSW52ZXN0
aWdhdGUgdXNpbmcgbWF5RXhpdCBhcyBhIGZ1cnRoZXIgb3B0aW1pemF0aW9uLgogICAgICAgICAg
ICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhQaGFudG9tKTsKICAgICAgICAgICAgIE5vZGVJ
bmRleCBkYXRhTm9kZUluZGV4ID0gcmVwbGFjZW1lbnQuY2hpbGQxKCkuaW5kZXgoKTsKICAgICAg
ICAgICAgIEFTU0VSVChtX2dyYXBoW2RhdGFOb2RlSW5kZXhdLmhhc1Jlc3VsdCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24gMTE5MzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNiArNTUsOCBAQAogI2Vsc2UKICNkZWZpbmUgREZHX0VOQUJMRV9WQUxJREFUSU9OIDAKICNl
bmRpZgorLy8gRW5hYmxlIHZhbGlkYXRpb24gb24gY29tcGxldGlvbiBvZiBlYWNoIHBoYXNlLgor
I2RlZmluZSBERkdfRU5BQkxFX1BFUl9QSEFTRV9WQUxJREFUSU9OIDAKIC8vIENvbnNpc3RlbmN5
IGNoZWNrIGNvbnRlbnRzIGNvbXBpbGVyIGRhdGEgc3RydWN0dXJlcy4KICNkZWZpbmUgREZHX0VO
QUJMRV9DT05TSVNURU5DWV9DSEVDSyAwCiAvLyBFbWl0IGEgYnJlYWtwb2ludCBpbnRvIHRoZSBo
ZWFkIG9mIGV2ZXJ5IGdlbmVyYXRlZCBmdW5jdGlvbiwgdG8gYWlkIGRlYnVnZ2luZyBpbiBHREIu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDkgKzYwLDM1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJs
b2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxvY2spIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXN0YXRlLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwog
ICAgICAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay0+YXQoaW5kZXhJbkJs
b2NrKTsKICAgICAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJvb2wgZWxpbWluYXRlZCA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3Ao
KSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVP
cmlnaW4pKS5tX3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChub2RlLnJlZkNvdW50KCkgPT0gMSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0RmxhZ3MoUGhhbnRvbSk7CisgICAgICAgICAgICAg
ICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgcGxhY2UgdG8gcmVtb3ZlIENoZWNrU3RydWN0
dXJlJ3MuCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZWxpbWluYXRlZCkgeworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN0YXRlLmV4
ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2Vu
ZXJhdGUoKQogICAgICAgICAgICAgICAgICAgICB8fCBtX2dyYXBoLmNsb2JiZXJzV29ybGQobm9k
ZSkKICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS5oYXNDb25zdGFudCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NCwxMCArOTQsMTMgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxl
TQogICAgIGRmZy5tX2RvbWluYXRvcnMuY29tcHV0ZShkZmcpOwogICAgIHBlcmZvcm1WaXJ0dWFs
UmVnaXN0ZXJBbGxvY2F0aW9uKGRmZyk7CiAKKyAgICBHcmFwaER1bXBNb2RlIG1vZGVGb3JGaW5h
bFZhbGlkYXRlID0gRHVtcEdyYXBoOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAg
ICBkYXRhTG9nKCJHcmFwaCBhZnRlciBvcHRpbWl6YXRpb246XG4iKTsKICAgICBkZmcuZHVtcCgp
OworICAgIG1vZGVGb3JGaW5hbFZhbGlkYXRlID0gRG9udER1bXBHcmFwaDsKICNlbmRpZgorICAg
IHZhbGlkYXRlKGRmZywgbW9kZUZvckZpbmFsVmFsaWRhdGUpOwogICAgIAogICAgIEpJVENvbXBp
bGVyIGRhdGFGbG93SklUKGRmZyk7CiAgICAgYm9vbCByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4Miw2ICs2ODIsMTcgQEAg
c3RydWN0IE5vZGUgewogICAgICAgICBBU1NFUlQobV92aXJ0dWFsUmVnaXN0ZXIgPT0gSW52YWxp
ZFZpcnR1YWxSZWdpc3Rlcik7CiAgICAgICAgIG1fdmlydHVhbFJlZ2lzdGVyID0gdmlydHVhbFJl
Z2lzdGVyOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0FyZ3VtZW50UG9zaXRpb25TdGFydCgp
CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBJbmxpbmVTdGFydDsKKyAgICB9CisgICAg
CisgICAgdW5zaWduZWQgYXJndW1lbnRQb3NpdGlvblN0YXJ0KCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChoYXNBcmd1bWVudFBvc2l0aW9uU3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5m
bzsKKyAgICB9CiAKICAgICBib29sIHNob3VsZEdlbmVyYXRlKCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0
LmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMyw3MCArNTMzLDYg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAg
ICAgfQogICAgIAotICAgIC8vIDExKSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2FyeSBhbmQg
cGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2VkCi0gICAgLy8gICAgIHJlZ2lz
dGVycy4KLSAgICAKLSAgICBpZiAoaGF2ZUFyZ3VtZW50cykgewotICAgICAgICBmb3IgKGludCBp
bmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1iZXJPZlJlY292ZXJpZXMoKTsgKytpbmRleCkgewot
ICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZhbHVlUmVj
b3ZlcnkoaW5kZXgpOwotICAgICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgpICE9IEFy
Z3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGludCBvcGVyYW5kID0gZXhpdC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgpOwotICAg
ICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQgaW5saW5lIGNhbGwgZnJhbWUuCi0gICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IDA7Ci0gICAgICAgICAgICBmb3Ig
KElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZTsKLSAgICAgICAgICAgICAgICAgY3VycmVudDsKLSAgICAgICAgICAgICAgICAgY3VycmVu
dCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0gb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAg
ICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50OwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnQgYXJndW1l
bnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxsRnJhbWUp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJz
OjpwYXlsb2FkRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGhhdmVBcmd1bWVudHMgPSBtX2ppdC5icmFuY2gz
MigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vdEVxdWFsLAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSwKLSAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZh
bHVlVGFnKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUp
IHsKLSAgICAgICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoCi0g
ICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVD
YWxsRnJhbWUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMp
KSwKLSAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRl
KCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAgICAgICAgICAgYml0
d2lzZV9jYXN0PHZvaWQqPihvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMpKSwKLSAgICAgICAgICAg
ICAgICAgICAgR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtX2ppdC5jYWxsKEdQUkluZm86Om5vbkFyZ0dQUjApOwotICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihh
cmd1bWVudHNSZWdpc3RlcikpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKLSAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKLSAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OnBheWxvYWRGb3IoYXJndW1lbnRzUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0
YWdGb3IodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwot
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwotICAgICAg
ICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDAp
OyAvLyBuby1vcCBtb3ZlIG9uIGFsbW9zdCBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBoYXZlQXJndW1lbnRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIG1faml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdG
b3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMCwg
QXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKICAgICAvLyAxMikgQWRqdXN0IHRoZSBvbGQgSklUJ3MgZXhlY3V0ZSBjb3VudGVyLiBT
aW5jZSB3ZSBhcmUgZXhpdGluZyBPU1IsIHdlIGtub3cKICAgICAvLyAgICAgdGhhdCBhbGwgbmV3
IGNhbGxzIGludG8gdGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVj
dXRlCiAgICAgLy8gICAgIGNvdW50ZXIgb25seSBhZmZlY3RzIGNhbGwgZnJhbWVzIHRoYXQgcGVy
Zm9ybWVkIE9TUiBleGl0IGFuZCBjYWxsIGZyYW1lcwpAQCAtNjM1LDE0ICs1NzEsNyBAQCB2b2lk
IE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgCiAgICAgaGFuZGxlRXhp
dENvdW50cyhleGl0KTsKICAgICAKLSAgICAvLyAxMykgTG9hZCB0aGUgcmVzdWx0IG9mIHRoZSBs
YXN0IGJ5dGVjb2RlIG9wZXJhdGlvbiBpbnRvIHJlZ1QwLgotICAgIAotICAgIGlmIChleGl0Lm1f
bGFzdFNldE9wZXJhbmQgIT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkgewotICAg
ICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0dWFsUmVn
aXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0UmVnaXN0
ZXIpOwotICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1
YWxSZWdpc3RlcilleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRS
ZWdpc3RlcjIpOwotICAgIH0KLSAgICAKLSAgICAvLyAxNCkgRml4IGNhbGwgZnJhbWUgKHMpLgor
ICAgIC8vIDEzKSBSZWlmeSBpbmxpbmVkIGNhbGwgZnJhbWVzLgogICAgIAogICAgIEFTU0VSVCht
X2ppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOwogICAgIG1faml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2spKTsKQEAgLTY3OCwxMCAr
NjA3LDgzIEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGlubGluZUNh
bGxGcmFtZS0+Y2FsbGVlLmdldCgpKSwgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKChWaXJ0
dWFsUmVnaXN0ZXIpKGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBSZWdpc3RlckZpbGU6
OkNhbGxlZSkpKTsKICAgICB9CiAgICAgCisgICAgLy8gMTQpIENyZWF0ZSBhcmd1bWVudHMgaWYg
bmVjZXNzYXJ5IGFuZCBwbGFjZSB0aGVtIGludG8gdGhlIGFwcHJvcHJpYXRlIGFsaWFzZWQKKyAg
ICAvLyAgICAgcmVnaXN0ZXJzLgorICAgIAorICAgIGlmIChoYXZlQXJndW1lbnRzKSB7CisgICAg
ICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBleGl0Lm51bWJlck9mUmVjb3Zlcmllcygp
OyArK2luZGV4KSB7CisgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9
IGV4aXQudmFsdWVSZWNvdmVyeShpbmRleCk7CisgICAgICAgICAgICBpZiAocmVjb3ZlcnkudGVj
aG5pcXVlKCkgIT0gQXJndW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgaW50IG9wZXJhbmQgPSBleGl0Lm9wZXJhbmRGb3JJbmRl
eChpbmRleCk7CisgICAgICAgICAgICAvLyBGaW5kIHRoZSByaWdodCBpbmxpbmUgY2FsbCBmcmFt
ZS4KKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gMDsKKyAg
ICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gZXhpdC5tX2NvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgICBjdXJyZW50OworICAgICAgICAg
ICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkgeworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50LT5zdGFja09mZnNldCA8PSBvcGVyYW5kKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IGN1cnJlbnQ7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9IG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKGlu
bGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoYXJndW1lbnRzUmVnaXN0ZXIpLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgaGF2ZUFyZ3VtZW50cyA9
IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6Tm90RXF1
YWwsCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoYXJndW1lbnRzUmVn
aXN0ZXIpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoCisg
ICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlSW5s
aW5lZEFyZ3VtZW50cykpLAorICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIw
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNFeGVjU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKAorICAgICAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCisgICAgICAgICAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cykp
LAorICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1faml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CisgICAgICAg
ICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6dGFnRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9y
ZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihhcmd1bWVudHNSZWdpc3RlcikpOwor
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OnRhZ0Zvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
UmVnaXN0ZXIpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJldHVyblZhbHVlR1BSLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVy
czo6cGF5bG9hZEZvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0
ZXIpKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBH
UFJJbmZvOjpyZWdUMCk7IC8vIG5vLW9wIG1vdmUgb24gYWxtb3N0IGFsbCBwbGF0Zm9ybXMuCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGhhdmVBcmd1bWVudHMubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQ
UkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIC8vIDE1KSBMb2FkIHRoZSByZXN1bHQgb2YgdGhlIGxh
c3QgYnl0ZWNvZGUgb3BlcmF0aW9uIGludG8gcmVnVDAuCisgICAgCisgICAgaWYgKGV4aXQubV9s
YXN0U2V0T3BlcmFuZCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSB7CisgICAg
ICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdp
c3RlcilleGl0Lm1fbGFzdFNldE9wZXJhbmQpLCBHUFJJbmZvOjpjYWNoZWRSZXN1bHRSZWdpc3Rl
cik7CisgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVh
bFJlZ2lzdGVyKWV4aXQubV9sYXN0U2V0T3BlcmFuZCksIEdQUkluZm86OmNhY2hlZFJlc3VsdFJl
Z2lzdGVyMik7CisgICAgfQorICAgIAorICAgIC8vIDE2KSBBZGp1c3QgdGhlIGNhbGwgZnJhbWUg
cG9pbnRlci4KKyAgICAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KQogICAgICAgICBtX2ppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhp
dC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKLSAgICAvLyAxNSkg
SnVtcCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGJhc2VsaW5lIEpJVCBjb2RlLgorICAgIC8vIDE3
KSBKdW1wIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgYmFzZWxpbmUgSklUIGNvZGUuCiAgICAgCiAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IG1faml0LmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGV4aXQubV9jb2RlT3JpZ2luKTsKICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0PiYgZGVjb2RlZENvZGVNYXAgPSBtX2ppdC5kZWNvZGVkQ29kZU1hcEZvcihiYXNlbGluZUNv
ZGVCbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTE5MzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
MSw1OCArNTExLDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIC8vIDEzKSBDcmVhdGUgYXJndW1lbnRzIGlmIG5l
Y2Vzc2FyeSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2VkCi0gICAg
Ly8gICAgIHJlZ2lzdGVycy4KLSAgICAKLSAgICBpZiAoaGF2ZUFyZ3VtZW50cykgewotICAgICAg
ICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1iZXJPZlJlY292ZXJpZXMoKTsg
KytpbmRleCkgewotICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBl
eGl0LnZhbHVlUmVjb3ZlcnkoaW5kZXgpOwotICAgICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2hu
aXF1ZSgpICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGludCBvcGVyYW5kID0gZXhpdC5vcGVyYW5kRm9ySW5kZXgo
aW5kZXgpOwotICAgICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQgaW5saW5lIGNhbGwgZnJhbWUu
Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IDA7Ci0gICAg
ICAgICAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGV4aXQubV9jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICAgY3VycmVudDsKLSAgICAgICAgICAg
ICAgICAgY3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0gb3BlcmFuZCkgewotICAgICAg
ICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50OwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpbnQgYXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihpbmxp
bmVDYWxsRnJhbWUpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3RlciksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBoYXZlQXJndW1lbnRzID0g
bV9qaXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5v
blplcm8sIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlu
bGluZUNhbGxGcmFtZSkgewotICAgICAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0g
ICAgICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2b2lkKj4ob3BlcmF0aW9uQ3JlYXRlSW5s
aW5lZEFyZ3VtZW50cykpLAotICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIw
KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNFeGVjU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cykp
LAotICAgICAgICAgICAgICAgICAgICBHUFJJbmZvOjpub25BcmdHUFIwKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG1faml0LmNhbGwoR1BSSW5mbzo6bm9uQXJnR1BSMCk7Ci0gICAgICAg
ICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgQXNzZW1ibHlIZWxw
ZXJzOjphZGRyZXNzRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBtX2ppdC5z
dG9yZVB0cigKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwKLSAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKSkpOwotICAgICAgICAgICAgbV9qaXQubW92ZShH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBuby1vcCBtb3ZlIG9u
IGFsbW9zdCBhbGwgcGxhdGZvcm1zLgotICAgICAgICAgICAgCi0gICAgICAgICAgICBoYXZlQXJn
dW1lbnRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86
OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwotICAgICAgICB9
Ci0gICAgfQotICAgIAotICAgIC8vIDE0KSBBZGp1c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNv
dW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9TUiwgd2Uga25vdworICAgIC8vIDEzKSBBZGp1
c3QgdGhlIG9sZCBKSVQncyBleGVjdXRlIGNvdW50ZXIuIFNpbmNlIHdlIGFyZSBleGl0aW5nIE9T
Uiwgd2Uga25vdwogICAgIC8vICAgICB0aGF0IGFsbCBuZXcgY2FsbHMgaW50byB0aGlzIGNvZGUg
d2lsbCBnbyB0byB0aGUgbmV3IEpJVCwgc28gdGhlIGV4ZWN1dGUKICAgICAvLyAgICAgY291bnRl
ciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQgYW5kIGNh
bGwgZnJhbWVzCiAgICAgLy8gICAgIHRoYXQgd2VyZSBzdGlsbCBleGVjdXRpbmcgdGhlIG9sZCBK
SVQgYXQgdGhlIHRpbWUgb2YgYW5vdGhlciBjYWxsIGZyYW1lJ3MKQEAgLTYwMCwxMiArNTQ5LDcg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIAogICAgIGhh
bmRsZUV4aXRDb3VudHMoZXhpdCk7CiAgICAgCi0gICAgLy8gMTUpIExvYWQgdGhlIHJlc3VsdCBv
ZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50byByZWdUMC4KLSAgICAKLSAgICBpZiAo
ZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKChWaXJ0
dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVkUmVzdWx0
UmVnaXN0ZXIpOwotICAgIAotICAgIC8vIDE2KSBGaXggY2FsbCBmcmFtZShzKS4KKyAgICAvLyAx
NCkgUmVpZnkgaW5saW5lZCBjYWxsIGZyYW1lcy4KICAgICAKICAgICBBU1NFUlQobV9qaXQuYmFz
ZWxpbmVDb2RlQmxvY2soKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
ICAgICBtX2ppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobV9qaXQu
YmFzZWxpbmVDb2RlQmxvY2soKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVh
bFJlZ2lzdGVyKVJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrKSk7CkBAIC02MzgsMTAgKzU4Miw2MyBA
QCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgIG1faml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZS5nZXQoKSksIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lz
dGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgUmVnaXN0ZXJGaWxlOjpDYWxsZWUp
KSk7CiAgICAgfQogICAgIAorICAgIC8vIDE1KSBDcmVhdGUgYXJndW1lbnRzIGlmIG5lY2Vzc2Fy
eSBhbmQgcGxhY2UgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBhbGlhc2VkCisgICAgLy8gICAg
IHJlZ2lzdGVycy4KKyAgICAKKyAgICBpZiAoaGF2ZUFyZ3VtZW50cykgeworICAgICAgICBmb3Ig
KGludCBpbmRleCA9IDA7IGluZGV4IDwgZXhpdC5udW1iZXJPZlJlY292ZXJpZXMoKTsgKytpbmRl
eCkgeworICAgICAgICAgICAgY29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBleGl0LnZh
bHVlUmVjb3ZlcnkoaW5kZXgpOworICAgICAgICAgICAgaWYgKHJlY292ZXJ5LnRlY2huaXF1ZSgp
ICE9IEFyZ3VtZW50c1RoYXRXZXJlTm90Q3JlYXRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIGludCBvcGVyYW5kID0gZXhpdC5vcGVyYW5kRm9ySW5kZXgoaW5kZXgp
OworICAgICAgICAgICAgLy8gRmluZCB0aGUgcmlnaHQgaW5saW5lIGNhbGwgZnJhbWUuCisgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IDA7CisgICAgICAgICAg
ICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICAgY3VycmVudDsKKyAgICAgICAgICAgICAgICAg
Y3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY3VycmVudC0+c3RhY2tPZmZzZXQgPD0gb3BlcmFuZCkgeworICAgICAgICAgICAg
ICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPSBjdXJyZW50OworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQg
YXJndW1lbnRzUmVnaXN0ZXIgPSBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihpbmxpbmVDYWxs
RnJhbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3RlciksIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBoYXZlQXJndW1lbnRzID0gbV9qaXQu
YnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8s
IEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSkgeworICAgICAgICAgICAgICAgIG1faml0LmFkZFB0cihBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMoR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNF
eGVjU3RhdGUoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoCisgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKAorICAgICAgICAgICAgICAgICAgICBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cykpLAorICAgICAgICAgICAgICAg
IEdQUkluZm86Om5vbkFyZ0dQUjApOworICAgICAgICAgICAgbV9qaXQuY2FsbChHUFJJbmZvOjpu
b25BcmdHUFIwKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoYXJndW1lbnRzUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXIpKSk7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpyZWdU
MCk7IC8vIG5vLW9wIG1vdmUgb24gYWxtb3N0IGFsbCBwbGF0Zm9ybXMuCisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGhhdmVBcmd1bWVudHMubGluaygmbV9qaXQpOworICAgICAgICAgICAgbV9q
aXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihv
cGVyYW5kKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gMTYpIExvYWQgdGhlIHJl
c3VsdCBvZiB0aGUgbGFzdCBieXRlY29kZSBvcGVyYXRpb24gaW50byByZWdUMC4KKyAgICAKKyAg
ICBpZiAoZXhpdC5tX2xhc3RTZXRPcGVyYW5kICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpCisgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpZXhpdC5tX2xhc3RTZXRPcGVyYW5kKSwgR1BSSW5mbzo6Y2FjaGVk
UmVzdWx0UmVnaXN0ZXIpOworICAgIAorICAgIC8vIDE3KSBBZGp1c3QgdGhlIGNhbGwgZnJhbWUg
cG9pbnRlci4KKyAgICAKICAgICBpZiAoZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KQogICAgICAgICBtX2ppdC5hZGRQdHIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZXhp
dC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgCi0gICAgLy8g
MTcpIEp1bXAgaW50byB0aGUgY29ycmVzcG9uZGluZyBiYXNlbGluZSBKSVQgY29kZS4KKyAgICAv
LyAxOCkgSnVtcCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGJhc2VsaW5lIEpJVCBjb2RlLgogICAg
IAogICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBtX2ppdC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihleGl0Lm1fY29kZU9yaWdpbik7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4mIGRlY29kZWRDb2RlTWFwID0gbV9qaXQuZGVjb2RlZENvZGVNYXBGb3IoYmFzZWxp
bmVDb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFzZS5jcHAJ
KHJldmlzaW9uIDExOTMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOSw3ICszOSw5IEBAIHZvaWQgUGhhc2U6OmJlZ2luUGhhc2Uo
KQogICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSAlczpcbiIsIG1fbmFtZSk7CiAgICAgbV9ncmFw
aC5kdW1wKCk7CiB9CisjZW5kaWYKIAorI2lmIERGR19FTkFCTEUoUEVSX1BIQVNFX1ZBTElEQVRJ
T04pCiB2b2lkIFBoYXNlOjplbmRQaGFzZSgpCiB7CiAgICAgdmFsaWRhdGUobV9ncmFwaCwgRHVt
cEdyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYXNlLmgJKHJldmlzaW9u
IDExOTMxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGhhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjUsMTEgKzY1LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FsbCB0aGVzZSBob29r
cyB3aGVuIHN0YXJ0aW5nIGFuZCBmaW5pc2hpbmcuCiAjaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQogICAgIHZvaWQgYmVnaW5QaGFzZSgpOwotICAgIHZvaWQgZW5kUGhh
c2UoKTsKLSNlbHNlIC8vIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKKyNl
bHNlCiAgICAgdm9pZCBiZWdpblBoYXNlKCkgeyB9CisjZW5kaWYKKyNpZiBERkdfRU5BQkxFKFBF
Ul9QSEFTRV9WQUxJREFUSU9OKQorICAgIHZvaWQgZW5kUGhhc2UoKTsKKyNlbHNlCiAgICAgdm9p
ZCBlbmRQaGFzZSgpIHsgfQotI2VuZGlmIC8vIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05f
VkVSQk9TRSkKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUGhhc2VUeXBlPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCShyZXZpc2lvbiAxMTkzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQ4LDcgKzE4
NDgsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAg
c3dpdGNoIChvcCkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgaW5pdENvbnN0YW50
SW5mbyhtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBQaGFudG9t
QXJndW1lbnRzOgorICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBtdXN0LWdlbmVyYXRl
LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgLy8gQnV0IGFzIGEgcmVs
ZWFzZS1tb2RlIGZhbGwtYmFjayBtYWtlIGl0IHRoZSBlbXB0eSB2YWx1ZS4KICAgICAgICAgaW5p
dENvbnN0YW50SW5mbyhtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zODU4
LDE2ICszODY0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7Ci0g
ICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCi0gICAgICAgICAgICAgICAgbV9zdGF0ZS52
YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpIHsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6dGFnRm9yKG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29k
ZU9yaWdpbikpLAotICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1w
dHlWYWx1ZVRhZykpKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQoIWlzRW1wdHlQcmVkaWN0
aW9uKAorICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAorICAgICAgICAg
ICAgICAgIG1faml0LmdyYXBoKCkuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2lu
KSkubV90eXBlKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5j
b2RlT3JpZ2luKSksCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTkzMTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTI0
LDcgKzE5MjQsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
CiAgICAgc3dpdGNoIChvcCkgewogICAgIGNhc2UgSlNDb25zdGFudDoKKyAgICAgICAgaW5pdENv
bnN0YW50SW5mbyhtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBQ
aGFudG9tQXJndW1lbnRzOgorICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBtdXN0LWdl
bmVyYXRlLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgLy8gQnV0IGFz
IGEgcmVsZWFzZS1tb2RlIGZhbGwtYmFjayBtYWtlIGl0IHRoZSBlbXB0eSB2YWx1ZS4KICAgICAg
ICAgaW5pdENvbnN0YW50SW5mbyhtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogCkBA
IC00MDMyLDE2ICs0MDM4LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVk
OiB7Ci0gICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFw
aCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpIHsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgQXJndW1lbnRzRXNj
YXBlZCwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3RQdHIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAotICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKKyAgICAgICAgICAgICAgICBtX2ppdC5n
cmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgQXJndW1lbnRzRXNjYXBlZCwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigK
KyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6YWRkcmVzc0ZvcigKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpKTsKICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTE5MzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNDAsOCArMTA0MCwyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICBjYXNlIElubGluZVN0YXJ0OiB7CiAgICAg
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKKyAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFBvc2l0aW9uU3RhcnQgPSBub2RlLmFyZ3VtZW50
UG9zaXRpb25TdGFydCgpOworICAgICAgICAgICAgICAgIGJvb2wgYXJndW1lbnRzQXJlQ2FwdHVy
ZWQgPQorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxG
cmFtZShpbmxpbmVDYWxsRnJhbWUpLT5hcmd1bWVudHNBcmVDYXB0dXJlZCgpOwogICAgICAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsr
aSkgewotICAgICAgICAgICAgICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292ZXJ5ID0gY29tcHV0
ZVZhbHVlUmVjb3ZlcnlGb3IobV92YXJpYWJsZXNbaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKGkpXSk7CisgICAgICAg
ICAgICAgICAgICAgIFZhbHVlUmVjb3ZlcnkgcmVjb3Zlcnk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChhcmd1bWVudHNBcmVDYXB0dXJlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY292
ZXJ5ID0gVmFsdWVSZWNvdmVyeTo6YWxyZWFkeUluUmVnaXN0ZXJGaWxlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlv
biYgYXJndW1lbnRQb3NpdGlvbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQu
Z3JhcGgoKS5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRpb25TdGFydCArIGldOwor
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbi5zaG91bGRVc2VEb3VibGVGb3Jt
YXQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291
cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGlzSW50MzJQcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigpKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEludDMy
SW5SZWdpc3RlckZpbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNBcnJh
eVByZWRpY3Rpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluUmVnaXN0ZXJG
aWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rp
b24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluUmVnaXN0ZXJGaWxlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5SZWdpc3RlckZpbGUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmVjb3ZlcnkgPSBjb21wdXRlVmFsdWVSZWNvdmVyeUZvcih2YWx1
ZVNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgLy8g
VGhlIHJlY292ZXJ5IHNob3VsZCByZWZlciBlaXRoZXIgdG8gc29tZXRoaW5nIHRoYXQgaGFzIGFs
cmVhZHkgYmVlbgogICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZWQgaW50byB0aGUgcmVnaXN0
ZXIgZmlsZSBhdCB0aGUgcmlnaHQgcGxhY2UsIG9yIHRvIGEgY29uc3RhbnQsCiAgICAgICAgICAg
ICAgICAgICAgIC8vIHNpbmNlIHRoZSBBcmd1bWVudHMgY29kZSBpc24ndCBzbWFydCBlbm91Z2gg
dG8gaGFuZGxlIGFueXRoaW5nIGVsc2UuCkBAIC0xMDUxLDcgKzEwNzIsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIlxuUmVjb3ZlcnkgZm9yIGFyZ3VtZW50ICVkOiAiLCBpKTsKICAgICAgICAgICAgICAgICAg
ICAgcmVjb3ZlcnkuZHVtcChXVEY6OmRhdGFGaWxlKCkpOwogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghaSB8fCAocmVjb3ZlcnkuaXNBbHJlYWR5SW5SZWdpc3RlckZpbGUoKSB8
fCByZWNvdmVyeS5pc0NvbnN0YW50KCkpKTsKICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHNbaV0gPSByZWNvdmVyeTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMTkzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOTcsNyAr
MjE5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldExvY2FsID0gJmF0KG1faml0LmdyYXBo
KCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KCsrc2V0TG9jYWxJbmRleEluQmxvY2spKTsKICAgICAg
ICAgICAgIGhhZEludDMyVG9Eb3VibGUgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChz
ZXRMb2NhbC0+b3AoKSA9PSBGbHVzaCkKKyAgICAgICAgaWYgKHNldExvY2FsLT5vcCgpID09IEZs
dXNoIHx8IHNldExvY2FsLT5vcCgpID09IFBoYW50b20pCiAgICAgICAgICAgICBzZXRMb2NhbCA9
ICZhdChtX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdLT5hdCgrK3NldExvY2FsSW5kZXhJ
bkJsb2NrKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaGFkSW50MzJUb0RvdWJsZSkK
</data>
<flag name="review"
          id="152576"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>