<?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>128484</bug_id>
          
          <creation_ts>2014-02-08 20:31:30 -0800</creation_ts>
          <short_desc>Add the basic infrastructure to compile attributes matching in selectors</short_desc>
          <delta_ts>2014-02-10 18:36:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978507</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-08 20:31:30 -0800</bug_when>
    <thetext>Add the basic infrastructure to compile attributes matching in selectors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978512</commentid>
    <comment_count>1</comment_count>
      <attachid>223604</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-08 20:45:35 -0800</bug_when>
    <thetext>Created attachment 223604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979162</commentid>
    <comment_count>2</comment_count>
      <attachid>223604</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2014-02-10 17:28:24 -0800</bug_when>
    <thetext>Comment on attachment 223604
Patch

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

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:414
&gt;          }

It looks like the code above here could be simpler if you fully handled the success case above the failure cases? – it would duplicate the restore, but that&apos;s a couple of extra loads &amp; it would save a jump.

&gt; Source/WebCore/cssjit/SelectorCompiler.cpp:992
&gt; +    // In general, canonicalLocalName and localName are the same. When they differe, we have to check if the node is HTML to know

differe

&gt; Source/WebCore/dom/Attribute.h:86
&gt; +    return Attribute::nameMatchesFilter(m_name, prefix, localName, namespaceURI);

I don&apos;t think you need &quot;Attribute::&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979188</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-02-10 18:36:08 -0800</bug_when>
    <thetext>Committed r163850: &lt;http://trac.webkit.org/changeset/163850&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223604</attachid>
            <date>2014-02-08 20:45:35 -0800</date>
            <delta_ts>2014-02-10 17:28:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128484-20140208204533.patch</filename>
            <type>text/plain</type>
            <size>58646</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQxYmM4MjQxOTY3YWUzOTZhYmMyYjg4
NTg3NGI1MjYxZTAyYjkyZjguLjNiNjlhNGY3ODlkNWQwMDlhYjc5M2I4MDJjNjhkNmJmNmJiM2Uy
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDItMDggIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0aGUgYmFzaWMgaW5mcmFzdHJ1Y3R1
cmUgdG8gY29tcGlsZSBhdHRyaWJ1dGVzIG1hdGNoaW5nIGluIHNlbGVjdG9ycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NDg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6Cisg
ICAgICAgIChXVEY6OlZlY3RvckJ1ZmZlckJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldCk6CisgICAg
ICAgIChXVEY6OlZlY3Rvcjo6c2l6ZU1lbW9yeU9mZnNldCk6CisgICAgICAgIChXVEY6OlZlY3Rv
cjo6ZGF0YU1lbW9yeU9mZnNldCk6CisgICAgICAgIEV4cG9zZSB0aGUgbWVtb3J5IG9mZnNldHMg
b2YgVmVjdG9yOjpzaXplKCkgYW5kIHRoZSBtZW1vcnkgYnVmZmVyIHBvaW50ZXIgZm9yIHRoZSBK
SVQuCisKIDIwMTQtMDItMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENoYW5nZSBUZXh0SXRlcmF0b3IgdG8gdXNlIFN0cmluZ1ZpZXcsIHByZXBhcmluZyB0byB3
ZWFuIGl0IGZyb20gZGVwcmVjYXRlZENoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZTQ0ZTA0MDBk
MGUwMzVkYzM2YzBhMWM0OWRjMzY5NmYwNWExZTQ0Li4wMDM0ODdkMDFlNDZjODJlZDk1ZmMzNzJl
NGU3MDFhOGM0Njc1MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTQtMDItMDgg
IEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0
aGUgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgdG8gY29tcGlsZSBhdHRyaWJ1dGVzIG1hdGNoaW5nIGlu
IHNlbGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI4NDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLW1hdGNoLXdp
dGgtY2hpbGQtYmFja3RyYWNraW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2VsZWN0b3Jz
L3F1ZXJ5U2VsZWN0b3ItbG9uZy1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tp
bmcuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1sb25n
LW11bHRpcGxlLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLW11bHRpcGxlLWF0dHJp
YnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy5odG1sCisKKyAgICAgICAgQWRkIHRo
ZSBpbmZyYXN0cnVjdHVyZSB0byBtYXRjaCBhdHRyaWJ1dGVzLiBUaGlzIG9ubHkgYWRkIGJhc2lj
IHN1cHBvcnQgZm9yIHRoZSAnU2V0JyBtYXRjaAorICAgICAgICB0eXBlLCB0aGUgb3RoZXIgbWF0
Y2ggdHlwZXMgd2lsbCBoYXZlIHRvIGJlIGJ1aWx0IG9uIHRvcC4KKworICAgICAgICAqIGNzc2pp
dC9SZWdpc3RlckFsbG9jYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0
b3I6OmF2YWlsYWJsZVJlZ2lzdGVyQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJB
bGxvY2F0b3I6OmFsbG9jYXRlUmVnaXN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJB
bGxvY2F0b3I6OmRlYWxsb2NhdGVSZWdpc3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3Rl
ckFsbG9jYXRvcjo6cmVzZXJ2ZUNhbGxlZVNhdmVkUmVnaXN0ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlZ2lzdGVyQWxsb2NhdG9yOjpyZXN0b3JlQ2FsbGVlU2F2ZWRSZWdpc3RlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6OmFsbG9jYXRlZFJlZ2lzdGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWdpc3RlckFsbG9jYXRvcjo6UmVnaXN0ZXJBbGxvY2F0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0ZXJBbGxvY2F0b3I6On5SZWdpc3RlckFsbG9jYXRvcik6
CisgICAgICAgIEluIHRoZSB3b3JzdCBjYXNlLCBtYXRjaGluZyBhdHRyaWJ1dGVzIGNhbiB0YWtl
IHVwIHRvIDEwIHJlZ2lzdGVycy4gT24geDg2XzY0LCB3ZSBoYXZlCisgICAgICAgIDggY2FsbGVy
LXNhdmVkIHJlZ2lzdGVycy4gVGhlIGV4dHJhIDIgcmVnaXN0ZXJzIGFyZSBzaW1wbHkgYWRkZWQg
YnkgdGFraW5nIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMuCisKKyAgICAgICAgUmVnaXN0ZXJBbGxv
Y2F0b3IgaXMgbW9kaWZpZWQgdG8ga25vdyBzdXBwb3J0IHNhdmluZyBhbmQgcmVzdG9yaW5nIGNh
bGxlZSBzYXZlZCByZWdpc3RlcnMuCisgICAgICAgIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSByZWdp
c3RlcnMgaXMgY2hhbmdlZCBmcm9tIGEgdmVjdG9yIHRvIGEgSGFzaFNldCBiZWNhdXNlIHRoZSBy
ZWdpc3RlcnMKKyAgICAgICAgYXJlIHJlbW92ZWQgZnJvbSBhcmJpdHJhcnkgbG9jYXRpb25zIGlu
IHJlc3RvcmVDYWxsZWVTYXZlZFJlZ2lzdGVycygpLiBUaGUgbV9hbGxvY2F0ZWRSZWdpc3RlcnMK
KyAgICAgICAgcmVtYWluIGEgdmVjdG9yIHNpbmNlIHRoZSBhbGxvY2F0aW9uL3JlbGVhc2UgcGF0
dGVybiByZW1haW4gb3JkZXJlZC4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yKToKKworICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6bWluaW11bVJlZ2lzdGVyUmVxdWlyZW1lbnRzKToKKyAgICAgICAgVGhp
cyBuZXcgdXRpbGl0eSBmaW5kcyB0aGUgbWluaW11bSBudW1iZXIgb2YgcmVnaXN0ZXJzIG5lZWRl
ZCB0byBjb21waWxlIHRoZSBpbnB1dC4gSW4gbW9zdAorICAgICAgICBjYXNlcyB3ZSBoYXZlIHBs
ZW50eSBlbm91Z2guIEluIHJhcmUgY2FzZXMgd2UgbmVlZCB0byBzYXZlZCBhIGZldyByZWdpc3Rl
cnMgdG8gdGhlIHN0YWNrLgorCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjpT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmNvbXBpbGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnREYXRhTWF0
Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6dGVzdElzSFRNTEZs
YWdPbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6Y2FuTWF0Y2hT
dHlsZUF0dHJpYnV0ZSk6CisKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVTeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKToKKyAgICAgICAg
VGhlIHN0eWxlIGF0dHJpYnV0ZSBhbmQgY2VydGFpbiBTVkcgYXR0cmlidXRlcyBjYW4gYmUgbW9k
aWZpZWQgbGF6aWx5LiBJbiB0aG9zZSBjYXNlcywKKyAgICAgICAgdGhlIGVsZW1lbnQgbmVlZHMg
dG8gYmUgdXBkYXRlZCBiZWZvcmUgcXVlcnlpbmcgdGhlIGF0dHJpYnV0ZXMuCisKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGVFbGVtZW50QXR0cmlidXRlc01hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRl
TWF0Y2hpbmcpOgorICAgICAgICBHZW5lcmF0ZSB0aGUgYXR0cmlidXRlIG1hdGNoaW5nLiBGb3Ig
ZWFjaCBDU1NTZWxlY3RvciBtYXRjaGluZyBhbiBhdHRyaWJ1dGUsIHdlIGdlbmVyYXRlCisgICAg
ICAgIGEgbG9vcCBvdmVyIGFsbCB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZWxlbWVudCwgbWFjaGlu
ZyB0aGUgcGFydGljdWxhciBDU1NTZWxlY3Rvci4KKyAgICAgICAgVGhpcyBtYWtlcyBubyBhdHRl
bXB0IGF0IGdyb3VwaW5nIHJlbGF0ZWQgcXVlcmllcyBzaW5jZSB0aG9zZSBkbyBub3Qgc2VlbSB0
byBoYXBwZW4gYSBsb3QKKyAgICAgICAgaW4gcHJhY3RpY2UuCisKKyAgICAgICAgKiBkb20vQXR0
cmlidXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om5hbWVNZW1vcnlPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6QXR0cmlidXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBdHRyaWJ1dGU6Om1hdGNoZXMpOgorICAgICAgICAqIGRvbS9FbGVtZW50
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OmlzVW5pcXVlRmxhZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGF0YTo6YXJyYXlTaXplQW5kRmxhZ3NNZW1vcnlPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OnN0eWxlQXR0cmlidXRlSXNEaXJ0
eUZsYWcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OmFuaW1hdGVkU1ZHQXR0cmli
dXRlc0FyZURpcnR5RmxhZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGF0YTo6YXJyYXlT
aXplT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlYWJsZUVsZW1lbnREYXRhOjphdHRy
aWJ1dGVBcnJheU1lbW9yeU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpVbmlxdWVFbGVtZW50
RGF0YTo6YXR0cmlidXRlVmVjdG9yTWVtb3J5T2Zmc2V0KToKKyAgICAgICAgKiBkb20vTm9kZS5o
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZmxhZ0lzSFRNTCk6CisgICAgICAgICogZG9tL1N0
eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c3luY2hy
b25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6c3luY2hyb25pemVTdHlsZUF0
dHJpYnV0ZUludGVybmFsKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplQW5pbWF0ZWRTVkdB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisKIDIwMTQtMDItMDggIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgVHJlZVNj
b3BlLCBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkgdG8gc3RkOjp1bmlxdWVfcHRyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmlu
ZGV4IDk2NGZlNTU3NzNlNWM2Njg0NWI5YTFiOTFiYjQ0MTIxZTE4MmY0Y2EuLmIwODRhNjZjNjY0
YWNhMzY5Mjc5NTg0YmU3ODE1ODQ1MWY0ZTgwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzA2LDYgKzMwNiw3IEBAIHB1YmxpYzoKIAogICAgIFQqIGJ1ZmZlcigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9CiAgICAgY29uc3QgVCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IGJ1ZmZlck1lbW9yeU9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3JCdWZmZXJCYXNlLCBtX2J1ZmZlcik7IH0KICAg
ICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX2NhcGFjaXR5OyB9CiAKICAgICBN
YWxsb2NQdHI8VD4gcmVsZWFzZUJ1ZmZlcigpCkBAIC0zODMsNiArMzg0LDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgQmFzZTo6YnVmZmVyOwogICAgIHVzaW5nIEJhc2U6OmNhcGFjaXR5OworICAg
IHVzaW5nIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldDsKIAogICAgIHVzaW5nIEJhc2U6OnJlbGVh
c2VCdWZmZXI7CiAKQEAgLTQ4Nyw2ICs0ODksNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBCYXNl
OjpidWZmZXI7CiAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CisgICAgdXNpbmcgQmFzZTo6YnVm
ZmVyTWVtb3J5T2Zmc2V0OwogCiAgICAgTWFsbG9jUHRyPFQ+IHJlbGVhc2VCdWZmZXIoKQogICAg
IHsKQEAgLTU3NCw2ICs1NzcsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yJiBvcGVyYXRvcj0oVmVj
dG9yJiYpOwogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAg
ICBzdGF0aWMgcHRyZGlmZl90IHNpemVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoVmVjdG9yLCBtX3NpemUpOyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gQmFzZTo6Y2FwYWNpdHkoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFzaXplKCk7IH0KIApAQCAtNjA3LDYgKzYxMSw3IEBAIHB1YmxpYzoKIAogICAgIFQqIGRh
dGEoKSB7IHJldHVybiBCYXNlOjpidWZmZXIoKTsgfQogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBCYXNlOjpidWZmZXIoKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3QgZGF0YU1l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIEJhc2U6OmJ1ZmZlck1lbW9yeU9mZnNldCgpOyB9CiAKICAg
ICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIGRhdGEoKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgp
IHsgcmV0dXJuIGJlZ2luKCkgKyBtX3NpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9SZWdpc3RlckFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lz
dGVyQWxsb2NhdG9yLmgKaW5kZXggNGJhOWMwZmRlZmJiNmQ1NWJlNjIyMzZmNTI2ODc2NDgxZTEx
ZDNlMi4uMTJlYzY3NGJkMGYxMjdjMWI3N2JjY2E2ZjMzZWJmZDY2NWE0MTY4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3Nzaml0L1JlZ2lzdGVyQWxsb2NhdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBF
TkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01hY3Jv
QXNzZW1ibGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8U3RhY2tBbGxv
Y2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNiArNDYsMTMgQEAgc3RhdGljIGNvbnN0
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgY2FsbGVyU2F2ZWRSZWdpc3RlcnNbXSA9
IHsKICAgICBKU0M6Olg4NlJlZ2lzdGVyczo6cjEwLAogICAgIEpTQzo6WDg2UmVnaXN0ZXJzOjpy
MTEKIH07CitzdGF0aWMgY29uc3QgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjYWxs
ZWVTYXZlZFJlZ2lzdGVyc1tdID0geworICAgIEpTQzo6WDg2UmVnaXN0ZXJzOjpyMTIsCisgICAg
SlNDOjpYODZSZWdpc3RlcnM6OnIxMywKKyAgICBKU0M6Olg4NlJlZ2lzdGVyczo6cjE0LAorICAg
IEpTQzo6WDg2UmVnaXN0ZXJzOjpyMTUKK307CitzdGF0aWMgY29uc3QgdW5zaWduZWQgcmVnaXN0
ZXJDb3VudCA9IFdURl9BUlJBWV9MRU5HVEgoY2FsbGVyU2F2ZWRSZWdpc3RlcnMpICsgV1RGX0FS
UkFZX0xFTkdUSChjYWxsZWVTYXZlZFJlZ2lzdGVycyk7CiAjZWxzZQogI2Vycm9yIFJlZ2lzdGVy
QWxsb2NhdG9yIGhhcyBubyBkZWZpbmVkIHJlZ2lzdGVycyBmb3IgdGhlIGFyY2hpdGVjdHVyZS4K
ICNlbmRpZgpAQCAtNTIsMTIgKzYwLDE1IEBAIHN0YXRpYyBjb25zdCBKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEIGNhbGxlclNhdmVkUmVnaXN0ZXJzW10gPSB7CiBjbGFzcyBSZWdpc3Rl
ckFsbG9jYXRvciB7CiBwdWJsaWM6CiAgICAgUmVnaXN0ZXJBbGxvY2F0b3IoKTsKKyAgICB+UmVn
aXN0ZXJBbGxvY2F0b3IoKTsKKworICAgIHVuc2lnbmVkIGF2YWlsYWJsZVJlZ2lzdGVyQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVycy5zaXplKCk7IH0KIAogICAgIEpTQzo6TWFjcm9B
c3NlbWJsZXI6OlJlZ2lzdGVySUQgYWxsb2NhdGVSZWdpc3RlcigpCiAgICAgewotICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9yZWdpc3RlcnMuaXNFbXB0eSgpKTsKLQotICAgICAgICBKU0M6Ok1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZ2lzdGVySUQgPSBtX3JlZ2lzdGVycy50YWtlRmly
c3QoKTsKKyAgICAgICAgYXV0byBmaXJzdCA9IG1fcmVnaXN0ZXJzLmJlZ2luKCk7CisgICAgICAg
IEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnaXN0ZXJJRCA9IHN0YXRpY19jYXN0
PEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KCpmaXJzdCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcmVnaXN0ZXJzLnJlbW92ZShmaXJzdCkpOwogICAgICAgICBBU1NFUlQoIW1f
YWxsb2NhdGVkUmVnaXN0ZXJzLmNvbnRhaW5zKHJlZ2lzdGVySUQpKTsKICAgICAgICAgbV9hbGxv
Y2F0ZWRSZWdpc3RlcnMuYXBwZW5kKHJlZ2lzdGVySUQpOwogICAgICAgICByZXR1cm4gcmVnaXN0
ZXJJRDsKQEAgLTY1LDEzICs3Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWxsb2NhdGVSZWdp
c3RlcihKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZ2lzdGVySUQpCiAgICAgewor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZ2lzdGVycy5yZW1vdmUocmVnaXN0ZXJJRCkpOwog
ICAgICAgICBBU1NFUlQoIW1fYWxsb2NhdGVkUmVnaXN0ZXJzLmNvbnRhaW5zKHJlZ2lzdGVySUQp
KTsKLSAgICAgICAgZm9yIChhdXRvIGl0ID0gbV9yZWdpc3RlcnMuYmVnaW4oKSwgZW5kID0gbV9y
ZWdpc3RlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICAgICAgaWYgKCppdCA9
PSByZWdpc3RlcklEKSB7Ci0gICAgICAgICAgICAgICAgbV9yZWdpc3RlcnMucmVtb3ZlKGl0KTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAg
ICBtX2FsbG9jYXRlZFJlZ2lzdGVycy5hcHBlbmQocmVnaXN0ZXJJRCk7CiAgICAgfQogCkBAIC04
MSwxNCArODcsMzYgQEAgcHVibGljOgogICAgICAgICAvLyBNb3N0IGFsbG9jYXRpb24vZGVhbGxv
Y2F0aW9uIGhhcHBlbiBpbiBzdGFjay1saWtlIG9yZGVyLiBJbiB0aGUgY29tbW9uIGNhc2UsIHRo
aXMKICAgICAgICAgLy8ganVzdCByZW1vdmVzIHRoZSBsYXN0IGl0ZW0uCiAgICAgICAgIG1fYWxs
b2NhdGVkUmVnaXN0ZXJzLnJlbW92ZShtX2FsbG9jYXRlZFJlZ2lzdGVycy5yZXZlcnNlRmluZChy
ZWdpc3RlcklEKSk7Ci0gICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChyZWdpc3RlcklEKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWdpc3RlcnMuYWRkKHJlZ2lzdGVySUQpLmlzTmV3RW50
cnkpOwogICAgIH0KIAotICAgIGNvbnN0IFZlY3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklELCA4PiYgYWxsb2NhdGVkUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0
ZWRSZWdpc3RlcnM7IH0KKyAgICB2b2lkIHJlc2VydmVDYWxsZWVTYXZlZFJlZ2lzdGVycyhTdGFj
a0FsbG9jYXRvciYgc3RhY2ssIHVuc2lnbmVkIGNvdW50KQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgZmluYWxTaXplID0gbV9jYWxsZWVTYXZlZFJlZ2lzdGVycy5zaXplKCkgKyBjb3VudDsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoZmluYWxTaXplIDw9IFdURl9BUlJBWV9MRU5HVEgoY2FsbGVl
U2F2ZWRSZWdpc3RlcnMpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9jYWxsZWVTYXZl
ZFJlZ2lzdGVycy5zaXplKCk7IGkgPCBmaW5hbFNpemU7ICsraSkgeworICAgICAgICAgICAgSlND
OjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWdpc3RlcklkID0gY2FsbGVlU2F2ZWRSZWdp
c3RlcnNbaV07CisgICAgICAgICAgICBtX2NhbGxlZVNhdmVkUmVnaXN0ZXJzLmFwcGVuZChzdGFj
ay5wdXNoKHJlZ2lzdGVySWQpKTsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJzLmFkZChyZWdpc3Rl
cklkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVzdG9yZUNhbGxlZVNhdmVkUmVn
aXN0ZXJzKFN0YWNrQWxsb2NhdG9yJiBzdGFjaykKKyAgICB7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fY2FsbGVlU2F2ZWRSZWdpc3RlcnMuc2l6ZSgpOyBpID4gMCA7IC0taSkgeworICAg
ICAgICAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWdpc3RlcklkID0gY2Fs
bGVlU2F2ZWRSZWdpc3RlcnNbaSAtIDFdOworICAgICAgICAgICAgc3RhY2sucG9wKG1fY2FsbGVl
U2F2ZWRSZWdpc3RlcnNbaSAtIDFdLCByZWdpc3RlcklkKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fcmVnaXN0ZXJzLnJlbW92ZShyZWdpc3RlcklkKSk7CisgICAgICAgIH0KKyAgICAg
ICAgbV9jYWxsZWVTYXZlZFJlZ2lzdGVycy5jbGVhcigpOworICAgIH0KKworICAgIGNvbnN0IFZl
Y3RvcjxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCByZWdpc3RlckNvdW50PiYgYWxs
b2NhdGVkUmVnaXN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvY2F0ZWRSZWdpc3RlcnM7IH0K
IAogcHJpdmF0ZToKLSAgICBEZXF1ZTxKU0M6Ok1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklELCBX
VEZfQVJSQVlfTEVOR1RIKGNhbGxlclNhdmVkUmVnaXN0ZXJzKT4gbV9yZWdpc3RlcnM7Ci0gICAg
VmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQsIFdURl9BUlJBWV9MRU5HVEgo
Y2FsbGVyU2F2ZWRSZWdpc3RlcnMpPiBtX2FsbG9jYXRlZFJlZ2lzdGVyczsKKyAgICBIYXNoU2V0
PHVuc2lnbmVkLCBEZWZhdWx0SGFzaDx1bnNpZ25lZD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBtX3JlZ2lzdGVyczsKKyAgICBWZWN0b3I8SlND
OjpNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCwgcmVnaXN0ZXJDb3VudD4gbV9hbGxvY2F0ZWRS
ZWdpc3RlcnM7CisgICAgVmVjdG9yPFN0YWNrQWxsb2NhdG9yOjpTdGFja1JlZmVyZW5jZSwgV1RG
X0FSUkFZX0xFTkdUSChjYWxsZWVTYXZlZFJlZ2lzdGVycyk+IG1fY2FsbGVlU2F2ZWRSZWdpc3Rl
cnM7CiB9OwogCiBjbGFzcyBMb2NhbFJlZ2lzdGVyIHsKQEAgLTExNyw3ICsxNDUsMTIgQEAgcHJp
dmF0ZToKIGlubGluZSBSZWdpc3RlckFsbG9jYXRvcjo6UmVnaXN0ZXJBbGxvY2F0b3IoKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGNhbGxlclNhdmVk
UmVnaXN0ZXJzKTsgKytpKQotICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoY2FsbGVyU2F2ZWRS
ZWdpc3RlcnNbaV0pOworICAgICAgICBtX3JlZ2lzdGVycy5hZGQoY2FsbGVyU2F2ZWRSZWdpc3Rl
cnNbaV0pOworfQorCitpbmxpbmUgUmVnaXN0ZXJBbGxvY2F0b3I6On5SZWdpc3RlckFsbG9jYXRv
cigpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jYWxsZWVTYXZlZFJlZ2lzdGVycy5pc0VtcHR5
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQv
U2VsZWN0b3JDb21waWxlci5jcHAKaW5kZXggNjMxNjBlZWIyZWMwYTRmOTJjZmVhMjA0NzM2Mzdj
MjY1N2RlMTgzNi4uYjBlNWQ1NDllZDhkY2E0MjZjMDExOTYxOGMwYjAxMjgzZmMzOGU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsMTYgKzMwLDIx
IEBACiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNp
bmNsdWRlICJFbGVtZW50RGF0YS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ2FsbC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUg
IlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTdGFja0FsbG9jYXRvci5oIgorI2luY2x1ZGUgIlN0
eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9MaW5rQnVmZmVyLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWFjcm9Bc3NlbWJsZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9WTS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTEwMyw5ICsxMDgsMTEg
QEAgc3RydWN0IFNlbGVjdG9yRnJhZ21lbnQgewogICAgIGNvbnN0IEF0b21pY1N0cmluZyogaWQ7
CiAgICAgVmVjdG9yPGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqLCAxPiBjbGFzc05hbWVzOwogICAg
IEhhc2hTZXQ8dW5zaWduZWQ+IHBzZXVkb0NsYXNzZXM7CisgICAgVmVjdG9yPGNvbnN0IENTU1Nl
bGVjdG9yKj4gYXR0cmlidXRlczsKIH07CiAKIHR5cGVkZWYgSlNDOjpNYWNyb0Fzc2VtYmxlciBB
c3NlbWJsZXI7Cit0eXBlZGVmIFZlY3RvcjxTZWxlY3RvckZyYWdtZW50LCA4PiBTZWxlY3RvckZy
YWdtZW50TGlzdDsKIAogY2xhc3MgU2VsZWN0b3JDb2RlR2VuZXJhdG9yIHsKIHB1YmxpYzoKQEAg
LTEzOSw2ICsxNDYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBFbGVtZW50IHByb3BlcnRpZXMgbWF0
Y2hlcnMuCiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBM
aXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKICAgICB2b2lkIGdl
bmVyYXRlRWxlbWVudERhdGFNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmKTsKKyAgICB2b2lkIGdlbmVyYXRlU3luY2hyb25p
emVTdHlsZUF0dHJpYnV0ZShBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudERhdGFBcnJheVNp
emVBbmRGbGFncyk7CisgICAgdm9pZCBnZW5lcmF0ZVN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdB
dHRyaWJ1dGUoQXNzZW1ibGVyOjpSZWdpc3RlcklEIGVsZW1lbnREYXRhQXJyYXlTaXplQW5kRmxh
Z3MpOworICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc01hdGNoaW5nKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERh
dGFBZGRyZXNzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50Jik7CisgICAgdm9pZCBnZW5lcmF0ZUVs
ZW1lbnRBdHRyaWJ1dGVNYXRjaGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGRlY0luZGV4UmVnaXN0ZXIsIGNvbnN0IENTU1NlbGVjdG9yKiBhdHRyaWJ1
dGVTZWxlY3Rvcik7CiAgICAgdm9pZCBnZW5lcmF0ZUVsZW1lbnRIYXNUYWdOYW1lKEFzc2VtYmxl
cjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZVRvTWF0
Y2gpOwogICAgIHZvaWQgZ2VuZXJhdGVFbGVtZW50SGFzSWQoQXNzZW1ibGVyOjpKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJlZ2lzdGVyJiBlbGVtZW50RGF0YUFkZHJlc3MsIGNv
bnN0IEF0b21pY1N0cmluZyYgaWRUb01hdGNoKTsKICAgICB2b2lkIGdlbmVyYXRlRWxlbWVudEhh
c0NsYXNzZXMoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBMb2NhbFJl
Z2lzdGVyJiBlbGVtZW50RGF0YUFkZHJlc3MsIGNvbnN0IFZlY3Rvcjxjb25zdCBBdG9taWNTdHJp
bmdJbXBsKj4mIGNsYXNzTmFtZXMpOwpAQCAtMTUxLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxBc3NlbWJsZXI6OkNhbGwsIEpTQzo6RnVuY3Rpb25QdHI+PiBtX2Z1
bmN0aW9uQ2FsbHM7CiAKICAgICBGdW5jdGlvblR5cGUgbV9mdW5jdGlvblR5cGU7Ci0gICAgVmVj
dG9yPFNlbGVjdG9yRnJhZ21lbnQsIDg+IG1fc2VsZWN0b3JGcmFnbWVudHM7CisgICAgU2VsZWN0
b3JGcmFnbWVudExpc3QgbV9zZWxlY3RvckZyYWdtZW50czsKICAgICBib29sIG1fc2VsZWN0b3JD
YW5ub3RNYXRjaEFueXRoaW5nOwogCiAgICAgU3RhY2tBbGxvY2F0b3I6OlN0YWNrUmVmZXJlbmNl
IG1fY2hlY2tpbmdDb250ZXh0U3RhY2tSZWZlcmVuY2U7CkBAIC0yNTUsOSArMjY2LDExIEBAIGlu
bGluZSBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcihjb25zdCBD
U1NTZWxlY3Rvciogcm9vdFNlbGVjCiAgICAgICAgICAgICBpZiAobV9mdW5jdGlvblR5cGUgPT0g
RnVuY3Rpb25UeXBlOjpDYW5ub3RDb21waWxlKQogICAgICAgICAgICAgICAgIGdvdG8gQ2Fubm90
SGFuZGxlU2VsZWN0b3I7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6U2V0OgorICAgICAgICAgICAgZnJhZ21lbnQuYXR0cmlidXRlcy5hcHBlbmQoc2VsZWN0
b3IpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlVua25v
d246CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkV4YWN0OgotICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpTZXQ6CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6Okxpc3Q6CiAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6Okh5cGhlbjoKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudDoKQEAgLTI5NiwxMSArMzA5LDUxIEBAIENhbm5vdEhhbmRsZVNlbGVjdG9yOgogICAg
IG1fc2VsZWN0b3JGcmFnbWVudHMuY2xlYXIoKTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25l
ZCBtaW5pbXVtUmVnaXN0ZXJSZXF1aXJlbWVudHMoY29uc3QgU2VsZWN0b3JGcmFnbWVudExpc3Qm
IHNlbGVjdG9yRnJhZ21lbnRzKQoreworICAgIC8vIFN0cmljdCBtaW5pbXVtIHRvIG1hdGNoIGFu
eXRoaW5nIGludGVyZXN0aW5nOgorICAgIC8vIEVsZW1lbnQgKyBCYWNrdHJhY2tpbmdSZWdpc3Rl
ciArIEVsZW1lbnREYXRhICsgYSBwb2ludGVyIHRvIHZhbHVlcyArIGFuIGluZGV4IG9uIHRoYXQg
cG9pbnRlciArIHRoZSB2YWx1ZSB3ZSBleHBlY3Q7CisgICAgdW5zaWduZWQgbWluaW11bSA9IDY7
CisKKyAgICAvLyBBdHRyaWJ1dGVzIGNhdXNlIHNvbWUgcmVnaXN0ZXIgcHJlc3N1cmUuCisgICAg
Zm9yICh1bnNpZ25lZCBzZWxlY3RvckZyYWdtZW50SW5kZXggPSAwOyBzZWxlY3RvckZyYWdtZW50
SW5kZXggPCBzZWxlY3RvckZyYWdtZW50cy5zaXplKCk7ICsrc2VsZWN0b3JGcmFnbWVudEluZGV4
KSB7CisgICAgICAgIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIHNlbGVjdG9yRnJhZ21lbnQgPSBz
ZWxlY3RvckZyYWdtZW50c1tzZWxlY3RvckZyYWdtZW50SW5kZXhdOworICAgICAgICBjb25zdCBW
ZWN0b3I8Y29uc3QgQ1NTU2VsZWN0b3IqPiYgYXR0cmlidXRlcyA9IHNlbGVjdG9yRnJhZ21lbnQu
YXR0cmlidXRlczsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGF0dHJpYnV0ZUluZGV4ID0gMDsg
YXR0cmlidXRlSW5kZXggPCBhdHRyaWJ1dGVzLnNpemUoKTsgKythdHRyaWJ1dGVJbmRleCkgewor
ICAgICAgICAgICAgLy8gRWxlbWVudCArIEVsZW1lbnREYXRhICsgc2NyYXRjaFJlZ2lzdGVyICsg
YXR0cmlidXRlQXJyYXlQb2ludGVyICsgZXhwZWN0ZWRMb2NhbE5hbWUgKyBxdWFsaWZpZWROYW1l
SW1wbC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZU1pbmltdW0gPSA2OworICAgICAg
ICAgICAgaWYgKHNlbGVjdG9yRnJhZ21lbnQudHJhdmVyc2FsQmFja3RyYWNraW5nQWN0aW9uID09
IEJhY2t0cmFja2luZ0FjdGlvbjo6SnVtcFRvRGVzY2VuZGFudFRhaWwKKyAgICAgICAgICAgICAg
ICB8fCBzZWxlY3RvckZyYWdtZW50Lm1hdGNoaW5nQmFja3RyYWNraW5nQWN0aW9uID09IEJhY2t0
cmFja2luZ0FjdGlvbjo6SnVtcFRvRGVzY2VuZGFudFRhaWwpCisgICAgICAgICAgICAgICAgYXR0
cmlidXRlTWluaW11bSArPSAxOyAvLyBJZiB0aGVyZSBpcyBhIERlc2NlbmRhbnRUYWlsLCB0aGVy
ZSBpcyBhIGJhY2t0cmFja2luZyByZWdpc3Rlci4KKworICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMuc2l6ZSgpICE9IDEpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlTWluaW11bSArPSAyOyAv
LyBGb3IgdGhlIGxvY2FsIGNvcHkgb2YgdGhlIGNvdW50ZXIgYW5kIGF0dHJpYnV0ZUFycmF5UG9p
bnRlci4KKworICAgICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3IqIGF0dHJpYnV0ZVNlbGVjdG9y
ID0gYXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CisgICAgICAgICAgICBpZiAoYXR0cmlidXRl
U2VsZWN0b3ItPmF0dHJpYnV0ZSgpLnByZWZpeCgpICE9IHN0YXJBdG9tICYmICFhdHRyaWJ1dGVT
ZWxlY3Rvci0+YXR0cmlidXRlKCkubmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCisgICAgICAgICAg
ICAgICAgYXR0cmlidXRlTWluaW11bSArPSAxOyAvLyBBZGRpdGlvbmFsIHJlZ2lzdGVyIGZvciB0
aGUgZXhwZWN0ZWQgbmFtZXNwYWNlLgorCisgICAgICAgICAgICBtaW5pbXVtID0gc3RkOjptYXgo
bWluaW11bSwgYXR0cmlidXRlTWluaW11bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gbWluaW11bTsKK30KKwogaW5saW5lIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgU2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpjb21waWxlKEpTQzo6Vk0qIHZtLCBKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVJlZiYgY29kZVJlZikKIHsKICAgICBpZiAobV9zZWxlY3RvckZyYWdtZW50cy5pc0VtcHR5
KCkgJiYgIW1fc2VsZWN0b3JDYW5ub3RNYXRjaEFueXRoaW5nKQogICAgICAgICByZXR1cm4gU2Vs
ZWN0b3JDb21waWxhdGlvblN0YXR1czo6Q2Fubm90Q29tcGlsZTsKIAorICAgIGJvb2wgcmVzZXJ2
ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycyA9IGZhbHNlOworICAgIHVuc2lnbmVkIGF2YWlsYWJsZVJl
Z2lzdGVyQ291bnQgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmF2YWlsYWJsZVJlZ2lzdGVyQ291bnQo
KTsKKyAgICB1bnNpZ25lZCBtaW5pbXVtUmVnaXN0ZXJDb3VudEZvckF0dHJpYnV0ZXMgPSBtaW5p
bXVtUmVnaXN0ZXJSZXF1aXJlbWVudHMobV9zZWxlY3RvckZyYWdtZW50cyk7CisgICAgaWYgKGF2
YWlsYWJsZVJlZ2lzdGVyQ291bnQgPCBtaW5pbXVtUmVnaXN0ZXJDb3VudEZvckF0dHJpYnV0ZXMp
IHsKKyAgICAgICAgcmVzZXJ2ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycyA9IHRydWU7CisgICAgICAg
IG1fcmVnaXN0ZXJBbGxvY2F0b3IucmVzZXJ2ZUNhbGxlZVNhdmVkUmVnaXN0ZXJzKG1fc3RhY2tB
bGxvY2F0b3IsIG1pbmltdW1SZWdpc3RlckNvdW50Rm9yQXR0cmlidXRlcyAtIGF2YWlsYWJsZVJl
Z2lzdGVyQ291bnQpOworICAgIH0KKwogICAgIG1fcmVnaXN0ZXJBbGxvY2F0b3IuYWxsb2NhdGVS
ZWdpc3RlcihlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKTsKIAogICAgIGlmIChtX2Z1bmN0aW9uVHlw
ZSA9PSBGdW5jdGlvblR5cGU6OlNlbGVjdG9yQ2hlY2tlcldpdGhDaGVja2luZ0NvbnRleHQpCkBA
IC0zMzIsMjEgKzM4NSwzNiBAQCBpbmxpbmUgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmNvbXBpbGUoSlNDOjpWTSogdm0sIEpTQwogCiAgICAgbV9yZWdp
c3RlckFsbG9jYXRvci5kZWFsbG9jYXRlUmVnaXN0ZXIoZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7
CiAKLSAgICBpZiAobV9mdW5jdGlvblR5cGUgPT0gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3Rv
ckNoZWNrZXIpIHsKLSAgICAgICAgaWYgKCFtX3NlbGVjdG9yQ2Fubm90TWF0Y2hBbnl0aGluZykg
ewotICAgICAgICAgICAgLy8gU3VjY2Vzcy4KLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICBpZiAobV9m
dW5jdGlvblR5cGUgPT0gRnVuY3Rpb25UeXBlOjpTaW1wbGVTZWxlY3RvckNoZWNrZXIgJiYgbV9z
ZWxlY3RvckNhbm5vdE1hdGNoQW55dGhpbmcpIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ZShB
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICBtX2Fz
c2VtYmxlci5yZXQoKTsKKyAgICB9IGVsc2UgaWYgKG1fZnVuY3Rpb25UeXBlID09IEZ1bmN0aW9u
VHlwZTo6U2ltcGxlU2VsZWN0b3JDaGVja2VyKSB7CisgICAgICAgIC8vIFN1Y2Nlc3MuCisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHJldHVyblJl
Z2lzdGVyKTsKKyAgICAgICAgaWYgKCFyZXNlcnZlZENhbGxlZVNhdmVkUmVnaXN0ZXJzKQogICAg
ICAgICAgICAgbV9hc3NlbWJsZXIucmV0KCk7Ci0gICAgICAgIH0KIAogICAgICAgICAvLyBGYWls
dXJlLgotICAgICAgICBpZiAobV9zZWxlY3RvckNhbm5vdE1hdGNoQW55dGhpbmcgfHwgIWZhaWx1
cmVDYXNlcy5lbXB0eSgpKSB7CisgICAgICAgIGlmICghZmFpbHVyZUNhc2VzLmVtcHR5KCkpIHsK
KyAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwRmFpbHVyZUNhc2U7CisgICAgICAgICAg
ICBpZiAocmVzZXJ2ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycykKKyAgICAgICAgICAgICAgICBza2lw
RmFpbHVyZUNhc2UgPSBtX2Fzc2VtYmxlci5qdW1wKCk7CisKICAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5saW5rKCZtX2Fzc2VtYmxlcik7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApLCByZXR1cm5SZWdpc3Rlcik7CisKKyAgICAgICAgICAg
IGlmICghcmVzZXJ2ZWRDYWxsZWVTYXZlZFJlZ2lzdGVycykKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5yZXQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBza2lwRmFp
bHVyZUNhc2UubGluaygmbV9hc3NlbWJsZXIpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXNl
cnZlZENhbGxlZVNhdmVkUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBtX3JlZ2lzdGVyQWxsb2Nh
dG9yLnJlc3RvcmVDYWxsZWVTYXZlZFJlZ2lzdGVycyhtX3N0YWNrQWxsb2NhdG9yKTsKICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnJldCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUKG1fZnVuY3Rpb25UeXBlID09IEZ1bmN0aW9uVHlwZTo6U2VsZWN0b3JDaGVja2Vy
V2l0aENoZWNraW5nQ29udGV4dCk7CisgICAgICAgIEFTU0VSVCghbV9zZWxlY3RvckNhbm5vdE1h
dGNoQW55dGhpbmcpOwogCiAgICAgICAgIC8vIFN1Y2Nlc3MuCiAgICAgICAgIG1fYXNzZW1ibGVy
Lm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMSksIHJldHVyblJlZ2lzdGVyKTsKQEAgLTM1
OSwxNyArNDI3LDE3IEBAIGlubGluZSBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Y29tcGlsZShKU0M6OlZNKiB2bSwgSlNDCiAKICAgICAgICAgLy8gRmFp
bHVyZS4KICAgICAgICAgaWYgKCFmYWlsdXJlQ2FzZXMuZW1wdHkoKSkgewotICAgICAgICAgICAg
QXNzZW1ibGVyOjpKdW1wIGp1bXBUb1JldHVybiA9IG1fYXNzZW1ibGVyLmp1bXAoKTsKKyAgICAg
ICAgICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwRmFpbHVyZUNhc2UgPSBtX2Fzc2VtYmxlci5qdW1w
KCk7CiAKICAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5saW5rKCZtX2Fzc2VtYmxlcik7CiAgICAg
ICAgICAgICBmYWlsdXJlU3RhY2suZGlzY2FyZCgpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSwgcmV0dXJuUmVnaXN0ZXIpOwogCi0gICAg
ICAgICAgICBqdW1wVG9SZXR1cm4ubGluaygmbV9hc3NlbWJsZXIpOworICAgICAgICAgICAgc2tp
cEZhaWx1cmVDYXNlLmxpbmsoJm1fYXNzZW1ibGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIG1f
c3RhY2tBbGxvY2F0b3IubWVyZ2Uoc3RkOjptb3ZlKHN1Y2Nlc3NTdGFjayksIHN0ZDo6bW92ZShm
YWlsdXJlU3RhY2spKTsKLQorICAgICAgICBtX3JlZ2lzdGVyQWxsb2NhdG9yLnJlc3RvcmVDYWxs
ZWVTYXZlZFJlZ2lzdGVycyhtX3N0YWNrQWxsb2NhdG9yKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
cmV0KCk7CiAgICAgfQogCkBAIC03ODcsNyArODU1LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlRWxlbWVudE1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1
cmUKIAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudERhdGFNYXRj
aGluZyhBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJh
Z21lbnQmIGZyYWdtZW50KQogewotICAgIGlmICghZnJhZ21lbnQuaWQgJiYgZnJhZ21lbnQuY2xh
c3NOYW1lcy5pc0VtcHR5KCkpCisgICAgaWYgKCFmcmFnbWVudC5pZCAmJiBmcmFnbWVudC5jbGFz
c05hbWVzLmlzRW1wdHkoKSAmJiBmcmFnbWVudC5hdHRyaWJ1dGVzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gIEdlbmVyYXRlOgpAQCAtODAyLDYgKzg3MCwxNjYgQEAgdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudERhdGFNYXRjaGluZyhBc3Nl
bWJsZXI6Okp1bXBMaXN0JiBmYWkKICAgICAgICAgZ2VuZXJhdGVFbGVtZW50SGFzSWQoZmFpbHVy
ZUNhc2VzLCBlbGVtZW50RGF0YUFkZHJlc3MsICpmcmFnbWVudC5pZCk7CiAgICAgaWYgKCFmcmFn
bWVudC5jbGFzc05hbWVzLmlzRW1wdHkoKSkKICAgICAgICAgZ2VuZXJhdGVFbGVtZW50SGFzQ2xh
c3NlcyhmYWlsdXJlQ2FzZXMsIGVsZW1lbnREYXRhQWRkcmVzcywgZnJhZ21lbnQuY2xhc3NOYW1l
cyk7CisgICAgaWYgKCFmcmFnbWVudC5hdHRyaWJ1dGVzLmlzRW1wdHkoKSkKKyAgICBnZW5lcmF0
ZUVsZW1lbnRBdHRyaWJ1dGVzTWF0Y2hpbmcoZmFpbHVyZUNhc2VzLCBlbGVtZW50RGF0YUFkZHJl
c3MsIGZyYWdtZW50KTsKK30KKworc3RhdGljIGlubGluZSBBc3NlbWJsZXI6Okp1bXAgdGVzdElz
SFRNTEZsYWdPbk5vZGUoQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBBc3Nl
bWJsZXImIGFzc2VtYmxlciwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIG5vZGVBZGRyZXNzKQorewor
ICAgIHJldHVybiBhc3NlbWJsZXIuYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpB
ZGRyZXNzKG5vZGVBZGRyZXNzLCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSksIEFzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc0hUTUwoKSkpOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgY2FuTWF0Y2hTdHlsZUF0dHJpYnV0ZShjb25zdCBTZWxlY3RvckZyYWdtZW50JiBm
cmFnbWVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnQuYXR0cmli
dXRlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBDU1NTZWxlY3RvciogYXR0cmlidXRl
U2VsZWN0b3IgPSBmcmFnbWVudC5hdHRyaWJ1dGVzW2ldOworICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlU2VsZWN0b3ItPmF0dHJpYnV0ZSgpOwor
ICAgICAgICBpZiAoQXR0cmlidXRlOjpuYW1lTWF0Y2hlc0ZpbHRlcihIVE1MTmFtZXM6OnN0eWxl
QXR0ciwgYXR0cmlidXRlTmFtZS5wcmVmaXgoKSwgYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSwg
YXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkKKyAgICAgICAgICAgIHx8IEF0dHJpYnV0ZTo6
bmFtZU1hdGNoZXNGaWx0ZXIoSFRNTE5hbWVzOjpzdHlsZUF0dHIsIGF0dHJpYnV0ZU5hbWUucHJl
Zml4KCksIGF0dHJpYnV0ZVNlbGVjdG9yLT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKSwg
YXR0cmlidXRlTmFtZS5uYW1lc3BhY2VVUkkoKSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZShBc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgZWxlbWVudERhdGFBcnJheVNpemVBbmRGbGFncykKK3sKKyAgICAvLyBU
aGUgc3R5bGUgYXR0cmlidXRlIGlzIHVwZGF0ZWQgbGF6aWx5IGJhc2VkIG9uIHRoZSBmbGFnIHN0
eWxlQXR0cmlidXRlSXNEaXJ0eS4KKyAgICBBc3NlbWJsZXI6Okp1bXAgc3R5bGVBdHRyaWJ1dGVO
b3REaXJ0eSA9IG1fYXNzZW1ibGVyLmJyYW5jaFRlc3QzMihBc3NlbWJsZXI6Olplcm8sIGVsZW1l
bnREYXRhQXJyYXlTaXplQW5kRmxhZ3MsIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEVsZW1lbnRE
YXRhOjpzdHlsZUF0dHJpYnV0ZUlzRGlydHlGbGFnKCkpKTsKKworICAgIEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxv
Y2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CisgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRk
cmVzcyhTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwpOwor
ICAgIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBlbGVtZW50QWRkcmVzcyA9IGVsZW1lbnRBZGRyZXNz
UmVnaXN0ZXI7CisgICAgZnVuY3Rpb25DYWxsLnNldEZpcnN0QXJndW1lbnQoZWxlbWVudEFkZHJl
c3MpOworICAgIGZ1bmN0aW9uQ2FsbC5jYWxsKCk7CisKKyAgICBzdHlsZUF0dHJpYnV0ZU5vdERp
cnR5LmxpbmsoJm1fYXNzZW1ibGVyKTsKK30KKwordm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlU3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgZWxlbWVudERhdGFBcnJheVNpemVBbmRGbGFncykKK3sKKyAgICAvLyBTVkcgYXR0
cmlidXRlcyBjYW4gYmUgdXBkYXRlZCBsYXppbHkgZGVwZW5kaW5nIG9uIHRoZSBmbGFnIEFuaW1h
dGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5LiBXZSBuZWVkIHRvIGNoZWNrCisgICAgLy8gdGhhdCBm
aXJzdC4KKyAgICBBc3NlbWJsZXI6Okp1bXAgYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzTm90RGlydHkg
PSBtX2Fzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBlbGVtZW50RGF0YUFy
cmF5U2l6ZUFuZEZsYWdzLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihFbGVtZW50RGF0YTo6YW5p
bWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHlGbGFnKCkpKTsKKworICAgIEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbkNhbGwobV9hc3NlbWJsZXIsIG1fcmVnaXN0ZXJBbGxvY2F0b3IsIG1fc3RhY2tBbGxv
Y2F0b3IsIG1fZnVuY3Rpb25DYWxscyk7CisgICAgZnVuY3Rpb25DYWxsLnNldEZ1bmN0aW9uQWRk
cmVzcyhTVkdFbGVtZW50OjpzeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKTsKKyAg
ICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgZWxlbWVudEFkZHJlc3MgPSBlbGVtZW50QWRkcmVzc1Jl
Z2lzdGVyOworICAgIGZ1bmN0aW9uQ2FsbC5zZXRGaXJzdEFyZ3VtZW50KGVsZW1lbnRBZGRyZXNz
KTsKKyAgICBmdW5jdGlvbkNhbGwuY2FsbCgpOworCisgICAgYW5pbWF0ZWRTVkdBdHRyaWJ1dGVz
Tm90RGlydHkubGluaygmbV9hc3NlbWJsZXIpOworfQorCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlc01hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExp
c3QmIGZhaWx1cmVDYXNlcywgY29uc3QgTG9jYWxSZWdpc3RlciYgZWxlbWVudERhdGFBZGRyZXNz
LCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKK3sKKyAgICBMb2NhbFJlZ2lzdGVy
IHNjcmF0Y2hSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgZWxlbWVudERhdGFBcnJheVNpemVBbmRGbGFncyA9IHNjcmF0Y2hSZWdpc3RlcjsK
KyAgICBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgYXR0cmlidXRlQXJyYXlMZW5ndGggPSBzY3JhdGNo
UmVnaXN0ZXI7CisKKyAgICBtX2Fzc2VtYmxlci5sb2FkMzIoQXNzZW1ibGVyOjpBZGRyZXNzKGVs
ZW1lbnREYXRhQWRkcmVzcywgRWxlbWVudERhdGE6OmFycmF5U2l6ZUFuZEZsYWdzTWVtb3J5T2Zm
c2V0KCkpLCBlbGVtZW50RGF0YUFycmF5U2l6ZUFuZEZsYWdzKTsKKworICAgIGlmIChjYW5NYXRj
aFN0eWxlQXR0cmlidXRlKGZyYWdtZW50KSkKKyAgICAgICAgZ2VuZXJhdGVTeW5jaHJvbml6ZVN0
eWxlQXR0cmlidXRlKGVsZW1lbnREYXRhQXJyYXlTaXplQW5kRmxhZ3MpOworCisgICAgLy8gRklY
TUU6IFN5c3RlbWF0aWNhbGx5IGdlbmVyYXRpbmcgdGhlIGZ1bmN0aW9uIGNhbGwgZm9yIGFuaW1h
dGFibGUgU1ZHIGF0dHJpYnV0ZXMgY2F1c2VzIGEgcnVudGltZSBwZW5hbHRseS4gV2Ugc2hvdWxk
IGluc3RlYWQKKyAgICAvLyBmaWx0ZXIgZnJvbSB0aGUgbGlzdCBvZiBTVkdFbGVtZW50Ojppc0Fu
aW1hdGFibGVBdHRyaWJ1dGUgYXQgcnVudGltZSB3aGVuIGNvbXBpbGluZy4KKyAgICBnZW5lcmF0
ZVN5bmNocm9uaXplQWxsQW5pbWF0ZWRTVkdBdHRyaWJ1dGUoZWxlbWVudERhdGFBcnJheVNpemVB
bmRGbGFncyk7CisKKyAgICAvLyBBdHRyaWJ1dGVzIGNhbiBiZSBzdG9yZWQgZWl0aGVyIGluIGEg
c2VwYXJhdGUgdmVjdG9yIGZvciBVbmlxdWVFbGVtZW50RGF0YSwgb3IgYWZ0ZXIgdGhlIGVsZW1l
bnREYXRhIGl0c2VsZgorICAgIC8vIGZvciBTaGFyZWFibGVFbGVtZW50RGF0YS4KKyAgICBMb2Nh
bFJlZ2lzdGVyIGF0dHJpYnV0ZUFycmF5UG9pbnRlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAg
ICBBc3NlbWJsZXI6Okp1bXAgaXNTaGFyZWFibGVFbGVtZW50RGF0YSAgPSBtX2Fzc2VtYmxlci5i
cmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBlbGVtZW50RGF0YUFycmF5U2l6ZUFuZEZsYWdz
LCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihFbGVtZW50RGF0YTo6aXNVbmlxdWVGbGFnKCkpKTsK
KyAgICB7CisgICAgICAgIHB0cmRpZmZfdCBhdHRyaWJ1dGVWZWN0b3JPZmZzZXQgPSBVbmlxdWVF
bGVtZW50RGF0YTo6YXR0cmlidXRlVmVjdG9yTWVtb3J5T2Zmc2V0KCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKGVsZW1lbnREYXRhQWRkcmVzcywgYXR0
cmlidXRlVmVjdG9yT2Zmc2V0ICsgVW5pcXVlRWxlbWVudERhdGE6OkF0dHJpYnV0ZVZlY3Rvcjo6
ZGF0YU1lbW9yeU9mZnNldCgpKSwgYXR0cmlidXRlQXJyYXlQb2ludGVyKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubG9hZDMyKEFzc2VtYmxlcjo6QWRkcmVzcyhlbGVtZW50RGF0YUFkZHJlc3MsIGF0
dHJpYnV0ZVZlY3Rvck9mZnNldCArIFVuaXF1ZUVsZW1lbnREYXRhOjpBdHRyaWJ1dGVWZWN0b3I6
OnNpemVNZW1vcnlPZmZzZXQoKSksIGF0dHJpYnV0ZUFycmF5TGVuZ3RoKTsKKyAgICB9CisgICAg
QXNzZW1ibGVyOjpKdW1wIHNraXBTaGFyZWFibGUgPSBtX2Fzc2VtYmxlci5qdW1wKCk7CisKKyAg
ICB7CisgICAgICAgIGlzU2hhcmVhYmxlRWxlbWVudERhdGEubGluaygmbV9hc3NlbWJsZXIpOwor
ICAgICAgICBtX2Fzc2VtYmxlci51cnNoaWZ0MzIoZWxlbWVudERhdGFBcnJheVNpemVBbmRGbGFn
cywgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoRWxlbWVudERhdGE6OmFycmF5U2l6ZU9mZnNldCgp
KSwgYXR0cmlidXRlQXJyYXlMZW5ndGgpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQ2NChBc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihTaGFyZWFibGVFbGVtZW50RGF0YTo6YXR0cmlidXRlQXJyYXlN
ZW1vcnlPZmZzZXQoKSksIGVsZW1lbnREYXRhQWRkcmVzcywgYXR0cmlidXRlQXJyYXlQb2ludGVy
KTsKKyAgICB9CisKKyAgICBza2lwU2hhcmVhYmxlLmxpbmsoJm1fYXNzZW1ibGVyKTsKKworICAg
IC8vIElmIHRoZXJlIGFyZSBubyBhdHRyaWJ1dGVzLCBmYWlsIGltbWVkaWF0ZWx5LgorICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFzc2VtYmxlcjo6WmVy
bywgYXR0cmlidXRlQXJyYXlMZW5ndGgpKTsKKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZUNvdW50
ID0gZnJhZ21lbnQuYXR0cmlidXRlcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpIHsKKyAgICAgICAgQXNzZW1ibGVyOjpSZWdpc3RlcklE
IGRlY0luZGV4UmVnaXN0ZXI7CisgICAgICAgIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50
QXR0cmlidXRlQWRkcmVzczsKKworICAgICAgICBib29sIGlzTGFzdEF0dHJpYnV0ZSA9IGkgPT0g
KGF0dHJpYnV0ZUNvdW50IC0gMSk7CisgICAgICAgIGlmICghaXNMYXN0QXR0cmlidXRlKSB7Cisg
ICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBjb3B5IHRvIGxldCB0aGUgbmV4dCBpdGVy
YXRpb25zIHVzZSB0aGUgdmFsdWVzLgorICAgICAgICAgICAgY3VycmVudEF0dHJpYnV0ZUFkZHJl
c3MgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmFsbG9jYXRlUmVnaXN0ZXIoKTsKKyAgICAgICAgICAg
IGRlY0luZGV4UmVnaXN0ZXIgPSBtX3JlZ2lzdGVyQWxsb2NhdG9yLmFsbG9jYXRlUmVnaXN0ZXIo
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoYXR0cmlidXRlQXJyYXlQb2ludGVyLCBj
dXJyZW50QXR0cmlidXRlQWRkcmVzcyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKGF0
dHJpYnV0ZUFycmF5TGVuZ3RoLCBkZWNJbmRleFJlZ2lzdGVyKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzID0gYXR0cmlidXRlQXJyYXlQb2lu
dGVyOworICAgICAgICAgICAgZGVjSW5kZXhSZWdpc3RlciA9IGF0dHJpYnV0ZUFycmF5TGVuZ3Ro
OworICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmco
ZmFpbHVyZUNhc2VzLCBjdXJyZW50QXR0cmlidXRlQWRkcmVzcywgZGVjSW5kZXhSZWdpc3Rlciwg
ZnJhZ21lbnQuYXR0cmlidXRlc1tpXSk7CisKKyAgICAgICAgaWYgKCFpc0xhc3RBdHRyaWJ1dGUp
IHsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJBbGxvY2F0b3IuZGVhbGxvY2F0ZVJlZ2lzdGVyKGRl
Y0luZGV4UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9yZWdpc3RlckFsbG9jYXRvci5kZWFsbG9j
YXRlUmVnaXN0ZXIoY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MpOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRl
TWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgY3VycmVudEF0dHJpYnV0ZUFkZHJlc3MsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBk
ZWNJbmRleFJlZ2lzdGVyLCBjb25zdCBDU1NTZWxlY3RvciogYXR0cmlidXRlU2VsZWN0b3IpCit7
CisgICAgLy8gR2V0IHRoZSBsb2NhbE5hbWUgdXNlZCBmb3IgY29tcGFyaXNvbi4gSFRNTCBlbGVt
ZW50cyB1c2UgYSBsb3dlcmNhc2UgbG9jYWwgbmFtZSBrbm93biBpbiBzZWxlY3RvcnMgYXMgY2Fu
b25pY2FsTG9jYWxOYW1lLgorICAgIExvY2FsUmVnaXN0ZXIgbG9jYWxOYW1lVG9NYXRjaChtX3Jl
Z2lzdGVyQWxsb2NhdG9yKTsKKworICAgIC8vIEluIGdlbmVyYWwsIGNhbm9uaWNhbExvY2FsTmFt
ZSBhbmQgbG9jYWxOYW1lIGFyZSB0aGUgc2FtZS4gV2hlbiB0aGV5IGRpZmZlcmUsIHdlIGhhdmUg
dG8gY2hlY2sgaWYgdGhlIG5vZGUgaXMgSFRNTCB0byBrbm93CisgICAgLy8gd2hpY2ggb25lIHRv
IHVzZS4KKyAgICBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiBjYW5vbmljYWxMb2NhbE5hbWUgPSBh
dHRyaWJ1dGVTZWxlY3Rvci0+YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkuaW1wbCgpOwor
ICAgIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqIGxvY2FsTmFtZSA9IGF0dHJpYnV0ZVNlbGVjdG9y
LT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgaWYgKGNhbm9uaWNhbExvY2Fs
TmFtZSA9PSBsb2NhbE5hbWUpCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKGNhbm9uaWNhbExvY2FsTmFtZSksIGxvY2FsTmFtZVRvTWF0Y2gpOworICAg
IGVsc2UgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihjYW5vbmljYWxMb2NhbE5hbWUpLCBsb2NhbE5hbWVUb01hdGNoKTsKKyAgICAgICAgQXNzZW1i
bGVyOjpKdW1wIGVsZW1lbnRJc0hUTUwgPSB0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3NlbWJsZXI6
Ok5vblplcm8sIG1fYXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobG9jYWxOYW1lKSwgbG9j
YWxOYW1lVG9NYXRjaCk7CisgICAgICAgIGVsZW1lbnRJc0hUTUwubGluaygmbV9hc3NlbWJsZXIp
OworICAgIH0KKworICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgc3VjY2Vzc0Nhc2VzOworICAgIEFz
c2VtYmxlcjo6TGFiZWwgbG9vcFN0YXJ0KG1fYXNzZW1ibGVyLmxhYmVsKCkpOworCisgICAgTG9j
YWxSZWdpc3RlciBxdWFsaWZpZWROYW1lSW1wbChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKKyAgICBt
X2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyhjdXJyZW50QXR0cmlidXRlQWRk
cmVzcywgQXR0cmlidXRlOjpuYW1lTWVtb3J5T2Zmc2V0KCkpLCBxdWFsaWZpZWROYW1lSW1wbCk7
CisKKyAgICBib29sIHNob3VsZENoZWNrTmFtZXNwYWNlID0gYXR0cmlidXRlU2VsZWN0b3ItPmF0
dHJpYnV0ZSgpLnByZWZpeCgpICE9IHN0YXJBdG9tOworICAgIGlmIChzaG91bGRDaGVja05hbWVz
cGFjZSkgeworICAgICAgICBBc3NlbWJsZXI6Okp1bXAgbmFtZURvZXNOb3RNYXRjaCA9IG1fYXNz
ZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3Mo
cXVhbGlmaWVkTmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2Nh
bE5hbWVNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFtZVRvTWF0Y2gpOworCisgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZ0ltcGwqIG5hbWVzcGFjZVVSSSA9IGF0dHJpYnV0ZVNlbGVjdG9yLT5hdHRy
aWJ1dGUoKS5uYW1lc3BhY2VVUkkoKS5pbXBsKCk7CisgICAgICAgIGlmIChuYW1lc3BhY2VVUkkp
IHsKKyAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgbmFtZXNwYWNlVG9NYXRjaChtX3JlZ2lzdGVy
QWxsb2NhdG9yKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG5hbWVzcGFjZVVSSSksIG5hbWVzcGFjZVRvTWF0Y2gpOworICAgICAgICAgICAg
c3VjY2Vzc0Nhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hQdHIoQXNzZW1ibGVyOjpFcXVh
bCwgQXNzZW1ibGVyOjpBZGRyZXNzKHF1YWxpZmllZE5hbWVJbXBsLCBRdWFsaWZpZWROYW1lOjpR
dWFsaWZpZWROYW1lSW1wbDo6bmFtZXNwYWNlTWVtb3J5T2Zmc2V0KCkpLCBuYW1lc3BhY2VUb01h
dGNoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZCht
X2Fzc2VtYmxlci5icmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywgQXNzZW1ibGVyOjpBZGRy
ZXNzKHF1YWxpZmllZE5hbWVJbXBsLCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6
bmFtZXNwYWNlTWVtb3J5T2Zmc2V0KCkpKSk7CisgICAgICAgIG5hbWVEb2VzTm90TWF0Y2gubGlu
aygmbV9hc3NlbWJsZXIpOworICAgIH0gZWxzZQorICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5k
KG1fYXNzZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJsZXI6OkVxdWFsLCBBc3NlbWJsZXI6OkFkZHJl
c3MocXVhbGlmaWVkTmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjps
b2NhbE5hbWVNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFtZVRvTWF0Y2gpKTsKKworICAgIC8vIElm
IHdlIHJlYWNoZWQgdGhlIGxhc3QgZWxlbWVudCAtPiBmYWlsdXJlLgorICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoU3ViMzIoQXNzZW1ibGVyOjpaZXJvLCBBc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigxKSwgZGVjSW5kZXhSZWdpc3RlcikpOworCisgICAgLy8gT3RoZXJ3
aXNlIGp1c3QgbG9vcCBvdmVyLgorICAgIG1fYXNzZW1ibGVyLmFkZFB0cihBc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihzaXplb2YoQXR0cmlidXRlKSksIGN1cnJlbnRBdHRyaWJ1dGVBZGRyZXNzKTsK
KyAgICBtX2Fzc2VtYmxlci5qdW1wKCkubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsK
KyAgICBzdWNjZXNzQ2FzZXMubGluaygmbV9hc3NlbWJsZXIpOwogfQogCiBpbmxpbmUgdm9pZCBT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1ibGVy
OjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lVG9NYXRj
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaAppbmRleCA2MWM5ZWM1YThmMjZkZTdkYzFmMDg0ZDVlNmIz
MjI5MTk2MzQ2ZDBkLi4yMzBmMmRkNzkzZjE5NTI2MGEyZjg2MDg4Y2VjYmQwOTEwNTI3ODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHJpYnV0ZS5oCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAgIChDKSAx
OTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDgsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEyLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NDksOCArNDksMTAgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLm5hbWVzcGFjZVVSSSgpOyB9CiAKICAgICBjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgc3Rh
dGljIHB0cmRpZmZfdCBuYW1lTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEF0dHJpYnV0ZSwgbV9uYW1lKTsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5pc0VtcHR5KCk7IH0KKyAgICBzdGF0aWMgYm9vbCBuYW1lTWF0Y2hlc0ZpbHRl
cihjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJQcmVmaXgs
IGNvbnN0IEF0b21pY1N0cmluZyYgZmlsdGVyTG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IGZpbHRlck5hbWVzcGFjZVVSSSk7CiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkkpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQpAQCAtNzIsMTEgKzc0LDE2IEBA
IHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fdmFsdWU7CiB9OwogCi1pbmxpbmUgYm9vbCBB
dHRyaWJ1dGU6Om1hdGNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSkgY29u
c3QKK2lubGluZSBib29sIEF0dHJpYnV0ZTo6bmFtZU1hdGNoZXNGaWx0ZXIoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJQcmVmaXgsIGNvbnN0IEF0
b21pY1N0cmluZyYgZmlsdGVyTG9jYWxOYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIGZpbHRlck5h
bWVzcGFjZVVSSSkKIHsKLSAgICBpZiAobG9jYWxOYW1lICE9IHRoaXMtPmxvY2FsTmFtZSgpKQor
ICAgIGlmIChmaWx0ZXJMb2NhbE5hbWUgIT0gbmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBwcmVmaXggPT0gc3RhckF0b20gfHwgbmFtZXNwYWNlVVJJ
ID09IHRoaXMtPm5hbWVzcGFjZVVSSSgpOworICAgIHJldHVybiBmaWx0ZXJQcmVmaXggPT0gc3Rh
ckF0b20gfHwgZmlsdGVyTmFtZXNwYWNlVVJJID09IG5hbWUubmFtZXNwYWNlVVJJKCk7Cit9CisK
K2lubGluZSBib29sIEF0dHJpYnV0ZTo6bWF0Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIHByZWZp
eCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZXNwYWNlVVJJKSBjb25zdAoreworICAgIHJldHVybiBBdHRyaWJ1dGU6Om5hbWVNYXRjaGVzRmls
dGVyKG1fbmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKaW5kZXggNDJmYWY1NDVm
ODhjNWE4NTJjZmNiZTNhOTkyOWJlN2YyOWMxZWRiZC4uMTEzMTNhMWU1MTVjMDE1MmM1NGFjNzg4
NzVmMWFlMGE2NjZlMGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgKQEAgLTExMCw2ICsx
MTAsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IEVsZW1lbnREYXRh
KiBvdGhlcikgY29uc3Q7CiAKICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9h
cnJheVNpemVBbmRGbGFncyAmIHNfZmxhZ0lzVW5pcXVlOyB9CisgICAgc3RhdGljIHVpbnQzMl90
IGlzVW5pcXVlRmxhZygpIHsgcmV0dXJuIHNfZmxhZ0lzVW5pcXVlOyB9CisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IGFycmF5U2l6ZUFuZEZsYWdzTWVtb3J5T2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEVsZW1lbnREYXRhLCBtX2FycmF5U2l6ZUFuZEZsYWdzKTsgfQorICAgIHN0YXRp
YyBpbmxpbmUgdWludDMyX3Qgc3R5bGVBdHRyaWJ1dGVJc0RpcnR5RmxhZygpIHsgcmV0dXJuIHNf
ZmxhZ1N0eWxlQXR0cmlidXRlSXNEaXJ0eTsgfQorICAgIHN0YXRpYyB1aW50MzJfdCBhbmltYXRl
ZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eUZsYWcoKSB7IHJldHVybiBzX2ZsYWdBbmltYXRlZFNWR0F0
dHJpYnV0ZXNBcmVEaXJ0eTsgfQorCisgICAgc3RhdGljIHVpbnQzMl90IGFycmF5U2l6ZU9mZnNl
dCgpIHsgcmV0dXJuIHNfZmxhZ0NvdW50OyB9CiAKIHByaXZhdGU6CiAgICAgbXV0YWJsZSB1aW50
MzJfdCBtX2FycmF5U2l6ZUFuZEZsYWdzOwpAQCAtMTgzLDYgKzE5MCw4IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTaGFyZWFibGVFbGVtZW50RGF0YShjb25zdCBVbmlxdWVFbGVtZW50RGF0YSYp
OwogICAgIH5TaGFyZWFibGVFbGVtZW50RGF0YSgpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBh
dHRyaWJ1dGVBcnJheU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTaGFy
ZWFibGVFbGVtZW50RGF0YSwgbV9hdHRyaWJ1dGVBcnJheSk7IH0KKwogICAgIEF0dHJpYnV0ZSBt
X2F0dHJpYnV0ZUFycmF5WzBdOwogfTsKIApAQCAtMjA2LDggKzIxNSwxMSBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVW5pcXVlRWxlbWVudERhdGEoY29uc3QgU2hhcmVhYmxlRWxlbWVudERhdGEm
KTsKICAgICBleHBsaWNpdCBVbmlxdWVFbGVtZW50RGF0YShjb25zdCBVbmlxdWVFbGVtZW50RGF0
YSYpOwogCisgICAgc3RhdGljIHB0cmRpZmZfdCBhdHRyaWJ1dGVWZWN0b3JNZW1vcnlPZmZzZXQo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoVW5pcXVlRWxlbWVudERhdGEsIG1fYXR0cmlidXRl
VmVjdG9yKTsgfQorCiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX3ByZXNl
bnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwotICAgIFZlY3RvcjxBdHRyaWJ1dGUsIDQ+IG1fYXR0cmli
dXRlVmVjdG9yOworICAgIHR5cGVkZWYgVmVjdG9yPEF0dHJpYnV0ZSwgND4gQXR0cmlidXRlVmVj
dG9yOworICAgIEF0dHJpYnV0ZVZlY3RvciBtX2F0dHJpYnV0ZVZlY3RvcjsKIH07CiAKIGlubGlu
ZSB2b2lkIEVsZW1lbnREYXRhOjpkZXJlZigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBkZmY0OWZmOTZiZTIz
NjM5MTM4MTM4YmIyMzk2OTk3OGYxMzU5YzlkLi4wYWFiNWQ0MGI1OTAyNTY4NDdlNmZlNjJmNzVj
ZmQzY2IyNzdmMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTU2Miw2ICs1NjIsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAgICAgc3RhdGljIHB0cmRpZmZfdCBub2RlRmxh
Z3NNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9kZSwgbV9ub2RlRmxh
Z3MpOyB9CiAgICAgc3RhdGljIGludDMyX3QgZmxhZ0lzRWxlbWVudCgpIHsgcmV0dXJuIElzRWxl
bWVudEZsYWc7IH0KKyAgICBzdGF0aWMgaW50MzJfdCBmbGFnSXNIVE1MKCkgeyByZXR1cm4gSXNI
VE1MRmxhZzsgfQogICAgIHN0YXRpYyBpbnQzMl90IGZsYWdJc0xpbmsoKSB7IHJldHVybiBJc0xp
bmtGbGFnOyB9CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjNmM5ZWFiYzU2YTBkYTZkOTgzMWJmY2I4YWI2
NDJhMDQ4ZjI4NzU5Li4zYjk0NzVkYzRmYzY2MzFhOGJjNTQzYzZiZTg1MmUwNTNiMzliOGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEwLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTE4LDEzICsxMTgsMTMgQEAgc3RhdGljIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5l
ciYgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVhbmVyKCkKICAgICByZXR1cm4gY2xlYW5l
cjsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50
ZXJuYWwoKSBjb25zdAordm9pZCBTdHlsZWRFbGVtZW50OjpzeW5jaHJvbml6ZVN0eWxlQXR0cmli
dXRlSW50ZXJuYWwoU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCkKIHsKLSAgICBBU1NFUlQo
ZWxlbWVudERhdGEoKSk7Ci0gICAgQVNTRVJUKGVsZW1lbnREYXRhKCktPnN0eWxlQXR0cmlidXRl
SXNEaXJ0eSgpKTsKLSAgICBlbGVtZW50RGF0YSgpLT5zZXRTdHlsZUF0dHJpYnV0ZUlzRGlydHko
ZmFsc2UpOwotICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnRpZXMqIGlubGluZVN0eWxlID0gdGhp
cy0+aW5saW5lU3R5bGUoKSkKLSAgICAgICAgY29uc3RfY2FzdDxTdHlsZWRFbGVtZW50Kj4odGhp
cyktPnNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoc3R5bGVBdHRyLCBpbmxpbmVTdHlsZS0+
YXNUZXh0KCkpOworICAgIEFTU0VSVChzdHlsZWRFbGVtZW50LT5lbGVtZW50RGF0YSgpKTsKKyAg
ICBBU1NFUlQoc3R5bGVkRWxlbWVudC0+ZWxlbWVudERhdGEoKS0+c3R5bGVBdHRyaWJ1dGVJc0Rp
cnR5KCkpOworICAgIHN0eWxlZEVsZW1lbnQtPmVsZW1lbnREYXRhKCktPnNldFN0eWxlQXR0cmli
dXRlSXNEaXJ0eShmYWxzZSk7CisgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyogaW5saW5l
U3R5bGUgPSBzdHlsZWRFbGVtZW50LT5pbmxpbmVTdHlsZSgpKQorICAgICAgICBzdHlsZWRFbGVt
ZW50LT5zZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKHN0eWxlQXR0ciwgaW5saW5lU3R5bGUt
PmFzVGV4dCgpKTsKIH0KIAogU3R5bGVkRWxlbWVudDo6flN0eWxlZEVsZW1lbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggM2U2ZjkzYzA2MTM4ZWEyMDdhMGMyOWUzZTJkMDFh
NWNmYTAyYWRiMS4uMmQ4MGMzNDE2ZjNlYTZiMWQ2ODFmMGM0MDBhMDdlNTQxYTI5MTgxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIw
MDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTUsNyArNTUsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogICAgIHZvaWQg
cmVtb3ZlQWxsSW5saW5lU3R5bGVQcm9wZXJ0aWVzKCk7CiAKLSAgICB2b2lkIHN5bmNocm9uaXpl
U3R5bGVBdHRyaWJ1dGVJbnRlcm5hbCgpIGNvbnN0OworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9u
aXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbChTdHlsZWRFbGVtZW50Kik7CisgICAgdm9pZCBzeW5j
aHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoKSBjb25zdCB7IFN0eWxlZEVsZW1lbnQ6OnN5
bmNocm9uaXplU3R5bGVBdHRyaWJ1dGVJbnRlcm5hbChjb25zdF9jYXN0PFN0eWxlZEVsZW1lbnQq
Pih0aGlzKSk7IH0KICAgICAKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
KCkgb3ZlcnJpZGUgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAyZWNl
MTA1NDExMWU5NGQ0YWQxOGZkYTMwYzJhZjdkYTM1YjI5ZmRjLi5kYzc1MmJkOGVlNDMyZGViNzkx
OTk1Njk1MjExZmY0YjI4ZDk5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC0x
LDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHly
aWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICAqIENvcHly
aWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtNzI5LDE2ICs3MjksMjQgQEAgdm9pZCBTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICAgICAgc3Zn
QXR0cmlidXRlQ2hhbmdlZChuYW1lKTsKIH0KIAordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQpCit7CisgICAg
QVNTRVJUKHN2Z0VsZW1lbnQtPmVsZW1lbnREYXRhKCkpOworICAgIEFTU0VSVChzdmdFbGVtZW50
LT5lbGVtZW50RGF0YSgpLT5hbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpKTsKKworICAg
IHN2Z0VsZW1lbnQtPmxvY2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJv
cGVydGllcyhzdmdFbGVtZW50KTsKKyAgICBzdmdFbGVtZW50LT5lbGVtZW50RGF0YSgpLT5zZXRB
bmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eShmYWxzZSk7Cit9CisKIHZvaWQgU1ZHRWxlbWVu
dDo6c3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogewogICAgIGlmICghZWxlbWVudERhdGEoKSB8fCAhZWxlbWVudERhdGEoKS0+
YW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U1ZHRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdFbGVtZW50Kj4odGhpcyk7
Ci0gICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkgewotICAgICAgICBub25Db25zdFRoaXMtPmxv
Y2FsQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCgpLnN5bmNocm9uaXplUHJvcGVydGllcyhub25Db25z
dFRoaXMpOwotICAgICAgICBlbGVtZW50RGF0YSgpLT5zZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNB
cmVEaXJ0eShmYWxzZSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKG5hbWUgPT0gYW55UU5hbWUoKSkK
KyAgICAgICAgc3luY2hyb25pemVBbGxBbmltYXRlZFNWR0F0dHJpYnV0ZShub25Db25zdFRoaXMp
OworICAgIGVsc2UKICAgICAgICAgbm9uQ29uc3RUaGlzLT5sb2NhbEF0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAoKS5zeW5jaHJvbml6ZVByb3BlcnR5KG5vbkNvbnN0VGhpcywgbmFtZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IDU2OTMyNjEyZmY1OGZlMTEwNjAwMDBiMWQ1ZWRjNmEw
MzkzNGIyZTkuLjliYzhkZjE1NmIzZGEwYzVjOGM3ODYyMjY4ZTMxOWEwNThmOTc3MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTEwLDYgKzExMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqKTsK
IAogICAgIHZvaWQgc3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVBbGxBbmltYXRlZFNW
R0F0dHJpYnV0ZShTVkdFbGVtZW50Kik7CiAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZmRi
ZGNiODJmNzYwYzlkZDhjZjUyYmYxZTY0NDA0ODY1NDQ1OGUwLi41ZGNlZWI3NTBmMjU4NTFhYjIz
ZDNlMmUwMzNhMDcxYmU5NzNjOGUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDItMDgg
IEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCB0
aGUgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgdG8gY29tcGlsZSBhdHRyaWJ1dGVzIG1hdGNoaW5nIGlu
IHNlbGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI4NDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHMgdGhlIHZhcmlvdXMgY2FzZXMgcmVxdWlyaW5nIG1vcmUgcmVnaXN0ZXIgdGhhbiB3
aGF0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBjYWxsZXItc2F2ZWQgcG9vbC4KKworICAgICAgICAq
IGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQt
YmFja3RyYWNraW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3Rv
cnMvcXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1sb25n
LWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItbG9uZy1hdHRyaWJ1
dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1sb25nLW11bHRpcGxlLWF0dHJpYnV0ZS1tYXRj
aC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItbG9uZy1tdWx0aXBsZS1hdHRyaWJ1dGUtbWF0
Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
ZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1tdWx0aXBsZS1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGls
ZC1iYWNrdHJhY2tpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NlbGVj
dG9ycy9xdWVyeVNlbGVjdG9yLW11bHRpcGxlLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJh
Y2t0cmFja2luZy5odG1sOiBBZGRlZC4KKwogMjAxNC0wMi0wOCAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjbGllbnQtZHJhd24gaGlnaGxpZ2h0cyAo
LXdlYmtpdC1oaWdobGlnaHQsIFdlYkhUTUxIaWdobGlnaHRlcikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLW1hdGNoLXdpdGgt
Y2hpbGQtYmFja3RyYWNraW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0
b3JzL3F1ZXJ5U2VsZWN0b3ItYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3RyYWNraW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzFhMzU0OWI5NjE2MmM0MTZhNDU2MjM5MWJlNjJh
YWE1NGYyMDk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMv
cXVlcnlTZWxlY3Rvci1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgYmFja3RyYWNraW5nIG9mIG1hdGNoaW5n
IGF0dHJpYnV0ZXMgd2l0aCBhIHNpbmdsZSBjaGlsZCBzZWxlY3RvciByZWxhdGlvbi4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgiW2RhdGEtZm9vYmFyXT5bZGF0YS13ZWJraXRdIFtzdHlsZV0iKS5sZW5ndGggaXMgMgorUEFT
UyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1mb29iYXJdPltkYXRhLXdlYmtpdF0g
W3N0eWxlXSIpWzBdLmlkIGlzICJ0YXJnZXQxIgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
QWxsKCJbZGF0YS1mb29iYXJdPltkYXRhLXdlYmtpdF0gW3N0eWxlXSIpWzFdLmlkIGlzICJ0YXJn
ZXQyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItYXR0
cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3RyYWNraW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJh
Y2t0cmFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNmExMTUzOTc0MWY5NzI2Yzc0NWUxM2U0MjQ2
NjMxNTVlOTAwYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9y
cy9xdWVyeVNlbGVjdG9yLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy5o
dG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICA8ZGl2IGRhdGEtZm9v
YmFyPgorICAgIDxkaXYgZGF0YS13ZWJraXQ+PGRpdj4KKyAgICA8ZGl2IGRhdGEtd2Via2l0Pgor
ICAgICAgPGRpdj4KKyAgICAgICAgPGRpdiBkYXRhLXdlYmtpdD48ZGl2PgorICAgICAgICA8ZGl2
IGRhdGEtd2Via2l0PjxwIGlkPSJ0YXJnZXQxIj5UYXJnZXQgMTwvcD48ZGl2PgorICAgICAgICA8
ZGl2IGRhdGEtd2Via2l0PjxkaXY+CisgICAgICA8ZGl2PgorICAgIDxkaXY+CisgICAgPGRpdiBk
YXRhLXdlYmtpdD48ZGl2PgorICA8ZGl2PgorICA8ZGl2IGRhdGEtZm9vYmFyPgorICAgIDxkaXYg
ZGF0YS13ZWJraXQ+CisgICAgICA8ZGl2PgorICAgICAgICA8ZGl2IGRhdGEtd2Via2l0PjxwIGlk
PSJ0YXJnZXQyIj5UYXJnZXQgMjwvcD48ZGl2PgorICAgICAgPGRpdj4KKyAgICA8ZGl2PgorICA8
ZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgYmFja3Ry
YWNraW5nIG9mIG1hdGNoaW5nIGF0dHJpYnV0ZXMgd2l0aCBhIHNpbmdsZSBjaGlsZCBzZWxlY3Rv
ciByZWxhdGlvbi4nKTsKKworLy8gRGVmaW5lIHRoZSBzdHlsZSBkeW5hbWljYWxseSB0byB0ZXN0
IGxhenkgYXR0cmlidXRlcy4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQxJykuc3R5
bGUudGV4dERlY29yYXRpb249J3VuZGVybGluZSc7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGFyZ2V0MicpLnN0eWxlLnRleHREZWNvcmF0aW9uPSd1bmRlcmxpbmUnOworCitzaG91bGRCZSgn
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vYmFyXT5bZGF0YS13ZWJraXRdIFtz
dHlsZV0iKS5sZW5ndGgnLCAnMicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1mb29iYXJdPltkYXRhLXdlYmtpdF0gW3N0eWxlXSIpWzBd
LmlkJywgJ3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgiW2RhdGEtZm9vYmFyXT5bZGF0YS13ZWJraXRdIFtzdHlsZV0iKVsxXS5pZCcs
ICd0YXJnZXQyJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItbG9uZy1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1j
aGlsZC1iYWNrdHJhY2tpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3Rv
cnMvcXVlcnlTZWxlY3Rvci1sb25nLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFj
a2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3MDk2Zjk0NGNkODViNjFlM2QxOGYxMTI1
NDAzZDk2ZDJkYTE3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0
b3JzL3F1ZXJ5U2VsZWN0b3ItbG9uZy1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJh
Y2tpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgYmFja3RyYWNraW5nIG9m
IG1hdGNoaW5nIGF0dHJpYnV0ZXMgd2l0aCBtdWx0aXBsZSBjaGlsZCBzZWxlY3RvciByZWxhdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIltkYXRhLWZvb2Jhcl0+W2RhdGEtd2Via2l0XT5bZGF0YS1odG1sXT5wcmUg
W3N0eWxlXSIpLmxlbmd0aCBpcyAzCitQQVNTIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltk
YXRhLWZvb2Jhcl0+W2RhdGEtd2Via2l0XT5bZGF0YS1odG1sXT5wcmUgW3N0eWxlXSIpWzBdLmlk
IGlzICJ0YXJnZXQxIgorUEFTUyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1mb29i
YXJdPltkYXRhLXdlYmtpdF0+W2RhdGEtaHRtbF0+cHJlIFtzdHlsZV0iKVsxXS5pZCBpcyAidGFy
Z2V0MiIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vYmFyXT5bZGF0
YS13ZWJraXRdPltkYXRhLWh0bWxdPnByZSBbc3R5bGVdIilbMl0uaWQgaXMgInRhcmdldDMiCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1sb25nLWF0dHJp
YnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zZWxlY3RvcnMvcXVlcnlTZWxlY3Rvci1sb25nLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxk
LWJhY2t0cmFja2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNDY2NDI3NDM0ZTllNzc1N2ZlYmI4OWQz
NzgyZDUwNjkwZDIyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVj
dG9ycy9xdWVyeVNlbGVjdG9yLWxvbmctYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3Ry
YWNraW5nLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Cis8IS0tIEZh
aWxzIG9uIHRoZSBbZGF0YS1odG1sXS4gLS0+Cis8ZGl2IGRhdGEtd2Via2l0IGRhdGEtZm9vYmFy
PgorICA8ZGl2IGRhdGEtd2Via2l0PgorICAgIDxkaXYgZGF0YS13ZWJraXQ+CisgICAgICA8ZGl2
IGRhdGEtd2Via2l0PgorICAgICAgICA8cHJlIGRhdGEtd2Via2l0PgorICAgICAgICAgIDxibG9j
a3F1b3RlIGRhdGEtd2Via2l0PjxzcGFuIGRhdGEtd2Via2l0PkZhaWwuPC9zcGFuPjwvYmxvY2tx
dW90ZT4KKyAgICAgICAgPC9wcmU+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPGRpdj4K
KzxkaXY+CisKKzwhLS0gRmFpbHMgb24gdGhlIDxkaXY+IHRhZy4gLS0+Cis8ZGl2IGRhdGEtd2Vi
a2l0PgorICA8ZGl2IGRhdGEtd2Via2l0IGRhdGEtaHRtbD4KKyAgICA8ZGl2IGRhdGEtd2Via2l0
PgorICAgICAgPHByZSBkYXRhLXdlYmtpdD4KKyAgICAgICAgPGJsb2NrcXVvdGUgZGF0YS13ZWJr
aXQ+PHNwYW4gZGF0YS13ZWJraXQ+RmFpbC48L3NwYW4+PC9ibG9ja3F1b3RlPgorICAgICAgPC9w
cmU+CisgICAgPC9kaXY+CisgIDxkaXY+Cis8L2Rpdj4KKworPCEtLSBTaW1wbGUgbWF0Y2hlcy4g
LS0+Cis8ZGl2IGRhdGEtZm9vYmFyPgorICA8ZGl2IGRhdGEtd2Via2l0PgorICAgIDxkaXYgZGF0
YS13ZWJraXQgZGF0YS1odG1sPgorICAgICAgPHByZSBkYXRhLXdlYmtpdD4KKyAgICAgICAgPGJs
b2NrcXVvdGUgZGF0YS13ZWJraXQ+PHNwYW4gaWQ9InRhcmdldDEiPlRhcmdldCAxPC9zcGFuPjwv
YmxvY2txdW90ZT4KKyAgICAgIDwvcHJlPgorICAgIDwvZGl2PgorICA8ZGl2PgorPGRpdj4KKzxk
aXYgZGF0YS13ZWJraXQgZGF0YS1mb29iYXI+CisgIDxkaXYgZGF0YS13ZWJraXQ+CisgICAgPGRp
diBkYXRhLXdlYmtpdCBkYXRhLWh0bWw+CisgICAgICA8cHJlIGRhdGEtd2Via2l0PgorICAgICAg
ICA8cHJlIGRhdGEtd2Via2l0PgorICAgICAgICAgIDxibG9ja3F1b3RlIGRhdGEtd2Via2l0Pjxz
cGFuIGlkPSJ0YXJnZXQyIj5UYXJnZXQgMjwvc3Bhbj48L2Jsb2NrcXVvdGU+CisgICAgICAgIDwv
cHJlPgorICAgICAgPC9wcmU+CisgICAgPC9kaXY+CisgIDxkaXY+Cis8ZGl2PgorCis8IS0tIE11
bHRpcGxlIGZhaWx1cmVzIGJlZm9yZSBhIG1hdGNoLiAtLT4KKzxkaXYgZGF0YS1wYWRkaW5nIGRh
dGEtd2Via2l0IGRhdGEtZm9vYmFyPgorICA8ZGl2IGRhdGEtd2Via2l0IGRhdGEtcGFkZGluZz4K
KyAgICA8ZGl2IGRhdGEtaHRtbCBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAgICA8cHJl
IGRhdGEtd2Via2l0IGRhdGEtcGFkZGluZz4KKworICAgICAgICA8IS0tIFRoaXMgc3VidHJlZSBs
YWNrcyB0aGUgW2RhdGEtd2Via2l0XSBvbiB0aGUgdGhpcmQgbGV2ZWwuIC0tPgorICAgICAgICA8
ZGl2IGRhdGEtaHRtbCBkYXRhLXBhZGRpbmc+CisgICAgICAgICAgPGRpdiBkYXRhLWh0bWwgZGF0
YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAgICAgICAgICAgPHByZSBkYXRhLXdlYmtpdCBkYXRh
LXBhZGRpbmc+CisKKyAgICAgICAgICAgICAgPCEtLSBUaGlzIHN1YnRyZWUgbGFja3MgdGhlIFtk
YXRhLWh0bWxdIG9uIHRoZSBzZWNvbmQgbGV2ZWwuIC0tPgorICAgICAgICAgICAgICA8ZGl2IGRh
dGEtd2Via2l0IGRhdGEtcGFkZGluZz4KKyAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtd2Via2l0
IGRhdGEtcGFkZGluZz4KKyAgICAgICAgICAgICAgICAgIDxwcmUgZGF0YS13ZWJraXQgZGF0YS1w
YWRkaW5nPgorICAgICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZSBkYXRhLXdlYmtpdCBkYXRh
LXBhZGRpbmc+PHNwYW4gaWQ9InRhcmdldDMiPlRhcmdldCAzPC9zcGFuPjwvYmxvY2txdW90ZT4K
KyAgICAgICAgICAgICAgICAgIDwvcHJlPgorICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAg
ICAgICAgICA8L2Rpdj4KKworICAgICAgICAgICAgPC9wcmU+CisgICAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXY+CisKKyAgICAgIDwvcHJlPgorICAgIDwvZGl2PgorICA8ZGl2PgorPGRpdj4K
KworPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgYmFja3RyYWNr
aW5nIG9mIG1hdGNoaW5nIGF0dHJpYnV0ZXMgd2l0aCBtdWx0aXBsZSBjaGlsZCBzZWxlY3RvciBy
ZWxhdGlvbnMuJyk7CisKKy8vIERlZmluZSB0aGUgc3R5bGUgZHluYW1pY2FsbHkgdG8gdGVzdCBs
YXp5IGF0dHJpYnV0ZXMuCit2YXIgYWxsVGFyZ2V0U3BhbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCdibG9ja3F1b3RlPnNwYW4nKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgYWxsVGFyZ2V0
U3BhbnMubGVuZ3RoOyArK2kpCisgICAgYWxsVGFyZ2V0U3BhbnNbaV0uc3R5bGUudGV4dERlY29y
YXRpb249J3VuZGVybGluZSc7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCJbZGF0YS1mb29iYXJdPltkYXRhLXdlYmtpdF0+W2RhdGEtaHRtbF0+cHJlIFtzdHlsZV0iKS5s
ZW5ndGgnLCAnMycpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCJbZGF0YS1mb29iYXJdPltkYXRhLXdlYmtpdF0+W2RhdGEtaHRtbF0+cHJlIFtzdHls
ZV0iKVswXS5pZCcsICd0YXJnZXQxJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50
LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWZvb2Jhcl0+W2RhdGEtd2Via2l0XT5bZGF0YS1odG1s
XT5wcmUgW3N0eWxlXSIpWzFdLmlkJywgJ3RhcmdldDInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vYmFyXT5bZGF0YS13ZWJraXRd
PltkYXRhLWh0bWxdPnByZSBbc3R5bGVdIilbMl0uaWQnLCAndGFyZ2V0MycpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNl
bGVjdG9yLWxvbmctbXVsdGlwbGUtYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3RyYWNr
aW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0
b3ItbG9uZy1tdWx0aXBsZS1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4YjIwMGIxOWQ1ZWY4OWU5Y2EyN2Y3NjdjOTJiOWUy
ZjJjYmQwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9x
dWVyeVNlbGVjdG9yLWxvbmctbXVsdGlwbGUtYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFj
a3RyYWNraW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0IGJhY2t0cmFja2lu
ZyBvZiBtYXRjaGluZyBtdWx0aXBsZSBhdHRyaWJ1dGUgd2l0aCBtdWx0aXBsZSBjaGlsZCBzZWxl
Y3RvciByZWxhdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLWZvb11bZGF0YS1iYXJdPltkYXRhLXdlYmtp
dF1bZGF0YS1wYWRkaW5nXT5kaXY+cHJlIHNwYW5bc3R5bGVdIikubGVuZ3RoIGlzIDMKK1BBU1Mg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRhLWJhcl0+W2RhdGEtd2Vi
a2l0XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUgc3BhbltzdHlsZV0iKVswXS5pZCBpcyAidGFyZ2V0
MSIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRhLWJhcl0+
W2RhdGEtd2Via2l0XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUgc3BhbltzdHlsZV0iKVsxXS5pZCBp
cyAidGFyZ2V0MiIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtk
YXRhLWJhcl0+W2RhdGEtd2Via2l0XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUgc3BhbltzdHlsZV0i
KVsyXS5pZCBpcyAidGFyZ2V0MyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9x
dWVyeVNlbGVjdG9yLWxvbmctbXVsdGlwbGUtYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFj
a3RyYWNraW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9y
LWxvbmctbXVsdGlwbGUtYXR0cmlidXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3RyYWNraW5nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjYyYWEyMzM2NmFlNjg4MjA2ODQ0NTYwNDY4YmFkYTQ2OTBhZGE5NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0
b3ItbG9uZy1tdWx0aXBsZS1hdHRyaWJ1dGUtbWF0Y2gtd2l0aC1jaGlsZC1iYWNrdHJhY2tpbmcu
aHRtbApAQCAtMCwwICsxLDk5IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4KKzwhLS0gRmFpbHMgb24g
dGhlIDxsaT4gdGFnLiBUaGVyZSBpcyBleHRyYSBbZGF0YS13ZWJraXRdW2RhdGEtcGFkZGluZ10g
cHJldmVudGluZyB0aGUgbWF0Y2guIC0tPgorPHVsIGRhdGEtZm9vIGRhdGEtYmFyPgorICA8bGkg
ZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAgIDxkaXYgZGF0YS13ZWJraXQgZGF0YS1wYWRk
aW5nPgorICAgICAgPGRpdiBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAgICAgIDxwcmUg
ZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAgICAgICAgIDxibG9ja3F1b3RlPjxzcGFuPkZh
aWwuPC9zcGFuPjwvYmxvY2txdW90ZT4KKyAgICAgICAgPC9wcmU+CisgICAgICA8L2Rpdj4KKyAg
ICA8L2Rpdj4KKyAgPC9saT4KKzwvdWw+CisKKzwhLS0gRmFpbHMgb24gdGhlIHRoZSByb290LCBb
ZGF0YS1mb29dIGlzIG1pc3NpbmcuIC0tPgorPGRpdiBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmcg
ZGF0YS1iYXI+CisgIDxsaSBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAgPGRpdiBkYXRh
LXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAgICA8cHJlIGRhdGEtd2Via2l0IGRhdGEtcGFkZGlu
Zz4KKyAgICAgICAgPGJsb2NrcXVvdGU+PHNwYW4+RmFpbC48L3NwYW4+PC9ibG9ja3F1b3RlPgor
ICAgICAgPC9wcmU+CisgICAgPC9kaXY+CisgIDwvbGk+Cis8L2Rpdj4KKworPCEtLSBTaW1wbGUg
bWF0Y2hlcy4gLS0+Cis8dWwgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nIGRhdGEtZm9vIGRhdGEt
YmFyPgorICA8bGkgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAgIDxkaXYgZGF0YS13ZWJr
aXQgZGF0YS1wYWRkaW5nPgorICAgICAgPHByZSBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+Cisg
ICAgICAgIDxibG9ja3F1b3RlPjxzcGFuIGlkPSJ0YXJnZXQxIj5UYXJnZXQgMTwvc3Bhbj48L2Js
b2NrcXVvdGU+CisgICAgICA8L3ByZT4KKyAgICA8L2Rpdj4KKyAgPC9saT4KKzwvdWw+Cis8dWwg
ZGF0YS1mb28gZGF0YS1iYXI+CisgIDxsaSBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAg
PGRpdiBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAgICA8cHJlIGRhdGEtd2Via2l0IGRh
dGEtcGFkZGluZz4KKyAgICAgICAgPHByZSBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisgICAg
ICAgICAgPGJsb2NrcXVvdGU+PHNwYW4gaWQ9InRhcmdldDIiPlRhcmdldCAyPC9zcGFuPjwvYmxv
Y2txdW90ZT4KKyAgICAgICAgPC9wcmU+CisgICAgICA8L3ByZT4KKyAgICA8L2Rpdj4KKyAgPC9s
aT4KKzwvdWw+CisKKzwhLS0gTXVsdGlwbGUgZmFpbHVyZXMgYmVmb3JlIGEgbWF0Y2guIC0tPgor
PHVsIGRhdGEtZm9vIGRhdGEtYmFyPgorICA8bGkgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgor
ICAgIDxkaXYgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAgICAgPHByZSBkYXRhLXdlYmtp
dCBkYXRhLXBhZGRpbmc+CisKKyAgICAgICAgPCEtLSBUaGlzIHN1YnRyZWUgbGFja3MgdGhlIFtk
YXRhLWZvb10gb24gdGhlIHJvb3QuIC0tPgorICAgICAgICA8bGkgZGF0YS13ZWJraXQgZGF0YS1w
YWRkaW5nIGRhdGEtYmFyPgorICAgICAgICAgIDxkaXYgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5n
PgorICAgICAgICAgICAgPGRpdiBkYXRhLXdlYmtpdCBkYXRhLXBhZGRpbmc+CisKKyAgICAgICAg
ICAgICAgPCEtLSBUaGlzIHN1YnRyZWUgbGFja3MgdGhlIFtkYXRhLXdlYmtpdF0gaW4gW2RhdGEt
d2Via2l0XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUuIC0tPgorICAgICAgICAgICAgICA8ZGl2IGRh
dGEtcGFkZGluZz4KKyAgICAgICAgICAgICAgICA8ZGl2IGRhdGEtd2Via2l0IGRhdGEtcGFkZGlu
Zz4KKyAgICAgICAgICAgICAgICAgIDxwcmUgZGF0YS13ZWJraXQgZGF0YS1wYWRkaW5nPgorICAg
ICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT48c3BhbiBpZD0idGFyZ2V0MyI+VGFyZ2V0IDM8
L3NwYW4+PC9ibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgPC9wcmU+CisgICAgICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9saT4KKworICAgICAgPC9wcmU+CisgICAgPC9k
aXY+CisgIDwvbGk+Cis8L3VsPgorCis8L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbignVGVzdCBiYWNrdHJhY2tpbmcgb2YgbWF0Y2hpbmcgbXVsdGlwbGUgYXR0cmlidXRlIHdp
dGggbXVsdGlwbGUgY2hpbGQgc2VsZWN0b3IgcmVsYXRpb25zLicpOworCisvLyBEZWZpbmUgdGhl
IHN0eWxlIGR5bmFtaWNhbGx5IHRvIHRlc3QgbGF6eSBhdHRyaWJ1dGVzLgordmFyIGFsbFRhcmdl
dFNwYW5zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYmxvY2txdW90ZT5zcGFuJyk7Citm
b3IgKHZhciBpID0gMDsgaSA8IGFsbFRhcmdldFNwYW5zLmxlbmd0aDsgKytpKQorICAgIGFsbFRh
cmdldFNwYW5zW2ldLnN0eWxlLnRleHREZWNvcmF0aW9uPSd1bmRlcmxpbmUnOworCitzaG91bGRC
ZSgnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRhLWJhcl0+W2RhdGEt
d2Via2l0XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUgc3BhbltzdHlsZV0iKS5sZW5ndGgnLCAnMycp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0
YS1mb29dW2RhdGEtYmFyXT5bZGF0YS13ZWJraXRdW2RhdGEtcGFkZGluZ10+ZGl2PnByZSBzcGFu
W3N0eWxlXSIpWzBdLmlkJywgJ3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygnZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRhLWJhcl0+W2RhdGEtd2Via2l0
XVtkYXRhLXBhZGRpbmddPmRpdj5wcmUgc3BhbltzdHlsZV0iKVsxXS5pZCcsICd0YXJnZXQyJyk7
CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRh
LWZvb11bZGF0YS1iYXJdPltkYXRhLXdlYmtpdF1bZGF0YS1wYWRkaW5nXT5kaXY+cHJlIHNwYW5b
c3R5bGVdIilbMl0uaWQnLCAndGFyZ2V0MycpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLW11bHRpcGxlLWF0
dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVyeVNlbGVjdG9yLW11bHRpcGxlLWF0dHJpYnV0ZS1t
YXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzNl
M2VlMTI4OWE4NjgwODIwY2Y2YzRmY2UyYTBmOTg4Y2E4MWUzOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItbXVsdGlwbGUtYXR0cmli
dXRlLW1hdGNoLXdpdGgtY2hpbGQtYmFja3RyYWNraW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyIEBACitUZXN0IGJhY2t0cmFja2luZyBvZiBtYXRjaGluZyBtdWx0aXBsZSBhdHRyaWJ1dGUg
d2l0aCBhIHNpbmdsZSBjaGlsZCBzZWxlY3RvciByZWxhdGlvbi4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9v
XVtkYXRhLWJhcl0+bGkgW3N0eWxlXSIpLmxlbmd0aCBpcyAyCitQQVNTIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIltkYXRhLWZvb11bZGF0YS1iYXJdPmxpIFtzdHlsZV0iKVswXS5pZCBpcyAi
dGFyZ2V0MSIKK1BBU1MgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRh
LWJhcl0+bGkgW3N0eWxlXSIpWzFdLmlkIGlzICJ0YXJnZXQyIgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2VsZWN0b3JzL3F1ZXJ5U2VsZWN0b3ItbXVsdGlwbGUtYXR0cmlidXRlLW1hdGNoLXdp
dGgtY2hpbGQtYmFja3RyYWNraW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9x
dWVyeVNlbGVjdG9yLW11bHRpcGxlLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFj
a2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwYTYxZmY1ZWNlYTM2NGIyYjAyYTY1ZDhjMTdjMzg5NWEw
YmQyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NlbGVjdG9ycy9xdWVy
eVNlbGVjdG9yLW11bHRpcGxlLWF0dHJpYnV0ZS1tYXRjaC13aXRoLWNoaWxkLWJhY2t0cmFja2lu
Zy5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICA8dWwgZGF0YS1m
b28gZGF0YS1iYXI+CisgICAgPGxpPjwvbGk+CisgICAgPGxpPgorICAgICAgPG9sPgorICAgICAg
ICA8bGk+PC9saT4KKyAgICAgICAgPGxpPjxwIGlkPSJ0YXJnZXQxIj5UYXJnZXQgMTwvcD48L2xp
PgorICAgICAgICA8bGk+PC9saT4KKyAgICAgIDwvb2w+CisgICAgPC9saT4KKyAgICA8bGk+PC9s
aT4KKyAgPC91bD4KKyAgPHVsIGRhdGEtZm9vIGRhdGEtYmFyPgorICAgIDxsaT4KKyAgICAgIDxs
aT4KKyAgICAgICAgPGxpPjxwIGlkPSJ0YXJnZXQyIj5UYXJnZXQgMjwvcD48L2xpPgorICAgICAg
PC9saT4KKyAgICA8L2xpPgorICA8L3VsPgorPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3QgYmFja3RyYWNraW5nIG9mIG1hdGNoaW5nIG11bHRpcGxlIGF0dHJpYnV0
ZSB3aXRoIGEgc2luZ2xlIGNoaWxkIHNlbGVjdG9yIHJlbGF0aW9uLicpOworCisvLyBEZWZpbmUg
dGhlIHN0eWxlIGR5bmFtaWNhbGx5IHRvIHRlc3QgbGF6eSBhdHRyaWJ1dGVzLgorZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3RhcmdldDEnKS5zdHlsZS50ZXh0RGVjb3JhdGlvbj0ndW5kZXJsaW5l
JzsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQyJykuc3R5bGUudGV4dERlY29yYXRp
b249J3VuZGVybGluZSc7CisKK3Nob3VsZEJlKCdkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJb
ZGF0YS1mb29dW2RhdGEtYmFyXT5saSBbc3R5bGVdIikubGVuZ3RoJywgJzInKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRh
LWJhcl0+bGkgW3N0eWxlXSIpWzBdLmlkJywgJ3RhcmdldDEnKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygnZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZm9vXVtkYXRhLWJhcl0+bGkg
W3N0eWxlXSIpWzFdLmlkJywgJ3RhcmdldDInKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="247655"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>