<?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>105139</bug_id>
          
          <creation_ts>2012-12-16 16:19:08 -0800</creation_ts>
          <short_desc>Rationalize array profiling for out-of-bounds and hole cases</short_desc>
          <delta_ts>2012-12-17 16:42:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>792387</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-16 16:19:08 -0800</bug_when>
    <thetext>Currently the out-of-bounds case is only detected via rare case profiling, which doesn&apos;t work if we had out-of-bounds in LLInt.  Also we have a mixed reliance on exit profiling even though we don&apos;t necessarily need it, and we don&apos;t have enough ExitKinds to capture all of the cases, which makes looking at OSR exits via the profiler frustrating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792388</commentid>
    <comment_count>1</comment_count>
      <attachid>179668</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-16 16:20:48 -0800</bug_when>
    <thetext>Created attachment 179668
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792396</commentid>
    <comment_count>2</comment_count>
      <attachid>179668</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-16 16:56:06 -0800</bug_when>
    <thetext>Comment on attachment 179668
the patch

Oops, forgot about the 32-bit code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792439</commentid>
    <comment_count>3</comment_count>
      <attachid>179681</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-16 18:59:21 -0800</bug_when>
    <thetext>Created attachment 179681
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792465</commentid>
    <comment_count>4</comment_count>
      <attachid>179681</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-12-16 21:40:56 -0800</bug_when>
    <thetext>Comment on attachment 179681
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=179681&amp;action=review

r=me

&gt; Source/JavaScriptCore/bytecode/ArrayProfile.cpp:106
&gt; +        &amp;&amp; !Heap::isMarked(m_expectedStructure))

Heap::isMarked() will be false if m_expectedStructure is newly allocated. (Not new here, but seems like a potential bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792488</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-16 23:14:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179681 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179681&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/ArrayProfile.cpp:106
&gt; &gt; +        &amp;&amp; !Heap::isMarked(m_expectedStructure))
&gt; 
&gt; Heap::isMarked() will be false if m_expectedStructure is newly allocated. (Not new here, but seems like a potential bug.)

Note that this is only called when OperationInProgress == Collection.  That will only happen when we&apos;re in the marking phase, at which point newly allocated objects should have Heap::isMarked(object) == true.

Does that sound right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792993</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-17 13:40:11 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/137937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793158</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-12-17 16:42:11 -0800</bug_when>
    <thetext>&gt; &gt; Heap::isMarked() will be false if m_expectedStructure is newly allocated. (Not new here, but seems like a potential bug.)
&gt; 
&gt; Note that this is only called when OperationInProgress == Collection.  That will only happen when we&apos;re in the marking phase, at which point newly allocated objects should have Heap::isMarked(object) == true.
&gt; 
&gt; Does that sound right?

Ah, yes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179668</attachid>
            <date>2012-12-16 16:20:48 -0800</date>
            <delta_ts>2012-12-16 18:59:21 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixoob.patch</filename>
            <type>text/plain</type>
            <size>31797</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3ODQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTEyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmF0aW9uYWxpemUgYXJyYXkgcHJvZmlsaW5nIGZvciBvdXQtb2YtYm91bmRzIGFuZCBob2xlIGNh
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUx
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1ha2VzIEFycmF5UHJvZmlsZSB0cmFjayB3aGV0aGVyIG9yIG5vdCB3ZSBoYWQgb3V0LW9mLWJv
dW5kcywgd2hpY2ggYWxsb3dzCisgICAgICAgIGZvciBtb3JlIHByZWNpc2UgZGVjaXNpb24tbWFr
aW5nIGluIHRoZSBERkcuCisgICAgICAgIAorICAgICAgICBBbHNvIGNsZWFuZWQgdXAgRXhpdEtp
bmRzIGZvciBvdXQtb2YtYm91bmRzIGFuZCBob2xlIGNhc2VzIHRvIG1ha2UgaXQgZWFzaWVyIHRv
CisgICAgICAgIGxvb2sgYXQgdGhlbSBpbiB0aGUgcHJvZmlsZXIuCisgICAgICAgIAorICAgICAg
ICBTbGlnaHQgc3BlZWQtdXAgKDUtOCUpIG9uIFN1blNwaWRlci9jcnlwdG8tbWQ1LgorCisgICAg
ICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpBcnJheVByb2Zp
bGU6OmJyaWVmRGVzY3JpcHRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mT3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6OmV4cGVjdGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6cG9seW1vcnBoaWNT
dHJ1Y3R1cmUpOgorICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpkdW1wQ2hhaW4pOgorICAgICAgICAqIGJ5dGVj
b2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAg
ICAgIChKU0M6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRL
aW5kLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2Fz
ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAxMi0xMi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9A
YXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gcmF0aW9uYWxpemUgYW5kIHNpbXBsaWZ5
IFdURjo6YmluYXJ5U2VhcmNoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMTM3ODM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDI4ICs4OSwyMiBAQCB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0CiAg
ICAgICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICAgICAg
aWYgKCFjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUo
bV9sYXN0U2VlblN0cnVjdHVyZSkpCiAgICAgICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA9IGZhbHNlOwotICAgICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYykg
eworICAgICAgICBpZiAoIXN0cnVjdHVyZUlzUG9seW1vcnBoaWMoKSkgewogICAgICAgICAgICAg
aWYgKCFtX2V4cGVjdGVkU3RydWN0dXJlKQogICAgICAgICAgICAgICAgIG1fZXhwZWN0ZWRTdHJ1
Y3R1cmUgPSBtX2xhc3RTZWVuU3RydWN0dXJlOwotICAgICAgICAgICAgZWxzZSBpZiAobV9leHBl
Y3RlZFN0cnVjdHVyZSAhPSBtX2xhc3RTZWVuU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICAgICAg
bV9leHBlY3RlZFN0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmVJc1Bv
bHltb3JwaGljID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1f
ZXhwZWN0ZWRTdHJ1Y3R1cmUgIT0gbV9sYXN0U2VlblN0cnVjdHVyZSkKKyAgICAgICAgICAgICAg
ICBtX2V4cGVjdGVkU3RydWN0dXJlID0gcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKTsKICAgICAgICAg
fQogICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgaWYg
KGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7Ci0gICAgICAgIG1f
c3RydWN0dXJlSXNQb2x5bW9ycGhpYyA9IHRydWU7Ci0gICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1
cmUgPSAwOwotICAgIH0KKyAgICBpZiAoaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJy
YXlNb2RlcykpCisgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBwb2x5bW9ycGhpY1N0cnVj
dHVyZSgpOwogICAgIAogICAgIGlmIChvcGVyYXRpb24gPT0gQ29sbGVjdGlvbgotICAgICAgICAm
JiBtX2V4cGVjdGVkU3RydWN0dXJlCi0gICAgICAgICYmICFIZWFwOjppc01hcmtlZChtX2V4cGVj
dGVkU3RydWN0dXJlKSkgewotICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0gMDsKLSAgICAg
ICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKLSAgICB9CisgICAgICAgICYmIGV4
cGVjdGVkU3RydWN0dXJlKCkKKyAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKG1fZXhwZWN0ZWRT
dHJ1Y3R1cmUpKQorICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0gcG9seW1vcnBoaWNTdHJ1
Y3R1cmUoKTsKIH0KIAogQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMjgsNyArMTIyLDcgQEAgQ1N0cmluZyBBcnJheVByb2Zp
bGU6OmJyaWVmRGVzY3JpcHRpb24oQwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9
CiAgICAgCi0gICAgaWYgKG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYykgeworICAgIGlmIChzdHJ1
Y3R1cmVJc1BvbHltb3JwaGljKCkpIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCiAgICAgICAg
ICAgICBvdXQucHJpbnQoIiwgIik7CiAgICAgICAgIG91dC5wcmludCgic3RydWN0ID0gVE9QIik7
CkBAIC0xNDcsNiArMTQxLDEzIEBAIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0
aW9uKEMKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIAorICAgIGlmICht
X291dE9mQm91bmRzKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAgICAgICAgb3V0
LnByaW50KCIsICIpOworICAgICAgICBvdXQucHJpbnQoIk91dE9mQm91bmRzIik7CisgICAgICAg
IGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKICAgICBpZiAobV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMpIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCiAgICAgICAgICAgICBv
dXQucHJpbnQoIiwgIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEs
OCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQog
ICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKLSAgICAgICAgLCBtX3N0cnVjdHVyZUlz
UG9seW1vcnBoaWMoZmFsc2UpCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShmYWxzZSkKKyAg
ICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzKHRydWUpCiAgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkKQEAgLTEzMyw4ICsx
MzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkKICAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCiAgICAgICAgICwgbV9leHBlY3Rl
ZFN0cnVjdHVyZSgwKQotICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyhmYWxzZSkK
ICAgICAgICAgLCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQorICAgICAgICAsIG1fb3V0T2ZCb3Vu
ZHMoZmFsc2UpCiAgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2Up
CiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAg
LCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQpAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpIHsgcmV0dXJuICZtX2xh
c3RTZWVuU3RydWN0dXJlOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rlcygp
IHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1h
eVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KKyAgICBib29sKiBh
ZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAg
ICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKQEAg
LTE1NCwxMCArMTU1LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihDb2RlQmxvY2sqLCBPcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb24p
OwogICAgIAotICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2V4cGVjdGVkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBleHBlY3RlZFN0cnVjdHVy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RydWN0dXJlSXNQb2x5bW9ycGhpYygpKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJl
OworICAgIH0KICAgICBib29sIHN0cnVjdHVyZUlzUG9seW1vcnBoaWMoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYzsKKyAgICAgICAgcmV0dXJu
IG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPT0gcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKTsKICAgICB9CiAg
ICAgYm9vbCBoYXNEZWZpbml0ZVN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewpAQCAtMTY4LDYgKzE3
NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNv
bnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAgICAgCiAgICAg
Ym9vbCBtYXlTdG9yZVRvSG9sZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVUb0hvbGU7IH0K
KyAgICBib29sIG91dE9mQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJvdW5kczsgfQog
ICAgIAogICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgY29uc3QgeyByZXR1
cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KICAgICAKQEAgLTE3NiwxMSArMTgz
LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBwb2x5bW9ycGhpY1N0cnVjdHVy
ZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KDEpKTsgfQorICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgU3Ry
dWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9leHBlY3RlZFN0
cnVjdHVyZTsKLSAgICBib29sIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYzsKICAgICBib29sIG1f
bWF5U3RvcmVUb0hvbGU7IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5k
aWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFy
cmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJy
ZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRz
IG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3
aGF0IGl0cyBuYW1lIGltcGxpZXMuCisgICAgYm9vbCBtX291dE9mQm91bmRzOwogICAgIGJvb2wg
bV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7CiAgICAgYm9vbCBtX3VzZXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlczsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEzNzgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZvaWQgZHVtcENo
YWluKFByaW50U3RyZWFtJiBvdXQsIAogICAgICAgICBpZiAoZmlyc3QpCiAgICAgICAgICAgICBm
aXJzdCA9IGZhbHNlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiLCAiKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0
LCAic3RydWN0IiwgZXhlYywgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCksIGlkZW50KTsKICAgICB9
CiAgICAgb3V0LnByaW50ZigiXSIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4ICs0OCwx
NCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJl
dHVybiAiT3ZlcmZsb3ciOwogICAgIGNhc2UgTmVnYXRpdmVaZXJvOgogICAgICAgICByZXR1cm4g
Ik5lZ2F0aXZlWmVybyI7CisgICAgY2FzZSBTdG9yZVRvSG9sZToKKyAgICAgICAgcmV0dXJuICJT
dG9yZVRvSG9sZSI7CisgICAgY2FzZSBMb2FkRnJvbUhvbGU6CisgICAgICAgIHJldHVybiAiTG9h
ZEZyb21Ib2xlIjsKICAgICBjYXNlIE91dE9mQm91bmRzOgogICAgICAgICByZXR1cm4gIk91dE9m
Qm91bmRzIjsKKyAgICBjYXNlIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kczoKKyAgICAgICAgcmV0
dXJuICJTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMiOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVy
YWdlOgogICAgICAgICByZXR1cm4gIkluYWRlcXVhdGVDb3ZlcmFnZSI7CiAgICAgY2FzZSBBcmd1
bWVudHNFc2NhcGVkOgpAQCAtNTksNiArNjUsNyBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3Ry
aW5nKEV4aXRLaW5kIGtpCiAgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6CiAgICAgICAg
IHJldHVybiAiVW5jb3VudGFibGVXYXRjaHBvaW50IjsKICAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsKICAgICB9CiB9
CkBAIC03MSw2ICs3OCwxMCBAQCBib29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQga2lu
ZCkKICAgICBjYXNlIEJhZFR5cGU6CiAgICAgY2FzZSBVbmNvdW50YWJsZToKICAgICBjYXNlIFVu
Y291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICBjYXNlIExvYWRGcm9tSG9sZTogLy8gQWxyZWFkeSBj
b3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBKSVQuCisgICAgY2FzZSBTdG9yZVRvSG9s
ZTogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBKSVQuCisgICAg
Y2FzZSBPdXRPZkJvdW5kczogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNl
bGluZSBKSVQuCisgICAgY2FzZSBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHM6IC8vIEFscmVhZHkg
Y291bnRlZCBkaXJlY3RseSBieSB0aGUgYmFzZWxpbmUgSklULgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTM3ODM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDEwIEBAIGVudW0gRXhpdEtpbmQgewogICAgIEJhZEluZGV4aW5nVHlwZSwgLy8g
V2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCiAgICAgT3ZlcmZs
b3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0aXZlWmVybywg
Ly8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVyby4KKyAgICBT
dG9yZVRvSG9sZSwgLy8gV2UgaGFkIGEgc3RvcmUgdG8gYSBob2xlLgorICAgIExvYWRGcm9tSG9s
ZSwgLy8gV2UgaGFkIGEgbG9hZCBmcm9tIGEgaG9sZS4KICAgICBPdXRPZkJvdW5kcywgLy8gV2Ug
aGFkIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHRvIGFuIGFycmF5LgorICAgIFN0b3JlVG9Ib2xl
T3JPdXRPZkJvdW5kcywgLy8gV2UncmUgc2ltdWx0YW5lb3VzbHkgc3BlY3VsYXRpbmcgdGhhdCB3
ZSdyZSBpbiBib3VuZHMgYW5kIG5vdCBhY2Nlc3NpbmcgYSBob2xlLCBhbmQgb25lIG9mIHRob3Nl
IHRoaW5ncyBkaWRuJ3QgcGFuIG91dC4KICAgICBJbmFkZXF1YXRlQ292ZXJhZ2UsIC8vIFdlIGV4
aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3QgaGF2ZSBwcm9maWxp
bmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
YXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0by4KICAgICBVbmNv
dW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSByZWFzb25zLCBhbmQg
d2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hvdWxkIGJlIHZpZXdl
ZCBhcyBhIEZJWE1FLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNzgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzksOCAr
OTM5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBtYWtlU2Fm
ZSA9Ci0gICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmNvdWxk
VGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgfHwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgT3V0T2ZCb3Vu
ZHMpOworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtl
bHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKKyAgICAgICAgICAgIHx8IHByb2ZpbGUt
Pm91dE9mQm91bmRzKCk7CiAgICAgICAgIAogICAgICAgICBBcnJheU1vZGUgcmVzdWx0ID0gQXJy
YXlNb2RlOjpmcm9tT2JzZXJ2ZWQocHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7CiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcw
LDE5ICsyMDcwLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3Qgc2xvd0Nhc2VzOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlOwogCiAgICAg
aWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
LSAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAg
ICAgICBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAgCi0gICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKKyAgICAgICAgc2xvd0Nhc2UgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091dE9mQm91
bmRzKCkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIHNsb3dDYXNlKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcHJvcGVydHlSZWcpOwogICAg
ICAgICBtX2ppdC5zdG9yZTMyKHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTIxMDIs
NyArMjEwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHUKICAg
ICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsCisgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCiAgICAgICAgICAg
ICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlC
b3VuZHNOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VSZWcsIHByb3Bl
cnR5UmVnLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkUmVnKSk7CiAgICAgfQpAQCAtMjY0NSw3ICsy
NjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgo
c3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZy5ncHIoKSk7Ci0g
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHJlc3VsdFRh
Zy5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZXN1bHRUYWcuZ3By
KCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CiAgICAgICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3By
KCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MDYsNyAr
MjcwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZnByKCkpOwogICAg
ICAgICAgICAgICAgIGlmICghbm9kZS5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigpKQotICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTm90RXF1
YWxPclVub3JkZXJlZCwgcmVzdWx0LmZwcigpLCByZXN1bHQuZnByKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9y
VW5vcmRlcmVkLCByZXN1bHQuZnByKCksIHJlc3VsdC5mcHIoKSkpOwogICAgICAgICAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI3NjIsNyArMjc2Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKIAogICAgICAgICAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1
bHRUYWcuZ3ByKCkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCByZXN1bHRUYWcuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVl
VGFnKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgcmVzdWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykp
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9C
SkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCks
IHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKQEAgLTI5NjYsMTEgKzI5NjYs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlOyBpZiBzbyBpbmNyZW1lbnQg
bV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNJbkJvdW5k
cygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmNvdW50YWJsZSBiZWNhdXNlIGlm
IHdlIHRha2UgdGhpcyBleGl0LCB0aGVuIHRoZSBiYXNlbGluZSBKSVQKLSAgICAgICAgICAgICAg
ICAvLyB3aWxsIGltbWVkaWF0ZWx5IGNvdW50IHRoZSBob2xlIHN0b3JlLiBTbyB0aGVyZSBpcyBu
byBuZWVkIGZvciBleGl0Ci0gICAgICAgICAgICAgICAgLy8gcHJvZmlsaW5nLgogICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgIFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgICAgIFN0b3JlVG9Ib2xl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9y
YWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcp
KSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdEhvbGVWYWx1ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2Us
IG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MTM3ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1
bHQuZ3ByKCkpKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgsIG5vZGUuYXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQzMiA/
IERhdGFGb3JtYXRKU0ludGVnZXIgOiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMjY1Nyw3ICsyNjU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCksIHJlc3VsdC5mcHIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmFy
cmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCByZXN1bHQuZnBy
KCksIHJlc3VsdC5mcHIoKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHJlc3VsdC5mcHIoKSwg
cmVzdWx0LmZwcigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIo
KSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMjcxMSw3ICsyNzExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkJh
c2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJlc3VsdC5ncHIoKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9h
ZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg3NCwxOSArMjg3NCwxOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cG9yYXJ5OwogICAgICAgICAgICAgR1BSUmVnIHRlbXBvcmFyeVJlZyA9IHRlbXBvcmFyeVJlZ2lz
dGVyRm9yUHV0QnlWYWwodGVtcG9yYXJ5LCBub2RlKTsKIAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIHNsb3dDYXNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlz
SW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAg
ICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAg
ICAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKKyAgICAgICAgICAgICAgICBzbG93Q2FzZSA9IG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9y
TGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIWFycmF5
TW9kZS5pc091dE9mQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgc2xvd0Nhc2VzKTsKKyAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBzbG93Q2FzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
bV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBwcm9wZXJ0eVJlZywgdGVtcG9yYXJ5UmVnKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHRlbXBvcmFyeVJlZywgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgp
KSk7CkBAIC0yOTA0LDcgKzI5MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewog
ICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
CisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1
dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJh
c2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgICAgICAgICAgfQpAQCAtMjk1OCwx
MSArMjk1OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgd3JpdGluZyB0byBhIGhvbGU7IGlmIHNvIGlu
Y3JlbWVudCBtX251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5p
c0luQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVuY291bnRhYmxlIGJl
Y2F1c2UgaWYgd2UgdGFrZSB0aGlzIGV4aXQsIHRoZW4gdGhlIGJhc2VsaW5lIEpJVAotICAgICAg
ICAgICAgICAgIC8vIHdpbGwgaW1tZWRpYXRlbHkgY291bnQgdGhlIGhvbGUgc3RvcmUuIFNvIHRo
ZXJlIGlzIG5vIG5lZWQgZm9yIGV4aXQKLSAgICAgICAgICAgICAgICAvLyBwcm9maWxpbmcuCiAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICAgICAgVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgU3Rv
cmVUb0hvbGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdo
dCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RI
b2xlVmFsdWUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3Rv
clswXSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkwMCwxOSArMTkwMCwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWCiAgICAgR1BSVGVt
cG9yYXJ5IHRlbXBvcmFyeTsKICAgICBHUFJSZWcgdGVtcG9yYXJ5UmVnID0gdGVtcG9yYXJ5UmVn
aXN0ZXJGb3JQdXRCeVZhbCh0ZW1wb3JhcnksIG5vZGUpOwogCi0gICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZTsK
ICAgICAKICAgICBpZiAoYXJyYXlNb2RlLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwKKyAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAK
LSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSkpOworICAgICAgICBzbG93
Q2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9m
ZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghYXJyYXlNb2Rl
LmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgc2xvd0Nhc2Up
OwogICAgICAgICAKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBwcm9wZXJ0
eVJlZywgdGVtcG9yYXJ5UmVnKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMih0ZW1wb3JhcnlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSkpOwpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURvdWJsZVB1dEJ5VgogICAgIGlmIChhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygp
KSB7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKKyAgICAgICAgICAgICAgICBz
bG93Q2FzZSwgdGhpcywKICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwKICAg
ICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMzc4MzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Njgs
NiArNDY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBz
Y3JhdGNoLCBBcnJheVByb2ZpbGUqKTsKICAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdT
aXRlRm9yQnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwg
UmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAgICAgdm9p
ZCBlbWl0QXJyYXlQcm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqKTsK
KyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShBcnJh
eVByb2ZpbGUqKTsKICAgICAgICAgCiAgICAgICAgIEpJVEFycmF5TW9kZSBjaG9vc2VBcnJheU1v
ZGUoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDEzNzgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNiArNTI4LDE1IEBAIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsZVN0b3JlVG8KICNlbmRpZgogfQogCitpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikgICAg
CisgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZPdXRP
ZkJvdW5kcygpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmlsZSk7CisjZW5k
aWYKK30KKwogc3RhdGljIGlubGluZSBib29sIGFycmF5UHJvZmlsZVNhdyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMsIEluZGV4aW5nVHlwZSBjYXBhYmlsaXR5KQogewogI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICB1bnNpZ25l
ZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIGJh
c2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIHVuc2lnbmVkIHByb3Bl
cnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICBBcnJheVByb2ZpbGUq
IHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGU7CiAgICAgCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBwcm9wZXJ0eSBpbnQzMiBjaGVjawogICAgIGxpbmtT
bG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKQEAgLTIx
OCw5ICsyMTksMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1Ywog
ICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogICAgIG5vbkNlbGwubGluayh0aGlzKTsKICAgICAK
KyAgICBKdW1wIHNraXBQcm9maWxpbmcgPSBqdW1wKCk7CisgICAgCiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOyAvLyB2ZWN0b3IgbGVuZ3RoIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAv
LyBlbXB0eSB2YWx1ZQogICAgIAorICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNp
YWxDYXNlKHByb2ZpbGUpOworICAgIAorICAgIHNraXBQcm9maWxpbmcubGluayh0aGlzKTsKKyAg
ICAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAgICAgCiAgICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV92YWwpOwpAQCAtNDUxLDcgKzQ1OCw2IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWMKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7IC8vIHByb3BlcnR5IGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0Nl
bGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gYmFzZSBub3QgYXJyYXkgY2hlY2sKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG91
dCBvZiBib3VuZHMKICAgICAKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9k
ZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTQ2Myw2ICs0NjksMTEgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1YwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCisgICAgSnVtcCBza2lwUHJvZmlsaW5nID0ganVtcCgpOworICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsgLy8gb3V0IG9mIGJvdW5kcworICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJv
dW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOworICAgIHNraXBQcm9maWxpbmcubGluayh0aGlzKTsK
KyAgICAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAKICAgICBKSVRTdHViQ2FsbCBz
dHViUHV0QnlWYWxDYWxsKHRoaXMsIGN0aV9vcF9wdXRfYnlfdmFsKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA0MCwxOCArMTA0MCwxOCBA
QCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAu
b3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgogCi0gICAg
YmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJs
aWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5
VmFsT3V0T2ZCb3VuZHMKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgbG9h
ZHEgW3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgYnRx
eiB0MiwgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGptcCAub3BHZXRCeVZhbERvbmUKIAog
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgogICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9w
R2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAg
IGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fcHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGxvYWRpcyA4W1BCLCBQ
QywgOF0sIHQwCiAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBm
dDAsIC5vcEdldEJ5VmFsU2xvdworICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsT3V0
T2ZCb3VuZHMKICAgICBmZDJxIGZ0MCwgdDIKICAgICBzdWJxIHRhZ1R5cGVOdW1iZXIsIHQyCiAg
ICAgam1wIC5vcEdldEJ5VmFsRG9uZQpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgX2xsaW50X29wX2dl
dF9ieV92YWw6CiAub3BHZXRCeVZhbE5vdERvdWJsZToKICAgICBzdWJpIEFycmF5U3RvcmFnZVNo
YXBlLCB0MgogICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxT
bG93CisgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRl
cjo6bV92ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbE91dE9mQm91bmRzCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Jb
dDMsIHQxLCA4XSwgdDIKICAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKQEAgLTEwNzAsNiAr
MTA3MCw5IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHZhbHVlUHJvZmlsZSh0MiwgdDAp
CiAgICAgZGlzcGF0Y2goNikKIAorLm9wR2V0QnlWYWxPdXRPZkJvdW5kczoKKyAgICBsb2FkcEZy
b21JbnN0cnVjdGlvbig0LCB0MCkKKyAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxlOjptX291dE9m
Qm91bmRzW3QwXQogLm9wR2V0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2dldF9ieV92YWwpCiAgICAgZGlzcGF0Y2goNikKQEAgLTExNDAsNyArMTE0Myw3IEBA
IG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9yZUNhbGxiYWNrKQogICAgIGRpc3BhdGNoKDUp
CiAKIC5vdXRPZkJvdW5kczoKLSAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU2xvdworICAg
IGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVj
dG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRPZkJvdW5kcwogICAgIGlmIFZBTFVFX1BST0ZJ
TEVSCiAgICAgICAgIGxvYWRwIDMyW1BCLCBQQywgOF0sIHQyCiAgICAgICAgIHN0b3JlYiAxLCBB
cnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVbdDJdCkBAIC0xMTk3LDcgKzEyMDAsNyBAQCBf
bGxpbnRfb3BfcHV0X2J5X3ZhbDoKIAogLm9wUHV0QnlWYWxOb3RDb250aWd1b3VzOgogICAgIGJp
bmVxIHQyLCBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wUHV0QnlWYWxTbG93Ci0gICAgYmlhZXEgdDMs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhb
dDBdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZC
b3VuZHMKICAgICBidHF6IEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDAsIHQzLCA4XSwgLm9wUHV0
QnlWYWxBcnJheVN0b3JhZ2VFbXB0eQogLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3Vs
dDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCkBAIC0xMjE3LDYgKzEyMjAsOSBA
QCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKICAgICBzdG9yZWkgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV9wdWJsaWNMZW5ndGhbdDBdCiAgICAgam1wIC5vcFB1
dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQKIAorLm9wUHV0QnlWYWxPdXRPZkJvdW5kczoK
KyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MCkKKyAgICBzdG9yZWIgMSwgQXJyYXlQcm9m
aWxlOjptX291dE9mQm91bmRzW3QwXQogLm9wUHV0QnlWYWxTbG93OgogICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgZGlzcGF0Y2goNSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179681</attachid>
            <date>2012-12-16 18:59:21 -0800</date>
            <delta_ts>2012-12-16 21:40:56 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixoob.patch</filename>
            <type>text/plain</type>
            <size>37394</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3ODY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDEyLTEyLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmF0aW9uYWxpemUgYXJyYXkgcHJvZmlsaW5nIGZvciBvdXQtb2YtYm91bmRzIGFuZCBob2xlIGNh
c2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUx
MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IG1ha2VzIEFycmF5UHJvZmlsZSB0cmFjayB3aGV0aGVyIG9yIG5vdCB3ZSBoYWQgb3V0LW9mLWJv
dW5kcywgd2hpY2ggYWxsb3dzCisgICAgICAgIGZvciBtb3JlIHByZWNpc2UgZGVjaXNpb24tbWFr
aW5nIGluIHRoZSBERkcuCisgICAgICAgIAorICAgICAgICBBbHNvIGNsZWFuZWQgdXAgRXhpdEtp
bmRzIGZvciBvdXQtb2YtYm91bmRzIGFuZCBob2xlIGNhc2VzIHRvIG1ha2UgaXQgZWFzaWVyIHRv
CisgICAgICAgIGxvb2sgYXQgdGhlbSBpbiB0aGUgcHJvZmlsZXIuCisgICAgICAgIAorICAgICAg
ICBTbGlnaHQgc3BlZWQtdXAgKDUtOCUpIG9uIFN1blNwaWRlci9jcnlwdG8tbWQ1LgorCisgICAg
ICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpBcnJheVByb2Zp
bGU6OmJyaWVmRGVzY3JpcHRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5o
OgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChK
U0M6OkFycmF5UHJvZmlsZTo6YWRkcmVzc09mT3V0T2ZCb3VuZHMpOgorICAgICAgICAoSlNDOjpB
cnJheVByb2ZpbGU6OmV4cGVjdGVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9m
aWxlOjpzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxl
OjpvdXRPZkJvdW5kcyk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6cG9seW1vcnBoaWNT
dHJ1Y3R1cmUpOgorICAgICAgICAoQXJyYXlQcm9maWxlKToKKyAgICAgICAgKiBieXRlY29kZS9D
b2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpkdW1wQ2hhaW4pOgorICAgICAgICAqIGJ5dGVj
b2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtpbmRUb1N0cmluZyk6CisgICAg
ICAgIChKU0M6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRL
aW5kLmg6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0QXJyYXlNb2RlQW5kRW1pdENoZWNrcyk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuaDoKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2Fz
ZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAxMi0xMi0xMyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gcmF0aW9uYWxpemUgYW5k
IHNpbXBsaWZ5IFdURjo6YmluYXJ5U2VhcmNoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMTM3ODM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDI4ICs4OSwyMiBAQCB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0CiAgICAgICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsK
ICAgICAgICAgaWYgKCFjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5pc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCiAgICAgICAgICAgICBtX3VzZXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwotICAgICAgICBpZiAoIW1fc3RydWN0dXJlSXNQb2x5
bW9ycGhpYykgeworICAgICAgICBpZiAoIXN0cnVjdHVyZUlzUG9seW1vcnBoaWMoKSkgewogICAg
ICAgICAgICAgaWYgKCFtX2V4cGVjdGVkU3RydWN0dXJlKQogICAgICAgICAgICAgICAgIG1fZXhw
ZWN0ZWRTdHJ1Y3R1cmUgPSBtX2xhc3RTZWVuU3RydWN0dXJlOwotICAgICAgICAgICAgZWxzZSBp
ZiAobV9leHBlY3RlZFN0cnVjdHVyZSAhPSBtX2xhc3RTZWVuU3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICAgICAgbV9leHBlY3RlZFN0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICAgICAgbV9zdHJ1
Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgIT0gbV9sYXN0U2VlblN0cnVjdHVyZSkKKyAgICAg
ICAgICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0gcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKTsK
ICAgICAgICAgfQogICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKICAgICB9CiAgICAg
Ci0gICAgaWYgKGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7Ci0g
ICAgICAgIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYyA9IHRydWU7Ci0gICAgICAgIG1fZXhwZWN0
ZWRTdHJ1Y3R1cmUgPSAwOwotICAgIH0KKyAgICBpZiAoaGFzVHdvT3JNb3JlQml0c1NldChtX29i
c2VydmVkQXJyYXlNb2RlcykpCisgICAgICAgIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBwb2x5bW9y
cGhpY1N0cnVjdHVyZSgpOwogICAgIAogICAgIGlmIChvcGVyYXRpb24gPT0gQ29sbGVjdGlvbgot
ICAgICAgICAmJiBtX2V4cGVjdGVkU3RydWN0dXJlCi0gICAgICAgICYmICFIZWFwOjppc01hcmtl
ZChtX2V4cGVjdGVkU3RydWN0dXJlKSkgewotICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0g
MDsKLSAgICAgICAgbV9zdHJ1Y3R1cmVJc1BvbHltb3JwaGljID0gdHJ1ZTsKLSAgICB9CisgICAg
ICAgICYmIGV4cGVjdGVkU3RydWN0dXJlKCkKKyAgICAgICAgJiYgIUhlYXA6OmlzTWFya2VkKG1f
ZXhwZWN0ZWRTdHJ1Y3R1cmUpKQorICAgICAgICBtX2V4cGVjdGVkU3RydWN0dXJlID0gcG9seW1v
cnBoaWNTdHJ1Y3R1cmUoKTsKIH0KIAogQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3Jp
cHRpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2spCkBAIC0xMjgsNyArMTIyLDcgQEAgQ1N0cmluZyBB
cnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oQwogICAgICAgICBoYXNQcmludGVkID0gdHJ1
ZTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYykgeworICAg
IGlmIChzdHJ1Y3R1cmVJc1BvbHltb3JwaGljKCkpIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CiAgICAgICAgIG91dC5wcmludCgic3RydWN0
ID0gVE9QIik7CkBAIC0xNDcsNiArMTQxLDEzIEBAIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmll
ZkRlc2NyaXB0aW9uKEMKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CiAgICAgfQogICAgIAor
ICAgIGlmIChtX291dE9mQm91bmRzKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAg
ICAgICAgb3V0LnByaW50KCIsICIpOworICAgICAgICBvdXQucHJpbnQoIk91dE9mQm91bmRzIik7
CisgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOworICAgIH0KKyAgICAKICAgICBpZiAobV9tYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMpIHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiwgIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
MSw4ICsxMjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgICwgbV9sYXN0U2VlblN0cnVj
dHVyZSgwKQogICAgICAgICAsIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUoMCkKLSAgICAgICAgLCBtX3N0
cnVjdHVyZUlzUG9seW1vcnBoaWMoZmFsc2UpCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShm
YWxzZSkKKyAgICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50
ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzKHRydWUpCiAgICAgICAgICwgbV9vYnNlcnZlZEFycmF5TW9kZXMoMCkKQEAg
LTEzMyw4ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCkKICAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCiAgICAgICAgICwg
bV9leHBlY3RlZFN0cnVjdHVyZSgwKQotICAgICAgICAsIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhp
YyhmYWxzZSkKICAgICAgICAgLCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQorICAgICAgICAsIG1f
b3V0T2ZCb3VuZHMoZmFsc2UpCiAgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXModHJ1ZSkK
ICAgICAgICAgLCBtX29ic2VydmVkQXJyYXlNb2RlcygwKQpAQCAtMTQ2LDYgKzE0Niw3IEBAIHB1
YmxpYzoKICAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpIHsgcmV0
dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJy
YXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFk
ZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KKyAg
ICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9
CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIHsKQEAgLTE1NCwxMCArMTU1LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihDb2RlQmxvY2sqLCBPcGVyYXRpb25JblByb2dyZXNzID0gTm9P
cGVyYXRpb24pOwogICAgIAotICAgIFN0cnVjdHVyZSogZXhwZWN0ZWRTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2V4cGVjdGVkU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlKiBleHBlY3Rl
ZFN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc3RydWN0dXJlSXNQb2x5bW9y
cGhpYygpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2V4cGVjdGVk
U3RydWN0dXJlOworICAgIH0KICAgICBib29sIHN0cnVjdHVyZUlzUG9seW1vcnBoaWMoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYzsKKyAgICAg
ICAgcmV0dXJuIG1fZXhwZWN0ZWRTdHJ1Y3R1cmUgPT0gcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKTsK
ICAgICB9CiAgICAgYm9vbCBoYXNEZWZpbml0ZVN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewpAQCAt
MTY4LDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzOyB9CiAg
ICAgCiAgICAgYm9vbCBtYXlTdG9yZVRvSG9sZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF5U3RvcmVU
b0hvbGU7IH0KKyAgICBib29sIG91dE9mQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9vdXRPZkJv
dW5kczsgfQogICAgIAogICAgIGJvb2wgdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV91c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXM7IH0KICAgICAKQEAgLTE3
NiwxMSArMTgzLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBwb2x5bW9ycGhp
Y1N0cnVjdHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KDEpKTsgfQorICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7
CiAgICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9l
eHBlY3RlZFN0cnVjdHVyZTsKLSAgICBib29sIG1fc3RydWN0dXJlSXNQb2x5bW9ycGhpYzsKICAg
ICBib29sIG1fbWF5U3RvcmVUb0hvbGU7IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2Fk
ZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQg
ZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5j
ZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdv
IHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMg
ZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCisgICAgYm9vbCBtX291dE9mQm91bmRzOwog
ICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXM7CiAgICAgYm9vbCBtX3VzZXNP
cmlnaW5hbEFycmF5U3RydWN0dXJlczsKICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDEzNzgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZv
aWQgZHVtcENoYWluKFByaW50U3RyZWFtJiBvdXQsIAogICAgICAgICBpZiAoZmlyc3QpCiAgICAg
ICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkYXRhTG9n
RigiLCAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiwgIik7CiAgICAgICAgIGR1bXBTdHJ1
Y3R1cmUob3V0LCAic3RydWN0IiwgZXhlYywgY3VycmVudFN0cnVjdHVyZS0+Z2V0KCksIGlkZW50
KTsKICAgICB9CiAgICAgb3V0LnByaW50ZigiXSIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw4ICs0OCwxNCBAQCBjb25zdCBjaGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAg
ICAgICAgIHJldHVybiAiT3ZlcmZsb3ciOwogICAgIGNhc2UgTmVnYXRpdmVaZXJvOgogICAgICAg
ICByZXR1cm4gIk5lZ2F0aXZlWmVybyI7CisgICAgY2FzZSBTdG9yZVRvSG9sZToKKyAgICAgICAg
cmV0dXJuICJTdG9yZVRvSG9sZSI7CisgICAgY2FzZSBMb2FkRnJvbUhvbGU6CisgICAgICAgIHJl
dHVybiAiTG9hZEZyb21Ib2xlIjsKICAgICBjYXNlIE91dE9mQm91bmRzOgogICAgICAgICByZXR1
cm4gIk91dE9mQm91bmRzIjsKKyAgICBjYXNlIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kczoKKyAg
ICAgICAgcmV0dXJuICJTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMiOwogICAgIGNhc2UgSW5hZGVx
dWF0ZUNvdmVyYWdlOgogICAgICAgICByZXR1cm4gIkluYWRlcXVhdGVDb3ZlcmFnZSI7CiAgICAg
Y2FzZSBBcmd1bWVudHNFc2NhcGVkOgpAQCAtNTksNiArNjUsNyBAQCBjb25zdCBjaGFyKiBleGl0
S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgY2FzZSBVbmNvdW50YWJsZVdhdGNocG9pbnQ6
CiAgICAgICAgIHJldHVybiAiVW5jb3VudGFibGVXYXRjaHBvaW50IjsKICAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuICJVbmtub3duIjsK
ICAgICB9CiB9CkBAIC03MSw2ICs3OCwxMCBAQCBib29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhp
dEtpbmQga2luZCkKICAgICBjYXNlIEJhZFR5cGU6CiAgICAgY2FzZSBVbmNvdW50YWJsZToKICAg
ICBjYXNlIFVuY291bnRhYmxlV2F0Y2hwb2ludDoKKyAgICBjYXNlIExvYWRGcm9tSG9sZTogLy8g
QWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBKSVQuCisgICAgY2FzZSBT
dG9yZVRvSG9sZTogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBK
SVQuCisgICAgY2FzZSBPdXRPZkJvdW5kczogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5
IHRoZSBiYXNlbGluZSBKSVQuCisgICAgY2FzZSBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHM6IC8v
IEFscmVhZHkgY291bnRlZCBkaXJlY3RseSBieSB0aGUgYmFzZWxpbmUgSklULgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuaAkocmV2aXNpb24gMTM3ODM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDEwIEBAIGVudW0gRXhpdEtpbmQgewogICAgIEJhZEluZGV4aW5n
VHlwZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYW4gaW5kZXhpbmcgdHlwZSB3YXMgd3JvbmcuCiAg
ICAgT3ZlcmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0
aXZlWmVybywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVy
by4KKyAgICBTdG9yZVRvSG9sZSwgLy8gV2UgaGFkIGEgc3RvcmUgdG8gYSBob2xlLgorICAgIExv
YWRGcm9tSG9sZSwgLy8gV2UgaGFkIGEgbG9hZCBmcm9tIGEgaG9sZS4KICAgICBPdXRPZkJvdW5k
cywgLy8gV2UgaGFkIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHRvIGFuIGFycmF5LgorICAgIFN0
b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgLy8gV2UncmUgc2ltdWx0YW5lb3VzbHkgc3BlY3VsYXRp
bmcgdGhhdCB3ZSdyZSBpbiBib3VuZHMgYW5kIG5vdCBhY2Nlc3NpbmcgYSBob2xlLCBhbmQgb25l
IG9mIHRob3NlIHRoaW5ncyBkaWRuJ3QgcGFuIG91dC4KICAgICBJbmFkZXF1YXRlQ292ZXJhZ2Us
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRuJ3QgaGF2
ZSBwcm9maWxpbmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2UgZXhpdGVk
IGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhlbSB0by4K
ICAgICBVbmNvdW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSByZWFz
b25zLCBhbmQgd2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hvdWxk
IGJlIHZpZXdlZCBhcyBhIEZJWE1FLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEzNzgzNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MzksOCArOTM5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9v
bCBtYWtlU2FmZSA9Ci0gICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPmNvdWxkVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgfHwgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
T3V0T2ZCb3VuZHMpOworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKKyAgICAgICAgICAgIHx8
IHByb2ZpbGUtPm91dE9mQm91bmRzKCk7CiAgICAgICAgIAogICAgICAgICBBcnJheU1vZGUgcmVz
dWx0ID0gQXJyYXlNb2RlOjpmcm9tT2JzZXJ2ZWQocHJvZmlsZSwgYWN0aW9uLCBtYWtlU2FmZSk7
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDcwLDE5ICsyMDcwLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250
aWd1b3VzUHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNl
OwogCiAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKLSAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
CisgICAgICAgICAgICBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBC
dXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAgCi0g
ICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VS
ZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKKyAgICAgICAgc2xvd0Nh
c2UgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0
eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZz
ZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWFycmF5TW9kZS5p
c091dE9mQm91bmRzKCkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIHNsb3dDYXNlKTsK
ICAgICAgICAgCiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgcHJvcGVydHlS
ZWcpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsK
QEAgLTIxMDIsNyArMjEwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1
b3VzUHUKICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkgewogICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsCisgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsCiAg
ICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpID8gb3BlcmF0
aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCiAgICAgICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VS
ZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkUmVnKSk7CiAgICAgfQpAQCAt
MjY0NSw3ICsyNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZy5n
cHIoKSk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IHJlc3VsdFRhZy5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZXN1
bHRUYWcuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3Jh
Z2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7
CiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBh
eWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTI3MDYsNyArMjcwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
UmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCByZXN1bHQuZnBy
KCkpOwogICAgICAgICAgICAgICAgIGlmICghbm9kZS5hcnJheU1vZGUoKS5pc1NhbmVDaGFpbigp
KQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlTm90RXF1YWxPclVub3JkZXJlZCwgcmVzdWx0LmZwcigpLCByZXN1bHQuZnByKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVO
b3RFcXVhbE9yVW5vcmRlcmVkLCByZXN1bHQuZnByKCksIHJlc3VsdC5mcHIoKSkpOwogICAgICAg
ICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI3NjIsNyArMjc2Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKIAogICAgICAgICAgICAgICAgIG1f
aml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3Rv
cmFnZSwgbV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRh
ZykpLCByZXN1bHRUYWcuZ3ByKCkpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCByZXN1bHRUYWcuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZy
b21Ib2xlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgcmVzdWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlW
YWx1ZVRhZykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWQuZ3By
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRU
YWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKQEAgLTI5NjYs
MTEgKzI5NjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAK
ICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlOyBpZiBzbyBp
bmNyZW1lbnQgbV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICAgICAgICAgIGlmIChhcnJheU1vZGUu
aXNJbkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1bmNvdW50YWJsZSBi
ZWNhdXNlIGlmIHdlIHRha2UgdGhpcyBleGl0LCB0aGVuIHRoZSBiYXNlbGluZSBKSVQKLSAgICAg
ICAgICAgICAgICAvLyB3aWxsIGltbWVkaWF0ZWx5IGNvdW50IHRoZSBob2xlIHN0b3JlLiBTbyB0
aGVyZSBpcyBubyBuZWVkIGZvciBleGl0Ci0gICAgICAgICAgICAgICAgLy8gcHJvZmlsaW5nLgog
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgIFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgICAgIFN0
b3JlVG9Ib2xlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCiAgICAgICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5
VmFsdWVUYWcpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdEhvbGVWYWx1ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJh
eVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
cmV2aXNpb24gMTM3ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5OSw3ICsyNTk5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAg
bV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVy
dHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0LmdwcigpKTsKLSAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0Lmdw
cigpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCByZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIG5vZGUuYXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5
OjpJbnQzMiA/IERhdGFGb3JtYXRKU0ludGVnZXIgOiBEYXRhRm9ybWF0SlMpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMjY1Nyw3ICsyNjU3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCksIHJlc3VsdC5mcHIoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KCFub2RlLmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkpCi0gICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVOb3RFcXVhbE9yVW5vcmRlcmVkLCBy
ZXN1bHQuZnByKCksIHJlc3VsdC5mcHIoKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIHJlc3Vs
dC5mcHIoKSwgcmVzdWx0LmZwcigpKSk7CiAgICAgICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMjcxMSw3ICsyNzExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSks
IHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJv
dW5kcywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdC5ncHIoKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soTG9hZEZyb21Ib2xlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRl
c3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg3NCwxOSArMjg3NCwxOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcG9yYXJ5OwogICAgICAgICAgICAgR1BSUmVnIHRlbXBvcmFyeVJlZyA9IHRlbXBv
cmFyeVJlZ2lzdGVyRm9yUHV0QnlWYWwodGVtcG9yYXJ5LCBub2RlKTsKIAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHNsb3dDYXNlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYXJy
YXlNb2RlLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
Ci0gICAgICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
CisgICAgICAgICAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBp
bkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpKTsKKyAgICAgICAgICAgICAgICBzbG93Q2Fz
ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mVmVjdG9yTGVuZ3RoKCkpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAoIWFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgc2xvd0Nhc2Vz
KTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBzbG93Q2FzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBwcm9wZXJ0eVJlZywgdGVtcG9y
YXJ5UmVnKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHRlbXBvcmFyeVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSk7CkBAIC0yOTA0LDcgKzI5MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzT3V0T2ZCb3Vu
ZHMoKSkgewogICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgTm9S
ZXN1bHQsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgICAgICAgICAgfQpA
QCAtMjk1OCwxMSArMjk1OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYg
bm9kZSkKIAogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgd3JpdGluZyB0byBhIGhvbGU7
IGlmIHNvIGluY3JlbWVudCBtX251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICAgICAgaWYgKGFy
cmF5TW9kZS5pc0luQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHVuY291
bnRhYmxlIGJlY2F1c2UgaWYgd2UgdGFrZSB0aGlzIGV4aXQsIHRoZW4gdGhlIGJhc2VsaW5lIEpJ
VAotICAgICAgICAgICAgICAgIC8vIHdpbGwgaW1tZWRpYXRlbHkgY291bnQgdGhlIGhvbGUgc3Rv
cmUuIFNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGV4aXQKLSAgICAgICAgICAgICAgICAvLyBwcm9m
aWxpbmcuCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAg
ICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgU3RvcmVUb0hvbGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pKSkp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RIb2xlVmFsdWUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdl
LCBtX3ZlY3RvclswXSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkwMCwx
OSArMTkwMCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWCiAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXBvcmFyeTsKICAgICBHUFJSZWcgdGVtcG9yYXJ5UmVnID0gdGVt
cG9yYXJ5UmVnaXN0ZXJGb3JQdXRCeVZhbCh0ZW1wb3JhcnksIG5vZGUpOwogCi0gICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
bG93Q2FzZTsKICAgICAKICAgICBpZiAoYXJyYXlNb2RlLmlzSW5Cb3VuZHMoKSkgewogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwKKyAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwog
ICAgICAgICAKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSkpOworICAg
ICAgICBzbG93Q2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0
ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICgh
YXJyYXlNb2RlLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgc2xvd0Nhc2VzKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
c2xvd0Nhc2UpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEp
LCBwcm9wZXJ0eVJlZywgdGVtcG9yYXJ5UmVnKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMih0ZW1w
b3JhcnlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VgogICAgIGlmIChhcnJheU1vZGUuaXNPdXRP
ZkJvdW5kcygpKSB7CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywKKyAgICAgICAg
ICAgICAgICBzbG93Q2FzZSwgdGhpcywKICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91
bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0
cmljdCwKICAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVnKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAx
Mzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NjgsNiArNDY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVn
aXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqKTsKICAgICAgICAgdm9pZCBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4
aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAg
ICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxlU3RvcmVUb0hvbGVTcGVjaWFsQ2FzZShBcnJheVBy
b2ZpbGUqKTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFs
Q2FzZShBcnJheVByb2ZpbGUqKTsKICAgICAgICAgCiAgICAgICAgIEpJVEFycmF5TW9kZSBjaG9v
c2VBcnJheU1vZGUoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDEzNzgzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MjgsNiArNTI4
LDE1IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsZVN0b3JlVG8KICNlbmRpZgog
fQogCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxD
YXNlKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQoreworI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikgICAgCisgICAgc3RvcmU4KFRydXN0ZWRJbW0zMigxKSwgYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZPdXRPZkJvdW5kcygpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGFycmF5UHJvZmls
ZSk7CisjZW5kaWYKK30KKwogc3RhdGljIGlubGluZSBib29sIGFycmF5UHJvZmlsZVNhdyhBcnJh
eU1vZGVzIGFycmF5TW9kZXMsIEluZGV4aW5nVHlwZSBjYXBhYmlsaXR5KQogewogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTM3ODM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKEluc3RydWMKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwogICAgIHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOwogICAgIHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5hcnJheVByb2ZpbGU7CiAgICAgCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBwcm9wZXJ0
eSBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAv
LyBiYXNlIGNlbGwgY2hlY2sKQEAgLTI1NiwxMCArMjU3LDE2IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBmYWlsZWQubGluayh0aGlzKTsKICAgICBub3RT
dHJpbmcubGluayh0aGlzKTsKICAgICBub25DZWxsLmxpbmsodGhpcyk7CisgICAgCisgICAgSnVt
cCBza2lwUHJvZmlsaW5nID0ganVtcCgpOwogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB2
ZWN0b3IgbGVuZ3RoIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBlbXB0eSB2YWx1
ZQogICAgIAorICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2Zp
bGUpOworICAgIAorICAgIHNraXBQcm9maWxpbmcubGluayh0aGlzKTsKKyAgICAKICAgICBMYWJl
bCBzbG93UGF0aCA9IGxhYmVsKCk7CiAgICAgCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhp
cywgY3RpX29wX2dldF9ieV92YWwpOwpAQCAtNDIwLDcgKzQyNyw2IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKEluc3RydWMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHBy
b3BlcnR5IGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFz
ZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBu
b3QgYXJyYXkgY2hlY2sKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG91dCBvZiBib3VuZHMK
ICAgICAKICAgICBKSVRBcnJheU1vZGUgbW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTQzMiw2ICs0MzgsMTEgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3B1dF9ieV92YWwoSW5zdHJ1YwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCisg
ICAgSnVtcCBza2lwUHJvZmlsaW5nID0ganVtcCgpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsg
Ly8gb3V0IG9mIGJvdW5kcworICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxD
YXNlKHByb2ZpbGUpOworICAgIHNraXBQcm9maWxpbmcubGluayh0aGlzKTsKKwogICAgIExhYmVs
IHNsb3dQYXRoID0gbGFiZWwoKTsKICAgICAKICAgICBKSVRTdHViQ2FsbCBzdHViUHV0QnlWYWxD
YWxsKHRoaXMsIGN0aV9vcF9wdXRfYnlfdmFsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxMzc4MzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA0LDYgKzIwNCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFs
KEluc3RydWMKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwogICAgIHVuc2lnbmVkIGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogICAgIHVuc2lnbmVkIHByb3BlcnR5ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5h
cnJheVByb2ZpbGU7CiAgICAgCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBwcm9wZXJ0eSBp
bnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBi
YXNlIGNlbGwgY2hlY2sKQEAgLTIxOCw5ICsyMTksMTUgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV92YWwoSW5zdHJ1YwogICAgIG5vdFN0cmluZy5saW5rKHRoaXMpOwogICAgIG5vbkNl
bGwubGluayh0aGlzKTsKICAgICAKKyAgICBKdW1wIHNraXBQcm9maWxpbmcgPSBqdW1wKCk7Cisg
ICAgCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB2ZWN0b3IgbGVuZ3RoIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBlbXB0eSB2YWx1ZQogICAgIAorICAgIGVtaXRBcnJheVBy
b2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOworICAgIAorICAgIHNraXBQcm9m
aWxpbmcubGluayh0aGlzKTsKKyAgICAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7CiAg
ICAgCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2dldF9ieV92YWwpOwpA
QCAtNDUxLDcgKzQ1OCw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKEluc3Ry
dWMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHByb3BlcnR5IGludDMyIGNoZWNrCiAgICAg
bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVjawog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBub3QgYXJyYXkgY2hlY2sKLSAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIG91dCBvZiBib3VuZHMKICAgICAKICAgICBKSVRBcnJheU1vZGUg
bW9kZSA9IGNob29zZUFycmF5TW9kZShwcm9maWxlKTsKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAg
LTQ2Myw2ICs0NjksMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoSW5zdHJ1
YwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCisgICAgSnVtcCBza2lwUHJvZmlsaW5nID0g
anVtcCgpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gb3V0IG9mIGJvdW5kcworICAgIGVt
aXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOworICAgIHNraXBQ
cm9maWxpbmcubGluayh0aGlzKTsKKyAgICAKICAgICBMYWJlbCBzbG93UGF0aCA9IGxhYmVsKCk7
CiAKICAgICBKSVRTdHViQ2FsbCBzdHViUHV0QnlWYWxDYWxsKHRoaXMsIGN0aV9vcF9wdXRfYnlf
dmFsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwMSwxNCArMTIwMSwxNCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAg
ICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKIC5v
cEdldEJ5VmFsSXNDb250aWd1b3VzOgogICAgIAotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fcHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlW
YWxTbG93CisgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6bV9wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbE91dE9mQm91bmRzCiAgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0Mywg
dDEsIDhdLCB0MQogICAgIGptcCAub3BHZXRCeVZhbERvbmUKIAogLm9wR2V0QnlWYWxOb3RDb250
aWd1b3VzOgogICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUK
LSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjpt
X3B1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgIGJpYWVxIHQxLCAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fcHVibGljTGVuZ3RoW3QzXSwgLm9w
R2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5l
cXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKICAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJl
IG1hc3NpdmVseSBvcHRpbWl6ZWQuCkBAIC0xMjE5LDEzICsxMjE5LDEzIEBAIF9sbGludF9vcF9n
ZXRfYnlfdmFsOgogLm9wR2V0QnlWYWxOb3REb3VibGU6CiAgICAgc3ViaSBBcnJheVN0b3JhZ2VT
aGFwZSwgdDIKICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFs
U2xvdworICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6Om1fdmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKICAgICBs
b2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQogCiAub3BHZXRCeVZhbERvbmU6CiAgICAgbG9hZGkgNFtQQ10sIHQwCi0gICAgYmllcSB0Miwg
RW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRh
ZywgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogLm9wR2V0QnlWYWxOb3RFbXB0eToKICAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQpAQCAtMTIzMyw2ICsxMjMzLDExIEBAIF9sbGludF9vcF9nZXRfYnlfdmFs
OgogICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQogICAgIGRpc3BhdGNoKDYpCiAKKy5vcEdl
dEJ5VmFsT3V0T2ZCb3VuZHM6CisgICAgaWYgVkFMVUVfUFJPRklMRVIKKyAgICAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNCwgdDApCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1f
b3V0T2ZCb3VuZHNbdDBdCisgICAgZW5kCiAub3BHZXRCeVZhbFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKICAgICBkaXNwYXRjaCg2KQpAQCAtMTMw
Myw3ICsxMzA4LDcgQEAgbWFjcm8gY29udGlndW91c1B1dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCiAg
ICAgZGlzcGF0Y2goNSkKIAogLm91dE9mQm91bmRzOgotICAgIGJpYWVxIHQzLCAtc2l6ZW9mIElu
ZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0
QnlWYWxTbG93CisgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGlu
Z0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbE91dE9mQm91bmRzCiAgICAg
aWYgVkFMVUVfUFJPRklMRVIKICAgICAgICAgbG9hZHAgMTZbUENdLCB0MgogICAgICAgICBzdG9y
ZWIgMSwgQXJyYXlQcm9maWxlOjptX21heVN0b3JlVG9Ib2xlW3QyXQpAQCAtMTM2Myw3ICsxMzY4
LDcgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAKIC5vcFB1dEJ5VmFsTm90Q29udGlndW91czoK
ICAgICBiaW5lcSB0MiwgQXJyYXlTdG9yYWdlU2hhcGUsIC5vcFB1dEJ5VmFsU2xvdwotICAgIGJp
YWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9y
TGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZh
bE91dE9mQm91bmRzCiAgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QwLCB0MywgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlRW1wdHkK
IC5vcFB1dEJ5VmFsQXJyYXlTdG9yYWdlU3RvcmVSZXN1bHQ6CiAgICAgbG9hZGkgMTJbUENdLCB0
MgpAQCAtMTM4NCw2ICsxMzg5LDExIEBAIF9sbGludF9vcF9wdXRfYnlfdmFsOgogICAgIHN0b3Jl
aSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xl
bmd0aFt0MF0KICAgICBqbXAgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdAogCisu
b3BQdXRCeVZhbE91dE9mQm91bmRzOgorICAgIGlmIFZBTFVFX1BST0ZJTEVSCisgICAgICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDQsIHQwKQorICAgICAgICBzdG9yZWIgMSwgQXJyYXlQcm9maWxl
OjptX291dE9mQm91bmRzW3QwXQorICAgIGVuZAogLm9wUHV0QnlWYWxTbG93OgogICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92YWwpCiAgICAgZGlzcGF0Y2goNSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCShyZXZpc2lvbiAxMzc4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTA0MCwx
OCArMTA0MCwxOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICBiaW5lcSB0MiwgQ29udGln
dW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKIC5vcEdldEJ5VmFsSXNDb250aWd1
b3VzOgogCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6bV9wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MSwg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0
M10sIC5vcEdldEJ5VmFsT3V0T2ZCb3VuZHMKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDApCiAgICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxT
bG93CisgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGptcCAub3BHZXRC
eVZhbERvbmUKIAogLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgogICAgIGJpbmVxIHQyLCBEb3Vi
bGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3B1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdworICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdI
ZWFkZXI6Om1fcHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxPdXRPZkJvdW5kcwogICAgIGxv
YWRpcyA4W1BCLCBQQywgOF0sIHQwCiAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJk
bmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5v
cEdldEJ5VmFsT3V0T2ZCb3VuZHMKICAgICBmZDJxIGZ0MCwgdDIKICAgICBzdWJxIHRhZ1R5cGVO
dW1iZXIsIHQyCiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQpAQCAtMTA1OSwxMCArMTA1OSwxMCBA
QCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKIC5vcEdldEJ5VmFsTm90RG91YmxlOgogICAgIHN1Ymkg
QXJyYXlTdG9yYWdlU2hhcGUsIHQyCiAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgYmlhZXEgdDEsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhbdDNd
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsT3V0T2ZCb3Vu
ZHMKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgbG9hZHEgQXJyYXlTdG9y
YWdlOjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsT3V0T2ZCb3VuZHMKIAogLm9wR2V0QnlWYWxEb25l
OgogICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCkBAIC0xMDcwLDYgKzEwNzAsMTEgQEAgX2xs
aW50X29wX2dldF9ieV92YWw6CiAgICAgdmFsdWVQcm9maWxlKHQyLCB0MCkKICAgICBkaXNwYXRj
aCg2KQogCisub3BHZXRCeVZhbE91dE9mQm91bmRzOgorICAgIGlmIFZBTFVFX1BST0ZJTEVSCisg
ICAgICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQwKQorICAgICAgICBzdG9yZWIgMSwgQXJy
YXlQcm9maWxlOjptX291dE9mQm91bmRzW3QwXQorICAgIGVuZAogLm9wR2V0QnlWYWxTbG93Ogog
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAgICAgZGlzcGF0
Y2goNikKQEAgLTExNDAsNyArMTE0NSw3IEBAIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChzdG9y
ZUNhbGxiYWNrKQogICAgIGRpc3BhdGNoKDUpCiAKIC5vdXRPZkJvdW5kczoKLSAgICBiaWFlcSB0
MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxlbmd0
aFt0MF0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxPdXRP
ZkJvdW5kcwogICAgIGlmIFZBTFVFX1BST0ZJTEVSCiAgICAgICAgIGxvYWRwIDMyW1BCLCBQQywg
OF0sIHQyCiAgICAgICAgIHN0b3JlYiAxLCBBcnJheVByb2ZpbGU6Om1fbWF5U3RvcmVUb0hvbGVb
dDJdCkBAIC0xMTk3LDcgKzEyMDIsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKIAogLm9wUHV0
QnlWYWxOb3RDb250aWd1b3VzOgogICAgIGJpbmVxIHQyLCBBcnJheVN0b3JhZ2VTaGFwZSwgLm9w
UHV0QnlWYWxTbG93Ci0gICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFl
cSB0MywgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjptX3ZlY3Rvckxl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHMKICAgICBidHF6IEFycmF5U3RvcmFnZTo6
bV92ZWN0b3JbdDAsIHQzLCA4XSwgLm9wUHV0QnlWYWxBcnJheVN0b3JhZ2VFbXB0eQogLm9wUHV0
QnlWYWxBcnJheVN0b3JhZ2VTdG9yZVJlc3VsdDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MywgdDIpCkBAIC0xMjE3LDYgKzEyMjIsMTEgQEAgX2xsaW50X29wX3B1dF9ieV92YWw6CiAgICAg
c3RvcmVpIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6Om1fcHVi
bGljTGVuZ3RoW3QwXQogICAgIGptcCAub3BQdXRCeVZhbEFycmF5U3RvcmFnZVN0b3JlUmVzdWx0
CiAKKy5vcFB1dEJ5VmFsT3V0T2ZCb3VuZHM6CisgICAgaWYgVkFMVUVfUFJPRklMRVIKKyAgICAg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDApCisgICAgICAgIHN0b3JlYiAxLCBBcnJheVBy
b2ZpbGU6Om1fb3V0T2ZCb3VuZHNbdDBdCisgICAgZW5kCiAub3BQdXRCeVZhbFNsb3c6CiAgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X3ZhbCkKICAgICBkaXNwYXRjaCg1
KQo=
</data>
<flag name="review"
          id="196640"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>