<?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>227471</bug_id>
          
          <creation_ts>2021-06-28 17:10:15 -0700</creation_ts>
          <short_desc>RemotePlayback must keep its media element alive when there is a pending activity</short_desc>
          <delta_ts>2021-07-03 09:54:45 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=227664</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773274</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-28 17:10:15 -0700</bug_when>
    <thetext>When there is a pending activity in RemotePlayback (e.g. watchAvailability has been called but not yet completed)
then it must keep its media element alive by adding it as an opaque root to GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773276</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-28 17:13:16 -0700</bug_when>
    <thetext>&lt;rdar://79694015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773278</commentid>
    <comment_count>2</comment_count>
      <attachid>432445</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-28 17:19:21 -0700</bug_when>
    <thetext>Created attachment 432445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773287</commentid>
    <comment_count>3</comment_count>
      <attachid>432445</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-28 17:57:07 -0700</bug_when>
    <thetext>Comment on attachment 432445
Patch

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

&gt; Source/WebCore/Modules/remoteplayback/RemotePlayback.idl:39
&gt; +    GenerateIsReachable=ImplOwnerNodeRoot,
&gt; +    GenerateAddOpaqueRoot=ownerNodeConcurrently,

At first glance, this strikes me as incorrect.

An opaque root should be the *root* of a tree of objects. For example, root(ownerNode()), which is usually the document, is an appropriate opaque root. 

In this case, even though our isReachable() function specifies root(ownerNode()), our addOpaqueRoot() function specifies just plain ownerNode(). This means that, if RemotePlaybackState is the last reference to a disconnected tree of nodes, or to a document, it will not cause the tree of nodes or document to be retained. Perhaps this is an edge case that is not super observable in practice. But I thought I&apos;d point it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773367</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-29 03:15:34 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Comment on attachment 432445 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432445&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/remoteplayback/RemotePlayback.idl:39
&gt; &gt; +    GenerateIsReachable=ImplOwnerNodeRoot,
&gt; &gt; +    GenerateAddOpaqueRoot=ownerNodeConcurrently,
&gt; 
&gt; At first glance, this strikes me as incorrect.
&gt; 
&gt; An opaque root should be the *root* of a tree of objects. For example,
&gt; root(ownerNode()), which is usually the document, is an appropriate opaque
&gt; root. 
&gt; 
&gt; In this case, even though our isReachable() function specifies
&gt; root(ownerNode()), our addOpaqueRoot() function specifies just plain
&gt; ownerNode(). This means that, if RemotePlaybackState is the last reference
&gt; to a disconnected tree of nodes, or to a document, it will not cause the
&gt; tree of nodes or document to be retained. Perhaps this is an edge case that
&gt; is not super observable in practice. But I thought I&apos;d point it out.

Yikes, you&apos;re right. Fixed it and added an extra assertion for this in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773368</commentid>
    <comment_count>5</comment_count>
      <attachid>432466</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-29 03:19:24 -0700</bug_when>
    <thetext>Created attachment 432466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773468</commentid>
    <comment_count>6</comment_count>
      <attachid>432466</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-29 11:11:08 -0700</bug_when>
    <thetext>Comment on attachment 432466
Patch

EWS failure looks real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773640</commentid>
    <comment_count>7</comment_count>
      <attachid>432560</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-29 17:38:37 -0700</bug_when>
    <thetext>Created attachment 432560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773927</commentid>
    <comment_count>8</comment_count>
      <attachid>432560</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-06-30 16:13:57 -0700</bug_when>
    <thetext>Comment on attachment 432560
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773943</commentid>
    <comment_count>9</comment_count>
      <attachid>432560</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-30 16:53:20 -0700</bug_when>
    <thetext>Comment on attachment 432560
Patch

Clearing flags on attachment: 432560

Committed r279443 (239299@main): &lt;https://commits.webkit.org/239299@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773944</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-06-30 16:53:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432445</attachid>
            <date>2021-06-28 17:19:21 -0700</date>
            <delta_ts>2021-06-29 03:19:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227471-20210628171920.patch</filename>
            <type>text/plain</type>
            <size>47739</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhNGI2ODgzYmM4M2Fk
MDEyNzkxM2U3MTRhYmFiMWE3M2U2Y2M1NC4uZjE3MDkxNTc3YzY5YTJiMjBiOGZlYWEyZWEwMTg1
ZWQ1ZGRhYmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA2LTI4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW90ZVBsYXliYWNrIG11
c3Qga2VlcCBpdHMgbWVkaWEgZWxlbWVudCBhbGl2ZSB3aGVuIHRoZXJlIGlzIGEgcGVuZGluZyBh
Y3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NDcxCisgICAgICAgIDxyZGFyOi8vNzk2OTQwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgdGhlIGJ1ZyB0aGF0IHRoZSBtZWRpYSBl
bGVtZW50J3MgSlMgd3JhcHBlciBjYW4gYmUgY29sbGVjdGVkIHdoaWxlIHRoZXJlIGlzIHN0aWxs
CisgICAgICAgIGEgcGVuZGluZyBhY3Rpdml0eSBmb3IgUmVtb3RlUGxheWJhY2suIEluIGZhY3Qs
IHRoZSBuZXdseSBhZGRlZCB0ZXN0IGRlbW9uc3RyYXRlcyB0aGF0CisgICAgICAgIHRoZSBtZWRp
YSBlbGVtZW50IGNhbiBiZSBkZWxldGVkIHdpdGhvdXQgdGhpcyBwYXRjaC4KKworICAgICAgICBU
aGlzIHBhdGNoIGFsc28gaW50cm9kdWNlcyBuZXcgZXh0ZW5kZWQgSURMIGludGVyZmFjZSBhdHRy
aWJ1dGUgR2VuZXJhdGVBZGRPcGFxdWVSb290CisgICAgICAgIHRvIG1ha2UgYWRkaW5nIGFuIG9w
YXF1ZSByb290IGFzIGEgcGFydCBvZiB2aXNpdENoaWxkcmVuIGVhc3kgaW4gdGhlIERPTSBjb2Rl
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0
eS1nYy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXli
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVBsYXliYWNrOjpvd25lck5vZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaDoK
KyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElu
c3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9y
cy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6YW5hbHl6ZUhl
YXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6Cisg
ICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9y
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRWxlbWVudEFsaXZlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6bWVkaWFFbGVtZW50Q291bnQpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIx
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2Nv
YV0gTGFzdCBmZXcgc2Vjb25kcyBvZiAnYXVkaW8vd2VibTsgY29kZWNzPXZvcmJpcycgYXBwZW5k
ZWQgdG8gYSBTYW1wbGVCdWZmZXIgYXJlIG5vdCBwbGF5ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKaW5kZXgg
MjdjYzA0ODQwYTdjYTRkNmVlMTk3NGZlMDA1MWM0YThiMzJiMTVkOC4uMWQyZDMxYzg3MjFhODdj
MTk5NzFkNTQ1NzRhMGZlN2RiZmEzYjJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKQEAgLTU4LDYgKzU4
LDExIEBAIFJlbW90ZVBsYXliYWNrOjp+UmVtb3RlUGxheWJhY2soKQogewogfQogCitOb2RlKiBS
ZW1vdGVQbGF5YmFjazo6b3duZXJOb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUVs
ZW1lbnQuZ2V0KCk7Cit9CisKIHZvaWQgUmVtb3RlUGxheWJhY2s6OndhdGNoQXZhaWxhYmlsaXR5
KFJlZjxSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gNi4yLjEuMyBHZXR0aW5nIHRo
ZSByZW1vdGUgcGxheWJhY2sgZGV2aWNlcyBhdmFpbGFiaWxpdHkgaW5mb3JtYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJh
Y2suaAppbmRleCAwNDU3MzhlMzg3MDZmMzliMjI3ZDFkOTY4OGExNmQyMmJhZDYxOGQ4Li5lNzEx
OGE3ZTFiYzMxZjYwNmUwZDBiMTJiMjgxMmFiZjE5YjM5ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oCkBAIC02
OCw2ICs2OCw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKKyAgICBOb2RlKiBvd25lck5vZGVDb25jdXJyZW50bHko
KSBjb25zdCB7IHJldHVybiBvd25lck5vZGUoKTsgfQorICAgIE5vZGUqIG93bmVyTm9kZSgpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbW90ZVBsYXliYWNrKEhUTUxNZWRpYUVs
ZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5
YmFjay9SZW1vdGVQbGF5YmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBs
YXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbAppbmRleCA4YmFlOWY5OTYxY2Y4ZDM0MTZhM2IwNDBl
MGQzYmQyNWI4OWQ2MGFlLi5iODEzNjVmY2JiMzgzZWM2OGZkMGNhODk1MjQzNDdmMDFjN2RjNjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90
ZVBsYXliYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNr
L1JlbW90ZVBsYXliYWNrLmlkbApAQCAtMzQsNyArMzQsOSBAQCBlbnVtIFJlbW90ZVBsYXliYWNr
U3RhdGUgewogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1SZW1vdGVQbGF5YmFjaywKLSAg
ICBFeHBvc2VkPVdpbmRvdworICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEdlbmVyYXRlSXNSZWFj
aGFibGU9SW1wbE93bmVyTm9kZVJvb3QsCisgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290PW93bmVy
Tm9kZUNvbmN1cnJlbnRseSwKIF0gaW50ZXJmYWNlIFJlbW90ZVBsYXliYWNrIDogRXZlbnRUYXJn
ZXQgewogICAgIFByb21pc2U8bG9uZz4gd2F0Y2hBdmFpbGFiaWxpdHkoUmVtb3RlUGxheWJhY2tB
dmFpbGFiaWxpdHlDYWxsYmFjayBjYWxsYmFjayk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNh
bmNlbFdhdGNoQXZhaWxhYmlsaXR5KG9wdGlvbmFsIGxvbmcgaWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1YzQwOTBh
ZmJhY2E5ZmJjMDdmZmExYjg3YmU5MDg0M2QxMTQ2ZDkyLi43NzE4NjI0YmExMDUyYTg3Zjc5NDg0
MjE2M2VlMGIyNWZlMGNkMmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMjE5NSw2ICsyMTk1LDcgQEAgc3ViIEluc3Rh
bmNlTmVlZHNWaXNpdENoaWxkcmVuCiAgICAgfQogCiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21NYXJrRnVuY3Rpb259OworICAgIHJldHVy
biAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRkT3BhcXVl
Um9vdH07CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UGx1Z2lufTsKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntSZXBvcnRFeHRyYU1lbW9yeUNvc3R9OwogICAgIHJldHVybiAwOwpAQCAtNDg4Nyw2ICs0ODg4
LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkucGx1Z2luUmVwbGFjZW1lbnRTY3Jp
cHRPYmplY3QoKS52aXNpdCh2aXNpdG9yKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIjZW5kaWZcbiIpOwogICAgICAgICB9CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntHZW5lcmF0ZUFkZE9wYXF1ZVJvb3R9KSB7CisgICAgICAgICAg
ICBteSAkZnVuY3Rpb25OYW1lID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2Vu
ZXJhdGVBZGRPcGFxdWVSb290fTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT53cmFwcGVkKCkuJHtmdW5jdGlvbk5h
bWV9KCkpO1xuIik7CisgICAgICAgIH0KICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1JlcG9ydEV4dHJhTWVtb3J5Q29zdH0pIHsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNP
YmplY3QtPndyYXBwZWQoKS5tZW1vcnlDb3N0KCkpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVwb3J0RXh0ZXJuYWxNZW1vcnlDb3N0fSkg
ezsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
Lmpzb24KaW5kZXggZGYwMjBlMGQ5MjYyZmVjNjk2ZTgwNjM1ZDRlNWMxYzY5OTE3ZjZlYi4uZDRi
YjQ5MWYwYjMyMmIxOTVkZDliNGNhOTYxZTZiYmYyOGE2N2I3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTIyMyw2ICsy
MjMsMTAgQEAKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAog
ICAgICAgICAgICAgInZhbHVlcyI6IFsiIiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCIsICJJbXBsQ2FudmFzQmFzZSIsICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290
IiwgIkltcGxPd25lck5vZGVSb290IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJl
YWNoYWJsZUZyb21ET01XaW5kb3ciLCAiUmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCiAgICAgICAg
IH0sCisgICAgICAgICJHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioi
XQorICAgICAgICB9LAogICAgICAgICAiR2xvYmFsIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rl
c3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAppbmRleCBjNGE2YjY0ZDdk
MDNmNWM5NmUzOTA2NzFhZTRjOGExNzFlOGE3ZmZmLi4xZjhhMjAzNzkyZTQwM2M4YmUzZjFlNjk0
OGZhMjc5YzM3NGY5NzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9y
cy5pZGwKQEAgLTEzLDYgKzEzLDcgQEAgcGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVj
dCB7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdEV2
ZW50Q29uc3RydWN0b3I7CiAgICAgYXR0cmlidXRlIFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
IFRlc3RFdmVudFRhcmdldDsKICAgICBhdHRyaWJ1dGUgVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9y
IFRlc3RFeGNlcHRpb247CisgICAgYXR0cmlidXRlIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RD
b25zdHJ1Y3RvciBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OwogICAgIGF0dHJpYnV0ZSBUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOwog
ICAgIGF0dHJpYnV0ZSBUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IgVGVzdEdsb2JhbE9iamVj
dDsKICAgICBhdHRyaWJ1dGUgVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
ciBUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0ZTZhYWY3NTUyOWJmYjczNThjMDBh
NjQ0MjNiNmYxYWJhYTNlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCkBAIC0w
LDAgKzEsMjgzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaCIKKworI2luY2x1ZGUg
IkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1
ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNv
bnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9yTWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Vic3BhY2VJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMK
Kworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290Q29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290X3NvbWVBdHRyaWJ1dGUpOworCitjbGFzcyBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdFByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFz
ZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290UHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQ
cm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01D
b25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdD47CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rvcikg
fTsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
eworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9
CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlVGFibGVWYWx1ZXNb
XSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInNvbWVBdHRyaWJ1dGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290X3NvbWVB
dHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2
bSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjppbmZvKCksIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklO
R19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnNfaW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCkgfTsKKworSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290OjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290PiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdD4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3Zv
aWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9N
T2JqZWN0LCBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMg
bm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlv
biBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCog
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVj
dCogSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Pih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNW
YWx1ZSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
Y29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3IsIERP
TUNvbnN0cnVjdG9ySUQ6OlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+KHZtLCAqanNDYXN0PGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAg
IEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6fkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCgpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+
Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QmIHRoaXNPYmplY3Qp
Cit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5zb21lQXR0cmlidXRlKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdD46OmdldDxqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Rf
c29tZUF0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK0pTQzo6
SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6c3Vic3BhY2VGb3JJbXBs
KEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnRE
YXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNl
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJs
ZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290OjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdD4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZt
LmhlYXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290KTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNl
Rm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElT
T19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0KCk7CitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xv
Z2ljYWwtY29tcGFyZSIpCisgICAgdm9pZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6
OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRD
b25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzOworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWlu
dCAhPSBqc0NlbGxWaXNpdE91dHB1dENvbnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0
cHV0Q29uc3RyYWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5E
CitJR05PUkVfV0FSTklOR1NfRU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBWaXNpdG9yPgordm9pZCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0
Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRv
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3Iu
YWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT53cmFwcGVkKCkub3duZXJPYmplY3RDb25jdXJyZW50
bHkoKSk7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QpOworCit2b2lkIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6YW5hbHl6ZUhlYXAo
SlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Kj4oY2VsbCk7CisgICAg
YW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBw
ZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAg
ICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFu
YWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBBYnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
eworICAgIGF1dG8qIGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IHN0YXRpY19jYXN0PEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC0+
d3JhcHBlZCgpLCBqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworfQorCisjaWYgRU5BQkxF
KEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlm
aWVyKCI/P183VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9
CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290RVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUg
dG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+JiYgaW1wbCkKK3sK
KworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxW
VGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9S
TShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/
P183VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdEBXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3RFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5
bW9ycGhpYzxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Pjo6dmFsdWUsICJUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290IGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0
aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisg
ICAgLy8gVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdCBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAv
LyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0
aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRl
ZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVj
dGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290PihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQor
CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFs
dWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI2NjhkYmEwYzA0ZTdm
MTZjOWZhY2FjMzkyZGM5M2Y5MDEyZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qu
aApAQCAtMCwwICsxLDk1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA6IHB1Ymxp
YyBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4geworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD47Cisg
ICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCogY3JlYXRlKEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290PiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmpl
Y3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOworICAgIHN0YXRpYyBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KiB0b1dyYXBwZWQoSlND
OjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2Vs
bCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFy
cmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpT
Qzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2Rl
ID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9Cisg
ICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7
CisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVI
ZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4mJik7CisKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dE93bmVyIGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIq
KikgZmluYWw7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KSBmaW5hbDsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qq
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZv
aWQqIHdyYXBwZXJLZXkoVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCogd3JhcHBhYmxlT2JqZWN0
KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7
IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiYmKTsKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQ
dHI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9K
U05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVs
ZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpT
RE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB7Cisg
ICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OworICAg
IHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAK
aW5kZXggZWY2OTg4ZjUwOTY0OTAxNWE1OGUxZDZlMjVmZDFkN2RkMmM0ZmRhZC4uYjU3OTgxMDE1
YzdjZmI1MWNlYTJkMDk0NjRkZTgyMDk5OGVhOWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU1Rlc3RFeGNl
cHRpb24uaCIKKyNpbmNsdWRlICJKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaCIKICNpbmNs
dWRlICJKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0R2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIgpA
QCAtMTgzLDYgKzE4NCw3IEBAIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvCiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmpl
Y3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVD
TEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpOwpAQCAtMjQxLDEzICsyNDMsMTMgQEAgdXNpbmcgSlNU
ZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZTxKU1Rlc3QKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewor
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRh
YmxlSW5kZXhbMjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDAsIC0xIH0sCisgICAg
eyA0MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7IDQsIC0x
IH0sCi0gICAgeyA0NCwgLTEgfSwKKyAgICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjU1LDE1ICsyNTcsMTUgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxl
SW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDU0LCAtMSB9LAorICAgIHsgNTUsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgNDgsIC0xIH0sCisgICAgeyA0OSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgNjMsIC0xIH0sCisgICAgeyA2NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTI3NywxNCArMjc5LDE0IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RU
YWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAzNCwgLTEgfSwKKyAgICB7IDM1LCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDY2LCAtMSB9LAotICAgIHsgMTMsIDI2MCB9LAorICAg
IHsgNjcsIC0xIH0sCisgICAgeyAxMywgMjYxIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0yOTIsMTEgKzI5NCwxMSBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsy
NjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMzgsIC0xIH0sCi0gICAgeyAxOSwgMjU3IH0sCisgICAgeyAzOSwgLTEgfSwKKyAg
ICB7IDIwLCAyNTggfSwKICAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ1
LCAtMSB9LAorICAgIHsgNDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zMDUsMTQgKzMwNywxNCBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0g
ewogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMzYsIC0xIH0sCisgICAgeyAzNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIxLCAyNjUgfSwKKyAgICB7IDIyLCAyNjYgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMyNiwy
NyArMzI4LDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RH
bG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyOSwgLTEgfSwKLSAgICB7IDU2LCAtMSB9
LAorICAgIHsgMzAsIC0xIH0sCisgICAgeyA1NywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDksIDI1NiB9LAorICAgIHsgOSwgMjU3IH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDU4LCAtMSB9LAotICAgIHsgMTgsIC0xIH0sCisgICAg
eyA1OSwgLTEgfSwKKyAgICB7IDE5LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMzUsIC0xIH0sCisgICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1NCwxNCArMzU2LDE0
IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMywgLTEgfSwKKyAgICB7IDI0LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAyLCAtMSB9LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAzOCwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDIwLCAtMSB9LAorICAgIHsgMjEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzQsMTUgKzM3NiwxNSBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsy
NjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMjcsIC0xIH0sCisgICAgeyAyOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgNDIsIC0xIH0sCisgICAgeyA0MywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyA1MywgLTEgfSwKKyAgICB7IDU0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzkwLDcgKzM5Miw3IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4
WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyA0NywgLTEgfSwKKyAgICB7IDQ4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDEwLCAtMSB9LApAQCAtNDAwLDEyICs0MDIsMTIgQEAgc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxl
SW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDY0LCAtMSB9LAorICAgIHsgNjUsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNiwgLTEgfSwKLSAg
ICB7IDMxLCAtMSB9LAorICAgIHsgMjcsIC0xIH0sCisgICAgeyAzMiwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxNSw5ICs0MTcs
OSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2Jq
ZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTUsIDI1OSB9LAorICAgIHsgMTUsIDI2MCB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyA1OSwgLTEgfSwKKyAgICB7IDYwLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDI2LDExICs0Mjgs
MTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9i
amVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMzLCAyNjYgfSwKKyAgICB7IDM0LCAyNjcgfSwKICAg
ICB7IC0xLCAtMSB9LAotICAgIHsgMTYsIC0xIH0sCisgICAgeyAxNiwgMjU2IH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDYyLCAtMSB9LAorICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NDksNyArNDUxLDcgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRh
YmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDQ2LCAtMSB9LAorICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NjIsNyArNDY0LDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVj
dFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDU3LCAtMSB9LAorICAgIHsgNTgsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ3MSwxMCArNDcz
LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxP
YmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0OSwgMjYzIH0sCi0gICAgeyA3LCAyNjIgfSwKKyAg
ICB7IDUwLCAyNjQgfSwKKyAgICB7IDcsIDI2MyB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2
MCwgLTEgfSwKKyAgICB7IDYxLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDgzLDMyICs0ODUsMzMgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9
IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMTQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAg
ICB7IDI0LCAtMSB9LAorICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAotICAgIHsgMzAsIC0xIH0sCisgICAgeyAzMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCi0gICAg
eyA1MSwgLTEgfSwKLSAgICB7IC0xLCAtMSB9LAogICAgIHsgNTIsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDUzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjIsIDI1OCB9LAotICAgIHsgMjUsIDI2NCB9LAotICAg
IHsgMjgsIDI2MSB9LAotICAgIHsgMzIsIC0xIH0sCi0gICAgeyAzOSwgLTEgfSwKLSAgICB7IDQx
LCAtMSB9LAotICAgIHsgNDMsIC0xIH0sCi0gICAgeyA1MCwgLTEgfSwKLSAgICB7IDU1LCAtMSB9
LAotICAgIHsgNjEsIC0xIH0sCi0gICAgeyA2NSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMTcsIC0xIH0sCisgICAgeyAyMywgMjU5IH0sCisgICAgeyAyNiwgMjY1IH0sCisgICAgeyAy
OSwgMjYyIH0sCisgICAgeyAzMywgLTEgfSwKKyAgICB7IDQwLCAtMSB9LAorICAgIHsgNDIsIC0x
IH0sCisgICAgeyA0NCwgLTEgfSwKKyAgICB7IDUxLCAtMSB9LAorICAgIHsgNTYsIC0xIH0sCisg
ICAgeyA2MiwgLTEgfSwKKyAgICB7IDY2LCAtMSB9LAogfTsKIAogCkBAIC01MzksNiArNTQyLDcg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFs
dWVzW10gPQogICAgIHsgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJU
ZXN0RXZlbnRUYXJnZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RXZlbnRUYXJn
ZXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RHbG9iYWxPYmplY3QiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCiAgICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LApAQCAtNTk5LDcgKzYwMyw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KICAgICB7ICJyZWd1bGFyT3BlcmF0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uX3JlZ3VsYXJPcGVyYXRpb24pLCAoaW50
cHRyX3QpICgxKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlID0geyA2NywgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8o
KSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxl
SW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUg
PSB7IDY4LCAyNTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9i
YWxPYmplY3RUYWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9OwogLyog
SGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC0xMDE3
LDYgKzEwMjEsMTcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IsIChKU0dsb2JhbE8KICAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV4
Y2VwdGlvbkNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
Q29uc3RydWN0b3IsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKaW5kZXggOTg0
OWIxMjMyODUzODdhOGY5N2IwOWU0NjM0M2Y5ZDM4Nzk4ZTZlYS4uMjhkNjc3MWE5YTliMjM2OTEx
OWZkY2JjNTM4N2M4YjBiZTgyNzE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKQEAgLTExMCw2ICsxMTAsOSBAQCBXZWJET01UZXN0RXZlbnRUYXJnZXQuaDoKIEpTVGVzdEV4
Y2VwdGlvbi5oOiAKIERPTVRlc3RFeGNlcHRpb24uaDogCiBXZWJET01UZXN0RXhjZXB0aW9uLmg6
IAorSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Lmg6IAorRE9NVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdC5oOiAKK1dlYkRPTVRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDogCiBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmg6IAogRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDogCiBX
ZWJET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjcyODcwYWVjY2U3NmM4NzA2YjI0ZTVlMWFkM2M2YWUw
ZDJjMzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIEV4cG9z
ZWQ9VGVzdEdsb2JhbE9iamVjdCwKKyAgICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q9b3duZXJPYmpl
Y3RDb25jdXJyZW50bHkKK10gaW50ZXJmYWNlIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qgewor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc29tZUF0dHJpYnV0ZTsKK307CisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1ZjhjNzUyYWFlODc0NzhhNWM2OWQ3
ODM5NTk3YzQ5OTlmMmUyMzIwLi4yMDVmNTc5OGM2NDMwZGFiNDhlODFlMzQ5YjMxYTllYzY2MTk4
YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNzA2LDYgKzI3MDYs
MTEgQEAgdWludDY0X3QgSW50ZXJuYWxzOjplbGVtZW50SWRlbnRpZmllcihFbGVtZW50JiBlbGVt
ZW50KSBjb25zdAogICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuaWRlbnRpZmllckZvckVs
ZW1lbnQoZWxlbWVudCkudG9VSW50NjQoKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6OmlzRWxlbWVu
dEFsaXZlKERvY3VtZW50JiBkb2N1bWVudCwgdWludDY0X3QgZWxlbWVudElkZW50aWZpZXIpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50LnNlYXJjaEZvckVsZW1lbnRCeUlkZW50aWZpZXIo
bWFrZU9iamVjdElkZW50aWZpZXI8RWxlbWVudElkZW50aWZpZXJUeXBlPihlbGVtZW50SWRlbnRp
ZmllcikpOworfQorCiB1aW50NjRfdCBJbnRlcm5hbHM6OmZyYW1lSWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVu
dC5wYWdlKCkpCkBAIC0zODY1LDYgKzM4NzAsMTEgQEAgU3RyaW5nIEludGVybmFsczo6Z2V0SW1h
Z2VTb3VyY2VVUkwoRWxlbWVudCYgZWxlbWVudCkKIAogI2lmIEVOQUJMRShWSURFTykKIAordW5z
aWduZWQgSW50ZXJuYWxzOjptZWRpYUVsZW1lbnRDb3VudCgpCit7CisgICAgcmV0dXJuIEhUTUxN
ZWRpYUVsZW1lbnQ6OmFsbE1lZGlhRWxlbWVudHMoKS5zaXplKCk7Cit9CisKIFZlY3RvcjxTdHJp
bmc+IEludGVybmFsczo6bWVkaWFSZXNwb25zZVNvdXJjZXMoSFRNTE1lZGlhRWxlbWVudCYgbWVk
aWEpCiB7CiAgICAgYXV0byogcmVzb3VyY2VMb2FkZXIgPSBtZWRpYS5sYXN0TWVkaWFSZXNvdXJj
ZUxvYWRlckZvclRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDEz
NzI5NTk4NTUyM2Y3ZDJmODMxYWVmMmU4MzM2MDAzZWNlOTg2N2YuLmQ5MTkzYjM5OTQ4NzVmZGFl
YjIzM2VlNzRjNzYwNzRkNGYwMjFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtNDg0LDYgKzQ4NCw4IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBzdG9yYWdlQXJlYU1hcENv
dW50KCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBlbGVtZW50SWRlbnRpZmllcihFbGVtZW50Jikg
Y29uc3Q7CisgICAgYm9vbCBpc0VsZW1lbnRBbGl2ZShEb2N1bWVudCYsIHVpbnQ2NF90IGRvY3Vt
ZW50SWRlbnRpZmllcikgY29uc3Q7CisKICAgICB1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmKSBjb25zdDsKICAgICB1aW50NjRfdCBwYWdlSWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYpIGNvbnN0OwogCkBAIC02NDQsNiArNjQ2LDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBnZXRJbWFnZVNvdXJjZVVSTChFbGVtZW50Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCisgICAg
dW5zaWduZWQgbWVkaWFFbGVtZW50Q291bnQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYVJl
c3BvbnNlU291cmNlcyhIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gbWVk
aWFSZXNwb25zZUNvbnRlbnRSYW5nZXMoSFRNTE1lZGlhRWxlbWVudCYpOwogICAgIHZvaWQgc2lt
dWxhdGVBdWRpb0ludGVycnVwdGlvbihIVE1MTWVkaWFFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggMjZlYTE2ZmQ3ZTFjMWE5NDZmMTk1ZTcyMmQwM2JhY2M4
M2I3YjMyYS4uOWUzNjYyYmIwZjE2NjkyYmYzNmVjMzdiMzAzOTQwYTFkM2Y4MGJlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODc1LDYgKzg3NSw3IEBAIGVudW0gVHJl
ZVR5cGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc3RvcmFn
ZUFyZWFNYXBDb3VudDsKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBlbGVtZW50SWRlbnRpZmll
cihFbGVtZW50IGVsZW1lbnQpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0gYm9vbGVhbiBpc0Vs
ZW1lbnRBbGl2ZSh1bnNpZ25lZCBsb25nIGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgZnJhbWVJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKICAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgcGFnZUlkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggN2E5ZDE2Mzc4MmM4MzljYjc1YjUxN2Q1M2UwNGRkYWViMjdmYTBkNS4uYTYwZTdh
NDRmMmU2YmRhMjU1Y2ZkYmUyODllYjlhMDhiMzkzNjMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIxLTA2LTI4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW90ZVBsYXliYWNrIG11c3Qga2VlcCBpdHMgbWVkaWEgZWxlbWVudCBhbGl2ZSB3aGVuIHRo
ZXJlIGlzIGEgcGVuZGluZyBhY3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NDcxCisgICAgICAgIDxyZGFyOi8vNzk2OTQwMTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBHQyB0
ZXN0LgorCisgICAgICAgICogbWVkaWEvcmVtb3RlcGxheWJhY2std2F0Y2gtYXZhaWxhYmlsaXR5
LWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVtb3RlcGxheWJhY2st
d2F0Y2gtYXZhaWxhYmlsaXR5LWdjLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA2LTI0ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTGFzdCBmZXcgc2Vj
b25kcyBvZiAnYXVkaW8vd2VibTsgY29kZWNzPXZvcmJpcycgYXBwZW5kZWQgdG8gYSBTYW1wbGVC
dWZmZXIgYXJlIG5vdCBwbGF5ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlbW90
ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRjaC1hdmFpbGFiaWxpdHktZ2MtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdlNzdlZTExNjQ2ODFhNzg0NTc5YWEyZmE0OTU5Y2E0MzdhYmRjYWMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRjaC1h
dmFpbGFiaWxpdHktZ2MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0
aGF0IGNhbGxpbmcgd2F0Y2hBdmFpbGFiaWxpdHkgd2lsbCBrZWVwIHRoZSBtZWRpYSBlbGVtZW50
IGFsaXZlIHVudGlsIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQuIFlvdSBzaG91bGQgc2VlIFBBU1Mg
YmVsb3c6CisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlbW90ZXBsYXli
YWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3Rl
cGxheWJhY2std2F0Y2gtYXZhaWxhYmlsaXR5LWdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZhN2E3NWEx
NjdkMjhlODU3M2IzNmRhYzY3MjQyMzdlMWI1MDZhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy5odG1sCkBA
IC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+
CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCitsZXQgZWxlbWVudElkZW50
aWZpZXIgPSBudWxsOworbGV0IGl0ZXJhdGlvbkNvdW50ID0gMjA7CitsZXQgd2F0Y2hkb2dUaW1l
ciA9IG51bGw7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghaXRlcmF0aW9uQ291bnQp
CisgICAgICAgIHJldHVybiBlbmRUZXN0KCdQQVNTJyk7CisKKyAgICBpbnRlcm5hbHMucXVldWVU
YXNrKCdET01NYW5pcHVsYXRpb24nLCAoKSA9PiB7CisgICAgICAgIEdDQ29udHJvbGxlci5jb2xs
ZWN0KCk7CisgICAgfSk7CisKKyAgICAoKCkgPT4geworICAgICAgICBjb25zdCBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgZWxlbWVudElkZW50aWZp
ZXIgPSBpbnRlcm5hbHMuZWxlbWVudElkZW50aWZpZXIoZWxlbWVudCk7CisgICAgICAgIGVsZW1l
bnQucmVtb3RlLndhdGNoQXZhaWxhYmlsaXR5KGNoZWNrRWxlbWVudCk7CisgICAgICAgIHdhdGNo
ZG9nVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGVuZFRlc3QoJ0ZBSUwgLSB0aGUgY2FsbGJhY2sg
d2FzIG5ldmVyIGNhbGxlZCcpLCAzMDAwKTsKKyAgICB9KSgpOworCisgICAgR0NDb250cm9sbGVy
LmNvbGxlY3QoKTsKK30KKworZnVuY3Rpb24gY2hlY2tFbGVtZW50KCkKK3sKKyAgICBjbGVhclRp
bWVvdXQod2F0Y2hkb2dUaW1lcik7CisKKyAgICBpZiAoIWludGVybmFscy5pc0VsZW1lbnRBbGl2
ZShlbGVtZW50SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBlbmRUZXN0KCdGQUlMJyk7CisK
KyAgICAtLWl0ZXJhdGlvbkNvdW50OworICAgIHNldFRpbWVvdXQoKCkgPT4gcnVuVGVzdCgpLCAw
KTsKK30KKworZnVuY3Rpb24gZW5kVGVzdChzdGF0dXMpCit7CisgICAgcmVzdWx0LnRleHRDb250
ZW50ID0gc3RhdHVzOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSdydW5UZXN0KCknPgorPHA+VGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgd2F0Y2hBdmFpbGFiaWxp
dHkgd2lsbCBrZWVwIHRoZSBtZWRpYSBlbGVtZW50IGFsaXZlIHVudGlsIHRoZSBjYWxsYmFjayBp
cyBjYWxsZWQuIFlvdSBzaG91bGQgc2VlIFBBU1MgYmVsb3c6PC9wPgorPHAgaWQ9InJlc3VsdCI+
UnVubmluZzwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432466</attachid>
            <date>2021-06-29 03:19:24 -0700</date>
            <delta_ts>2021-06-29 17:38:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227471-20210629031923.patch</filename>
            <type>text/plain</type>
            <size>48171</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhNGI2ODgzYmM4M2Fk
MDEyNzkxM2U3MTRhYmFiMWE3M2U2Y2M1NC4uZjE3MDkxNTc3YzY5YTJiMjBiOGZlYWEyZWEwMTg1
ZWQ1ZGRhYmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA2LTI4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW90ZVBsYXliYWNrIG11
c3Qga2VlcCBpdHMgbWVkaWEgZWxlbWVudCBhbGl2ZSB3aGVuIHRoZXJlIGlzIGEgcGVuZGluZyBh
Y3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NDcxCisgICAgICAgIDxyZGFyOi8vNzk2OTQwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgdGhlIGJ1ZyB0aGF0IHRoZSBtZWRpYSBl
bGVtZW50J3MgSlMgd3JhcHBlciBjYW4gYmUgY29sbGVjdGVkIHdoaWxlIHRoZXJlIGlzIHN0aWxs
CisgICAgICAgIGEgcGVuZGluZyBhY3Rpdml0eSBmb3IgUmVtb3RlUGxheWJhY2suIEluIGZhY3Qs
IHRoZSBuZXdseSBhZGRlZCB0ZXN0IGRlbW9uc3RyYXRlcyB0aGF0CisgICAgICAgIHRoZSBtZWRp
YSBlbGVtZW50IGNhbiBiZSBkZWxldGVkIHdpdGhvdXQgdGhpcyBwYXRjaC4KKworICAgICAgICBU
aGlzIHBhdGNoIGFsc28gaW50cm9kdWNlcyBuZXcgZXh0ZW5kZWQgSURMIGludGVyZmFjZSBhdHRy
aWJ1dGUgR2VuZXJhdGVBZGRPcGFxdWVSb290CisgICAgICAgIHRvIG1ha2UgYWRkaW5nIGFuIG9w
YXF1ZSByb290IGFzIGEgcGFydCBvZiB2aXNpdENoaWxkcmVuIGVhc3kgaW4gdGhlIERPTSBjb2Rl
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0
eS1nYy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXli
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVBsYXliYWNrOjpvd25lck5vZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaDoK
KyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElu
c3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9y
cy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6YW5hbHl6ZUhl
YXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6Cisg
ICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9y
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRWxlbWVudEFsaXZlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6bWVkaWFFbGVtZW50Q291bnQpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIx
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2Nv
YV0gTGFzdCBmZXcgc2Vjb25kcyBvZiAnYXVkaW8vd2VibTsgY29kZWNzPXZvcmJpcycgYXBwZW5k
ZWQgdG8gYSBTYW1wbGVCdWZmZXIgYXJlIG5vdCBwbGF5ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKaW5kZXgg
MjdjYzA0ODQwYTdjYTRkNmVlMTk3NGZlMDA1MWM0YThiMzJiMTVkOC4uNjUxMmEyZWJhY2QyMjQz
NWRmYjEzZDIzMjk5YjZiNjMwZDJiZjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKQEAgLTU4LDYgKzU4
LDE2IEBAIFJlbW90ZVBsYXliYWNrOjp+UmVtb3RlUGxheWJhY2soKQogewogfQogCit2b2lkKiBS
ZW1vdGVQbGF5YmFjazo6b3BhcXVlUm9vdENvbmN1cnJlbnRseSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbWVkaWFFbGVtZW50LT5vcGFxdWVSb290KCk7Cit9CisKK05vZGUqIFJlbW90ZVBsYXli
YWNrOjpvd25lck5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQo
KTsKK30KKwogdm9pZCBSZW1vdGVQbGF5YmFjazo6d2F0Y2hBdmFpbGFiaWxpdHkoUmVmPFJlbW90
ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2s+JiYgY2FsbGJhY2ssIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICAvLyA2LjIuMS4zIEdldHRpbmcgdGhlIHJlbW90ZSBw
bGF5YmFjayBkZXZpY2VzIGF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oCmluZGV4
IDA0NTczOGUzODcwNmYzOWIyMjdkMWQ5Njg4YTE2ZDIyYmFkNjE4ZDguLmI4ZDU0YjJmZjYzN2I3
NjAxYWJkYWQ2Y2I4YTUxM2QwYmEzNTA0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmgKQEAgLTY4LDYgKzY4LDkg
QEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKIAorICAgIHZvaWQqIG9wYXF1ZVJvb3RDb25jdXJyZW50bHkoKSBjb25zdDsK
KyAgICBOb2RlKiBvd25lck5vZGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBS
ZW1vdGVQbGF5YmFjayhIVE1MTWVkaWFFbGVtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5pZGwKaW5kZXgg
OGJhZTlmOTk2MWNmOGQzNDE2YTNiMDQwZTBkM2JkMjViODlkNjBhZS4uYmM2YThjY2NjY2NmZmU1
YTZiYzg2OGI1OTEwNDdmNWRjOTk2YjI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5pZGwKQEAgLTM0LDcgKzM0
LDkgQEAgZW51bSBSZW1vdGVQbGF5YmFja1N0YXRlIHsKICAgICBBY3RpdmVET01PYmplY3QsCiAg
ICAgQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VULAogICAgIEVuYWJsZWRCeVNl
dHRpbmc9UmVtb3RlUGxheWJhY2ssCi0gICAgRXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdp
bmRvdywKKyAgICBHZW5lcmF0ZUlzUmVhY2hhYmxlPUltcGxPd25lck5vZGVSb290LAorICAgIEdl
bmVyYXRlQWRkT3BhcXVlUm9vdD1vcGFxdWVSb290Q29uY3VycmVudGx5CiBdIGludGVyZmFjZSBS
ZW1vdGVQbGF5YmFjayA6IEV2ZW50VGFyZ2V0IHsKICAgICBQcm9taXNlPGxvbmc+IHdhdGNoQXZh
aWxhYmlsaXR5KFJlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2sgY2FsbGJhY2spOwog
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBjYW5jZWxXYXRjaEF2YWlsYWJpbGl0eShvcHRpb25hbCBs
b25nIGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggNWM0MDkwYWZiYWNhOWZiYzA3ZmZhMWI4N2JlOTA4NDNkMTE0NmQ5
Mi4uNzcxODYyNGJhMTA1MmE4N2Y3OTQ4NDIxNjNlZTBiMjVmZTBjZDJkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTIx
OTUsNiArMjE5NSw3IEBAIHN1YiBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbgogICAgIH0KIAog
ICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTQ3VzdG9t
TWFya0Z1bmN0aW9ufTsKKyAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntHZW5lcmF0ZUFkZE9wYXF1ZVJvb3R9OwogICAgIHJldHVybiAxIGlmICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1BsdWdpbn07CiAgICAgcmV0dXJuIDEgaWYgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVwb3J0RXh0cmFNZW1vcnlDb3N0fTsKICAgICBy
ZXR1cm4gMDsKQEAgLTQ4ODcsNiArNDg4OCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLnBsdWdpblJlcGxhY2VtZW50U2NyaXB0T2JqZWN0KCkudmlzaXQodmlzaXRvcik7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKICAgICAgICAgfQor
ICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2VuZXJhdGVBZGRP
cGFxdWVSb290fSkgeworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRkT3BhcXVlUm9vdH07CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVj
dC0+d3JhcHBlZCgpLiR7ZnVuY3Rpb25OYW1lfSgpKTtcbiIpOworICAgICAgICB9CiAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXBvcnRFeHRyYU1lbW9yeUNv
c3R9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLnJlcG9y
dEV4dHJhTWVtb3J5VmlzaXRlZCh0aGlzT2JqZWN0LT53cmFwcGVkKCkubWVtb3J5Q29zdCgpKTtc
biIpOwogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Jl
cG9ydEV4dGVybmFsTWVtb3J5Q29zdH0pIHs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IGRmMDIwZTBkOTI2MmZlYzY5NmU4
MDYzNWQ0ZTVjMWM2OTkxN2Y2ZWIuLmQ0YmI0OTFmMGIzMjJiMTk1ZGQ5YjRjYTk2MWU2YmJmMjhh
NjdiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy5qc29uCkBAIC0yMjMsNiArMjIzLDEwIEBACiAgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIiIsICJJbXBs
IiwgIkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiLCAiSW1wbENhbnZhc0Jhc2UiLCAiSW1wbERv
Y3VtZW50IiwgIkltcGxFbGVtZW50Um9vdCIsICJJbXBsT3duZXJOb2RlUm9vdCIsICJJbXBsU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCIsICJSZWFjaGFibGVGcm9tRE9NV2luZG93IiwgIlJlYWNoYWJs
ZUZyb21OYXZpZ2F0b3IiXQogICAgICAgICB9LAorICAgICAgICAiR2VuZXJhdGVBZGRPcGFxdWVS
b290IjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisg
ICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KKyAgICAgICAgfSwKICAgICAgICAgIkdsb2JhbCI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVj
dG9ycy5pZGwKaW5kZXggYzRhNmI2NGQ3ZDAzZjVjOTZlMzkwNjcxYWU0YzhhMTcxZThhN2ZmZi4u
MWY4YTIwMzc5MmU0MDNjOGJlM2YxZTY5NDhmYTI3OWMzNzRmOTc2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmlu
ZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCkBAIC0xMyw2ICsxMyw3IEBAIHBhcnRpYWwg
aW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBUZXN0RXZlbnRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yIFRlc3RFdmVudENvbnN0cnVjdG9yOwogICAgIGF0dHJpYnV0ZSBU
ZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciBUZXN0RXZlbnRUYXJnZXQ7CiAgICAgYXR0cmlidXRl
IFRlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciBUZXN0RXhjZXB0aW9uOworICAgIGF0dHJpYnV0ZSBU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3IgVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdDsKICAgICBhdHRyaWJ1dGUgVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvciBU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTsKICAgICBhdHRyaWJ1dGUgVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yIFRlc3RHbG9iYWxPYmplY3Q7CiAgICAgYXR0cmlidXRlIFRlc3RJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IgVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmNGU2YWFmNzU1MjliZmI3MzU4YzAwYTY0NDIzYjZmMWFiYWEzZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290LmNwcApAQCAtMCwwICsxLDI4MyBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290LmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJE
T01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3Rh
YmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TbG90VmlzaXRvck1hY3Jvcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUg
PHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0
cmlidXRlKTsKKworY2xhc3MgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAg
ICAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90
eXBlPih2bS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0p
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0
aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3RQcm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZTxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+OworCit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rv
cjo6c19pbmZvID0geyAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290RE9NQ29uc3RydWN0b3IpIH07CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblBy
b3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUg
Ki8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7
ICJzb21lQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorfTsKKworY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90
eXBlKSB9OworCit2b2lkIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
aW5mbygpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGVUYWJsZVZhbHVlcywg
KnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQor
Citjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpzX2luZm8gPSB7
ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpIH07
CisKK0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4mJiBpbXBsKQorICAgIDogSlNET01XcmFw
cGVyPFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3RhdGljX2Fzc2VydCgh
c3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dD46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0g
ZXZlbiB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmpl
Y3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6Y3Jl
YXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpjcmVhdGUo
dm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJv
dG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4odm0s
IGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdERPTUNvbnN0cnVjdG9yLCBET01Db25zdHJ1Y3RvcklEOjpUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOworfQorCit2b2lkIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIHRo
aXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqPihjZWxs
KTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6On5KU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QoKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpz
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90
eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxH
bG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZUdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290JiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuc29tZUF0dHJpYnV0ZSgpKSkpOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290X3Nv
bWVBdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+OjpnZXQ8anNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290X3NvbWVBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0
dHJpYnV0ZU5hbWUpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3Q6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Cisg
ICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuZ2V0
KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdD4gfHwgIUpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6bmVlZHNEZXN0cnVjdGlvbik7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+KQorICAgICAgICBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7CisgICAgZWxzZQor
ICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgPSBt
YWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworICAgIGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
LmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIHZvaWQgKCpteVZp
c2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJikgPSBK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0T3V0cHV0Q29uc3RyYWludHM7CisgICAg
dm9pZCAoKmpzQ2VsbFZpc2l0T3V0cHV0Q29uc3RyYWludCkoSlNDOjpKU0NlbGwqLCBKU0M6OlNs
b3RWaXNpdG9yJikgPSBKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50czsKKyAgICBp
ZiAobXlWaXNpdE91dHB1dENvbnN0cmFpbnQgIT0ganNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50
KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3Bh
Y2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgSlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0
LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+d3JhcHBl
ZCgpLm93bmVyT2JqZWN0Q29uY3VycmVudGx5KCkpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERS
RU4oSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKwordm9pZCBKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3Q6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFs
eXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxs
KGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChj
ZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgp
LnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisK
K2Jvb2wgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgQWJzdHJh
Y3RTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBVTlVT
RURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CisgICAgVU5VU0VE
X1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QtPndyYXBwZWQoKSwganNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290KTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9S
TShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCogX1pUVk43V2ViQ29yZTI1VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdEVbXTsgfQorI2VuZGlm
CisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290PiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkp
CisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIo
aW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxl
UG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RAV2Vi
Q29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZf
WlRWTjdXZWJDb3JlMjVUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290RVsyXTsKKyNlbmRpZgorCisg
ICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290IGRvZXMgbm90IGhh
dmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAgICAvLyBJbXBsZW1lbnRhdGlv
bkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dD46OnZhbHVlLCAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCBpcyBub3QgcG9seW1vcnBoaWMi
KTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEg
dXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qg
aGFzIHN1YmNsYXNzZXMuIElmIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgaGFzIHN1YmNsYXNz
ZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJl
IFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJk
ZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAg
cmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCYgaW1wbCkKK3sKKyAgICByZXR1cm4gd3Jh
cChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOworfQorCitUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290KiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnRvV3JhcHBl
ZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqPih2bSwgdmFs
dWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyNjY4ZGJhMGMwNGU3ZjE2YzlmYWNhYzM5MmRjOTNmOTAxMmVlZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgor
I2luY2x1ZGUgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3Q+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+OworICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4mJiBpbXBsKQor
ICAgIHsKKyAgICAgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0K
KworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdCogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0
YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJy
ZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNw
YWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisK
KyAgICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYp
OworcHJvdGVjdGVkOgorICAgIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdChKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+
JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RPd25lciBmaW5hbCA6IHB1YmxpYyBKU0M6OldlYWtI
YW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OkFic3RyYWN0
U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopIGZpbmFsOworICAgIHZvaWQgZmluYWxpemUoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7Cit9OworCitpbmxp
bmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3du
ZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0
OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Jik7CitpbmxpbmUgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCogaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdD4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+JiYg
aW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsg
fQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdD4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdDsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVz
dEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IGVmNjk4OGY1MDk2NDkwMTVhNThlMWQ2ZTI1
ZmQxZDdkZDJjNGZkYWQuLmI1Nzk4MTAxNWM3Y2ZiNTFjZWEyZDA5NDY0ZGU4MjA5OThlYTllNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVk
ZSAiSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFyZ2V0
LmgiCiAjaW5jbHVkZSAiSlNUZXN0RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290LmgiCiAjaW5jbHVkZSAiSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5o
IgogI2luY2x1ZGUgIkpTVGVzdEdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTVGVzdEluZGV4
ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaCIKQEAgLTE4Myw2ICsxODQsNyBAQCBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdERvbWFpblNlY3VyaXR5
Q29uc3RydWN0bwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFs
T2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNM
QVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9i
amVjdF9UZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RDb25z
dHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxP
YmplY3RfVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik7CiBzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKTsKQEAgLTI0
MSwxMyArMjQzLDEzIEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yID0g
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0CiAKIC8qIEhhc2ggdGFibGUg
Ki8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9i
amVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2OF0gPSB7CiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDQwLCAtMSB9LAorICAgIHsgNDEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDAsIC0xIH0sCiAgICAgeyA0LCAtMSB9LAotICAgIHsgNDQsIC0xIH0sCisgICAgeyA0NSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
QEAgLTI1NSwxNSArMjU3LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NCwgLTEgfSwKKyAgICB7
IDU1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAtMSB9LAor
ICAgIHsgNDksIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYzLCAtMSB9LAorICAgIHsg
NjQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCkBAIC0yNzcsMTQgKzI3OSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzQsIC0xIH0sCisg
ICAgeyAzNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NiwgLTEg
fSwKLSAgICB7IDEzLCAyNjAgfSwKKyAgICB7IDY3LCAtMSB9LAorICAgIHsgMTMsIDI2MSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMjky
LDExICsyOTQsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVz
dEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM4LCAtMSB9LAotICAgIHsgMTksIDI1
NyB9LAorICAgIHsgMzksIC0xIH0sCisgICAgeyAyMCwgMjU4IH0sCiAgICAgeyA2LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NSwgLTEgfSwKKyAgICB7IDQ2LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzA1LDE0ICsz
MDcsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM2LCAtMSB9LAorICAgIHsgMzcsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMSwgMjY1
IH0sCisgICAgeyAyMiwgMjY2IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCkBAIC0zMjYsMjcgKzMyOCwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MjksIC0xIH0sCi0gICAgeyA1NiwgLTEgfSwKKyAgICB7IDMwLCAtMSB9LAorICAgIHsgNTcsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5
LCAyNTYgfSwKKyAgICB7IDksIDI1NyB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1OCwgLTEg
fSwKLSAgICB7IDE4LCAtMSB9LAorICAgIHsgNTksIC0xIH0sCisgICAgeyAxOSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE3
LCAtMSB9LAorICAgIHsgMTgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM1LCAtMSB9LAorICAg
IHsgMzYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCkBAIC0zNTQsMTQgKzM1NiwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjMsIC0xIH0s
CisgICAgeyAyNCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMiwgLTEgfSwKLSAgICB7
IDM3LCAtMSB9LAorICAgIHsgMzgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMCwgLTEgfSwKKyAgICB7IDIxLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzc0
LDE1ICszNzYsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVz
dEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI3LCAtMSB9LAorICAgIHsgMjgsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsgNDMsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTMsIC0xIH0sCisgICAgeyA1NCwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAg
LTM5MCw3ICszOTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDcsIC0xIH0sCisgICAgeyA0OCwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxMCwgLTEgfSwK
QEAgLTQwMCwxMiArNDAyLDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NCwgLTEgfSwKKyAgICB7
IDY1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMjYsIC0xIH0sCi0gICAgeyAzMSwgLTEgfSwKKyAgICB7IDI3LCAtMSB9LAor
ICAgIHsgMzIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC00MTUsOSArNDE3LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE1LCAyNTkg
fSwKKyAgICB7IDE1LCAyNjAgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNTksIC0xIH0sCisg
ICAgeyA2MCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTQyNiwxMSArNDI4LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMywgMjY2
IH0sCisgICAgeyAzNCwgMjY3IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDE2LCAtMSB9LAor
ICAgIHsgMTYsIDI1NiB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2MiwgLTEgfSwKKyAgICB7
IDYzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtNDQ5LDcgKzQ1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NiwgLTEgfSwKKyAg
ICB7IDQ3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtNDYyLDcgKzQ2NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhh
c2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1NywgLTEgfSwK
KyAgICB7IDU4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC00NzEsMTAgKzQ3MywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBh
Y3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDksIDI2
MyB9LAotICAgIHsgNywgMjYyIH0sCisgICAgeyA1MCwgMjY0IH0sCisgICAgeyA3LCAyNjMgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjAsIC0xIH0sCisgICAgeyA2MSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ4MywzMiAr
NDg1LDMzIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9i
YWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDE0LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNCwgLTEgfSwKKyAgICB7IDI1LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMwLCAtMSB9LAorICAgIHsg
MzEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAzLCAtMSB9LAotICAgIHsgNTEsIC0xIH0sCi0gICAgeyAtMSwgLTEgfSwKICAg
ICB7IDUyLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyA1MywgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIyLCAyNTgg
fSwKLSAgICB7IDI1LCAyNjQgfSwKLSAgICB7IDI4LCAyNjEgfSwKLSAgICB7IDMyLCAtMSB9LAot
ICAgIHsgMzksIC0xIH0sCi0gICAgeyA0MSwgLTEgfSwKLSAgICB7IDQzLCAtMSB9LAotICAgIHsg
NTAsIC0xIH0sCi0gICAgeyA1NSwgLTEgfSwKLSAgICB7IDYxLCAtMSB9LAotICAgIHsgNjUsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE3LCAtMSB9LAorICAgIHsgMjMsIDI1OSB9LAor
ICAgIHsgMjYsIDI2NSB9LAorICAgIHsgMjksIDI2MiB9LAorICAgIHsgMzMsIC0xIH0sCisgICAg
eyA0MCwgLTEgfSwKKyAgICB7IDQyLCAtMSB9LAorICAgIHsgNDQsIC0xIH0sCisgICAgeyA1MSwg
LTEgfSwKKyAgICB7IDU2LCAtMSB9LAorICAgIHsgNjIsIC0xIH0sCisgICAgeyA2NiwgLTEgfSwK
IH07CiAKIApAQCAtNTM5LDYgKzU0Miw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KICAgICB7ICJUZXN0RXZlbnRDb25zdHJ1
Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVz
dEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
MCkgfSB9LAogICAgIHsgIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJUZXN0R2xvYmFsT2JqZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogICAgIHsgIlRlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKQEAgLTU5OSw3ICs2MDMsNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXNbXSA9CiAg
ICAgeyAicmVndWxhck9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bl9yZWd1bGFyT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotc3RhdGljIGNv
bnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgNjcsIDI1NSwgdHJ1ZSwg
SlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVz
LCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlID0geyA2OCwgMjU1LCB0cnVlLCBKU1Rlc3RHbG9iYWxP
YmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2Jh
bE9iamVjdFRhYmxlSW5kZXggfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAK
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rv
clRhYmxlVmFsdWVzW10gPQpAQCAtMTAxNyw2ICsxMDIxLDE3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yLCAoSlNH
bG9iYWxPCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXR0cmlidXRlTmFtZSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dENvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3Rf
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
IGF0dHJpYnV0ZU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGF0dHJp
YnV0ZU5hbWUpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
X1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsK
ICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVz
LmRlcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMuZGVwCmluZGV4IDk4NDliMTIzMjg1Mzg3YThmOTdiMDllNDYzNDNmOWQzODc5
OGU2ZWEuLjI4ZDY3NzFhOWE5YjIzNjkxMTlmZGNiYzUzODdjOGIwYmU4MjcxOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9T
dXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCkBAIC0xMTAsNiArMTEwLDkgQEAgV2ViRE9NVGVz
dEV2ZW50VGFyZ2V0Lmg6CiBKU1Rlc3RFeGNlcHRpb24uaDogCiBET01UZXN0RXhjZXB0aW9uLmg6
IAogV2ViRE9NVGVzdEV4Y2VwdGlvbi5oOiAKK0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5o
OiAKK0RPTVRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDogCitXZWJET01UZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290Lmg6IAogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOiAKIERPTVRlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmg6IAogV2ViRE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI3Mjg3MGFl
Y2NlNzZjODcwNmIyNGU1ZTFhZDNjNmFlMGQyYzM1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
LmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKK1sKKyAgICBFeHBvc2VkPVRlc3RHbG9iYWxPYmplY3QsCisgICAgR2VuZXJh
dGVBZGRPcGFxdWVSb290PW93bmVyT2JqZWN0Q29uY3VycmVudGx5CitdIGludGVyZmFjZSBUZXN0
R2VuZXJhdGVBZGRPcGFxdWVSb290IHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHNvbWVBdHRyaWJ1dGU7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggNWY4Yzc1MmFhZTg3NDc4YTVjNjlkNzgzOTU5N2M0OTk5ZjJlMjMyMC4uMjA1ZjU3OThjNjQz
MGRhYjQ4ZTgxZTM0OWIzMWE5ZWM2NjE5OGFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMjcwNiw2ICsyNzA2LDExIEBAIHVpbnQ2NF90IEludGVybmFsczo6ZWxlbWVu
dElkZW50aWZpZXIoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4gZWxlbWVudC5k
b2N1bWVudCgpLmlkZW50aWZpZXJGb3JFbGVtZW50KGVsZW1lbnQpLnRvVUludDY0KCk7CiB9CiAK
K2Jvb2wgSW50ZXJuYWxzOjppc0VsZW1lbnRBbGl2ZShEb2N1bWVudCYgZG9jdW1lbnQsIHVpbnQ2
NF90IGVsZW1lbnRJZGVudGlmaWVyKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudC5zZWFy
Y2hGb3JFbGVtZW50QnlJZGVudGlmaWVyKG1ha2VPYmplY3RJZGVudGlmaWVyPEVsZW1lbnRJZGVu
dGlmaWVyVHlwZT4oZWxlbWVudElkZW50aWZpZXIpKTsKK30KKwogdWludDY0X3QgSW50ZXJuYWxz
OjpmcmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAg
IGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQpAQCAtMzg2NSw2ICszODcwLDExIEBA
IFN0cmluZyBJbnRlcm5hbHM6OmdldEltYWdlU291cmNlVVJMKEVsZW1lbnQmIGVsZW1lbnQpCiAK
ICNpZiBFTkFCTEUoVklERU8pCiAKK3Vuc2lnbmVkIEludGVybmFsczo6bWVkaWFFbGVtZW50Q291
bnQoKQoreworICAgIHJldHVybiBIVE1MTWVkaWFFbGVtZW50OjphbGxNZWRpYUVsZW1lbnRzKCku
c2l6ZSgpOworfQorCiBWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6Om1lZGlhUmVzcG9uc2VTb3Vy
Y2VzKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhKQogewogICAgIGF1dG8qIHJlc291cmNlTG9hZGVy
ID0gbWVkaWEubGFzdE1lZGlhUmVzb3VyY2VMb2FkZXJGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCAxMzcyOTU5ODU1MjNmN2QyZjgzMWFlZjJlODMzNjAwM2Vj
ZTk4NjdmLi5kOTE5M2IzOTk0ODc1ZmRhZWIyMzNlZTc0Yzc2MDc0ZDRmMDIxZDFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ4NCw2ICs0ODQsOCBAQCBwdWJsaWM6CiAgICAg
dWludDY0X3Qgc3RvcmFnZUFyZWFNYXBDb3VudCgpIGNvbnN0OwogCiAgICAgdWludDY0X3QgZWxl
bWVudElkZW50aWZpZXIoRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgaXNFbGVtZW50QWxpdmUo
RG9jdW1lbnQmLCB1aW50NjRfdCBkb2N1bWVudElkZW50aWZpZXIpIGNvbnN0OworCiAgICAgdWlu
dDY0X3QgZnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JikgY29uc3Q7CiAgICAgdWludDY0
X3QgcGFnZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtNjQ0LDYgKzY0
Niw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCYpOwog
CiAjaWYgRU5BQkxFKFZJREVPKQorICAgIHVuc2lnbmVkIG1lZGlhRWxlbWVudENvdW50KCk7CiAg
ICAgVmVjdG9yPFN0cmluZz4gbWVkaWFSZXNwb25zZVNvdXJjZXMoSFRNTE1lZGlhRWxlbWVudCYp
OwogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhUmVzcG9uc2VDb250ZW50UmFuZ2VzKEhUTUxNZWRp
YUVsZW1lbnQmKTsKICAgICB2b2lkIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRpb24oSFRNTE1lZGlh
RWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDI2ZWExNmZk
N2UxYzFhOTQ2ZjE5NWU3MjJkMDNiYWNjODNiN2IzMmEuLjllMzY2MmJiMGYxNjY5MmJmMzZlYzM3
YjMwMzk0MGExZDNmODBiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTg3NSw2ICs4NzUsNyBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIHN0b3JhZ2VBcmVhTWFwQ291bnQ7CiAKICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgZWxlbWVudElkZW50aWZpZXIoRWxlbWVudCBlbGVtZW50KTsKKyAgICBbQ2FsbFdp
dGg9RG9jdW1lbnRdIGJvb2xlYW4gaXNFbGVtZW50QWxpdmUodW5zaWduZWQgbG9uZyBsb25nIGRv
Y3VtZW50SWRlbnRpZmllcik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGZyYW1lSWRlbnRpZmll
cihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHBhZ2VJZGVudGlm
aWVyKERvY3VtZW50IGRvY3VtZW50KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdhOWQxNjM3ODJjODM5Y2I3NWI1MTdk
NTNlMDRkZGFlYjI3ZmEwZDUuLmE2MGU3YTQ0ZjJlNmJkYTI1NWNmZGJlMjg5ZWI5YTA4YjM5MzYz
MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNi0yOCAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdGVQbGF5YmFjayBtdXN0IGtlZXAgaXRzIG1l
ZGlhIGVsZW1lbnQgYWxpdmUgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgYWN0aXZpdHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzQ3MQorICAgICAg
ICA8cmRhcjovLzc5Njk0MDE1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgR0MgdGVzdC4KKworICAgICAgICAqIG1lZGlhL3JlbW90ZXBs
YXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy5odG1sOiBBZGRl
ZC4KKwogMjAyMS0wNi0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIExhc3QgZmV3IHNlY29uZHMgb2YgJ2F1ZGlvL3dlYm07IGNvZGVjcz12b3Ji
aXMnIGFwcGVuZGVkIHRvIGEgU2FtcGxlQnVmZmVyIGFyZSBub3QgcGxheWVkCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRjaC1hdmFpbGFiaWxpdHktZ2Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlcGxheWJhY2std2F0Y2gtYXZh
aWxhYmlsaXR5LWdjLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTc3ZWUxMTY0NjgxYTc4NDU3
OWFhMmZhNDk1OWNhNDM3YWJkY2FjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvcmVtb3RlcGxheWJhY2std2F0Y2gtYXZhaWxhYmlsaXR5LWdjLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgdGhhdCBjYWxsaW5nIHdhdGNoQXZhaWxhYmlsaXR5IHdp
bGwga2VlcCB0aGUgbWVkaWEgZWxlbWVudCBhbGl2ZSB1bnRpbCB0aGUgY2FsbGJhY2sgaXMgY2Fs
bGVkLiBZb3Ugc2hvdWxkIHNlZSBQQVNTIGJlbG93OgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRjaC1hdmFpbGFiaWxpdHktZ2MuaHRtbCBi
L0xheW91dFRlc3RzL21lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhNGFiYTc5NjU0YmExYzM2MjlkM2M4ZDZkMWQwNWFmYTM1ZTgxOTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRj
aC1hdmFpbGFiaWxpdHktZ2MuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKK30KKworbGV0IGVsZW1lbnRJZGVudGlmaWVyID0gbnVsbDsKK2xldCBwYXJlbnRJZGVudGlm
aWVyID0gbnVsbDsKK2xldCBpdGVyYXRpb25Db3VudCA9IDIwOworbGV0IHdhdGNoZG9nVGltZXIg
PSBudWxsOworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIWl0ZXJhdGlvbkNvdW50KQor
ICAgICAgICByZXR1cm4gZW5kVGVzdCgnUEFTUycpOworCisgICAgaW50ZXJuYWxzLnF1ZXVlVGFz
aygnRE9NTWFuaXB1bGF0aW9uJywgKCkgPT4geworICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOworICAgIH0pOworCisgICAgKCgpID0+IHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7CisgICAgICAgIGVsZW1lbnRJZGVudGlmaWVy
ID0gaW50ZXJuYWxzLmVsZW1lbnRJZGVudGlmaWVyKGVsZW1lbnQpOworCisgICAgICAgIGNvbnN0
IHBhcmVudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgcGFy
ZW50SWRlbnRpZmllciA9IGludGVybmFscy5lbGVtZW50SWRlbnRpZmllcihwYXJlbnROb2RlKTsK
KyAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChlbGVtZW50KTsKKworICAgICAgICBlbGVt
ZW50LnJlbW90ZS53YXRjaEF2YWlsYWJpbGl0eShjaGVja0VsZW1lbnQpOworICAgICAgICB3YXRj
aGRvZ1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiBlbmRUZXN0KCdGQUlMIC0gdGhlIGNhbGxiYWNr
IHdhcyBuZXZlciBjYWxsZWQnKSwgMzAwMCk7CisgICAgfSkoKTsKKworICAgIEdDQ29udHJvbGxl
ci5jb2xsZWN0KCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrRWxlbWVudCgpCit7CisgICAgY2xlYXJU
aW1lb3V0KHdhdGNoZG9nVGltZXIpOworCisgICAgaWYgKCFpbnRlcm5hbHMuaXNFbGVtZW50QWxp
dmUoZWxlbWVudElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gZW5kVGVzdCgnRkFJTCAtIGVs
ZW1lbnQgaXMgbm8gbG9uZ2VyIGFsaXZlJyk7CisKKyAgICBpZiAoIWludGVybmFscy5pc0VsZW1l
bnRBbGl2ZShwYXJlbnRJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGVuZFRlc3QoJ0ZBSUwg
LSBwYXJlbnQgaXMgbm8gbG9uZ2VyIGFsaXZlJyk7CisKKyAgICAtLWl0ZXJhdGlvbkNvdW50Owor
ICAgIHNldFRpbWVvdXQoKCkgPT4gcnVuVGVzdCgpLCAwKTsKK30KKworZnVuY3Rpb24gZW5kVGVz
dChzdGF0dXMpCit7CisgICAgcmVzdWx0LnRleHRDb250ZW50ID0gc3RhdHVzOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5UZXN0KCknPgorPHA+VGhpcyB0
ZXN0cyB0aGF0IGNhbGxpbmcgd2F0Y2hBdmFpbGFiaWxpdHkgd2lsbCBrZWVwIHRoZSBtZWRpYSBl
bGVtZW50IGFsaXZlIHVudGlsIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQuIFlvdSBzaG91bGQgc2Vl
IFBBU1MgYmVsb3c6PC9wPgorPHAgaWQ9InJlc3VsdCI+UnVubmluZzwvcD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432560</attachid>
            <date>2021-06-29 17:38:37 -0700</date>
            <delta_ts>2021-06-30 16:53:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227471-20210629173836.patch</filename>
            <type>text/plain</type>
            <size>48236</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhNGI2ODgzYmM4M2Fk
MDEyNzkxM2U3MTRhYmFiMWE3M2U2Y2M1NC4uZjE3MDkxNTc3YzY5YTJiMjBiOGZlYWEyZWEwMTg1
ZWQ1ZGRhYmQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDIxLTA2LTI4ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW90ZVBsYXliYWNrIG11
c3Qga2VlcCBpdHMgbWVkaWEgZWxlbWVudCBhbGl2ZSB3aGVuIHRoZXJlIGlzIGEgcGVuZGluZyBh
Y3Rpdml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NDcxCisgICAgICAgIDxyZGFyOi8vNzk2OTQwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgdGhlIGJ1ZyB0aGF0IHRoZSBtZWRpYSBl
bGVtZW50J3MgSlMgd3JhcHBlciBjYW4gYmUgY29sbGVjdGVkIHdoaWxlIHRoZXJlIGlzIHN0aWxs
CisgICAgICAgIGEgcGVuZGluZyBhY3Rpdml0eSBmb3IgUmVtb3RlUGxheWJhY2suIEluIGZhY3Qs
IHRoZSBuZXdseSBhZGRlZCB0ZXN0IGRlbW9uc3RyYXRlcyB0aGF0CisgICAgICAgIHRoZSBtZWRp
YSBlbGVtZW50IGNhbiBiZSBkZWxldGVkIHdpdGhvdXQgdGhpcyBwYXRjaC4KKworICAgICAgICBU
aGlzIHBhdGNoIGFsc28gaW50cm9kdWNlcyBuZXcgZXh0ZW5kZWQgSURMIGludGVyZmFjZSBhdHRy
aWJ1dGUgR2VuZXJhdGVBZGRPcGFxdWVSb290CisgICAgICAgIHRvIG1ha2UgYWRkaW5nIGFuIG9w
YXF1ZSByb290IGFzIGEgcGFydCBvZiB2aXNpdENoaWxkcmVuIGVhc3kgaW4gdGhlIERPTSBjb2Rl
LgorCisgICAgICAgIFRlc3Q6IG1lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0
eS1nYy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXli
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVBsYXliYWNrOjpvd25lck5vZGUgY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaDoK
KyAgICAgICAgKiBNb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKElu
c3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9y
cy5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdDo6Y3JlYXRlUHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdDo6cHJvdG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnN1YnNwYWNlRm9ySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6YW5hbHl6ZUhl
YXApOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdE93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjp0
b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojp0b1dyYXBwZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3Q6OnN1YnNwYWNlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OndyYXBwZXJPd25lcik6Cisg
ICAgICAgIChXZWJDb3JlOjp3cmFwcGVyS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9y
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzRWxlbWVudEFsaXZlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6bWVkaWFFbGVtZW50Q291bnQpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIx
LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2Nv
YV0gTGFzdCBmZXcgc2Vjb25kcyBvZiAnYXVkaW8vd2VibTsgY29kZWNzPXZvcmJpcycgYXBwZW5k
ZWQgdG8gYSBTYW1wbGVCdWZmZXIgYXJlIG5vdCBwbGF5ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKaW5kZXgg
MjdjYzA0ODQwYTdjYTRkNmVlMTk3NGZlMDA1MWM0YThiMzJiMTVkOC4uM2U1MTZjMjE3NmVhNDNm
MWM2YjVmYTlkMTlkYjk3ODVmMGQxODUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5jcHAKQEAgLTU4LDYgKzU4
LDE4IEBAIFJlbW90ZVBsYXliYWNrOjp+UmVtb3RlUGxheWJhY2soKQogewogfQogCit2b2lkKiBS
ZW1vdGVQbGF5YmFjazo6b3BhcXVlUm9vdENvbmN1cnJlbnRseSgpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8qIGVsZW1lbnQgPSBtX21lZGlhRWxlbWVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPm9wYXF1ZVJvb3QoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworTm9kZSogUmVt
b3RlUGxheWJhY2s6Om93bmVyTm9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFFbGVt
ZW50LmdldCgpOworfQorCiB2b2lkIFJlbW90ZVBsYXliYWNrOjp3YXRjaEF2YWlsYWJpbGl0eShS
ZWY8UmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjaz4mJiBjYWxsYmFjaywgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIC8vIDYuMi4xLjMgR2V0dGluZyB0aGUg
cmVtb3RlIHBsYXliYWNrIGRldmljZXMgYXZhaWxhYmlsaXR5IGluZm9ybWF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNr
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNr
LmgKaW5kZXggMDQ1NzM4ZTM4NzA2ZjM5YjIyN2QxZDk2ODhhMTZkMjJiYWQ2MThkOC4uYjhkNTRi
MmZmNjM3Yjc2MDFhYmRhZDZjYjhhNTEzZDBiYTM1MDRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcmVtb3RlcGxheWJhY2svUmVtb3RlUGxheWJhY2suaApAQCAtNjgs
NiArNjgsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OmRlcmVmOwogCisgICAgdm9pZCogb3BhcXVlUm9vdENvbmN1cnJlbnRseSgp
IGNvbnN0OworICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFJlbW90ZVBsYXliYWNrKEhUTUxNZWRpYUVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9yZW1vdGVwbGF5YmFjay9SZW1vdGVQbGF5YmFjay5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlk
bAppbmRleCA4YmFlOWY5OTYxY2Y4ZDM0MTZhM2IwNDBlMGQzYmQyNWI4OWQ2MGFlLi5iYzZhOGNj
Y2NjY2ZmZTVhNmJjODY4YjU5MTA0N2Y1ZGM5OTZiMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3JlbW90ZXBsYXliYWNrL1JlbW90ZVBsYXliYWNrLmlkbApAQCAt
MzQsNyArMzQsOSBAQCBlbnVtIFJlbW90ZVBsYXliYWNrU3RhdGUgewogICAgIEFjdGl2ZURPTU9i
amVjdCwKICAgICBDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQsCiAgICAgRW5h
YmxlZEJ5U2V0dGluZz1SZW1vdGVQbGF5YmFjaywKLSAgICBFeHBvc2VkPVdpbmRvdworICAgIEV4
cG9zZWQ9V2luZG93LAorICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbE93bmVyTm9kZVJvb3Qs
CisgICAgR2VuZXJhdGVBZGRPcGFxdWVSb290PW9wYXF1ZVJvb3RDb25jdXJyZW50bHkKIF0gaW50
ZXJmYWNlIFJlbW90ZVBsYXliYWNrIDogRXZlbnRUYXJnZXQgewogICAgIFByb21pc2U8bG9uZz4g
d2F0Y2hBdmFpbGFiaWxpdHkoUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjayBjYWxs
YmFjayk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IGNhbmNlbFdhdGNoQXZhaWxhYmlsaXR5KG9w
dGlvbmFsIGxvbmcgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1YzQwOTBhZmJhY2E5ZmJjMDdmZmExYjg3YmU5MDg0
M2QxMTQ2ZDkyLi43NzE4NjI0YmExMDUyYTg3Zjc5NDg0MjE2M2VlMGIyNWZlMGNkMmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjE5NSw2ICsyMTk1LDcgQEAgc3ViIEluc3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuCiAg
ICAgfQogCiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SlNDdXN0b21NYXJrRnVuY3Rpb259OworICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0dlbmVyYXRlQWRkT3BhcXVlUm9vdH07CiAgICAgcmV0dXJuIDEgaWYg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UGx1Z2lufTsKICAgICByZXR1cm4gMSBp
ZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXBvcnRFeHRyYU1lbW9yeUNvc3R9
OwogICAgIHJldHVybiAwOwpAQCAtNDg4Nyw2ICs0ODg4LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0
LT53cmFwcGVkKCkucGx1Z2luUmVwbGFjZW1lbnRTY3JpcHRPYmplY3QoKS52aXNpdCh2aXNpdG9y
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwogICAg
ICAgICB9CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3R9KSB7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2VuZXJhdGVBZGRPcGFxdWVSb290fTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0
aGlzT2JqZWN0LT53cmFwcGVkKCkuJHtmdW5jdGlvbk5hbWV9KCkpO1xuIik7CisgICAgICAgIH0K
ICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcG9ydEV4dHJh
TWVtb3J5Q29zdH0pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHZpc2l0
b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNpdGVkKHRoaXNPYmplY3QtPndyYXBwZWQoKS5tZW1vcnlD
b3N0KCkpO1xuIik7CiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UmVwb3J0RXh0ZXJuYWxNZW1vcnlDb3N0fSkgezsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KaW5kZXggZGYwMjBlMGQ5MjYy
ZmVjNjk2ZTgwNjM1ZDRlNWMxYzY5OTE3ZjZlYi4uZDRiYjQ5MWYwYjMyMmIxOTVkZDliNGNhOTYx
ZTZiYmYyOGE2N2I3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLmpzb24KQEAgLTIyMyw2ICsyMjMsMTAgQEAKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsi
IiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIs
ICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25lck5vZGVSb290Iiwg
IkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAi
UmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCiAgICAgICAgIH0sCisgICAgICAgICJHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQorICAgICAgICB9LAogICAgICAgICAi
R2xvYmFsIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0s
CiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFs
Q29uc3RydWN0b3JzLmlkbAppbmRleCBjNGE2YjY0ZDdkMDNmNWM5NmUzOTA2NzFhZTRjOGExNzFl
OGE3ZmZmLi4xZjhhMjAzNzkyZTQwM2M4YmUzZjFlNjk0OGZhMjc5YzM3NGY5NzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9CaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwKQEAgLTEzLDYgKzEzLDcgQEAg
cGFydGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdEV2ZW50Q29uc3RydWN0b3I7CiAgICAgYXR0
cmlidXRlIFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIFRlc3RFdmVudFRhcmdldDsKICAgICBh
dHRyaWJ1dGUgVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3RFeGNlcHRpb247CisgICAgYXR0
cmlidXRlIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RDb25zdHJ1Y3RvciBUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290OwogICAgIGF0dHJpYnV0ZSBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOwogICAgIGF0dHJpYnV0ZSBUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3IgVGVzdEdsb2JhbE9iamVjdDsKICAgICBhdHRyaWJ1dGUgVGVzdElu
ZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciBUZXN0SW5kZXhlZFNldHRlck5vSWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmY0ZTZhYWY3NTUyOWJmYjczNThjMDBhNjQ0MjNiNmYxYWJhYTNlYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QuaCIKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Nsb3RWaXNpdG9y
TWFjcm9zLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworc3RhdGljIEpTQ19ERUNMQVJFX0NV
U1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3IpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
X3NvbWVBdHRyaWJ1dGUpOworCitjbGFzcyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZP
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgor
ICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAg
ICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0u
cGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworU1RBVElDX0FTU0VS
VF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90
eXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGU6OkJhc2UpOworCit1c2lu
ZyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3Ry
dWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD47CisKK3Rl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290IiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBKU1ZhbHVl
IEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1
bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3RET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKKy8qIEhhc2ggdGFibGUgZm9yIHBy
b3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290UHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdENvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9
LAorICAgIHsgInNvbWVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21B
Y2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290X3NvbWVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCit9OworCitj
b25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90eXBlOjpzX2lu
Zm8gPSB7ICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290OjppbmZvKCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdFByb3RvdHlwZVRhYmxl
VmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9O
KCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnNf
aW5mbyA9IHsgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCkgfTsKKworSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpKU1Rlc3RHZW5lcmF0ZUFk
ZE9wYXF1ZVJvb3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiYmIGltcGwpCisgICAgOiBK
U0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4oc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0aWNf
YXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290Pjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9N
T2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2
ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290OjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290UHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5v
YmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290Ojpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290Pih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2VuZXJh
dGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3IsIERPTUNvbnN0cnVjdG9ySUQ6OlRlc3RHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3Q+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
fkpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCgpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoanNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJv
b3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChV
TkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdF9zb21lQXR0
cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmlu
Zz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5zb21lQXR0cmlidXRlKCkp
KSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1
ZVJvb3Rfc29tZUF0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD46
OmdldDxqc1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Rfc29tZUF0dHJpYnV0ZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1
dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlm
IChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290PiB8fCAhSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OjpuZWVkc0Rlc3Ry
dWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0
cnVjdGlibGVPYmplY3QsIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD4pCisgICAgICAgIHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KTsKKyAg
ICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAs
IHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCk7
CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUi
KQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgdm9p
ZCAoKm15VmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0
b3ImKSA9IEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6dmlzaXRPdXRwdXRDb25zdHJhaW50
czsKKyAgICB2b2lkICgqanNDZWxsVmlzaXRPdXRwdXRDb25zdHJhaW50KShKU0M6OkpTQ2VsbCos
IEpTQzo6U2xvdFZpc2l0b3ImKSA9IEpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
OworICAgIGlmIChteVZpc2l0T3V0cHV0Q29uc3RyYWludCAhPSBqc0NlbGxWaXNpdE91dHB1dENv
bnN0cmFpbnQpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNlcygpLmFw
cGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1NfRU5ECisg
ICAgcmV0dXJuIHNwYWNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBK
U1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0
LT53cmFwcGVkKCkub3duZXJPYmplY3RDb25jdXJyZW50bHkoKSk7Cit9CisKK0RFRklORV9WSVNJ
VF9DSElMRFJFTihKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QpOworCit2b2lkIEpTVGVzdEdl
bmVyYXRlQWRkT3BhcXVlUm9vdDo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6
ZXImIGFuYWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290Kj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVj
dEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxG
b3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dXJsKCkuc3RyaW5nKCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVy
KTsKK30KKworYm9vbCBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBBYnN0cmFjdFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQorewor
ICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAg
ICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCA9IHN0YXRpY19jYXN0PEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC0+d3JhcHBlZCgpLCBqc1Rlc3RHZW5lcmF0
ZUFkZE9wYXF1ZVJvb3QpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lm
IFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdEdlbmVyYXRlQWRk
T3BhcXVlUm9vdEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290RVtdOyB9
CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxl
UG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0
ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdEBXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2lu
dGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RFWzJdOworI2Vu
ZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgZG9l
cyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlv
bgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290Pjo6dmFsdWUsICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290IGlzIG5vdCBwb2x5
bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVy
IGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCBoYXMg
c3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5
IHJlcXVpcmUgVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCB5b3UgdG8gb3B0IG91dCBvZiBiaW5k
aW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24g
YXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FT
U0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5k
aWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Pihn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290JiBpbXBsKQoreworICAgIHJl
dHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisK
K1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdDo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCo+
KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjI2NjhkYmEwYzA0ZTdmMTZjOWZhY2FjMzkyZGM5M2Y5MDEyZWVk
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaApAQCAtMCwwICsxLDk1IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFw
cGVyLmgiCisjaW5jbHVkZSAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oIgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpT
VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBw
ZXI8VGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdD47CisgICAgc3RhdGljIEpTVGVzdEdlbmVyYXRl
QWRkT3BhcXVlUm9vdCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiYm
IGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9v
dChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7
CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0R2Vu
ZXJhdGVBZGRPcGFxdWVSb290KiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Cisg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZP
OworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgREVDTEFSRV9WSVNJVF9DSElM
RFJFTjsKKworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFu
YWx5emVyJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdD4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisK
K2NsYXNzIEpTVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdE93bmVyIGZpbmFsIDogcHVibGljIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6
QWJzdHJhY3RTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKikgZmluYWw7CisgICAgdm9pZCBmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KSBmaW5hbDsKK307
CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJX
b3JsZCYsIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QqKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxKU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3RPd25lcj4gb3duZXI7CisgICAgcmV0
dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdEdlbmVy
YXRlQWRkT3BhcXVlUm9vdCogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFi
bGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QmKTsKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0R2VuZXJhdGVBZGRPcGFxdWVS
b290KiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxU
ZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05l
d2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdD4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6Ompz
TnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0
czxUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0g
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290OworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5
cGUgPSBUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290KjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggZWY2OTg4ZjUwOTY0OTAxNWE1
OGUxZDZlMjVmZDFkN2RkMmM0ZmRhZC4uYjU3OTgxMDE1YzdjZmI1MWNlYTJkMDk0NjRkZTgyMDk5
OGVhOWU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTUzLDYgKzUzLDcgQEAK
ICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU1Rlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJKU1Rl
c3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaCIKICNpbmNsdWRlICJKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0R2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oIgpAQCAtMTgzLDYgKzE4NCw3IEBAIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RG9tYWlu
U2VjdXJpdHlDb25zdHJ1Y3RvCiBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rl
c3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik7CiBzdGF0aWMg
SlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50VGFy
Z2V0Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0
R2xvYmFsT2JqZWN0X1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcik7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEdlbmVyYXRlQWRkT3BhcXVl
Um9vdENvbnN0cnVjdG9yKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVz
dEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKTsKIHN0YXRp
YyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3IpOwogc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNU
ZXN0R2xvYmFsT2JqZWN0X1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Ip
OwpAQCAtMjQxLDEzICsyNDMsMTMgQEAgdXNpbmcgSlNUZXN0R2xvYmFsT2JqZWN0RE9NQ29uc3Ry
dWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3QKIAogLyogSGFz
aCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0
R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgNDAsIC0xIH0sCisgICAgeyA0MSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7IDQsIC0xIH0sCi0gICAgeyA0NCwgLTEgfSwKKyAg
ICB7IDQ1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LApAQCAtMjU1LDE1ICsyNTcsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDU0LCAtMSB9
LAorICAgIHsgNTUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDgs
IC0xIH0sCisgICAgeyA0OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjMsIC0xIH0s
CisgICAgeyA2NCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKQEAgLTI3NywxNCArMjc5LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzNCwg
LTEgfSwKKyAgICB7IDM1LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDY2LCAtMSB9LAotICAgIHsgMTMsIDI2MCB9LAorICAgIHsgNjcsIC0xIH0sCisgICAgeyAxMywg
MjYxIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC0yOTIsMTEgKzI5NCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzgsIC0xIH0sCi0gICAg
eyAxOSwgMjU3IH0sCisgICAgeyAzOSwgLTEgfSwKKyAgICB7IDIwLCAyNTggfSwKICAgICB7IDYs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ1LCAtMSB9LAorICAgIHsgNDYsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0z
MDUsMTQgKzMwNywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAzNywg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDIxLCAyNjUgfSwKKyAgICB7IDIyLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTMyNiwyNyArMzI4LDI3IEBAIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2
N10gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAyOSwgLTEgfSwKLSAgICB7IDU2LCAtMSB9LAorICAgIHsgMzAsIC0xIH0sCisgICAg
eyA1NywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDksIDI1NiB9LAorICAgIHsgOSwgMjU3IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDU4LCAtMSB9LAotICAgIHsgMTgsIC0xIH0sCisgICAgeyA1OSwgLTEgfSwKKyAgICB7IDE5LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMTcsIC0xIH0sCisgICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzUsIC0x
IH0sCisgICAgeyAzNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKQEAgLTM1NCwxNCArMzU2LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg
Q29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
MywgLTEgfSwKKyAgICB7IDI0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAyLCAtMSB9
LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyAzOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIwLCAtMSB9LAorICAgIHsgMjEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CkBAIC0zNzQsMTUgKzM3NiwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjcsIC0xIH0sCisgICAg
eyAyOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDIsIC0xIH0sCisgICAgeyA0Mywg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1MywgLTEgfSwKKyAgICB7
IDU0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LApAQCAtMzkwLDcgKzM5Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7CiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NywgLTEgfSwKKyAg
ICB7IDQ4LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDEw
LCAtMSB9LApAQCAtNDAwLDEyICs0MDIsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDY0LCAtMSB9
LAorICAgIHsgNjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCi0gICAgeyAyNiwgLTEgfSwKLSAgICB7IDMxLCAtMSB9LAorICAgIHsgMjcs
IC0xIH0sCisgICAgeyAzMiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxNSw5ICs0MTcsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MTUsIDI1OSB9LAorICAgIHsgMTUsIDI2MCB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1OSwg
LTEgfSwKKyAgICB7IDYwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LApAQCAtNDI2LDExICs0MjgsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVj
dCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDMzLCAyNjYgfSwKKyAgICB7IDM0LCAyNjcgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTYs
IC0xIH0sCisgICAgeyAxNiwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYyLCAtMSB9
LAorICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCkBAIC00NDksNyArNDUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21w
YWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ2LCAt
MSB9LAorICAgIHsgNDcsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCkBAIC00NjIsNyArNDY0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDU3
LCAtMSB9LAorICAgIHsgNTgsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ3MSwxMCArNDczLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2N10gPSB7
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA0OSwgMjYzIH0sCi0gICAgeyA3LCAyNjIgfSwKKyAgICB7IDUwLCAyNjQgfSwKKyAgICB7IDcs
IDI2MyB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2MCwgLTEgfSwKKyAgICB7IDYxLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAt
NDgzLDMyICs0ODUsMzMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgMTQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI0LCAtMSB9LAorICAgIHsgMjUs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzAsIC0xIH0s
CisgICAgeyAzMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCi0gICAgeyA1MSwgLTEgfSwKLSAgICB7IC0xLCAt
MSB9LAogICAgIHsgNTIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUzLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MjIsIDI1OCB9LAotICAgIHsgMjUsIDI2NCB9LAotICAgIHsgMjgsIDI2MSB9LAotICAgIHsgMzIs
IC0xIH0sCi0gICAgeyAzOSwgLTEgfSwKLSAgICB7IDQxLCAtMSB9LAotICAgIHsgNDMsIC0xIH0s
Ci0gICAgeyA1MCwgLTEgfSwKLSAgICB7IDU1LCAtMSB9LAotICAgIHsgNjEsIC0xIH0sCi0gICAg
eyA2NSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMTcsIC0xIH0sCisgICAgeyAyMywg
MjU5IH0sCisgICAgeyAyNiwgMjY1IH0sCisgICAgeyAyOSwgMjYyIH0sCisgICAgeyAzMywgLTEg
fSwKKyAgICB7IDQwLCAtMSB9LAorICAgIHsgNDIsIC0xIH0sCisgICAgeyA0NCwgLTEgfSwKKyAg
ICB7IDUxLCAtMSB9LAorICAgIHsgNTYsIC0xIH0sCisgICAgeyA2MiwgLTEgfSwKKyAgICB7IDY2
LCAtMSB9LAogfTsKIAogCkBAIC01MzksNiArNTQyLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVzW10gPQogICAgIHsgIlRlc3RFdmVu
dENvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJUZXN0RXZlbnRUYXJnZXQiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKICAg
ICB7ICJUZXN0RXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgIlRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Qi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgIlRlc3RHbG9iYWxPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dF9UZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAgeyAiVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LApAQCAtNTk5LDcgKzYwMyw3IEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVl
c1tdID0KICAgICB7ICJyZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uX3JlZ3VsYXJPcGVyYXRpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCiB9OwogCi1z
dGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlID0geyA2NywgMjU1
LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFi
bGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDY4LCAyNTUsIHRydWUsIEpTVGVz
dEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlcywgSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9OwogLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0
b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC0xMDE3LDYgKzEwMjEsMTcgQEAgSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0RXhjZXB0aW9uQ29uc3RydWN0
b3IsIChKU0dsb2JhbE8KICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RfVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhdHRyaWJ1dGVOYW1lKTsKIH0KIAor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdF9UZXN0R2VuZXJhdGVBZGRP
cGFxdWVSb290Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEdlbmVyYXRlQWRkT3Bh
cXVlUm9vdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
ICZ0aGlzT2JqZWN0KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdEdsb2Jh
bE9iamVjdF9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Q29uc3RydWN0b3IsIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0X1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3RDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RfVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKaW5kZXggOTg0OWIxMjMyODUzODdhOGY5N2IwOWU0NjM0
M2Y5ZDM4Nzk4ZTZlYS4uMjhkNjc3MWE5YTliMjM2OTExOWZkY2JjNTM4N2M4YjBiZTgyNzE5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1l
bnRhbERlcGVuZGVuY2llcy5kZXAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKQEAgLTExMCw2ICsxMTAsOSBAQCBX
ZWJET01UZXN0RXZlbnRUYXJnZXQuaDoKIEpTVGVzdEV4Y2VwdGlvbi5oOiAKIERPTVRlc3RFeGNl
cHRpb24uaDogCiBXZWJET01UZXN0RXhjZXB0aW9uLmg6IAorSlNUZXN0R2VuZXJhdGVBZGRPcGFx
dWVSb290Lmg6IAorRE9NVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdC5oOiAKK1dlYkRPTVRlc3RH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuaDogCiBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6IAog
RE9NVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDogCiBXZWJET01UZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5oOiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
YjcyODcwYWVjY2U3NmM4NzA2YjI0ZTVlMWFkM2M2YWUwZDJjMzVmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3QuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworWworICAgIEV4cG9zZWQ9VGVzdEdsb2JhbE9iamVjdCwKKyAg
ICBHZW5lcmF0ZUFkZE9wYXF1ZVJvb3Q9b3duZXJPYmplY3RDb25jdXJyZW50bHkKK10gaW50ZXJm
YWNlIFRlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgc29tZUF0dHJpYnV0ZTsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA1ZjhjNzUyYWFlODc0NzhhNWM2OWQ3ODM5NTk3YzQ5OTlmMmUyMzIwLi4yMDVm
NTc5OGM2NDMwZGFiNDhlODFlMzQ5YjMxYTllYzY2MTk4YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0yNzA2LDYgKzI3MDYsMTEgQEAgdWludDY0X3QgSW50ZXJuYWxz
OjplbGVtZW50SWRlbnRpZmllcihFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIHJldHVybiBl
bGVtZW50LmRvY3VtZW50KCkuaWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCkudG9VSW50NjQo
KTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6OmlzRWxlbWVudEFsaXZlKERvY3VtZW50JiBkb2N1bWVu
dCwgdWludDY0X3QgZWxlbWVudElkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3Vt
ZW50LnNlYXJjaEZvckVsZW1lbnRCeUlkZW50aWZpZXIobWFrZU9iamVjdElkZW50aWZpZXI8RWxl
bWVudElkZW50aWZpZXJUeXBlPihlbGVtZW50SWRlbnRpZmllcikpOworfQorCiB1aW50NjRfdCBJ
bnRlcm5hbHM6OmZyYW1lSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCkBAIC0zODY1LDYgKzM4
NzAsMTEgQEAgU3RyaW5nIEludGVybmFsczo6Z2V0SW1hZ2VTb3VyY2VVUkwoRWxlbWVudCYgZWxl
bWVudCkKIAogI2lmIEVOQUJMRShWSURFTykKIAordW5zaWduZWQgSW50ZXJuYWxzOjptZWRpYUVs
ZW1lbnRDb3VudCgpCit7CisgICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnQ6OmFsbE1lZGlhRWxl
bWVudHMoKS5zaXplKCk7Cit9CisKIFZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6bWVkaWFSZXNw
b25zZVNvdXJjZXMoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWEpCiB7CiAgICAgYXV0byogcmVzb3Vy
Y2VMb2FkZXIgPSBtZWRpYS5sYXN0TWVkaWFSZXNvdXJjZUxvYWRlckZvclRlc3RpbmcoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDEzNzI5NTk4NTUyM2Y3ZDJmODMxYWVmMmU4
MzM2MDAzZWNlOTg2N2YuLmQ5MTkzYjM5OTQ4NzVmZGFlYjIzM2VlNzRjNzYwNzRkNGYwMjFkMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNDg0LDYgKzQ4NCw4IEBAIHB1Ymxp
YzoKICAgICB1aW50NjRfdCBzdG9yYWdlQXJlYU1hcENvdW50KCkgY29uc3Q7CiAKICAgICB1aW50
NjRfdCBlbGVtZW50SWRlbnRpZmllcihFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCBpc0VsZW1l
bnRBbGl2ZShEb2N1bWVudCYsIHVpbnQ2NF90IGRvY3VtZW50SWRlbnRpZmllcikgY29uc3Q7CisK
ICAgICB1aW50NjRfdCBmcmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKICAg
ICB1aW50NjRfdCBwYWdlSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYpIGNvbnN0OwogCkBAIC02
NDQsNiArNjQ2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRJbWFnZVNvdXJjZVVSTChFbGVt
ZW50Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCisgICAgdW5zaWduZWQgbWVkaWFFbGVtZW50Q291
bnQoKTsKICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYVJlc3BvbnNlU291cmNlcyhIVE1MTWVkaWFF
bGVtZW50Jik7CiAgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFSZXNwb25zZUNvbnRlbnRSYW5nZXMo
SFRNTE1lZGlhRWxlbWVudCYpOwogICAgIHZvaWQgc2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbihI
VE1MTWVkaWFFbGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
MjZlYTE2ZmQ3ZTFjMWE5NDZmMTk1ZTcyMmQwM2JhY2M4M2I3YjMyYS4uOWUzNjYyYmIwZjE2Njky
YmYzNmVjMzdiMzAzOTQwYTFkM2Y4MGJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtODc1LDYgKzg3NSw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgc3RvcmFnZUFyZWFNYXBDb3VudDsKIAogICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBlbGVtZW50SWRlbnRpZmllcihFbGVtZW50IGVsZW1lbnQpOworICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gYm9vbGVhbiBpc0VsZW1lbnRBbGl2ZSh1bnNpZ25lZCBsb25n
IGxvbmcgZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZnJhbWVJ
ZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50KTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcGFn
ZUlkZW50aWZpZXIoRG9jdW1lbnQgZG9jdW1lbnQpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2E5ZDE2Mzc4MmM4Mzlj
Yjc1YjUxN2Q1M2UwNGRkYWViMjdmYTBkNS4uYTYwZTdhNDRmMmU2YmRhMjU1Y2ZkYmUyODllYjlh
MDhiMzkzNjMwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA2LTI4ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW90ZVBsYXliYWNrIG11c3Qga2Vl
cCBpdHMgbWVkaWEgZWxlbWVudCBhbGl2ZSB3aGVuIHRoZXJlIGlzIGEgcGVuZGluZyBhY3Rpdml0
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NDcx
CisgICAgICAgIDxyZGFyOi8vNzk2OTQwMTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBHQyB0ZXN0LgorCisgICAgICAgICogbWVkaWEv
cmVtb3RlcGxheWJhY2std2F0Y2gtYXZhaWxhYmlsaXR5LWdjLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvcmVtb3RlcGxheWJhY2std2F0Y2gtYXZhaWxhYmlsaXR5LWdjLmh0
bWw6IEFkZGVkLgorCiAyMDIxLTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gTGFzdCBmZXcgc2Vjb25kcyBvZiAnYXVkaW8vd2VibTsgY29k
ZWNzPXZvcmJpcycgYXBwZW5kZWQgdG8gYSBTYW1wbGVCdWZmZXIgYXJlIG5vdCBwbGF5ZWQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJp
bGl0eS1nYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13
YXRjaC1hdmFpbGFiaWxpdHktZ2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNzdlZTExNjQ2
ODFhNzg0NTc5YWEyZmE0OTU5Y2E0MzdhYmRjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9yZW1vdGVwbGF5YmFjay13YXRjaC1hdmFpbGFiaWxpdHktZ2MtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0aGF0IGNhbGxpbmcgd2F0Y2hBdmFpbGFi
aWxpdHkgd2lsbCBrZWVwIHRoZSBtZWRpYSBlbGVtZW50IGFsaXZlIHVudGlsIHRoZSBjYWxsYmFj
ayBpcyBjYWxsZWQuIFlvdSBzaG91bGQgc2VlIFBBU1MgYmVsb3c6CisKK1BBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3JlbW90ZXBsYXliYWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1n
Yy5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVtb3RlcGxheWJhY2std2F0Y2gtYXZhaWxhYmls
aXR5LWdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0YWJhNzk2NTRiYTFjMzYyOWQzYzhkNmQxZDA1YWZh
MzVlODE5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlbW90ZXBsYXli
YWNrLXdhdGNoLWF2YWlsYWJpbGl0eS1nYy5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworfQorCitsZXQgZWxlbWVudElkZW50aWZpZXIgPSBudWxsOworbGV0IHBhcmVu
dElkZW50aWZpZXIgPSBudWxsOworbGV0IGl0ZXJhdGlvbkNvdW50ID0gMjA7CitsZXQgd2F0Y2hk
b2dUaW1lciA9IG51bGw7CitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICghaXRlcmF0aW9u
Q291bnQpCisgICAgICAgIHJldHVybiBlbmRUZXN0KCdQQVNTJyk7CisKKyAgICBpbnRlcm5hbHMu
cXVldWVUYXNrKCdET01NYW5pcHVsYXRpb24nLCAoKSA9PiB7CisgICAgICAgIEdDQ29udHJvbGxl
ci5jb2xsZWN0KCk7CisgICAgfSk7CisKKyAgICAoKCkgPT4geworICAgICAgICBjb25zdCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlkZW8nKTsKKyAgICAgICAgZWxlbWVudElk
ZW50aWZpZXIgPSBpbnRlcm5hbHMuZWxlbWVudElkZW50aWZpZXIoZWxlbWVudCk7CisKKyAgICAg
ICAgY29uc3QgcGFyZW50Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
ICAgICBwYXJlbnRJZGVudGlmaWVyID0gaW50ZXJuYWxzLmVsZW1lbnRJZGVudGlmaWVyKHBhcmVu
dE5vZGUpOworICAgICAgICBwYXJlbnROb2RlLmFwcGVuZENoaWxkKGVsZW1lbnQpOworCisgICAg
ICAgIGVsZW1lbnQucmVtb3RlLndhdGNoQXZhaWxhYmlsaXR5KGNoZWNrRWxlbWVudCk7CisgICAg
ICAgIHdhdGNoZG9nVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGVuZFRlc3QoJ0ZBSUwgLSB0aGUg
Y2FsbGJhY2sgd2FzIG5ldmVyIGNhbGxlZCcpLCAzMDAwKTsKKyAgICB9KSgpOworCisgICAgR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKK30KKworZnVuY3Rpb24gY2hlY2tFbGVtZW50KCkKK3sKKyAg
ICBjbGVhclRpbWVvdXQod2F0Y2hkb2dUaW1lcik7CisKKyAgICBpZiAoIWludGVybmFscy5pc0Vs
ZW1lbnRBbGl2ZShlbGVtZW50SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBlbmRUZXN0KCdG
QUlMIC0gZWxlbWVudCBpcyBubyBsb25nZXIgYWxpdmUnKTsKKworICAgIGlmICghaW50ZXJuYWxz
LmlzRWxlbWVudEFsaXZlKHBhcmVudElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gZW5kVGVz
dCgnRkFJTCAtIHBhcmVudCBpcyBubyBsb25nZXIgYWxpdmUnKTsKKworICAgIC0taXRlcmF0aW9u
Q291bnQ7CisgICAgc2V0VGltZW91dCgoKSA9PiBydW5UZXN0KCksIDApOworfQorCitmdW5jdGlv
biBlbmRUZXN0KHN0YXR1cykKK3sKKyAgICByZXN1bHQudGV4dENvbnRlbnQgPSBzdGF0dXM7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J3J1blRlc3QoKSc+Cis8
cD5UaGlzIHRlc3RzIHRoYXQgY2FsbGluZyB3YXRjaEF2YWlsYWJpbGl0eSB3aWxsIGtlZXAgdGhl
IG1lZGlhIGVsZW1lbnQgYWxpdmUgdW50aWwgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZC4gWW91IHNo
b3VsZCBzZWUgUEFTUyBiZWxvdzo8L3A+Cis8cCBpZD0icmVzdWx0Ij5SdW5uaW5nPC9wPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>