<?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>221193</bug_id>
          
          <creation_ts>2021-01-31 17:20:00 -0800</creation_ts>
          <short_desc>Avoid unnecessary chromatic adaptation when converting between colors with the same white point</short_desc>
          <delta_ts>2021-02-01 09:51:15 -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>Platform</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>221190</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724120</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-31 17:20:00 -0800</bug_when>
    <thetext>We currently always use the XYZ space with the D65 white point as our universal conversion space (the space we require each type to be able to convert to and from), but this is not ideal when converting between colors like ProPhotoRGB and Lab, which both use the D50 white point, since it requires an extra two matrix multiplications for the chromatic adaptations to and from D65.

Additionally, to support color(xyz ...), which also use D50, we will need an explicit XYZ color with a D50 white point. 

We can solve both of these problems by further generalizing XYZA&lt;T&gt; to support a white point parameter, XYZA&lt;T, WhitePoint&gt;, and annotate all the colors with which whitepoint they are defined in (or what XYZA color is their reference). Then, we can use that information to lazily (though at compile time) determine whether chromatic adaptation is needed in the generic conversion functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724121</commentid>
    <comment_count>1</comment_count>
      <attachid>418835</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-31 17:29:49 -0800</bug_when>
    <thetext>Created attachment 418835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724122</commentid>
    <comment_count>2</comment_count>
      <attachid>418836</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-31 17:34:45 -0800</bug_when>
    <thetext>Created attachment 418836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724285</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-01 09:50:12 -0800</bug_when>
    <thetext>Committed r272146: &lt;https://trac.webkit.org/changeset/272146&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418836.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724286</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-01 09:51:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/73833214&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418835</attachid>
            <date>2021-01-31 17:29:49 -0800</date>
            <delta_ts>2021-01-31 17:34:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221193-20210131172948.patch</filename>
            <type>text/plain</type>
            <size>33773</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTMxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBjaHJv
bWF0aWMgYWRhcHRhdGlvbiB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBjb2xvcnMgd2l0aCB0aGUg
c2FtZSB3aGl0ZSBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRGVsYXkgY2hyb21hdGljIGFkYXBhdGlvbiwgd2hpY2ggaXMgaW1wbGVtZW50ZWQg
YXMgdGhlIGNvbnZlcnNpb24gZnJvbSBhIGNvbG9yIGluIHRoZSBYWVogY29sb3IKKyAgICAgICAg
c3BhY2Ugd2l0aCBvbmUgd2hpdGUgcG9pbnQgdG8gYSBjb2xvciBpbiB0aGUgWFlaIGNvbG9yIHNw
YWNlIHdpdGggYW5vdGhlciB3aGl0ZSBwb2ludCwgdW50aWwKKyAgICAgICAgaXQgaXMgYWN0dWFs
bHkgbmVlZGVkLCByYXRoZXIgdGhhbiBlYWdlcmx5IGNvbnZlcnRpbmcgY29sb3JzIHRoYXQgdXNl
IGEgRDUwIHdoaXRlIHBvaW50IChqdXN0IAorICAgICAgICBMYWIsIExDSCBhbmQgUHJvUGhvdG9S
R0IgYXQgdGhlIG1vbWVudCkgdG8gRDY1IGZvciBldmVyeSBjb252ZXJzaW9uLgorCisgICAgICAg
IFRvIGRvIHRoaXMsIHdlIGludHJvZHVjZSBhIG5ldyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgZm9yIHRo
ZSBYWVpBIGNvbG9yIHRvIGV4cGxpY2l0bHkgYW5ub3RhdGUKKyAgICAgICAgd2hhdCB3aGl0ZSBw
b2ludCBpdCBoYXMsIGFuZCBmdXJ0aGVyIGFubm90YXRlIGFsbCBjb2xvciB0eXBlcyB3aXRoIHdo
aWNoIFhZWiBjb2xvciBtYXRjaGVzCisgICAgICAgIHRoZWlyIGRlZmluZWQgd2hpdGUgcG9pbnQu
IFRoZW4sIGluIHRoZSBnZW5lcmljIGNvbG9yIGNvbnZlcnNpb24gZnVuY3Rpb25zLCB3ZSBhcHBs
eSBjaHJvbWF0aWMKKyAgICAgICAgYWRhcHRhdGlvbiBpZiBuZWVkZWQgYnkgY29tcGFyaW5nIHRo
ZSBpbnB1dCBhbmQgb3V0cHV0IHdoaXRlIHBvaW50cyBvZiB0aGUgdHlwZXMgKGF0IGNvbXBpbGUg
CisgICAgICAgIHRpbWUpIGFuZCBkb2luZyB0aGUgY29udmVyc2lvbiBvbmx5IHdoZW4gbmVjZXNz
YXJ5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIHRoZSBleHBs
aWNpdCBjaHJvbWF0aWMgYWRhcGF0YXRpb25zIGluIHRoZSBMaW5lYXJQcm9QaG90b1JHQiBtYXRy
aXgKKyAgICAgICAgY29udmVyc2lvbnMgYXMgd2VsbCBhcyB0aGUgTGFiIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisKIDIwMjEtMDEtMzEgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIElubGluZUNvbnRlbnRCcmVh
a2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBzaG91bGQgZmluZCBicmVha2luZyBw
b3NpdGlvbnMgZXZlbiBhZnRlciB0aGUgb3ZlcmZsb3dpbmcgcnVuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJl
dmlzaW9uIDI3MjEyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxNCArMTMzLDE0IEBAIHN0YXRp
YyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGlj
IEFkYXB0YXRpb24gY29udmVyc2lvbnMuCiAKLXN0YXRpYyBYWVpBPGZsb2F0PiBjb252ZXJ0RnJv
bUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2
NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYgY29sb3IpCiB7
Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxm
bG9hdD4+KEQ1MFRvRDY1TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4+KEQ1MFRvRDY1TWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwog
fQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0
ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6
OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8
ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQogewotICAgIHJldHVybiBtYWtlRnJvbUNv
bXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihENjVUb0Q1ME1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAg
ICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0
LCBXaGl0ZVBvaW50OjpENTA+PihENjVUb0Q1ME1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9u
ZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAogLy8gTUFSSzogR2FtbWEgY29u
dmVyc2lvbnMuCkBAIC0yMzMsODMgKzIzMyw3NCBAQCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25z
dCBMaW5lYXJTUkdCQTxmCiAKIC8vIC0gTGluZWFyQTk4UkdCIG1hdHJpeCBjb252ZXJzaW9ucy4K
IAotTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IExpbmVhckE5
OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9t
Q29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyQTk4UkdCPGZsb2F0Pj4oeHl6VG9M
aW5lYXJBOThSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBv
bmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJBOThS
R0I8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZ
WkEoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckE5OFJH
QlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFs
cGhhPExpbmVhckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWj4obGluZWFyQTk4UkdCVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKIC8vIC0gTGluZWFyRGlzcGxheVAzIG1hdHJpeCBjb252ZXJzaW9ucy4KIAotTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExp
bmVhckRpc3BsYXlQMzxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRGlzcGxheVAzPGZs
b2F0Pj4oeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckRpc3BsYXlQMzxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
WFlaQTxmbG9hdD4+KGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckRpc3BsYXlQMzxmbG9hdD46OlJl
ZmVyZW5jZVhZWj4obGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNv
bXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIC8vIC0gTGluZWFyRXh0
ZW5kZWRTUkdCQSBtYXRyaXggY29udmVyc2lvbnMuCiAKLUxpbmVhckV4dGVuZGVkU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5l
YXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFy
RXh0ZW5kZWRTUkdCQTxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRXh0ZW5kZWRTUkdC
QTxmbG9hdD4+KHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckV4dGVuZGVkU1JH
QkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdF
eGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVk
Q29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckV4dGVuZGVkU1JHQkE8
ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENv
bG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAogLy8gLSBMaW5l
YXJQcm9QaG90b1JHQiBtYXRyaXggY29udmVyc2lvbnMuCiAKLUxpbmVhclByb1Bob3RvUkdCPGZs
b2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVh
clByb1Bob3RvUkdCPGZsb2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IExpbmVhclByb1Bo
b3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKLSAgICAvLyBXZSBleHBlY3Qg
WFlaQSBjb2xvcnMgdG8gYmUgdXNpbmcgdGhlIEQ2NSB3aGl0ZSBwb2ludCwgdW5saWtlIFByb1Bo
b3RvUkdCLCB3aGljaAotICAgIC8vIHVzZXMgYSBENTAgd2hpdGUgcG9pbnQsIHNvIGFzIGEgZmly
c3Qgc3RlcCwgdXNlIHRoZSBCcmFkZm9yZCB0cmFuc2Zvcm0gdG8gY29udmVydAotICAgIC8vIHRo
ZSBpbmNvbWluZyBYWVpBIGNvbG9yIHRvIEQ1MCB3aGl0ZSBwb2ludC4KLSAgICBhdXRvIHh5eldp
dGhENTBXaGl0ZVBvaW50ID0gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50
KGNvbG9yKTsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBo
YTxMaW5lYXJQcm9QaG90b1JHQjxmbG9hdD4+KHh5elRvTGluZWFyUHJvUGhvdG9SR0JNYXRyaXgu
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoeHl6V2l0aEQ1MFdo
aXRlUG9pbnQpKSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Pih4eXpUb0xpbmVhclByb1Bob3RvUkdCTWF0
cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkp
OwogfQogCi1YWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+
JiBjb2xvcikKK0xpbmVhclByb1Bob3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShj
b25zdCBMaW5lYXJQcm9QaG90b1JHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIGF1dG8geHl6V2l0
aEQ1MFdoaXRlUG9pbnQgPSBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZ
WkE8ZmxvYXQ+PihsaW5lYXJQcm9QaG90b1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwotCi0gICAgLy8gV2UgZXhwZWN0
IFhZWkEgY29sb3JzIHRvIGJlIHVzaW5nIHRoZSBENjUgd2hpdGUgcG9pbnQsIHVubGlrZSBQcm9Q
aG90b1JHQiwgd2hpY2gKLSAgICAvLyB1c2VzIGEgRDUwIHdoaXRlIHBvaW50LCBzbyBhcyBhIGZp
bmFsIHN0ZXAsIHVzZSB0aGUgQnJhZGZvcmQgdHJhbnNmb3JtIHRvIGNvbnZlcnQKLSAgICAvLyB0
aGUgcmVzdWx0aW5nIFhZWkEgY29sb3IgdG8gYSBENjUgd2hpdGUgcG9pbnQuCi0gICAgcmV0dXJu
IGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCh4eXpXaXRoRDUwV2hpdGVQ
b2ludCk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclByb1Bob3RvUkdC
VG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IpKSk7CiB9CiAKIC8vIC0gTGluZWFyUmVjMjAyMCBtYXRyaXggY29udmVyc2lvbnMuCiAK
LUxpbmVhclJlYzIwMjA8ZmxvYXQ+IHRvTGluZWFyUmVjMjAyMChjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJSZWMyMDIwPGZsb2F0PiB0b0xpbmVhclJlYzIwMjAoY29uc3QgTGluZWFy
UmVjMjAyMDxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyUmVjMjAyMDxmbG9hdD4+KHh5
elRvTGluZWFyUmVjMjAyME1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9y
Q29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVh
clJlYzIwMjA8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhclJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VY
WVogdG9YWVpBKGNvbnN0IExpbmVhclJlYzIwMjA8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGlu
ZWFyUmVjMjAyMFRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPExpbmVhclJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclJl
YzIwMjBUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9u
ZW50cyhjb2xvcikpKTsKIH0KIAogLy8gLSBMaW5lYXJTUkdCQSBtYXRyaXggY29udmVyc2lvbnMu
CiAKLUxpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK0xpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JB
PGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKICAgICByZXR1cm4gbWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJTUkdCQTxmbG9hdD4+KHh5elRvTGluZWFy
U1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwor
ICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhclNS
R0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaPihsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIC8vIE1B
Uks6IEhTTCBjb252ZXJzaW9ucy4KQEAgLTQwNSw3ICszOTYsNyBAQCBzdGF0aWMgY29uc3RleHBy
IGZsb2F0IExBQmUgPSAyMTYuMGYgLyAyCiBzdGF0aWMgY29uc3RleHByIGZsb2F0IExBQmsgPSAy
NDM4OS4wZiAvIDI3LjBmOwogc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBENTBXaGl0ZVZhbHVlc1td
ID0geyAwLjk2NDIyZiwgMS4wZiwgMC44MjUyMWYgfTsKIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExhYjxmbG9hdD4mIGNvbG9yKQorTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShj
b25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBmbG9hdCBmMSA9IChjb2xvci5saWdodG5l
c3MgKyAxNi4wZikgLyAxMTYuMGY7CiAgICAgZmxvYXQgZjAgPSBmMSArIChjb2xvci5hIC8gNTAw
LjBmKTsKQEAgLTQzMiwyNCArNDIzLDE0IEBAIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMYWI8
ZmxvYXQ+JiBjb2wKICAgICBmbG9hdCB5ID0gRDUwV2hpdGVWYWx1ZXNbMV0gKiBjb21wdXRlWShj
b2xvci5saWdodG5lc3MpOwogICAgIGZsb2F0IHogPSBENTBXaGl0ZVZhbHVlc1syXSAqIGNvbXB1
dGVYQW5kWihmMik7CiAKLSAgICBYWVpBPGZsb2F0PiByZXN1bHQgeyB4LCB5LCB6LCBjb2xvci5h
bHBoYSB9OwotCi0gICAgLy8gV2UgZXhwZWN0IFhZWkEgY29sb3JzIHRvIGJlIHVzaW5nIHRoZSBE
NjUgd2hpdGUgcG9pbnQsIHVubGlrZSBMYWIsIHdoaWNoIHVzZXMgYQotICAgIC8vIEQ1MCB3aGl0
ZSBwb2ludCwgc28gYXMgYSBmaW5hbCBzdGVwLCB1c2UgdGhlIEJyYWRmb3JkIHRyYW5zZm9ybSB0
byBjb252ZXJ0IHRoZQotICAgIC8vIHJlc3VsdGluZyBYWVpBIGNvbG9yIHRvIGEgRDY1IHdoaXRl
IHBvaW50LgotICAgIHJldHVybiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9p
bnQocmVzdWx0KTsKKyAgICByZXR1cm4geyB4LCB5LCB6LCBjb2xvci5hbHBoYSB9OwogfQogCi1M
YWI8ZmxvYXQ+IHRvTGFiKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xhYjxmbG9hdD4gdG9M
YWIoY29uc3QgTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKLSAgICAvLyBXZSBl
eHBlY3QgWFlaQSBjb2xvcnMgdG8gYmUgdXNpbmcgdGhlIEQ2NSB3aGl0ZSBwb2ludCwgdW5saWtl
IExhYiwgd2hpY2ggdXNlcyBhCi0gICAgLy8gRDUwIHdoaXRlIHBvaW50LCBzbyBhcyBhIGZpcnN0
IHN0ZXAsIHVzZSB0aGUgQnJhZGZvcmQgdHJhbnNmb3JtIHRvIGNvbnZlcnQgdGhlCi0gICAgLy8g
aW5jb21pbmcgWFlaQSBjb2xvciB0byBENTAgd2hpdGUgcG9pbnQuCi0gICAgYXV0byBjb2xvcldp
dGhENTBXaGl0ZVBvaW50ID0gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50
KGNvbG9yKTsKLQotICAgIGZsb2F0IHggPSBjb2xvcldpdGhENTBXaGl0ZVBvaW50LnggLyBENTBX
aGl0ZVZhbHVlc1swXTsKLSAgICBmbG9hdCB5ID0gY29sb3JXaXRoRDUwV2hpdGVQb2ludC55IC8g
RDUwV2hpdGVWYWx1ZXNbMV07Ci0gICAgZmxvYXQgeiA9IGNvbG9yV2l0aEQ1MFdoaXRlUG9pbnQu
eiAvIEQ1MFdoaXRlVmFsdWVzWzJdOworICAgIGZsb2F0IHggPSBjb2xvci54IC8gRDUwV2hpdGVW
YWx1ZXNbMF07CisgICAgZmxvYXQgeSA9IGNvbG9yLnkgLyBENTBXaGl0ZVZhbHVlc1sxXTsKKyAg
ICBmbG9hdCB6ID0gY29sb3IueiAvIEQ1MFdoaXRlVmFsdWVzWzJdOwogCiAgICAgYXV0byBmVHJh
bnNmb3JtID0gW10oZmxvYXQgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHZhbHVlID4gTEFCZSA/
IHN0ZDo6Y2JydCh2YWx1ZSkgOiAoTEFCayAqIHZhbHVlICsgMTYuMGYpIC8gMTE2LjBmOwpAQCAt
NDYzLDcgKzQ0NCw3IEBAIExhYjxmbG9hdD4gdG9MYWIoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG8K
ICAgICBmbG9hdCBhID0gNTAwLjBmICogKGYwIC0gZjEpOwogICAgIGZsb2F0IGIgPSAyMDAuMGYg
KiAoZjEgLSBmMik7CiAKLSAgICByZXR1cm4geyBsaWdodG5lc3MsIGEsIGIsIGNvbG9yV2l0aEQ1
MFdoaXRlUG9pbnQuYWxwaGEgfTsKKyAgICByZXR1cm4geyBsaWdodG5lc3MsIGEsIGIsIGNvbG9y
LmFscGhhIH07CiB9CiAKIApAQCAtNDk5LDk2ICs0ODAsOTYgQEAgTGFiPGZsb2F0PiB0b0xhYihj
b25zdCBMQ0hBPGZsb2F0PiYgY29sbwogCiAvLyAtIEE5OFJHQiBjb21iaW5hdGlvbiBmdW5jdGlv
bnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK0E5
OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckE5OFJHQihjb2xvcikpOwogfQogCi1B
OThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0E5OFJHQjxm
bG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikK
IHsKICAgICByZXR1cm4gdG9BOThSR0IodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKIH0KIAogLy8g
LSBEaXNwbGF5UDMgY29tYmluYXRpb24gZnVuY3Rpb25zLgogCi1YWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVy
biB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKIH0KIAotRGlzcGxheVAzPGZsb2F0
PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3Ip
CiB7CiAgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9
CiAKIC8vIC0gRXh0ZW5kZWRTUkdCIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KIAotWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK0V4dGVuZGVkU1JH
QkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+
JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xv
cikpOwogfQogCi1FeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgWFla
QTxmbG9hdD4mIGNvbG9yKQorRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNv
bnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomIGNvbG9yKQogewogICAgIHJl
dHVybiB0b0V4dGVuZGVkU1JHQkEodG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9yKSk7CiB9CiAK
IC8vIC0gSFNMQSBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCitIU0xBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7CiB9CiAKLUhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCitIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD46OlJlZmVyZW5jZVhZWiYg
Y29sb3IpCiB7CiAgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7CiB9CiAKIC8vIC0g
TENIQSBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBM
Q0hBPGZsb2F0PiYgY29sb3IpCitMQ0hBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25z
dCBMQ0hBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xhYihjb2xvcikp
OwogfQogCi1MQ0hBPGZsb2F0PiB0b0xDSEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTENI
QTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomIGNvbG9yKQog
ewogICAgIHJldHVybiB0b0xDSEEodG9MYWIoY29sb3IpKTsKIH0KIAogLy8gLSBQcm9QaG90b1JH
QiBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBQcm9Q
aG90b1JHQjxmbG9hdD4mIGNvbG9yKQorUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVog
dG9YWVpBKGNvbnN0IFByb1Bob3RvUkdCPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRv
WFlaQSh0b0xpbmVhclByb1Bob3RvUkdCKGNvbG9yKSk7CiB9CiAKLVByb1Bob3RvUkdCPGZsb2F0
PiB0b1Byb1Bob3RvUkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1Byb1Bob3RvUkdCPGZs
b2F0PiB0b1Byb1Bob3RvUkdCKGNvbnN0IFByb1Bob3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFla
JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9Qcm9QaG90b1JHQih0b0xpbmVhclByb1Bob3RvUkdC
KGNvbG9yKSk7CiB9CiAKIC8vIC0gUmVjMjAyMCBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpCitSZWMyMDIwPGZs
b2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpCiB7
CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhclJlYzIwMjAoY29sb3IpKTsKIH0KIAotUmVjMjAy
MDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1JlYzIwMjA8Zmxv
YXQ+IHRvUmVjMjAyMChjb25zdCBSZWMyMDIwPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikK
IHsKICAgICByZXR1cm4gdG9SZWMyMDIwKHRvTGluZWFyUmVjMjAyMChjb2xvcikpOwogfQogCiAv
LyAtIFNSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgogCi1YWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1NSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFla
QShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5l
YXJTUkdCQShjb2xvcikpOwogfQogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD46OlJl
ZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShj
b2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MjEyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxNiArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbGwgY29sb3IgdHlw
ZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBh
bmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZQorLy8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQg
bGVhc3QgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhl
aXIgcmVmZXJlbmNlIFhZWiBjb2xvciBzcGFjZQogLy8KLS8vICAgIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBgQ29sb3JUeXBlYDxmbG9hdD4mKTsKLS8vICAgIGBDb2xvclR5cGVgPGZsb2F0PiB0
b2BDb2xvclR5cGVgKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyAgICBgQ29sb3JUeXBlYDxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgYENvbG9yVHlwZWA8ZmxvYXQ+Jik7CisvLyAg
ICBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBlYChjb25zdCBgQ29sb3JUeXBlYDxmbG9h
dD46OlJlZmVyZW5jZVhZWiYpOwogLy8KIC8vIGFzIHdlbGwgYXMgYW4gaWRlbnRpdHkgY29udmVy
c2lvbgogLy8KIC8vICAgIGNvbnN0ZXhwciBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBl
YChjb25zdCBgQ29sb3JUeXBlYDxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogLy8K
LS8vIGFuZCBhIGdlbmVyaWMgY29udmVyc2lvbiB1dGlsaXppbmcgYSBjb252ZXJzaW9uIHRoZSBY
WVogY29sb3Igc3BhY2UKKy8vIGFuZCBhIGdlbmVyaWMgY29udmVyc2lvbiB1dGlsaXppbmcgYSBj
b252ZXJzaW9uIHRvIHRoZSByZWZlcmVuY2UgWFlaIGNvbG9yIHNwYWNlIGFuZCBhIGNocm9tYXRp
YworLy8gYWRhcGF0YXRpb24gaWYgdGhlIHdoaXRlIHBvaW50cyBkaWZmZXIKIC8vCiAvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBlYChjb25z
dCBUJiBjb2xvcikKIC8vCkBAIC00Nyw5NyArNDgsMTE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogCiAvLyBBOThSR0IKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBB
OThSR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEE5OFJH
QjxmbG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAv
LyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJB
OThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYpOwogCiAvLyBEaXNwbGF5UDMKLVdFQkNPUkVfRVhQ
T1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1XRUJDT1JF
X0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7
CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNv
bnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4g
dG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBB
ZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJE
aXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwogCiAvLyBFeHRlbmRlZFNSR0JBCi1X
RUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9h
dD4mKTsKLVdFQkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdCQTxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsKK1dF
QkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBF
eHRlbmRlZFNSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdFQkNP
UkVfRVhQT1JUIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdC
QShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOwogCiAvLyBIU0xBCi1XRUJDT1JFX0VYUE9S
VCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKK1dF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0Pjo6UmVmZXJl
bmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NS
R0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKIC8vIExDSEEKLVdFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMQ0hBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgTENIQTxm
bG9hdD4gdG9MQ0hBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMQ0hBPGZs
b2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBMQ0hBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVom
KTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBM
Q0hBPGZsb2F0PiYpOwogCiAvLyBMYWIKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBMYWI8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+IHRvTGFiKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+OjpSZWZlcmVuY2VY
WVogdG9YWVpBKGNvbnN0IExhYjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExhYjxmbG9hdD4g
dG9MYWIoY29uc3QgTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdF
QkNPUkVfRVhQT1JUIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBMYWI8ZmxvYXQ+Jik7CiAKIC8v
IExpbmVhckE5OFJHQgotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4g
dG9MaW5lYXJBOThSR0IoY29uc3QgWFlaQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyQTk4UkdCPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJH
Qihjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBMaW5lYXJBOThS
R0I8ZmxvYXQ+JiBjb2xvcik7CiAKIC8vIExpbmVhckRpc3BsYXlQMwotV0VCQ09SRV9FWFBPUlQg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNP
UkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD46OlJl
ZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09S
RV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNw
bGF5UDM8ZmxvYXQ+Jik7CiAKIC8vIExpbmVhckV4dGVuZGVkU1JHQkEKLVdFQkNPUkVfRVhQT1JU
IFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOwot
V0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRl
ZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJFeHRlbmRl
ZFNSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4g
dG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+OjpS
ZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+
Jik7CiAKIC8vIExpbmVhclByb1Bob3RvUkdCCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBM
aW5lYXJQcm9QaG90b1JHQjxmbG9hdD4gdG9MaW5lYXJQcm9QaG90b1JHQihjb25zdCBYWVpBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IExpbmVhclByb1Bob3RvUkdCPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvTGluZWFyUHJvUGhvdG9SR0IoY29uc3Qg
TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwog
V0VCQ09SRV9FWFBPUlQgUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvUHJvUGhvdG9SR0IoY29uc3QgTGlu
ZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7CiAKIC8vIExpbmVhclJlYzIwMjAKLVdFQkNPUkVfRVhQ
T1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJSZWMyMDIwPGZsb2F0PiYpOwotV0VC
Q09SRV9FWFBPUlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJSZWMyMDIwPGZsb2F0Pjo6UmVmZXJl
bmNlWFlaIHRvWFlaQShjb25zdCBMaW5lYXJSZWMyMDIwPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IExpbmVhclJlYzIw
MjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQg
UmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IExpbmVhclJlYzIwMjA8ZmxvYXQ+Jik7CiAK
IC8vIExpbmVhclNSR0JBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFy
U1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29u
c3QgTGluZWFyU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+
Jik7CiAKIC8vIFByb1Bob3RvUkdCCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBQcm9QaG90b1JHQjxm
bG9hdD4gdG9Qcm9QaG90b1JHQihjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
UHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IFByb1Bob3RvUkdC
PGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvUHJvUGhvdG9S
R0IoY29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvTGluZWFyUHJvUGhv
dG9SR0IoY29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7CiAKIC8vIFJlYzIwMjAKLVdFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYpOwotV0VCQ09S
RV9FWFBPUlQgUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBSZWMyMDIwPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBS
ZWMyMDIwPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIw
KGNvbnN0IFJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IFJl
YzIwMjA8ZmxvYXQ+Jik7CiAKIC8vIFNSR0JBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4g
dG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+
OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVom
KTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0
PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKIAorLy8gQ2hyb21hdGljIEFkYXB0YXRp
b24gY29udmVyc2lvbnMuCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpE
NjU+IGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludChjb25zdCBYWVpBPGZs
b2F0LCBXaGl0ZVBvaW50OjpENTA+Jik7CitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0LCBXaGl0
ZVBvaW50OjpENTA+IGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb25z
dCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IFdoaXRlUG9pbnQgaW5wdXRXaGl0ZVBvaW50PiBjb25zdGV4cHIgdHlwZW5hbWUgVDo6UmVmZXJl
bmNlWFlaIHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKGNvbnN0IFhZWkE8ZmxvYXQsIGlucHV0
V2hpdGVQb2ludD4mIGNvbG9yKQoreworICAgIGNvbnN0ZXhwciBXaGl0ZVBvaW50IG91dHB1dFdo
aXRlUG9pbnQgPSBUOjpSZWZlcmVuY2VYWVo6OndoaXRlUG9pbnQ7CisKKyAgICBpZiBjb25zdGV4
cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gaW5wdXRXaGl0ZVBvaW50KQorICAgICAgICByZXR1cm4g
Y29sb3I7CisgICAgZWxzZSBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gV2hpdGVQ
b2ludDo6RDUwKQorICAgICAgICByZXR1cm4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBX
aGl0ZVBvaW50KGNvbG9yKTsKKyAgICBlbHNlIGlmIGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2lu
dCA9PSBXaGl0ZVBvaW50OjpENjUpCisgICAgICAgIHJldHVybiBjb252ZXJ0RnJvbUQ1MFdoaXRl
UG9pbnRUb0Q2NVdoaXRlUG9pbnQoY29sb3IpOworfQorCisKIC8vIElkZW50aXR5IGNvbnZlcnNp
b25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgQTk4UkdCPGZs
b2F0PiB0b0E5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KQEAgLTE1NSw4NyArMTczLDg3IEBAIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkcKIGNvbnN0ZXhwciBQcm9QaG90b1JHQjxmbG9hdD4gdG9Qcm9QaG90b1JHQihjb25z
dCBQcm9QaG90b1JHQjxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHBy
IFJlYzIwMjA8ZmxvYXQ+IHRvUmVjMjAyMChjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JH
QkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQordGVt
cGxhdGU8V2hpdGVQb2ludCBXPiBjb25zdGV4cHIgWFlaQTxmbG9hdCwgVz4gdG9YWVpBKGNvbnN0
IFhZWkE8ZmxvYXQsIFc+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIAogCiAvLyBGYWxsYmFj
ayBjb252ZXJzaW9ucy4KIAotLy8gQWxsIHR5cGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29u
dmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZCB0byB3b3JrIGlmCi0vLyBh
bm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgorLy8gQWxsIHR5cGVzIGFy
ZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byB0aGVpciByZWZlcmVuY2UgWFlaIHNw
YWNlLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZAorLy8gdG8gd29yayBpZiBhbm90aGVyIG92ZXJs
b2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThS
R0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0E5OFJH
Qih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9BOThSR0IocGVyZm9ybUNob21hdGljQWRh
cGF0YXRpb248QTk4UkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9E
aXNwbGF5UDMocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248RGlzcGxheVAzPGZsb2F0Pj4odG9Y
WVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvRXh0
ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9FeHRlbmRlZFNSR0JBKHBl
cmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pih0b1hZWkEoY29s
b3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25z
dCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xvcikpOworICAgIHJl
dHVybiB0b0hTTEEocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248SFNMQTxmbG9hdD4+KHRvWFla
QShjb2xvcikpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTENIQTxmbG9hdD4gdG9MQ0hB
KGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xDSEEodG9YWVpBKGNvbG9yKSk7Cisg
ICAgcmV0dXJuIHRvTENIQShwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxMQ0hBPGZsb2F0Pj4o
dG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMYWI8ZmxvYXQ+IHRv
TGFiKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xhYih0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9MYWIocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248TGFiPGZsb2F0Pj4o
dG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJBOThSR0I8
ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xp
bmVhckE5OFJHQih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5lYXJBOThSR0IocGVy
Zm9ybUNob21hdGljQWRhcGF0YXRpb248TGluZWFyQTk4UkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9y
KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRv
TGluZWFyRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xpbmVhckRp
c3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDMocGVy
Zm9ybUNob21hdGljQWRhcGF0YXRpb248TGluZWFyRGlzcGxheVAzPGZsb2F0Pj4odG9YWVpBKGNv
bG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJu
IHRvTGluZWFyRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5l
YXJFeHRlbmRlZFNSR0JBKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExpbmVhckV4dGVuZGVk
U1JHQkE8ZmxvYXQ+Pih0b1hZWkEoY29sb3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IExpbmVhclByb1Bob3RvUkdCPGZsb2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IFQmIGNv
bG9yKQogewotICAgIHJldHVybiB0b0xpbmVhclByb1Bob3RvUkdCKHRvWFlaQShjb2xvcikpOwor
ICAgIHJldHVybiB0b0xpbmVhclByb1Bob3RvUkdCKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9u
PExpbmVhclByb1Bob3RvUkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBMaW5lYXJSZWMyMDIwPGZsb2F0PiB0b0xpbmVhclJlYzIwMjAoY29uc3Qg
VCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyUmVjMjAyMCh0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9MaW5lYXJSZWMyMDIwKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExp
bmVhclJlYzIwMjA8ZmxvYXQ+Pih0b1hZWkEoY29sb3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0xpbmVhclNSR0JBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0
b0xpbmVhclNSR0JBKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExpbmVhclNSR0JBPGZsb2F0
Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQcm9QaG90b1JH
QjxmbG9hdD4gdG9Qcm9QaG90b1JHQihjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9Q
cm9QaG90b1JHQih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9Qcm9QaG90b1JHQihwZXJm
b3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxQcm9QaG90b1JHQjxmbG9hdD4+KHRvWFlaQShjb2xvcikp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNv
bnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b1JlYzIwMjAodG9YWVpBKGNvbG9yKSk7Cisg
ICAgcmV0dXJuIHRvUmVjMjAyMChwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxSZWMyMDIwPGZs
b2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxm
bG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9TUkdCQSh0b1hZ
WkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9TUkdCQShwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlv
bjxTUkdCQTxmbG9hdD4+KHRvWFlaQShjb2xvcikpKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzIxMjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51
bSBjbGFzcyBXaGl0ZVBvaW50IHsKKyAgICBENTAsCisgICAgRDY1Cit9OworCiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IEE5OFJHQjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGlzcGxh
eVAzOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBFeHRlbmRlZFNSR0JBOwpAQCAtNDYsNyAr
NTEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwogdGVtcGxhdGU8
dHlwZW5hbWU+IHN0cnVjdCBQcm9QaG90b1JHQjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg
UmVjMjAyMDsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gc3RydWN0IFhZWkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgV2hpdGVQb2ludD4gc3RydWN0
IFhZWkE7CiAKIC8vIE1BUks6IE1ha2UgZnVuY3Rpb25zLgogCkBAIC0yMjUsNiArMjMwLDcgQEAg
dGVtcGxhdGU8dGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIENvbG9yVAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IEE5OFJHQiA6IFJHQkFUeXBlPEE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+IHsK
ICAgICB1c2luZyBSR0JBVHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAg
ICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJBOThSR0I8VD47CisgICAgdXNpbmcg
UmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENjU+OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6QTk4UkdCOwogfTsKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IEE5OFJHQihULCBULCBULCBUKSAtPiBBOThSR0I8VD47CkBAIC0yMzIsNiAr
MjM4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCKFQsIFQsIFQsIFQpIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERpc3BsYXlQMyA6IFJHQkFUeXBlPERpc3BsYXlQMywgVCwg
UkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVs
PFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJEaXNw
bGF5UDM8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpE
NjU+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6
RGlzcGxheVAzOwogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBU
KSAtPiBEaXNwbGF5UDM8VD47CkBAIC0yMzksNDIgKzI0Niw0OSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBEaXNwbGF5UDMoVCwgVCwgVCwgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0
ZW5kZWRTUkdCQSA6IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8
VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1v
ZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJF
eHRlbmRlZFNSR0JBPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQ
b2ludDo6RDY1PjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBKFQsIFQs
IFQsIFQpIC0+IEV4dGVuZGVkU1JHQkE8VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBMaW5lYXJBOThSR0IgOiBSR0JBVHlwZTxMaW5lYXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7
CiAgICAgdXNpbmcgUkdCQVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFU
eXBlOwogICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gQTk4UkdCPFQ+OworICAg
IHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKIH07CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJBOThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdC
PFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzIDogUkdC
QVR5cGU8TGluZWFyRGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFU
eXBlPExpbmVhckRpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKICAgICB1c2lu
ZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IERpc3BsYXlQMzxUPjsKKyAgICB1c2luZyBSZWZl
cmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6OkQ2NT47CiB9OwogdGVtcGxhdGU8dHlwZW5h
bWUgVD4gTGluZWFyRGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkEgOiBSR0JB
VHlwZTxMaW5lYXJFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CiAgICAg
dXNpbmcgUkdCQVR5cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxU
Pj46OlJHQkFUeXBlOwogICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5k
ZWRTUkdCQTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6
OkQ2NT47CiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRXh0ZW5kZWRTUkdCQShULCBU
LCBULCBUKSAtPiBMaW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgTGluZWFyUHJvUGhvdG9SR0IgOiBSR0JBVHlwZTxMaW5lYXJQcm9QaG90b1JHQiwg
VCwgUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJQcm9QaG90b1JHQiwg
VCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKICAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVy
cGFydCA9IFByb1Bob3RvUkdCPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwg
V2hpdGVQb2ludDo6RDUwPjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJQcm9QaG90
b1JHQihULCBULCBULCBUKSAtPiBMaW5lYXJQcm9QaG90b1JHQjxUPjsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IExpbmVhclJlYzIwMjAgOiBSR0JBVHlwZTxMaW5lYXJSZWMyMDIwLCBU
LCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhclJlYzIwMjAsIFQsIFJH
Qk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQg
PSBSZWMyMDIwPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2lu
dDo6RDY1PjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJSZWMyMDIwKFQsIFQsIFQs
IFQpIC0+IExpbmVhclJlYzIwMjA8VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBM
aW5lYXJTUkdCQSA6IFJHQkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewogICAg
IHVzaW5nIFJHQkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwog
ICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gU1JHQkE8VD47CisgICAgdXNpbmcg
UmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENjU+OwogICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6TGluZWFyUkdCOwogfTsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhclNSR0JBPFQ+
OwpAQCAtMjgyLDYgKzI5Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQs
IFQsIFQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQcm9QaG90b1JHQiA6IFJHQkFUeXBl
PFByb1Bob3RvUkdCLCBULCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPFByb1Bo
b3RvUkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwogICAgIHVzaW5nIExpbmVhckNvdW50
ZXJwYXJ0ID0gTGluZWFyUHJvUGhvdG9SR0I8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0g
WFlaQTxULCBXaGl0ZVBvaW50OjpENTA+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xv
clNwYWNlID0gQ29sb3JTcGFjZTo6UHJvUGhvdG9SR0I7CiB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gUHJvUGhvdG9SR0IoVCwgVCwgVCwgVCkgLT4gUHJvUGhvdG9SR0I8VD47CkBAIC0yODksNiAr
MzA0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUHJvUGhvdG9SR0IoVCwgVCwgVAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFJlYzIwMjAgOiBSR0JBVHlwZTxSZWMyMDIwLCBULCBSR0JN
b2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPFJlYzIwMjAsIFQsIFJHQk1vZGVsPFQ+Pjo6
UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJSZWMyMDIwPFQ+
OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlJlYzIwMjAg
fTsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBSZWMyMDIwKFQsIFQsIFQsIFQpIC0+IFJlYzIw
MjA8VD47CkBAIC0yOTYsNiArMzEyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVjMjAyMChU
LCBULCBULCBUKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIDogUkdCQVR5cGU8
U1JHQkEsIFQsIFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcgUkdCQVR5cGU8U1JHQkEsIFQsIFJH
Qk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5l
YXJTUkdCQTxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6
OkQ2NT47CiAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNl
OjpTUkdCIH07CiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4g
U1JHQkE8VD47CkBAIC0zMDUsNiArMzIyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEo
VCwgVCwgVCwgVCkgLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExhYiA6IENvbG9yV2l0
aEFscGhhSGVscGVyPExhYjxUPj4gewogICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwogICAg
IHVzaW5nIE1vZGVsID0gTGFiTW9kZWw8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFla
QTxULCBXaGl0ZVBvaW50OjpENTA+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNw
YWNlID0gQ29sb3JTcGFjZTo6TGFiOwogCiAgICAgY29uc3RleHByIExhYihUIGxpZ2h0bmVzcywg
VCBhLCBUIGIsIFQgYWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQpAQCAtMzM3LDYgKzM1
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBMQ0hBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8TENIQTxUPj4g
ewogICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwogICAgIHVzaW5nIE1vZGVsID0gTENITW9k
ZWw8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENTA+
OwogCiAgICAgY29uc3RleHByIExDSEEoVCBsaWdodG5lc3MsIFQgY2hyb21hLCBUIGh1ZSwgVCBh
bHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCiAgICAgICAgIDogbGlnaHRuZXNzIHsgbGln
aHRuZXNzIH0KQEAgLTM2OSw2ICszODgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4
cHIgQ29sb3JDb21wCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSFNMQSA6IENvbG9yV2l0
aEFscGhhSGVscGVyPEhTTEE8VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKICAg
ICB1c2luZyBNb2RlbCA9IEhTTE1vZGVsPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZ
WkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKIAogICAgIGNvbnN0ZXhwciBIU0xBKFQgaHVlLCBUIHNh
dHVyYXRpb24sIFQgbGlnaHRuZXNzLCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkK
ICAgICAgICAgOiBodWUgeyBodWUgfQpAQCAtMzk3LDkgKzQxNywxMSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21wCiAKIC8vIE1BUks6IC0gWFlaIENvbG9yIFR5cGUu
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIDogQ29sb3JXaXRoQWxwaGFIZWxw
ZXI8WFlaQTxUPj4gewordGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hpdGVQb2ludCBXPiBzdHJ1Y3Qg
WFlaQSA6IENvbG9yV2l0aEFscGhhSGVscGVyPFhZWkE8VCwgVz4+IHsKICAgICB1c2luZyBDb21w
b25lbnRUeXBlID0gVDsKICAgICB1c2luZyBNb2RlbCA9IFhZWk1vZGVsPFQ+OworICAgIHVzaW5n
IFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgVz47CisgICAgc3RhdGljIGNvbnN0ZXhwciBXaGl0ZVBv
aW50IHdoaXRlUG9pbnQgPSBXOwogCiAgICAgY29uc3RleHByIFhZWkEoVCB4LCBUIHksIFQgeiwg
VCBhbHBoYSA9IEFscGhhVHJhaXRzPFQ+OjpvcGFxdWUpCiAgICAgICAgIDogeCB7IHggfQpAQCAt
NDIxLDcgKzQ0Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIDogQ29sb3IK
ICAgICBUIGFscGhhOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9y
Q29tcG9uZW50czxUPiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBYWVpBPFQ+JiBjKQordGVtcGxh
dGU8dHlwZW5hbWUgVCwgV2hpdGVQb2ludCBXPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+
IGFzQ29sb3JDb21wb25lbnRzKGNvbnN0IFhZWkE8VCwgVz4mIGMpCiB7CiAgICAgcmV0dXJuIHsg
Yy54LCBjLnksIGMueiwgYy5hbHBoYSB9OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418836</attachid>
            <date>2021-01-31 17:34:45 -0800</date>
            <delta_ts>2021-02-01 09:50:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221193-20210131173445.patch</filename>
            <type>text/plain</type>
            <size>33761</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MjEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIxLTAxLTMxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCB1bm5lY2Vzc2FyeSBjaHJv
bWF0aWMgYWRhcHRhdGlvbiB3aGVuIGNvbnZlcnRpbmcgYmV0d2VlbiBjb2xvcnMgd2l0aCB0aGUg
c2FtZSB3aGl0ZSBwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMTkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRGVsYXkgY2hyb21hdGljIGFkYXBhdGlvbiwgd2hpY2ggaXMgaW1wbGVtZW50ZWQg
YXMgdGhlIGNvbnZlcnNpb24gZnJvbSBhIGNvbG9yIGluIHRoZSBYWVogY29sb3IKKyAgICAgICAg
c3BhY2Ugd2l0aCBvbmUgd2hpdGUgcG9pbnQgdG8gYSBjb2xvciBpbiB0aGUgWFlaIGNvbG9yIHNw
YWNlIHdpdGggYW5vdGhlciB3aGl0ZSBwb2ludCwgdW50aWwKKyAgICAgICAgaXQgaXMgYWN0dWFs
bHkgbmVlZGVkLCByYXRoZXIgdGhhbiBlYWdlcmx5IGNvbnZlcnRpbmcgY29sb3JzIHRoYXQgdXNl
IGEgRDUwIHdoaXRlIHBvaW50IChqdXN0IAorICAgICAgICBMYWIsIExDSCBhbmQgUHJvUGhvdG9S
R0IgYXQgdGhlIG1vbWVudCkgdG8gRDY1IGZvciBldmVyeSBjb252ZXJzaW9uLgorCisgICAgICAg
IFRvIGRvIHRoaXMsIHdlIGludHJvZHVjZSBhIG5ldyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgZm9yIHRo
ZSBYWVpBIGNvbG9yIHRvIGV4cGxpY2l0bHkgYW5ub3RhdGUKKyAgICAgICAgd2hhdCB3aGl0ZSBw
b2ludCBpdCBoYXMsIGFuZCBmdXJ0aGVyIGFubm90YXRlIGFsbCBjb2xvciB0eXBlcyB3aXRoIHdo
aWNoIFhZWiBjb2xvciBtYXRjaGVzCisgICAgICAgIHRoZWlyIGRlZmluZWQgd2hpdGUgcG9pbnQu
IFRoZW4sIGluIHRoZSBnZW5lcmljIGNvbG9yIGNvbnZlcnNpb24gZnVuY3Rpb25zLCB3ZSBhcHBs
eSBjaHJvbWF0aWMKKyAgICAgICAgYWRhcHRhdGlvbiBpZiBuZWVkZWQgYnkgY29tcGFyaW5nIHRo
ZSBpbnB1dCBhbmQgb3V0cHV0IHdoaXRlIHBvaW50cyBvZiB0aGUgdHlwZXMgKGF0IGNvbXBpbGUg
CisgICAgICAgIHRpbWUpIGFuZCBkb2luZyB0aGUgY29udmVyc2lvbiBvbmx5IHdoZW4gbmVjZXNz
YXJ5LgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gcmVtb3ZlIHRoZSBleHBs
aWNpdCBjaHJvbWF0aWMgYWRhcGF0YXRpb25zIGluIHRoZSBMaW5lYXJQcm9QaG90b1JHQiBtYXRy
aXgKKyAgICAgICAgY29udmVyc2lvbnMgYXMgd2VsbCBhcyB0aGUgTGFiIGNvbnZlcnNpb25zLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmg6CisKIDIwMjEtMDEtMzEgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIElubGluZUNvbnRlbnRCcmVh
a2VyOjpwcm9jZXNzT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBzaG91bGQgZmluZCBicmVha2luZyBw
b3NpdGlvbnMgZXZlbiBhZnRlciB0aGUgb3ZlcmZsb3dpbmcgcnVuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHJl
dmlzaW9uIDI3MjEyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMywxNCArMTMzLDE0IEBAIHN0YXRp
YyBjb25zdGV4cHIgQ29sb3JNYXRyaXg8MywgMz4gRDY1VG8KIAogLy8gTUFSSzogQ2hyb21hdGlj
IEFkYXB0YXRpb24gY29udmVyc2lvbnMuCiAKLXN0YXRpYyBYWVpBPGZsb2F0PiBjb252ZXJ0RnJv
bUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQor
WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2
NVdoaXRlUG9pbnQoY29uc3QgWFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPiYgY29sb3IpCiB7
Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxm
bG9hdD4+KEQ1MFRvRDY1TWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4+KEQ1MFRvRDY1TWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwog
fQogCi1zdGF0aWMgWFlaQTxmbG9hdD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0
ZVBvaW50KGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1hZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6
OkQ1MD4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50KGNvbnN0IFhZWkE8
ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT4mIGNvbG9yKQogewotICAgIHJldHVybiBtYWtlRnJvbUNv
bXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZWkE8ZmxvYXQ+PihENjVUb0Q1ME1hdHJpeC50
cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKKyAg
ICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0
LCBXaGl0ZVBvaW50OjpENTA+PihENjVUb0Q1ME1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9u
ZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAogLy8gTUFSSzogR2FtbWEgY29u
dmVyc2lvbnMuCkBAIC0yMzMsODMgKzIzMyw3NCBAQCBTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25z
dCBMaW5lYXJTUkdCQTxmCiAKIC8vIC0gTGluZWFyQTk4UkdCIG1hdHJpeCBjb252ZXJzaW9ucy4K
IAotTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJHQihjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJBOThSR0I8ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IExpbmVhckE5
OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VGcm9t
Q29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyQTk4UkdCPGZsb2F0Pj4oeHl6VG9M
aW5lYXJBOThSR0JNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBv
bmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJBOThS
R0I8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZ
WkEoY29uc3QgTGluZWFyQTk4UkdCPGZsb2F0PiYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8WFlaQTxmbG9hdD4+KGxpbmVhckE5OFJH
QlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRz
KGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFs
cGhhPExpbmVhckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWj4obGluZWFyQTk4UkdCVG9YWVpN
YXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3Ip
KSk7CiB9CiAKIC8vIC0gTGluZWFyRGlzcGxheVAzIG1hdHJpeCBjb252ZXJzaW9ucy4KIAotTGlu
ZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRvTGluZWFyRGlzcGxheVAzKGNvbnN0IExp
bmVhckRpc3BsYXlQMzxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRGlzcGxheVAzPGZs
b2F0Pj4oeHl6VG9MaW5lYXJEaXNwbGF5UDNNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVu
dHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckRpc3BsYXlQMzxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYgY29s
b3IpCiB7Ci0gICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
WFlaQTxmbG9hdD4+KGxpbmVhckRpc3BsYXlQM1RvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckRpc3BsYXlQMzxmbG9hdD46OlJl
ZmVyZW5jZVhZWj4obGluZWFyRGlzcGxheVAzVG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNv
bXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIC8vIC0gTGluZWFyRXh0
ZW5kZWRTUkdCQSBtYXRyaXggY29udmVyc2lvbnMuCiAKLUxpbmVhckV4dGVuZGVkU1JHQkE8Zmxv
YXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitMaW5l
YXJFeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgTGluZWFy
RXh0ZW5kZWRTUkdCQTxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJu
IG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyRXh0ZW5kZWRTUkdC
QTxmbG9hdD4+KHh5elRvTGluZWFyU1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50
cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhckV4dGVuZGVkU1JH
QkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8
ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdF
eGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVk
Q29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBt
YWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhckV4dGVuZGVkU1JHQkE8
ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclNSR0JUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENv
bG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAogLy8gLSBMaW5l
YXJQcm9QaG90b1JHQiBtYXRyaXggY29udmVyc2lvbnMuCiAKLUxpbmVhclByb1Bob3RvUkdCPGZs
b2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xpbmVh
clByb1Bob3RvUkdCPGZsb2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IExpbmVhclByb1Bo
b3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKLSAgICAvLyBXZSBleHBlY3Qg
WFlaQSBjb2xvcnMgdG8gYmUgdXNpbmcgdGhlIEQ2NSB3aGl0ZSBwb2ludCwgdW5saWtlIFByb1Bo
b3RvUkdCLCB3aGljaAotICAgIC8vIHVzZXMgYSBENTAgd2hpdGUgcG9pbnQsIHNvIGFzIGEgZmly
c3Qgc3RlcCwgdXNlIHRoZSBCcmFkZm9yZCB0cmFuc2Zvcm0gdG8gY29udmVydAotICAgIC8vIHRo
ZSBpbmNvbWluZyBYWVpBIGNvbG9yIHRvIEQ1MCB3aGl0ZSBwb2ludC4KLSAgICBhdXRvIHh5eldp
dGhENTBXaGl0ZVBvaW50ID0gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50
KGNvbG9yKTsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBo
YTxMaW5lYXJQcm9QaG90b1JHQjxmbG9hdD4+KHh5elRvTGluZWFyUHJvUGhvdG9SR0JNYXRyaXgu
dHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoeHl6V2l0aEQ1MFdo
aXRlUG9pbnQpKSk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0
QWxwaGE8TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Pih4eXpUb0xpbmVhclByb1Bob3RvUkdCTWF0
cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkp
OwogfQogCi1YWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+
JiBjb2xvcikKK0xpbmVhclByb1Bob3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShj
b25zdCBMaW5lYXJQcm9QaG90b1JHQjxmbG9hdD4mIGNvbG9yKQogewotICAgIGF1dG8geHl6V2l0
aEQ1MFdoaXRlUG9pbnQgPSBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFhZ
WkE8ZmxvYXQ+PihsaW5lYXJQcm9QaG90b1JHQlRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JD
b21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwotCi0gICAgLy8gV2UgZXhwZWN0
IFhZWkEgY29sb3JzIHRvIGJlIHVzaW5nIHRoZSBENjUgd2hpdGUgcG9pbnQsIHVubGlrZSBQcm9Q
aG90b1JHQiwgd2hpY2gKLSAgICAvLyB1c2VzIGEgRDUwIHdoaXRlIHBvaW50LCBzbyBhcyBhIGZp
bmFsIHN0ZXAsIHVzZSB0aGUgQnJhZGZvcmQgdHJhbnNmb3JtIHRvIGNvbnZlcnQKLSAgICAvLyB0
aGUgcmVzdWx0aW5nIFhZWkEgY29sb3IgdG8gYSBENjUgd2hpdGUgcG9pbnQuCi0gICAgcmV0dXJu
IGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludCh4eXpXaXRoRDUwV2hpdGVQ
b2ludCk7CisgICAgcmV0dXJuIG1ha2VGcm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8
TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclByb1Bob3RvUkdC
VG9YWVpNYXRyaXgudHJhbnNmb3JtZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IpKSk7CiB9CiAKIC8vIC0gTGluZWFyUmVjMjAyMCBtYXRyaXggY29udmVyc2lvbnMuCiAK
LUxpbmVhclJlYzIwMjA8ZmxvYXQ+IHRvTGluZWFyUmVjMjAyMChjb25zdCBYWVpBPGZsb2F0PiYg
Y29sb3IpCitMaW5lYXJSZWMyMDIwPGZsb2F0PiB0b0xpbmVhclJlYzIwMjAoY29uc3QgTGluZWFy
UmVjMjAyMDxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIG1ha2VG
cm9tQ29tcG9uZW50c0NsYW1waW5nRXhjZXB0QWxwaGE8TGluZWFyUmVjMjAyMDxmbG9hdD4+KHh5
elRvTGluZWFyUmVjMjAyME1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9y
Q29tcG9uZW50cyhjb2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVh
clJlYzIwMjA8ZmxvYXQ+JiBjb2xvcikKK0xpbmVhclJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VY
WVogdG9YWVpBKGNvbnN0IExpbmVhclJlYzIwMjA8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1
cm4gbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGlu
ZWFyUmVjMjAyMFRvWFlaTWF0cml4LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JD
b21wb25lbnRzKGNvbG9yKSkpOworICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGlu
Z0V4Y2VwdEFscGhhPExpbmVhclJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVo+KGxpbmVhclJl
YzIwMjBUb1hZWk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9u
ZW50cyhjb2xvcikpKTsKIH0KIAogLy8gLSBMaW5lYXJTUkdCQSBtYXRyaXggY29udmVyc2lvbnMu
CiAKLUxpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+JiBj
b2xvcikKK0xpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IExpbmVhclNSR0JB
PGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKICAgICByZXR1cm4gbWFrZUZyb21Db21w
b25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxMaW5lYXJTUkdCQTxmbG9hdD4+KHh5elRvTGluZWFy
U1JHQk1hdHJpeC50cmFuc2Zvcm1lZENvbG9yQ29tcG9uZW50cyhhc0NvbG9yQ29tcG9uZW50cyhj
b2xvcikpKTsKIH0KIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYgY29sb3IpCitMaW5lYXJTUkdCQTxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+JiBjb2xvcikKIHsKLSAgICByZXR1cm4gbWFrZUZyb21Db21wb25l
bnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxYWVpBPGZsb2F0Pj4obGluZWFyU1JHQlRvWFlaTWF0cml4
LnRyYW5zZm9ybWVkQ29sb3JDb21wb25lbnRzKGFzQ29sb3JDb21wb25lbnRzKGNvbG9yKSkpOwor
ICAgIHJldHVybiBtYWtlRnJvbUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPExpbmVhclNS
R0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaPihsaW5lYXJTUkdCVG9YWVpNYXRyaXgudHJhbnNmb3Jt
ZWRDb2xvckNvbXBvbmVudHMoYXNDb2xvckNvbXBvbmVudHMoY29sb3IpKSk7CiB9CiAKIC8vIE1B
Uks6IEhTTCBjb252ZXJzaW9ucy4KQEAgLTQwNSw3ICszOTYsNyBAQCBzdGF0aWMgY29uc3RleHBy
IGZsb2F0IExBQmUgPSAyMTYuMGYgLyAyCiBzdGF0aWMgY29uc3RleHByIGZsb2F0IExBQmsgPSAy
NDM4OS4wZiAvIDI3LjBmOwogc3RhdGljIGNvbnN0ZXhwciBmbG9hdCBENTBXaGl0ZVZhbHVlc1td
ID0geyAwLjk2NDIyZiwgMS4wZiwgMC44MjUyMWYgfTsKIAotWFlaQTxmbG9hdD4gdG9YWVpBKGNv
bnN0IExhYjxmbG9hdD4mIGNvbG9yKQorTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShj
b25zdCBMYWI8ZmxvYXQ+JiBjb2xvcikKIHsKICAgICBmbG9hdCBmMSA9IChjb2xvci5saWdodG5l
c3MgKyAxNi4wZikgLyAxMTYuMGY7CiAgICAgZmxvYXQgZjAgPSBmMSArIChjb2xvci5hIC8gNTAw
LjBmKTsKQEAgLTQzMiwyNCArNDIzLDE0IEBAIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMYWI8
ZmxvYXQ+JiBjb2wKICAgICBmbG9hdCB5ID0gRDUwV2hpdGVWYWx1ZXNbMV0gKiBjb21wdXRlWShj
b2xvci5saWdodG5lc3MpOwogICAgIGZsb2F0IHogPSBENTBXaGl0ZVZhbHVlc1syXSAqIGNvbXB1
dGVYQW5kWihmMik7CiAKLSAgICBYWVpBPGZsb2F0PiByZXN1bHQgeyB4LCB5LCB6LCBjb2xvci5h
bHBoYSB9OwotCi0gICAgLy8gV2UgZXhwZWN0IFhZWkEgY29sb3JzIHRvIGJlIHVzaW5nIHRoZSBE
NjUgd2hpdGUgcG9pbnQsIHVubGlrZSBMYWIsIHdoaWNoIHVzZXMgYQotICAgIC8vIEQ1MCB3aGl0
ZSBwb2ludCwgc28gYXMgYSBmaW5hbCBzdGVwLCB1c2UgdGhlIEJyYWRmb3JkIHRyYW5zZm9ybSB0
byBjb252ZXJ0IHRoZQotICAgIC8vIHJlc3VsdGluZyBYWVpBIGNvbG9yIHRvIGEgRDY1IHdoaXRl
IHBvaW50LgotICAgIHJldHVybiBjb252ZXJ0RnJvbUQ1MFdoaXRlUG9pbnRUb0Q2NVdoaXRlUG9p
bnQocmVzdWx0KTsKKyAgICByZXR1cm4geyB4LCB5LCB6LCBjb2xvci5hbHBoYSB9OwogfQogCi1M
YWI8ZmxvYXQ+IHRvTGFiKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0xhYjxmbG9hdD4gdG9M
YWIoY29uc3QgTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikKIHsKLSAgICAvLyBXZSBl
eHBlY3QgWFlaQSBjb2xvcnMgdG8gYmUgdXNpbmcgdGhlIEQ2NSB3aGl0ZSBwb2ludCwgdW5saWtl
IExhYiwgd2hpY2ggdXNlcyBhCi0gICAgLy8gRDUwIHdoaXRlIHBvaW50LCBzbyBhcyBhIGZpcnN0
IHN0ZXAsIHVzZSB0aGUgQnJhZGZvcmQgdHJhbnNmb3JtIHRvIGNvbnZlcnQgdGhlCi0gICAgLy8g
aW5jb21pbmcgWFlaQSBjb2xvciB0byBENTAgd2hpdGUgcG9pbnQuCi0gICAgYXV0byBjb2xvcldp
dGhENTBXaGl0ZVBvaW50ID0gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBXaGl0ZVBvaW50
KGNvbG9yKTsKLQotICAgIGZsb2F0IHggPSBjb2xvcldpdGhENTBXaGl0ZVBvaW50LnggLyBENTBX
aGl0ZVZhbHVlc1swXTsKLSAgICBmbG9hdCB5ID0gY29sb3JXaXRoRDUwV2hpdGVQb2ludC55IC8g
RDUwV2hpdGVWYWx1ZXNbMV07Ci0gICAgZmxvYXQgeiA9IGNvbG9yV2l0aEQ1MFdoaXRlUG9pbnQu
eiAvIEQ1MFdoaXRlVmFsdWVzWzJdOworICAgIGZsb2F0IHggPSBjb2xvci54IC8gRDUwV2hpdGVW
YWx1ZXNbMF07CisgICAgZmxvYXQgeSA9IGNvbG9yLnkgLyBENTBXaGl0ZVZhbHVlc1sxXTsKKyAg
ICBmbG9hdCB6ID0gY29sb3IueiAvIEQ1MFdoaXRlVmFsdWVzWzJdOwogCiAgICAgYXV0byBmVHJh
bnNmb3JtID0gW10oZmxvYXQgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHZhbHVlID4gTEFCZSA/
IHN0ZDo6Y2JydCh2YWx1ZSkgOiAoTEFCayAqIHZhbHVlICsgMTYuMGYpIC8gMTE2LjBmOwpAQCAt
NDYzLDcgKzQ0NCw3IEBAIExhYjxmbG9hdD4gdG9MYWIoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG8K
ICAgICBmbG9hdCBhID0gNTAwLjBmICogKGYwIC0gZjEpOwogICAgIGZsb2F0IGIgPSAyMDAuMGYg
KiAoZjEgLSBmMik7CiAKLSAgICByZXR1cm4geyBsaWdodG5lc3MsIGEsIGIsIGNvbG9yV2l0aEQ1
MFdoaXRlUG9pbnQuYWxwaGEgfTsKKyAgICByZXR1cm4geyBsaWdodG5lc3MsIGEsIGIsIGNvbG9y
LmFscGhhIH07CiB9CiAKIApAQCAtNDk5LDk2ICs0ODAsOTYgQEAgTGFiPGZsb2F0PiB0b0xhYihj
b25zdCBMQ0hBPGZsb2F0PiYgY29sbwogCiAvLyAtIEE5OFJHQiBjb21iaW5hdGlvbiBmdW5jdGlv
bnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikKK0E5
OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgQTk4UkdCPGZsb2F0PiYgY29s
b3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhckE5OFJHQihjb2xvcikpOwogfQogCi1B
OThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK0E5OFJHQjxm
bG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikK
IHsKICAgICByZXR1cm4gdG9BOThSR0IodG9MaW5lYXJBOThSR0IoY29sb3IpKTsKIH0KIAogLy8g
LSBEaXNwbGF5UDMgY29tYmluYXRpb24gZnVuY3Rpb25zLgogCi1YWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgRGlzcGxheVAzPGZsb2F0PiYgY29sb3IpCitEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IERpc3BsYXlQMzxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVy
biB0b1hZWkEodG9MaW5lYXJEaXNwbGF5UDMoY29sb3IpKTsKIH0KIAotRGlzcGxheVAzPGZsb2F0
PiB0b0Rpc3BsYXlQMyhjb25zdCBYWVpBPGZsb2F0PiYgY29sb3IpCitEaXNwbGF5UDM8ZmxvYXQ+
IHRvRGlzcGxheVAzKGNvbnN0IERpc3BsYXlQMzxmbG9hdD46OlJlZmVyZW5jZVhZWiYgY29sb3Ip
CiB7CiAgICAgcmV0dXJuIHRvRGlzcGxheVAzKHRvTGluZWFyRGlzcGxheVAzKGNvbG9yKSk7CiB9
CiAKIC8vIC0gRXh0ZW5kZWRTUkdCIGNvbWJpbmF0aW9uIGZ1bmN0aW9ucy4KIAotWFlaQTxmbG9h
dD4gdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK0V4dGVuZGVkU1JH
QkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+
JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9YWVpBKHRvTGluZWFyRXh0ZW5kZWRTUkdCQShjb2xv
cikpOwogfQogCi1FeHRlbmRlZFNSR0JBPGZsb2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgWFla
QTxmbG9hdD4mIGNvbG9yKQorRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNv
bnN0IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomIGNvbG9yKQogewogICAgIHJl
dHVybiB0b0V4dGVuZGVkU1JHQkEodG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbG9yKSk7CiB9CiAK
IC8vIC0gSFNMQSBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShj
b25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCitIU0xBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFla
QShjb25zdCBIU0xBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b1NSR0JB
KGNvbG9yKSk7CiB9CiAKLUhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYgY29s
b3IpCitIU0xBPGZsb2F0PiB0b0hTTEEoY29uc3QgSFNMQTxmbG9hdD46OlJlZmVyZW5jZVhZWiYg
Y29sb3IpCiB7CiAgICAgcmV0dXJuIHRvSFNMQSh0b1NSR0JBKGNvbG9yKSk7CiB9CiAKIC8vIC0g
TENIQSBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBM
Q0hBPGZsb2F0PiYgY29sb3IpCitMQ0hBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25z
dCBMQ0hBPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xhYihjb2xvcikp
OwogfQogCi1MQ0hBPGZsb2F0PiB0b0xDSEEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKQorTENI
QTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomIGNvbG9yKQog
ewogICAgIHJldHVybiB0b0xDSEEodG9MYWIoY29sb3IpKTsKIH0KIAogLy8gLSBQcm9QaG90b1JH
QiBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBQcm9Q
aG90b1JHQjxmbG9hdD4mIGNvbG9yKQorUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVog
dG9YWVpBKGNvbnN0IFByb1Bob3RvUkdCPGZsb2F0PiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRv
WFlaQSh0b0xpbmVhclByb1Bob3RvUkdCKGNvbG9yKSk7CiB9CiAKLVByb1Bob3RvUkdCPGZsb2F0
PiB0b1Byb1Bob3RvUkdCKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1Byb1Bob3RvUkdCPGZs
b2F0PiB0b1Byb1Bob3RvUkdCKGNvbnN0IFByb1Bob3RvUkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFla
JiBjb2xvcikKIHsKICAgICByZXR1cm4gdG9Qcm9QaG90b1JHQih0b0xpbmVhclByb1Bob3RvUkdC
KGNvbG9yKSk7CiB9CiAKIC8vIC0gUmVjMjAyMCBjb21iaW5hdGlvbiBmdW5jdGlvbnMuCiAKLVhZ
WkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpCitSZWMyMDIwPGZs
b2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpCiB7
CiAgICAgcmV0dXJuIHRvWFlaQSh0b0xpbmVhclJlYzIwMjAoY29sb3IpKTsKIH0KIAotUmVjMjAy
MDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IFhZWkE8ZmxvYXQ+JiBjb2xvcikKK1JlYzIwMjA8Zmxv
YXQ+IHRvUmVjMjAyMChjb25zdCBSZWMyMDIwPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJiBjb2xvcikK
IHsKICAgICByZXR1cm4gdG9SZWMyMDIwKHRvTGluZWFyUmVjMjAyMChjb2xvcikpOwogfQogCiAv
LyAtIFNSR0IgY29tYmluYXRpb24gZnVuY3Rpb25zLgogCi1YWVpBPGZsb2F0PiB0b1hZWkEoY29u
c3QgU1JHQkE8ZmxvYXQ+JiBjb2xvcikKK1NSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFla
QShjb25zdCBTUkdCQTxmbG9hdD4mIGNvbG9yKQogewogICAgIHJldHVybiB0b1hZWkEodG9MaW5l
YXJTUkdCQShjb2xvcikpOwogfQogCi1TUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBYWVpBPGZs
b2F0PiYgY29sb3IpCitTUkdCQTxmbG9hdD4gdG9TUkdCQShjb25zdCBTUkdCQTxmbG9hdD46OlJl
ZmVyZW5jZVhZWiYgY29sb3IpCiB7CiAgICAgcmV0dXJuIHRvU1JHQkEodG9MaW5lYXJTUkdCQShj
b2xvcikpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JD
b252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3MjEyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSwxNiArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBBbGwgY29sb3IgdHlw
ZXMgbXVzdCBhdCBsZWFzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBjb252ZXJzaW9ucyB0byBh
bmQgZnJvbSB0aGUgWFlaQSBjb2xvciBzcGFjZQorLy8gQWxsIGNvbG9yIHR5cGVzIG11c3QgYXQg
bGVhc3QgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgY29udmVyc2lvbnMgdG8gYW5kIGZyb20gdGhl
aXIgcmVmZXJlbmNlIFhZWiBjb2xvciBzcGFjZQogLy8KLS8vICAgIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBgQ29sb3JUeXBlYDxmbG9hdD4mKTsKLS8vICAgIGBDb2xvclR5cGVgPGZsb2F0PiB0
b2BDb2xvclR5cGVgKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CisvLyAgICBgQ29sb3JUeXBlYDxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgYENvbG9yVHlwZWA8ZmxvYXQ+Jik7CisvLyAg
ICBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBlYChjb25zdCBgQ29sb3JUeXBlYDxmbG9h
dD46OlJlZmVyZW5jZVhZWiYpOwogLy8KIC8vIGFzIHdlbGwgYXMgYW4gaWRlbnRpdHkgY29udmVy
c2lvbgogLy8KIC8vICAgIGNvbnN0ZXhwciBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBl
YChjb25zdCBgQ29sb3JUeXBlYDxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogLy8K
LS8vIGFuZCBhIGdlbmVyaWMgY29udmVyc2lvbiB1dGlsaXppbmcgYSBjb252ZXJzaW9uIHRoZSBY
WVogY29sb3Igc3BhY2UKKy8vIGFuZCBhIGdlbmVyaWMgY29udmVyc2lvbiB1dGlsaXppbmcgYSBj
b252ZXJzaW9uIHRvIHRoZSByZWZlcmVuY2UgWFlaIGNvbG9yIHNwYWNlIGFuZCBhIGNocm9tYXRp
YworLy8gYWRhcGF0YXRpb24gaWYgdGhlIHdoaXRlIHBvaW50cyBkaWZmZXIKIC8vCiAvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBgQ29sb3JUeXBlYDxmbG9hdD4gdG9gQ29sb3JUeXBlYChjb25z
dCBUJiBjb2xvcikKIC8vCkBAIC00Nyw5NyArNDgsMTE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogCiAvLyBBOThSR0IKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBB
OThSR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+IHRvQTk4UkdCKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBBOThSR0I8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IEE5OFJHQjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIEE5OFJH
QjxmbG9hdD4gdG9BOThSR0IoY29uc3QgQTk4UkdCPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAv
LyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4gdG9MaW5lYXJB
OThSR0IoY29uc3QgQTk4UkdCPGZsb2F0PiYpOwogCiAvLyBEaXNwbGF5UDMKLVdFQkNPUkVfRVhQ
T1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBEaXNwbGF5UDM8ZmxvYXQ+Jik7Ci1XRUJDT1JF
X0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7
CitXRUJDT1JFX0VYUE9SVCBEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNv
bnN0IERpc3BsYXlQMzxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIERpc3BsYXlQMzxmbG9hdD4g
dG9EaXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBB
ZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJE
aXNwbGF5UDMoY29uc3QgRGlzcGxheVAzPGZsb2F0PiYpOwogCiAvLyBFeHRlbmRlZFNSR0JBCi1X
RUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9h
dD4mKTsKLVdFQkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdC
QShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdCQTxmbG9h
dD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgRXh0ZW5kZWRTUkdCQTxmbG9hdD4mKTsKK1dF
QkNPUkVfRVhQT1JUIEV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvRXh0ZW5kZWRTUkdCQShjb25zdCBF
eHRlbmRlZFNSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdFQkNP
UkVfRVhQT1JUIExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+IHRvTGluZWFyRXh0ZW5kZWRTUkdC
QShjb25zdCBFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOwogCiAvLyBIU0xBCi1XRUJDT1JFX0VYUE9S
VCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JU
IEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
SFNMQTxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgSFNMQTxmbG9hdD4mKTsKK1dF
QkNPUkVfRVhQT1JUIEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25zdCBIU0xBPGZsb2F0Pjo6UmVmZXJl
bmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdFQkNPUkVfRVhQT1JUIFNSR0JBPGZsb2F0PiB0b1NS
R0JBKGNvbnN0IEhTTEE8ZmxvYXQ+Jik7CiAKIC8vIExDSEEKLVdFQkNPUkVfRVhQT1JUIFhZWkE8
ZmxvYXQ+IHRvWFlaQShjb25zdCBMQ0hBPGZsb2F0PiYpOwotV0VCQ09SRV9FWFBPUlQgTENIQTxm
bG9hdD4gdG9MQ0hBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMQ0hBPGZs
b2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBMQ0hBPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTENIQTxmbG9hdD4gdG9MQ0hBKGNvbnN0IExDSEE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVom
KTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGFiPGZsb2F0PiB0b0xhYihjb25zdCBM
Q0hBPGZsb2F0PiYpOwogCiAvLyBMYWIKLVdFQkNPUkVfRVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFla
QShjb25zdCBMYWI8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+IHRvTGFiKGNv
bnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMYWI8ZmxvYXQ+OjpSZWZlcmVuY2VY
WVogdG9YWVpBKGNvbnN0IExhYjxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExhYjxmbG9hdD4g
dG9MYWIoY29uc3QgTGFiPGZsb2F0Pjo6UmVmZXJlbmNlWFlaJik7CiAvLyBBZGRpdGlvbnMKIFdF
QkNPUkVfRVhQT1JUIExDSEE8ZmxvYXQ+IHRvTENIQShjb25zdCBMYWI8ZmxvYXQ+Jik7CiAKIC8v
IExpbmVhckE5OFJHQgotV0VCQ09SRV9FWFBPUlQgWFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExp
bmVhckE5OFJHQjxmbG9hdD4mKTsKLVdFQkNPUkVfRVhQT1JUIExpbmVhckE5OFJHQjxmbG9hdD4g
dG9MaW5lYXJBOThSR0IoY29uc3QgWFlaQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVh
ckE5OFJHQjxmbG9hdD46OlJlZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyQTk4UkdCPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyQTk4UkdCPGZsb2F0PiB0b0xpbmVhckE5OFJH
Qihjb25zdCBMaW5lYXJBOThSR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgQTk4UkdCPGZsb2F0PiB0b0E5OFJHQihjb25zdCBMaW5lYXJBOThS
R0I8ZmxvYXQ+JiBjb2xvcik7CiAKIC8vIExpbmVhckRpc3BsYXlQMwotV0VCQ09SRV9FWFBPUlQg
WFlaQTxmbG9hdD4gdG9YWVpBKGNvbnN0IExpbmVhckRpc3BsYXlQMzxmbG9hdD4mKTsKLVdFQkNP
UkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD4gdG9MaW5lYXJEaXNwbGF5UDMoY29uc3Qg
WFlaQTxmbG9hdD4mKTsKK1dFQkNPUkVfRVhQT1JUIExpbmVhckRpc3BsYXlQMzxmbG9hdD46OlJl
ZmVyZW5jZVhZWiB0b1hZWkEoY29uc3QgTGluZWFyRGlzcGxheVAzPGZsb2F0PiYpOworV0VCQ09S
RV9FWFBPUlQgTGluZWFyRGlzcGxheVAzPGZsb2F0PiB0b0xpbmVhckRpc3BsYXlQMyhjb25zdCBM
aW5lYXJEaXNwbGF5UDM8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgRGlzcGxheVAzPGZsb2F0PiB0b0Rpc3BsYXlQMyhjb25zdCBMaW5lYXJEaXNw
bGF5UDM8ZmxvYXQ+Jik7CiAKIC8vIExpbmVhckV4dGVuZGVkU1JHQkEKLVdFQkNPUkVfRVhQT1JU
IFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNSR0JBPGZsb2F0PiYpOwot
V0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4gdG9MaW5lYXJFeHRlbmRl
ZFNSR0JBKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJFeHRlbmRl
ZFNSR0JBPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBMaW5lYXJFeHRlbmRlZFNS
R0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyRXh0ZW5kZWRTUkdCQTxmbG9hdD4g
dG9MaW5lYXJFeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+OjpS
ZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgRXh0ZW5kZWRTUkdC
QTxmbG9hdD4gdG9FeHRlbmRlZFNSR0JBKGNvbnN0IExpbmVhckV4dGVuZGVkU1JHQkE8ZmxvYXQ+
Jik7CiAKIC8vIExpbmVhclByb1Bob3RvUkdCCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBM
aW5lYXJQcm9QaG90b1JHQjxmbG9hdD4gdG9MaW5lYXJQcm9QaG90b1JHQihjb25zdCBYWVpBPGZs
b2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVu
Y2VYWVogdG9YWVpBKGNvbnN0IExpbmVhclByb1Bob3RvUkdCPGZsb2F0PiYpOworV0VCQ09SRV9F
WFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvTGluZWFyUHJvUGhvdG9SR0IoY29uc3Qg
TGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwog
V0VCQ09SRV9FWFBPUlQgUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvUHJvUGhvdG9SR0IoY29uc3QgTGlu
ZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7CiAKIC8vIExpbmVhclJlYzIwMjAKLVdFQkNPUkVfRVhQ
T1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBMaW5lYXJSZWMyMDIwPGZsb2F0PiYpOwotV0VC
Q09SRV9FWFBPUlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IFhZ
WkE8ZmxvYXQ+Jik7CitXRUJDT1JFX0VYUE9SVCBMaW5lYXJSZWMyMDIwPGZsb2F0Pjo6UmVmZXJl
bmNlWFlaIHRvWFlaQShjb25zdCBMaW5lYXJSZWMyMDIwPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IExpbmVhclJlYzIw
MjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQg
UmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IExpbmVhclJlYzIwMjA8ZmxvYXQ+Jik7CiAK
IC8vIExpbmVhclNSR0JBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEoY29uc3Qg
TGluZWFyU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBMaW5lYXJTUkdCQTxmbG9hdD4g
dG9MaW5lYXJTUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFy
U1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IExpbmVhclNSR0JBPGZsb2F0
PiYpOworV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGluZWFyU1JHQkEoY29u
c3QgTGluZWFyU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgTGluZWFyU1JHQkE8ZmxvYXQ+
Jik7CiAKIC8vIFByb1Bob3RvUkdCCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0b1hZWkEo
Y29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBQcm9QaG90b1JHQjxm
bG9hdD4gdG9Qcm9QaG90b1JHQihjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQg
UHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IFByb1Bob3RvUkdC
PGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvUHJvUGhvdG9S
R0IoY29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9u
cwogV0VCQ09SRV9FWFBPUlQgTGluZWFyUHJvUGhvdG9SR0I8ZmxvYXQ+IHRvTGluZWFyUHJvUGhv
dG9SR0IoY29uc3QgUHJvUGhvdG9SR0I8ZmxvYXQ+Jik7CiAKIC8vIFJlYzIwMjAKLVdFQkNPUkVf
RVhQT1JUIFhZWkE8ZmxvYXQ+IHRvWFlaQShjb25zdCBSZWMyMDIwPGZsb2F0PiYpOwotV0VCQ09S
RV9FWFBPUlQgUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNvbnN0IFhZWkE8ZmxvYXQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBSZWMyMDIwPGZsb2F0Pjo6UmVmZXJlbmNlWFlaIHRvWFlaQShjb25zdCBS
ZWMyMDIwPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIw
KGNvbnN0IFJlYzIwMjA8ZmxvYXQ+OjpSZWZlcmVuY2VYWVomKTsKIC8vIEFkZGl0aW9ucwogV0VC
Q09SRV9FWFBPUlQgTGluZWFyUmVjMjAyMDxmbG9hdD4gdG9MaW5lYXJSZWMyMDIwKGNvbnN0IFJl
YzIwMjA8ZmxvYXQ+Jik7CiAKIC8vIFNSR0JBCi1XRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0PiB0
b1hZWkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7Ci1XRUJDT1JFX0VYUE9SVCBTUkdCQTxmbG9hdD4g
dG9TUkdCQShjb25zdCBYWVpBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBPUlQgU1JHQkE8ZmxvYXQ+
OjpSZWZlcmVuY2VYWVogdG9YWVpBKGNvbnN0IFNSR0JBPGZsb2F0PiYpOworV0VCQ09SRV9FWFBP
UlQgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+OjpSZWZlcmVuY2VYWVom
KTsKIC8vIEFkZGl0aW9ucwogV0VCQ09SRV9FWFBPUlQgTGluZWFyU1JHQkE8ZmxvYXQ+IHRvTGlu
ZWFyU1JHQkEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiBXRUJDT1JFX0VYUE9SVCBIU0xBPGZsb2F0
PiB0b0hTTEEoY29uc3QgU1JHQkE8ZmxvYXQ+Jik7CiAKIAorLy8gQ2hyb21hdGljIEFkYXB0YXRp
b24gY29udmVyc2lvbnMuCitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpE
NjU+IGNvbnZlcnRGcm9tRDUwV2hpdGVQb2ludFRvRDY1V2hpdGVQb2ludChjb25zdCBYWVpBPGZs
b2F0LCBXaGl0ZVBvaW50OjpENTA+Jik7CitXRUJDT1JFX0VYUE9SVCBYWVpBPGZsb2F0LCBXaGl0
ZVBvaW50OjpENTA+IGNvbnZlcnRGcm9tRDY1V2hpdGVQb2ludFRvRDUwV2hpdGVQb2ludChjb25z
dCBYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENjU+Jik7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IFdoaXRlUG9pbnQgaW5wdXRXaGl0ZVBvaW50PiBjb25zdGV4cHIgdHlwZW5hbWUgVDo6UmVmZXJl
bmNlWFlaIHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uKGNvbnN0IFhZWkE8ZmxvYXQsIGlucHV0
V2hpdGVQb2ludD4mIGNvbG9yKQoreworICAgIGNvbnN0ZXhwciBXaGl0ZVBvaW50IG91dHB1dFdo
aXRlUG9pbnQgPSBUOjpSZWZlcmVuY2VYWVo6OndoaXRlUG9pbnQ7CisKKyAgICBpZiBjb25zdGV4
cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gaW5wdXRXaGl0ZVBvaW50KQorICAgICAgICByZXR1cm4g
Y29sb3I7CisgICAgZWxzZSBpZiBjb25zdGV4cHIgKG91dHB1dFdoaXRlUG9pbnQgPT0gV2hpdGVQ
b2ludDo6RDUwKQorICAgICAgICByZXR1cm4gY29udmVydEZyb21ENjVXaGl0ZVBvaW50VG9ENTBX
aGl0ZVBvaW50KGNvbG9yKTsKKyAgICBlbHNlIGlmIGNvbnN0ZXhwciAob3V0cHV0V2hpdGVQb2lu
dCA9PSBXaGl0ZVBvaW50OjpENjUpCisgICAgICAgIHJldHVybiBjb252ZXJ0RnJvbUQ1MFdoaXRl
UG9pbnRUb0Q2NVdoaXRlUG9pbnQoY29sb3IpOworfQorCisKIC8vIElkZW50aXR5IGNvbnZlcnNp
b25zICh1c2VmdWwgZm9yIGdlbmVyaWMgY29udGV4dHMpLgogCiBjb25zdGV4cHIgQTk4UkdCPGZs
b2F0PiB0b0E5OFJHQihjb25zdCBBOThSR0I8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7
IH0KQEAgLTE1NSw4NyArMTczLDg3IEBAIGNvbnN0ZXhwciBMaW5lYXJTUkdCQTxmbG9hdD4gdG9M
aW5lYXJTUkcKIGNvbnN0ZXhwciBQcm9QaG90b1JHQjxmbG9hdD4gdG9Qcm9QaG90b1JHQihjb25z
dCBQcm9QaG90b1JHQjxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQogY29uc3RleHBy
IFJlYzIwMjA8ZmxvYXQ+IHRvUmVjMjAyMChjb25zdCBSZWMyMDIwPGZsb2F0PiYgY29sb3IpIHsg
cmV0dXJuIGNvbG9yOyB9CiBjb25zdGV4cHIgU1JHQkE8ZmxvYXQ+IHRvU1JHQkEoY29uc3QgU1JH
QkE8ZmxvYXQ+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KLWNvbnN0ZXhwciBYWVpBPGZsb2F0
PiB0b1hZWkEoY29uc3QgWFlaQTxmbG9hdD4mIGNvbG9yKSB7IHJldHVybiBjb2xvcjsgfQordGVt
cGxhdGU8V2hpdGVQb2ludCBXPiBjb25zdGV4cHIgWFlaQTxmbG9hdCwgVz4gdG9YWVpBKGNvbnN0
IFhZWkE8ZmxvYXQsIFc+JiBjb2xvcikgeyByZXR1cm4gY29sb3I7IH0KIAogCiAvLyBGYWxsYmFj
ayBjb252ZXJzaW9ucy4KIAotLy8gQWxsIHR5cGVzIGFyZSByZXF1aXJlZCB0byBoYXZlIGEgY29u
dmVyc2lvbiB0byBYWVpBLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZCB0byB3b3JrIGlmCi0vLyBh
bm90aGVyIG92ZXJsb2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgorLy8gQWxsIHR5cGVzIGFy
ZSByZXF1aXJlZCB0byBoYXZlIGEgY29udmVyc2lvbiB0byB0aGVpciByZWZlcmVuY2UgWFlaIHNw
YWNlLCBzbyB0aGVzZSBhcmUgZ3VhcmFudGVlZAorLy8gdG8gd29yayBpZiBhbm90aGVyIG92ZXJs
b2FkIGlzIG5vdCBhbHJlYWR5IHByb3ZpZGVkLgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBBOThS
R0I8ZmxvYXQ+IHRvQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0E5OFJH
Qih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9BOThSR0IocGVyZm9ybUNob21hdGljQWRh
cGF0YXRpb248QTk4UkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBEaXNwbGF5UDM8ZmxvYXQ+IHRvRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0Rpc3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9E
aXNwbGF5UDMocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248RGlzcGxheVAzPGZsb2F0Pj4odG9Y
WVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0V4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvRXh0
ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9FeHRlbmRlZFNSR0JBKHBl
cmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pih0b1hZWkEoY29s
b3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IEhTTEE8ZmxvYXQ+IHRvSFNMQShjb25z
dCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9IU0xBKHRvWFlaQShjb2xvcikpOworICAgIHJl
dHVybiB0b0hTTEEocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248SFNMQTxmbG9hdD4+KHRvWFla
QShjb2xvcikpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTENIQTxmbG9hdD4gdG9MQ0hB
KGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xDSEEodG9YWVpBKGNvbG9yKSk7Cisg
ICAgcmV0dXJuIHRvTENIQShwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxMQ0hBPGZsb2F0Pj4o
dG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMYWI8ZmxvYXQ+IHRv
TGFiKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xhYih0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9MYWIocGVyZm9ybUNob21hdGljQWRhcGF0YXRpb248TGFiPGZsb2F0Pj4o
dG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJBOThSR0I8
ZmxvYXQ+IHRvTGluZWFyQTk4UkdCKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xp
bmVhckE5OFJHQih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5lYXJBOThSR0IocGVy
Zm9ybUNob21hdGljQWRhcGF0YXRpb248TGluZWFyQTk4UkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9y
KSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJEaXNwbGF5UDM8ZmxvYXQ+IHRv
TGluZWFyRGlzcGxheVAzKGNvbnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b0xpbmVhckRp
c3BsYXlQMyh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5lYXJEaXNwbGF5UDMocGVy
Zm9ybUNob21hdGljQWRhcGF0YXRpb248TGluZWFyRGlzcGxheVAzPGZsb2F0Pj4odG9YWVpBKGNv
bG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJFeHRlbmRlZFNSR0JBPGZs
b2F0PiB0b0xpbmVhckV4dGVuZGVkU1JHQkEoY29uc3QgVCYgY29sb3IpCiB7Ci0gICAgcmV0dXJu
IHRvTGluZWFyRXh0ZW5kZWRTUkdCQSh0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9MaW5l
YXJFeHRlbmRlZFNSR0JBKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExpbmVhckV4dGVuZGVk
U1JHQkE8ZmxvYXQ+Pih0b1hZWkEoY29sb3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IExpbmVhclByb1Bob3RvUkdCPGZsb2F0PiB0b0xpbmVhclByb1Bob3RvUkdCKGNvbnN0IFQmIGNv
bG9yKQogewotICAgIHJldHVybiB0b0xpbmVhclByb1Bob3RvUkdCKHRvWFlaQShjb2xvcikpOwor
ICAgIHJldHVybiB0b0xpbmVhclByb1Bob3RvUkdCKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9u
PExpbmVhclByb1Bob3RvUkdCPGZsb2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBMaW5lYXJSZWMyMDIwPGZsb2F0PiB0b0xpbmVhclJlYzIwMjAoY29uc3Qg
VCYgY29sb3IpCiB7Ci0gICAgcmV0dXJuIHRvTGluZWFyUmVjMjAyMCh0b1hZWkEoY29sb3IpKTsK
KyAgICByZXR1cm4gdG9MaW5lYXJSZWMyMDIwKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExp
bmVhclJlYzIwMjA8ZmxvYXQ+Pih0b1hZWkEoY29sb3IpKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IExpbmVhclNSR0JBPGZsb2F0PiB0b0xpbmVhclNSR0JBKGNvbnN0IFQmIGNvbG9yKQog
ewotICAgIHJldHVybiB0b0xpbmVhclNSR0JBKHRvWFlaQShjb2xvcikpOworICAgIHJldHVybiB0
b0xpbmVhclNSR0JBKHBlcmZvcm1DaG9tYXRpY0FkYXBhdGF0aW9uPExpbmVhclNSR0JBPGZsb2F0
Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQcm9QaG90b1JH
QjxmbG9hdD4gdG9Qcm9QaG90b1JHQihjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9Q
cm9QaG90b1JHQih0b1hZWkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9Qcm9QaG90b1JHQihwZXJm
b3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxQcm9QaG90b1JHQjxmbG9hdD4+KHRvWFlaQShjb2xvcikp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVjMjAyMDxmbG9hdD4gdG9SZWMyMDIwKGNv
bnN0IFQmIGNvbG9yKQogewotICAgIHJldHVybiB0b1JlYzIwMjAodG9YWVpBKGNvbG9yKSk7Cisg
ICAgcmV0dXJuIHRvUmVjMjAyMChwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlvbjxSZWMyMDIwPGZs
b2F0Pj4odG9YWVpBKGNvbG9yKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTUkdCQTxm
bG9hdD4gdG9TUkdCQShjb25zdCBUJiBjb2xvcikKIHsKLSAgICByZXR1cm4gdG9TUkdCQSh0b1hZ
WkEoY29sb3IpKTsKKyAgICByZXR1cm4gdG9TUkdCQShwZXJmb3JtQ2hvbWF0aWNBZGFwYXRhdGlv
bjxTUkdCQTxmbG9hdD4+KHRvWFlaQShjb2xvcikpKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCShyZXZpc2lvbiAyNzIxMjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVt
IGNsYXNzIFdoaXRlUG9pbnQgeyBENTAsIEQ2NSB9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IEE5OFJHQjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGlzcGxheVAzOwogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBFeHRlbmRlZFNSR0JBOwpAQCAtNDYsNyArNDgsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZT4gc3RydWN0IExpbmVhclNSR0JBOwogdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBQcm9QaG90b1JHQjsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgUmVjMjAyMDsKIHRl
bXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgU1JHQkE7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0
IFhZWkE7Cit0ZW1wbGF0ZTx0eXBlbmFtZSwgV2hpdGVQb2ludD4gc3RydWN0IFhZWkE7CiAKIC8v
IE1BUks6IE1ha2UgZnVuY3Rpb25zLgogCkBAIC0yMjUsNiArMjI3LDcgQEAgdGVtcGxhdGU8dGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIENvbG9yVAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEE5OFJHQiA6IFJHQkFUeXBlPEE5OFJHQiwgVCwgUkdCTW9kZWw8VD4+IHsKICAgICB1c2luZyBS
R0JBVHlwZTxBOThSR0IsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAgICAgdXNpbmcgTGlu
ZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJBOThSR0I8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFla
ID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENjU+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
b2xvclNwYWNlID0gQ29sb3JTcGFjZTo6QTk4UkdCOwogfTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IEE5OFJHQihULCBULCBULCBUKSAtPiBBOThSR0I8VD47CkBAIC0yMzIsNiArMjM1LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gQTk4UkdCKFQsIFQsIFQsIFQpIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IERpc3BsYXlQMyA6IFJHQkFUeXBlPERpc3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+
IHsKICAgICB1c2luZyBSR0JBVHlwZTxEaXNwbGF5UDMsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5
cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJEaXNwbGF5UDM8VD47Cisg
ICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENjU+OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JTcGFjZTo6RGlzcGxheVAzOwog
fTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IERpc3BsYXlQMyhULCBULCBULCBUKSAtPiBEaXNwbGF5
UDM8VD47CkBAIC0yMzksNDIgKzI0Myw0OSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBEaXNwbGF5
UDMoVCwgVCwgVCwgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRXh0ZW5kZWRTUkdCQSA6
IFJHQkFUeXBlPEV4dGVuZGVkU1JHQkEsIFQsIEV4dGVuZGVkUkdCTW9kZWw8VD4+IHsKICAgICB1
c2luZyBSR0JBVHlwZTxFeHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+Pjo6UkdC
QVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJFeHRlbmRlZFNSR0JB
PFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsK
IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFeHRlbmRlZFNSR0JBKFQsIFQsIFQsIFQpIC0+IEV4
dGVuZGVkU1JHQkE8VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJBOThS
R0IgOiBSR0JBVHlwZTxMaW5lYXJBOThSR0IsIFQsIFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcg
UkdCQVR5cGU8TGluZWFyQTk4UkdCLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwogICAgIHVz
aW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gQTk4UkdCPFQ+OworICAgIHVzaW5nIFJlZmVy
ZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBMaW5lYXJBOThSR0IoVCwgVCwgVCwgVCkgLT4gTGluZWFyQTk4UkdCPFQ+OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGluZWFyRGlzcGxheVAzIDogUkdCQVR5cGU8TGluZWFy
RGlzcGxheVAzLCBULCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhckRp
c3BsYXlQMywgVCwgUkdCTW9kZWw8VD4+OjpSR0JBVHlwZTsKICAgICB1c2luZyBHYW1tYUVuY29k
ZWRDb3VudGVycGFydCA9IERpc3BsYXlQMzxUPjsKKyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBY
WVpBPFQsIFdoaXRlUG9pbnQ6OkQ2NT47CiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFy
RGlzcGxheVAzKFQsIFQsIFQsIFQpIC0+IExpbmVhckRpc3BsYXlQMzxUPjsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IExpbmVhckV4dGVuZGVkU1JHQkEgOiBSR0JBVHlwZTxMaW5lYXJF
eHRlbmRlZFNSR0JBLCBULCBFeHRlbmRlZFJHQk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcgUkdCQVR5
cGU8TGluZWFyRXh0ZW5kZWRTUkdCQSwgVCwgRXh0ZW5kZWRSR0JNb2RlbDxUPj46OlJHQkFUeXBl
OwogICAgIHVzaW5nIEdhbW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gRXh0ZW5kZWRTUkdCQTxUPjsK
KyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6OkQ2NT47CiB9Owog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gTGluZWFyRXh0ZW5kZWRTUkdCQShULCBULCBULCBUKSAtPiBM
aW5lYXJFeHRlbmRlZFNSR0JBPFQ+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTGlu
ZWFyUHJvUGhvdG9SR0IgOiBSR0JBVHlwZTxMaW5lYXJQcm9QaG90b1JHQiwgVCwgUkdCTW9kZWw8
VD4+IHsKICAgICB1c2luZyBSR0JBVHlwZTxMaW5lYXJQcm9QaG90b1JHQiwgVCwgUkdCTW9kZWw8
VD4+OjpSR0JBVHlwZTsKICAgICB1c2luZyBHYW1tYUVuY29kZWRDb3VudGVycGFydCA9IFByb1Bo
b3RvUkdCPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6
RDUwPjsKIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJQcm9QaG90b1JHQihULCBULCBU
LCBUKSAtPiBMaW5lYXJQcm9QaG90b1JHQjxUPjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IExpbmVhclJlYzIwMjAgOiBSR0JBVHlwZTxMaW5lYXJSZWMyMDIwLCBULCBSR0JNb2RlbDxU
Pj4gewogICAgIHVzaW5nIFJHQkFUeXBlPExpbmVhclJlYzIwMjAsIFQsIFJHQk1vZGVsPFQ+Pjo6
UkdCQVR5cGU7CiAgICAgdXNpbmcgR2FtbWFFbmNvZGVkQ291bnRlcnBhcnQgPSBSZWMyMDIwPFQ+
OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKIH07
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMaW5lYXJSZWMyMDIwKFQsIFQsIFQsIFQpIC0+IExpbmVh
clJlYzIwMjA8VD47CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBMaW5lYXJTUkdCQSA6
IFJHQkFUeXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFU
eXBlPExpbmVhclNSR0JBLCBULCBSR0JNb2RlbDxUPj46OlJHQkFUeXBlOwogICAgIHVzaW5nIEdh
bW1hRW5jb2RlZENvdW50ZXJwYXJ0ID0gU1JHQkE8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFla
ID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENjU+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBj
b2xvclNwYWNlID0gQ29sb3JTcGFjZTo6TGluZWFyUkdCOwogfTsKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IExpbmVhclNSR0JBKFQsIFQsIFQsIFQpIC0+IExpbmVhclNSR0JBPFQ+OwpAQCAtMjgyLDYg
KzI5Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExpbmVhclNSR0JBKFQsIFQsIFQKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQcm9QaG90b1JHQiA6IFJHQkFUeXBlPFByb1Bob3RvUkdC
LCBULCBSR0JNb2RlbDxUPj4gewogICAgIHVzaW5nIFJHQkFUeXBlPFByb1Bob3RvUkdCLCBULCBS
R0JNb2RlbDxUPj46OlJHQkFUeXBlOwogICAgIHVzaW5nIExpbmVhckNvdW50ZXJwYXJ0ID0gTGlu
ZWFyUHJvUGhvdG9SR0I8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0
ZVBvaW50OjpENTA+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29s
b3JTcGFjZTo6UHJvUGhvdG9SR0I7CiB9OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gUHJvUGhvdG9S
R0IoVCwgVCwgVCwgVCkgLT4gUHJvUGhvdG9SR0I8VD47CkBAIC0yODksNiArMzAxLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gUHJvUGhvdG9SR0IoVCwgVCwgVAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IFJlYzIwMjAgOiBSR0JBVHlwZTxSZWMyMDIwLCBULCBSR0JNb2RlbDxUPj4gewog
ICAgIHVzaW5nIFJHQkFUeXBlPFJlYzIwMjAsIFQsIFJHQk1vZGVsPFQ+Pjo6UkdCQVR5cGU7CiAg
ICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJSZWMyMDIwPFQ+OworICAgIHVzaW5n
IFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQb2ludDo6RDY1PjsKICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gY29sb3JTcGFjZSB7IENvbG9yU3BhY2U6OlJlYzIwMjAgfTsKIH07CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBSZWMyMDIwKFQsIFQsIFQsIFQpIC0+IFJlYzIwMjA8VD47CkBAIC0y
OTYsNiArMzA5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmVjMjAyMChULCBULCBULCBUKQog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNSR0JBIDogUkdCQVR5cGU8U1JHQkEsIFQsIFJH
Qk1vZGVsPFQ+PiB7CiAgICAgdXNpbmcgUkdCQVR5cGU8U1JHQkEsIFQsIFJHQk1vZGVsPFQ+Pjo6
UkdCQVR5cGU7CiAgICAgdXNpbmcgTGluZWFyQ291bnRlcnBhcnQgPSBMaW5lYXJTUkdCQTxUPjsK
KyAgICB1c2luZyBSZWZlcmVuY2VYWVogPSBYWVpBPFQsIFdoaXRlUG9pbnQ6OkQ2NT47CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGNvbG9yU3BhY2UgeyBDb2xvclNwYWNlOjpTUkdCIH07CiB9
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkgLT4gU1JHQkE8VD47CkBA
IC0zMDUsNiArMzE5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkEoVCwgVCwgVCwgVCkg
LQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IExhYiA6IENvbG9yV2l0aEFscGhhSGVscGVy
PExhYjxUPj4gewogICAgIHVzaW5nIENvbXBvbmVudFR5cGUgPSBUOwogICAgIHVzaW5nIE1vZGVs
ID0gTGFiTW9kZWw8VD47CisgICAgdXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBv
aW50OjpENTA+OwogICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBjb2xvclNwYWNlID0gQ29sb3JT
cGFjZTo6TGFiOwogCiAgICAgY29uc3RleHByIExhYihUIGxpZ2h0bmVzcywgVCBhLCBUIGIsIFQg
YWxwaGEgPSBBbHBoYVRyYWl0czxUPjo6b3BhcXVlKQpAQCAtMzM3LDYgKzM1Miw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBDb2xvckNvbXAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBMQ0hBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8TENIQTxUPj4gewogICAgIHVzaW5n
IENvbXBvbmVudFR5cGUgPSBUOwogICAgIHVzaW5nIE1vZGVsID0gTENITW9kZWw8VD47CisgICAg
dXNpbmcgUmVmZXJlbmNlWFlaID0gWFlaQTxULCBXaGl0ZVBvaW50OjpENTA+OwogCiAgICAgY29u
c3RleHByIExDSEEoVCBsaWdodG5lc3MsIFQgY2hyb21hLCBUIGh1ZSwgVCBhbHBoYSA9IEFscGhh
VHJhaXRzPFQ+OjpvcGFxdWUpCiAgICAgICAgIDogbGlnaHRuZXNzIHsgbGlnaHRuZXNzIH0KQEAg
LTM2OSw2ICszODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgQ29sb3JDb21w
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSFNMQSA6IENvbG9yV2l0aEFscGhhSGVscGVy
PEhTTEE8VD4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0gVDsKICAgICB1c2luZyBNb2Rl
bCA9IEhTTE1vZGVsPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZWiA9IFhZWkE8VCwgV2hpdGVQ
b2ludDo6RDY1PjsKIAogICAgIGNvbnN0ZXhwciBIU0xBKFQgaHVlLCBUIHNhdHVyYXRpb24sIFQg
bGlnaHRuZXNzLCBUIGFscGhhID0gQWxwaGFUcmFpdHM8VD46Om9wYXF1ZSkKICAgICAgICAgOiBo
dWUgeyBodWUgfQpAQCAtMzk3LDkgKzQxNCwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25z
dGV4cHIgQ29sb3JDb21wCiAKIC8vIE1BUks6IC0gWFlaIENvbG9yIFR5cGUuCiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIDogQ29sb3JXaXRoQWxwaGFIZWxwZXI8WFlaQTxUPj4g
ewordGVtcGxhdGU8dHlwZW5hbWUgVCwgV2hpdGVQb2ludCBXPiBzdHJ1Y3QgWFlaQSA6IENvbG9y
V2l0aEFscGhhSGVscGVyPFhZWkE8VCwgVz4+IHsKICAgICB1c2luZyBDb21wb25lbnRUeXBlID0g
VDsKICAgICB1c2luZyBNb2RlbCA9IFhZWk1vZGVsPFQ+OworICAgIHVzaW5nIFJlZmVyZW5jZVhZ
WiA9IFhZWkE8VCwgVz47CisgICAgc3RhdGljIGNvbnN0ZXhwciBXaGl0ZVBvaW50IHdoaXRlUG9p
bnQgPSBXOwogCiAgICAgY29uc3RleHByIFhZWkEoVCB4LCBUIHksIFQgeiwgVCBhbHBoYSA9IEFs
cGhhVHJhaXRzPFQ+OjpvcGFxdWUpCiAgICAgICAgIDogeCB7IHggfQpAQCAtNDIxLDcgKzQ0MCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBYWVpBIDogQ29sb3IKICAgICBUIGFscGhh
OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIENvbG9yQ29tcG9uZW50czxU
PiBhc0NvbG9yQ29tcG9uZW50cyhjb25zdCBYWVpBPFQ+JiBjKQordGVtcGxhdGU8dHlwZW5hbWUg
VCwgV2hpdGVQb2ludCBXPiBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQ+IGFzQ29sb3JDb21w
b25lbnRzKGNvbnN0IFhZWkE8VCwgVz4mIGMpCiB7CiAgICAgcmV0dXJuIHsgYy54LCBjLnksIGMu
eiwgYy5hbHBoYSB9OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>