<?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>227191</bug_id>
          
          <creation_ts>2021-06-19 21:21:00 -0700</creation_ts>
          <short_desc>HitTestLocation should not use a fixed (1px, 1px) area for point based hittest</short_desc>
          <delta_ts>2022-06-29 14:23:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <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>
          <dependson>227185</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1771142</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-06-19 21:21:00 -0700</bug_when>
    <thetext>at least it should be based on the device scale factor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771143</commentid>
    <comment_count>1</comment_count>
      <attachid>431812</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-06-19 21:34:31 -0700</bug_when>
    <thetext>Created attachment 431812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771186</commentid>
    <comment_count>2</comment_count>
      <attachid>431812</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 13:16:05 -0700</bug_when>
    <thetext>Comment on attachment 431812
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        Eventually the input to HitTestLocation::intersect should be a device pixel snapped rect similar to painting.

What makes doing this now difficult?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771187</commentid>
    <comment_count>3</comment_count>
      <attachid>431812</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-20 13:16:46 -0700</bug_when>
    <thetext>Comment on attachment 431812
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        This is an intermediate solution to support hit-test content on subpixel position.
&gt; +        It fixes cases when we incorrectly find renderers on subpixel positions due to the integral inflate of the hit coverage area.
&gt; +        e.g
&gt; +          hit testing location is at [10, 10]
&gt; +          renderer is at [10.6, 10] -&gt; device pixel snapped to [11p, 10] on a 2x display

Seems like we should have some tests for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771448</commentid>
    <comment_count>4</comment_count>
      <attachid>431907</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-06-21 14:14:26 -0700</bug_when>
    <thetext>Created attachment 431907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771763</commentid>
    <comment_count>5</comment_count>
      <attachid>431986</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-06-22 12:57:50 -0700</bug_when>
    <thetext>Created attachment 431986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772910</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-26 21:21:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/79824597&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879128</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-06-29 14:23:22 -0700</bug_when>
    <thetext>Alan ended up landing a more targeted fix. This change is no longer needed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431812</attachid>
            <date>2021-06-19 21:34:31 -0700</date>
            <delta_ts>2021-06-21 14:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227191-20210619213431.patch</filename>
            <type>text/plain</type>
            <size>37407</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjZTY5N2VkNWY0M2E3
YmM2NTE3NjUxN2NiOThkMmFjM2Y5ZGE5MC4uZmY1ODFlNDVjNzBmZTJlZGVlZTY2NWI5MDliZjgz
ZDRlZjQwOTY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA2LTE5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9jYXRpb24gc2hv
dWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJhc2VkIGhpdHRl
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgYW4gaW50ZXJtZWRpYXRlIHNvbHV0aW9uIHRvIHN1cHBvcnQgaGl0LXRlc3QgY29udGVudCBv
biBzdWJwaXhlbCBwb3NpdGlvbi4KKyAgICAgICAgSXQgZml4ZXMgY2FzZXMgd2hlbiB3ZSBpbmNv
cnJlY3RseSBmaW5kIHJlbmRlcmVycyBvbiBzdWJwaXhlbCBwb3NpdGlvbnMgZHVlIHRvIHRoZSBp
bnRlZ3JhbCBpbmZsYXRlIG9mIHRoZSBoaXQgY292ZXJhZ2UgYXJlYS4KKyAgICAgICAgZS5nCisg
ICAgICAgICAgaGl0IHRlc3RpbmcgbG9jYXRpb24gaXMgYXQgWzEwLCAxMF0KKyAgICAgICAgICBy
ZW5kZXJlciBpcyBhdCBbMTAuNiwgMTBdIC0+IGRldmljZSBwaXhlbCBzbmFwcGVkIHRvIFsxMXAs
IDEwXSBvbiBhIDJ4IGRpc3BsYXkKKyAgICAgICAgTm93IHNpbmNlIHdlIGluZmxhdGUgdGhlIGhp
dCB0ZXN0ICJsb2NhdGlvbiIgYnkgWzEsIDFdLCB3ZSBmaW5kIHRoZSByZW5kZXJlciBhdCAxMC42
IHdoaWxlIGl0IGlzIGNsZWFybHkgb2ZmIGJ5IDIgZGV2aWNlIHBpeGVscyAodmlzdWFsbHkpLgor
ICAgICAgICBUaGlzIGhhZCB3b3JrZWQgZmluZSBiZWZvcmUgd2UgaW50cm9kdWNlZCBzdWJwaXhl
bCBsYXlvdXQgKGFuZCBzdGlsbCB3b3JrcyBmaW5lIG9uIDF4IGRpc3BsYXlzKS4KKworICAgICAg
ICBFdmVudHVhbGx5IHRoZSBpbnB1dCB0byBIaXRUZXN0TG9jYXRpb246OmludGVyc2VjdCBzaG91
bGQgYmUgYSBkZXZpY2UgcGl4ZWwgc25hcHBlZCByZWN0IHNpbWlsYXIgdG8gcGFpbnRpbmcuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3MpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNj
b3BlOjplbGVtZW50c0Zyb21Qb2ludCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCk6CisgICAgICAgICog
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVu
dE1haW5Db250ZW50Rm9yUHVycG9zZXNPZkF1dG9wbGF5KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRVbmRlck1vdXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmV2ZW50TWF5U3RhcnREcmFnIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjppc0luc2lkZVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpoaXRUZXN0UmVzdWx0
SW5GcmFtZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZG9jdW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFNhbXBsZUxvY2F0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllckJ5QXBw
bHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0Rmxv
YXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0IGNvbnN0KToK
KwogMjAyMS0wNi0xOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHJlZHVuZGFudCBIaXRUZXN0TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRl
clBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNDY0
ZTUyZjAxZDgwM2M1NWViMzYzNDU4ZTI5MWM2ZDIxOTY0ZjhhLi5hNGQ0ZTliY2M4ODA4ZTIxZjQw
MDE3NmY1N2QwNzg2Nzc0ZGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2
LTE5ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9j
YXRpb24gc2hvdWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJh
c2VkIGhpdHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKwogMjAyMS0wNi0xNSAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IE1T
RTogTmV0ZmxpeCBwbGF5YmFjayBzb21ldGltZXMgZmFpbHMgd2hlbiBnb2luZyB0byAibmV4dCBl
cGlzb2RlIiBpbiBzZXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDM0ZWE4ZjQ4YzkwMzg2MGMxZGYzZjNmZTg2
YjQ0YzdjYjU3MjcwZDMuLjM2YzQyZmQ0ZTNmYjE0ODhlNDBmOGYxZjUyMDU1ZGI1ZWU4MDY5Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
cHJlc3MoKQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAg
aWYgKGRvY3VtZW50KSB7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmls
aXR5SGl0VGVzdCB9OwotICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgeyBjbGlj
a1BvaW50KCkgfTsKKyAgICAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7
IGNsaWNrUG9pbnQoKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAg
ICAgIGRvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIGhpdFRlc3RSZXN1bHQpOwogICAgICAgICBp
ZiAoYXV0byogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBpbm5lck5vZGUtPnNoYWRvd0hvc3QoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGZjYWQ0YzczNWViMzkzNTU0YWU3OTA5MjY1ZTg2MTBlYzAz
ODU4YmYuLjQxYjJkMWU4YjA3Mjg4YTg1YTg1MDVkMjRkN2RmNTM4OTg4NDU2OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcApAQCAtMjMyMyw3ICsyMzIzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBv
aW4KICAgICAgICAgcG9pbnRUb1VzZSA9IHBvaW50OwogI2VuZGlmCiAgICAgICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUgfTsKLSAgICAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgeyBwb2ludFRvVXNlIH07CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gSGl0VGVzdFJlc3VsdCB7IHBvaW50VG9Vc2UsIDEgLyByZW5kZXJWaWV3LT5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgcmVuZGVyVmlldy0+ZG9jdW1lbnQo
KS5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAgIGlubmVyTm9kZSA9IHJlc3VsdC5p
bm5lck5vZGUoKTsKICAgICAgICAgaWYgKCFpbm5lck5vZGUpCkBAIC0yNTM3LDcgKzI1MzcsNyBA
QCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JiBwbwogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGRvd25j
YXN0PFJlbmRlckJveD4oKm1fcmVuZGVyZXIpLmxheWVyKCk7CiAgICAgIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0VGVzdCB9OwotICAgIEhpdFRlc3RSZXN1bHQg
aGl0VGVzdFJlc3VsdCB7IHBvaW50IH07CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCB7IHBvaW50LCAxIC8gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH07CiAgICAgbGF5ZXItPmhpdFRlc3QoaGl0VHlwZSwgaGl0VGVzdFJlc3VsdCk7CiAg
ICAgTm9kZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZjQyYTU1ODk5NTlmMjI0ZjA5NmIyMzE3YzVj
MWRhZTRmODhkMzdiMC4uMmZlZGNiOTk2MTNhOGFiMTBkNWYxYmE5ZDNjZGNlNTcxNmRhNDJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDE5LDkgKzQwMTksOSBAQCB2b2lkIERvY3Vt
ZW50Ojpwcm9jZXNzQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0
JiBhcHBsaWNhdGlvbgogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBEb2N1bWVudDo6cHJl
cGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IExheW91
dFBvaW50JiBkb2N1bWVudFBvaW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQog
ewogICAgIGlmICghaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICByZXR1cm4gTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyhldmVudCwgSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgp
KSk7CisgICAgICAgIHJldHVybiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzKGV2ZW50LCBI
aXRUZXN0UmVzdWx0KHsgfSwgMSAvIGRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCB7IGRvY3VtZW50UG9pbnQsIDEgLyBkZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAg
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgYXV0byBjYXB0dXJlRWxlbWVudENoYW5n
ZWQgPSBDYXB0dXJlQ2hhbmdlOjpObzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOWRhMDRlN2Y3
YWE4NTFkMGI4ZjcwYTk1OWU3NjdhOWNkMGI0MTcxYS4uNjc0M2Q0N2UwYTliYThmNzI2NjI3Njlh
MDBkZTMzM2MxNGVhZDc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU2NCw3ICs1NjQsNyBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBRdWlya3MmIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1f
cXVpcmtzOyB9CiAKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDhmNmM0N2Y4Y2Q2OGVmZmEwOTkyNDZjMDAxMDUyNjU5
MmFiNGViNjMuLmM3NDViNjI0MDE4MmJhZmM0YzRiYjBkMTY5YzM1NTIzZTJjZWFiNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmUHRyPE5vZGU+IFRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExh
eW91dFBvaW4KICAgICBpZiAoIWFic29sdXRlUG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoYWJzb2x1dGVQb2ludC52YWx1ZSgpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEg
LyBkb2N1bWVudFNjb3BlKCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRvY3VtZW50U2Nv
cGUoKS5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3VsdCk7CiAgICAgaWYgKGxvY2FsUG9p
bnQpCiAgICAgICAgICpsb2NhbFBvaW50ID0gcmVzdWx0LmxvY2FsUG9pbnQoKTsKQEAgLTM5Niw3
ICszOTYsNyBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1lbnRzRnJv
bVBvaW50KGRvdWJsZSBjbGllbnRYLCBkb3VibGUgY2xpZQogICAgICAgICByZXR1cm4gZWxlbWVu
dHM7CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRU
eXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpJbmNsdWRlQWxsRWxlbWVudHNVbmRlclBvaW50IH07Ci0gICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCkgfTsKKyAgICBhdXRv
IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEgLyBkb2N1
bWVudC5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgZG9jdW1lbnRTY29wZSgpLmhpdFRlc3Qo
aGl0VHlwZSwgcmVzdWx0KTsKIAogICAgIFJlZlB0cjxOb2RlPiBsYXN0Tm9kZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZmNkODBkMWNiY2E3OGIwYWU0
NDE3MmEzODlkYTdmM2YzZjU0MDVjZC4uYzUyNWNmMzYxM2Y5MGJhMzZjYmJlYTg4OTA5OWUxOWZk
N2NiYWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAg
LTE5MDUsNyArMTkwNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkgY29uc3QKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICBhdXRv
IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIG1fZG9jdW1lbnQtPmRldmljZVNj
YWxlRmFjdG9yKCkgfTsKICAgICBtX2RvY3VtZW50LT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCks
IHJlc3VsdCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IGlmICghaW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDVjZWNhZWJmZDNiMGFjOTBhNDBiZmNk
YzI2ZThiMzhjMmY5ODdjOWMuLjA4OWE3ZjM5N2ZjNzgyM2ZkYTAzNTliN2JkMGYwMDliM2RjYmU1
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC00NzEs
MjkgKzQ3MSwzMCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1JlcGxhY2VtZW50T2JzY3Vy
ZWQoKQogICAgIC8vIGl0IGlzIHZpc2libGUgYW5kIGlzIG5vdCBtYXNrZWQgYnkgb3RoZXIgZWxl
bWVudHMuCiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Oklnbm9yZUNsaXBwaW5nLCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0OwotICAgIEhpdFRlc3RMb2NhdGlvbiBsb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmll
d1JlY3QuY2VudGVyKCkgfSB9OworICAgIGF1dG8gc3VicGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVz
dGluZyA9IDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBsb2Nh
dGlvbiA9IEhpdFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmlld1JlY3QuY2VudGVyKCkg
fSwgc3VicGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVzdGluZyB9OwogICAgIEFTU0VSVCghcmVuZGVy
Vmlldy0+bmVlZHNMYXlvdXQoKSk7CiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3LT5kb2N1bWVudCgp
Lm5lZWRzU3R5bGVSZWNhbGMoKSk7CiAgICAgYm9vbCBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVz
dChoaXRUeXBlLCBsb2NhdGlvbiwgcmVzdWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5u
ZXJOb2RlKCkgIT0gJnBsdWdpblJlbmRlcmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4LCB5KTsKKyAgICBs
b2NhdGlvbiA9IHsgTGF5b3V0UG9pbnQoeCwgeSksIHN1YnBpeGVsQWRqdXN0bWVudEZvckhpdFRl
c3RpbmcgfTsKICAgICBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCBsb2NhdGlv
biwgcmVzdWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJnBsdWdp
blJlbmRlcmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkpOworICAgIGxvY2F0aW9uID0g
eyBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkpLCBzdWJwaXhlbEFkanVzdG1lbnRGb3JIaXRUZXN0
aW5nIH07CiAgICAgaGl0ID0gdG9wRG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgbG9jYXRpb24s
IHJlc3VsdCk7CiAgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9ICZwbHVnaW5S
ZW5kZXJlci5mcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAgICBsb2Nh
dGlvbiA9IHsgTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1
c3RtZW50Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhp
dFR5cGUsIGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5v
ZGUoKSAhPSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWlnaHQpOwor
ICAgIGxvY2F0aW9uID0geyBMYXlvdXRQb2ludCh4LCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1
c3RtZW50Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhp
dFR5cGUsIGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5v
ZGUoKSAhPSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApp
bmRleCAyZTMwNGY3YTc4OTZiNDExMmRjMTQ2ZThhOTAyYzE5NDEyYWJlYjRjLi5iMGZkZTQwNGRl
MDIxMzc5MGRjYWQ4NTEyYjI1NGFmNzM5ZjczMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk2NCw3ICs5NjQsNyBAQCBzdGF0aWMgYm9vbCBp
c0VsZW1lbnRNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdXRvcGxheShjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbAogICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9uID0gbWFpbkZyYW1l
LnZpZXcoKS0+ZG9jdW1lbnRTY3JvbGxQb3NpdGlvblJlbGF0aXZlVG9WaWV3T3JpZ2luKCk7CiAg
ICAgSW50UmVjdCByZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KHJlY3RSZWxhdGl2ZVRvVmlldy5s
b2NhdGlvbigpICsgc2Nyb2xsUG9zaXRpb24sIHJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwog
ICAgIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVz
dFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpJZ25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFn
ZW50U2hhZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHJlY3RSZWxhdGl2
ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IHJlY3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCksIDEgLyBkb2N1bWVudC5kZXZp
Y2VTY2FsZUZhY3RvcigpIH07CiAKICAgICBtYWluRnJhbWUuZG9jdW1lbnQoKS0+aGl0VGVzdCho
aXRUeXBlLCByZXN1bHQpOwogICAgIHJlc3VsdC5zZXRUb05vblVzZXJBZ2VudFNoYWRvd0FuY2Vz
dG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRmZWU4NmVj
OGE1MjEwMDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIuLmZhYWVkMmVhNWIyMzg3MjFjYjYyODJm
YWYzOWNhZWEwNDk2OGVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRVbmRlck1vdXNlKERv
Y3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UsIGNvbnN0IEludFBvaW50JgogICAgIGZsb2F0IHpv
b21GYWN0b3IgPSBmcmFtZSA/IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpIDogMTsKICAgICBMYXlv
dXRQb2ludCBwb2ludChwLngoKSAqIHpvb21GYWN0b3IsIHAueSgpICogem9vbUZhY3Rvcik7CiAK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CisgICAgYXV0byByZXN1bHQgPSBIaXRU
ZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBkb2N1bWVudFVuZGVyTW91c2UtPmRldmljZVNjYWxlRmFj
dG9yKCkgfTsKICAgICBkb2N1bWVudFVuZGVyTW91c2UtPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3Qo
KSwgcmVzdWx0KTsKIAogICAgIGF1dG8qIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC02
NTQsNyArNjU0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJh
Zyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSBtX3Bh
Z2UubWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdEYXRhLmNsaWVudFBv
c2l0aW9uKCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwb2lu
dCk7CisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBtX2RvY3Vt
ZW50VW5kZXJNb3VzZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGlmICghbV9wYWdlLm1h
aW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBiNTU2ZGM3NjNlODQwNDFjNTg1MzYy
NjMxNDlkMTBiM2VjOTU4YzhiLi44NTZmZGM3NzVhMWI0NWE0ZjBmMWYzMGRiODg4MjNjYTk0Nzcy
NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NzksNyArODc5LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICB9CiAKICAgICBpZiAobV9zZWxlY3Rpb25J
bml0aWF0aW9uU3RhdGUgIT0gRXh0ZW5kZWRTZWxlY3Rpb24pIHsKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uKTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCAxIC8g
bV9mcmFtZS5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOwogCiAgICAg
ICAgIHVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwpAQCAtOTEyLDcgKzkxMiw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KSBjb25zdAogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxv
d2VkKCk7CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOworICAgIGF1
dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQu
cG9zaXRpb24oKSksIDEgLyBkb2N1bWVudC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRv
Y3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwog
ICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAt
OTMyLDcgKzkzMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURyYWcoKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25s
eSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Ok1v
dmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQg
fTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFz
dEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOworICAgIGF1dG8gcmVz
dWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25N
b3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VT
Y2FsZUZhY3RvcigpIH07CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsK
ICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKIH0KQEAgLTExNzcsMTEg
KzExNzcsMTEgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgT3B0aW8KICAgICBpZiAoYXV0byogZnJhbWVW
aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5b3V0QW5k
U3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVz
dWx0IHsgcG9pbnQgfTsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsK
ICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1
cm4geyB9OwogCisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBk
b2N1bWVudC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoaGl0VHlwZSk7CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAg
ICBpZiAoIXJlcXVlc3QucmVhZE9ubHkoKSkKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IoKQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0
Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7
CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBl
IHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
QWxsb3dGcmFtZVNjcm9sbGJhcnMgfTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53
aW5kb3dUb0NvbnRlbnRzKCptX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBhdXRvIHJl
c3VsdCA9IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKCptX2xhc3RLbm93
bk1vdXNlUG9zaXRpb24pLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAg
ICBkb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogCiAgICAgdXBkYXRlQ3Vyc29y
KCp2aWV3LCByZXN1bHQsIHNoaWZ0S2V5KTsKQEAgLTI3NjQsNyArMjc2NCw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBOb2RlKiB0YXJnZXROCiBib29sIEV2ZW50SGFuZGxlcjo6aXNJbnNpZGVTY3JvbGxiYXIoY29u
c3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIGlmIChhdXRvKiBkb2N1bWVu
dCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCB7
IHdpbmRvd1BvaW50IH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHdp
bmRvd1BvaW50LCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAg
ZG9jdW1lbnQtPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93
VXNlckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
LnNjcm9sbGJhcigpOwogICAgIH0KQEAgLTI5NDEsNyArMjk0MSw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCwgT3B0CiAgICAgfQogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdDsKLSAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRl
bnRzKGV2ZW50LnBvc2l0aW9uKCkpLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgUmVmUHRy
PEVsZW1lbnQ+IGVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAtMzI1OCw3ICsz
MjU4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkK
ICAgICAgICAgdGFyZ2V0Tm9kZSA9IGRvYzsKIAogICAgIC8vIFVzZSB0aGUgZm9jdXNlZCBub2Rl
IGFzIHRoZSB0YXJnZXQgZm9yIGhvdmVyIGFuZCBhY3RpdmUuCi0gICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQocG9zaXRpb24pOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHBvc2l0
aW9uLCAxIC8gZG9jLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgcmVzdWx0LnNldElubmVy
Tm9kZSh0YXJnZXROb2RlKTsKICAgICBkb2MtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoT3B0aW9u
U2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUs
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwg
cmVzdWx0LnRhcmdldEVsZW1lbnQoKSk7CiAKQEAgLTMzODcsNyArMzM4Nyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoKQogCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
bV9mcmFtZS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLnZpZXcoKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2lu
ZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQo
KSkpKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndp
bmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50
IHsgfSkpLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNl
ckFnZW50U2hhZG93Q29udGVudCB9OwogICAgICAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0
VHlwZSwgcmVzdWx0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVIb3ZlckFjdGl2ZVN0
YXRlKGhpdFR5cGUsIHJlc3VsdC50YXJnZXRFbGVtZW50KCkpOwpAQCAtMzk3Miw3ICszOTcyLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlz
cGF0Y2hFdmVudHMgPSB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhE
cmFnU291cmNlQWN0aW9uOjpESFRNTCk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxl
bWVudCB0aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgMSAvIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNl
ckFnZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICBpZiAobV9mcmFtZS5wYWdl
KCkpCiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5zb3VyY2UgPSBtX2ZyYW1lLnBhZ2UoKS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQudGFyZ2V0RWxl
bWVudCgpLCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGRyYWdTdGF0ZSgpKTsKQEAgLTQz
NDcsMTEgKzQzNDcsMTAgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUZvclRv
dWNoUG9pbnRTdGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHMKIAogc3RhdGljIEhpdFRl
c3RSZXN1bHQgaGl0VGVzdFJlc3VsdEluRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSkKIHsK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0KICAgICBpZiAoIWZyYW1lIHx8ICFm
cmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IHJldHVybiB7IH07CiAKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwg
MSAvIGZyYW1lLT5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgaWYgKGZy
YW1lLT52aWV3KCkpIHsKICAgICAgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlz
aWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgIGlmICghcmVjdC5jb250YWlucyhyb3VuZGVkSW50
UG9pbnQocG9pbnQpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNzA1NGFjYzkwMjE0ZWI4MTdi
ZDc4NDI5OGNlNzdmNzZkMzJjNWRlZS4uYjkxMDVmMDhiYzliNmUxZGFmMDcyNTJkYjgwY2MxYjQ4
MWVkMmVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgzMiwxNyArODMyLDEyIEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IGZyYW1lUG9pbnQpIGNvbnN0CiAKIERvY3VtZW50KiBGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KGNv
bnN0IEludFBvaW50JiBwb2ludCkKIHsKLSAgICBpZiAoIXZpZXcoKSkKKyAgICBpZiAoIXZpZXco
KSB8fCAhY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
SW50UG9pbnQgcHQgPSB2aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwdCk7Ci0KLSAgICBpZiAoY29udGVudFJl
bmRlcmVyKCkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFn
ZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQgfTsKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0
UG9pbnQocHQsIGhpdFR5cGUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgp
ID8gJnJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgY29uc3RleHByIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBhdXRvIHJlc3VsdCA9IGV2ZW50
SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHZpZXcoKS0+d2luZG93VG9Db250ZW50cyhw
b2ludCksIGhpdFR5cGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyAmcmVzdWx0
LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAogc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9p
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBiZjM1YzIw
OTJjODAwODhhOWQ2ZGY2MmJjYWU0MGI1OTYxZDY5NmE4Li43NDIzZGQ0M2RhN2EyYjVmMjhhMWJk
ZmMwYWRlNDE5YWQxYzc3YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b2xvclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxl
ci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNhbXBsZUxvY2F0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogICAgIC8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI1MTY3PiAoU2FtcGxlZCBQYWdlIFRvcCBDb2xv
cjogaG9vayBpbnRvIHBhaW50aW5nIGxvZ2ljIGluc3RlYWQgb2YgdGFraW5nIHNuYXBzaG90cykK
IAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFRlc3RS
ZXF1ZXN0VHlwZXMgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHksIEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpDb2xsZWN0TXVsdGlwbGVFbGVtZW50cywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkluY2x1
ZGVBbGxFbGVtZW50c1VuZGVyUG9pbnQgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHQobG9jYXRpb24pOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBs
b2NhdGlvbiwgMSAvIGRvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICBkb2N1bWVu
dC5oaXRUZXN0KGhpdFRlc3RSZXF1ZXN0VHlwZXMsIGhpdFRlc3RSZXN1bHQpOwogCiAgICAgZm9y
IChhdXRvJiBoaXRUZXN0Tm9kZSA6IGhpdFRlc3RSZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwCmluZGV4
IDJiNTFhNGU3NmExNDg1NjMzZTk3OWU4NDI3NTY4MDk2NjEwMTk4N2QuLjM3ZTdjNTRmODA1Njhl
ZmNhNTg5NmZkNTA0MzFjOWY4MDg1ZTgyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uY3BwCkBAIC0yNiw5ICsyNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRpb24oKSA9IGRlZmF1bHQ7CiAKLUhp
dFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkK
K0hpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgZmxvYXQgc3VicGl4ZWxBZGp1c3RtZW50KQogICAgIDogbV9wb2ludChwb2ludCkKLSAgICAs
IG1fYm91bmRpbmdCb3goTGF5b3V0UmVjdCB7IGZsb29yZWRJbnRQb2ludChwb2ludCksIExheW91
dFNpemUgeyAxLCAxIH0gfSkKKyAgICAsIG1fYm91bmRpbmdCb3goTGF5b3V0UmVjdCB7IHBvaW50
LCBMYXlvdXRTaXplIHsgc3VicGl4ZWxBZGp1c3RtZW50LCBzdWJwaXhlbEFkanVzdG1lbnQgfSB9
KQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KHBvaW50KQogICAgICwgbV90cmFuc2Zvcm1lZFJl
Y3QobV9ib3VuZGluZ0JveCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9j
YXRpb24uaAppbmRleCA4MzZmZjc0ZjMwNDBhNDA1ZmI1MzgyZGY0YjQ1MDI3ZTExNDUwM2UxLi43
ZjJlMjhkY2VjMDQ0NjgxMDFlZWVjZjM2NThiYTE2MDQ3N2Y3MzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSGl0VGVzdExvY2F0aW9uKCk7Ci0gICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiwgZmxv
YXQgc3VicGl4ZWxBZGp1c3RtZW50KTsKICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExh
eW91dFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApp
bmRleCA2YzFkOGVkNGJmMjM4YTQ5YjQxZjJmYjZkZWM1ODA3OWFlYzljNWMwLi4xNDExZjAwZTUz
ZGQ5NmVjNzc5OGZjNDdlNDMxYTdmZjA4MWM1OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhcHBlbmRUb05vZGVTZXQoY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgc291cmNlLCBI
aXRUZXN0CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CiAKLUhp
dFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQotICAg
IDogbV9oaXRUZXN0TG9jYXRpb24ocG9pbnQpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgZmxvYXQgc3VicGl4ZWxBZGp1c3RtZW50KQorICAg
IDogbV9oaXRUZXN0TG9jYXRpb24geyBwb2ludCwgc3VicGl4ZWxBZGp1c3RtZW50IH0KICAgICAs
IG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKHBvaW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzVhYTgwYjc0NDA4YjMwMDQyZmNiMzQ1ZjJlNGQx
OTQyZTIyNTkxNy4uYzRmODg3OTJkMDUwYWY4ODBhZDZmN2M0Yjg3ZDQ1M2M4MjkwNzRkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB1c2luZyBOb2RlU2V0ID0gTGlzdEhhc2hTZXQ8UmVmPE5vZGU+PjsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CisgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYsIGZsb2F0IHN1
YnBpeGVsQWRqdXN0bWVudCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBIaXRUZXN0
UmVzdWx0KGNvbnN0IExheW91dFJlY3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYjdlYWZmMjljZTNmNDlkNWZjMTg5MmQ2M2JiYjNk
YjAwMmY5ZjFjYy4uODI4OTFjZjRlOTk5NDdiMDU1ZTJmZDQ0YWQ2OTBkMDQyZjZiMmJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MjcyLDEyICs0Mjcy
LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXJCeUFwcGx5aW5nVHJh
bnNmb3JtKFJlbmRlckxheWVyKiByb290TGF5ZXIKICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUG9pbnQoKTsKICAgICBGbG9hdFF1YWQgbG9jYWxQ
b2ludFF1YWQgPSBuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUXVhZCgpOwogICAgIExheW91dFJl
Y3QgbG9jYWxIaXRUZXN0UmVjdCA9IG5ld1RyYW5zZm9ybVN0YXRlLT5ib3VuZHNPZk1hcHBlZEFy
ZWEoKTsKLSAgICBIaXRUZXN0TG9jYXRpb24gbmV3SGl0VGVzdExvY2F0aW9uOwotICAgIGlmICho
aXRUZXN0TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0KCkpCi0gICAgICAgIG5ld0hpdFRlc3RMb2Nh
dGlvbiA9IEhpdFRlc3RMb2NhdGlvbihsb2NhbFBvaW50LCBsb2NhbFBvaW50UXVhZCk7Ci0gICAg
ZWxzZQotICAgICAgICBuZXdIaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24oZmxvb3Jl
ZExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLQorICAgIGF1dG8gbmV3SGl0VGVzdExvY2F0aW9u
ID0gaGl0VGVzdExvY2F0aW9uLmlzUmVjdEJhc2VkVGVzdCgpID8gSGl0VGVzdExvY2F0aW9uIHsg
bG9jYWxQb2ludCwgbG9jYWxQb2ludFF1YWQgfSA6IEhpdFRlc3RMb2NhdGlvbiB7IGZsb29yZWRM
YXlvdXRQb2ludChsb2NhbFBvaW50KSwgMSAvIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpIH07CiAgICAgLy8gTm93IGRvIGEgaGl0IHRlc3Qgd2l0aCB0aGUgcm9vdCBs
YXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIHJldHVybiBoaXRUZXN0TGF5ZXIodGhpcywgY29u
dGFpbmVyTGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgbG9jYWxIaXRUZXN0UmVjdCwgbmV3SGl0VGVz
dExvY2F0aW9uLCB0cnVlLCBuZXdUcmFuc2Zvcm1TdGF0ZS5wdHIoKSwgek9mZnNldCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAKaW5kZXggYmE2NzIyM2YyODFmYzM0YWI3MTIxNjdjNmQ5YWNlNzcyZTYxNzgxZC4uODQyMTE0
ZDk0NzY3ZDJkZjljMzQ1MzdmNWM1MzlhN2U0Yjg5NzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTcxLDcgKzE3
MSw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNo
aWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmco
KSkgewogICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0
LCBsb2NhbFBvaW50LCBoaXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVz
dFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLSAgICAgICAgICAgIGlm
IChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1
ZXN0LCBmbG9vcmVkTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpID09IEhpdFRlc3RQcm9ncmVzczo6
U3RvcCkKKyAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3Vs
dChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCB7IGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50
KSwgMSAvIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9KSA9PSBIaXRUZXN0UHJvZ3Jl
c3M6OlN0b3ApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xNzksNyArMTc5LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICAvLyBBY2Nl
c3NpYmlsaXR5IHdhbnRzIHRvIHJldHVybiBTVkcgY29udGFpbmVycywgaWYgYXBwcm9wcmlhdGUu
CiAgICAgaWYgKHJlcXVlc3QudHlwZSgpICYgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjY2Vzc2li
aWxpdHlIaXRUZXN0ICYmIG1fb2JqZWN0Qm91bmRpbmdCb3guY29udGFpbnMobG9jYWxQb2ludCkp
IHsKICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2Fs
UG9pbnQpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0
KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50
KSkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVU
b0xpc3RCYXNlZFRlc3RSZXN1bHQobm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgeyBmbG9vcmVk
TGF5b3V0UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkgfSkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggZjJkN2VhMDBmNTRhNzJkMWEyNmUzM2Yx
MDBlZjZlMjU2Nzc3Mjg2Yi4uNWJiZGQ0NzBjNGM0NDJiY2E1ZTYxNTI1ZDM5ODc2Njg0MDY0MTUz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRk9zIGVzdGFibGlzaCBhIHN0
YWNraW5nIGNvbnRleHQsIHNvIHdlIG5lZWQgdG8gaGl0LXRlc3QgYWxsIGxheWVycy4KLSAgICBI
aXRUZXN0TG9jYXRpb24gaGl0VGVzdExvY2F0aW9uKGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBv
aW50KSk7CisgICAgYXV0byBoaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24geyBmbG9v
cmVkTGF5b3V0UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkgfTsKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJl
c3VsdCwgaGl0VGVzdExvY2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0Rm9yZWdyb3VuZCkK
ICAgICAgICAgfHwgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgaGl0
VGVzdExvY2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0RmxvYXQpCiAgICAgICAgIHx8IFJl
bmRlckJsb2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RMb2NhdGlvbiwg
TGF5b3V0UG9pbnQoKSwgSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDgzYzJjNzBi
MjYxZWNjMDIyOWUyYWE0MjE1MzUzYTI5MTkxNWMzMjMuLjcxMjM3OWNiNmFiOTgwMDU3NmZjYjQ3
NGY2Zjc4ZmIwNzg2MjZlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFn
ZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3UKICAgICAgICAgaWYgKGhpdFJ1bGVzLmNhbkhpdEZpbGwpIHsKICAgICAgICAgICAgIGlm
IChtX29iamVjdEJvdW5kaW5nQm94LmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAg
ICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQp
KTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1
bHQobm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgZmxvb3JlZExheW91dFBvaW50KGxvY2FsUG9p
bnQpKSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3Qs
IHsgZmxvb3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpIH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcAppbmRleCA0MTliZjM0ZjRkM2RkZWY3MGVhOWE0MTU1ZDBhMWU1OGIwMjMyZmFmLi40N2Jj
OGUwODk5YTU4Nzg4ZWI0NTc3MzkzNTc1YWM4OWZhNmIyNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CkBAIC0yODYsOCArMjg2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRl
c3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgaWYg
KCFyZW5kZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIWNo
aWxkTm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIEludFBvaW50IGhpdFBvaW50OwotICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdChoaXRQb2ludCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7
IHsgfSwgMSAvIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJl
cXVlc3Q6OlR5cGU6OlNWR0NsaXBDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxs
b3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZUF0
RmxvYXRQb2ludChoaXRUeXBlLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9yZWdyb3VuZCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggZTE0MjY5OTYxN2UxNTFmYmFlZGFmMWRlZTkzNGRm
Yzg1ZjcxZjdjNy4uZTZiYzliYjRmOTE1MGEyOWM5OTgwNjAwMWYwZGE3OTYzMWI0NmNlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAg
LTM2NCw3ICszNjQsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgICAgICAgICAgfHwg
KGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN2Z1N0eWxlLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMu
cmVxdWlyZUZpbGwpICYmIGZpbGxDb250YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJl
RmlsbCwgZmlsbFJ1bGUpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEJvdW5kaW5n
Qm94ICYmIG9iamVjdEJvdW5kaW5nQm94KCkuY29udGFpbnMobG9jYWxQb2ludCkpKSB7CiAgICAg
ICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgTGF5b3V0UG9pbnQobG9jYWxQb2lu
dCkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0
KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50
KSkgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGRO
b2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIHsgZmxv
b3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IGJlMzJhM2U4NjE0OTc5NzcxZTVlMWY2MDI5MmEw
MDc4MzZmMGI0Y2QuLmFlMWI3NzZlY2M3MmQ0YjFmMDhjYTk0NjY4OGQxZDkzZjQ3NzM2OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAt
NDQyLDcgKzQ0Miw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAKICAgICAgICAgICAgIFNW
R0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlIGhpdFRlc3RTY29wZSgqdGhpcyk7CiAKLSAgICAg
ICAgICAgIEhpdFRlc3RMb2NhdGlvbiBoaXRUZXN0TG9jYXRpb24oTGF5b3V0UG9pbnQoZmxvb3Jl
ZEludFBvaW50KGxvY2FsUG9pbnQpKSk7CisgICAgICAgICAgICBhdXRvIGhpdFRlc3RMb2NhdGlv
biA9IEhpdFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBv
aW50KSksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAg
IHJldHVybiBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0
TG9jYXRpb24sIExheW91dFBvaW50KCksIGhpdFRlc3RBY3Rpb24pOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDU5YTQ0NDcxYzlmNjI5ZTE1
MWI4NzI0NGZkNTNjMzYyMTc5YmY3N2QuLmI5MmMwZTZmMjFjYWVmOGNhZDkxZGI0OTNjMTgzYjkw
ZmMwMWM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMTUsNyAr
MjMxNSw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxOb2RlTGlzdD4+IEludGVybmFsczo6bm9kZXNG
cm9tUmVjdChEb2N1bWVudCYgZG9jdW1lbnQsIGludCBjCiAgICAgYXV0byBoaXRUZXN0UmVzdWx0
ID0gSGl0VGVzdFJlc3VsdCB7IH07CiAgICAgYXV0byBzaXplID0gTGF5b3V0U2l6ZSB7IGxlZnRQ
YWRkaW5nICsgcmlnaHRQYWRkaW5nLCB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyB9OwogICAg
IGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1
bHQgeyBwb2ludCB9OworICAgICAgICBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHBv
aW50LCAxIC8gZG9jdW1lbnQuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGVsc2UgewogICAg
ICAgICBhdXRvIGFkanVzdGVkUG9zaXRpb24gPSBMYXlvdXRQb2ludCB7IGZsb29yZWRJbnRQb2lu
dChwb2ludCkgfTsKICAgICAgICAgYWRqdXN0ZWRQb3NpdGlvbiAtPSBMYXlvdXRTaXplICB7IGxl
ZnRQYWRkaW5nLCB0b3BQYWRkaW5nIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
CmluZGV4IDgwMzg5ODAyMDFhN2ViYWEzZTIxZGZjMjhiMTk4M2ZmZDY0MjkyZjIuLjc0NWUzMmVk
NTUwNjliOTk2M2E5OWQ4ZGFmM2U4MTgwOWYwZmVhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEYK
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCiAgICAgSW50UG9pbnQgb3JpZ2luSW5D
b250ZW50c1NwYWNlID0gbV93ZWJQYWdlLm1haW5GcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhyb3VuZGVkSW50UG9pbnQob3JpZ2luKSk7Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVz
dWx0ID0gSGl0VGVzdFJlc3VsdChvcmlnaW5JbkNvbnRlbnRzU3BhY2UpOworICAgIGF1dG8gaGl0
VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBvcmlnaW5JbkNvbnRlbnRzU3BhY2UsIDEgLyBt
X3dlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmRldmljZVNjYWxlRmFjdG9yKCkgfTsK
IAogICAgIG1fd2ViUGFnZS5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aGl0VGVzdChIaXRUZXN0
UmVxdWVzdCgpLCBoaXRUZXN0UmVzdWx0KTsKICAgICBOb2RlKiBub2RlID0gaGl0VGVzdFJlc3Vs
dC5pbm5lck5vZGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431907</attachid>
            <date>2021-06-21 14:14:26 -0700</date>
            <delta_ts>2021-06-22 12:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227191-20210621141425.patch</filename>
            <type>text/plain</type>
            <size>42793</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRhNjA0ODY3OWRjYWQy
MDNiMGYzMTg3MGNlZmRmYmExOGM5NWNiNS4uYjhhYzQxNDFiODFiZGIyYTFhYTExMGIyN2FkNDc1
YTRiMTAzMTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA2LTIxICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9jYXRpb24gc2hv
dWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJhc2VkIGhpdHRl
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgYW4gaW50ZXJtZWRpYXRlIHNvbHV0aW9uIHRvIHN1cHBvcnQgaGl0LXRlc3QgY29udGVudCBv
biBzdWJwaXhlbCBwb3NpdGlvbi4KKyAgICAgICAgSXQgZml4ZXMgY2FzZXMgd2hlbiB3ZSBpbmNv
cnJlY3RseSBmaW5kIHJlbmRlcmVycyBvbiBzdWJwaXhlbCBwb3NpdGlvbnMgZHVlIHRvIHRoZSBp
bnRlZ3JhbCBpbmZsYXRlIG9mIHRoZSBoaXQgY292ZXJhZ2UgYXJlYS4KKyAgICAgICAgZS5nCisg
ICAgICAgICAgaGl0IHRlc3RpbmcgbG9jYXRpb24gaXMgYXQgWzEwLCAxMF0KKyAgICAgICAgICBy
ZW5kZXJlciBpcyBhdCBbMTAuNiwgMTBdIC0+IGRldmljZSBwaXhlbCBzbmFwcGVkIHRvIFsxMXAs
IDEwXSBvbiBhIDJ4IGRpc3BsYXkKKyAgICAgICAgTm93IHNpbmNlIHdlIGluZmxhdGUgdGhlIGhp
dCB0ZXN0ICJsb2NhdGlvbiIgYnkgWzEsIDFdLCB3ZSBmaW5kIHRoZSByZW5kZXJlciBhdCAxMC42
IHdoaWxlIGl0IGlzIGNsZWFybHkgb2ZmIGJ5IDIgZGV2aWNlIHBpeGVscyAodmlzdWFsbHkpLgor
ICAgICAgICBUaGlzIGhhZCB3b3JrZWQgZmluZSBiZWZvcmUgd2UgaW50cm9kdWNlZCBzdWJwaXhl
bCBsYXlvdXQgKGFuZCBzdGlsbCB3b3JrcyBmaW5lIG9uIDF4IGRpc3BsYXlzKS4KKworICAgICAg
ICBFdmVudHVhbGx5IHRoZSBpbnB1dCB0byBIaXRUZXN0TG9jYXRpb246OmludGVyc2VjdCBzaG91
bGQgYmUgYSBkZXZpY2UgcGl4ZWwgc25hcHBlZCByZWN0IHNpbWlsYXIgdG8gcGFpbnRpbmcuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3MpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNj
b3BlOjplbGVtZW50c0Zyb21Qb2ludCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCk6CisgICAgICAgICog
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVu
dE1haW5Db250ZW50Rm9yUHVycG9zZXNPZkF1dG9wbGF5KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRVbmRlck1vdXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmV2ZW50TWF5U3RhcnREcmFnIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjppc0luc2lkZVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpoaXRUZXN0UmVzdWx0
SW5GcmFtZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZG9jdW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFNhbXBsZUxvY2F0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllckJ5QXBw
bHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0Rmxv
YXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0IGNvbnN0KToK
KwogMjAyMS0wNi0yMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHJlZHVuZGFudCBIaXRUZXN0TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRl
clBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMDY5
ZDkwZjYxZTg1ZGU3NGJhNzkzODY5OWIzYjQwMmE2MjUzODg2Li42MDgwYzgwYmYyOTg3ZmM5M2Jl
YjdlYjljYTdiZjI2ODE4NThlNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2
LTIxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9j
YXRpb24gc2hvdWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJh
c2VkIGhpdHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKwogMjAyMS0wNi0yMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFJl
bmFtZSBXS1Zpc3VhbFNlYXJjaFByZXZpZXdDb250cm9sbGVyIHRvIFdLUXVpY2tMb29rUHJldmll
d0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDM0ZWE4ZjQ4YzkwMzg2MGMxZGYzZjNmZTg2YjQ0Yzdj
YjU3MjcwZDMuLjM2YzQyZmQ0ZTNmYjE0ODhlNDBmOGYxZjUyMDU1ZGI1ZWU4MDY5MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3Mo
KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRv
Y3VtZW50KSB7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0
VGVzdCB9OwotICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgeyBjbGlja1BvaW50
KCkgfTsKKyAgICAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IGNsaWNr
UG9pbnQoKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgICAgIGRv
Y3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIGhpdFRlc3RSZXN1bHQpOwogICAgICAgICBpZiAoYXV0
byogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBpbm5lck5vZGUtPnNoYWRvd0hvc3QoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IGZjYWQ0YzczNWViMzkzNTU0YWU3OTA5MjY1ZTg2MTBlYzAzODU4YmYu
LjQxYjJkMWU4YjA3Mjg4YTg1YTg1MDVkMjRkN2RmNTM4OTg4NDU2OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMjMyMyw3ICsyMzIzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW4KICAg
ICAgICAgcG9pbnRUb1VzZSA9IHBvaW50OwogI2VuZGlmCiAgICAgICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUgfTsKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgeyBwb2ludFRvVXNlIH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHBvaW50VG9Vc2UsIDEgLyByZW5kZXJWaWV3LT5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgcmVuZGVyVmlldy0+ZG9jdW1lbnQoKS5oaXRU
ZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAgIGlubmVyTm9kZSA9IHJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICAgICAgaWYgKCFpbm5lck5vZGUpCkBAIC0yNTM3LDcgKzI1MzcsNyBAQCBBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwbwogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGRvd25jYXN0PFJl
bmRlckJveD4oKm1fcmVuZGVyZXIpLmxheWVyKCk7CiAgICAgIAogICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0VGVzdCB9OwotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dFJlc3VsdCB7IHBvaW50IH07CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IHBvaW50LCAxIC8gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
IH07CiAgICAgbGF5ZXItPmhpdFRlc3QoaGl0VHlwZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgTm9k
ZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggY2MyNjE1NDRiOWNjZTBiOGE0ZDFkZTZkYmJjZjY0MDY0
YjEzNzAwYy4uZmFlNmM4YmM4ZTU1Zjc0NjZiOTM3NzA1ODNhYjQ1Yzg3ZGYyNjY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDE3LDkgKzQwMTcsOSBAQCB2b2lkIERvY3VtZW50Ojpw
cm9jZXNzQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBs
aWNhdGlvbgogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBEb2N1bWVudDo6cHJlcGFyZU1v
dXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IExheW91dFBvaW50
JiBkb2N1bWVudFBvaW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAg
IGlmICghaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICByZXR1cm4gTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyhldmVudCwgSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKSk7Cisg
ICAgICAgIHJldHVybiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzKGV2ZW50LCBIaXRUZXN0
UmVzdWx0KHsgfSwgMSAvIGRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IGRvY3VtZW50UG9pbnQsIDEgLyBkZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgaGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgYXV0byBjYXB0dXJlRWxlbWVudENoYW5nZWQgPSBD
YXB0dXJlQ2hhbmdlOjpObzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2U4OTVkZmIxNTI5ZTVm
Yjc0NDQzOTlmYjYxMjE2NTE0YTVhNTJiZS4uMjViYTY2M2FlNjQwNjFhNDY5MGU0YTdlNzE5MjBi
N2FlMzExMmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU2NCw3ICs1NjQsNyBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBRdWlya3MmIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpcmtz
OyB9CiAKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCmluZGV4IDhmNmM0N2Y4Y2Q2OGVmZmEwOTkyNDZjMDAxMDUyNjU5MmFiNGVi
NjMuLmM3NDViNjI0MDE4MmJhZmM0YzRiYjBkMTY5YzM1NTIzZTJjZWFiNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmUHRyPE5vZGU+IFRyZWVTY29w
ZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBv
aW4KICAgICBpZiAoIWFic29sdXRlUG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoYWJzb2x1dGVQb2ludC52YWx1ZSgpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEgLyBkb2N1
bWVudFNjb3BlKCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRvY3VtZW50U2NvcGUoKS5o
aXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3VsdCk7CiAgICAgaWYgKGxvY2FsUG9pbnQpCiAg
ICAgICAgICpsb2NhbFBvaW50ID0gcmVzdWx0LmxvY2FsUG9pbnQoKTsKQEAgLTM5Niw3ICszOTYs
NyBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50
KGRvdWJsZSBjbGllbnRYLCBkb3VibGUgY2xpZQogICAgICAgICByZXR1cm4gZWxlbWVudHM7CiAK
ICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0
aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50
LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMsIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpJbmNsdWRlQWxsRWxlbWVudHNVbmRlclBvaW50IH07Ci0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCkgfTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEgLyBkb2N1bWVudC5k
ZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgZG9jdW1lbnRTY29wZSgpLmhpdFRlc3QoaGl0VHlw
ZSwgcmVzdWx0KTsKIAogICAgIFJlZlB0cjxOb2RlPiBsYXN0Tm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZmNkODBkMWNiY2E3OGIwYWU0NDE3MmEz
ODlkYTdmM2YzZjU0MDVjZC4uYzUyNWNmMzYxM2Y5MGJhMzZjYmJlYTg4OTA5OWUxOWZkN2NiYWVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE5MDUs
NyArMTkwNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgY29uc3QKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIG1fZG9jdW1lbnQtPmRldmljZVNjYWxlRmFj
dG9yKCkgfTsKICAgICBtX2RvY3VtZW50LT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3Vs
dCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICgh
aW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDVjZWNhZWJmZDNiMGFjOTBhNDBiZmNkYzI2ZThi
MzhjMmY5ODdjOWMuLjA4OWE3ZjM5N2ZjNzgyM2ZkYTAzNTliN2JkMGYwMDliM2RjYmU1YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC00NzEsMjkgKzQ3
MSwzMCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQoKQog
ICAgIC8vIGl0IGlzIHZpc2libGUgYW5kIGlzIG5vdCBtYXNrZWQgYnkgb3RoZXIgZWxlbWVudHMu
CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Oklnbm9yZUNsaXBwaW5nLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
OwotICAgIEhpdFRlc3RMb2NhdGlvbiBsb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmlld1JlY3Qu
Y2VudGVyKCkgfSB9OworICAgIGF1dG8gc3VicGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVzdGluZyA9
IDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBsb2NhdGlvbiA9
IEhpdFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmlld1JlY3QuY2VudGVyKCkgfSwgc3Vi
cGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVzdGluZyB9OwogICAgIEFTU0VSVCghcmVuZGVyVmlldy0+
bmVlZHNMYXlvdXQoKSk7CiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3LT5kb2N1bWVudCgpLm5lZWRz
U3R5bGVSZWNhbGMoKSk7CiAgICAgYm9vbCBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVzdChoaXRU
eXBlLCBsb2NhdGlvbiwgcmVzdWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2Rl
KCkgIT0gJnBsdWdpblJlbmRlcmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4LCB5KTsKKyAgICBsb2NhdGlv
biA9IHsgTGF5b3V0UG9pbnQoeCwgeSksIHN1YnBpeGVsQWRqdXN0bWVudEZvckhpdFRlc3Rpbmcg
fTsKICAgICBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCBsb2NhdGlvbiwgcmVz
dWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJnBsdWdpblJlbmRl
cmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbG9j
YXRpb24gPSBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkpOworICAgIGxvY2F0aW9uID0geyBMYXlv
dXRQb2ludCh4ICsgd2lkdGgsIHkpLCBzdWJwaXhlbEFkanVzdG1lbnRGb3JIaXRUZXN0aW5nIH07
CiAgICAgaGl0ID0gdG9wRG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgbG9jYXRpb24sIHJlc3Vs
dCk7CiAgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9ICZwbHVnaW5SZW5kZXJl
ci5mcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGxvY2F0
aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAgICBsb2NhdGlvbiA9
IHsgTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1c3RtZW50
Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUs
IGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAh
PSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWlnaHQpOworICAgIGxv
Y2F0aW9uID0geyBMYXlvdXRQb2ludCh4LCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1c3RtZW50
Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUs
IGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAh
PSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAy
ZTMwNGY3YTc4OTZiNDExMmRjMTQ2ZThhOTAyYzE5NDEyYWJlYjRjLi5iMGZkZTQwNGRlMDIxMzc5
MGRjYWQ4NTEyYjI1NGFmNzM5ZjczMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk2NCw3ICs5NjQsNyBAQCBzdGF0aWMgYm9vbCBpc0VsZW1l
bnRNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdXRvcGxheShjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiBlbAogICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9uID0gbWFpbkZyYW1lLnZpZXco
KS0+ZG9jdW1lbnRTY3JvbGxQb3NpdGlvblJlbGF0aXZlVG9WaWV3T3JpZ2luKCk7CiAgICAgSW50
UmVjdCByZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KHJlY3RSZWxhdGl2ZVRvVmlldy5sb2NhdGlv
bigpICsgc2Nyb2xsUG9zaXRpb24sIHJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwogICAgIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJ
Z25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHJlY3RSZWxhdGl2ZVRvVG9w
RG9jdW1lbnQuY2VudGVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHJl
Y3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCksIDEgLyBkb2N1bWVudC5kZXZpY2VTY2Fs
ZUZhY3RvcigpIH07CiAKICAgICBtYWluRnJhbWUuZG9jdW1lbnQoKS0+aGl0VGVzdChoaXRUeXBl
LCByZXN1bHQpOwogICAgIHJlc3VsdC5zZXRUb05vblVzZXJBZ2VudFNoYWRvd0FuY2VzdG9yKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRmZWU4NmVjOGE1MjEw
MDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIuLmZhYWVkMmVhNWIyMzg3MjFjYjYyODJmYWYzOWNh
ZWEwNDk2OGVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0z
NzEsNyArMzcxLDcgQEAgc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRVbmRlck1vdXNlKERvY3VtZW50
KiBkb2N1bWVudFVuZGVyTW91c2UsIGNvbnN0IEludFBvaW50JgogICAgIGZsb2F0IHpvb21GYWN0
b3IgPSBmcmFtZSA/IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpIDogMTsKICAgICBMYXlvdXRQb2lu
dCBwb2ludChwLngoKSAqIHpvb21GYWN0b3IsIHAueSgpICogem9vbUZhY3Rvcik7CiAKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVz
dWx0IHsgcG9pbnQsIDEgLyBkb2N1bWVudFVuZGVyTW91c2UtPmRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICBkb2N1bWVudFVuZGVyTW91c2UtPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoKSwgcmVz
dWx0KTsKIAogICAgIGF1dG8qIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC02NTQsNyAr
NjU0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSBtX3BhZ2UubWFp
bkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdEYXRhLmNsaWVudFBvc2l0aW9u
KCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwb2ludCk7Cisg
ICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBtX2RvY3VtZW50VW5k
ZXJNb3VzZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGlmICghbV9wYWdlLm1haW5GcmFt
ZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmNWIxZjkxODE4NDA1ZDlmZGZlNTAzYzM5Zjk3
NTJmYWNhODM1OWUzLi41NWRiNGFiNWJlNjQ3NmEwNmY3NTdhZmYxOWFiMWViZjQzNjEwNGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NzksNyArODc5LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICB9CiAKICAgICBpZiAobV9zZWxlY3Rpb25Jbml0aWF0
aW9uU3RhdGUgIT0gRXh0ZW5kZWRTZWxlY3Rpb24pIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uKTsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBIaXRUZXN0UmVzdWx0IHsgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCAxIC8gbV9mcmFt
ZS5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOwogCiAgICAgICAgIHVw
ZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwpAQCAtOTEyLDcgKzkxMiw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KSBjb25zdAogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7
CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOworICAgIGF1dG8gcmVz
dWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRp
b24oKSksIDEgLyBkb2N1bWVudC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRvY3VtZW50
LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwogICAgIEVs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAtOTMyLDcg
KzkzMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWco
KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1
ZXN0OjpUeXBlPiBoaXRUeXBlIHsgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Ok1vdmUsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOworICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VTY2FsZUZh
Y3RvcigpIH07CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsKICAgICB1
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKIH0KQEAgLTExNzcsMTEgKzExNzcs
MTEgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgT3B0aW8KICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsg
cG9pbnQgfTsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4geyB9
OwogCisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBkb2N1bWVu
dC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0
VHlwZSk7CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBpZiAo
IXJlcXVlc3QucmVhZE9ubHkoKSkKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjp1cGRhdGVDdXJzb3IoKQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVu
dE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7CiAKICAg
ICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dG
cmFtZVNjcm9sbGJhcnMgfTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKCptX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBhdXRvIHJlc3VsdCA9
IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKCptX2xhc3RLbm93bk1vdXNl
UG9zaXRpb24pLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICBkb2N1
bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogCiAgICAgdXBkYXRlQ3Vyc29yKCp2aWV3
LCByZXN1bHQsIHNoaWZ0S2V5KTsKQEAgLTI3NjQsNyArMjc2NCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KiB0YXJnZXROCiBib29sIEV2ZW50SGFuZGxlcjo6aXNJbnNpZGVTY3JvbGxiYXIoY29uc3QgSW50
UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1f
ZnJhbWUuZG9jdW1lbnQoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCB7IHdpbmRv
d1BvaW50IH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHdpbmRvd1Bv
aW50LCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgZG9jdW1l
bnQtPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFn
ZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnNjcm9s
bGJhcigpOwogICAgIH0KQEAgLTI5NDEsNyArMjk0MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgfQogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdDsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvc2l0aW9uKCkpLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAg
ICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAtMzI1OCw3ICszMjU4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICAg
ICAgdGFyZ2V0Tm9kZSA9IGRvYzsKIAogICAgIC8vIFVzZSB0aGUgZm9jdXNlZCBub2RlIGFzIHRo
ZSB0YXJnZXQgZm9yIGhvdmVyIGFuZCBhY3RpdmUuCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
cG9zaXRpb24pOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHBvc2l0aW9uLCAx
IC8gZG9jLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgcmVzdWx0LnNldElubmVyTm9kZSh0
YXJnZXROb2RlKTsKICAgICBkb2MtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgcmVzdWx0
LnRhcmdldEVsZW1lbnQoKSk7CiAKQEAgLTMzODcsNyArMzM4Nyw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpob3ZlclRpbWVyRmlyZWQoKQogCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZp
ZXcoKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9D
b250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkpKTsK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1Rv
Q29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50IHsgfSkp
LCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9OwogICAgICAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwg
cmVzdWx0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGhp
dFR5cGUsIHJlc3VsdC50YXJnZXRFbGVtZW50KCkpOwpAQCAtMzk3Miw3ICszOTcyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMgPSB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpESFRNTCk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0
aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1f
bW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCB7IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgMSAvIG1fZnJhbWUuZG9jdW1l
bnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkt
PmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpCiAg
ICAgICAgICAgICBkcmFnU3RhdGUoKS5zb3VyY2UgPSBtX2ZyYW1lLnBhZ2UoKS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQudGFyZ2V0RWxlbWVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGRyYWdTdGF0ZSgpKTsKQEAgLTQzNDcsMTEg
KzQzNDcsMTAgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUZvclRvdWNoUG9p
bnRTdGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHMKIAogc3RhdGljIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdEluRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnQsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSkKIHsKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0KICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVy
biB7IH07CiAKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIGZy
YW1lLT5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgaWYgKGZyYW1lLT52
aWV3KCkpIHsKICAgICAgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNv
bnRlbnRSZWN0KCk7CiAgICAgICAgIGlmICghcmVjdC5jb250YWlucyhyb3VuZGVkSW50UG9pbnQo
cG9pbnQpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNzA1NGFjYzkwMjE0ZWI4MTdiZDc4NDI5
OGNlNzdmNzZkMzJjNWRlZS4uYjkxMDVmMDhiYzliNmUxZGFmMDcyNTJkYjgwY2MxYjQ4MWVkMmVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgzMiwxNyArODMyLDEyIEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1l
UG9pbnQpIGNvbnN0CiAKIERvY3VtZW50KiBGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkKIHsKLSAgICBpZiAoIXZpZXcoKSkKKyAgICBpZiAoIXZpZXcoKSB8fCAh
Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSW50UG9p
bnQgcHQgPSB2aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwdCk7Ci0KLSAgICBpZiAoY29udGVudFJlbmRlcmVy
KCkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4g
aGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQg
fTsKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
cHQsIGhpdFR5cGUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpID8gJnJl
c3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBhdXRvIHJlc3VsdCA9IGV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCks
IGhpdFR5cGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyAmcmVzdWx0LmlubmVy
Tm9kZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAogc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBiZjM1YzIwOTJjODAw
ODhhOWQ2ZGY2MmJjYWU0MGI1OTYxZDY5NmE4Li43NDIzZGQ0M2RhN2EyYjVmMjhhMWJkZmMwYWRl
NDE5YWQxYzc3YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNh
bXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNhbXBsZUxvY2F0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogICAgIC8vIEZJWE1FOiA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI1MTY3PiAoU2FtcGxlZCBQYWdlIFRvcCBDb2xvcjogaG9v
ayBpbnRvIHBhaW50aW5nIGxvZ2ljIGluc3RlYWQgb2YgdGFraW5nIHNuYXBzaG90cykKIAogICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFRlc3RSZXF1ZXN0
VHlwZXMgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpD
b2xsZWN0TXVsdGlwbGVFbGVtZW50cywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkluY2x1ZGVBbGxF
bGVtZW50c1VuZGVyUG9pbnQgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQobG9j
YXRpb24pOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBsb2NhdGlv
biwgMSAvIGRvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICBkb2N1bWVudC5oaXRU
ZXN0KGhpdFRlc3RSZXF1ZXN0VHlwZXMsIGhpdFRlc3RSZXN1bHQpOwogCiAgICAgZm9yIChhdXRv
JiBoaXRUZXN0Tm9kZSA6IGhpdFRlc3RSZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwCmluZGV4IDJiNTFh
NGU3NmExNDg1NjMzZTk3OWU4NDI3NTY4MDk2NjEwMTk4N2QuLjM3ZTdjNTRmODA1NjhlZmNhNTg5
NmZkNTA0MzFjOWY4MDg1ZTgyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0TG9jYXRpb24uY3BwCkBAIC0yNiw5ICsyNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRpb24oKSA9IGRlZmF1bHQ7CiAKLUhpdFRlc3RM
b2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK0hpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgZmxv
YXQgc3VicGl4ZWxBZGp1c3RtZW50KQogICAgIDogbV9wb2ludChwb2ludCkKLSAgICAsIG1fYm91
bmRpbmdCb3goTGF5b3V0UmVjdCB7IGZsb29yZWRJbnRQb2ludChwb2ludCksIExheW91dFNpemUg
eyAxLCAxIH0gfSkKKyAgICAsIG1fYm91bmRpbmdCb3goTGF5b3V0UmVjdCB7IHBvaW50LCBMYXlv
dXRTaXplIHsgc3VicGl4ZWxBZGp1c3RtZW50LCBzdWJwaXhlbEFkanVzdG1lbnQgfSB9KQogICAg
ICwgbV90cmFuc2Zvcm1lZFBvaW50KHBvaW50KQogICAgICwgbV90cmFuc2Zvcm1lZFJlY3QobV9i
b3VuZGluZ0JveCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0TG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24u
aAppbmRleCA4MzZmZjc0ZjMwNDBhNDA1ZmI1MzgyZGY0YjQ1MDI3ZTExNDUwM2UxLi43ZjJlMjhk
Y2VjMDQ0NjgxMDFlZWVjZjM2NThiYTE2MDQ3N2Y3MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgSGl0VGVzdExvY2F0aW9uKCk7Ci0gICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBv
aW50Jik7CisgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiwgZmxvYXQgc3Vi
cGl4ZWxBZGp1c3RtZW50KTsKICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UXVhZCYpOwogCiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFJl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2
YzFkOGVkNGJmMjM4YTQ5YjQxZjJmYjZkZWM1ODA3OWFlYzljNWMwLi4xNDExZjAwZTUzZGQ5NmVj
Nzc5OGZjNDdlNDMxYTdmZjA4MWM1OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmRUb05vZGVTZXQoY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgc291cmNlLCBIaXRUZXN0
CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CiAKLUhpdFRlc3RS
ZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQotICAgIDogbV9o
aXRUZXN0TG9jYXRpb24ocG9pbnQpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCwgZmxvYXQgc3VicGl4ZWxBZGp1c3RtZW50KQorICAgIDogbV9o
aXRUZXN0TG9jYXRpb24geyBwb2ludCwgc3VicGl4ZWxBZGp1c3RtZW50IH0KICAgICAsIG1fcG9p
bnRJbklubmVyTm9kZUZyYW1lKHBvaW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKaW5kZXggMzVhYTgwYjc0NDA4YjMwMDQyZmNiMzQ1ZjJlNGQxOTQyZTIy
NTkxNy4uYzRmODg3OTJkMDUwYWY4ODBhZDZmN2M0Yjg3ZDQ1M2M4MjkwNzRkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBOb2RlU2V0ID0gTGlzdEhhc2hTZXQ8UmVmPE5vZGU+PjsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYsIGZsb2F0IHN1YnBpeGVs
QWRqdXN0bWVudCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBIaXRUZXN0UmVzdWx0
KGNvbnN0IExheW91dFJlY3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMjY1NzQyOTlkYzNkZjE3ZDlmY2FjZTc3NjhkZDFiYTYwN2Nl
YjUyYS4uMWYxYWVjM2E2OGUyOTdkNTU5NDRjNjMxMDhmMjc5M2UyOGQwNWVkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MjczLDEyICs0MjczLDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3Jt
KFJlbmRlckxheWVyKiByb290TGF5ZXIKICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBuZXdU
cmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUG9pbnQoKTsKICAgICBGbG9hdFF1YWQgbG9jYWxQb2ludFF1
YWQgPSBuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUXVhZCgpOwogICAgIExheW91dFJlY3QgbG9j
YWxIaXRUZXN0UmVjdCA9IG5ld1RyYW5zZm9ybVN0YXRlLT5ib3VuZHNPZk1hcHBlZEFyZWEoKTsK
LSAgICBIaXRUZXN0TG9jYXRpb24gbmV3SGl0VGVzdExvY2F0aW9uOwotICAgIGlmIChoaXRUZXN0
TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0KCkpCi0gICAgICAgIG5ld0hpdFRlc3RMb2NhdGlvbiA9
IEhpdFRlc3RMb2NhdGlvbihsb2NhbFBvaW50LCBsb2NhbFBvaW50UXVhZCk7Ci0gICAgZWxzZQot
ICAgICAgICBuZXdIaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24oZmxvb3JlZExheW91
dFBvaW50KGxvY2FsUG9pbnQpKTsKLQorICAgIGF1dG8gbmV3SGl0VGVzdExvY2F0aW9uID0gaGl0
VGVzdExvY2F0aW9uLmlzUmVjdEJhc2VkVGVzdCgpID8gSGl0VGVzdExvY2F0aW9uIHsgbG9jYWxQ
b2ludCwgbG9jYWxQb2ludFF1YWQgfSA6IEhpdFRlc3RMb2NhdGlvbiB7IGZsb29yZWRMYXlvdXRQ
b2ludChsb2NhbFBvaW50KSwgMSAvIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH07CiAgICAgLy8gTm93IGRvIGEgaGl0IHRlc3Qgd2l0aCB0aGUgcm9vdCBsYXllciBz
aGlmdGVkIHRvIGJlIHVzLgogICAgIHJldHVybiBoaXRUZXN0TGF5ZXIodGhpcywgY29udGFpbmVy
TGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgbG9jYWxIaXRUZXN0UmVjdCwgbmV3SGl0VGVzdExvY2F0
aW9uLCB0cnVlLCBuZXdUcmFuc2Zvcm1TdGF0ZS5wdHIoKSwgek9mZnNldCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5k
ZXggYmE2NzIyM2YyODFmYzM0YWI3MTIxNjdjNmQ5YWNlNzcyZTYxNzgxZC4uODQyMTE0ZDk0NzY3
ZDJkZjljMzQ1MzdmNWM1MzlhN2U0Yjg5NzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBA
IGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewog
ICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2Nh
bFBvaW50LCBoaXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3Vs
dChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLSAgICAgICAgICAgIGlmIChyZXN1
bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBm
bG9vcmVkTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGls
ZC0+bm9kZSgpLCByZXF1ZXN0LCB7IGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSwgMSAv
IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0
b3ApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NzksNyArMTc5LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICAvLyBBY2Nlc3NpYmls
aXR5IHdhbnRzIHRvIHJldHVybiBTVkcgY29udGFpbmVycywgaWYgYXBwcm9wcmlhdGUuCiAgICAg
aWYgKHJlcXVlc3QudHlwZSgpICYgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjY2Vzc2liaWxpdHlI
aXRUZXN0ICYmIG1fb2JqZWN0Qm91bmRpbmdCb3guY29udGFpbnMobG9jYWxQb2ludCkpIHsKICAg
ICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQp
KTsKLSAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVG
b3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSkgPT0g
SGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RC
YXNlZFRlc3RSZXN1bHQobm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgeyBmbG9vcmVkTGF5b3V0
UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfSkg
PT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggZjJkN2VhMDBmNTRhNzJkMWEyNmUzM2YxMDBlZjZl
MjU2Nzc3Mjg2Yi4uNWJiZGQ0NzBjNGM0NDJiY2E1ZTYxNTI1ZDM5ODc2Njg0MDY0MTUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRk9zIGVzdGFibGlzaCBhIHN0YWNraW5n
IGNvbnRleHQsIHNvIHdlIG5lZWQgdG8gaGl0LXRlc3QgYWxsIGxheWVycy4KLSAgICBIaXRUZXN0
TG9jYXRpb24gaGl0VGVzdExvY2F0aW9uKGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSk7
CisgICAgYXV0byBoaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24geyBmbG9vcmVkTGF5
b3V0UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwg
aGl0VGVzdExvY2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAg
ICAgfHwgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdExv
Y2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0RmxvYXQpCiAgICAgICAgIHx8IFJlbmRlckJs
b2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RMb2NhdGlvbiwgTGF5b3V0
UG9pbnQoKSwgSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDgzYzJjNzBiMjYxZWNj
MDIyOWUyYWE0MjE1MzUzYTI5MTkxNWMzMjMuLjcxMjM3OWNiNmFiOTgwMDU3NmZjYjQ3NGY2Zjc4
ZmIwNzg2MjZlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UK
ICAgICAgICAgaWYgKGhpdFJ1bGVzLmNhbkhpdEZpbGwpIHsKICAgICAgICAgICAgIGlmIChtX29i
amVjdEJvdW5kaW5nQm94LmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAgICAgICAg
dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQobm9k
ZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgZmxvb3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpKSA9
PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGRO
b2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIHsgZmxv
b3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApp
bmRleCA0MTliZjM0ZjRkM2RkZWY3MGVhOWE0MTU1ZDBhMWU1OGIwMjMyZmFmLi40N2JjOGUwODk5
YTU4Nzg4ZWI0NTc3MzkzNTc1YWM4OWZhNmIyNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0y
ODYsOCArMjg2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlw
Q29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIWNoaWxkTm9k
ZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEludFBvaW50IGhpdFBvaW50OwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dChoaXRQb2ludCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHsgfSwg
MSAvIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OlNWR0NsaXBDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZUF0RmxvYXRQ
b2ludChoaXRUeXBlLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9yZWdyb3VuZCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKaW5kZXggZTE0MjY5OTYxN2UxNTFmYmFlZGFmMWRlZTkzNGRmYzg1Zjcx
ZjdjNy4uZTZiYzliYjRmOTE1MGEyOWM5OTgwNjAwMWYwZGE3OTYzMWI0NmNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTM2NCw3
ICszNjQsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgICAgICAgICAgfHwgKGhpdFJ1
bGVzLmNhbkhpdEZpbGwgJiYgKHN2Z1N0eWxlLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWly
ZUZpbGwpICYmIGZpbGxDb250YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlRmlsbCwg
ZmlsbFJ1bGUpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEJvdW5kaW5nQm94ICYm
IG9iamVjdEJvdW5kaW5nQm94KCkuY29udGFpbnMobG9jYWxQb2ludCkpKSB7CiAgICAgICAgICAg
ICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVG
b3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSkgPT0g
SGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9M
aXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIHsgZmxvb3JlZExh
eW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
IH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCmluZGV4IGJlMzJhM2U4NjE0OTc5NzcxZTVlMWY2MDI5MmEwMDc4MzZm
MGI0Y2QuLmFlMWI3NzZlY2M3MmQ0YjFmMDhjYTk0NjY4OGQxZDkzZjQ3NzM2OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDQyLDcg
KzQ0Miw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAKICAgICAgICAgICAgIFNWR0hpdFRl
c3RDeWNsZURldGVjdGlvblNjb3BlIGhpdFRlc3RTY29wZSgqdGhpcyk7CiAKLSAgICAgICAgICAg
IEhpdFRlc3RMb2NhdGlvbiBoaXRUZXN0TG9jYXRpb24oTGF5b3V0UG9pbnQoZmxvb3JlZEludFBv
aW50KGxvY2FsUG9pbnQpKSk7CisgICAgICAgICAgICBhdXRvIGhpdFRlc3RMb2NhdGlvbiA9IEhp
dFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBvaW50KSks
IDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAgIHJldHVy
biBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0TG9jYXRp
b24sIExheW91dFBvaW50KCksIGhpdFRlc3RBY3Rpb24pOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDAxNTNhNmU0ZjNjMWRmNzU1NjJjNjNj
OGY3YjYwNmFiYTJiNjMwOTkuLmQ0MzIwODBlMDBkOGM0YWMxMTFlYWJlN2VhMWRlNWE3MzYzYjQ0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMTMsMTEgKzIzMTMs
MTEgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGVMaXN0Pj4gSW50ZXJuYWxzOjpub2Rlc0Zyb21S
ZWN0KERvY3VtZW50JiBkb2N1bWVudCwgaW50IGMKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KGhpdFR5cGUpOwogCiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gWyZdIHsKLSAgICAgICAgYXV0
byBzaXplID0gTGF5b3V0U2l6ZSB7IGxlZnRQYWRkaW5nICsgcmlnaHRQYWRkaW5nICsgMSwgdG9w
UGFkZGluZyArIGJvdHRvbVBhZGRpbmcgKyAxIH07Ci0gICAgICAgIGlmIChzaXplLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiBIaXRUZXN0UmVzdWx0IHsgcG9pbnQgfTsKKyAgICAgICAg
YXV0byBoYXNQYWRkaW5nID0gbGVmdFBhZGRpbmcgfHwgcmlnaHRQYWRkaW5nIHx8IHRvcFBhZGRp
bmcgfHwgYm90dG9tUGFkZGluZzsKKyAgICAgICAgaWYgKCFoYXNQYWRkaW5nKQorICAgICAgICAg
ICAgcmV0dXJuIEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIGRvY3VtZW50LmRldmljZVNjYWxl
RmFjdG9yKCkgfTsKICAgICAgICAgYXV0byBhZGp1c3RlZFBvc2l0aW9uID0gTGF5b3V0UG9pbnQg
eyBmbG9vcmVkSW50UG9pbnQocG9pbnQpIH0gLSBMYXlvdXRTaXplICB7IGxlZnRQYWRkaW5nLCB0
b3BQYWRkaW5nIH07Ci0gICAgICAgIHJldHVybiBIaXRUZXN0UmVzdWx0IHsgTGF5b3V0UmVjdCB7
IGFkanVzdGVkUG9zaXRpb24sIHNpemUgfSB9OworICAgICAgICByZXR1cm4gSGl0VGVzdFJlc3Vs
dCB7IExheW91dFJlY3QgeyBhZGp1c3RlZFBvc2l0aW9uLCBMYXlvdXRTaXplIHsgbGVmdFBhZGRp
bmcgKyByaWdodFBhZGRpbmcgKyAxLCB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyArIDEgfSB9
IH07CiAgICAgfSgpOwogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMg
bWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3Bv
cnQuCiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWhpdFRlc3RSZXN1bHQu
aGl0VGVzdExvY2F0aW9uKCkuaW50ZXJzZWN0cyhMYXlvdXRSZWN0IHsgZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKSB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5k
ZXggODAzODk4MDIwMWE3ZWJhYTNlMjFkZmMyOGIxOTgzZmZkNjQyOTJmMi4uNzQ1ZTMyZWQ1NTA2
OWI5OTYzYTk5ZDhkYWYzZTgxODA5ZjBmZWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBJbnRQb2ludCBvcmlnaW5JbkNvbnRl
bnRzU3BhY2UgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJv
dW5kZWRJbnRQb2ludChvcmlnaW4pKTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQg
PSBIaXRUZXN0UmVzdWx0KG9yaWdpbkluQ29udGVudHNTcGFjZSk7CisgICAgYXV0byBoaXRUZXN0
UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IG9yaWdpbkluQ29udGVudHNTcGFjZSwgMSAvIG1fd2Vi
UGFnZS5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogCiAg
ICAgbV93ZWJQYWdlLm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5oaXRUZXN0KEhpdFRlc3RSZXF1
ZXN0KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCBhNWQ5MzFlZmVhYTBkOTA4ZGEwYjdjZGUxODkyMmUwNTkyMjBk
ODY0Li5iNWFhZDI4MGQ1NGMxM2NiOTg4NTBiZGI0MTQyODdhNDFiNmZkNTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjY1NSw3ICsyNjU1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzY3VyZWRFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byBlbGVtZW50UmVjdEluTWFpbkZyYW1lID0gZWxlbWVu
dC5jbGllbnRSZWN0KCk7CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZy
YW1lQ29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Oklnbm9yZUNsaXBwaW5nIH07Ci0gICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQoZWxlbWVudFJlY3RJbk1haW5GcmFtZS5jZW50ZXIoKSk7CisgICAg
YXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgZWxlbWVudFJlY3RJbk1haW5GcmFtZS5jZW50
ZXIoKSwgMSAvIHRvcERvY3VtZW50LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAKICAgICB0b3BE
b2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgIHJlc3VsdC5zZXRUb05vblVz
ZXJBZ2VudFNoYWRvd0FuY2VzdG9yKCk7CkBAIC0zNTAxLDE4ICszNTAxLDE4IEBAIHZvaWQgV2Vi
UGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlv
dXRTaXplLCBjb25zdCBXCiAgICAgICAgIHZpc2libGVIb3Jpem9udGFsRnJhY3Rpb24gPSBmcmFt
ZVZpZXcudW5vYnNjdXJlZENvbnRlbnRTaXplKCkud2lkdGgoKSAvIG9sZENvbnRlbnRTaXplLndp
ZHRoKCk7CiAgICAgICAgIEludFBvaW50IHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlciA9IGZy
YW1lVmlldy51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5jZW50ZXIoKTsKIAotICAgICAgICBIaXRU
ZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHVub2JzY3VyZWRDb250ZW50
UmVjdENlbnRlcik7Ci0KLSAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVWaWV3LmZy
YW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5oaXRUZXN0KEhpdFRlc3RS
ZXF1ZXN0KCksIGhpdFRlc3RSZXN1bHQpOwotCi0gICAgICAgIGlmIChOb2RlKiBub2RlID0gaGl0
VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICAgICAgRnJhbWVWaWV3
JiBjb250YWluaW5nVmlldyA9ICpub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKLSAg
ICAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSBjb250YWluaW5nVmlldy5jb250
ZW50c1RvUm9vdFZpZXcocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpKTsK
LSAgICAgICAgICAgICAgICByZWxhdGl2ZUhvcml6b250YWxQb3NpdGlvbkluTm9kZUF0Q2VudGVy
ID0gKHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlci54KCkgLSBib3VuZGluZ0JveC54KCkpIC8g
Ym91bmRpbmdCb3gud2lkdGgoKTsKLSAgICAgICAgICAgICAgICByZWxhdGl2ZVZlcnRpY2FsUG9z
aXRpb25Jbk5vZGVBdENlbnRlciA9ICh1bm9ic2N1cmVkQ29udGVudFJlY3RDZW50ZXIueSgpIC0g
Ym91bmRpbmdCb3gueSgpKSAvIGJvdW5kaW5nQm94LmhlaWdodCgpOwotICAgICAgICAgICAgICAg
IG9sZE5vZGVBdENlbnRlciA9IG5vZGU7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZy
YW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlciwgMSAvIGRvY3VtZW50
LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CisgICAgICAgICAgICBkb2N1bWVudC0+aGl0VGVzdChI
aXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOworCisgICAgICAgICAgICBpZiAoYXV0byogbm9kZSA9
IHJlc3VsdC5pbm5lck5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRnJhbWVWaWV3JiBj
b250YWluaW5nVmlldyA9ICpub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKKyAgICAg
ICAgICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gY29udGFpbmluZ1ZpZXcuY29u
dGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlSG9yaXpvbnRhbFBvc2l0aW9uSW5Ob2RlQXRD
ZW50ZXIgPSAodW5vYnNjdXJlZENvbnRlbnRSZWN0Q2VudGVyLngoKSAtIGJvdW5kaW5nQm94Lngo
KSkgLyBib3VuZGluZ0JveC53aWR0aCgpOworICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVZl
cnRpY2FsUG9zaXRpb25Jbk5vZGVBdENlbnRlciA9ICh1bm9ic2N1cmVkQ29udGVudFJlY3RDZW50
ZXIueSgpIC0gYm91bmRpbmdCb3gueSgpKSAvIGJvdW5kaW5nQm94LmhlaWdodCgpOworICAgICAg
ICAgICAgICAgICAgICBvbGROb2RlQXRDZW50ZXIgPSBub2RlOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IDQzOTc4Y2QzMGUyZDNiZmQzZTg4OGZmYmI3OWQxMjUyZGM1ZDI4NzQuLjQ2Mjc3
OWMzZjZiNmJiYzM0ZWFhY2JlYWI3ZGFlZmJkMzYzODBkN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA2LTIxICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9jYXRpb24gc2hvdWxkIG5vdCB1c2Ug
YSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJhc2VkIGhpdHRlc3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3NvbS12aWV3L2VsZW1lbnRGcm9tUG9pbnQtc3VicGl4ZWwtZXhwZWN0ZWQudHh0
OgorCiAyMDIxLTA2LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggQ1NTIHNlcmlhbGl6YXRpb24gaXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHls
ZXMgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvZWxlbWVudEZyb21Qb2ludC1zdWJwaXhlbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3NvbS12aWV3L2VsZW1lbnRGcm9tUG9pbnQtc3VicGl4ZWwtZXhwZWN0ZWQudHh0CmluZGV4IGVl
YTQwNTFiNjFiOWIxY2Q5ZDRmOWVmOGY4OGM4MGJmYTU4YmE5ZTYuLjM5OTQ5NGE0YmNmZjdmZDUw
Yzg2OWFiODZlZmE2NzY2ZjMwNjkzMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvZWxlbWVudEZyb21Qb2ludC1z
dWJwaXhlbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9lbGVtZW50RnJvbVBvaW50LXN1YnBpeGVsLWV4
cGVjdGVkLnR4dApAQCAtMSw4ICsxLDYgQEAKIAotRkFJTCBIaXQgdGVzdCB0b3AgbGVmdCBjb3Ju
ZXIgb2YgYm94IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIEVsZW1lbnQgbm9kZSA8ZGl2IGNsYXNz
PSJib3giIGlkPSJib3giPgotICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2Li4uIGJ1dCBn
b3QgRWxlbWVudCBub2RlIDxkaXYgY2xhc3M9Im1hcCI+PC9kaXY+CitQQVNTIEhpdCB0ZXN0IHRv
cCBsZWZ0IGNvcm5lciBvZiBib3gKIFBBU1MgSGl0IHRlc3QgdG9wIHJpZ2h0IGNvcm5lciBvZiBi
b3gKLUZBSUwgSGl0IHRlc3QgYm90dG9tIGxlZnQgY29ybmVyIG9mIGJveCBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCBFbGVtZW50IG5vZGUgPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94Ij4KLSAgICAg
IDxkaXYgY2xhc3M9ImNoaWxkIj48L2Rpdi4uLiBidXQgZ290IEVsZW1lbnQgbm9kZSA8ZGl2IGNs
YXNzPSJtYXAiPjwvZGl2PgorUEFTUyBIaXQgdGVzdCBib3R0b20gbGVmdCBjb3JuZXIgb2YgYm94
CiBQQVNTIEhpdCB0ZXN0IGxvd2VyIGxlZnQgY29ybmVyIG9mIGJveAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431986</attachid>
            <date>2021-06-22 12:57:50 -0700</date>
            <delta_ts>2021-06-22 20:11:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227191-20210622125749.patch</filename>
            <type>text/plain</type>
            <size>44247</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDRhNjA0ODY3OWRjYWQy
MDNiMGYzMTg3MGNlZmRmYmExOGM5NWNiNS4uMjQ0ZDU2ODkyYjZiZGU1NjVkZmJhNWIzMWU1MjNl
MDVkYTY0NDk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA2LTIyICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9jYXRpb24gc2hv
dWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJhc2VkIGhpdHRl
c3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzE5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgYW4gaW50ZXJtZWRpYXRlIHNvbHV0aW9uIHRvIHN1cHBvcnQgaGl0LXRlc3QgY29udGVudCBv
biBzdWJwaXhlbCBwb3NpdGlvbi4KKyAgICAgICAgSXQgZml4ZXMgY2FzZXMgd2hlbiB3ZSBpbmNv
cnJlY3RseSBmaW5kIHJlbmRlcmVycyBvbiBzdWJwaXhlbCBwb3NpdGlvbnMgZHVlIHRvIHRoZSBp
bnRlZ3JhbCBpbmZsYXRlIG9mIHRoZSBoaXQgY292ZXJhZ2UgYXJlYS4KKyAgICAgICAgZS5nCisg
ICAgICAgICAgaGl0IHRlc3RpbmcgbG9jYXRpb24gaXMgYXQgWzEwLCAxMF0KKyAgICAgICAgICBy
ZW5kZXJlciBpcyBhdCBbMTAuNiwgMTBdIC0+IGRldmljZSBwaXhlbCBzbmFwcGVkIHRvIFsxMXAs
IDEwXSBvbiBhIDJ4IGRpc3BsYXkKKyAgICAgICAgTm93IHNpbmNlIHdlIGluZmxhdGUgdGhlIGhp
dCB0ZXN0ICJsb2NhdGlvbiIgYnkgWzEsIDFdLCB3ZSBmaW5kIHRoZSByZW5kZXJlciBhdCAxMC42
IHdoaWxlIGl0IGlzIGNsZWFybHkgb2ZmIGJ5IDIgZGV2aWNlIHBpeGVscyAodmlzdWFsbHkpLgor
ICAgICAgICBUaGlzIGhhZCB3b3JrZWQgZmluZSBiZWZvcmUgd2UgaW50cm9kdWNlZCBzdWJwaXhl
bCBsYXlvdXQgKGFuZCBzdGlsbCB3b3JrcyBmaW5lIG9uIDF4IGRpc3BsYXlzKS4KKworICAgICAg
ICBFdmVudHVhbGx5IHRoZSBpbnB1dCB0byBIaXRUZXN0TG9jYXRpb246OmludGVyc2VjdCBzaG91
bGQgYmUgYSBkZXZpY2UgcGl4ZWwgc25hcHBlZCByZWN0IHNpbWlsYXIgdG8gcGFpbnRpbmcuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3MpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3Np
YmlsaXR5SGl0VGVzdCBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJlTW91c2VFdmVudCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNj
b3BlOjplbGVtZW50c0Zyb21Qb2ludCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCk6CisgICAgICAgICog
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWxlbWVu
dE1haW5Db250ZW50Rm9yUHVycG9zZXNPZkF1dG9wbGF5KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVsZW1lbnRVbmRlck1vdXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyk6CisgICAgICAg
ICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmV2ZW50TWF5U3RhcnREcmFnIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjppc0luc2lkZVNjcm9sbGJhciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpoaXRUZXN0UmVzdWx0
SW5GcmFtZSk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6ZG9jdW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZFNhbXBsZUxvY2F0aW9uKToKKyAgICAgICAg
KiByZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dExvY2F0aW9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllckJ5QXBw
bHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0Rmxv
YXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0IGNvbnN0KToK
KwogMjAyMS0wNi0yMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHJlZHVuZGFudCBIaXRUZXN0TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRl
clBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMDY5
ZDkwZjYxZTg1ZGU3NGJhNzkzODY5OWIzYjQwMmE2MjUzODg2Li5mYzZiOTIxNzFjNjIwZmMzNmFj
NzhkOTY0OWJmN2E0M2VhZjExNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2
LTIyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBIaXRUZXN0TG9j
YXRpb24gc2hvdWxkIG5vdCB1c2UgYSBmaXhlZCAoMXB4LCAxcHgpIGFyZWEgZm9yIHBvaW50IGJh
c2VkIGhpdHRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNzE5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0
R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKToKKwogMjAyMS0wNi0yMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFJl
bmFtZSBXS1Zpc3VhbFNlYXJjaFByZXZpZXdDb250cm9sbGVyIHRvIFdLUXVpY2tMb29rUHJldmll
d0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDM0ZWE4ZjQ4YzkwMzg2MGMxZGYzZjNmZTg2YjQ0Yzdj
YjU3MjcwZDMuLjM2YzQyZmQ0ZTNmYjE0ODhlNDBmOGYxZjUyMDU1ZGI1ZWU4MDY5MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcApAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6cHJlc3Mo
KQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKGRv
Y3VtZW50KSB7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5
cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0
VGVzdCB9OwotICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgeyBjbGlja1BvaW50
KCkgfTsKKyAgICAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IGNsaWNr
UG9pbnQoKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgICAgIGRv
Y3VtZW50LT5oaXRUZXN0KGhpdFR5cGUsIGhpdFRlc3RSZXN1bHQpOwogICAgICAgICBpZiAoYXV0
byogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIHNoYWRvd0hvc3QgPSBpbm5lck5vZGUtPnNoYWRvd0hvc3QoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCmluZGV4IGZjYWQ0YzczNWViMzkzNTU0YWU3OTA5MjY1ZTg2MTBlYzAzODU4YmYu
LjQxYjJkMWU4YjA3Mjg4YTg1YTg1MDVkMjRkN2RmNTM4OTg4NDU2OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMjMyMyw3ICsyMzIzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW4KICAg
ICAgICAgcG9pbnRUb1VzZSA9IHBvaW50OwogI2VuZGlmCiAgICAgICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUgfTsKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgeyBwb2ludFRvVXNlIH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHBvaW50VG9Vc2UsIDEgLyByZW5kZXJWaWV3LT5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgcmVuZGVyVmlldy0+ZG9jdW1lbnQoKS5oaXRU
ZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAgIGlubmVyTm9kZSA9IHJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICAgICAgaWYgKCFpbm5lck5vZGUpCkBAIC0yNTM3LDcgKzI1MzcsNyBAQCBBWENv
cmVPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFBvaW50JiBwbwogICAgIFJlbmRlckxheWVyKiBsYXllciA9IGRvd25jYXN0PFJl
bmRlckJveD4oKm1fcmVuZGVyZXIpLmxheWVyKCk7CiAgICAgIAogICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpBY2Nlc3NpYmlsaXR5SGl0VGVzdCB9OwotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dFJlc3VsdCB7IHBvaW50IH07CisgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IHBvaW50LCAxIC8gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
IH07CiAgICAgbGF5ZXItPmhpdFRlc3QoaGl0VHlwZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgTm9k
ZSogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggY2MyNjE1NDRiOWNjZTBiOGE0ZDFkZTZkYmJjZjY0MDY0
YjEzNzAwYy4uZmFlNmM4YmM4ZTU1Zjc0NjZiOTM3NzA1ODNhYjQ1Yzg3ZGYyNjY3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00MDE3LDkgKzQwMTcsOSBAQCB2b2lkIERvY3VtZW50Ojpw
cm9jZXNzQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBs
aWNhdGlvbgogTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBEb2N1bWVudDo6cHJlcGFyZU1v
dXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IExheW91dFBvaW50
JiBkb2N1bWVudFBvaW50LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAg
IGlmICghaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICByZXR1cm4gTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyhldmVudCwgSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKSk7Cisg
ICAgICAgIHJldHVybiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzKGV2ZW50LCBIaXRUZXN0
UmVzdWx0KHsgfSwgMSAvIGRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KGRvY3VtZW50UG9pbnQpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3Vs
dCB7IGRvY3VtZW50UG9pbnQsIDEgLyBkZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgaGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgYXV0byBjYXB0dXJlRWxlbWVudENoYW5nZWQgPSBD
YXB0dXJlQ2hhbmdlOjpObzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2U4OTVkZmIxNTI5ZTVm
Yjc0NDQzOTlmYjYxMjE2NTE0YTVhNTJiZS4uMjViYTY2M2FlNjQwNjFhNDY5MGU0YTdlNzE5MjBi
N2FlMzExMmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU2NCw3ICs1NjQsNyBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBRdWlya3MmIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpcmtz
OyB9CiAKLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuY3BwCmluZGV4IDhmNmM0N2Y4Y2Q2OGVmZmEwOTkyNDZjMDAxMDUyNjU5MmFiNGVi
NjMuLmM3NDViNjI0MDE4MmJhZmM0YzRiYjBkMTY5YzM1NTIzZTJjZWFiNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgUmVmUHRyPE5vZGU+IFRyZWVTY29w
ZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBv
aW4KICAgICBpZiAoIWFic29sdXRlUG9pbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoYWJzb2x1dGVQb2ludC52YWx1ZSgpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEgLyBkb2N1
bWVudFNjb3BlKCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRvY3VtZW50U2NvcGUoKS5o
aXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3VsdCk7CiAgICAgaWYgKGxvY2FsUG9pbnQpCiAg
ICAgICAgICpsb2NhbFBvaW50ID0gcmVzdWx0LmxvY2FsUG9pbnQoKTsKQEAgLTM5Niw3ICszOTYs
NyBAQCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmVlU2NvcGU6OmVsZW1lbnRzRnJvbVBvaW50
KGRvdWJsZSBjbGllbnRYLCBkb3VibGUgY2xpZQogICAgICAgICByZXR1cm4gZWxlbWVudHM7CiAK
ICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsg
SGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0
aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50
LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6Q29sbGVjdE11bHRpcGxlRWxlbWVudHMsIEhpdFRlc3RS
ZXF1ZXN0OjpUeXBlOjpJbmNsdWRlQWxsRWxlbWVudHNVbmRlclBvaW50IH07Ci0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCkgfTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEhpdFRlc3RSZXN1bHQgeyBhYnNvbHV0ZVBvaW50LnZhbHVlKCksIDEgLyBkb2N1bWVudC5k
ZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgZG9jdW1lbnRTY29wZSgpLmhpdFRlc3QoaGl0VHlw
ZSwgcmVzdWx0KTsKIAogICAgIFJlZlB0cjxOb2RlPiBsYXN0Tm9kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggZmNkODBkMWNiY2E3OGIwYWU0NDE3MmEz
ODlkYTdmM2YzZjU0MDVjZC4uYzUyNWNmMzYxM2Y5MGJhMzZjYmJlYTg4OTA5OWUxOWZkN2NiYWVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE5MDUs
NyArMTkwNSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OmNvbnRhaW5zKGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgY29uc3QKICAgICBpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIG1fZG9jdW1lbnQtPmRldmljZVNjYWxlRmFj
dG9yKCkgfTsKICAgICBtX2RvY3VtZW50LT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KCksIHJlc3Vs
dCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICgh
aW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IDVjZWNhZWJmZDNiMGFjOTBhNDBiZmNkYzI2ZThi
MzhjMmY5ODdjOWMuLjA4OWE3ZjM5N2ZjNzgyM2ZkYTAzNTliN2JkMGYwMDliM2RjYmU1YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC00NzEsMjkgKzQ3
MSwzMCBAQCBib29sIEhUTUxQbHVnSW5FbGVtZW50Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQoKQog
ICAgIC8vIGl0IGlzIHZpc2libGUgYW5kIGlzIG5vdCBtYXNrZWQgYnkgb3RoZXIgZWxlbWVudHMu
CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFj
dGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Oklnbm9yZUNsaXBwaW5nLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCB9OwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
OwotICAgIEhpdFRlc3RMb2NhdGlvbiBsb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmlld1JlY3Qu
Y2VudGVyKCkgfSB9OworICAgIGF1dG8gc3VicGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVzdGluZyA9
IDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgYXV0byBsb2NhdGlvbiA9
IEhpdFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50IHsgdmlld1JlY3QuY2VudGVyKCkgfSwgc3Vi
cGl4ZWxBZGp1c3RtZW50Rm9ySGl0VGVzdGluZyB9OwogICAgIEFTU0VSVCghcmVuZGVyVmlldy0+
bmVlZHNMYXlvdXQoKSk7CiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3LT5kb2N1bWVudCgpLm5lZWRz
U3R5bGVSZWNhbGMoKSk7CiAgICAgYm9vbCBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVzdChoaXRU
eXBlLCBsb2NhdGlvbiwgcmVzdWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2Rl
KCkgIT0gJnBsdWdpblJlbmRlcmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4LCB5KTsKKyAgICBsb2NhdGlv
biA9IHsgTGF5b3V0UG9pbnQoeCwgeSksIHN1YnBpeGVsQWRqdXN0bWVudEZvckhpdFRlc3Rpbmcg
fTsKICAgICBoaXQgPSB0b3BEb2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCBsb2NhdGlvbiwgcmVz
dWx0KTsKICAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gJnBsdWdpblJlbmRl
cmVyLmZyYW1lT3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbG9j
YXRpb24gPSBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkpOworICAgIGxvY2F0aW9uID0geyBMYXlv
dXRQb2ludCh4ICsgd2lkdGgsIHkpLCBzdWJwaXhlbEFkanVzdG1lbnRGb3JIaXRUZXN0aW5nIH07
CiAgICAgaGl0ID0gdG9wRG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgbG9jYXRpb24sIHJlc3Vs
dCk7CiAgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9ICZwbHVnaW5SZW5kZXJl
ci5mcmFtZU93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGxvY2F0
aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAgICBsb2NhdGlvbiA9
IHsgTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1c3RtZW50
Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUs
IGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAh
PSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWlnaHQpOworICAgIGxv
Y2F0aW9uID0geyBMYXlvdXRQb2ludCh4LCB5ICsgaGVpZ2h0KSwgc3VicGl4ZWxBZGp1c3RtZW50
Rm9ySGl0VGVzdGluZyB9OwogICAgIGhpdCA9IHRvcERvY3VtZW50LT5oaXRUZXN0KGhpdFR5cGUs
IGxvY2F0aW9uLCByZXN1bHQpOwogICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAh
PSAmcGx1Z2luUmVuZGVyZXIuZnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAy
ZTMwNGY3YTc4OTZiNDExMmRjMTQ2ZThhOTAyYzE5NDEyYWJlYjRjLi5iMGZkZTQwNGRlMDIxMzc5
MGRjYWQ4NTEyYjI1NGFmNzM5ZjczMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAKQEAgLTk2NCw3ICs5NjQsNyBAQCBzdGF0aWMgYm9vbCBpc0VsZW1l
bnRNYWluQ29udGVudEZvclB1cnBvc2VzT2ZBdXRvcGxheShjb25zdCBIVE1MTWVkaWFFbGVtZW50
JiBlbAogICAgIFNjcm9sbFBvc2l0aW9uIHNjcm9sbFBvc2l0aW9uID0gbWFpbkZyYW1lLnZpZXco
KS0+ZG9jdW1lbnRTY3JvbGxQb3NpdGlvblJlbGF0aXZlVG9WaWV3T3JpZ2luKCk7CiAgICAgSW50
UmVjdCByZWN0UmVsYXRpdmVUb1RvcERvY3VtZW50KHJlY3RSZWxhdGl2ZVRvVmlldy5sb2NhdGlv
bigpICsgc2Nyb2xsUG9zaXRpb24sIHJlY3RSZWxhdGl2ZVRvVmlldy5zaXplKCkpOwogICAgIE9w
dGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVl
c3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpJ
Z25vcmVDbGlwcGluZywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHJlY3RSZWxhdGl2ZVRvVG9w
RG9jdW1lbnQuY2VudGVyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHJl
Y3RSZWxhdGl2ZVRvVG9wRG9jdW1lbnQuY2VudGVyKCksIDEgLyBkb2N1bWVudC5kZXZpY2VTY2Fs
ZUZhY3RvcigpIH07CiAKICAgICBtYWluRnJhbWUuZG9jdW1lbnQoKS0+aGl0VGVzdChoaXRUeXBl
LCByZXN1bHQpOwogICAgIHJlc3VsdC5zZXRUb05vblVzZXJBZ2VudFNoYWRvd0FuY2VzdG9yKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDRmZWU4NmVjOGE1MjEw
MDM5ZTUyZDY5MDBjZDhhYjgzNTdmOTJhNjIuLmZhYWVkMmVhNWIyMzg3MjFjYjYyODJmYWYzOWNh
ZWEwNDk2OGVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0z
NzEsNyArMzcxLDcgQEAgc3RhdGljIEVsZW1lbnQqIGVsZW1lbnRVbmRlck1vdXNlKERvY3VtZW50
KiBkb2N1bWVudFVuZGVyTW91c2UsIGNvbnN0IEludFBvaW50JgogICAgIGZsb2F0IHpvb21GYWN0
b3IgPSBmcmFtZSA/IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpIDogMTsKICAgICBMYXlvdXRQb2lu
dCBwb2ludChwLngoKSAqIHpvb21GYWN0b3IsIHAueSgpICogem9vbUZhY3Rvcik7CiAKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVz
dWx0IHsgcG9pbnQsIDEgLyBkb2N1bWVudFVuZGVyTW91c2UtPmRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICBkb2N1bWVudFVuZGVyTW91c2UtPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoKSwgcmVz
dWx0KTsKIAogICAgIGF1dG8qIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CkBAIC02NTQsNyAr
NjU0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSBtX3BhZ2UubWFp
bkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdEYXRhLmNsaWVudFBvc2l0aW9u
KCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwb2ludCk7Cisg
ICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBtX2RvY3VtZW50VW5k
ZXJNb3VzZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGlmICghbV9wYWdlLm1haW5GcmFt
ZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmNWIxZjkxODE4NDA1ZDlmZGZlNTAzYzM5Zjk3
NTJmYWNhODM1OWUzLi41NWRiNGFiNWJlNjQ3NmEwNmY3NTdhZmYxOWFiMWViZjQzNjEwNGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NzksNyArODc5LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRHJhZ2dlZEV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICB9CiAKICAgICBpZiAobV9zZWxlY3Rpb25Jbml0aWF0
aW9uU3RhdGUgIT0gRXh0ZW5kZWRTZWxlY3Rpb24pIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uKTsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBIaXRUZXN0UmVzdWx0IHsgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCAxIC8gbV9mcmFt
ZS5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOwogCiAgICAgICAgIHVw
ZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhyZXN1bHQpOwpAQCAtOTEyLDcgKzkxMiw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpldmVudE1heVN0YXJ0RHJhZyhjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KSBjb25zdAogCiAgICAgdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCk7
CiAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7
IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSkpOworICAgIGF1dG8gcmVz
dWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRp
b24oKSksIDEgLyBkb2N1bWVudC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIGRvY3VtZW50
LT5oaXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgRHJhZ1N0YXRlIHN0YXRlOwogICAgIEVs
ZW1lbnQqIHRhcmdldEVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAtOTMyLDcg
KzkzMiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWco
KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1
ZXN0OjpUeXBlPiBoaXRUeXBlIHsgIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Ok1vdmUsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOworICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSwgMSAvIGRvY3VtZW50LT5kZXZpY2VTY2FsZUZh
Y3RvcigpIH07CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsKICAgICB1
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKIH0KQEAgLTExNzcsMTEgKzExNzcs
MTEgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgT3B0aW8KICAgICBpZiAoYXV0byogZnJhbWVWaWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJ
Zk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsg
cG9pbnQgfTsKICAgICBhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4geyB9
OwogCisgICAgYXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgcG9pbnQsIDEgLyBkb2N1bWVu
dC0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0
VHlwZSk7CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICBpZiAo
IXJlcXVlc3QucmVhZE9ubHkoKSkKQEAgLTEzOTgsNyArMTM5OCw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjp1cGRhdGVDdXJzb3IoKQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVu
dE1vZGlmaWVyU3RhdGUoc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7CiAKICAg
ICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dG
cmFtZVNjcm9sbGJhcnMgfTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dU
b0NvbnRlbnRzKCptX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICBhdXRvIHJlc3VsdCA9
IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKCptX2xhc3RLbm93bk1vdXNl
UG9zaXRpb24pLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICBkb2N1
bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogCiAgICAgdXBkYXRlQ3Vyc29yKCp2aWV3
LCByZXN1bHQsIHNoaWZ0S2V5KTsKQEAgLTI3NjQsNyArMjc2NCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBOb2Rl
KiB0YXJnZXROCiBib29sIEV2ZW50SGFuZGxlcjo6aXNJbnNpZGVTY3JvbGxiYXIoY29uc3QgSW50
UG9pbnQmIHdpbmRvd1BvaW50KSBjb25zdAogewogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1f
ZnJhbWUuZG9jdW1lbnQoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCB7IHdpbmRv
d1BvaW50IH07CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHdpbmRvd1Bv
aW50LCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgZG9jdW1l
bnQtPmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFn
ZW50U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnNjcm9s
bGJhcigpOwogICAgIH0KQEAgLTI5NDEsNyArMjk0MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50SW50ZXJuYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCwg
T3B0CiAgICAgfQogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdDsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvc2l0aW9uKCkpLCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAg
ICBkb2N1bWVudC0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQgPSByZXN1bHQudGFyZ2V0RWxlbWVudCgpOwpAQCAtMzI1OCw3ICszMjU4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCkKICAgICAg
ICAgdGFyZ2V0Tm9kZSA9IGRvYzsKIAogICAgIC8vIFVzZSB0aGUgZm9jdXNlZCBub2RlIGFzIHRo
ZSB0YXJnZXQgZm9yIGhvdmVyIGFuZCBhY3RpdmUuCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
cG9zaXRpb24pOworICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHBvc2l0aW9uLCAx
IC8gZG9jLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgcmVzdWx0LnNldElubmVyTm9kZSh0
YXJnZXROb2RlKTsKICAgICBkb2MtPnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoT3B0aW9uU2V0PEhp
dFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgcmVzdWx0
LnRhcmdldEVsZW1lbnQoKSk7CiAKQEAgLTMzODcsNyArMzM4Nyw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpob3ZlclRpbWVyRmlyZWQoKQogCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZp
ZXcoKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9D
b250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkpKTsK
KyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHZpZXctPndpbmRvd1Rv
Q29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50IHsgfSkp
LCAxIC8gZG9jdW1lbnQtPmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAgIGNvbnN0
ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9OwogICAgICAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwg
cmVzdWx0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGhp
dFR5cGUsIHJlc3VsdC50YXJnZXRFbGVtZW50KCkpOwpAQCAtMzk3Miw3ICszOTcyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMgPSB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpESFRNTCk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0
aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1f
bW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCB7IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgMSAvIG1fZnJhbWUuZG9jdW1l
bnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkt
PmhpdFRlc3QoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9LCByZXN1bHQpOwogICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpCiAg
ICAgICAgICAgICBkcmFnU3RhdGUoKS5zb3VyY2UgPSBtX2ZyYW1lLnBhZ2UoKS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnZ2FibGVFbGVtZW50KCZtX2ZyYW1lLCByZXN1bHQudGFyZ2V0RWxlbWVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGRyYWdTdGF0ZSgpKTsKQEAgLTQzNDcsMTEg
KzQzNDcsMTAgQEAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZUZvclRvdWNoUG9p
bnRTdGF0ZShQbGF0Zm9ybVRvdWNoUG9pbnQ6OlN0YXRlIHMKIAogc3RhdGljIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdEluRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnQsIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSkKIHsKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7Ci0KICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVy
biB7IH07CiAKKyAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIGZy
YW1lLT5kb2N1bWVudCgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAgICAgaWYgKGZyYW1lLT52
aWV3KCkpIHsKICAgICAgICAgSW50UmVjdCByZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNv
bnRlbnRSZWN0KCk7CiAgICAgICAgIGlmICghcmVjdC5jb250YWlucyhyb3VuZGVkSW50UG9pbnQo
cG9pbnQpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNzA1NGFjYzkwMjE0ZWI4MTdiZDc4NDI5
OGNlNzdmNzZkMzJjNWRlZS4uYjkxMDVmMDhiYzliNmUxZGFmMDcyNTJkYjgwY2MxYjQ4MWVkMmVm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTgzMiwxNyArODMyLDEyIEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1l
UG9pbnQpIGNvbnN0CiAKIERvY3VtZW50KiBGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkKIHsKLSAgICBpZiAoIXZpZXcoKSkKKyAgICBpZiAoIXZpZXcoKSB8fCAh
Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSW50UG9p
bnQgcHQgPSB2aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwotICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwdCk7Ci0KLSAgICBpZiAoY29udGVudFJlbmRlcmVy
KCkpIHsKLSAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4g
aGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQg
fTsKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
cHQsIGhpdFR5cGUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpID8gJnJl
c3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgY29uc3RleHByIE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpS
ZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5
cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKKyAgICBhdXRvIHJlc3VsdCA9IGV2ZW50SGFuZGxl
cigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KHZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCks
IGhpdFR5cGUpOworICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyAmcmVzdWx0LmlubmVy
Tm9kZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKIH0KIAogc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAppbmRleCBiZjM1YzIwOTJjODAw
ODhhOWQ2ZGY2MmJjYWU0MGI1OTYxZDY5NmE4Li43NDIzZGQ0M2RhN2EyYjVmMjhhMWJkZmMwYWRl
NDE5YWQxYzc3YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNh
bXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNhbXBsZUxvY2F0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQogICAgIC8vIEZJWE1FOiA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjI1MTY3PiAoU2FtcGxlZCBQYWdlIFRvcCBDb2xvcjogaG9v
ayBpbnRvIHBhaW50aW5nIGxvZ2ljIGluc3RlYWQgb2YgdGFraW5nIHNuYXBzaG90cykKIAogICAg
IGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFRlc3RSZXF1ZXN0
VHlwZXMgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpJZ25vcmVDU1NQb2ludGVyRXZlbnRzUHJvcGVydHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpD
b2xsZWN0TXVsdGlwbGVFbGVtZW50cywgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkluY2x1ZGVBbGxF
bGVtZW50c1VuZGVyUG9pbnQgfTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQobG9j
YXRpb24pOworICAgIGF1dG8gaGl0VGVzdFJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBsb2NhdGlv
biwgMSAvIGRvY3VtZW50LmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICBkb2N1bWVudC5oaXRU
ZXN0KGhpdFRlc3RSZXF1ZXN0VHlwZXMsIGhpdFRlc3RSZXN1bHQpOwogCiAgICAgZm9yIChhdXRv
JiBoaXRUZXN0Tm9kZSA6IGhpdFRlc3RSZXN1bHQubGlzdEJhc2VkVGVzdFJlc3VsdCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uY3BwCmluZGV4IDJiNTFh
NGU3NmExNDg1NjMzZTk3OWU4NDI3NTY4MDk2NjEwMTk4N2QuLjM3ZTdjNTRmODA1NjhlZmNhNTg5
NmZkNTA0MzFjOWY4MDg1ZTgyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0TG9jYXRpb24uY3BwCkBAIC0yNiw5ICsyNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRpb24oKSA9IGRlZmF1bHQ7CiAKLUhpdFRlc3RM
b2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK0hpdFRl
c3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgZmxv
YXQgc3VicGl4ZWxBZGp1c3RtZW50KQogICAgIDogbV9wb2ludChwb2ludCkKLSAgICAsIG1fYm91
bmRpbmdCb3goTGF5b3V0UmVjdCB7IGZsb29yZWRJbnRQb2ludChwb2ludCksIExheW91dFNpemUg
eyAxLCAxIH0gfSkKKyAgICAsIG1fYm91bmRpbmdCb3goTGF5b3V0UmVjdCB7IHBvaW50LCBMYXlv
dXRTaXplIHsgc3VicGl4ZWxBZGp1c3RtZW50LCBzdWJwaXhlbEFkanVzdG1lbnQgfSB9KQogICAg
ICwgbV90cmFuc2Zvcm1lZFBvaW50KHBvaW50KQogICAgICwgbV90cmFuc2Zvcm1lZFJlY3QobV9i
b3VuZGluZ0JveCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0TG9jYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24u
aAppbmRleCA4MzZmZjc0ZjMwNDBhNDA1ZmI1MzgyZGY0YjQ1MDI3ZTExNDUwM2UxLi43ZjJlMjhk
Y2VjMDQ0NjgxMDFlZWVjZjM2NThiYTE2MDQ3N2Y3MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgSGl0VGVzdExvY2F0aW9uKCk7Ci0gICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBv
aW50Jik7CisgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiwgZmxvYXQgc3Vi
cGl4ZWxBZGp1c3RtZW50KTsKICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UXVhZCYpOwogCiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91dFJl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2
YzFkOGVkNGJmMjM4YTQ5YjQxZjJmYjZkZWM1ODA3OWFlYzljNWMwLi4xNDExZjAwZTUzZGQ5NmVj
Nzc5OGZjNDdlNDMxYTdmZjA4MWM1OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBl
bmRUb05vZGVTZXQoY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgc291cmNlLCBIaXRUZXN0
CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKSA9IGRlZmF1bHQ7CiAKLUhpdFRlc3RS
ZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQotICAgIDogbV9o
aXRUZXN0TG9jYXRpb24ocG9pbnQpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCwgZmxvYXQgc3VicGl4ZWxBZGp1c3RtZW50KQorICAgIDogbV9o
aXRUZXN0TG9jYXRpb24geyBwb2ludCwgc3VicGl4ZWxBZGp1c3RtZW50IH0KICAgICAsIG1fcG9p
bnRJbklubmVyTm9kZUZyYW1lKHBvaW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKaW5kZXggMzVhYTgwYjc0NDA4YjMwMDQyZmNiMzQ1ZjJlNGQxOTQyZTIy
NTkxNy4uYzRmODg3OTJkMDUwYWY4ODBhZDZmN2M0Yjg3ZDQ1M2M4MjkwNzRkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKICAgICB1c2luZyBOb2RlU2V0ID0gTGlzdEhhc2hTZXQ8UmVmPE5vZGU+PjsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIEhpdFRlc3RSZXN1bHQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYsIGZsb2F0IHN1YnBpeGVs
QWRqdXN0bWVudCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBIaXRUZXN0UmVzdWx0
KGNvbnN0IExheW91dFJlY3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggMjY1NzQyOTlkYzNkZjE3ZDlmY2FjZTc3NjhkZDFiYTYwN2Nl
YjUyYS4uMWYxYWVjM2E2OGUyOTdkNTU5NDRjNjMxMDhmMjc5M2UyOGQwNWVkMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MjczLDEyICs0MjczLDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3Jt
KFJlbmRlckxheWVyKiByb290TGF5ZXIKICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBuZXdU
cmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUG9pbnQoKTsKICAgICBGbG9hdFF1YWQgbG9jYWxQb2ludFF1
YWQgPSBuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUXVhZCgpOwogICAgIExheW91dFJlY3QgbG9j
YWxIaXRUZXN0UmVjdCA9IG5ld1RyYW5zZm9ybVN0YXRlLT5ib3VuZHNPZk1hcHBlZEFyZWEoKTsK
LSAgICBIaXRUZXN0TG9jYXRpb24gbmV3SGl0VGVzdExvY2F0aW9uOwotICAgIGlmIChoaXRUZXN0
TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0KCkpCi0gICAgICAgIG5ld0hpdFRlc3RMb2NhdGlvbiA9
IEhpdFRlc3RMb2NhdGlvbihsb2NhbFBvaW50LCBsb2NhbFBvaW50UXVhZCk7Ci0gICAgZWxzZQot
ICAgICAgICBuZXdIaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24oZmxvb3JlZExheW91
dFBvaW50KGxvY2FsUG9pbnQpKTsKLQorICAgIGF1dG8gbmV3SGl0VGVzdExvY2F0aW9uID0gaGl0
VGVzdExvY2F0aW9uLmlzUmVjdEJhc2VkVGVzdCgpID8gSGl0VGVzdExvY2F0aW9uIHsgbG9jYWxQ
b2ludCwgbG9jYWxQb2ludFF1YWQgfSA6IEhpdFRlc3RMb2NhdGlvbiB7IGZsb29yZWRMYXlvdXRQ
b2ludChsb2NhbFBvaW50KSwgMSAvIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH07CiAgICAgLy8gTm93IGRvIGEgaGl0IHRlc3Qgd2l0aCB0aGUgcm9vdCBsYXllciBz
aGlmdGVkIHRvIGJlIHVzLgogICAgIHJldHVybiBoaXRUZXN0TGF5ZXIodGhpcywgY29udGFpbmVy
TGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgbG9jYWxIaXRUZXN0UmVjdCwgbmV3SGl0VGVzdExvY2F0
aW9uLCB0cnVlLCBuZXdUcmFuc2Zvcm1TdGF0ZS5wdHIoKSwgek9mZnNldCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5k
ZXggYmE2NzIyM2YyODFmYzM0YWI3MTIxNjdjNmQ5YWNlNzcyZTYxNzgxZC4uODQyMTE0ZDk0NzY3
ZDJkZjljMzQ1MzdmNWM1MzlhN2U0Yjg5NzYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBA
IGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewog
ICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2Nh
bFBvaW50LCBoaXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3Vs
dChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLSAgICAgICAgICAgIGlmIChyZXN1
bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBm
bG9vcmVkTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGls
ZC0+bm9kZSgpLCByZXF1ZXN0LCB7IGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSwgMSAv
IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9KSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0
b3ApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NzksNyArMTc5LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICAvLyBBY2Nlc3NpYmls
aXR5IHdhbnRzIHRvIHJldHVybiBTVkcgY29udGFpbmVycywgaWYgYXBwcm9wcmlhdGUuCiAgICAg
aWYgKHJlcXVlc3QudHlwZSgpICYgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjY2Vzc2liaWxpdHlI
aXRUZXN0ICYmIG1fb2JqZWN0Qm91bmRpbmdCb3guY29udGFpbnMobG9jYWxQb2ludCkpIHsKICAg
ICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQp
KTsKLSAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVG
b3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSkgPT0g
SGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RC
YXNlZFRlc3RSZXN1bHQobm9kZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgeyBmbG9vcmVkTGF5b3V0
UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfSkg
PT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggZjJkN2VhMDBmNTRhNzJkMWEyNmUzM2YxMDBlZjZl
MjU2Nzc3Mjg2Yi4uNWJiZGQ0NzBjNGM0NDJiY2E1ZTYxNTI1ZDM5ODc2Njg0MDY0MTUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRk9zIGVzdGFibGlzaCBhIHN0YWNraW5n
IGNvbnRleHQsIHNvIHdlIG5lZWQgdG8gaGl0LXRlc3QgYWxsIGxheWVycy4KLSAgICBIaXRUZXN0
TG9jYXRpb24gaGl0VGVzdExvY2F0aW9uKGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSk7
CisgICAgYXV0byBoaXRUZXN0TG9jYXRpb24gPSBIaXRUZXN0TG9jYXRpb24geyBmbG9vcmVkTGF5
b3V0UG9pbnQobG9jYWxQb2ludCksIDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICByZXR1cm4gUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwg
aGl0VGVzdExvY2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAg
ICAgfHwgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdExv
Y2F0aW9uLCBMYXlvdXRQb2ludCgpLCBIaXRUZXN0RmxvYXQpCiAgICAgICAgIHx8IFJlbmRlckJs
b2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RMb2NhdGlvbiwgTGF5b3V0
UG9pbnQoKSwgSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDgzYzJjNzBiMjYxZWNj
MDIyOWUyYWE0MjE1MzUzYTI5MTkxNWMzMjMuLjcxMjM3OWNiNmFiOTgwMDU3NmZjYjQ3NGY2Zjc4
ZmIwNzg2MjZlZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9k
ZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UK
ICAgICAgICAgaWYgKGhpdFJ1bGVzLmNhbkhpdEZpbGwpIHsKICAgICAgICAgICAgIGlmIChtX29i
amVjdEJvdW5kaW5nQm94LmNvbnRhaW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAgICAgICAg
dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xpc3RCYXNlZFRlc3RSZXN1bHQobm9k
ZUZvckhpdFRlc3QoKSwgcmVxdWVzdCwgZmxvb3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpKSA9
PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGRO
b2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIHsgZmxv
b3JlZExheW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpIH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApp
bmRleCA0MTliZjM0ZjRkM2RkZWY3MGVhOWE0MTU1ZDBhMWU1OGIwMjMyZmFmLi40N2JjOGUwODk5
YTU4Nzg4ZWI0NTc3MzkzNTc1YWM4OWZhNmIyNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0y
ODYsOCArMjg2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlw
Q29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgaWYgKCFyZW5k
ZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIWNoaWxkTm9k
ZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEludFBvaW50IGhpdFBvaW50OwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dChoaXRQb2ludCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IHsgfSwg
MSAvIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogICAgICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OlNWR0NsaXBDb250ZW50LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlzYWxsb3dVc2Vy
QWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgIGlmIChyZW5kZXJlci0+bm9kZUF0RmxvYXRQ
b2ludChoaXRUeXBlLCByZXN1bHQsIHBvaW50LCBIaXRUZXN0Rm9yZWdyb3VuZCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKaW5kZXggZTE0MjY5OTYxN2UxNTFmYmFlZGFmMWRlZTkzNGRmYzg1Zjcx
ZjdjNy4uZTZiYzliYjRmOTE1MGEyOWM5OTgwNjAwMWYwZGE3OTYzMWI0NmNlYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTM2NCw3
ICszNjQsNyBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgICAgICAgICAgfHwgKGhpdFJ1
bGVzLmNhbkhpdEZpbGwgJiYgKHN2Z1N0eWxlLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWly
ZUZpbGwpICYmIGZpbGxDb250YWlucyhsb2NhbFBvaW50LCBoaXRSdWxlcy5yZXF1aXJlRmlsbCwg
ZmlsbFJ1bGUpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEJvdW5kaW5nQm94ICYm
IG9iamVjdEJvdW5kaW5nQm94KCkuY29udGFpbnMobG9jYWxQb2ludCkpKSB7CiAgICAgICAgICAg
ICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpOwot
ICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVG
b3JIaXRUZXN0KCksIHJlcXVlc3QsIGZsb29yZWRMYXlvdXRQb2ludChsb2NhbFBvaW50KSkgPT0g
SGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9M
aXN0QmFzZWRUZXN0UmVzdWx0KG5vZGVGb3JIaXRUZXN0KCksIHJlcXVlc3QsIHsgZmxvb3JlZExh
eW91dFBvaW50KGxvY2FsUG9pbnQpLCAxIC8gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
IH0pID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCmluZGV4IGJlMzJhM2U4NjE0OTc5NzcxZTVlMWY2MDI5MmEwMDc4MzZm
MGI0Y2QuLmFlMWI3NzZlY2M3MmQ0YjFmMDhjYTk0NjY4OGQxZDkzZjQ3NzM2OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDQyLDcg
KzQ0Miw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAKICAgICAgICAgICAgIFNWR0hpdFRl
c3RDeWNsZURldGVjdGlvblNjb3BlIGhpdFRlc3RTY29wZSgqdGhpcyk7CiAKLSAgICAgICAgICAg
IEhpdFRlc3RMb2NhdGlvbiBoaXRUZXN0TG9jYXRpb24oTGF5b3V0UG9pbnQoZmxvb3JlZEludFBv
aW50KGxvY2FsUG9pbnQpKSk7CisgICAgICAgICAgICBhdXRvIGhpdFRlc3RMb2NhdGlvbiA9IEhp
dFRlc3RMb2NhdGlvbiB7IExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBvaW50KSks
IDEgLyBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkgfTsKICAgICAgICAgICAgIHJldHVy
biBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0TG9jYXRp
b24sIExheW91dFBvaW50KCksIGhpdFRlc3RBY3Rpb24pOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDAxNTNhNmU0ZjNjMWRmNzU1NjJjNjNj
OGY3YjYwNmFiYTJiNjMwOTkuLmQ0MzIwODBlMDBkOGM0YWMxMTFlYWJlN2VhMWRlNWE3MzYzYjQ0
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIzMTMsMTEgKzIzMTMs
MTEgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPE5vZGVMaXN0Pj4gSW50ZXJuYWxzOjpub2Rlc0Zyb21S
ZWN0KERvY3VtZW50JiBkb2N1bWVudCwgaW50IGMKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KGhpdFR5cGUpOwogCiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gWyZdIHsKLSAgICAgICAgYXV0
byBzaXplID0gTGF5b3V0U2l6ZSB7IGxlZnRQYWRkaW5nICsgcmlnaHRQYWRkaW5nICsgMSwgdG9w
UGFkZGluZyArIGJvdHRvbVBhZGRpbmcgKyAxIH07Ci0gICAgICAgIGlmIChzaXplLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiBIaXRUZXN0UmVzdWx0IHsgcG9pbnQgfTsKKyAgICAgICAg
YXV0byBoYXNQYWRkaW5nID0gbGVmdFBhZGRpbmcgfHwgcmlnaHRQYWRkaW5nIHx8IHRvcFBhZGRp
bmcgfHwgYm90dG9tUGFkZGluZzsKKyAgICAgICAgaWYgKCFoYXNQYWRkaW5nKQorICAgICAgICAg
ICAgcmV0dXJuIEhpdFRlc3RSZXN1bHQgeyBwb2ludCwgMSAvIGRvY3VtZW50LmRldmljZVNjYWxl
RmFjdG9yKCkgfTsKICAgICAgICAgYXV0byBhZGp1c3RlZFBvc2l0aW9uID0gTGF5b3V0UG9pbnQg
eyBmbG9vcmVkSW50UG9pbnQocG9pbnQpIH0gLSBMYXlvdXRTaXplICB7IGxlZnRQYWRkaW5nLCB0
b3BQYWRkaW5nIH07Ci0gICAgICAgIHJldHVybiBIaXRUZXN0UmVzdWx0IHsgTGF5b3V0UmVjdCB7
IGFkanVzdGVkUG9zaXRpb24sIHNpemUgfSB9OworICAgICAgICByZXR1cm4gSGl0VGVzdFJlc3Vs
dCB7IExheW91dFJlY3QgeyBhZGp1c3RlZFBvc2l0aW9uLCBMYXlvdXRTaXplIHsgbGVmdFBhZGRp
bmcgKyByaWdodFBhZGRpbmcgKyAxLCB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyArIDEgfSB9
IH07CiAgICAgfSgpOwogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMg
bWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3Bv
cnQuCiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWhpdFRlc3RSZXN1bHQu
aGl0VGVzdExvY2F0aW9uKCkuaW50ZXJzZWN0cyhMYXlvdXRSZWN0IHsgZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKSB9KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKaW5k
ZXggODAzODk4MDIwMWE3ZWJhYTNlMjFkZmMyOGIxOTgzZmZkNjQyOTJmMi4uNzQ1ZTMyZWQ1NTA2
OWI5OTYzYTk5ZDhkYWYzZTgxODA5ZjBmZWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRgogI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICAgICBJbnRQb2ludCBvcmlnaW5JbkNvbnRl
bnRzU3BhY2UgPSBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJv
dW5kZWRJbnRQb2ludChvcmlnaW4pKTsKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQg
PSBIaXRUZXN0UmVzdWx0KG9yaWdpbkluQ29udGVudHNTcGFjZSk7CisgICAgYXV0byBoaXRUZXN0
UmVzdWx0ID0gSGl0VGVzdFJlc3VsdCB7IG9yaWdpbkluQ29udGVudHNTcGFjZSwgMSAvIG1fd2Vi
UGFnZS5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSB9OwogCiAg
ICAgbV93ZWJQYWdlLm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5oaXRUZXN0KEhpdFRlc3RSZXF1
ZXN0KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIE5vZGUqIG5vZGUgPSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCBhNWQ5MzFlZmVhYTBkOTA4ZGEwYjdjZGUxODkyMmUwNTkyMjBk
ODY0Li5iNWFhZDI4MGQ1NGMxM2NiOTg4NTBiZGI0MTQyODdhNDFiNmZkNTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjY1NSw3ICsyNjU1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzY3VyZWRFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byBlbGVtZW50UmVjdEluTWFpbkZyYW1lID0gZWxlbWVu
dC5jbGllbnRSZWN0KCk7CiAKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0
OjpUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWxsb3dDaGlsZEZy
YW1lQ29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93
Q29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Oklnbm9yZUNsaXBwaW5nIH07Ci0gICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQoZWxlbWVudFJlY3RJbk1haW5GcmFtZS5jZW50ZXIoKSk7CisgICAg
YXV0byByZXN1bHQgPSBIaXRUZXN0UmVzdWx0IHsgZWxlbWVudFJlY3RJbk1haW5GcmFtZS5jZW50
ZXIoKSwgMSAvIHRvcERvY3VtZW50LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CiAKICAgICB0b3BE
b2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgIHJlc3VsdC5zZXRUb05vblVz
ZXJBZ2VudFNoYWRvd0FuY2VzdG9yKCk7CkBAIC0zNTAxLDE4ICszNTAxLDE4IEBAIHZvaWQgV2Vi
UGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlv
dXRTaXplLCBjb25zdCBXCiAgICAgICAgIHZpc2libGVIb3Jpem9udGFsRnJhY3Rpb24gPSBmcmFt
ZVZpZXcudW5vYnNjdXJlZENvbnRlbnRTaXplKCkud2lkdGgoKSAvIG9sZENvbnRlbnRTaXplLndp
ZHRoKCk7CiAgICAgICAgIEludFBvaW50IHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlciA9IGZy
YW1lVmlldy51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5jZW50ZXIoKTsKIAotICAgICAgICBIaXRU
ZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHVub2JzY3VyZWRDb250ZW50
UmVjdENlbnRlcik7Ci0KLSAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWVWaWV3LmZy
YW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5oaXRUZXN0KEhpdFRlc3RS
ZXF1ZXN0KCksIGhpdFRlc3RSZXN1bHQpOwotCi0gICAgICAgIGlmIChOb2RlKiBub2RlID0gaGl0
VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkgewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICAgICAgRnJhbWVWaWV3
JiBjb250YWluaW5nVmlldyA9ICpub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKLSAg
ICAgICAgICAgICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSBjb250YWluaW5nVmlldy5jb250
ZW50c1RvUm9vdFZpZXcocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpKTsK
LSAgICAgICAgICAgICAgICByZWxhdGl2ZUhvcml6b250YWxQb3NpdGlvbkluTm9kZUF0Q2VudGVy
ID0gKHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlci54KCkgLSBib3VuZGluZ0JveC54KCkpIC8g
Ym91bmRpbmdCb3gud2lkdGgoKTsKLSAgICAgICAgICAgICAgICByZWxhdGl2ZVZlcnRpY2FsUG9z
aXRpb25Jbk5vZGVBdENlbnRlciA9ICh1bm9ic2N1cmVkQ29udGVudFJlY3RDZW50ZXIueSgpIC0g
Ym91bmRpbmdCb3gueSgpKSAvIGJvdW5kaW5nQm94LmhlaWdodCgpOwotICAgICAgICAgICAgICAg
IG9sZE5vZGVBdENlbnRlciA9IG5vZGU7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZy
YW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
SGl0VGVzdFJlc3VsdCB7IHVub2JzY3VyZWRDb250ZW50UmVjdENlbnRlciwgMSAvIGRvY3VtZW50
LT5kZXZpY2VTY2FsZUZhY3RvcigpIH07CisgICAgICAgICAgICBkb2N1bWVudC0+aGl0VGVzdChI
aXRUZXN0UmVxdWVzdCgpLCByZXN1bHQpOworCisgICAgICAgICAgICBpZiAoYXV0byogbm9kZSA9
IHJlc3VsdC5pbm5lck5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgRnJhbWVWaWV3JiBj
b250YWluaW5nVmlldyA9ICpub2RlLT5kb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKTsKKyAgICAg
ICAgICAgICAgICAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gY29udGFpbmluZ1ZpZXcuY29u
dGVudHNUb1Jvb3RWaWV3KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCh0cnVlKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlSG9yaXpvbnRhbFBvc2l0aW9uSW5Ob2RlQXRD
ZW50ZXIgPSAodW5vYnNjdXJlZENvbnRlbnRSZWN0Q2VudGVyLngoKSAtIGJvdW5kaW5nQm94Lngo
KSkgLyBib3VuZGluZ0JveC53aWR0aCgpOworICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVZl
cnRpY2FsUG9zaXRpb25Jbk5vZGVBdENlbnRlciA9ICh1bm9ic2N1cmVkQ29udGVudFJlY3RDZW50
ZXIueSgpIC0gYm91bmRpbmdCb3gueSgpKSAvIGJvdW5kaW5nQm94LmhlaWdodCgpOworICAgICAg
ICAgICAgICAgICAgICBvbGROb2RlQXRDZW50ZXIgPSBub2RlOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKaW5kZXggNmY0MTM1OTQ2N2RlMzVlNThiYjZjNGZhZTgxYjMxOTVhYjhhOGE2Zi4uMGM4
NjU5ZTc4NDVmNjcwNTBkNzgyZDUwZmU4ZmQ0YmZlYjg1NTQ5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKQEAgLTE5MzQsNyArMTkzNCw3IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVy
ZU5vdGlmeShXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgICAgICBpZiAoIWxheWVy
KQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoZnJh
bWVWaWV3LT5zY3JlZW5Ub0NvbnRlbnRzKGxvZ2ljYWxHZXN0dXJlQmVnaW5Qb2ludCkpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQgeyBmcmFtZVZpZXctPnNjcmVlblRvQ29u
dGVudHMobG9naWNhbEdlc3R1cmVCZWdpblBvaW50KSwgMSAvIGRldmljZVNjYWxlRmFjdG9yKCkg
fTsKICAgICAgICAgbGF5ZXItPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKICAgICAgICAgbV9n
ZXN0dXJlVGFyZ2V0Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKIApAQCAtNDEwMCw3ICs0MTAw
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjplbGVtZW50QXRQb2ludChfSW5fIExQUE9JTlQgcG9pbnQs
IF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmEKICAgICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQg
PSBJbnRQb2ludChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIGZsb2F0IGludmVyc2VTY2FsZUZh
Y3RvciA9IDEuMGYgLyBkZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIHdlYkNvcmVQb2ludC5zY2Fs
ZShpbnZlcnNlU2NhbGVGYWN0b3IsIGludmVyc2VTY2FsZUZhY3Rvcik7Ci0gICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHdlYkNvcmVQb2ludCk7CisgICAgYXV0byByZXN1
bHQgPSBIaXRUZXN0UmVzdWx0IHsgd2ViQ29yZVBvaW50LCBpbnZlcnNlU2NhbGVGYWN0b3IgfTsK
ICAgICBpZiAoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAgICAgIGNvbnN0ZXhwciBP
cHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6
VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0
OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgICAgIHJlc3VsdCA9IGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludCh3ZWJDb3JlUG9pbnQsIGhpdFR5
cGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNDM5NzhjZDMwZTJkM2JmZDNl
ODg4ZmZiYjc5ZDEyNTJkYzVkMjg3NC4uMjk1OTNjMWEzOTVlOTI2YTFhZjg2MWZjYmU2NjQ0MjI3
OWE3NGFmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjEtMDYtMjIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEhp
dFRlc3RMb2NhdGlvbiBzaG91bGQgbm90IHVzZSBhIGZpeGVkICgxcHgsIDFweCkgYXJlYSBmb3Ig
cG9pbnQgYmFzZWQgaGl0dGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3MTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvZWxlbWVudEZy
b21Qb2ludC1zdWJwaXhlbC1leHBlY3RlZC50eHQ6CisKIDIwMjEtMDYtMTkgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBDU1Mgc2VyaWFsaXphdGlvbiBpc3N1
ZXMgYWZmZWN0aW5nIGNzcy1jb3VudGVyLXN0eWxlcyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9lbGVt
ZW50RnJvbVBvaW50LXN1YnBpeGVsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzc29tLXZpZXcvZWxlbWVudEZyb21Qb2ludC1z
dWJwaXhlbC1leHBlY3RlZC50eHQKaW5kZXggZWVhNDA1MWI2MWI5YjFjZDlkNGY5ZWY4Zjg4Yzgw
YmZhNThiYTllNi4uMzk5NDk0YTRiY2ZmN2ZkNTBjODY5YWI4NmVmYTY3NjZmMzA2OTMwZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3Nzb20tdmlldy9lbGVtZW50RnJvbVBvaW50LXN1YnBpeGVsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3NvbS12aWV3
L2VsZW1lbnRGcm9tUG9pbnQtc3VicGl4ZWwtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNiBAQAog
Ci1GQUlMIEhpdCB0ZXN0IHRvcCBsZWZ0IGNvcm5lciBvZiBib3ggYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgRWxlbWVudCBub2RlIDxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveCI+Ci0gICAgICA8ZGl2
IGNsYXNzPSJjaGlsZCI+PC9kaXYuLi4gYnV0IGdvdCBFbGVtZW50IG5vZGUgPGRpdiBjbGFzcz0i
bWFwIj48L2Rpdj4KK1BBU1MgSGl0IHRlc3QgdG9wIGxlZnQgY29ybmVyIG9mIGJveAogUEFTUyBI
aXQgdGVzdCB0b3AgcmlnaHQgY29ybmVyIG9mIGJveAotRkFJTCBIaXQgdGVzdCBib3R0b20gbGVm
dCBjb3JuZXIgb2YgYm94IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIEVsZW1lbnQgbm9kZSA8ZGl2
IGNsYXNzPSJib3giIGlkPSJib3giPgotICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2Li4u
IGJ1dCBnb3QgRWxlbWVudCBub2RlIDxkaXYgY2xhc3M9Im1hcCI+PC9kaXY+CitQQVNTIEhpdCB0
ZXN0IGJvdHRvbSBsZWZ0IGNvcm5lciBvZiBib3gKIFBBU1MgSGl0IHRlc3QgbG93ZXIgbGVmdCBj
b3JuZXIgb2YgYm94CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>