<?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>94205</bug_id>
          
          <creation_ts>2012-08-16 01:18:03 -0700</creation_ts>
          <short_desc>The relationship between abstract values and structure transition watchpoints should be rationalized</short_desc>
          <delta_ts>2012-08-19 23:14:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94201</dependson>
    
    <dependson>94408</dependson>
    
    <dependson>94412</dependson>
          <blocked>91933</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696882</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 01:18:03 -0700</bug_when>
    <thetext>And this rationalization should be used to enable automatic conversion of structure checks into watchpoints as appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696888</commentid>
    <comment_count>1</comment_count>
      <attachid>158746</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 01:22:03 -0700</bug_when>
    <thetext>Created attachment 158746
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697815</commentid>
    <comment_count>2</comment_count>
      <attachid>158976</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 19:09:18 -0700</bug_when>
    <thetext>Created attachment 158976
almost there

It looks like it&apos;s working but I still need to do more perf tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697831</commentid>
    <comment_count>3</comment_count>
      <attachid>158976</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-16 19:59:15 -0700</bug_when>
    <thetext>Comment on attachment 158976
almost there

Attachment 158976 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13511820</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697838</commentid>
    <comment_count>4</comment_count>
      <attachid>158976</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-16 20:31:01 -0700</bug_when>
    <thetext>Comment on attachment 158976
almost there

Attachment 158976 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13520265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697889</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 22:28:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 158976 [details])
&gt; Attachment 158976 [details] did not pass qt-wk2-ews (qt):
&gt; Output: http://queues.webkit.org/results/13520265

Looks like I still have to make 32-bit changes.  Will do so soon; first I want to test that the 64-bit part is at least perf-neutral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697976</commentid>
    <comment_count>6</comment_count>
      <attachid>159026</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-17 00:31:19 -0700</bug_when>
    <thetext>Created attachment 159026
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697979</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 00:35:46 -0700</bug_when>
    <thetext>Attachment 159026 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGAbstractValue.h:247:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698714</commentid>
    <comment_count>8</comment_count>
      <attachid>159026</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-17 15:22:23 -0700</bug_when>
    <thetext>Comment on attachment 159026
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699247</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-19 23:14:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/125999</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158746</attachid>
            <date>2012-08-16 01:22:03 -0700</date>
            <delta_ts>2012-08-16 19:09:18 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>rationalizewatch_patch_1.diff</filename>
            <type>text/plain</type>
            <size>53295</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NzU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic3RyYWN0IHZhbHVlcyBhbmQgc3RydWN0dXJlIHRy
YW5zaXRpb24gd2F0Y2hwb2ludHMgc2hvdWxkIGJlIHJhdGlvbmFsaXplZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjppc0NsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjptYWtlVG9w
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjbG9iYmVyU3RydWN0dXJlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNUb3ApOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0VmFsdWU6OnNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKToKKyAgICAg
ICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6dmFsaWRhdGVJZ25vcmluZ1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2hlY2tD
b25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZHVtcCk6Cisg
ICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFz
ZTo6Y2hlY2tTdHJ1Y3R1cmVMb2FkRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNT
RVBoYXNlOjpzdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRMYXN0T1NSRXhp
dFRvRm9yd2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRT
cGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50V2l0aENvbmRpdGlvbmFsRGly
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1
bGF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChT
cGVjdWxhdGl2ZUpJVCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWFrZVRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjphZGQpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmFkZEFsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmlzU3Vic2V0T2YpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmRvZXNOb3RDb250YWluQW55T3RoZXJUaGFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0T2YpOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6aXNDbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6aXNUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmlzQ2xlYXJPclRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6aXNOZWl0aGVyQ2xlYXJOb3JUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpsYXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpoYXNTaW5nbGV0b24pOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6dG9wVmFsdWUpOgorCiAyMDEyLTA4LTE1ICBCcnVubyBkZSBPbGl2ZWlyYSBB
YmluYWRlciAgPGJydW5vLmFiaW5hZGVyQGJhc3lza29tLmNvbT4KIAogICAgICAgICBbY3NzMy10
ZXh0XSBBZGQgQ1NTMyBUZXh0IGRlY29yYXRpb24gY29tcGlsZSBmbGFnCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI1NjgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTIyOSw2ICsyMjksNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNiArMTQyLDcgQEAKIAkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdDIC8qIERGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcCAqLzsgfTsKIAkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdD
IC8qIEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCAq
LzsgfTsKIAkJMEY2Mzk0NTUxNUQwNzA1NzAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0NTIxNUQwNzA1
MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYzOTQ3NjE1RENFMzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEz
MDBCN0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdF
ZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2
RTE2OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBK
SVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICov
OyB9OwpAQCAtODkzLDYgKzg5NCw3IEBACiAJCTBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBE
RkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZH
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlQcm9maWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2Mzk0NTIxNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJv
ZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVByb2ZpbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1OTdDIC8q
IERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVy
ZUFic3RyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgx
NERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5j
eUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAw
QjdCMkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
RWRnZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMzI5LDYgKzIzMzEsNyBAQAogCQkJCTg2RUM5REMzMTMyOERGODIw
MDJCMkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oICovLAogCQkJCTg2ODgwRjFCMTQzMjhCQjkw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLywKIAkJCQk4Njg4MEY0QzE0
MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8sCisJCQkJMEY2Mzk0
NzYxNURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJ
CQkwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcCAqLywKIAkJCQkwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ1BoYXNlLmggKi8sCiAJCQkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8q
IERGR1RodW5rcy5jcHAgKi8sCkBAIC0yODc0LDYgKzI4NzcsNyBAQAogCQkJCTBGNzY2RDQ2MTVC
MzcwMUYwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjM5NDNGMTVDNzVGMTkwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3
QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjM5NDc4MTVEQ0UzNEIw
MDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
cmV2aXNpb24gMTI1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTMgKzYyLDEzIEBAIHZvaWQgQWJzdHJh
Y3RTdGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2kKICAgICBtX3ZhcmlhYmxlcyA9IGJhc2ljQmxv
Y2stPnZhbHVlc0F0SGVhZDsKICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
IHsKLSAgICAgICAgaWYgKG1fdmFyaWFibGVzLmFyZ3VtZW50KGkpLm1fc3RydWN0dXJlLmlzTmVp
dGhlckNsZWFyTm9yVG9wKCkpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFibGVzLmFyZ3VtZW50KGkp
Lm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9wKCkpIHsKICAgICAg
ICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5udW1i
ZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdmFyaWFibGVzLmxvY2FsKGkpLm1f
c3RydWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9wKCkpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFi
bGVzLmxvY2FsKGkpLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9w
KCkpIHsKICAgICAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MTMsMTcgKzE0MTMsMzQgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJl
OiB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhl
IHN0cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOworICAgICAgICAv
LyBJZiB0aGlzIHN0cnVjdHVyZSBjaGVjayBpcyBhdHRlbXB0aW5nIHRvIHByb3ZlIGtub3dsZWRn
ZSBhbHJlYWR5IGhlbGQgaW4KKyAgICAgICAgLy8gdGhlIGZ1dHVyZVBvc3NpYmxlU3RydWN0dXJl
IHNldCB0aGVuIHRoZSBjb25zdGFudCBmb2xkaW5nIHBoYXNlIHNob3VsZAorICAgICAgICAvLyB0
dXJuIHRoaXMgaW50byBhIHdhdGNocG9pbnQgaW5zdGVhZC4KKyAgICAgICAgU3RydWN0dXJlU2V0
JiBzZXQgPSBub2RlLnN0cnVjdHVyZVNldCgpOworICAgICAgICBpZiAodmFsdWUubV9mdXR1cmVQ
b3NzaWJsZVN0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkpCisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgIXZh
bHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKKyAgICAgICAg
ICAgICF2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkKICAgICAg
ICAgICAgIHx8ICFpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKTsKLSAgICAgICAgdmFs
dWUuZmlsdGVyKG5vZGUuc3RydWN0dXJlU2V0KCkpOworICAgICAgICB2YWx1ZS5maWx0ZXIoc2V0
KTsKKyAgICAgICAgaWYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzQ2xlYXIoKSkK
KyAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVz
ID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7Ci0gICAgICAgIC8vIEZJWE1FOiBUdXJuIENoZWNr
U3RydWN0dXJlIGludG8gU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQgd2hlbiBwb3NzaWJs
ZSEKKyAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgIGNhc2UgRm9y
d2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7CiAgICAgICAgIEFic3RyYWN0VmFs
dWUmIHZhbHVlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKKworICAgICAgICAvLyBJdCdzIG9u
bHkgdmFsaWQgdG8gaXNzdWUgYSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IGlmIHdl
IGFscmVhZHkKKyAgICAgICAgLy8ga25vdyB0aGF0IHRoZSB3YXRjaHBvaW50IGNvdmVycyBhIHN1
cGVyc2V0IG9mIHRoZSBzdHJ1Y3R1cmVzIGtub3duIHRvCisgICAgICAgIC8vIGJlbG9uZyB0byB0
aGUgc2V0IG9mIGZ1dHVyZSBzdHJ1Y3R1cmVzIHRoYXQgdGhpcyB2YWx1ZSBtYXkgaGF2ZS4KKyAg
ICAgICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IGlzc3VlIHNpbmdsZXRvbiB3YXRjaHBvaW50cyAo
dGhhdCBjaGVjayBvbmUgc3RydWN0dXJlKQorICAgICAgICAvLyBhbmQgb3VyIGZ1dHVyZVBvc3Np
YmxlU3RydWN0dXJlIHNldCBjYW4gb25seSBjb250YWluIHplcm8sIG9uZSwgb3IgYW4KKyAgICAg
ICAgLy8gaW5maW5pdHkgb2Ygc3RydWN0dXJlcy4KKyAgICAgICAgQVNTRVJUKHZhbHVlLm1fZnV0
dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS5zdHJ1Y3R1
cmUoKSkpKTsKKyAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0NsZWFyKCkgfHwgaXND
ZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSk7IC8vIFZhbHVlIGNvdWxkIGJlIGNsZWFyIGlm
IHdlJ3ZlIHByb3ZlbiBtdXN0LWV4aXQgZHVlIHRvIGEgc3BlY3VsYXRpb24gc3RhdGljYWxseSBr
bm93biB0byBiZSBiYWQuCiAgICAgICAgIHZhbHVlLmZpbHRlcihub2RlLnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTI1NjgyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMwLDI5NCArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUg
IlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7
Ci1wdWJsaWM6Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSgpCi0gICAgICAgIDogbV9zdHJ1
Y3R1cmUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQot
ICAgIHsKLSAgICB9Ci0gICAgCi0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoc2V0LnNpemUoKSkgewotICAg
ICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBtX3N0cnVj
dHVyZSA9IHNldFswXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHRvcFZhbHVlKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFyKCkKLSAg
ICB7Ci0gICAgICAgIG1fc3RydWN0dXJlID0gMDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBtYWtl
VG9wKCkKLSAgICB7Ci0gICAgICAgIG1fc3RydWN0dXJlID0gdG9wVmFsdWUoKTsKLSAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdG9wKCkKLSAgICB7Ci0gICAg
ICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdmFsdWU7Ci0gICAgICAgIHZhbHVlLm1ha2VUb3Ao
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghY29udGFpbnMoc3RydWN0
dXJlKSAmJiAhaXNUb3AoKSk7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSkKLSAgICAgICAgICAg
IG1ha2VUb3AoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgYWRkQWxsKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCi0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSB8fCAhb3RoZXIuc2l6ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAob3RoZXIuc2l6ZSgpID4gMSkgewot
ICAgICAgICAgICAgbWFrZVRvcCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUg
PSBvdGhlclswXTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChtX3N0cnVjdHVyZSA9PSBvdGhlclswXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgbWFrZVRvcCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBhZGRBbGwoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCi0gICAg
ewotICAgICAgICBpZiAoIW90aGVyLm1fc3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKG90aGVyLmlzVG9wKCkpIHsKLSAgICAgICAgICAgIG1ha2VUb3AoKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSkg
ewotICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG1ha2VUb3AoKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RydWN0dXJlID0gb3Ro
ZXIubV9zdHJ1Y3R1cmU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG1fc3Ry
dWN0dXJlID09IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1
Y3R1cmVTZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzVG9wKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmUpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG90aGVyLmNvbnRhaW5zKG1fc3RydWN0
dXJlKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBkb2VzTm90Q29udGFpbkFueU90aGVyVGhhbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fc3RydWN0dXJlKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBzdHJ1
Y3R1cmU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW90aGVyLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBpZiAob3RoZXIuc2l6ZSgpID4gMSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlID09IG90aGVyWzBdOwot
ICAgIH0KLSAgICAKLSAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAob3RoZXIuaXNUb3AoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKG1fc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBp
ZiAob3RoZXIubV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJl
ID09IG90aGVyLm1fc3RydWN0dXJlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3VwZXJz
ZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9mKCp0aGlzKTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlm
ICghbV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBp
ZiAoaXNUb3AoKSkgewotICAgICAgICAgICAgc3dpdGNoIChvdGhlci5zaXplKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAxOgot
ICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXJbMF07Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChvdGhlci5jb250YWlucyhtX3N0cnVjdHVyZSkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIAotICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQotICAgIHsKLSAg
ICAgICAgaWYgKGlzVG9wKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXIubV9z
dHJ1Y3R1cmU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1f
c3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAob3RoZXIuaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9z
dHJ1Y3R1cmUgPSAwOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlw
ZSBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICghKG90aGVyICYgU3BlY0NlbGwpKSB7Ci0gICAg
ICAgICAgICBjbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAoaXNDbGVhck9yVG9wKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaWYgKCEoc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlKSAmIG90aGVy
KSkKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gMDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBp
c0NsZWFyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9zdHJ1Y3R1cmU7Ci0gICAg
fQotICAgIAotICAgIGJvb2wgaXNUb3AoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZSA9PSB0
b3BWYWx1ZSgpOyB9Ci0gICAgCi0gICAgYm9vbCBpc0NsZWFyT3JUb3AoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZSA8PSB0b3BWYWx1ZSgpOyB9Ci0gICAgYm9vbCBpc05laXRoZXJDbGVhck5v
clRvcCgpIGNvbnN0IHsgcmV0dXJuICFpc0NsZWFyT3JUb3AoKTsgfQotICAgIAotICAgIHNpemVf
dCBzaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNUb3AoKSk7Ci0gICAgICAg
IHJldHVybiAhIW1fc3RydWN0dXJlOwotICAgIH0KLSAgICAKLSAgICBTdHJ1Y3R1cmUqIGF0KHNp
emVfdCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc1RvcCgpKTsKLSAgICAgICAg
QVNTRVJUKG1fc3RydWN0dXJlKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7Ci0gICAg
ICAgIHJldHVybiBtX3N0cnVjdHVyZTsKLSAgICB9Ci0gICAgCi0gICAgU3RydWN0dXJlKiBvcGVy
YXRvcltdKHNpemVfdCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KGkpOwotICAg
IH0KLSAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGF0KDApOwotICAgIH0KLSAgICAKLSAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQotICAgICAg
ICAgICAgcmV0dXJuIFNwZWNDZWxsOwotICAgICAgICBpZiAoaXNDbGVhcigpKQotICAgICAgICAg
ICAgcmV0dXJuIFNwZWNOb25lOwotICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlKG1fc3RydWN0dXJlKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBoYXNTaW5nbGV0b24oKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTmVpdGhlckNsZWFyTm9yVG9wKCk7Ci0gICAg
fQotICAgIAotICAgIFN0cnVjdHVyZSogc2luZ2xldG9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVChpc05laXRoZXJDbGVhck5vclRvcCgpKTsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0
dXJlOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChGSUxF
KiBvdXQpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkgewotICAgICAgICAgICAg
ZnByaW50ZihvdXQsICJUT1AiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgZnByaW50ZihvdXQsICJbIik7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVy
ZSkKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiJXAiLCBtX3N0cnVjdHVyZSk7Ci0gICAgICAg
IGZwcmludGYob3V0LCAiXSIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgU3RydWN0
dXJlKiB0b3BWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMSk7
IH0KLSAgICAKLSAgICAvLyBUaGlzIGNhbiBvbmx5IHJlbWVtYmVyIG9uZSBzdHJ1Y3R1cmUgYXQg
YSB0aW1lLgotICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Ci19OwotCiBzdHJ1Y3QgQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgQWJzdHJhY3RWYWx1ZSgpCiAgICAgICAgIDogbV90eXBlKFNwZWNOb25l
KQpAQCAtMzI3LDE1ICs0NiwxNSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgdm9pZCBj
bGVhcigpCiAgICAgewogICAgICAgICBtX3R5cGUgPSBTcGVjTm9uZTsKLSAgICAgICAgbV9zdHJ1
Y3R1cmUuY2xlYXIoKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBtX2Z1dHVy
ZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0Ns
ZWFyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV90eXBlID09IFNwZWNO
b25lICYmIG1fc3RydWN0dXJlLmlzQ2xlYXIoKSAmJiBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmlz
Q2xlYXIoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3R5cGUgPT0gU3BlY05vbmUgJiYgbV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpICYmIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1
cmUuaXNDbGVhcigpOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgQVNTRVJUKCFt
X3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0NCw4ICs2Myw4IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIG1ha2VUb3AoKQogICAgIHsKICAgICAgICAgbV90
eXBlID0gU3BlY1RvcDsKLSAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOwotICAgICAgICBt
X3VuY2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgbV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLm1h
a2VUb3AoKTsKICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgIH0KQEAgLTM1Myw5ICs3Miw5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CiAgICAgICAgIGlmIChtX3R5
cGUgJiBTcGVjQ2VsbCkKLSAgICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAg
ICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLmlzQ2xlYXIoKSk7CisgICAgICAgICAgICBB
U1NFUlQobV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKQEAgLTM2Niw3ICs4NSw3IEBAIHN0cnVjdCBBYnN0
cmFjdFZhbHVlIHsKICAgICAKICAgICBib29sIGlzVG9wKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3R5cGUgPT0gU3BlY1RvcCAmJiBtX3N0cnVjdHVyZS5pc1RvcCgpICYmIG1fdW5j
bG9iYmVyZWRTdHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBTcGVj
VG9wICYmIG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzVG9wKCkgJiYgbV9mdXR1cmVQb3NzaWJs
ZVN0cnVjdHVyZS5pc1RvcCgpOwogICAgIH0KICAgICAKICAgICBib29sIHZhbHVlSXNUb3AoKSBj
b25zdApAQCAtMzg2LDIwICsxMDUsMjIgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldEZ1dHVyZVBvc3NpYmxl
U3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgaWYgKHN0cnVj
dHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAg
IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgIH0KKyAg
ICAKICAgICB2b2lkIHNldChKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCEhdmFs
dWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIC8vIEhhdmUgdG8gYmUgY2FyZWZ1
bCBoZXJlISBJdCdzIHRlbXB0aW5nIHRvIHNldCB0aGUgc3RydWN0dXJlIHRvIHRoZQotICAgICAg
ICAgICAgLy8gdmFsdWUncyBzdHJ1Y3R1cmUsIGJ1dCB0aGF0IHdvdWxkIGJlIHdyb25nLCBzaW5j
ZSB0aGF0IHdvdWxkCi0gICAgICAgICAgICAvLyBjb25zdGl0dXRlIGEgcHJvb2YgdGhhdCB0aGlz
IHZhbHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUKLSAgICAgICAgICAgIC8vIHN0cnVjdHVy
ZS4gVGhlIHdob2xlIHBvaW50IG9mIGEgdmFsdWUgaGF2aW5nIGEgc3RydWN0dXJlIGlzIHRoYXQK
LSAgICAgICAgICAgIC8vIGl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAtIGZvciBleGFtcGxl
IGJldHdlZW4gd2hlbiB3ZSBjb21waWxlCi0gICAgICAgICAgICAvLyB0aGUgY29kZSBhbmQgd2hl
biB3ZSBydW4gaXQuCi0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAg
ICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsgLy8gRklYTUU6IENvbnNpZGVy
IG5vdCBjbG9iYmVyaW5nIHRoaXMuCisgICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVy
ZS5tYWtlVG9wKCk7CisgICAgICAgICAgICBzZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSh2YWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmNsZWFyKCk7Cisg
ICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsK
QEAgLTQxMCwxMiArMTMxLDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIHZv
aWQgc2V0KFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmUu
Y2xlYXIoKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuYWRkKHN0cnVjdHVyZSk7Ci0gICAgICAgIAot
ICAgICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIG1fdW5jbG9i
YmVyZWRTdHJ1Y3R1cmUuYWRkKHN0cnVjdHVyZSk7Ci0gICAgICAgIAorICAgICAgICBtX2N1cnJl
bnRLbm93blN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgc2V0RnV0dXJlUG9zc2libGVT
dHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAg
IApAQCAtNDI1LDExICsxNDIsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQg
c2V0KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBpZiAodHlwZSAmIFNwZWND
ZWxsKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAgICAgICBt
X3VuY2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fY3VycmVudEtu
b3duU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1
Y3R1cmUubWFrZVRvcCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAg
ICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAg
bV90eXBlID0gdHlwZTsKICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKQEAgLTQzOSw4ICsx
NTYsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvdGhlci5tX3R5cGUKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVyLm1f
c3RydWN0dXJlCi0gICAgICAgICAgICAmJiBtX3VuY2xvYmJlcmVkU3RydWN0dXJlID09IG90aGVy
Lm1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUKKyAgICAgICAgICAgICYmIG1fY3VycmVudEtub3duU3Ry
dWN0dXJlID09IG90aGVyLm1fY3VycmVudEtub3duU3RydWN0dXJlCisgICAgICAgICAgICAmJiBt
X2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlID09IG90aGVyLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1
cmUKICAgICAgICAgICAgICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdApAQCAtNDU5
LDggKzE3Niw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHJlc3VsdCA9
ICFvdGhlci5pc0NsZWFyKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQg
fD0gbWVyZ2VTcGVjdWxhdGlvbihtX3R5cGUsIG90aGVyLm1fdHlwZSk7Ci0gICAgICAgICAgICBy
ZXN1bHQgfD0gbV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0dXJlKTsKLSAgICAgICAg
ICAgIHJlc3VsdCB8PSBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmFkZEFsbChvdGhlci5tX3VuY2xv
YmJlcmVkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBtX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5hZGRBbGwob3RoZXIubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgcmVzdWx0IHw9IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fZnV0
dXJlUG9zc2libGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKG1fdmFsdWUgIT0gb3RoZXIu
bV92YWx1ZSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAhIW1fdmFsdWU7CiAgICAgICAg
ICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKQEAgLTQ3Niw4ICsxOTMsOCBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCB0eXBlKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICh0eXBlICYgU3BlY0NlbGwpIHsKLSAgICAgICAgICAgIG1f
c3RydWN0dXJlLm1ha2VUb3AoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUu
bWFrZVRvcCgpOworICAgICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUubWFrZVRvcCgp
OworICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAg
ICAgIH0KICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKIApAQCAtNDg3LDE2ICsyMDQsMjEg
QEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpCiAgICAgewogICAgICAgICBtX3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25G
cm9tU3RydWN0dXJlcygpOwotICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIob3RoZXIpOwotICAg
ICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmZpbHRlcihvdGhlcik7CisgICAgICAgIG1fY3Vy
cmVudEtub3duU3RydWN0dXJlLmZpbHRlcihvdGhlcik7CisgICAgICAgIGlmIChtX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5pc0NsZWFyKCkpCisgICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudEtub3duU3RydWN0dXJl
Lmhhc1NpbmdsZXRvbigpKQorICAgICAgICAgICAgc2V0RnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUo
bV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRl
bWVudHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJlCiAgICAgICAgIC8vIEZvbyBpcyBhIFNwZWN1
bGF0ZWRUeXBlIHRoYXQgaXMgZGlzam9pbnQgd2l0aCB0aGUgcGFzc2VkIFN0cnVjdHVyZVNldC4g
SW4gdGhhdAogICAgICAgICAvLyBjYXNlLCB3ZSB3aWxsIG5vdyBoYXZlIChOb25lLCBbc29tZVN0
cnVjdHVyZV0pLiBJbiBnZW5lcmFsLCB3ZSBuZWVkIHRvIG1ha2UKICAgICAgICAgLy8gc3VyZSB0
aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFNwZWN1bGF0ZWRUeXBlIG5lZWRz
IHRvIGJlIGZlZCBiYWNrCiAgICAgICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQg
ZnJvbSB0aGUgU3RydWN0dXJlU2V0LgotICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90eXBl
KTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKyAgICAg
ICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisgICAgICAgIG1fZnV0
dXJlUG9zc2libGVTdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoISFtX3ZhbHVlICYmICF2YWxpZGF0ZUlnbm9yaW5nVmFsdWUobV92YWx1ZSkpCiAgICAgICAg
ICAgICBjbGVhcigpOwpAQCAtNTE0LDggKzIzNiw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICAgICAgLy8gdGhlIHBhc3NlZCB0eXBlIGlzIEFycmF5LiBBdCB0aGlzIHBvaW50IHdlJ2xs
IGhhdmUgKE5vbmUsIFRPUCkuIFRoZSBiZXN0IHdheQogICAgICAgICAvLyB0byBlbnN1cmUgdGhh
dCB0aGUgc3RydWN0dXJlIGZpbHRlcmluZyBkb2VzIHRoZSByaWdodCB0aGluZyBpcyB0byBmaWx0
ZXIgb24KICAgICAgICAgLy8gdGhlIG5ldyB0eXBlIChOb25lKSByYXRoZXIgdGhhbiB0aGUgb25l
IHBhc3NlZCAoQXJyYXkpLgotICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKLSAg
ICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKyAgICAgICAgbV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisgICAgICAgIG1fZnV0dXJlUG9z
c2libGVTdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CiAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAm
JiAhdmFsaWRhdGVJZ25vcmluZ1ZhbHVlKG1fdmFsdWUpKQogICAgICAgICAgICAgY2xlYXIoKTsK
QEAgLTUzNiwxMiArMjU4LDExIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9zdHJ1Y3R1
cmUuaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKICAgICAgICAg
aWYgKCEhdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3R5
cGUgJiBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuY29udGFpbnMo
dmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgcmV0dXJu
IG1fY3VycmVudEtub3duU3RydWN0dXJlLmNvbnRhaW5zKHN0cnVjdHVyZSkKKyAgICAgICAgICAg
ICAgICAmJiBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNvbnRhaW5zKHN0cnVjdHVyZSk7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTYzLDM5ICsyODQs
MTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX3N0cnVjdHVyZS5pc1RvcCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAogICAgICAgICBpZiAoISF2YWx1ZSAmJiB2
YWx1ZS5pc0NlbGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFNwZWNDZWxsKTsK
LSAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZS5jb250YWlucyh2YWx1ZS5hc0NlbGwoKS0+
c3RydWN0dXJlKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCB2YWxpZGF0ZUZvckVudHJ5KEpTVmFsdWUgdmFsdWUpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAKLSAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3ZhbHVlICE9IHZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYgKG1lcmdlU3Bl
Y3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKSAhPSBtX3R5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICBpZiAodmFsdWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0VtcHR5KTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAo
bV91bmNsb2JiZXJlZFN0cnVjdHVyZS5pc1RvcCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIAotICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIHJldHVybiBt
X3VuY2xvYmJlcmVkU3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5j
b250YWlucyhzdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgJiYgbV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZS5jb250YWlucyhzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTYwNCw4ICsyOTcsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICgh
KG1fdHlwZSAmIFNwZWNDZWxsKSkgewotICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLmlz
Q2xlYXIoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV91bmNsb2JiZXJlZFN0cnVjdHVyZS5pc0Ns
ZWFyKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzQ2xl
YXIoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5pc0Ns
ZWFyKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaXNDbGVhcigpKQpAQCAt
NjIzLDE3ICszMTYsNjcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgZHVtcChG
SUxFKiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwgc3Bl
Y3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuZHVtcChvdXQp
OworICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5kdW1wKG91dCk7CiAgICAgICAgIGRh
dGFMb2coIiwgIik7Ci0gICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuZHVtcChvdXQpOwor
ICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmR1bXAob3V0KTsKICAgICAgICAgaWYg
KCEhbV92YWx1ZSkKICAgICAgICAgICAgIGZwcmludGYob3V0LCAiLCAlcyIsIG1fdmFsdWUuZGVz
Y3JpcHRpb24oKSk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KIAotICAgIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZSBtX3VuY2xvYmJlcmVkU3RydWN0dXJlOworICAgIC8vIFRoaXMgaXMgYSBwcm92ZW4gY29u
c3RyYWludCBvbiB0aGUgc3RydWN0dXJlcyB0aGF0IHRoaXMgdmFsdWUgY2FuIGhhdmUgcmlnaHQK
KyAgICAvLyBub3cuIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGN1cnJlbnQgdmFsdWUgbXVzdCBiZWxv
bmcgdG8gdGhpcyBzZXQuIFRoZSBzZXQgbWF5CisgICAgLy8gYmUgVE9QLCBpbmRpY2F0aW5nIHRo
YXQgaXQgaXMgdGhlIHNldCBvZiBhbGwgcG9zc2libGUgc3RydWN0dXJlcywgaW4gd2hpY2gKKyAg
ICAvLyBjYXNlIHRoZSBjdXJyZW50IHZhbHVlIGNhbiBoYXZlIGFueSBzdHJ1Y3R1cmUuIFRoZSBz
ZXQgbWF5IGJlIEJPVFRPTSAoZW1wdHkpCisgICAgLy8gaW4gd2hpY2ggY2FzZSB0aGlzIHZhbHVl
IGNhbm5vdCBiZSBhIGNlbGwuIFRoaXMgaXMgYWxsIHN1YmplY3QgdG8gY2hhbmdlCisgICAgLy8g
YW55dGltZSBhIG5ldyB2YWx1ZSBpcyBhc3NpZ25lZCB0byB0aGlzIG9uZSwgYW55dGltZSB0aGVy
ZSBpcyBhIGNvbnRyb2wgZmxvdworICAgIC8vIG1lcmdlLCBvciBtb3N0IGNydWNpYWxseSwgYW55
dGltZSBhIHNpZGUtZWZmZWN0IG9yIHN0cnVjdHVyZSBjaGVjayBoYXBwZW5zLgorICAgIC8vIElu
IGNhc2Ugb2YgYSBzaWRlLWVmZmVjdCwgd2UgdHlwaWNhbGx5IG11c3QgYXNzdW1lIHRoYXQgYW55
IHZhbHVlIG1heSBoYXZlCisgICAgLy8gaGFkIGl0cyBzdHJ1Y3R1cmUgY2hhbmdlZCwgaGVuY2Ug
Y29udHJhdmVuaW5nIG91ciBwcm9vZi4gV2UgbWFrZSB0aGUgcHJvb2YKKyAgICAvLyB2YWxpZCBh
Z2FpbiBieSBzd2l0Y2hpbmcgdGhpcyB0byBUT1AgKGkuZS4gY2xhaW1pbmcgdGhhdCB3ZSBoYXZl
IHByb3ZlZCB0aGF0CisgICAgLy8gdGhpcyB2YWx1ZSBtYXkgaGF2ZSBhbnkgc3RydWN0dXJlKS4g
T2Ygbm90ZSBpcyB0aGF0IHRoZSBwcm9vZiByZXByZXNlbnRlZCBieQorICAgIC8vIHRoaXMgZmll
bGQgaXMgbm90IHN1YmplY3QgdG8gc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMgLSBl
dmVuIGlmIG9uZQorICAgIC8vIGZpcmVzLCB3ZSBjYW4gYmUgc3VyZSB0aGF0IHRoaXMgcHJvb2Yg
aXMgc3RpbGwgdmFsaWQuCisgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtX2N1cnJlbnRLbm93
blN0cnVjdHVyZTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGEgcHJvdmVuIGNvbnN0cmFpbnQgb24g
dGhlIHN0cnVjdHVyZXMgdGhhdCB0aGlzIHZhbHVlIGNhbiBoYXZlIG5vdworICAgIC8vIG9yIGFu
eSB0aW1lIGluIHRoZSBmdXR1cmUgc3ViamVjdCB0byB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb24g
d2F0Y2hwb2ludHMgb2YKKyAgICAvLyBhbGwgbWVtYmVycyBvZiB0aGlzIHNldCBub3QgaGF2aW5n
IGZpcmVkLiBUaGlzIHNldCBpcyBpbXBlcnZpb3VzIHRvIHNpZGUtCisgICAgLy8gZWZmZWN0czsg
ZXZlbiBpZiBvbmUgaGFwcGVucyB0aGUgc2lkZS1lZmZlY3QgY2FuIG9ubHkgY2F1c2UgdGhlIHZh
bHVlIHRvCisgICAgLy8gY2hhbmdlIHRvIGF0IHdvcnN0IGFub3RoZXIgc3RydWN0dXJlIHRoYXQg
aXMgYWxzbyBhIG1lbWJlciBvZiB0aGlzIHNldC4gQnV0LAorICAgIC8vIHRoZSB0aGVvcmVtIGJl
aW5nIHByb3ZlZCBieSB0aGlzIGZpZWxkIGlzIHByZWRpY2F0ZWQgdXBvbiB0aGVyZSBub3QgYmVp
bmcKKyAgICAvLyBhbnkgbmV3IHN0cnVjdHVyZSB0cmFuc2l0aW9ucyBpbnRyb2R1Y2VkIGludG8g
YW55IG1lbWJlcnMgb2YgdGhpcyBzZXQuIEluCisgICAgLy8gY2FzZXMgd2hlcmUgdGhlcmUgaXMg
bm8gd2F5IGZvciB1cyB0byBndWFyZCB0aGlzIGhhcHBlbmluZywgdGhlIHNldCBtdXN0IGJlCisg
ICAgLy8gVE9QLiBCdXQgaW4gY2FzZXMgd2hlcmUgd2UgY2FuIGd1YXJkIG5ldyBzdHJ1Y3R1cmUg
dHJhbnNpdGlvbnMgKGFsbCBtZW1iZXJzCisgICAgLy8gb2YgdGhlIHNldCBoYXZlIHN0aWxsLXZh
bGlkIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnRzKSB0aGVuIHRoaXMgc2V0CisgICAg
Ly8gd2lsbCBiZSBmaW5pdGUuIEFueXRpbWUgdGhhdCB3ZSBtYWtlIHVzZSBvZiB0aGUgZmluaXRl
IG5hdHVyZSBvZiB0aGlzIHNldCwKKyAgICAvLyB3ZSBtdXN0IGZpcnN0IGlzc3VlIGEgc3RydWN0
dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCwgd2hpY2ggd2lsbCBlZmZlY3RpdmVseQorICAgIC8v
IHJlc3VsdCBpbiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSBiZWluZyBmaWx0ZXJlZCBhY2NvcmRp
bmcgdG8KKyAgICAvLyBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLgorICAgIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZTsKKyAgICAKKyAgICAvLyBUaGlz
IGlzIGEgcHJvdmVuIGNvbnN0cmFpbnQgb24gdGhlIHBvc3NpYmxlIHR5cGVzIHRoYXQgdGhpcyB2
YWx1ZSBjYW4gaGF2ZQorICAgIC8vIG5vdyBvciBhbnkgdGltZSBpbiB0aGUgZnV0dXJlLCB1bmxl
c3MgaXQgaXMgcmVhc3NpZ25lZC4gVGhpcyBmaWVsZCBpcworICAgIC8vIGltcGVydmlvdXMgdG8g
c2lkZS1lZmZlY3RzIHVubGVzcyB0aGUgc2lkZS1lZmZlY3QgY2FuIHJlYXNzaWduIHRoZSB2YWx1
ZQorICAgIC8vIChmb3IgZXhhbXBsZSBpZiB3ZSdyZSB0YWxraW5nIGFib3V0IGEgY2FwdHVyZWQg
dmFyaWFibGUpLiBUaGUgcmVsYXRpb25zaGlwCisgICAgLy8gYmV0d2VlbiB0aGlzIGZpZWxkLCBh
bmQgdGhlIHN0cnVjdHVyZSBmaWVsZHMgYWJvdmUsIGlzIGFzIGZvbGxvd3MuIFRoZQorICAgIC8v
IGZpZWxkcyBhYm92ZSBjb25zdHJhaW50IHRoZSBzdHJ1Y3R1cmVzIHRoYXQgYSBjZWxsIG1heSBo
YXZlLCBidXQgdGhleSBzYXkKKyAgICAvLyBub3RoaW5nIGFib3V0IHdoZXRoZXIgb3Igbm90IHRo
ZSB2YWx1ZSBpcyBrbm93biB0byBiZSBhIGNlbGwuIE1vcmUgZm9ybWFsbHksCisgICAgLy8gdGhl
IG1fY3VycmVudEtub3duU3RydWN0dXJlIGlzIGl0c2VsZiBhbiBhYnN0cmFjdCB2YWx1ZSB0aGF0
IGNvbnNpc3RzIG9mIHRoZQorICAgIC8vIHVuaW9uIG9mIHRoZSBzZXQgb2YgYWxsIG5vbi1jZWxs
IHZhbHVlcyBhbmQgdGhlIHNldCBvZiBjZWxsIHZhbHVlcyB0aGF0IGhhdmUKKyAgICAvLyB0aGUg
Z2l2ZW4gc3RydWN0dXJlLiBUaGlzIGFic3RyYWN0IHZhbHVlIGlzIHRoZW4gdGhlIGludGVyc2Vj
dGlvbiBvZiB0aGUKKyAgICAvLyBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSBhbmQgdGhlIHNldCBv
ZiB2YWx1ZXMgd2hvc2UgdHlwZSBpcyBtX3R5cGUuIFNvLCBmb3IKKyAgICAvLyBleGFtcGxlIGlm
IG1fdHlwZSBpcyBTcGVjRmluYWx8U3BlY0ludDMyIGFuZCBtX2N1cnJlbnRLbm93blN0cnVjdHVy
ZSBpcworICAgIC8vIFsweDEyMzQ1XSB0aGVuIHRoaXMgYWJzdHJhY3QgdmFsdWUgY29ycmVzcG9u
ZHMgdG8gdGhlIHNldCBvZiBhbGwgaW50ZWdlcnMKKyAgICAvLyB1bmlmaWVkIHdpdGggdGhlIHNl
dCBvZiBhbGwgb2JqZWN0cyB3aXRoIHN0cnVjdHVyZSAweDEyMzQ1LgogICAgIFNwZWN1bGF0ZWRU
eXBlIG1fdHlwZTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGEgcHJvdmVuIGNvbnN0cmFpbnQgb24g
dGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IHRoaXMgdmFsdWUgY2FuCisgICAgLy8gaGF2ZSBub3cg
b3IgYW55IHRpbWUgaW4gdGhlIGZ1dHVyZSwgdW5sZXNzIGl0IGlzIHJlYXNzaWduZWQuIE5vdGUg
dGhhdCB0aGlzCisgICAgLy8gaW1wbGllcyBub3RoaW5nIGFib3V0IHRoZSBzdHJ1Y3R1cmUuIE9k
ZGx5LCBKU1ZhbHVlKCkgKGkuZS4gdGhlIGVtcHR5IHZhbHVlKQorICAgIC8vIG1lYW5zIGVpdGhl
ciBCT1RUT00gb3IgVE9QIGRlcGVuZGluZyBvbiB0aGUgc3RhdGUgb2YgbV90eXBlOiBpZiBtX3R5
cGUgaXMKKyAgICAvLyBCT1RUT00gdGhlbiBKU1ZhbHVlKCkgbWVhbnMgQk9UVE9NOyBpZiBtX3R5
cGUgaXMgbm90IEJPVFRPTSB0aGVuIEpTVmFsdWUoKQorICAgIC8vIG1lYW5zIFRPUC4KICAgICBK
U1ZhbHVlIG1fdmFsdWU7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTI1NjgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NSw2ICszNDUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGNh
c2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAg
IGlmIChub2RlLmNoaWxkMSgpID09IGNoaWxkMQogICAgICAgICAgICAgICAgICAgICAmJiBzdHJ1
Y3R1cmVTZXQuY29udGFpbnMobm9kZS5zdHJ1Y3R1cmUoKSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNDE4LDYgKzQxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBTdHJ1
Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIGNhc2UgRm9yd2FyZFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgIGlmIChub2RlLnN0cnVj
dHVyZSgpID09IHN0cnVjdHVyZSAmJiBub2RlLmNoaWxkMSgpID09IGNoaWxkMSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTE3
LDYgKzExMTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgY2Fz
ZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRFbGltaW5hdGlvbihub2RlLnN0cnVjdHVyZSgp
LCBub2RlLmNoaWxkMSgpLmluZGV4KCkpKQogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTI1NjgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHdvdWxkIGJlIGEgZ3JlYXQgcGxhY2UgdG8gcmVtb3ZlIENoZWNr
U3RydWN0dXJlJ3MuCisgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgorICAgICAgICAg
ICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6IHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlJiBzdHJ1Y3R1cmVWYWx1ZSA9CisgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlOwor
ICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVWYWx1ZS5pc1N1YnNldE9mKG5vZGUuc3RydWN0
dXJlU2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmVWYWx1ZS5o
YXNTaW5nbGV0b24oKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUuY29udmVydFRvU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnQoc3RydWN0dXJlVmFsdWUuc2luZ2xldG9uKCkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEy
NTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsMTEgKzI0NSwxOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNoaWxkcmVu
LnJlc2V0KCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29udmVydFRvU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBU1NF
UlQobV9vcCA9PSBDaGVja1N0cnVjdHVyZSB8fCBtX29wID09IEZvcndhcmRDaGVja1N0cnVjdHVy
ZSk7CisgICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc3RydWN0dXJl
KTsKKyAgICAgICAgaWYgKG1fb3AgPT0gQ2hlY2tTdHJ1Y3R1cmUpCisgICAgICAgICAgICBtX29w
ID0gU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fb3AgPSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ7CisgICAgfQor
ICAgIAogICAgIHZvaWQgY29udmVydFRvU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ2hlY2tTdHJ1Y3R1cmUpOwotICAgICAgICBt
X29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZVNldCgpLnNpbmdsZXRv
blN0cnVjdHVyZSgpKTsKLSAgICAgICAgbV9vcCA9IFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50OworICAgICAgICBjb252ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHJ1
Y3R1cmVTZXQoKS5zaW5nbGV0b25TdHJ1Y3R1cmUoKSk7CiAgICAgfQogICAgIAogICAgIEpTQ2Vs
bCogd2Vha0NvbnN0YW50KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlIGRvZXMg
bm90IG5lZWQgdG8gYmUgcmVjaGVja2VkIGR1ZSB0byBzaWRlLWVmZmVjdGluZyAqL1wKICAgICAv
KiAoY2xvYmJlcmluZykgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGb3J3YXJkU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tUHV0
U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZURvZXNOb3RFeGl0KSBcCiAgICAgbWFj
cm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlRG9lc05v
dEV4aXQgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdmFsdWUgPSBleGVjLT5hcmd1bWVudChhcmd1bWVudCAtIDEpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKCFlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1
bWVudCkudmFsaWRhdGVGb3JFbnRyeSh2YWx1ZSkpIHsKKyAgICAgICAgaWYgKCFlbnRyeS0+bV9l
eHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkudmFsaWRhdGUodmFsdWUpKSB7CiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKICAgICAgICAgICAgIGRhdGFMb2coIiAgICBPU1IgZmFp
bGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IGlzICVzLCBleHBlY3RlZCAiLCBhcmd1bWVudCwgdmFs
dWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5h
cmd1bWVudChhcmd1bWVudCkuZHVtcChXVEY6OmRhdGFGaWxlKCkpOwpAQCAtMTE5LDcgKzExOSw3
IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmICghZW50cnkt
Pm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLnZhbGlkYXRlRm9yRW50cnkoZXhlYy0+cmVn
aXN0ZXJzKClbbG9jYWxdLmpzVmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKCFlbnRyeS0+bV9leHBl
Y3RlZFZhbHVlcy5sb2NhbChsb2NhbCkudmFsaWRhdGUoZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxd
LmpzVmFsdWUoKSkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQogICAgICAgICAgICAg
ZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUgaXMgJXMsIGV4cGVj
dGVkICIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpLmRlc2NyaXB0
aW9uKCkpOwogICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwp
LmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDYgKzY3NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgRm9yd2Fy
ZENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50OgorICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoK
ICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToK
ICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTI1Njgy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQ3MCw3ICszNDcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBG
b3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVj
dHVyZS5pc1N1YnNldE9mKG5vZGUuc3RydWN0dXJlU2V0KCkpCisgICAgICAgIGlmICh2YWx1ZS5t
X2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKG5vZGUuc3RydWN0dXJlU2V0KCkpCiAg
ICAgICAgICAgICAmJiBpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKSB7CiAgICAgICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1
MTEsOSArMzUxMSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludDogeworICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnQ6CisgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6IHsKICAg
ICAgICAgbV9qaXQuYWRkV2Vha1JlZmVyZW5jZShub2RlLnN0cnVjdHVyZSgpKTsKLSAgICAgICAg
bm9kZS5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoc3BlY3VsYXRpb25XYXRj
aHBvaW50KEJhZENhY2hlKSk7CisgICAgICAgIG5vZGUuc3RydWN0dXJlKCktPmFkZFRyYW5zaXRp
b25XYXRjaHBvaW50KAorICAgICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50V2l0aENvbmRp
dGlvbmFsRGlyZWN0aW9uKAorICAgICAgICAgICAgICAgIEJhZENhY2hlLCBub2RlLm9wKCkgPT0g
Rm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KSk7CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDExICsxMTksOCBA
QCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJCiAgICAgcmV0dXJuIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludChraW5kLCBKU1ZhbHVlU291cmNlKCksIE5vTm9kZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtp
bmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVS
ZWNvdmVyeSkKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2Fy
ZChjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogewotICAgIEFTU0VSVChhdCht
X2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwot
ICAgIHNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBqdW1w
VG9GYWlsKTsKLSAgICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKCF2YWx1ZVJlY292
ZXJ5KSB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHByZWNlZGluZyBub2RlIHdhcyBhIFNl
dExvY2FsIHdpdGggdGhlIHNhbWUgY29kZSBvcmlnaW4uCkBAIC0xNzEsNiArMTY4LDI4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkMKICAgICAgICAgbmV3IFZhbHVl
UmVjb3ZlcnlPdmVycmlkZShzZXRMb2NhbC0+bG9jYWwoKSwgdmFsdWVSZWNvdmVyeSkpOwogfQog
CitKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1
bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCBraW5kKQoreworICAgIEp1bXBSZXBsYWNlbWVudFdh
dGNocG9pbnQqIHJlc3VsdCA9IHNwZWN1bGF0aW9uV2F0Y2hwb2ludChraW5kKTsKKyAgICBjb252
ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKdW1w
UmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBv
aW50V2l0aENvbmRpdGlvbmFsRGlyZWN0aW9uKEV4aXRLaW5kIGtpbmQsIGJvb2wgaXNGb3J3YXJk
KQoreworICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIHJlc3VsdCA9IHNwZWN1bGF0aW9u
V2F0Y2hwb2ludChraW5kKTsKKyAgICBpZiAoaXNGb3J3YXJkKQorICAgICAgICBjb252ZXJ0TGFz
dE9TUkV4aXRUb0ZvcndhcmQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVl
U291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCit7
CisgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5n
QXJndW1lbnRUeXBlcyk7CisgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNl
LCBub2RlSW5kZXgsIGp1bXBUb0ZhaWwpOworICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2Fy
ZCh2YWx1ZVJlY292ZXJ5KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1
bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBO
b2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1bXBzVG9GYWls
LCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQogewogICAgIEFTU0VSVChhdCht
X2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwpA
QCAtMjUzLDggKzI3Miw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNsZWFyR2VuZXJhdGlvbklu
Zm8KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUFycmF5KEVkZ2UgZWRnZSwgR1BSUmVn
IGJhc2VSZWcpCiB7CiAgICAgQWJzdHJhY3RWYWx1ZSYgYXJyYXlWYWx1ZSA9IG1fc3RhdGUuZm9y
Tm9kZShlZGdlKTsKLSAgICBpZiAoYXJyYXlWYWx1ZS5tX3N0cnVjdHVyZS5oYXNTaW5nbGV0b24o
KQotICAgICAgICAmJiBhcnJheVZhbHVlLm1fc3RydWN0dXJlLnNpbmdsZXRvbigpLT5jbGFzc0lu
Zm8oKSA9PSAmSlNBcnJheTo6c19pbmZvKQorICAgIGlmIChhcnJheVZhbHVlLm1fY3VycmVudEtu
b3duU3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCisgICAgICAgICYmIGFycmF5VmFsdWUubV9jdXJy
ZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmNsYXNzSW5mbygpID09ICZKU0FycmF5Ojpz
X2luZm8pCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4MSw2ICsyMTgxLDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBhY3Qgb2YgZmlyaW5nIGEgd2F0Y2hwb2ludCBpbnZhbGlkYXRlcyBpdC4gU28s
IGZ1dHVyZSByZWNvbXBpbGF0aW9ucyB3aWxsIG5vdAogICAgIC8vIGF0dGVtcHQgdG8gc2V0IHRo
aXMgd2F0Y2hwb2ludCBhZ2Fpbi4KICAgICBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBzcGVj
dWxhdGlvbldhdGNocG9pbnQoRXhpdEtpbmQgPSBVbmNvdW50YWJsZVdhdGNocG9pbnQpOworICAg
IAorICAgIC8vIEl0IGlzIGdlbmVyYWxseSBhIGdvb2QgaWRlYSB0byBub3QgdXNlIHRoaXMgZGly
ZWN0bHkuCisgICAgdm9pZCBjb252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQoY29uc3QgVmFsdWVS
ZWNvdmVyeSYgPSBWYWx1ZVJlY292ZXJ5KCkpOworICAgIAogICAgIC8vIE5vdGU6IG5vdCBzcGVj
aWZ5aW5nIHRoZSB2YWx1ZVJlY292ZXJ5IGFyZ3VtZW50IChsZWF2aW5nIGl0IGFzIFZhbHVlUmVj
b3ZlcnkoKSkgaW1wbGllcwogICAgIC8vIHRoYXQgeW91J3ZlIGVuc3VyZWQgdGhhdCB0aGVyZSBl
eGlzdHMgYSBNb3ZIaW50IHByaW9yIHRvIHlvdXIgdXNlIG9mIGZvcndhcmRTcGVjdWxhdGlvbkNo
ZWNrKCkuCiAgICAgdm9pZCBmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCwgSlNWYWx1
ZVNvdXJjZSwgTm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25z
dCBWYWx1ZVJlY292ZXJ5JiA9IFZhbHVlUmVjb3ZlcnkoKSk7CkBAIC0yMTkwLDYgKzIxOTQsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oRXhpdEtp
bmQsIEpTVmFsdWVSZWdzLCBOb2RlSW5kZXgpOwogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oRXhpdEtpbmQsIEpTVmFsdWVSZWdzLCBFZGdlKTsKICAgICB2b2lkIHRlcm1p
bmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uV2l0aENvbmRpdGlvbmFsRGlyZWN0aW9uKEV4aXRLaW5k
LCBKU1ZhbHVlUmVncywgTm9kZUluZGV4LCBib29sIGlzRm9yd2FyZCk7CisgICAgLy8gSXNzdWUg
YSBmb3J3YXJkIHNwZWN1bGF0aW9uIHdhdGNocG9pbnQsIHdoaWNoIHdpbGwgZXhpdCB0byB0aGUg
bmV4dCBpbnN0cnVjdGlvbiByYXRoZXIKKyAgICAvLyB0aGFuIHRoZSBjdXJyZW50IG9uZS4KKyAg
ICBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBmb3J3YXJkU3BlY3VsYXRpb25XYXRjaHBvaW50
KEV4aXRLaW5kID0gVW5jb3VudGFibGVXYXRjaHBvaW50KTsKKyAgICBKdW1wUmVwbGFjZW1lbnRX
YXRjaHBvaW50KiBzcGVjdWxhdGlvbldhdGNocG9pbnRXaXRoQ29uZGl0aW9uYWxEaXJlY3Rpb24o
RXhpdEtpbmQsIGJvb2wgaXNGb3J3YXJkKTsKICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUFycmF5
KEVkZ2UgYmFzZUVkZ2UsIEdQUlJlZyBiYXNlUmVnKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzI3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZV9oCisjZGVmaW5lIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWVfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xh
c3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CitwdWJsaWM6CisgICAgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSgpCisgICAgICAgIDogbV9zdHJ1Y3R1cmUoMCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAg
IDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZShjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoc2V0LnNpemUoKSkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBtX3N0
cnVjdHVyZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHNldFswXTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBtX3N0cnVj
dHVyZSA9IHRvcFZhbHVlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlID0gMDsK
KyAgICB9CisgICAgCisgICAgdm9pZCBtYWtlVG9wKCkKKyAgICB7CisgICAgICAgIG1fc3RydWN0
dXJlID0gdG9wVmFsdWUoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWUgdG9wKCkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdmFs
dWU7CisgICAgICAgIHZhbHVlLm1ha2VUb3AoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGFkZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghY29udGFpbnMoc3RydWN0dXJlKSAmJiAhaXNUb3AoKSk7CisgICAgICAgIGlm
IChtX3N0cnVjdHVyZSkKKyAgICAgICAgICAgIG1ha2VUb3AoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIGJvb2wg
YWRkQWxsKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoaXNU
b3AoKSB8fCAhb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAob3RoZXIuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgbWFrZVRvcCgpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkg
eworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBvdGhlclswXTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChtX3N0cnVjdHVyZSA9PSBvdGhlclswXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgbWFrZVRvcCgpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBhZGRBbGwoY29uc3QgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZSYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoIW90aGVyLm1fc3RydWN0
dXJlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXNUb3AoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG90aGVyLmlzVG9wKCkpIHsKKyAg
ICAgICAgICAgIG1ha2VUb3AoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChtX3N0cnVjdHVyZSkgeworICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJl
ID09IG90aGVyLm1fc3RydWN0dXJlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIG1ha2VUb3AoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sIGNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0
dXJlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzVG9wKCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IHN0cnVjdHVyZSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAg
IGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKGlzVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGlmICghbV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIG90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBk
b2VzTm90Q29udGFpbkFueU90aGVyVGhhbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBtX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIGJvb2wg
aXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAo
IW90aGVyLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAob3Ro
ZXIuc2l6ZSgpID4gMSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlID09IG90aGVyWzBdOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU3Vic2V0
T2YoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAob3RoZXIuaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1f
c3RydWN0dXJlKSB7CisgICAgICAgICAgICBpZiAob3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICBib29sIGlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9m
KCp0aGlzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICghbV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgICAgICBpZiAoaXNUb3AoKSkgeworICAgICAgICAgICAgc3dp
dGNoIChvdGhlci5zaXplKCkpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAg
ICBtX3N0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
b3RoZXJbMF07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvdGhlci5jb250YWlucyhtX3N0cnVj
dHVyZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBtX3N0cnVjdHVy
ZSA9IDA7CisgICAgfQorICAgIAorICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWUmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKGlzVG9wKCkpIHsKKyAgICAgICAg
ICAgIG1fc3RydWN0dXJlID0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAob3RoZXIuaXNUb3AoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zdHJ1Y3R1cmUgPSAwOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICgh
KG90aGVyICYgU3BlY0NlbGwpKSB7CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaXNDbGVhck9yVG9wKCkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCEoc3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlKG1fc3RydWN0dXJlKSAmIG90aGVyKSkKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
MDsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0NsZWFyKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhbV9zdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNUb3AoKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZSA9PSB0b3BWYWx1ZSgpOyB9CisgICAgCisgICAgYm9vbCBp
c0NsZWFyT3JUb3AoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZSA8PSB0b3BWYWx1ZSgpOyB9
CisgICAgYm9vbCBpc05laXRoZXJDbGVhck5vclRvcCgpIGNvbnN0IHsgcmV0dXJuICFpc0NsZWFy
T3JUb3AoKTsgfQorICAgIAorICAgIHNpemVfdCBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVCghaXNUb3AoKSk7CisgICAgICAgIHJldHVybiAhIW1fc3RydWN0dXJlOworICAgIH0K
KyAgICAKKyAgICBTdHJ1Y3R1cmUqIGF0KHNpemVfdCBpKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFpc1RvcCgpKTsKKyAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChpLCAhaSk7CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZTsKKyAgICB9
CisgICAgCisgICAgU3RydWN0dXJlKiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGF0KGkpOworICAgIH0KKyAgICAKKyAgICBTdHJ1Y3R1cmUqIGxhc3Qo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGF0KDApOworICAgIH0KKyAgICAKKyAgICBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNDZWxsOworICAgICAg
ICBpZiAoaXNDbGVhcigpKQorICAgICAgICAgICAgcmV0dXJuIFNwZWNOb25lOworICAgICAgICBy
ZXR1cm4gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBoYXNTaW5nbGV0b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlz
TmVpdGhlckNsZWFyTm9yVG9wKCk7CisgICAgfQorICAgIAorICAgIFN0cnVjdHVyZSogc2luZ2xl
dG9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05laXRoZXJDbGVhck5vclRvcCgp
KTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlOworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAg
fQorICAgIAorICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoaXNUb3AoKSkgeworICAgICAgICAgICAgZnByaW50ZihvdXQsICJUT1AiKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnByaW50ZihvdXQsICJb
Iik7CisgICAgICAgIGlmIChtX3N0cnVjdHVyZSkKKyAgICAgICAgICAgIGZwcmludGYob3V0LCAi
JXAiLCBtX3N0cnVjdHVyZSk7CisgICAgICAgIGZwcmludGYob3V0LCAiXSIpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgU3RydWN0dXJlKiB0b3BWYWx1ZSgpIHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMSk7IH0KKyAgICAKKyAgICAvLyBUaGlzIGNhbiBvbmx5
IHJlbWVtYmVyIG9uZSBzdHJ1Y3R1cmUgYXQgYSB0aW1lLgorICAgIFN0cnVjdHVyZSogbV9zdHJ1
Y3R1cmU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWVfaAorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158976</attachid>
            <date>2012-08-16 19:09:18 -0700</date>
            <delta_ts>2012-08-17 00:31:19 -0700</delta_ts>
            <desc>almost there</desc>
            <filename>rationalizewatch_patch_2.diff</filename>
            <type>text/plain</type>
            <size>55577</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic3RyYWN0IHZhbHVlcyBhbmQgc3RydWN0dXJlIHRy
YW5zaXRpb24gd2F0Y2hwb2ludHMgc2hvdWxkIGJlIHJhdGlvbmFsaXplZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2sp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjppc0NsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjptYWtlVG9w
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjbG9iYmVyU3RydWN0dXJlcyk6
CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNUb3ApOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0VmFsdWU6OnNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKToKKyAgICAg
ICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNl
dCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6dmFsaWRhdGVJZ25vcmluZ1ZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2hlY2tD
b25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZHVtcCk6Cisg
ICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFz
ZTo6Y2hlY2tTdHJ1Y3R1cmVMb2FkRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNT
RVBoYXNlOjpzdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEVsaW1pbmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRG
b2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6cHJlcGFyZU9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRMYXN0T1NSRXhp
dFRvRm9yd2FyZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRT
cGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25XYXRjaHBvaW50V2l0aENvbmRpdGlvbmFsRGly
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1
bGF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChT
cGVjdWxhdGl2ZUpJVCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWFrZVRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjphZGQpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmFkZEFsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmlzU3Vic2V0T2YpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmRvZXNOb3RDb250YWluQW55T3RoZXJUaGFuKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0T2YpOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6aXNDbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6aXNUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmlzQ2xlYXJPclRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6aXNOZWl0aGVyQ2xlYXJOb3JUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNpemUpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpsYXN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpoYXNTaW5nbGV0b24pOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OnNpbmdsZXRvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6dG9wVmFsdWUpOgorCiAyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RydWN0dXJlIGNoZWNrIGhvaXN0aW5nIHNob3VsZCBi
ZSBsZXNzIGV4cGVuc2l2ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNiArMjI5LDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lz
dGluZ1BoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVD
aGVja0hvaXN0aW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjU4
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBACiAJCTBGNjM5
NDQwMTVDNzVGMUQwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0M0Mx
NUM3NUYxNDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi87
IH07CiAJCTBGNjM5NDU0MTVEMDcwNTUwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0NTExNUQwNzA1
MTAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5jcHAgKi87IH07CiAJCTBGNjM5NDU1MTVEMDcwNTcw
MDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjM5NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYz
OTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0NzYxNURDRTM0
NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjY2RTE2QjE0REYzRjE2MDBCN0Iy
RTQgLyogREZHQWRqYWNlbmN5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY2NkUxNjgxNERGM0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjY2RTE2QzE0REYzRjE2MDBCN0IyRTQgLyogREZHRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERG
R0VkZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMjYxNUE4Q0MxQjAw
OEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCAqLzsgfTsKQEAgLTg5Myw2ICs4OTQsNyBAQAog
CQkwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUNoZWNr
SG9pc3RpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFz
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5
N0MgLyogQXJyYXlQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFycmF5UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjM5
NDUyMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXJyYXlQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNjM5NDc2MTVEQ0UzNDcwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZUFic3RyYWN0
VmFsdWUuaDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjZFMTY4MTRERjNGMTMwMEI3QjJFNCAvKiBERkdBZGph
Y2VuY3lMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FkamFjZW5j
eUxpc3QuaDsgcGF0aCA9IGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAvKiBERkdFZGdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0VkZ2UuaDsgcGF0aCA9IGRmZy9ERkdFZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzY2RDFDMTVBNTAyOEQwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRTdHViUm91dGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMyOSw2ICsy
MzMxLDcgQEAKIAkJCQk4NkVDOURDMzEzMjhERjgyMDAyQjJBRDcgLyogREZHU3BlY3VsYXRpdmVK
SVQuaCAqLywKIAkJCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAgKi8sCiAJCQkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUNjQuY3BwICovLAorCQkJCTBGNjM5NDc2MTVEQ0UzNDcwMDZBNTk3QyAvKiBERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggKi8sCiAJCQkJMEY2Mzk0M0MxNUM3NUYxNDAwNkE1OTdD
IC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEY2Mzk0M0Qx
NUM3NUYxNDAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oICovLAog
CQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwICovLApAQCAtMjg3
NCw2ICsyODc3LDcgQEAKIAkJCQkwRjc2NkQ0NjE1QjM3MDFGMDA4RjM2M0UgLyogREZHU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQzRjE1Qzc1RjE5
MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDEzICs2MiwxMyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhC
YXNpCiAgICAgbV92YXJpYWJsZXMgPSBiYXNpY0Jsb2NrLT52YWx1ZXNBdEhlYWQ7CiAgICAgbV9o
YXZlU3RydWN0dXJlcyA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YXJp
YWJsZXMubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX3ZhcmlhYmxl
cy5hcmd1bWVudChpKS5tX3N0cnVjdHVyZS5pc05laXRoZXJDbGVhck5vclRvcCgpKSB7CisgICAg
ICAgIGlmIChtX3ZhcmlhYmxlcy5hcmd1bWVudChpKS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5p
c05laXRoZXJDbGVhck5vclRvcCgpKSB7CiAgICAgICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV92YXJpYWJsZXMubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAg
ICAgIGlmIChtX3ZhcmlhYmxlcy5sb2NhbChpKS5tX3N0cnVjdHVyZS5pc05laXRoZXJDbGVhck5v
clRvcCgpKSB7CisgICAgICAgIGlmIChtX3ZhcmlhYmxlcy5sb2NhbChpKS5tX2N1cnJlbnRLbm93
blN0cnVjdHVyZS5pc05laXRoZXJDbGVhck5vclRvcCgpKSB7CiAgICAgICAgICAgICBtX2hhdmVT
dHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDEz
LDE3ICsxNDEzLDM0IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQK
ICAgICBjYXNlIEZvcndhcmRDaGVja1N0cnVjdHVyZTogewogICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGJlIGFibGUgdG8gcHJvcGFnYXRlIHRoZSBzdHJ1Y3R1cmUgc2V0cyBvZiBjb25zdGFu
dHMgKGkuZS4gcHJvdG90eXBlcykuCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9y
Tm9kZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgLy8gSWYgdGhpcyBzdHJ1Y3R1cmUgY2hlY2sg
aXMgYXR0ZW1wdGluZyB0byBwcm92ZSBrbm93bGVkZ2UgYWxyZWFkeSBoZWxkIGluCisgICAgICAg
IC8vIHRoZSBmdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSBzZXQgdGhlbiB0aGUgY29uc3RhbnQgZm9s
ZGluZyBwaGFzZSBzaG91bGQKKyAgICAgICAgLy8gdHVybiB0aGlzIGludG8gYSB3YXRjaHBvaW50
IGluc3RlYWQuCisgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS5zdHJ1Y3R1cmVTZXQo
KTsKKyAgICAgICAgaWYgKHZhbHVlLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRP
ZihzZXQpKQorICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CiAgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdCgKLSAgICAgICAgICAgICF2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9m
KG5vZGUuc3RydWN0dXJlU2V0KCkpCisgICAgICAgICAgICAhdmFsdWUubV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUuaXNTdWJzZXRPZihzZXQpCiAgICAgICAgICAgICB8fCAhaXNDZWxsU3BlY3VsYXRp
b24odmFsdWUubV90eXBlKSk7Ci0gICAgICAgIHZhbHVlLmZpbHRlcihub2RlLnN0cnVjdHVyZVNl
dCgpKTsKKyAgICAgICAgdmFsdWUuZmlsdGVyKHNldCk7CisgICAgICAgIGlmICh2YWx1ZS5tX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5pc0NsZWFyKCkpCisgICAgICAgICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDog
ewotICAgICAgICAvLyBGSVhNRTogVHVybiBDaGVja1N0cnVjdHVyZSBpbnRvIFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50IHdoZW4gcG9zc2libGUhCisgICAgY2FzZSBTdHJ1Y3R1cmVUcmFu
c2l0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludDogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS5j
aGlsZDEoKSk7CisKKyAgICAgICAgLy8gSXQncyBvbmx5IHZhbGlkIHRvIGlzc3VlIGEgc3RydWN0
dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludCBpZiB3ZSBhbHJlYWR5CisgICAgICAgIC8vIGtub3cg
dGhhdCB0aGUgd2F0Y2hwb2ludCBjb3ZlcnMgYSBzdXBlcnNldCBvZiB0aGUgc3RydWN0dXJlcyBr
bm93biB0bworICAgICAgICAvLyBiZWxvbmcgdG8gdGhlIHNldCBvZiBmdXR1cmUgc3RydWN0dXJl
cyB0aGF0IHRoaXMgdmFsdWUgbWF5IGhhdmUuCisgICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugb25s
eSBpc3N1ZSBzaW5nbGV0b24gd2F0Y2hwb2ludHMgKHRoYXQgY2hlY2sgb25lIHN0cnVjdHVyZSkK
KyAgICAgICAgLy8gYW5kIG91ciBmdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSBzZXQgY2FuIG9ubHkg
Y29udGFpbiB6ZXJvLCBvbmUsIG9yIGFuCisgICAgICAgIC8vIGluZmluaXR5IG9mIHN0cnVjdHVy
ZXMuCisgICAgICAgIEFTU0VSVCh2YWx1ZS5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmlzU3Vi
c2V0T2YoU3RydWN0dXJlU2V0KG5vZGUuc3RydWN0dXJlKCkpKSk7CisgICAgICAgIAogICAgICAg
ICBBU1NFUlQodmFsdWUuaXNDbGVhcigpIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlw
ZSkpOyAvLyBWYWx1ZSBjb3VsZCBiZSBjbGVhciBpZiB3ZSd2ZSBwcm92ZW4gbXVzdC1leGl0IGR1
ZSB0byBhIHNwZWN1bGF0aW9uIHN0YXRpY2FsbHkga25vd24gdG8gYmUgYmFkLgogICAgICAgICB2
YWx1ZS5maWx0ZXIobm9kZS5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMg
PSB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCwyOTQgKzMwLDEzIEBACiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCIK
ICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
LWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewotcHVibGljOgotICAgIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUoKQotICAgICAgICA6IG1fc3RydWN0dXJlKDApCi0gICAgewotICAgIH0KLSAg
ICAKLSAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAg
ICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCi0gICAgewotICAg
ICAgICBzd2l0Y2ggKHNldC5zaXplKCkpIHsKLSAgICAgICAgY2FzZSAwOgotICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSAxOgotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBzZXRbMF07Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbV9z
dHJ1Y3R1cmUgPSB0b3BWYWx1ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX3N0cnVjdHVyZSA9
IDA7Ci0gICAgfQotICAgIAotICAgIHZvaWQgbWFrZVRvcCgpCi0gICAgewotICAgICAgICBtX3N0
cnVjdHVyZSA9IHRvcFZhbHVlKCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlIHRvcCgpCi0gICAgewotICAgICAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
IHZhbHVlOwotICAgICAgICB2YWx1ZS5tYWtlVG9wKCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBhZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIWNvbnRhaW5zKHN0cnVjdHVyZSkgJiYgIWlzVG9wKCkpOwotICAgICAg
ICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBtYWtlVG9wKCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGFkZEFsbChjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYg
KGlzVG9wKCkgfHwgIW90aGVyLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKG90aGVyLnNpemUoKSA+IDEpIHsKLSAgICAgICAgICAgIG1ha2VUb3AoKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICghbV9zdHJ1Y3R1
cmUpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXJbMF07Ci0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9zdHJ1Y3R1cmUgPT0gb3RoZXJb
MF0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1ha2VUb3AoKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgYWRkQWxsKGNvbnN0IFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQotICAgIHsKLSAgICAgICAgaWYgKCFvdGhlci5tX3N0
cnVjdHVyZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKGlzVG9wKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChvdGhlci5pc1RvcCgpKSB7
Ci0gICAgICAgICAgICBtYWtlVG9wKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmIChtX3N0cnVj
dHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBtYWtlVG9wKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICBtX3N0cnVjdHVyZSA9IG90aGVyLm1fc3RydWN0dXJlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAK
LSAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IHJldHVybiBvdGhlci5jb250YWlucyhtX3N0cnVjdHVyZSk7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgZG9lc05vdENvbnRhaW5BbnlPdGhlclRoYW4oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKGlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
aWYgKCFvdGhlci5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYg
KG90aGVyLnNpemUoKSA+IDEpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBtX3N0cnVjdHVyZSA9PSBvdGhlclswXTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N1
YnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKG90aGVyLmlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgaWYgKGlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlm
IChtX3N0cnVjdHVyZSkgewotICAgICAgICAgICAgaWYgKG90aGVyLm1fc3RydWN0dXJlKQotICAg
ICAgICAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIuaXNTdWJz
ZXRPZigqdGhpcyk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpCi0gICAgewotICAgICAgICBpZiAoIW1fc3RydWN0dXJlKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzVG9wKCkpIHsKLSAgICAgICAgICAg
IHN3aXRjaCAob3RoZXIuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUgPSAwOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgICAgICBtX3N0cnVjdHVy
ZSA9IG90aGVyWzBdOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAob3RoZXIuY29udGFpbnMobV9z
dHJ1Y3R1cmUpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgbV9zdHJ1
Y3R1cmUgPSAwOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKSB7Ci0gICAg
ICAgICAgICBtX3N0cnVjdHVyZSA9IG90aGVyLm1fc3RydWN0dXJlOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVj
dHVyZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKG90aGVyLmlzVG9wKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fc3RydWN0dXJlID0gMDsKLSAgICB9Ci0gICAg
Ci0gICAgdm9pZCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgb3RoZXIpCi0gICAgewotICAgICAgICBp
ZiAoIShvdGhlciAmIFNwZWNDZWxsKSkgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGlzQ2xlYXJPclRv
cCgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghKHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShtX3N0cnVjdHVyZSkgJiBvdGhlcikpCi0gICAgICAgICAgICBtX3N0cnVjdHVy
ZSA9IDA7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNDbGVhcigpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gIW1fc3RydWN0dXJlOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzVG9wKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gdG9wVmFsdWUoKTsgfQotICAgIAotICAgIGJv
b2wgaXNDbGVhck9yVG9wKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmUgPD0gdG9wVmFsdWUo
KTsgfQotICAgIGJvb2wgaXNOZWl0aGVyQ2xlYXJOb3JUb3AoKSBjb25zdCB7IHJldHVybiAhaXND
bGVhck9yVG9wKCk7IH0KLSAgICAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBBU1NFUlQoIWlzVG9wKCkpOwotICAgICAgICByZXR1cm4gISFtX3N0cnVjdHVyZTsKLSAg
ICB9Ci0gICAgCi0gICAgU3RydWN0dXJlKiBhdChzaXplX3QgaSkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVCghaXNUb3AoKSk7Ci0gICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoaSwgIWkpOwotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmU7Ci0g
ICAgfQotICAgIAotICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhdChpKTsKLSAgICB9Ci0gICAgCi0gICAgU3RydWN0dXJlKiBs
YXN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdCgwKTsKLSAgICB9Ci0gICAgCi0g
ICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjQ2VsbDsKLSAg
ICAgICAgaWYgKGlzQ2xlYXIoKSkKLSAgICAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKLSAgICAg
ICAgcmV0dXJuIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShtX3N0cnVjdHVyZSk7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaGFzU2luZ2xldG9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBpc05laXRoZXJDbGVhck5vclRvcCgpOwotICAgIH0KLSAgICAKLSAgICBTdHJ1Y3R1cmUqIHNp
bmdsZXRvbigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNOZWl0aGVyQ2xlYXJOb3JU
b3AoKSk7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlOwot
ICAgIH0KLSAgICAKLSAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKGlzVG9wKCkpIHsKLSAgICAgICAgICAgIGZwcmludGYob3V0LCAiVE9QIik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZwcmludGYob3V0
LCAiWyIpOwotICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICBmcHJpbnRmKG91
dCwgIiVwIiwgbV9zdHJ1Y3R1cmUpOwotICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFN0cnVjdHVyZSogdG9wVmFsdWUoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PFN0cnVjdHVyZSo+KDEpOyB9Ci0gICAgCi0gICAgLy8gVGhpcyBjYW4g
b25seSByZW1lbWJlciBvbmUgc3RydWN0dXJlIGF0IGEgdGltZS4KLSAgICBTdHJ1Y3R1cmUqIG1f
c3RydWN0dXJlOwotfTsKLQogc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIEFic3RyYWN0VmFs
dWUoKQogICAgICAgICA6IG1fdHlwZShTcGVjTm9uZSkKQEAgLTMyNywxNSArNDYsMTUgQEAgc3Ry
dWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgbV90
eXBlID0gU3BlY05vbmU7Ci0gICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIG1f
dW5jbG9iYmVyZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5jbGVhcigp
OwogICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDbGVhcigpIGNvbnN0CiAgICAgewotICAgICAg
ICBib29sIHJlc3VsdCA9IG1fdHlwZSA9PSBTcGVjTm9uZSAmJiBtX3N0cnVjdHVyZS5pc0NsZWFy
KCkgJiYgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5pc0NsZWFyKCk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gbV90eXBlID09IFNwZWNOb25lICYmIG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzQ2xl
YXIoKSAmJiBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmlzQ2xlYXIoKTsKICAgICAgICAgaWYg
KHJlc3VsdCkKICAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZSk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0zNDQsOCArNjMsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgdm9p
ZCBtYWtlVG9wKCkKICAgICB7CiAgICAgICAgIG1fdHlwZSA9IFNwZWNUb3A7Ci0gICAgICAgIG1f
c3RydWN0dXJlLm1ha2VUb3AoKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5tYWtl
VG9wKCk7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAg
ICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIG1fdmFsdWUg
PSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC0zNTMs
OSArNzIsOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgdm9pZCBjbG9iYmVyU3RydWN0
dXJlcygpCiAgICAgewogICAgICAgICBpZiAobV90eXBlICYgU3BlY0NlbGwpCi0gICAgICAgICAg
ICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVj
dHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cnVj
dHVyZS5pc0NsZWFyKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudEtub3duU3RydWN0
dXJlLmlzQ2xlYXIoKSk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAg
CkBAIC0zNjYsNyArODUsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9v
bCBpc1RvcCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IFNwZWNUb3Ag
JiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKSAmJiBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmlzVG9wKCk7
CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gU3BlY1RvcCAmJiBtX2N1cnJlbnRLbm93blN0cnVj
dHVyZS5pc1RvcCgpICYmIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNUb3AoKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCB2YWx1ZUlzVG9wKCkgY29uc3QKQEAgLTM4NiwyMCArMTA1LDIyIEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCisgICAgdm9pZCBzZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50
U2V0SXNTdGlsbFZhbGlkKCkpCisgICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJl
ID0gc3RydWN0dXJlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxl
U3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzZXQoSlNWYWx1ZSB2
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7Ci0g
ICAgICAgICAgICAvLyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSEgSXQncyB0ZW1wdGluZyB0byBz
ZXQgdGhlIHN0cnVjdHVyZSB0byB0aGUKLSAgICAgICAgICAgIC8vIHZhbHVlJ3Mgc3RydWN0dXJl
LCBidXQgdGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2UgdGhhdCB3b3VsZAotICAgICAgICAgICAg
Ly8gY29uc3RpdHV0ZSBhIHByb29mIHRoYXQgdGhpcyB2YWx1ZSB3aWxsIGFsd2F5cyBoYXZlIHRo
ZSBzYW1lCi0gICAgICAgICAgICAvLyBzdHJ1Y3R1cmUuIFRoZSB3aG9sZSBwb2ludCBvZiBhIHZh
bHVlIGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0aGF0Ci0gICAgICAgICAgICAvLyBpdCBtYXkgY2hh
bmdlIGluIHRoZSBmdXR1cmUgLSBmb3IgZXhhbXBsZSBiZXR3ZWVuIHdoZW4gd2UgY29tcGlsZQot
ICAgICAgICAgICAgLy8gdGhlIGNvZGUgYW5kIHdoZW4gd2UgcnVuIGl0LgotICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUubWFrZVRvcCgpOwotICAgICAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVy
ZS5tYWtlVG9wKCk7IC8vIEZJWE1FOiBDb25zaWRlciBub3QgY2xvYmJlcmluZyB0aGlzLgorICAg
ICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICAgICAg
c2V0RnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7Ci0gICAg
ICAgICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBtX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJs
ZVN0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX3R5cGUg
PSBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7CkBAIC00MTAsMTIgKzEzMSw4IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lkIHNldChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICB7Ci0gICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIG1fc3RydWN0
dXJlLmFkZChzdHJ1Y3R1cmUpOwotICAgICAgICAKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVj
dHVyZS5jbGVhcigpOwotICAgICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmFkZChzdHJ1Y3R1
cmUpOwotICAgICAgICAKKyAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmU7CisgICAgICAgIHNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKHN0cnVjdHVyZSk7CiAgICAg
ICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAg
ICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICAKQEAgLTQyNSwxMSArMTQyLDExIEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIHNldChTcGVjdWxhdGVkVHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKHR5cGUgJiBTcGVjQ2VsbCkgewotICAgICAgICAgICAgbV9zdHJ1
Y3R1cmUubWFrZVRvcCgpOwotICAgICAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5tYWtl
VG9wKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5tYWtlVG9wKCk7Cisg
ICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgICAgICBt
X3VuY2xvYmJlcmVkU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRLbm93
blN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVy
ZS5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CkBAIC00MzksOCArMTU2LDggQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCi0gICAgICAg
ICAgICAmJiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZQotICAgICAgICAgICAgJiYg
bV91bmNsb2JiZXJlZFN0cnVjdHVyZSA9PSBvdGhlci5tX3VuY2xvYmJlcmVkU3RydWN0dXJlCisg
ICAgICAgICAgICAmJiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSA9PSBvdGhlci5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZQorICAgICAgICAgICAgJiYgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSA9
PSBvdGhlci5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlCiAgICAgICAgICAgICAmJiBtX3ZhbHVl
ID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBYnN0
cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKQEAgLTQ1OSw4ICsxNzYsOCBAQCBzdHJ1Y3QgQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgICAgICAgICByZXN1bHQgPSAhb3RoZXIuaXNDbGVhcigpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0IHw9IG1lcmdlU3BlY3VsYXRpb24obV90eXBl
LCBvdGhlci5tX3R5cGUpOwotICAgICAgICAgICAgcmVzdWx0IHw9IG1fc3RydWN0dXJlLmFkZEFs
bChvdGhlci5tX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICByZXN1bHQgfD0gbV91bmNsb2JiZXJl
ZFN0cnVjdHVyZS5hZGRBbGwob3RoZXIubV91bmNsb2JiZXJlZFN0cnVjdHVyZSk7CisgICAgICAg
ICAgICByZXN1bHQgfD0gbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fY3Vy
cmVudEtub3duU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBtX2Z1dHVyZVBvc3Np
YmxlU3RydWN0dXJlLmFkZEFsbChvdGhlci5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlKTsKICAg
ICAgICAgICAgIGlmIChtX3ZhbHVlICE9IG90aGVyLm1fdmFsdWUpIHsKICAgICAgICAgICAgICAg
ICByZXN1bHQgfD0gISFtX3ZhbHVlOwogICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVl
KCk7CkBAIC00NzYsOCArMTkzLDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBt
ZXJnZVNwZWN1bGF0aW9uKG1fdHlwZSwgdHlwZSk7CiAgICAgICAgIAogICAgICAgICBpZiAodHlw
ZSAmIFNwZWNDZWxsKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAg
ICAgICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1f
Y3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fZnV0dXJlUG9z
c2libGVTdHJ1Y3R1cmUubWFrZVRvcCgpOwogICAgICAgICB9CiAgICAgICAgIG1fdmFsdWUgPSBK
U1ZhbHVlKCk7CiAKQEAgLTQ4NywxNiArMjA0LDIxIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAgIHsKICAgICAg
ICAgbV90eXBlICY9IG90aGVyLnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKTsKLSAgICAgICAg
bV9zdHJ1Y3R1cmUuZmlsdGVyKG90aGVyKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVy
ZS5maWx0ZXIob3RoZXIpOworICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5maWx0ZXIo
b3RoZXIpOworICAgICAgICBpZiAobV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpKQor
ICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBl
bHNlIGlmIChtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKSkKKyAgICAgICAg
ICAgIHNldEZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlKG1fY3VycmVudEtub3duU3RydWN0dXJlLnNp
bmdsZXRvbigpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIAogICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRo
YXQgcHJpb3IgdG8gdGhlIGFib3ZlIHR3byBzdGF0ZW1lbnRzIHdlIGhhZCAoRm9vLCBUT1ApLCB3
aGVyZQogICAgICAgICAvLyBGb28gaXMgYSBTcGVjdWxhdGVkVHlwZSB0aGF0IGlzIGRpc2pvaW50
IHdpdGggdGhlIHBhc3NlZCBTdHJ1Y3R1cmVTZXQuIEluIHRoYXQKICAgICAgICAgLy8gY2FzZSwg
d2Ugd2lsbCBub3cgaGF2ZSAoTm9uZSwgW3NvbWVTdHJ1Y3R1cmVdKS4gSW4gZ2VuZXJhbCwgd2Ug
bmVlZCB0byBtYWtlCiAgICAgICAgIC8vIHN1cmUgdGhhdCBuZXcgaW5mb3JtYXRpb24gZ2xlYW5l
ZCBmcm9tIHRoZSBTcGVjdWxhdGVkVHlwZSBuZWVkcyB0byBiZSBmZWQgYmFjawogICAgICAgICAv
LyBpbnRvIHRoZSBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFN0cnVjdHVyZVNldC4KLSAg
ICAgICAgbV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7Ci0gICAgICAgIG1fdW5jbG9iYmVyZWRT
dHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJl
LmZpbHRlcihtX3R5cGUpOworICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmZpbHRl
cihtX3R5cGUpOwogICAgICAgICAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiAhdmFsaWRhdGVJ
Z25vcmluZ1ZhbHVlKG1fdmFsdWUpKQogICAgICAgICAgICAgY2xlYXIoKTsKQEAgLTUxNCw4ICsy
MzYsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIC8vIHRoZSBwYXNzZWQgdHlw
ZSBpcyBBcnJheS4gQXQgdGhpcyBwb2ludCB3ZSdsbCBoYXZlIChOb25lLCBUT1ApLiBUaGUgYmVz
dCB3YXkKICAgICAgICAgLy8gdG8gZW5zdXJlIHRoYXQgdGhlIHN0cnVjdHVyZSBmaWx0ZXJpbmcg
ZG9lcyB0aGUgcmlnaHQgdGhpbmcgaXMgdG8gZmlsdGVyIG9uCiAgICAgICAgIC8vIHRoZSBuZXcg
dHlwZSAoTm9uZSkgcmF0aGVyIHRoYW4gdGhlIG9uZSBwYXNzZWQgKEFycmF5KS4KLSAgICAgICAg
bV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7Ci0gICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1
cmUuZmlsdGVyKG1fdHlwZSk7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmZpbHRl
cihtX3R5cGUpOworICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmZpbHRlcihtX3R5
cGUpOwogCiAgICAgICAgIGlmICghIW1fdmFsdWUgJiYgIXZhbGlkYXRlSWdub3JpbmdWYWx1ZSht
X3ZhbHVlKSkKICAgICAgICAgICAgIGNsZWFyKCk7CkBAIC01MzYsMTIgKzI1OCwxMSBAQCBzdHJ1
Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKG1fc3RydWN0dXJlLmlzVG9wKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgCiAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2Vs
bCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0NlbGwpOwotICAgICAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5j
b250YWlucyhzdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgJiYgbV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZS5jb250YWlucyhzdHJ1Y3R1cmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTU2MywzOSArMjg0LDExIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9zdHJ1Y3R1cmUuaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAKICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmUuY29udGFpbnModmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgdmFs
aWRhdGVGb3JFbnRyeShKU1ZhbHVlIHZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlz
VG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgCi0gICAgICAgIGlmICgh
IW1fdmFsdWUgJiYgbV92YWx1ZSAhPSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0
aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gbV90eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
QVNTRVJUKG1fdHlwZSAmIFNwZWNFbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuaXNU
b3AoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICAgICAgaWYgKCEh
dmFsdWUgJiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBT
cGVjQ2VsbCk7Ci0gICAgICAgICAgICByZXR1cm4gbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5jb250
YWlucyh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBy
ZXR1cm4gbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJlKQorICAgICAg
ICAgICAgICAgICYmIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJl
KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MDQsOCAr
Mjk3LDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS5pc0NsZWFyKCkpOwotICAgICAgICAgICAgQVNT
RVJUKG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuaXNDbGVhcigpKTsKKyAgICAgICAgICAgIEFTU0VS
VChtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc0NsZWFyKCkpOworICAgICAgICAgICAgQVNTRVJU
KG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgaWYgKGlzQ2xlYXIoKSkKQEAgLTYyMywxNyArMzE2LDY3IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAg
ICAgICAgZnByaW50ZihvdXQsICIoJXMsICIsIHNwZWN1bGF0aW9uVG9TdHJpbmcobV90eXBlKSk7
Ci0gICAgICAgIG1fc3RydWN0dXJlLmR1bXAob3V0KTsKKyAgICAgICAgbV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBkYXRhTG9nKCIsICIpOwotICAgICAgICBtX3Vu
Y2xvYmJlcmVkU3RydWN0dXJlLmR1bXAob3V0KTsKKyAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZS5kdW1wKG91dCk7CiAgICAgICAgIGlmICghIW1fdmFsdWUpCiAgICAgICAgICAgICBm
cHJpbnRmKG91dCwgIiwgJXMiLCBtX3ZhbHVlLmRlc2NyaXB0aW9uKCkpOwogICAgICAgICBmcHJp
bnRmKG91dCwgIikiKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1fc3Ry
dWN0dXJlOwotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbV91bmNsb2JiZXJlZFN0cnVjdHVy
ZTsKKyAgICAvLyBUaGlzIGlzIGEgcHJvdmVuIGNvbnN0cmFpbnQgb24gdGhlIHN0cnVjdHVyZXMg
dGhhdCB0aGlzIHZhbHVlIGNhbiBoYXZlIHJpZ2h0CisgICAgLy8gbm93LiBUaGUgc3RydWN0dXJl
IG9mIHRoZSBjdXJyZW50IHZhbHVlIG11c3QgYmVsb25nIHRvIHRoaXMgc2V0LiBUaGUgc2V0IG1h
eQorICAgIC8vIGJlIFRPUCwgaW5kaWNhdGluZyB0aGF0IGl0IGlzIHRoZSBzZXQgb2YgYWxsIHBv
c3NpYmxlIHN0cnVjdHVyZXMsIGluIHdoaWNoCisgICAgLy8gY2FzZSB0aGUgY3VycmVudCB2YWx1
ZSBjYW4gaGF2ZSBhbnkgc3RydWN0dXJlLiBUaGUgc2V0IG1heSBiZSBCT1RUT00gKGVtcHR5KQor
ICAgIC8vIGluIHdoaWNoIGNhc2UgdGhpcyB2YWx1ZSBjYW5ub3QgYmUgYSBjZWxsLiBUaGlzIGlz
IGFsbCBzdWJqZWN0IHRvIGNoYW5nZQorICAgIC8vIGFueXRpbWUgYSBuZXcgdmFsdWUgaXMgYXNz
aWduZWQgdG8gdGhpcyBvbmUsIGFueXRpbWUgdGhlcmUgaXMgYSBjb250cm9sIGZsb3cKKyAgICAv
LyBtZXJnZSwgb3IgbW9zdCBjcnVjaWFsbHksIGFueXRpbWUgYSBzaWRlLWVmZmVjdCBvciBzdHJ1
Y3R1cmUgY2hlY2sgaGFwcGVucy4KKyAgICAvLyBJbiBjYXNlIG9mIGEgc2lkZS1lZmZlY3QsIHdl
IHR5cGljYWxseSBtdXN0IGFzc3VtZSB0aGF0IGFueSB2YWx1ZSBtYXkgaGF2ZQorICAgIC8vIGhh
ZCBpdHMgc3RydWN0dXJlIGNoYW5nZWQsIGhlbmNlIGNvbnRyYXZlbmluZyBvdXIgcHJvb2YuIFdl
IG1ha2UgdGhlIHByb29mCisgICAgLy8gdmFsaWQgYWdhaW4gYnkgc3dpdGNoaW5nIHRoaXMgdG8g
VE9QIChpLmUuIGNsYWltaW5nIHRoYXQgd2UgaGF2ZSBwcm92ZWQgdGhhdAorICAgIC8vIHRoaXMg
dmFsdWUgbWF5IGhhdmUgYW55IHN0cnVjdHVyZSkuIE9mIG5vdGUgaXMgdGhhdCB0aGUgcHJvb2Yg
cmVwcmVzZW50ZWQgYnkKKyAgICAvLyB0aGlzIGZpZWxkIGlzIG5vdCBzdWJqZWN0IHRvIHN0cnVj
dHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnRzIC0gZXZlbiBpZiBvbmUKKyAgICAvLyBmaXJlcywg
d2UgY2FuIGJlIHN1cmUgdGhhdCB0aGlzIHByb29mIGlzIHN0aWxsIHZhbGlkLgorICAgIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmU7CisgICAgCisgICAgLy8g
VGhpcyBpcyBhIHByb3ZlbiBjb25zdHJhaW50IG9uIHRoZSBzdHJ1Y3R1cmVzIHRoYXQgdGhpcyB2
YWx1ZSBjYW4gaGF2ZSBub3cKKyAgICAvLyBvciBhbnkgdGltZSBpbiB0aGUgZnV0dXJlIHN1Ympl
Y3QgdG8gdGhlIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnRzIG9mCisgICAgLy8gYWxs
IG1lbWJlcnMgb2YgdGhpcyBzZXQgbm90IGhhdmluZyBmaXJlZC4gVGhpcyBzZXQgaXMgaW1wZXJ2
aW91cyB0byBzaWRlLQorICAgIC8vIGVmZmVjdHM7IGV2ZW4gaWYgb25lIGhhcHBlbnMgdGhlIHNp
ZGUtZWZmZWN0IGNhbiBvbmx5IGNhdXNlIHRoZSB2YWx1ZSB0bworICAgIC8vIGNoYW5nZSB0byBh
dCB3b3JzdCBhbm90aGVyIHN0cnVjdHVyZSB0aGF0IGlzIGFsc28gYSBtZW1iZXIgb2YgdGhpcyBz
ZXQuIEJ1dCwKKyAgICAvLyB0aGUgdGhlb3JlbSBiZWluZyBwcm92ZWQgYnkgdGhpcyBmaWVsZCBp
cyBwcmVkaWNhdGVkIHVwb24gdGhlcmUgbm90IGJlaW5nCisgICAgLy8gYW55IG5ldyBzdHJ1Y3R1
cmUgdHJhbnNpdGlvbnMgaW50cm9kdWNlZCBpbnRvIGFueSBtZW1iZXJzIG9mIHRoaXMgc2V0LiBJ
bgorICAgIC8vIGNhc2VzIHdoZXJlIHRoZXJlIGlzIG5vIHdheSBmb3IgdXMgdG8gZ3VhcmQgdGhp
cyBoYXBwZW5pbmcsIHRoZSBzZXQgbXVzdCBiZQorICAgIC8vIFRPUC4gQnV0IGluIGNhc2VzIHdo
ZXJlIHdlIGNhbiBndWFyZCBuZXcgc3RydWN0dXJlIHRyYW5zaXRpb25zIChhbGwgbWVtYmVycwor
ICAgIC8vIG9mIHRoZSBzZXQgaGF2ZSBzdGlsbC12YWxpZCBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3
YXRjaHBvaW50cykgdGhlbiB0aGlzIHNldAorICAgIC8vIHdpbGwgYmUgZmluaXRlLiBBbnl0aW1l
IHRoYXQgd2UgbWFrZSB1c2Ugb2YgdGhlIGZpbml0ZSBuYXR1cmUgb2YgdGhpcyBzZXQsCisgICAg
Ly8gd2UgbXVzdCBmaXJzdCBpc3N1ZSBhIHN0cnVjdHVyZSB0cmFuc2l0aW9uIHdhdGNocG9pbnQs
IHdoaWNoIHdpbGwgZWZmZWN0aXZlbHkKKyAgICAvLyByZXN1bHQgaW4gbV9jdXJyZW50S25vd25T
dHJ1Y3R1cmUgYmVpbmcgZmlsdGVyZWQgYWNjb3JkaW5nIHRvCisgICAgLy8gbV9mdXR1cmVQb3Nz
aWJsZVN0cnVjdHVyZS4KKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1fZnV0dXJlUG9zc2li
bGVTdHJ1Y3R1cmU7CisgICAgCisgICAgLy8gVGhpcyBpcyBhIHByb3ZlbiBjb25zdHJhaW50IG9u
IHRoZSBwb3NzaWJsZSB0eXBlcyB0aGF0IHRoaXMgdmFsdWUgY2FuIGhhdmUKKyAgICAvLyBub3cg
b3IgYW55IHRpbWUgaW4gdGhlIGZ1dHVyZSwgdW5sZXNzIGl0IGlzIHJlYXNzaWduZWQuIFRoaXMg
ZmllbGQgaXMKKyAgICAvLyBpbXBlcnZpb3VzIHRvIHNpZGUtZWZmZWN0cyB1bmxlc3MgdGhlIHNp
ZGUtZWZmZWN0IGNhbiByZWFzc2lnbiB0aGUgdmFsdWUKKyAgICAvLyAoZm9yIGV4YW1wbGUgaWYg
d2UncmUgdGFsa2luZyBhYm91dCBhIGNhcHR1cmVkIHZhcmlhYmxlKS4gVGhlIHJlbGF0aW9uc2hp
cAorICAgIC8vIGJldHdlZW4gdGhpcyBmaWVsZCwgYW5kIHRoZSBzdHJ1Y3R1cmUgZmllbGRzIGFi
b3ZlLCBpcyBhcyBmb2xsb3dzLiBUaGUKKyAgICAvLyBmaWVsZHMgYWJvdmUgY29uc3RyYWludCB0
aGUgc3RydWN0dXJlcyB0aGF0IGEgY2VsbCBtYXkgaGF2ZSwgYnV0IHRoZXkgc2F5CisgICAgLy8g
bm90aGluZyBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGUgdmFsdWUgaXMga25vd24gdG8gYmUgYSBj
ZWxsLiBNb3JlIGZvcm1hbGx5LAorICAgIC8vIHRoZSBtX2N1cnJlbnRLbm93blN0cnVjdHVyZSBp
cyBpdHNlbGYgYW4gYWJzdHJhY3QgdmFsdWUgdGhhdCBjb25zaXN0cyBvZiB0aGUKKyAgICAvLyB1
bmlvbiBvZiB0aGUgc2V0IG9mIGFsbCBub24tY2VsbCB2YWx1ZXMgYW5kIHRoZSBzZXQgb2YgY2Vs
bCB2YWx1ZXMgdGhhdCBoYXZlCisgICAgLy8gdGhlIGdpdmVuIHN0cnVjdHVyZS4gVGhpcyBhYnN0
cmFjdCB2YWx1ZSBpcyB0aGVuIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlCisgICAgLy8gbV9jdXJy
ZW50S25vd25TdHJ1Y3R1cmUgYW5kIHRoZSBzZXQgb2YgdmFsdWVzIHdob3NlIHR5cGUgaXMgbV90
eXBlLiBTbywgZm9yCisgICAgLy8gZXhhbXBsZSBpZiBtX3R5cGUgaXMgU3BlY0ZpbmFsfFNwZWNJ
bnQzMiBhbmQgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUgaXMKKyAgICAvLyBbMHgxMjM0NV0gdGhl
biB0aGlzIGFic3RyYWN0IHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZSBzZXQgb2YgYWxsIGludGVn
ZXJzCisgICAgLy8gdW5pZmllZCB3aXRoIHRoZSBzZXQgb2YgYWxsIG9iamVjdHMgd2l0aCBzdHJ1
Y3R1cmUgMHgxMjM0NS4KICAgICBTcGVjdWxhdGVkVHlwZSBtX3R5cGU7CisgICAgCisgICAgLy8g
VGhpcyBpcyBhIHByb3ZlbiBjb25zdHJhaW50IG9uIHRoZSBwb3NzaWJsZSB2YWx1ZXMgdGhhdCB0
aGlzIHZhbHVlIGNhbgorICAgIC8vIGhhdmUgbm93IG9yIGFueSB0aW1lIGluIHRoZSBmdXR1cmUs
IHVubGVzcyBpdCBpcyByZWFzc2lnbmVkLiBOb3RlIHRoYXQgdGhpcworICAgIC8vIGltcGxpZXMg
bm90aGluZyBhYm91dCB0aGUgc3RydWN0dXJlLiBPZGRseSwgSlNWYWx1ZSgpIChpLmUuIHRoZSBl
bXB0eSB2YWx1ZSkKKyAgICAvLyBtZWFucyBlaXRoZXIgQk9UVE9NIG9yIFRPUCBkZXBlbmRpbmcg
b24gdGhlIHN0YXRlIG9mIG1fdHlwZTogaWYgbV90eXBlIGlzCisgICAgLy8gQk9UVE9NIHRoZW4g
SlNWYWx1ZSgpIG1lYW5zIEJPVFRPTTsgaWYgbV90eXBlIGlzIG5vdCBCT1RUT00gdGhlbiBKU1Zh
bHVlKCkKKyAgICAvLyBtZWFucyBUT1AuCiAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjU4MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjAsNiArMzIwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tT
dHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludDoKKyAgICAgICAgICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0
Y2hwb2ludDoKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVz
ZSBiZWNhdXNlIGlmIHdlIGdldCB1c2VzIG9mIHRoZSByZWxldmFudAogICAgICAgICAgICAgICAg
ICAgICAvLyB2YXJpYWJsZSB0aGVuIHdlIGNhbiBzYWZlbHkgZ2V0IHJpZCBvZiB0aGVzZSwgdG9v
LiBUaGlzIG9mIGNvdXJzZQogICAgICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhlcmUg
bm90IGJlaW5nIGFueSBpbmZvcm1hdGlvbiB0cmFuc2ZlcnJlZCBieSB0aGUgQ0ZBCkBAIC00ODMs
NyArNDg0LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNr
U3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQ6IHsKKyAgICAgICAgICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBv
aW50OgorICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50OiB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGdldCByaWQgb2Yg
dGhpcyBub2RlLCBpZiBpdCByZWZlcmVuY2VzIGEgcGhhbnRvbSBhcmd1bWVudC4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpc09LVG9PcHRpbWl6ZShtX2dyYXBoW25vZGUuY2hpbGQxKCldKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDUsNiAr
MzQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAg
ICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEKICAgICAgICAgICAgICAgICAg
ICAgJiYgc3RydWN0dXJlU2V0LmNvbnRhaW5zKG5vZGUuc3RydWN0dXJlKCkpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQxOCw2ICs0MTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAgICAgICAgICBjYXNlIEZv
cndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS5zdHJ1Y3R1cmUoKSA9PSBzdHJ1Y3R1cmUgJiYgbm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTExNyw2ICsxMTE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6Cisg
ICAgICAgIGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50RWxpbWluYXRpb24obm9kZS5z
dHJ1Y3R1cmUoKSwgbm9kZS5jaGlsZDEoKS5pbmRleCgpKSkKICAgICAgICAgICAgICAgICBlbGlt
aW5hdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDEy
NTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSwxNiBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB3b3VsZCBiZSBhIGdyZWF0IHBsYWNlIHRvIHJl
bW92ZSBDaGVja1N0cnVjdHVyZSdzLgorICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToK
KyAgICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOiB7CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgc3RydWN0dXJlVmFsdWUgPQorICAgICAgICAgICAg
ICAgICAgICBtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZTsKKyAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlVmFsdWUuaXNTdWJzZXRPZihu
b2RlLnN0cnVjdHVyZVNldCgpKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlVmFsdWUuaGFzU2luZ2xldG9uKCkpOworICAgICAgICAgICAgICAgICAgICBub2RlLmNvbnZl
cnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZVZhbHVlLnNpbmdsZXRv
bigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAxMjU4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ1LDExICsyNDUsMTkgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICBjaGlsZHJlbi5yZXNldCgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbnZlcnRUb1N0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fb3AgPT0gQ2hlY2tTdHJ1Y3R1cmUgfHwgbV9vcCA9PSBGb3J3YXJkQ2hl
Y2tTdHJ1Y3R1cmUpOworICAgICAgICBtX29wSW5mbyA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHN0cnVjdHVyZSk7CisgICAgICAgIGlmIChtX29wID09IENoZWNrU3RydWN0dXJlKQorICAgICAg
ICAgICAgbV9vcCA9IFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX29wID0gRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
OworICAgIH0KKyAgICAKICAgICB2b2lkIGNvbnZlcnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IENoZWNrU3RydWN0dXJlKTsK
LSAgICAgICAgbV9vcEluZm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmVTZXQo
KS5zaW5nbGV0b25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIG1fb3AgPSBTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludDsKKyAgICAgICAgY29udmVydFRvU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQoc3RydWN0dXJlU2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCkpOwogICAgIH0KICAgICAK
ICAgICBKU0NlbGwqIHdlYWtDb25zdGFudCgpCkBAIC02NzUsNyArNjgzLDEzIEBAIHN0cnVjdCBO
b2RlIHsKICAgICAKICAgICBib29sIGhhc1N0cnVjdHVyZSgpCiAgICAgewotICAgICAgICByZXR1
cm4gb3AoKSA9PSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDsKKyAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6Cisg
ICAgICAgIGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24g
MTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIHRoZSBvYmplY3QncyBzdHJ1Y3R1cmUgZG9lcyBub3QgbmVlZCB0byBiZSBy
ZWNoZWNrZWQgZHVlIHRvIHNpZGUtZWZmZWN0aW5nICovXAogICAgIC8qIChjbG9iYmVyaW5nKSBv
cGVyYXRpb25zLiAqL1wKICAgICBtYWNybyhTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFN0cnVjdHVyZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21QdXRTdHJ1Y3R1cmUsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlRG9lc05vdEV4aXQpIFwKICAgICBtYWNybyhBbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZSwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVEb2VzTm90RXhpdCB8IE5vZGVSZXN1
bHRTdG9yYWdlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmNwcAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KGFyZ3VtZW50IC0gMSk7CiAgICAgICAgIAotICAgICAgICBp
ZiAoIWVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50KS52YWxpZGF0ZUZv
ckVudHJ5KHZhbHVlKSkgeworICAgICAgICBpZiAoIWVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFy
Z3VtZW50KGFyZ3VtZW50KS52YWxpZGF0ZSh2YWx1ZSkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQogICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSBhcmd1
bWVudCAlenUgaXMgJXMsIGV4cGVjdGVkICIsIGFyZ3VtZW50LCB2YWx1ZS5kZXNjcmlwdGlvbigp
KTsKICAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFlbnRyeS0+bV9leHBlY3RlZFZhbHVl
cy5sb2NhbChsb2NhbCkudmFsaWRhdGVGb3JFbnRyeShleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0u
anNWYWx1ZSgpKSkgeworICAgICAgICBpZiAoIWVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmxvY2Fs
KGxvY2FsKS52YWxpZGF0ZShleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1ZSgpKSkgewog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCiAgICAgICAgICAgICBkYXRhTG9nKCIgICAgT1NS
IGZhaWxlZCBiZWNhdXNlIHZhcmlhYmxlICV6dSBpcyAlcywgZXhwZWN0ZWQgIiwgbG9jYWwsIGV4
ZWMtPnJlZ2lzdGVycygpW2xvY2FsXS5qc1ZhbHVlKCkuZGVzY3JpcHRpb24oKSk7CiAgICAgICAg
ICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkuZHVtcChXVEY6OmRhdGFG
aWxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyNTgyMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzUsNiArNjc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6
CiAgICAgICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAgICAgIGNh
c2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICBjYXNlIENo
ZWNrRnVuY3Rpb246CiAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICBjYXNlIFRl
YXJPZmZBY3RpdmF0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjU4MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDcwLDcgKzM0NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIEZvcndhcmRDaGVja1N0cnVj
dHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yo
bm9kZS5zdHJ1Y3R1cmVTZXQoKSkKKyAgICAgICAgaWYgKHZhbHVlLm1fY3VycmVudEtub3duU3Ry
dWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKICAgICAgICAgICAgICYmIGlz
Q2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKICAgICAgICAgICAgIG5vUmVzdWx0KG1f
Y29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzUxMSw5ICszNTExLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
OiB7CisgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIEZv
cndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogewogICAgICAgICBtX2ppdC5hZGRX
ZWFrUmVmZXJlbmNlKG5vZGUuc3RydWN0dXJlKCkpOwotICAgICAgICBub2RlLnN0cnVjdHVyZSgp
LT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzcGVjdWxhdGlvbldhdGNocG9pbnQoQmFkQ2FjaGUp
KTsKKyAgICAgICAgbm9kZS5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoCisg
ICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRXaXRoQ29uZGl0aW9uYWxEaXJlY3Rpb24o
CisgICAgICAgICAgICAgICAgQmFkQ2FjaGUsIG5vZGUub3AoKSA9PSBGb3J3YXJkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnQpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw4IEBAIEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSkkKICAgICByZXR1cm4gc3BlY3VsYXRpb25XYXRjaHBv
aW50KGtpbmQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJj
ZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1ZVJlY292ZXJ5KQordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29udmVydExhc3RPU1JFeGl0VG9Gb3J3YXJkKGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7Ci0gICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5j
YW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7Ci0gICAgc3BlY3VsYXRpb25D
aGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5kZXgsIGp1bXBUb0ZhaWwpOwotICAgIAog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBpZiAoIXZhbHVlUmVjb3ZlcnkpIHsKICAgICAgICAg
Ly8gQ2hlY2sgdGhhdCB0aGUgcHJlY2VkaW5nIG5vZGUgd2FzIGEgU2V0TG9jYWwgd2l0aCB0aGUg
c2FtZSBjb2RlIG9yaWdpbi4KQEAgLTE3MSw2ICsxNjgsMjggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Zm9yd2FyZFNwZWN1bGF0aW9uQwogICAgICAgICBuZXcgVmFsdWVSZWNvdmVyeU92ZXJyaWRl
KHNldExvY2FsLT5sb2NhbCgpLCB2YWx1ZVJlY292ZXJ5KSk7CiB9CiAKK0p1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25XYXRjaHBvaW50
KEV4aXRLaW5kIGtpbmQpCit7CisgICAgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCogcmVzdWx0
ID0gc3BlY3VsYXRpb25XYXRjaHBvaW50KGtpbmQpOworICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRv
Rm9yd2FyZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0p1bXBSZXBsYWNlbWVudFdhdGNo
cG9pbnQqIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnRXaXRoQ29uZGl0aW9u
YWxEaXJlY3Rpb24oRXhpdEtpbmQga2luZCwgYm9vbCBpc0ZvcndhcmQpCit7CisgICAgSnVtcFJl
cGxhY2VtZW50V2F0Y2hwb2ludCogcmVzdWx0ID0gc3BlY3VsYXRpb25XYXRjaHBvaW50KGtpbmQp
OworICAgIGlmIChpc0ZvcndhcmQpCisgICAgICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2Fy
ZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndh
cmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNv
dXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvRmFp
bCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKK3sKKyAgICBBU1NFUlQoYXQo
bV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsK
KyAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVJbmRleCwganVt
cFRvRmFpbCk7CisgICAgY29udmVydExhc3RPU1JFeGl0VG9Gb3J3YXJkKHZhbHVlUmVjb3Zlcnkp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25DaGVjayhFeGl0
S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0ZhaWwsIGNvbnN0IFZhbHVlUmVj
b3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7CiAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5j
YW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CkBAIC0yNTMsOCArMjcyLDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2xlYXJHZW5lcmF0aW9uSW5mbwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlQXJyYXkoRWRnZSBlZGdlLCBHUFJSZWcgYmFzZVJlZykKIHsKICAg
ICBBYnN0cmFjdFZhbHVlJiBhcnJheVZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpOwotICAg
IGlmIChhcnJheVZhbHVlLm1fc3RydWN0dXJlLmhhc1NpbmdsZXRvbigpCi0gICAgICAgICYmIGFy
cmF5VmFsdWUubV9zdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmNsYXNzSW5mbygpID09ICZKU0FycmF5
OjpzX2luZm8pCisgICAgaWYgKGFycmF5VmFsdWUubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaGFz
U2luZ2xldG9uKCkKKyAgICAgICAgJiYgYXJyYXlWYWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVy
ZS5zaW5nbGV0b24oKS0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbykKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTI1
ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTgxLDYgKzIxODEsMTAgQEAgcHVibGljOgogICAgIC8vIGFjdCBv
ZiBmaXJpbmcgYSB3YXRjaHBvaW50IGludmFsaWRhdGVzIGl0LiBTbywgZnV0dXJlIHJlY29tcGls
YXRpb25zIHdpbGwgbm90CiAgICAgLy8gYXR0ZW1wdCB0byBzZXQgdGhpcyB3YXRjaHBvaW50IGFn
YWluLgogICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2lu
dChFeGl0S2luZCA9IFVuY291bnRhYmxlV2F0Y2hwb2ludCk7CisgICAgCisgICAgLy8gSXQgaXMg
Z2VuZXJhbGx5IGEgZ29vZCBpZGVhIHRvIG5vdCB1c2UgdGhpcyBkaXJlY3RseS4KKyAgICB2b2lk
IGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2FyZChjb25zdCBWYWx1ZVJlY292ZXJ5JiA9IFZhbHVl
UmVjb3ZlcnkoKSk7CisgICAgCiAgICAgLy8gTm90ZTogbm90IHNwZWNpZnlpbmcgdGhlIHZhbHVl
UmVjb3ZlcnkgYXJndW1lbnQgKGxlYXZpbmcgaXQgYXMgVmFsdWVSZWNvdmVyeSgpKSBpbXBsaWVz
CiAgICAgLy8gdGhhdCB5b3UndmUgZW5zdXJlZCB0aGF0IHRoZXJlIGV4aXN0cyBhIE1vdkhpbnQg
cHJpb3IgdG8geW91ciB1c2Ugb2YgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soKS4KICAgICB2b2lk
IGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1ZhbHVlU291cmNlLCBOb2RlSW5k
ZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNvbnN0IFZhbHVlUmVjb3Zlcnkm
ID0gVmFsdWVSZWNvdmVyeSgpKTsKQEAgLTIxOTAsNiArMjE5NCwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihFeGl0S2luZCwgSlNWYWx1ZVJlZ3Ms
IE5vZGVJbmRleCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihFeGl0
S2luZCwgSlNWYWx1ZVJlZ3MsIEVkZ2UpOwogICAgIHZvaWQgdGVybWluYXRlU3BlY3VsYXRpdmVF
eGVjdXRpb25XaXRoQ29uZGl0aW9uYWxEaXJlY3Rpb24oRXhpdEtpbmQsIEpTVmFsdWVSZWdzLCBO
b2RlSW5kZXgsIGJvb2wgaXNGb3J3YXJkKTsKKyAgICAvLyBJc3N1ZSBhIGZvcndhcmQgc3BlY3Vs
YXRpb24gd2F0Y2hwb2ludCwgd2hpY2ggd2lsbCBleGl0IHRvIHRoZSBuZXh0IGluc3RydWN0aW9u
IHJhdGhlcgorICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgb25lLgorICAgIEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQqIGZvcndhcmRTcGVjdWxhdGlvbldhdGNocG9pbnQoRXhpdEtpbmQgPSBVbmNv
dW50YWJsZVdhdGNocG9pbnQpOworICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludFdpdGhDb25kaXRpb25hbERpcmVjdGlvbihFeGl0S2luZCwgYm9vbCBp
c0ZvcndhcmQpOwogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQXJyYXkoRWRnZSBiYXNlRWRnZSwg
R1BSUmVnIGJhc2VSZWcpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
X2gKKyNkZWZpbmUgREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZV9oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlIHsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKCkKKyAgICAg
ICAgOiBtX3N0cnVjdHVyZSgwKQorICAgIHsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShz
dHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
KGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzZXQuc2l6
ZSgpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gMDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgIG1fc3RydWN0dXJlID0gc2V0WzBdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gdG9wVmFsdWUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmUgPSAwOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIG1ha2VUb3AoKQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmUgPSB0b3BWYWx1ZSgp
OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB0b3AoKQor
ICAgIHsKKyAgICAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB2YWx1ZTsKKyAgICAgICAgdmFs
dWUubWFrZVRvcCgpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIAorICAgIHZv
aWQgYWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFjb250
YWlucyhzdHJ1Y3R1cmUpICYmICFpc1RvcCgpKTsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJlKQor
ICAgICAgICAgICAgbWFrZVRvcCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3N0cnVj
dHVyZSA9IHN0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBhZGRBbGwoY29uc3QgU3Ry
dWN0dXJlU2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmIChpc1RvcCgpIHx8ICFvdGhlci5z
aXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChvdGhlci5zaXpl
KCkgPiAxKSB7CisgICAgICAgICAgICBtYWtlVG9wKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fc3RydWN0dXJlKSB7CisgICAgICAgICAgICBt
X3N0cnVjdHVyZSA9IG90aGVyWzBdOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IG90aGVyWzBdKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBtYWtlVG9wKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICAKKyAgICBib29sIGFkZEFsbChjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBv
dGhlcikKKyAgICB7CisgICAgICAgIGlmICghb3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAob3RoZXIuaXNUb3AoKSkgeworICAgICAgICAgICAgbWFrZVRv
cCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1f
c3RydWN0dXJlKSB7CisgICAgICAgICAgICBpZiAobV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1
Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgbWFrZVRv
cCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgbV9zdHJ1
Y3R1cmUgPSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAobV9zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N1YnNldE9m
KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNU
b3AoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3N0cnVjdHVy
ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gb3RoZXIuY29udGFp
bnMobV9zdHJ1Y3R1cmUpOworICAgIH0KKyAgICAKKyAgICBib29sIGRvZXNOb3RDb250YWluQW55
T3RoZXJUaGFuKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KGlzVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghbV9zdHJ1
Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0
dXJlID09IHN0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1N1cGVyc2V0T2YoY29u
c3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RvcCgp
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghb3RoZXIuc2l6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvdGhlci5zaXplKCkgPiAxKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0g
b3RoZXJbMF07CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChvdGhlci5p
c1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChpc1RvcCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9zdHJ1Y3R1cmUpIHsKKyAg
ICAgICAgICAgIGlmIChvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLmlzU3Vic2V0T2YoKnRoaXMpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
CisgICAgICAgIGlmIChpc1RvcCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG90aGVyLnNpemUo
KSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
MDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBvdGhlclswXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJlKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fc3RydWN0dXJlID0gMDsKKyAgICB9Cisg
ICAgCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIp
CisgICAgeworICAgICAgICBpZiAoaXNUb3AoKSkgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUg
PSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAobV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChvdGhlci5pc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBtX3N0cnVjdHVyZSA9IDA7CisgICAgfQorICAgIAorICAgIHZvaWQgZmlsdGVyKFNw
ZWN1bGF0ZWRUeXBlIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCEob3RoZXIgJiBTcGVjQ2Vs
bCkpIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc0NsZWFyT3JUb3AoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAoIShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1
cmUpICYgb3RoZXIpKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSAwOworICAgIH0KKyAgICAK
KyAgICBib29sIGlzQ2xlYXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3N0cnVj
dHVyZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1RvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
dWN0dXJlID09IHRvcFZhbHVlKCk7IH0KKyAgICAKKyAgICBib29sIGlzQ2xlYXJPclRvcCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlIDw9IHRvcFZhbHVlKCk7IH0KKyAgICBib29sIGlzTmVp
dGhlckNsZWFyTm9yVG9wKCkgY29uc3QgeyByZXR1cm4gIWlzQ2xlYXJPclRvcCgpOyB9CisgICAg
CisgICAgc2l6ZV90IHNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpc1RvcCgp
KTsKKyAgICAgICAgcmV0dXJuICEhbV9zdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIFN0cnVj
dHVyZSogYXQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIWlzVG9wKCkp
OworICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGks
ICFpKTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlOworICAgIH0KKyAgICAKKyAgICBTdHJ1
Y3R1cmUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
YXQoaSk7CisgICAgfQorICAgIAorICAgIFN0cnVjdHVyZSogbGFzdCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gYXQoMCk7CisgICAgfQorICAgIAorICAgIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzVG9w
KCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY0NlbGw7CisgICAgICAgIGlmIChpc0NsZWFyKCkp
CisgICAgICAgICAgICByZXR1cm4gU3BlY05vbmU7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpOworICAgIH0KKyAgICAKKyAgICBib29sIGhhc1Np
bmdsZXRvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNOZWl0aGVyQ2xlYXJOb3JU
b3AoKTsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlKiBzaW5nbGV0b24oKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzTmVpdGhlckNsZWFyTm9yVG9wKCkpOworICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBkdW1wKEZJTEUqIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc1RvcCgpKSB7Cisg
ICAgICAgICAgICBmcHJpbnRmKG91dCwgIlRPUCIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBmcHJpbnRmKG91dCwgIlsiKTsKKyAgICAgICAgaWYg
KG1fc3RydWN0dXJlKQorICAgICAgICAgICAgZnByaW50ZihvdXQsICIlcCIsIG1fc3RydWN0dXJl
KTsKKyAgICAgICAgZnByaW50ZihvdXQsICJdIik7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIHRvcFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdHJ1
Y3R1cmUqPigxKTsgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIG9ubHkgcmVtZW1iZXIgb25lIHN0
cnVjdHVyZSBhdCBhIHRpbWUuCisgICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKK307CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisj
ZW5kaWYgLy8gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZV9oCisKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lz
dGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOgorICAg
ICAgICAgICAgICAgIGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50Ogog
ICAgICAgICAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgcmVseSBvbiB0aGUgZmFjdCB0aGF0
IHdlJ3JlIHRoZSBvbmx5IG9uZXMgd2hvIHdvdWxkCiAgICAgICAgICAgICAgICAgICAgIC8vIGlu
c2VydCB0aGlzIG5vZGUuCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
Owo=
</data>
<flag name="commit-queue"
          id="169204"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159026</attachid>
            <date>2012-08-17 00:31:19 -0700</date>
            <delta_ts>2012-08-17 15:22:23 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>rationalizewatch_patch_3.diff</filename>
            <type>text/plain</type>
            <size>61295</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1ODYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMyBA
QAorMjAxMi0wOC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhYnN0cmFjdCB2YWx1ZXMgYW5kIHN0cnVjdHVyZSB0
cmFuc2l0aW9uIHdhdGNocG9pbnRzIHNob3VsZCBiZSByYXRpb25hbGl6ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIGEgbnVt
YmVyIG9mIHRoaW5ncyByZWxhdGVkIHRvIHRoZSBoYW5kbGluZyBvZiB0aGUgYWJzdHJhY3QgdmFs
dWVzCisgICAgICAgIGFycmlzaW5nIGZyb20gdmFsdWVzIHdpdGggc3RydWN0dXJlcyBrbm93biB0
byBiZSB3YXRjaHBvaW50YWJsZToKKyAgICAgICAgCisgICAgICAgIC0gVGhpcyByYXRpb25hbGl6
ZXMgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBzdHJ1Y3R1cmUgdGhhdCB3ZSBrbm93IGFu
IG9iamVjdAorICAgICAgICAgIHRvIGhhdmUgKnJpZ2h0IG5vdyogYmFzZWQgb24gaGF2aW5nIGV4
ZWN1dGVkIGEgY2hlY2sgYWdhaW5zdCB0aGF0IHN0cnVjdHVyZSwgYW5kCisgICAgICAgICAgdGhl
IHN0cnVjdHVyZSB0aGF0IHdlIGtub3cgdGhlIG9iamVjdCBjb3VsZCBoYXZlICppbiB0aGUgZnV0
dXJlKiBiYXNlZCBvbiBhIHR5cGUKKyAgICAgICAgICBjaGVjayBleGVjdXRlZCBpbiB0aGUgcGFz
dCBvdmVyIGEgc3RydWN0dXJlIHRoYXQgd2FzIHdhdGNocG9pbnRhYmxlLgorICAgICAgICAKKyAg
ICAgICAgLSBXZSB1c2UgdGhlIGFib3ZlIHRvIGFzc2VydCB0aGF0IHN0cnVjdHVyZSB0cmFuc2l0
aW9uIHdhdGNocG9pbnRzIGFyZSBiZWluZyB1c2VkCisgICAgICAgICAgc291bmRseS4KKyAgICAg
ICAgCisgICAgICAgIC0gV2UgdXNlIHRoZSBhYm92ZSB0byBzdHJlbmd0aCByZWR1Y2UgQ2hlY2tT
dHJ1Y3R1cmUgaW50byBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludAorICAgICAgICAgIHdo
ZW5ldmVyIHBvc3NpYmxlLgorICAgICAgICAKKyAgICAgICAgLSBUaGlzIHJhdGlvbmFsaXplcyB0
aGUgaGFuZGxpbmcgb2YgQ0ZBIG92ZXIgY29uc3RhbnRzIHRoYXQgYXBwZWFyZWQgaW4gdGhlIGJ5
dGVjb2RlLgorICAgICAgICAgIFRoaXMgY29uc3RhbnRzIG1heSAqbm93KiBoYXZlIGEgc3RydWN0
dXJlLCBidXQgdGhlIGNvZGUgd2UncmUgY29tcGlsaW5nIG1heSBoYXZlCisgICAgICAgICAgZXhl
Y3V0ZWQgKmluIHRoZSBwYXN0Kiwgc28gYW55IHN0cnVjdHVyZSBjaGVja3MgaXQgY29udGFpbnMg
bWF5IGhhdmUgYmVlbiB2YWxpZCBpbgorICAgICAgICAgIHRoZSBwYXN0IChtZWFuaW5nIHRoYXQg
dGhlIGNvZGUgdGhhdCBmb2xsb3dzIGlzIHJlYWNoYWJsZSkgZXZlbiB0aG91Z2ggdGhvc2UKKyAg
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2tzIGFyZSBrbm93biB0byBmYWlsIG5vdyBvciBpbiB0aGUg
ZnV0dXJlLiBJbiBzaG9ydCwgd2UgcGxheSBpdCBzYWZlLAorICAgICAgICAgIGFuZCBkb24ndCBh
c3N1bWUgd2Uga25vdyB3aGVyZSBpbiB0aGUgdGltZWxpbmUgb2Ygc3RydWN0dXJlIHRyYW5zaXRp
b25zIG9mIGFueQorICAgICAgICAgIG9iamVjdCB3ZSBhcmUgYXQgdGhlIHBvaW50IG9mIGNvbXBp
bGF0aW9uLCB1bmxlc3MgcHJvZmlsaW5nIGV4cGxpY2l0bHkgdGVsbHMgdXMKKyAgICAgICAgICBv
dGhlcndpc2UuCisgICAgICAgIAorICAgICAgICBUaGUgbmV0IGVmZmVjdCBvZiBhbGwgb2YgdGhl
c2UgY2hhbmdlcyBpcyB0aGF0IE9TUiBlbnRyeSBzaG91bGQgd29yayBtb3JlIHNtb290aGx5Lgor
ICAgICAgICBJdCBtYXkgYWxzbyBiZSBhIHNsaWdodCB3aW4gZHVlIHRvIHN0cmVuZ3RoIHJlZHVj
dGlvbnMsIHRob3VnaHQgbW9zdCBvZiB0aG9zZQorICAgICAgICBzcmVuZ3RoIHJlZHVjdGlvbnMg
d291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgcGFyc2VyIGFuZCB0aGUgc3RydWN0
dXJlIGNoZWNrCisgICAgICAgIGhvaXN0ZXIuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoK
KyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2xlYXIp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzQ2xlYXIpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om1ha2VUb3ApOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0VmFsdWU6OmNsb2JiZXJTdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFZhbHVlOjppc1RvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6c2V0
RnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUpOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6c2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjptZXJnZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXJWYWx1ZUJ5VHlwZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVUeXBlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpDU0VQaGFzZTo6Y2hlY2tTdHJ1Y3R1cmVMb2FkRWxpbWluYXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEVsaW1p
bmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgor
ICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnQpOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkVudHJ5LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpwcmVwYXJlT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29udmVydExhc3RPU1JFeGl0
VG9Gb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNw
ZWN1bGF0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnRXaXRoQ29uZGl0aW9uYWxEaXJl
Y3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3Vs
YXRpb25DaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZUFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNw
ZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFs
dWUuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAoU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6U3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
Om1ha2VUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnRv
cCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGRBbGwpOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKToKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YnNldE9mKToKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkb2VzTm90Q29udGFpbkFueU90aGVy
VGhhbik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBl
cnNldE9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzQ2xlYXIp
OgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzVG9wKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc0NsZWFyT3JUb3ApOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzTmVpdGhlckNsZWFy
Tm9yVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpzaXpl
KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3JbXSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bGFzdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJl
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aGFzU2luZ2xl
dG9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpzaW5nbGV0
b24pOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnRvcFZhbHVlKToKKyAg
ICAgICAgKiBkZmcvREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2U6OnJ1bik6CisKIDIwMTItMDgt
MTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJ1Y3R1cmUg
Y2hlY2sgaG9pc3Rpbmcgc2hvdWxkIGJlIGxlc3MgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI1ODIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTIyOSw2ICsyMjksNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDIsNiArMTQyLDcgQEAKIAkJMEY2Mzk0NDAxNUM3NUYxRDAwNkE1OTdDIC8qIERGR1N0cnVjdHVy
ZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcCAqLzsgfTsKIAkJMEY2Mzk0NTQxNUQwNzA1NTAwNkE1OTdDIC8q
IEFycmF5UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYzOTQ1MTE1RDA3MDUxMDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmNwcCAqLzsg
fTsKIAkJMEY2Mzk0NTUxNUQwNzA1NzAwNkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2Mzk0NTIxNUQwNzA1MTAw
NkE1OTdDIC8qIEFycmF5UHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYzOTQ3NjE1RENFMzQ3MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNjZFMTZCMTRERjNGMTYwMEI3QjJFNCAvKiBERkdBZGphY2VuY3lMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2ODE0REYzRjEzMDBC
N0IyRTQgLyogREZHQWRqYWNlbmN5TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNjZFMTZDMTRERjNGMTYwMEI3QjJFNCAvKiBERkdFZGdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjY2RTE2
OTE0REYzRjEzMDBCN0IyRTQgLyogREZHRWRnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRT
dHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovOyB9
OwpAQCAtODkzLDYgKzg5NCw3IEBACiAJCTBGNjM5NDNEMTVDNzVGMTQwMDZBNTk3QyAvKiBERkdT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU3Ry
dWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNjM5NDUxMTVEMDcwNTEwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY2Mzk0NTIxNUQwNzA1MTAwNkE1OTdDIC8qIEFycmF5UHJvZmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheVByb2ZpbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1OTdDIC8qIERG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjgxNERG
M0YxMzAwQjdCMkU0IC8qIERGR0FkamFjZW5jeUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHQWRqYWNlbmN5TGlzdC5oOyBwYXRoID0gZGZnL0RGR0FkamFjZW5jeUxp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2NkUxNjkxNERGM0YxMzAwQjdC
MkU0IC8qIERGR0VkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRWRn
ZS5oOyBwYXRoID0gZGZnL0RGR0VkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVFN0dWJSb3V0aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMzI5LDYgKzIzMzEsNyBAQAogCQkJCTg2RUM5REMzMTMyOERGODIwMDJC
MkFENyAvKiBERkdTcGVjdWxhdGl2ZUpJVC5oICovLAogCQkJCTg2ODgwRjFCMTQzMjhCQjkwMEIw
OEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLywKIAkJCQk4Njg4MEY0QzE0MzUz
QjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8sCisJCQkJMEY2Mzk0NzYx
NURDRTM0NzAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkw
RjYzOTQzQzE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcCAqLywKIAkJCQkwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5N0MgLyogREZHU3RydWN0dXJlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmggKi8sCiAJCQkJMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERG
R1RodW5rcy5jcHAgKi8sCkBAIC0yODc0LDYgKzI4NzcsNyBAQAogCQkJCTBGNzY2RDQ2MTVCMzcw
MUYwMDhGMzYzRSAvKiBERkdTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjM5NDNGMTVDNzVGMTkwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVDaGVja0hvaXN0
aW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAv
KiBBcnJheVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZB
NTk3QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2
aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTMgKzYyLDEzIEBAIHZvaWQgQWJzdHJhY3RT
dGF0ZTo6YmVnaW5CYXNpY0Jsb2NrKEJhc2kKICAgICBtX3ZhcmlhYmxlcyA9IGJhc2ljQmxvY2st
PnZhbHVlc0F0SGVhZDsKICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsK
LSAgICAgICAgaWYgKG1fdmFyaWFibGVzLmFyZ3VtZW50KGkpLm1fc3RydWN0dXJlLmlzTmVpdGhl
ckNsZWFyTm9yVG9wKCkpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFibGVzLmFyZ3VtZW50KGkpLm1f
Y3VycmVudEtub3duU3RydWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9wKCkpIHsKICAgICAgICAg
ICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5udW1iZXJP
ZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdmFyaWFibGVzLmxvY2FsKGkpLm1fc3Ry
dWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9wKCkpIHsKKyAgICAgICAgaWYgKG1fdmFyaWFibGVz
LmxvY2FsKGkpLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzTmVpdGhlckNsZWFyTm9yVG9wKCkp
IHsKICAgICAgICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE0MTMsMTcgKzE0MTMsMzQgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOiB7
CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBwcm9wYWdhdGUgdGhlIHN0
cnVjdHVyZSBzZXRzIG9mIGNvbnN0YW50cyAoaS5lLiBwcm90b3R5cGVzKS4KICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOworICAgICAgICAvLyBJ
ZiB0aGlzIHN0cnVjdHVyZSBjaGVjayBpcyBhdHRlbXB0aW5nIHRvIHByb3ZlIGtub3dsZWRnZSBh
bHJlYWR5IGhlbGQgaW4KKyAgICAgICAgLy8gdGhlIGZ1dHVyZVBvc3NpYmxlU3RydWN0dXJlIHNl
dCB0aGVuIHRoZSBjb25zdGFudCBmb2xkaW5nIHBoYXNlIHNob3VsZAorICAgICAgICAvLyB0dXJu
IHRoaXMgaW50byBhIHdhdGNocG9pbnQgaW5zdGVhZC4KKyAgICAgICAgU3RydWN0dXJlU2V0JiBz
ZXQgPSBub2RlLnN0cnVjdHVyZVNldCgpOworICAgICAgICBpZiAodmFsdWUubV9mdXR1cmVQb3Nz
aWJsZVN0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkpCisgICAgICAgICAgICBtX2ZvdW5kQ29uc3Rh
bnRzID0gdHJ1ZTsKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgIXZhbHVl
Lm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKKyAgICAgICAgICAg
ICF2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKHNldCkKICAgICAgICAg
ICAgIHx8ICFpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKTsKLSAgICAgICAgdmFsdWUu
ZmlsdGVyKG5vZGUuc3RydWN0dXJlU2V0KCkpOworICAgICAgICB2YWx1ZS5maWx0ZXIoc2V0KTsK
KyAgICAgICAgaWYgKHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzQ2xlYXIoKSkKKyAg
ICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICBtX2hhdmVTdHJ1Y3R1cmVzID0g
dHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7Ci0gICAgICAgIC8vIEZJWE1FOiBUdXJuIENoZWNrU3Ry
dWN0dXJlIGludG8gU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQgd2hlbiBwb3NzaWJsZSEK
KyAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgIGNhc2UgRm9yd2Fy
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKKworICAgICAgICAvLyBJdCdzIG9ubHkg
dmFsaWQgdG8gaXNzdWUgYSBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IGlmIHdlIGFs
cmVhZHkKKyAgICAgICAgLy8ga25vdyB0aGF0IHRoZSB3YXRjaHBvaW50IGNvdmVycyBhIHN1cGVy
c2V0IG9mIHRoZSBzdHJ1Y3R1cmVzIGtub3duIHRvCisgICAgICAgIC8vIGJlbG9uZyB0byB0aGUg
c2V0IG9mIGZ1dHVyZSBzdHJ1Y3R1cmVzIHRoYXQgdGhpcyB2YWx1ZSBtYXkgaGF2ZS4KKyAgICAg
ICAgLy8gQ3VycmVudGx5LCB3ZSBvbmx5IGlzc3VlIHNpbmdsZXRvbiB3YXRjaHBvaW50cyAodGhh
dCBjaGVjayBvbmUgc3RydWN0dXJlKQorICAgICAgICAvLyBhbmQgb3VyIGZ1dHVyZVBvc3NpYmxl
U3RydWN0dXJlIHNldCBjYW4gb25seSBjb250YWluIHplcm8sIG9uZSwgb3IgYW4KKyAgICAgICAg
Ly8gaW5maW5pdHkgb2Ygc3RydWN0dXJlcy4KKyAgICAgICAgQVNTRVJUKHZhbHVlLm1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS5zdHJ1Y3R1cmUo
KSkpKTsKKyAgICAgICAgCiAgICAgICAgIEFTU0VSVCh2YWx1ZS5pc0NsZWFyKCkgfHwgaXNDZWxs
U3BlY3VsYXRpb24odmFsdWUubV90eXBlKSk7IC8vIFZhbHVlIGNvdWxkIGJlIGNsZWFyIGlmIHdl
J3ZlIHByb3ZlbiBtdXN0LWV4aXQgZHVlIHRvIGEgc3BlY3VsYXRpb24gc3RhdGljYWxseSBrbm93
biB0byBiZSBiYWQuCiAgICAgICAgIHZhbHVlLmZpbHRlcihub2RlLnN0cnVjdHVyZSgpKTsKICAg
ICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMw
LDI5NCArMzAsMTMgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNw
ZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7Ci1w
dWJsaWM6Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSgpCi0gICAgICAgIDogbV9zdHJ1Y3R1
cmUoMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQotICAg
IHsKLSAgICB9Ci0gICAgCi0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoc2V0LnNpemUoKSkgewotICAgICAg
ICBjYXNlIDA6Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIAotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBtX3N0cnVjdHVy
ZSA9IHNldFswXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHRvcFZhbHVlKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7
Ci0gICAgICAgIG1fc3RydWN0dXJlID0gMDsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBtYWtlVG9w
KCkKLSAgICB7Ci0gICAgICAgIG1fc3RydWN0dXJlID0gdG9wVmFsdWUoKTsKLSAgICB9Ci0gICAg
Ci0gICAgc3RhdGljIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdG9wKCkKLSAgICB7Ci0gICAgICAg
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdmFsdWU7Ci0gICAgICAgIHZhbHVlLm1ha2VUb3AoKTsK
LSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkZChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghY29udGFpbnMoc3RydWN0dXJl
KSAmJiAhaXNUb3AoKSk7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSkKLSAgICAgICAgICAgIG1h
a2VUb3AoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgYWRkQWxsKGNvbnN0IFN0cnVjdHVyZVNldCYgb3Ro
ZXIpCi0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSB8fCAhb3RoZXIuc2l6ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAob3RoZXIuc2l6ZSgpID4gMSkgewotICAg
ICAgICAgICAgbWFrZVRvcCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBv
dGhlclswXTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChtX3N0cnVjdHVyZSA9PSBvdGhlclswXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgbWFrZVRvcCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBhZGRBbGwoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCi0gICAgewot
ICAgICAgICBpZiAoIW90aGVyLm1fc3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKG90aGVyLmlzVG9wKCkpIHsKLSAgICAgICAgICAgIG1ha2VUb3AoKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSkgewot
ICAgICAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIG1ha2VUb3AoKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXIu
bV9zdHJ1Y3R1cmU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBib29s
IGNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KGlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG1fc3RydWN0
dXJlID09IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1
cmVTZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzVG9wKCkpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9zdHJ1Y3R1cmUpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG90aGVyLmNvbnRhaW5zKG1fc3RydWN0dXJl
KTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBkb2VzTm90Q29udGFpbkFueU90aGVyVGhhbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fc3RydWN0dXJlKQotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1
cmU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICBpZiAoIW90aGVyLnNpemUoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICBpZiAob3RoZXIuc2l6ZSgpID4gMSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlID09IG90aGVyWzBdOwotICAg
IH0KLSAgICAKLSAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAob3RoZXIuaXNUb3AoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoaXNUb3AoKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKG1fc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBpZiAo
b3RoZXIubV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlID09
IG90aGVyLm1fc3RydWN0dXJlOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3VwZXJzZXRP
Zihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9mKCp0aGlzKTsKLSAgICB9Ci0gICAgCi0gICAgdm9p
ZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGlmICgh
bV9zdHJ1Y3R1cmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBpZiAo
aXNUb3AoKSkgewotICAgICAgICAgICAgc3dpdGNoIChvdGhlci5zaXplKCkpIHsKLSAgICAgICAg
ICAgIGNhc2UgMDoKLSAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSAxOgotICAg
ICAgICAgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXJbMF07Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IGlmIChvdGhlci5jb250YWlucyhtX3N0cnVjdHVyZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAotICAgICAgICBtX3N0cnVjdHVyZSA9IDA7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQotICAgIHsKLSAgICAg
ICAgaWYgKGlzVG9wKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gb3RoZXIubV9zdHJ1
Y3R1cmU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fc3Ry
dWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAob3RoZXIuaXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9zdHJ1
Y3R1cmUgPSAwOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSBv
dGhlcikKLSAgICB7Ci0gICAgICAgIGlmICghKG90aGVyICYgU3BlY0NlbGwpKSB7Ci0gICAgICAg
ICAgICBjbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBpZiAoaXNDbGVhck9yVG9wKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKCEoc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlKSAmIG90aGVyKSkK
LSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gMDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Ns
ZWFyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9zdHJ1Y3R1cmU7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaXNUb3AoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZSA9PSB0b3BW
YWx1ZSgpOyB9Ci0gICAgCi0gICAgYm9vbCBpc0NsZWFyT3JUb3AoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZSA8PSB0b3BWYWx1ZSgpOyB9Ci0gICAgYm9vbCBpc05laXRoZXJDbGVhck5vclRv
cCgpIGNvbnN0IHsgcmV0dXJuICFpc0NsZWFyT3JUb3AoKTsgfQotICAgIAotICAgIHNpemVfdCBz
aXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghaXNUb3AoKSk7Ci0gICAgICAgIHJl
dHVybiAhIW1fc3RydWN0dXJlOwotICAgIH0KLSAgICAKLSAgICBTdHJ1Y3R1cmUqIGF0KHNpemVf
dCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc1RvcCgpKTsKLSAgICAgICAgQVNT
RVJUKG1fc3RydWN0dXJlKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChpLCAhaSk7Ci0gICAgICAg
IHJldHVybiBtX3N0cnVjdHVyZTsKLSAgICB9Ci0gICAgCi0gICAgU3RydWN0dXJlKiBvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KGkpOwotICAgIH0K
LSAgICAKLSAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGF0KDApOwotICAgIH0KLSAgICAKLSAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmVzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1RvcCgpKQotICAgICAgICAg
ICAgcmV0dXJuIFNwZWNDZWxsOwotICAgICAgICBpZiAoaXNDbGVhcigpKQotICAgICAgICAgICAg
cmV0dXJuIFNwZWNOb25lOwotICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJl
KG1fc3RydWN0dXJlKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBoYXNTaW5nbGV0b24oKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTmVpdGhlckNsZWFyTm9yVG9wKCk7Ci0gICAgfQot
ICAgIAotICAgIFN0cnVjdHVyZSogc2luZ2xldG9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChpc05laXRoZXJDbGVhck5vclRvcCgpKTsKLSAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJl
OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUg
PT0gb3RoZXIubV9zdHJ1Y3R1cmU7Ci0gICAgfQotICAgIAotICAgIHZvaWQgZHVtcChGSUxFKiBv
dXQpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNUb3AoKSkgewotICAgICAgICAgICAgZnBy
aW50ZihvdXQsICJUT1AiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgZnByaW50ZihvdXQsICJbIik7Ci0gICAgICAgIGlmIChtX3N0cnVjdHVyZSkK
LSAgICAgICAgICAgIGZwcmludGYob3V0LCAiJXAiLCBtX3N0cnVjdHVyZSk7Ci0gICAgICAgIGZw
cmludGYob3V0LCAiXSIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgU3RydWN0dXJl
KiB0b3BWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMSk7IH0K
LSAgICAKLSAgICAvLyBUaGlzIGNhbiBvbmx5IHJlbWVtYmVyIG9uZSBzdHJ1Y3R1cmUgYXQgYSB0
aW1lLgotICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7Ci19OwotCiBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgQWJzdHJhY3RWYWx1ZSgpCiAgICAgICAgIDogbV90eXBlKFNwZWNOb25lKQpA
QCAtMzI3LDE1ICs0NiwxNSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgdm9pZCBjbGVh
cigpCiAgICAgewogICAgICAgICBtX3R5cGUgPSBTcGVjTm9uZTsKLSAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5jbGVhcigpOworICAg
ICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBtX2Z1dHVyZVBv
c3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAg
ICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0NsZWFy
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV90eXBlID09IFNwZWNOb25l
ICYmIG1fc3RydWN0dXJlLmlzQ2xlYXIoKSAmJiBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmlzQ2xl
YXIoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3R5cGUgPT0gU3BlY05vbmUgJiYgbV9jdXJy
ZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpICYmIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUu
aXNDbGVhcigpOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgQVNTRVJUKCFtX3Zh
bHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0NCw4ICs2Myw4IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKICAgICB2b2lkIG1ha2VUb3AoKQogICAgIHsKICAgICAgICAgbV90eXBl
ID0gU3BlY1RvcDsKLSAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOwotICAgICAgICBtX3Vu
Y2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1
Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLm1ha2VU
b3AoKTsKICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogICAgIH0KQEAgLTM1Myw5ICs3Miw5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUg
JiBTcGVjQ2VsbCkKLSAgICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAg
ICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLmlzQ2xlYXIoKSk7CisgICAgICAgICAgICBBU1NF
UlQobV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgIH0KICAgICAKQEAgLTM2Niw3ICs4NSw3IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICAKICAgICBib29sIGlzVG9wKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3R5cGUgPT0gU3BlY1RvcCAmJiBtX3N0cnVjdHVyZS5pc1RvcCgpICYmIG1fdW5jbG9i
YmVyZWRTdHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBTcGVjVG9w
ICYmIG1fY3VycmVudEtub3duU3RydWN0dXJlLmlzVG9wKCkgJiYgbV9mdXR1cmVQb3NzaWJsZVN0
cnVjdHVyZS5pc1RvcCgpOwogICAgIH0KICAgICAKICAgICBib29sIHZhbHVlSXNUb3AoKSBjb25z
dApAQCAtMzg2LDIwICsxMDUsMjIgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICB2b2lkIHNldEZ1dHVyZVBvc3NpYmxlU3Ry
dWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRJc1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgIG1f
ZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIHNldChKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCEhdmFsdWUg
JiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIC8vIEhhdmUgdG8gYmUgY2FyZWZ1bCBo
ZXJlISBJdCdzIHRlbXB0aW5nIHRvIHNldCB0aGUgc3RydWN0dXJlIHRvIHRoZQotICAgICAgICAg
ICAgLy8gdmFsdWUncyBzdHJ1Y3R1cmUsIGJ1dCB0aGF0IHdvdWxkIGJlIHdyb25nLCBzaW5jZSB0
aGF0IHdvdWxkCi0gICAgICAgICAgICAvLyBjb25zdGl0dXRlIGEgcHJvb2YgdGhhdCB0aGlzIHZh
bHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUKLSAgICAgICAgICAgIC8vIHN0cnVjdHVyZS4g
VGhlIHdob2xlIHBvaW50IG9mIGEgdmFsdWUgaGF2aW5nIGEgc3RydWN0dXJlIGlzIHRoYXQKLSAg
ICAgICAgICAgIC8vIGl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAtIGZvciBleGFtcGxlIGJl
dHdlZW4gd2hlbiB3ZSBjb21waWxlCi0gICAgICAgICAgICAvLyB0aGUgY29kZSBhbmQgd2hlbiB3
ZSBydW4gaXQuCi0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAgICAg
ICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsgLy8gRklYTUU6IENvbnNpZGVyIG5v
dCBjbG9iYmVyaW5nIHRoaXMuCisgICAgICAgICAgICBtX2N1cnJlbnRLbm93blN0cnVjdHVyZS5t
YWtlVG9wKCk7CisgICAgICAgICAgICBzZXRGdXR1cmVQb3NzaWJsZVN0cnVjdHVyZSh2YWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9z
dHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKQEAg
LTQxMCwxMiArMTMxLDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIHZvaWQg
c2V0KFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xl
YXIoKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuYWRkKHN0cnVjdHVyZSk7Ci0gICAgICAgIAotICAg
ICAgICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIG1fdW5jbG9iYmVy
ZWRTdHJ1Y3R1cmUuYWRkKHN0cnVjdHVyZSk7Ci0gICAgICAgIAorICAgICAgICBtX2N1cnJlbnRL
bm93blN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgc2V0RnV0dXJlUG9zc2libGVTdHJ1
Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIApA
QCAtNDI1LDExICsxNDIsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgc2V0
KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBpZiAodHlwZSAmIFNwZWNDZWxs
KSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7Ci0gICAgICAgICAgICBtX3Vu
Y2xvYmJlcmVkU3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fY3VycmVudEtub3du
U3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1
cmUubWFrZVRvcCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUu
Y2xlYXIoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBt
X2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgbV90
eXBlID0gdHlwZTsKICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKQEAgLTQzOSw4ICsxNTYs
OCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFi
c3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHlwZSA9
PSBvdGhlci5tX3R5cGUKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVyLm1fc3Ry
dWN0dXJlCi0gICAgICAgICAgICAmJiBtX3VuY2xvYmJlcmVkU3RydWN0dXJlID09IG90aGVyLm1f
dW5jbG9iYmVyZWRTdHJ1Y3R1cmUKKyAgICAgICAgICAgICYmIG1fY3VycmVudEtub3duU3RydWN0
dXJlID09IG90aGVyLm1fY3VycmVudEtub3duU3RydWN0dXJlCisgICAgICAgICAgICAmJiBtX2Z1
dHVyZVBvc3NpYmxlU3RydWN0dXJlID09IG90aGVyLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUK
ICAgICAgICAgICAgICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9CiAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdApAQCAtNDU5LDgg
KzE3Niw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHJlc3VsdCA9ICFv
dGhlci5pc0NsZWFyKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgfD0g
bWVyZ2VTcGVjdWxhdGlvbihtX3R5cGUsIG90aGVyLm1fdHlwZSk7Ci0gICAgICAgICAgICByZXN1
bHQgfD0gbV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0dXJlKTsKLSAgICAgICAgICAg
IHJlc3VsdCB8PSBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmFkZEFsbChvdGhlci5tX3VuY2xvYmJl
cmVkU3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBtX2N1cnJlbnRLbm93blN0cnVj
dHVyZS5hZGRBbGwob3RoZXIubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cmVzdWx0IHw9IG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKG1fdmFsdWUgIT0gb3RoZXIubV92
YWx1ZSkgewogICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAhIW1fdmFsdWU7CiAgICAgICAgICAg
ICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKQEAgLTQ3Niw4ICsxOTMsOCBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCB0eXBlKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICh0eXBlICYgU3BlY0NlbGwpIHsKLSAgICAgICAgICAgIG1fc3Ry
dWN0dXJlLm1ha2VUb3AoKTsKLSAgICAgICAgICAgIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUubWFr
ZVRvcCgpOworICAgICAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUubWFrZVRvcCgpOwor
ICAgICAgICAgICAgbV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAg
IH0KICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKIApAQCAtNDg3LDE5ICsyMDQsMjMgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpCiAgICAgewogICAgICAgICBtX3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9t
U3RydWN0dXJlcygpOwotICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIob3RoZXIpOwotICAgICAg
ICBtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmZpbHRlcihvdGhlcik7CisgICAgICAgIG1fY3VycmVu
dEtub3duU3RydWN0dXJlLmZpbHRlcihvdGhlcik7CisgICAgICAgIGlmIChtX2N1cnJlbnRLbm93
blN0cnVjdHVyZS5pc0NsZWFyKCkpCisgICAgICAgICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudEtub3duU3RydWN0dXJlLmhh
c1NpbmdsZXRvbigpKQorICAgICAgICAgICAgc2V0RnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUobV9j
dXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRlbWVu
dHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJlCiAgICAgICAgIC8vIEZvbyBpcyBhIFNwZWN1bGF0
ZWRUeXBlIHRoYXQgaXMgZGlzam9pbnQgd2l0aCB0aGUgcGFzc2VkIFN0cnVjdHVyZVNldC4gSW4g
dGhhdAogICAgICAgICAvLyBjYXNlLCB3ZSB3aWxsIG5vdyBoYXZlIChOb25lLCBbc29tZVN0cnVj
dHVyZV0pLiBJbiBnZW5lcmFsLCB3ZSBuZWVkIHRvIG1ha2UKICAgICAgICAgLy8gc3VyZSB0aGF0
IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFNwZWN1bGF0ZWRUeXBlIG5lZWRzIHRv
IGJlIGZlZCBiYWNrCiAgICAgICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgU3RydWN0dXJlU2V0LgotICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsK
LSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKyAgICAgICAg
bV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CisgICAgICAgIG1fZnV0dXJl
UG9zc2libGVTdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CiAgICAgICAgIAotICAgICAgICBpZiAo
ISFtX3ZhbHVlICYmICF2YWxpZGF0ZUlnbm9yaW5nVmFsdWUobV92YWx1ZSkpCi0gICAgICAgICAg
ICBjbGVhcigpOworICAgICAgICBmaWx0ZXJWYWx1ZUJ5VHlwZSgpOwogICAgICAgICAKICAgICAg
ICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAgLTUxNCw0NyArMjM1LDQ5IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8gdGhlIHBhc3NlZCB0eXBlIGlzIEFycmF5LiBB
dCB0aGlzIHBvaW50IHdlJ2xsIGhhdmUgKE5vbmUsIFRPUCkuIFRoZSBiZXN0IHdheQogICAgICAg
ICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIGZpbHRlcmluZyBkb2VzIHRoZSByaWdo
dCB0aGluZyBpcyB0byBmaWx0ZXIgb24KICAgICAgICAgLy8gdGhlIG5ldyB0eXBlIChOb25lKSBy
YXRoZXIgdGhhbiB0aGUgb25lIHBhc3NlZCAoQXJyYXkpLgotICAgICAgICBtX3N0cnVjdHVyZS5m
aWx0ZXIobV90eXBlKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKKyAgICAgICAgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7Cisg
ICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CiAKLSAgICAg
ICAgaWYgKCEhbV92YWx1ZSAmJiAhdmFsaWRhdGVJZ25vcmluZ1ZhbHVlKG1fdmFsdWUpKQotICAg
ICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgZmlsdGVyVmFsdWVCeVR5cGUoKTsKICAgICAgICAg
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCB2YWxp
ZGF0ZUlnbm9yaW5nVmFsdWUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChpc1RvcCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICBp
ZiAobWVyZ2VTcGVjdWxhdGlvbnMobV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkp
ICE9IG1fdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAg
IGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVj
RW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGlmIChtX3N0cnVjdHVyZS5pc1RvcCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIAotICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIHJldHVybiBt
X3N0cnVjdHVyZS5jb250YWlucyh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgIC8v
IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSB2YWx1ZSBzaG91bGQgYWxz
byBiZSBtYWRlIEJPVFRPTSBpZiB0aGUgdHlwZQorICAgIC8vIHdhcyBtYWRlIEJPVFRPTS4gIEl0
IGNvdWxkLCBpbiBwcmluY2lwbGUsIGFsc28gYmUgdXNlZCB0byBtYWtlIHRoZSB3aG9sZSB2YWx1
ZSBCT1RUT00KKyAgICAvLyBpZiB0aGUgdmFsdWUncyBzdHJ1Y3R1cmUgZG9lcyBub3QgYWdyZWUg
d2l0aCBvdXIgc3RydWN0dXJlIHNldHMuIEJ1dCB0aGF0IHdvdWxkIGJlCisgICAgLy8gc3VidGx5
IGJhZCwgYW5kIHBvc3NpYmx5IGNvbXBsZXRlbHkgd3JvbmcuIElmIHdlJ3JlIGhvbGRpbmcgYSB2
YWx1ZSwgdGhlbiB3ZSBrbm93IHdoYXQKKyAgICAvLyBpdHMgc3RydWN0dXJlIGlzICpyaWdodCBu
b3cqLCBidXQgd2UgaGF2ZSBubyBjbHVlIHdoYXQgc3RydWN0dXJlcyBpdCBtYXkgaGF2ZSBoYWQg
aW4KKyAgICAvLyB0aGUgcGFzdC4gVGhpcyBpcyBiZWNhdXNlIHdlIG1heSBiZSBPU1IgZW50ZXJp
bmcgcGFzdCB0aGUgcG9pbnQgd2hlcmUgdGhpcyBmdW5jdGlvbiwgb3IKKyAgICAvLyBhIGZ1bmN0
aW9uIHRoYXQgdGhpcyBmdW5jdGlvbiBjYWxsZWQsIGNoYW5nZWQgdGhlIHZhbHVlJ3Mgc3RydWN0
dXJlLiBOb3csIHdlIGNvdWxkIGZpeAorICAgIC8vIHRoaXMgYnkgZWl0aGVyIGlnbm9yaW5nIHdo
ZW4gQ0ZBIHByb3ZlcyBjb2RlIHVucmVhY2hhYmxlIGR1ZSB0byBzdHJ1Y3R1cmUgY2hlY2tzLCBv
ciB3ZQorICAgIC8vIGNvdWxkICJmb3JjZSIgdGhlIENGQSB0byBiZWxpZXZlIHRoYXQgT1NSIGVu
dHJpZXMgYXJlIGFsd2F5cyByZWFjaGFibGUuIEJ1dCBlaXRoZXIKKyAgICAvLyBzb2x1dGlvbiBp
cyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gdGhpcyBvbmUuIE1vcmVvdmVyLCB0aGVyZSBpcyBhbG1v
c3Qgbm8gY29zdCB0byBtb3N0bHkKKyAgICAvLyBpZ25vcmluZyB0aGUgc3RydWN0dXJlIG9mIGNv
bnN0YW50cyB0aGF0IGFwcGVhciBpbiB0aGUgY29kZS4gV2UgY3VycmVudGx5IG9ubHkgdHJhY2sK
KyAgICAvLyB3aGF0IHN0cnVjdHVyZXMgYSB2YWx1ZSBtYXkgaGF2ZSBpbiB0aGUgZnV0dXJlLCB3
aGljaCBhbGxvd3MgdXMgdG8gb3B0aW1pemUKKyAgICAvLyBDaGVja1N0cnVjdHVyZSBpbnRvIFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50IGFuZCBhbHNvIHRvIHZhbGlkYXRlCisgICAgLy8g
U3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnRzLiBCdXQgaXQgd291bGQgbm90IGJlIGEgZ29v
ZCBpZGVhIHRvIGdvIGZ1cnRoZXIgdGhhbiB0aGlzLgorICAgIHZvaWQgZmlsdGVyVmFsdWVCeVR5
cGUoKQorICAgIHsKKyAgICAgICAgaWYgKCEhbV90eXBlKSB7CisgICAgICAgICAgICAvLyBUaGUg
dHlwZSBpcyBzdGlsbCBub24tZW1wdHkuIFRoaXMgaW1wbGllcyB0aGF0IHJlZ2FyZGxlc3Mgb2Yg
d2hhdCBmaWx0ZXJpbmcKKyAgICAgICAgICAgIC8vIHdhcyBkb25lLCB3ZSBlaXRoZXIgZGlkbid0
IGhhdmUgYSB2YWx1ZSB0byBiZWdpbiB3aXRoLCBvciB0aGF0IHZhbHVlIGlzIHN0aWxsCisgICAg
ICAgICAgICAvLyB2YWxpZC4KKyAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZSB8fCB2YWxpZGF0
ZVR5cGUobV92YWx1ZSkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gVGhlIHR5cGUgaGFzIGJlZW4gcmVu
ZGVyZWQgZW1wdHkuIFRoYXQgbWVhbnMgdGhhdCB0aGUgdmFsdWUgbXVzdCBub3cgYmUgaW52YWxp
ZCwKKyAgICAgICAgLy8gYXMgd2VsbC4KKyAgICAgICAgQVNTRVJUKCFtX3ZhbHVlIHx8ICF2YWxp
ZGF0ZVR5cGUobV92YWx1ZSkpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgIH0K
ICAgICAKLSAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CisgICAgYm9vbCB2
YWxpZGF0ZVR5cGUoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc1Rv
cCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgICAgICBpZiAoISFt
X3ZhbHVlICYmIG1fdmFsdWUgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIAogICAgICAgICBpZiAobWVyZ2VTcGVjdWxhdGlvbnMobV90eXBlLCBzcGVjdWxhdGlv
bkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCkBAIC01NjMsMTggKzI4NiwxMCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYg
KG1fc3RydWN0dXJlLmlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBB
U1NFUlQobV90eXBlICYgU3BlY0NlbGwpOwotICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJl
LmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBib29sIHZhbGlkYXRl
Rm9yRW50cnkoSlNWYWx1ZSB2YWx1ZSkgY29uc3QKKyAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUg
dmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtNTkwLDEyICszMDUsMTEgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlm
IChtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmlzVG9wKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgCiAgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0NlbGwpOwotICAgICAgICAgICAgcmV0dXJu
IG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmUuY29udGFpbnModmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudEtub3duU3RydWN0dXJl
LmNvbnRhaW5zKHN0cnVjdHVyZSkKKyAgICAgICAgICAgICAgICAmJiBtX2Z1dHVyZVBvc3NpYmxl
U3RydWN0dXJlLmNvbnRhaW5zKHN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNjA0LDggKzMxOCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCEobV90eXBlICYgU3BlY0NlbGwpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUu
aXNDbGVhcigpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX3VuY2xvYmJlcmVkU3RydWN0dXJlLmlz
Q2xlYXIoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXND
bGVhcigpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmlz
Q2xlYXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChpc0NsZWFyKCkpCkBA
IC02MjMsMTcgKzMzNyw2NyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgdm9pZCBkdW1w
KEZJTEUqIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LCAiKCVzLCAiLCBz
cGVjdWxhdGlvblRvU3RyaW5nKG1fdHlwZSkpOwotICAgICAgICBtX3N0cnVjdHVyZS5kdW1wKG91
dCk7CisgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLmR1bXAob3V0KTsKICAgICAgICAg
ZGF0YUxvZygiLCAiKTsKLSAgICAgICAgbV91bmNsb2JiZXJlZFN0cnVjdHVyZS5kdW1wKG91dCk7
CisgICAgICAgIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuZHVtcChvdXQpOwogICAgICAgICBp
ZiAoISFtX3ZhbHVlKQogICAgICAgICAgICAgZnByaW50ZihvdXQsICIsICVzIiwgbV92YWx1ZS5k
ZXNjcmlwdGlvbigpKTsKICAgICAgICAgZnByaW50ZihvdXQsICIpIik7CiAgICAgfQogCi0gICAg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlIG1fdW5jbG9iYmVyZWRTdHJ1Y3R1cmU7CisgICAgLy8gVGhpcyBpcyBhIHByb3ZlbiBj
b25zdHJhaW50IG9uIHRoZSBzdHJ1Y3R1cmVzIHRoYXQgdGhpcyB2YWx1ZSBjYW4gaGF2ZSByaWdo
dAorICAgIC8vIG5vdy4gVGhlIHN0cnVjdHVyZSBvZiB0aGUgY3VycmVudCB2YWx1ZSBtdXN0IGJl
bG9uZyB0byB0aGlzIHNldC4gVGhlIHNldCBtYXkKKyAgICAvLyBiZSBUT1AsIGluZGljYXRpbmcg
dGhhdCBpdCBpcyB0aGUgc2V0IG9mIGFsbCBwb3NzaWJsZSBzdHJ1Y3R1cmVzLCBpbiB3aGljaAor
ICAgIC8vIGNhc2UgdGhlIGN1cnJlbnQgdmFsdWUgY2FuIGhhdmUgYW55IHN0cnVjdHVyZS4gVGhl
IHNldCBtYXkgYmUgQk9UVE9NIChlbXB0eSkKKyAgICAvLyBpbiB3aGljaCBjYXNlIHRoaXMgdmFs
dWUgY2Fubm90IGJlIGEgY2VsbC4gVGhpcyBpcyBhbGwgc3ViamVjdCB0byBjaGFuZ2UKKyAgICAv
LyBhbnl0aW1lIGEgbmV3IHZhbHVlIGlzIGFzc2lnbmVkIHRvIHRoaXMgb25lLCBhbnl0aW1lIHRo
ZXJlIGlzIGEgY29udHJvbCBmbG93CisgICAgLy8gbWVyZ2UsIG9yIG1vc3QgY3J1Y2lhbGx5LCBh
bnl0aW1lIGEgc2lkZS1lZmZlY3Qgb3Igc3RydWN0dXJlIGNoZWNrIGhhcHBlbnMuCisgICAgLy8g
SW4gY2FzZSBvZiBhIHNpZGUtZWZmZWN0LCB3ZSB0eXBpY2FsbHkgbXVzdCBhc3N1bWUgdGhhdCBh
bnkgdmFsdWUgbWF5IGhhdmUKKyAgICAvLyBoYWQgaXRzIHN0cnVjdHVyZSBjaGFuZ2VkLCBoZW5j
ZSBjb250cmF2ZW5pbmcgb3VyIHByb29mLiBXZSBtYWtlIHRoZSBwcm9vZgorICAgIC8vIHZhbGlk
IGFnYWluIGJ5IHN3aXRjaGluZyB0aGlzIHRvIFRPUCAoaS5lLiBjbGFpbWluZyB0aGF0IHdlIGhh
dmUgcHJvdmVkIHRoYXQKKyAgICAvLyB0aGlzIHZhbHVlIG1heSBoYXZlIGFueSBzdHJ1Y3R1cmUp
LiBPZiBub3RlIGlzIHRoYXQgdGhlIHByb29mIHJlcHJlc2VudGVkIGJ5CisgICAgLy8gdGhpcyBm
aWVsZCBpcyBub3Qgc3ViamVjdCB0byBzdHJ1Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50cyAt
IGV2ZW4gaWYgb25lCisgICAgLy8gZmlyZXMsIHdlIGNhbiBiZSBzdXJlIHRoYXQgdGhpcyBwcm9v
ZiBpcyBzdGlsbCB2YWxpZC4KKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1fY3VycmVudEtu
b3duU3RydWN0dXJlOworICAgIAorICAgIC8vIFRoaXMgaXMgYSBwcm92ZW4gY29uc3RyYWludCBv
biB0aGUgc3RydWN0dXJlcyB0aGF0IHRoaXMgdmFsdWUgY2FuIGhhdmUgbm93CisgICAgLy8gb3Ig
YW55IHRpbWUgaW4gdGhlIGZ1dHVyZSBzdWJqZWN0IHRvIHRoZSBzdHJ1Y3R1cmUgdHJhbnNpdGlv
biB3YXRjaHBvaW50cyBvZgorICAgIC8vIGFsbCBtZW1iZXJzIG9mIHRoaXMgc2V0IG5vdCBoYXZp
bmcgZmlyZWQuIFRoaXMgc2V0IGlzIGltcGVydmlvdXMgdG8gc2lkZS0KKyAgICAvLyBlZmZlY3Rz
OyBldmVuIGlmIG9uZSBoYXBwZW5zIHRoZSBzaWRlLWVmZmVjdCBjYW4gb25seSBjYXVzZSB0aGUg
dmFsdWUgdG8KKyAgICAvLyBjaGFuZ2UgdG8gYXQgd29yc3QgYW5vdGhlciBzdHJ1Y3R1cmUgdGhh
dCBpcyBhbHNvIGEgbWVtYmVyIG9mIHRoaXMgc2V0LiBCdXQsCisgICAgLy8gdGhlIHRoZW9yZW0g
YmVpbmcgcHJvdmVkIGJ5IHRoaXMgZmllbGQgaXMgcHJlZGljYXRlZCB1cG9uIHRoZXJlIG5vdCBi
ZWluZworICAgIC8vIGFueSBuZXcgc3RydWN0dXJlIHRyYW5zaXRpb25zIGludHJvZHVjZWQgaW50
byBhbnkgbWVtYmVycyBvZiB0aGlzIHNldC4gSW4KKyAgICAvLyBjYXNlcyB3aGVyZSB0aGVyZSBp
cyBubyB3YXkgZm9yIHVzIHRvIGd1YXJkIHRoaXMgaGFwcGVuaW5nLCB0aGUgc2V0IG11c3QgYmUK
KyAgICAvLyBUT1AuIEJ1dCBpbiBjYXNlcyB3aGVyZSB3ZSBjYW4gZ3VhcmQgbmV3IHN0cnVjdHVy
ZSB0cmFuc2l0aW9ucyAoYWxsIG1lbWJlcnMKKyAgICAvLyBvZiB0aGUgc2V0IGhhdmUgc3RpbGwt
dmFsaWQgc3RydWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMpIHRoZW4gdGhpcyBzZXQKKyAg
ICAvLyB3aWxsIGJlIGZpbml0ZS4gQW55dGltZSB0aGF0IHdlIG1ha2UgdXNlIG9mIHRoZSBmaW5p
dGUgbmF0dXJlIG9mIHRoaXMgc2V0LAorICAgIC8vIHdlIG11c3QgZmlyc3QgaXNzdWUgYSBzdHJ1
Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50LCB3aGljaCB3aWxsIGVmZmVjdGl2ZWx5CisgICAg
Ly8gcmVzdWx0IGluIG1fY3VycmVudEtub3duU3RydWN0dXJlIGJlaW5nIGZpbHRlcmVkIGFjY29y
ZGluZyB0bworICAgIC8vIG1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuCisgICAgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZSBtX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlOworICAgIAorICAgIC8vIFRo
aXMgaXMgYSBwcm92ZW4gY29uc3RyYWludCBvbiB0aGUgcG9zc2libGUgdHlwZXMgdGhhdCB0aGlz
IHZhbHVlIGNhbiBoYXZlCisgICAgLy8gbm93IG9yIGFueSB0aW1lIGluIHRoZSBmdXR1cmUsIHVu
bGVzcyBpdCBpcyByZWFzc2lnbmVkLiBUaGlzIGZpZWxkIGlzCisgICAgLy8gaW1wZXJ2aW91cyB0
byBzaWRlLWVmZmVjdHMgdW5sZXNzIHRoZSBzaWRlLWVmZmVjdCBjYW4gcmVhc3NpZ24gdGhlIHZh
bHVlCisgICAgLy8gKGZvciBleGFtcGxlIGlmIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBjYXB0dXJl
ZCB2YXJpYWJsZSkuIFRoZSByZWxhdGlvbnNoaXAKKyAgICAvLyBiZXR3ZWVuIHRoaXMgZmllbGQs
IGFuZCB0aGUgc3RydWN0dXJlIGZpZWxkcyBhYm92ZSwgaXMgYXMgZm9sbG93cy4gVGhlCisgICAg
Ly8gZmllbGRzIGFib3ZlIGNvbnN0cmFpbnQgdGhlIHN0cnVjdHVyZXMgdGhhdCBhIGNlbGwgbWF5
IGhhdmUsIGJ1dCB0aGV5IHNheQorICAgIC8vIG5vdGhpbmcgYWJvdXQgd2hldGhlciBvciBub3Qg
dGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGEgY2VsbC4gTW9yZSBmb3JtYWxseSwKKyAgICAvLyB0
aGUgbV9jdXJyZW50S25vd25TdHJ1Y3R1cmUgaXMgaXRzZWxmIGFuIGFic3RyYWN0IHZhbHVlIHRo
YXQgY29uc2lzdHMgb2YgdGhlCisgICAgLy8gdW5pb24gb2YgdGhlIHNldCBvZiBhbGwgbm9uLWNl
bGwgdmFsdWVzIGFuZCB0aGUgc2V0IG9mIGNlbGwgdmFsdWVzIHRoYXQgaGF2ZQorICAgIC8vIHRo
ZSBnaXZlbiBzdHJ1Y3R1cmUuIFRoaXMgYWJzdHJhY3QgdmFsdWUgaXMgdGhlbiB0aGUgaW50ZXJz
ZWN0aW9uIG9mIHRoZQorICAgIC8vIG1fY3VycmVudEtub3duU3RydWN0dXJlIGFuZCB0aGUgc2V0
IG9mIHZhbHVlcyB3aG9zZSB0eXBlIGlzIG1fdHlwZS4gU28sIGZvcgorICAgIC8vIGV4YW1wbGUg
aWYgbV90eXBlIGlzIFNwZWNGaW5hbHxTcGVjSW50MzIgYW5kIG1fY3VycmVudEtub3duU3RydWN0
dXJlIGlzCisgICAgLy8gWzB4MTIzNDVdIHRoZW4gdGhpcyBhYnN0cmFjdCB2YWx1ZSBjb3JyZXNw
b25kcyB0byB0aGUgc2V0IG9mIGFsbCBpbnRlZ2VycworICAgIC8vIHVuaWZpZWQgd2l0aCB0aGUg
c2V0IG9mIGFsbCBvYmplY3RzIHdpdGggc3RydWN0dXJlIDB4MTIzNDUuCiAgICAgU3BlY3VsYXRl
ZFR5cGUgbV90eXBlOworICAgIAorICAgIC8vIFRoaXMgaXMgYSBwcm92ZW4gY29uc3RyYWludCBv
biB0aGUgcG9zc2libGUgdmFsdWVzIHRoYXQgdGhpcyB2YWx1ZSBjYW4KKyAgICAvLyBoYXZlIG5v
dyBvciBhbnkgdGltZSBpbiB0aGUgZnV0dXJlLCB1bmxlc3MgaXQgaXMgcmVhc3NpZ25lZC4gTm90
ZSB0aGF0IHRoaXMKKyAgICAvLyBpbXBsaWVzIG5vdGhpbmcgYWJvdXQgdGhlIHN0cnVjdHVyZS4g
T2RkbHksIEpTVmFsdWUoKSAoaS5lLiB0aGUgZW1wdHkgdmFsdWUpCisgICAgLy8gbWVhbnMgZWl0
aGVyIEJPVFRPTSBvciBUT1AgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiBtX3R5cGU6IGlmIG1f
dHlwZSBpcworICAgIC8vIEJPVFRPTSB0aGVuIEpTVmFsdWUoKSBtZWFucyBCT1RUT007IGlmIG1f
dHlwZSBpcyBub3QgQk9UVE9NIHRoZW4gSlNWYWx1ZSgpCisgICAgLy8gbWVhbnMgVE9QLgogICAg
IEpTVmFsdWUgbV92YWx1ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDYgKzMyMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAg
ICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgICAgIGNh
c2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAgICAgICAgICAgICAgY2FzZSBG
b3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAgICAgICAgICAgICAg
IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlc2UgYmVjYXVzZSBpZiB3ZSBnZXQgdXNlcyBvZiB0
aGUgcmVsZXZhbnQKICAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUgdGhlbiB3ZSBjYW4g
c2FmZWx5IGdldCByaWQgb2YgdGhlc2UsIHRvby4gVGhpcyBvZiBjb3Vyc2UKICAgICAgICAgICAg
ICAgICAgICAgLy8gcmVsaWVzIG9uIHRoZXJlIG5vdCBiZWluZyBhbnkgaW5mb3JtYXRpb24gdHJh
bnNmZXJyZWQgYnkgdGhlIENGQQpAQCAtNDgzLDcgKzQ4NCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAg
ICAgICAgICAgICBjYXNlIEZvcndhcmRDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBj
YXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OiB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgICAgICAgICBjYXNlIEZv
cndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogewogICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBjYW4ganVzdCBnZXQgcmlkIG9mIHRoaXMgbm9kZSwgaWYgaXQgcmVmZXJlbmNlcyBh
IHBoYW50b20gYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNPS1RvT3B0aW1p
emUobV9ncmFwaFtub2RlLmNoaWxkMSgpXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxMjU4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDYgKzM0NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFN0cnVjdHVy
ZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgICAgICAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnQ6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkg
PT0gY2hpbGQxCiAgICAgICAgICAgICAgICAgICAgICYmIHN0cnVjdHVyZVNldC5jb250YWlucyhu
b2RlLnN0cnVjdHVyZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00
MTgsNiArNDE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25XYXRj
aHBvaW50OgorICAgICAgICAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNo
cG9pbnQ6CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUuc3RydWN0dXJlKCkgPT0gc3RydWN0dXJl
ICYmIG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMTcsNiArMTExOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludEVsaW1pbmF0aW9uKG5vZGUuc3RydWN0dXJlKCksIG5vZGUuY2hpbGQxKCkuaW5k
ZXgoKSkpCiAgICAgICAgICAgICAgICAgZWxpbWluYXRlKCk7CiAgICAgICAgICAgICBicmVhazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxMjU4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEs
NyArOTEsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
d291bGQgYmUgYSBncmVhdCBwbGFjZSB0byByZW1vdmUgQ2hlY2tTdHJ1Y3R1cmUncy4KKyAgICAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CisgICAgICAgICAgICBjYXNlIEZvcndhcmRDaGVj
a1N0cnVjdHVyZTogeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIHN0
cnVjdHVyZVZhbHVlID0KKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmU7CisgICAgICAgICAgICAgICAgaWYg
KHN0cnVjdHVyZVZhbHVlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZVZhbHVlLmhhc1NpbmdsZXRvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS5jb252ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludChzdHJ1Y3R1cmVWYWx1ZS5zaW5nbGV0b24oKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMSArMjQ1
LDE5IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKICAgICB9CiAg
ICAgCisgICAgdm9pZCBjb252ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IENoZWNrU3Ry
dWN0dXJlIHx8IG1fb3AgPT0gRm9yd2FyZENoZWNrU3RydWN0dXJlKTsKKyAgICAgICAgbV9vcElu
Zm8gPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpOworICAgICAgICBpZiAobV9v
cCA9PSBDaGVja1N0cnVjdHVyZSkKKyAgICAgICAgICAgIG1fb3AgPSBTdHJ1Y3R1cmVUcmFuc2l0
aW9uV2F0Y2hwb2ludDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vcCA9IEZvcndhcmRT
dHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDsKKyAgICB9CisgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9TdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludCgpCiAgICAgewotICAgICAgICBBU1NF
UlQobV9vcCA9PSBDaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3BJbmZvID0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlU2V0KCkuc2luZ2xldG9uU3RydWN0dXJlKCkpOwotICAg
ICAgICBtX29wID0gU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ7CisgICAgICAgIGNvbnZl
cnRUb1N0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZVNldCgpLnNpbmdsZXRv
blN0cnVjdHVyZSgpKTsKICAgICB9CiAgICAgCiAgICAgSlNDZWxsKiB3ZWFrQ29uc3RhbnQoKQpA
QCAtNjc1LDcgKzY4MywxMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBoYXNTdHJ1
Y3R1cmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3RydWN0dXJlVHJhbnNpdGlv
bldhdGNocG9pbnQ7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgorICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiB0aGUgb2JqZWN0J3Mgc3Ry
dWN0dXJlIGRvZXMgbm90IG5lZWQgdG8gYmUgcmVjaGVja2VkIGR1ZSB0byBzaWRlLWVmZmVjdGlu
ZyAqL1wKICAgICAvKiAoY2xvYmJlcmluZykgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oU3Ry
dWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhQdXRTdHJ1Y3R1cmUsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQaGFudG9tUHV0U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZURvZXNOb3RFeGl0
KSBcCiAgICAgbWFjcm8oQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlRG9lc05vdEV4aXQgfCBOb2RlUmVzdWx0U3RvcmFnZSkgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDEyNTgyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05OSw3ICs5OSw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsdWUgPSBleGVjLT5hcmd1bWVudChhcmd1bWVu
dCAtIDEpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5h
cmd1bWVudChhcmd1bWVudCkudmFsaWRhdGVGb3JFbnRyeSh2YWx1ZSkpIHsKKyAgICAgICAgaWYg
KCFlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkudmFsaWRhdGUodmFs
dWUpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKICAgICAgICAgICAgIGRhdGFMb2co
IiAgICBPU1IgZmFpbGVkIGJlY2F1c2UgYXJndW1lbnQgJXp1IGlzICVzLCBleHBlY3RlZCAiLCBh
cmd1bWVudCwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICBlbnRyeS0+bV9leHBl
Y3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkuZHVtcChXVEY6OmRhdGFGaWxlKCkpOwpAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLnZhbGlkYXRlRm9yRW50
cnkoZXhlYy0+cmVnaXN0ZXJzKClbbG9jYWxdLmpzVmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKCFl
bnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkudmFsaWRhdGUoZXhlYy0+cmVnaXN0
ZXJzKClbbG9jYWxdLmpzVmFsdWUoKSkpIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQog
ICAgICAgICAgICAgZGF0YUxvZygiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB2YXJpYWJsZSAlenUg
aXMgJXMsIGV4cGVjdGVkICIsIGxvY2FsLCBleGVjLT5yZWdpc3RlcnMoKVtsb2NhbF0uanNWYWx1
ZSgpLmRlc2NyaXB0aW9uKCkpOwogICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMu
bG9jYWwobG9jYWwpLmR1bXAoV1RGOjpkYXRhRmlsZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAxMjU4MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDYg
KzY3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
IGNhc2UgRm9yd2FyZENoZWNrU3RydWN0dXJlOgogICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50OgorICAgICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFB1
dFN0cnVjdHVyZToKICAgICAgICAgY2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ1OSw3ICszNDU5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgQ2hlY2tT
dHJ1Y3R1cmU6CiAgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgQWJz
dHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSk7Ci0gICAg
ICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKG5vZGUuc3RydWN0dXJlU2V0KCkp
CisgICAgICAgIGlmICh2YWx1ZS5tX2N1cnJlbnRLbm93blN0cnVjdHVyZS5pc1N1YnNldE9mKG5v
ZGUuc3RydWN0dXJlU2V0KCkpCiAgICAgICAgICAgICAmJiBpc0NlbGxTcGVjdWxhdGlvbih2YWx1
ZS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTM1MDAsOSArMzUwMCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0g
ICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogeworICAgIGNhc2UgU3RydWN0
dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnQ6IHsKICAgICAgICAgbV9qaXQuYWRkV2Vha1JlZmVyZW5jZShub2RlLnN0
cnVjdHVyZSgpKTsKLSAgICAgICAgbm9kZS5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldhdGNo
cG9pbnQoc3BlY3VsYXRpb25XYXRjaHBvaW50KEJhZENhY2hlKSk7CisgICAgICAgIG5vZGUuc3Ry
dWN0dXJlKCktPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KAorICAgICAgICAgICAgc3BlY3VsYXRp
b25XYXRjaHBvaW50V2l0aENvbmRpdGlvbmFsRGlyZWN0aW9uKAorICAgICAgICAgICAgICAgIEJh
ZENhY2hlLCBub2RlLm9wKCkgPT0gRm9yd2FyZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50
KSk7CiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMjU4
MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcwLDcgKzM0NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNl
IEZvcndhcmRDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKKyAgICAgICAgaWYgKHZhbHVl
Lm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkK
ICAgICAgICAgICAgICYmIGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKICAgICAg
ICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzUxMSw5ICszNTExLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIFN0cnVjdHVyZVRy
YW5zaXRpb25XYXRjaHBvaW50OiB7CisgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hw
b2ludDoKKyAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogewog
ICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNlKG5vZGUuc3RydWN0dXJlKCkpOwotICAgICAg
ICBub2RlLnN0cnVjdHVyZSgpLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzcGVjdWxhdGlvbldh
dGNocG9pbnQoQmFkQ2FjaGUpKTsKKyAgICAgICAgbm9kZS5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNp
dGlvbldhdGNocG9pbnQoCisgICAgICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRXaXRoQ29u
ZGl0aW9uYWxEaXJlY3Rpb24oCisgICAgICAgICAgICAgICAgQmFkQ2FjaGUsIG5vZGUub3AoKSA9
PSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQpKTsKIAogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEyNTgyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTEgKzExOSw4
IEBAIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSkkKICAgICByZXR1cm4g
c3BlY3VsYXRpb25XYXRjaHBvaW50KGtpbmQsIEpTVmFsdWVTb3VyY2UoKSwgTm9Ob2RlKTsKIH0K
IAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQg
a2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBWYWx1ZVJlY292ZXJ5JiB2YWx1
ZVJlY292ZXJ5KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydExhc3RPU1JFeGl0VG9Gb3J3
YXJkKGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7Ci0gICAgQVNTRVJUKGF0
KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7
Ci0gICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5kZXgsIGp1
bXBUb0ZhaWwpOwotICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBpZiAoIXZhbHVlUmVj
b3ZlcnkpIHsKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgcHJlY2VkaW5nIG5vZGUgd2FzIGEg
U2V0TG9jYWwgd2l0aCB0aGUgc2FtZSBjb2RlIG9yaWdpbi4KQEAgLTE3MSw2ICsxNjgsMjggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFNwZWN1bGF0aW9uQwogICAgICAgICBuZXcgVmFs
dWVSZWNvdmVyeU92ZXJyaWRlKHNldExvY2FsLT5sb2NhbCgpLCB2YWx1ZVJlY292ZXJ5KSk7CiB9
CiAKK0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3Bl
Y3VsYXRpb25XYXRjaHBvaW50KEV4aXRLaW5kIGtpbmQpCit7CisgICAgSnVtcFJlcGxhY2VtZW50
V2F0Y2hwb2ludCogcmVzdWx0ID0gc3BlY3VsYXRpb25XYXRjaHBvaW50KGtpbmQpOworICAgIGNv
bnZlcnRMYXN0T1NSRXhpdFRvRm9yd2FyZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0p1
bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbldhdGNo
cG9pbnRXaXRoQ29uZGl0aW9uYWxEaXJlY3Rpb24oRXhpdEtpbmQga2luZCwgYm9vbCBpc0Zvcndh
cmQpCit7CisgICAgSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludCogcmVzdWx0ID0gc3BlY3VsYXRp
b25XYXRjaHBvaW50KGtpbmQpOworICAgIGlmIChpc0ZvcndhcmQpCisgICAgICAgIGNvbnZlcnRM
YXN0T1NSRXhpdFRvRm9yd2FyZCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFs
dWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAganVtcFRvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkK
K3sKKyAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tp
bmdBcmd1bWVudFR5cGVzKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwganVtcFRvRmFpbCk7CisgICAgY29udmVydExhc3RPU1JFeGl0VG9Gb3J3
YXJkKHZhbHVlUmVjb3ZlcnkpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3Bl
Y3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2Us
IE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0Zh
aWwsIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7CiAgICAgQVNTRVJUKGF0
KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7
CkBAIC0yNTMsOCArMjcyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2xlYXJHZW5lcmF0aW9u
SW5mbwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlQXJyYXkoRWRnZSBlZGdlLCBHUFJS
ZWcgYmFzZVJlZykKIHsKICAgICBBYnN0cmFjdFZhbHVlJiBhcnJheVZhbHVlID0gbV9zdGF0ZS5m
b3JOb2RlKGVkZ2UpOwotICAgIGlmIChhcnJheVZhbHVlLm1fc3RydWN0dXJlLmhhc1NpbmdsZXRv
bigpCi0gICAgICAgICYmIGFycmF5VmFsdWUubV9zdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmNsYXNz
SW5mbygpID09ICZKU0FycmF5OjpzX2luZm8pCisgICAgaWYgKGFycmF5VmFsdWUubV9jdXJyZW50
S25vd25TdHJ1Y3R1cmUuaGFzU2luZ2xldG9uKCkKKyAgICAgICAgJiYgYXJyYXlWYWx1ZS5tX2N1
cnJlbnRLbm93blN0cnVjdHVyZS5zaW5nbGV0b24oKS0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6
OnNfaW5mbykKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkocmV2aXNpb24gMTI1ODIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTgxLDYgKzIxODEsMTAgQEAgcHVi
bGljOgogICAgIC8vIGFjdCBvZiBmaXJpbmcgYSB3YXRjaHBvaW50IGludmFsaWRhdGVzIGl0LiBT
bywgZnV0dXJlIHJlY29tcGlsYXRpb25zIHdpbGwgbm90CiAgICAgLy8gYXR0ZW1wdCB0byBzZXQg
dGhpcyB3YXRjaHBvaW50IGFnYWluLgogICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIHNw
ZWN1bGF0aW9uV2F0Y2hwb2ludChFeGl0S2luZCA9IFVuY291bnRhYmxlV2F0Y2hwb2ludCk7Cisg
ICAgCisgICAgLy8gSXQgaXMgZ2VuZXJhbGx5IGEgZ29vZCBpZGVhIHRvIG5vdCB1c2UgdGhpcyBk
aXJlY3RseS4KKyAgICB2b2lkIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2FyZChjb25zdCBWYWx1
ZVJlY292ZXJ5JiA9IFZhbHVlUmVjb3ZlcnkoKSk7CisgICAgCiAgICAgLy8gTm90ZTogbm90IHNw
ZWNpZnlpbmcgdGhlIHZhbHVlUmVjb3ZlcnkgYXJndW1lbnQgKGxlYXZpbmcgaXQgYXMgVmFsdWVS
ZWNvdmVyeSgpKSBpbXBsaWVzCiAgICAgLy8gdGhhdCB5b3UndmUgZW5zdXJlZCB0aGF0IHRoZXJl
IGV4aXN0cyBhIE1vdkhpbnQgcHJpb3IgdG8geW91ciB1c2Ugb2YgZm9yd2FyZFNwZWN1bGF0aW9u
Q2hlY2soKS4KICAgICB2b2lkIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kLCBKU1Zh
bHVlU291cmNlLCBOb2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIGNv
bnN0IFZhbHVlUmVjb3ZlcnkmID0gVmFsdWVSZWNvdmVyeSgpKTsKQEAgLTIxOTAsNiArMjE5NCwx
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihFeGl0
S2luZCwgSlNWYWx1ZVJlZ3MsIE5vZGVJbmRleCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihFeGl0S2luZCwgSlNWYWx1ZVJlZ3MsIEVkZ2UpOwogICAgIHZvaWQgdGVy
bWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb25XaXRoQ29uZGl0aW9uYWxEaXJlY3Rpb24oRXhpdEtp
bmQsIEpTVmFsdWVSZWdzLCBOb2RlSW5kZXgsIGJvb2wgaXNGb3J3YXJkKTsKKyAgICAvLyBJc3N1
ZSBhIGZvcndhcmQgc3BlY3VsYXRpb24gd2F0Y2hwb2ludCwgd2hpY2ggd2lsbCBleGl0IHRvIHRo
ZSBuZXh0IGluc3RydWN0aW9uIHJhdGhlcgorICAgIC8vIHRoYW4gdGhlIGN1cnJlbnQgb25lLgor
ICAgIEp1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQqIGZvcndhcmRTcGVjdWxhdGlvbldhdGNocG9p
bnQoRXhpdEtpbmQgPSBVbmNvdW50YWJsZVdhdGNocG9pbnQpOworICAgIEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQqIHNwZWN1bGF0aW9uV2F0Y2hwb2ludFdpdGhDb25kaXRpb25hbERpcmVjdGlv
bihFeGl0S2luZCwgYm9vbCBpc0ZvcndhcmQpOwogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlQXJy
YXkoRWRnZSBiYXNlRWRnZSwgR1BSUmVnIGJhc2VSZWcpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlX2gKKyNkZWZpbmUgREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZV9o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCisj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitj
bGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlKCkKKyAgICAgICAgOiBtX3N0cnVjdHVyZSgwKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICAKKyAgICBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChzZXQuc2l6ZSgpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIG1f
c3RydWN0dXJlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gc2V0WzBdOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1fc3Ry
dWN0dXJlID0gdG9wVmFsdWUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmUgPSAw
OworICAgIH0KKyAgICAKKyAgICB2b2lkIG1ha2VUb3AoKQorICAgIHsKKyAgICAgICAgbV9zdHJ1
Y3R1cmUgPSB0b3BWYWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSB0b3AoKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB2
YWx1ZTsKKyAgICAgICAgdmFsdWUubWFrZVRvcCgpOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgYWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFjb250YWlucyhzdHJ1Y3R1cmUpICYmICFpc1RvcCgpKTsKKyAgICAgICAg
aWYgKG1fc3RydWN0dXJlKQorICAgICAgICAgICAgbWFrZVRvcCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBhZGRBbGwoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmIChp
c1RvcCgpIHx8ICFvdGhlci5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChvdGhlci5zaXplKCkgPiAxKSB7CisgICAgICAgICAgICBtYWtlVG9wKCk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fc3RydWN0dXJl
KSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IG90aGVyWzBdOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fc3RydWN0dXJlID09IG90aGVyWzBd
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtYWtlVG9wKCk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sIGFkZEFsbChjb25zdCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGlmICghb3RoZXIubV9zdHJ1
Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChpc1RvcCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAob3RoZXIuaXNUb3AoKSkgewor
ICAgICAgICAgICAgbWFrZVRvcCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG1fc3RydWN0dXJlKSB7CisgICAgICAgICAgICBpZiAobV9zdHJ1Y3R1
cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgbWFrZVRvcCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICAgICAgbV9zdHJ1Y3R1cmUgPSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBpZiAobV9zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoaXNUb3AoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgaWYgKCFtX3N0cnVjdHVyZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBy
ZXR1cm4gb3RoZXIuY29udGFpbnMobV9zdHJ1Y3R1cmUpOworICAgIH0KKyAgICAKKyAgICBib29s
IGRvZXNOb3RDb250YWluQW55T3RoZXJUaGFuKFN0cnVjdHVyZSogc3RydWN0dXJlKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKGlzVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICghbV9zdHJ1Y3R1cmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlID09IHN0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc1N1cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
ICghb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChv
dGhlci5zaXplKCkgPiAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXJbMF07CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTdWJz
ZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmIChvdGhlci5pc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGlmIChpc1RvcCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAo
bV9zdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIGlmIChvdGhlci5tX3N0cnVjdHVyZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0
VmFsdWUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG90aGVyLmlzU3Vic2V0
T2YoKnRoaXMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N0cnVjdHVyZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmIChpc1RvcCgpKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKG90aGVyLnNpemUoKSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg
ICAgIG1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUg
PSBvdGhlclswXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG90aGVyLmNvbnRhaW5zKG1fc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fc3RydWN0
dXJlID0gMDsKKyAgICB9CisgICAgCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoaXNUb3AoKSkgeworICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUgPSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1
cmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChvdGhlci5pc1RvcCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3N0cnVjdHVyZSA9IDA7CisgICAgfQorICAgIAor
ICAgIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIG90aGVyKQorICAgIHsKKyAgICAgICAgaWYg
KCEob3RoZXIgJiBTcGVjQ2VsbCkpIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpc0NsZWFyT3JUb3Ao
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIShzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpICYgb3RoZXIpKQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUg
PSAwOworICAgIH0KKyAgICAKKyAgICBib29sIGlzQ2xlYXIoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICFtX3N0cnVjdHVyZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1RvcCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlID09IHRvcFZhbHVlKCk7IH0KKyAgICAKKyAgICBib29s
IGlzQ2xlYXJPclRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlIDw9IHRvcFZhbHVlKCk7
IH0KKyAgICBib29sIGlzTmVpdGhlckNsZWFyTm9yVG9wKCkgY29uc3QgeyByZXR1cm4gIWlzQ2xl
YXJPclRvcCgpOyB9CisgICAgCisgICAgc2l6ZV90IHNpemUoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFpc1RvcCgpKTsKKyAgICAgICAgcmV0dXJuICEhbV9zdHJ1Y3R1cmU7CisgICAg
fQorICAgIAorICAgIFN0cnVjdHVyZSogYXQoc2l6ZV90IGkpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQoIWlzVG9wKCkpOworICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKGksICFpKTsKKyAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlOworICAg
IH0KKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gYXQoaSk7CisgICAgfQorICAgIAorICAgIFN0cnVjdHVyZSogbGFz
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYXQoMCk7CisgICAgfQorICAgIAorICAg
IFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKGlzVG9wKCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY0NlbGw7CisgICAg
ICAgIGlmIChpc0NsZWFyKCkpCisgICAgICAgICAgICByZXR1cm4gU3BlY05vbmU7CisgICAgICAg
IHJldHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGhhc1NpbmdsZXRvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
aXNOZWl0aGVyQ2xlYXJOb3JUb3AoKTsKKyAgICB9CisgICAgCisgICAgU3RydWN0dXJlKiBzaW5n
bGV0b24oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTmVpdGhlckNsZWFyTm9yVG9w
KCkpOworICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmU7CisgICAgfQorICAgIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBkdW1wKEZJTEUqIG91dCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChpc1RvcCgpKSB7CisgICAgICAgICAgICBmcHJpbnRmKG91dCwgIlRPUCIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmcHJpbnRmKG91dCwg
IlsiKTsKKyAgICAgICAgaWYgKG1fc3RydWN0dXJlKQorICAgICAgICAgICAgZnByaW50ZihvdXQs
ICIlcCIsIG1fc3RydWN0dXJlKTsKKyAgICAgICAgZnByaW50ZihvdXQsICJdIik7CisgICAgfQor
Citwcml2YXRlOgorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHRvcFZhbHVlKCkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmUqPigxKTsgfQorICAgIAorICAgIC8vIFRoaXMgY2FuIG9u
bHkgcmVtZW1iZXIgb25lIHN0cnVjdHVyZSBhdCBhIHRpbWUuCisgICAgU3RydWN0dXJlKiBtX3N0
cnVjdHVyZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZV9oCisK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTI1ODIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZENo
ZWNrU3RydWN0dXJlOgorICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZFN0cnVjdHVyZVRyYW5z
aXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgICAgICAvLyBXZSBjdXJyZW50bHkgcmVs
eSBvbiB0aGUgZmFjdCB0aGF0IHdlJ3JlIHRoZSBvbmx5IG9uZXMgd2hvIHdvdWxkCiAgICAgICAg
ICAgICAgICAgICAgIC8vIGluc2VydCB0aGlzIG5vZGUuCiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwo=
</data>
<flag name="review"
          id="169248"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>