<?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>225707</bug_id>
          
          <creation_ts>2021-05-12 11:35:26 -0700</creation_ts>
          <short_desc>Split pixel buffer format data out into a new PixelBufferFormat struct</short_desc>
          <delta_ts>2021-05-13 13:55:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759327</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-12 11:35:26 -0700</bug_when>
    <thetext>Split pixel buffer format data out into a new PixelBufferFormat struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759335</commentid>
    <comment_count>1</comment_count>
      <attachid>428396</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-12 11:51:51 -0700</bug_when>
    <thetext>Created attachment 428396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759355</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-12 12:42:21 -0700</bug_when>
    <thetext>Looks great, waiting to review until we have a version that’s a little more green on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759403</commentid>
    <comment_count>3</comment_count>
      <attachid>428419</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-12 14:17:03 -0700</bug_when>
    <thetext>Created attachment 428419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759423</commentid>
    <comment_count>4</comment_count>
      <attachid>428419</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-12 15:46:19 -0700</bug_when>
    <thetext>Comment on attachment 428419
Patch

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

&gt; Source/WebCore/platform/graphics/PixelBufferFormat.cpp:35
&gt; +    return ts &lt;&lt; pixelBuffer.alphaFormat &lt;&lt; &quot; &quot; &lt;&lt; pixelBuffer.pixelFormat &lt;&lt; &quot; &quot; &lt;&lt; pixelBuffer.colorSpace;

Faster if you use &apos; &apos; instead of &quot; &quot;?

&gt; Source/WebCore/platform/graphics/PixelBufferFormat.h:50
&gt; +    encoder &lt;&lt; alphaFormat;
&gt; +    encoder &lt;&lt; pixelFormat;
&gt; +    encoder &lt;&lt; colorSpace;

Use the one-line form?

&gt; Source/WebCore/platform/graphics/PixelFormat.h:40
&gt; +WEBCORE_EXPORT WTF::TextStream&amp; operator&lt;&lt;(WTF::TextStream&amp;, PixelFormat);

Don’t need WTF prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759773</commentid>
    <comment_count>5</comment_count>
      <attachid>428542</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-13 12:06:18 -0700</bug_when>
    <thetext>Created attachment 428542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759780</commentid>
    <comment_count>6</comment_count>
      <attachid>428544</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-13 12:29:30 -0700</bug_when>
    <thetext>Created attachment 428544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759824</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-13 13:54:29 -0700</bug_when>
    <thetext>Committed r277450 (237698@main): &lt;https://commits.webkit.org/237698@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428544.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759825</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-13 13:55:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/77985115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428396</attachid>
            <date>2021-05-12 11:51:51 -0700</date>
            <delta_ts>2021-05-12 14:17:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225707-20210512115150.patch</filename>
            <type>text/plain</type>
            <size>52363</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDIxLTA1LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9y
bWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4ZWxCdWZmZXJGb3JtYXQgc3RydWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU3MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdHMgb3V0IFBpeGVs
QnVmZmVyRm9ybWF0IGludG8gYSBuZXcgc3RydWN0IGFuZCBhZG9wdHMgaXQgYnkgUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldywKKyAgICAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IGFuZCBQaXhlbEJ1ZmZlci4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgUGl4ZWxCdWZmZXIgbm93Cisg
ICAgICAgIHRyYWNrcyB0aGUgYWxwaGEgZm9ybWF0IG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3
aGljaCB3aWxsIGNvbWUgaW4gaGFuZHkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICBBZGQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAg
YW5kIG1vdmUgVGV4dFN0cmVhbSBzdXBwb3J0CisgICAgICAgIGhlcmUgZnJvbSBHcmFwaGljc1R5
cGVzLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICBNb3ZlIEFscGhhUHJlbXVsdGlwbGljYXRpb24gVGV4dFN0cmVhbSB0byB0aGUg
bW9yZSBhcHByb3ByaWF0ZQorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcC4KKwor
ICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEYXRhOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGF0YTo6Zm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmNv
bXB1dGVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVh
dGVGb3JEZWNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6ZGVlcENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Zm9ybWF0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGl4ZWxCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFn
ZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVs
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGl4
ZWxCdWZmZXJGb3JtYXQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1
ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZv
cm1hdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAg
ICAgICAgQWRvcHQgUGl4ZWxCdWZmZXJGb3JtYXQuCisKIDIwMjEtMDUtMTIgIFNlcmdpbyBWaWxs
YXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBE
byBub3QgdXNlIG1hcmdpbnMgd2hlbiBjb21wdXRpbmcgYXNwZWN0IHJhdGlvIGNyb3NzIHNpemVz
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEyOTAsNiArMTI5MCw3IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVXRpbGl0aWVzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2UuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3NzM3MSkK
KysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM3LDYg
KzE5MzcsNyBAQCBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhCiBwbGF0
Zm9ybS9nYW1lcGFkL0VtcHR5R2FtZXBhZFByb3ZpZGVyLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9H
YW1lcGFkQ29uc3RhbnRzLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXIuY3Bw
CitwbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKQEAgLTIwMTQsNiArMjAxNSw4
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXR0ZXJuLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlckZvcm1hdC5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUJhc2UuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwNTgs
NiArNDA1OCw4IEBACiAJCUJDNjA0OUNDMERCNTYwQzIwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MDQ5
Q0IwREI1NjBDMjAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmggKi87IH07CiAJCUJDNjBENkU5
MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01F
eGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQzYwRDdDMTBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEN0JGMEQyOUE0NjMw
MEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovOyB9OworCQlCQzYzNUU4QzI2NEMyQ0FFMDAw
RUYzM0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZl
ckZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUJDNjM1RThFMjY0QzJDRTcwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMENBNzRDMjY0
QUVEMEEwMDRGREM2MiAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLzsgfTsKIAkJQkM2NDY0
MEExMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERP
TVN0cmluZ01hcC5oICovOyB9OwogCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNl
dERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM2NDY0MUExMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCAq
LzsgfTsKIAkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQ5NjExRDgy
MzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCAqLzsgfTsKQEAgLTE0MjQ2LDYgKzE0MjQ4
LDEwIEBACiAJCUJDNjBENkVCMEQyOEQ5OTkwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUV4Y2VwdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNjBEN0JFMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUV4Y2VwdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4
RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTUV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU4QjI2
NEMyQ0FFMDAwRUYzM0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGl4
ZWxCdWZmZXJGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MzVFOEYy
NjRDMkVDRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBpeGVsQnVmZmVyRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8qIFBpeGVsRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBpeGVsRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2
MzVFOTEyNjRDNDc2MDAwMEVGMzNBIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU3RyaW5nTWFwLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjQ2NDFBMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRh
c2V0RE9NU3RyaW5nTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFz
ZXRET01TdHJpbmdNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NDY0MUIx
MUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YXNldERPTVN0cmluZ01hcC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjg0OCw2ICsyNjg1NCw3IEBACiAJCQkJRkJDMjIwREQx
MjM3RkJFQjAwQkNGNzg4IC8qIG9wZW5nbCAqLywKIAkJCQkzNzIxNDkzMzE4RjBCNkQ2MDAxNTZF
REMgLyogb3BlbnR5cGUgKi8sCiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5z
Zm9ybXMgKi8sCisJCQkJQkM2MzVFOTEyNjRDNDc2MDAwMEVGMzNBIC8qIEFscGhhUHJlbXVsdGlw
bGljYXRpb24uY3BwICovLAogCQkJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmggKi8sCiAJCQkJMEY3RTQ3NTMyNUVFQjc5QjAwMTNGOTA5IC8qIEFO
R0xFV2ViS2l0QnJpZGdlLmNwcCAqLywKIAkJCQkwRjdFNDc1NDI1RUVCNzlCMDAxM0Y5MDkgLyog
QU5HTEVXZWJLaXRCcmlkZ2UuaCAqLywKQEAgLTI3MDU3LDYgKzI3MDY0LDkgQEAKIAkJCQlCQzQ4
MzlCQTI2NDYxODFBMDBBMjhCNjIgLyogUGl4ZWxCdWZmZXIuaCAqLywKIAkJCQlCQzBDQTc0RDI2
NEFFRDBBMDA0RkRDNjIgLyogUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcCAqLywKIAkJCQlCQzBD
QTc0QzI2NEFFRDBBMDA0RkRDNjIgLyogUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmggKi8sCisJCQkJ
QkM2MzVFOEYyNjRDMkVDRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmNwcCAqLywKKwkJ
CQlCQzYzNUU4QjI2NEMyQ0FFMDAwRUYzM0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCAqLywKKwkJ
CQlCQzYzNUU5MDI2NEM0NjlGMDAwRUYzM0EgLyogUGl4ZWxGb3JtYXQuY3BwICovLAogCQkJCUJD
QTU1OTEyMjYzREJENzkwMDdGMTlCMyAvKiBQaXhlbEZvcm1hdC5oICovLAogCQkJCTcyNkQ1NkUx
MjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0Ux
NzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKQEAgLTM0NDY5LDYgKzM0
NDc5LDggQEAKIAkJCQlEMEZGMkE1RTExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFNjkxRTUyNjQ2MzdGQzAwRUJEQzNBIC8qIFBpeGVsQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDdEMzM0NDFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxC
dWZmZXJDb25mb3JtZXJDVi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2MzVFOEUyNjRDMkNFNzAw
MEVGMzNBIC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2
MzVFOEMyNjRDMkNBRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0E1NTkxNDI2M0RCRDc5MDA3RjE5QjMgLyogUGl4ZWxGb3JtYXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNERUZBMjI4MUU3NjY5RTgwMDBBRTk5QyAvKiBQbGF0Zm9ybUF1ZGlvRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRm
b3JtQ0FBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIFJlZlB0cjxJbWFnZURhdGE+
IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnMKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBl
ZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKICAg
ICBpZiAoIWJ5dGVBcnJheSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIHNpemUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKyAg
ICAKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkp
OwogfQogCiBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5KQpAQCAtNzIsNyArNzMs
NyBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zCiAgICAgaWYgKGRh
dGFTaXplLmhhc092ZXJmbG93ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVBcnJh
eS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW1hZ2VEYXRhKHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH0sIHNpemUsIFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJ
bWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpCkBA
IC04OSw3ICs5MCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmMK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9z
IH07CiAgICAgfQogICAgIGJ5dGVBcnJheS0+emVyb0ZpbGwoKTsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJbWFnZURhdGEoeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiB9LCBzaXplLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFt
cGVkQXJyYXk+JiYgYnl0ZUFycmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2
IEBAIHB1YmxpYzoKIAogICAgIFJlZjxJbWFnZURhdGE+IGRlZXBDbG9uZSgpIGNvbnN0OwogCi0g
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Bp
eGVsQnVmZmVyLmNvbG9yU3BhY2UoKTsgfQotICAgIFBpeGVsRm9ybWF0IGZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuZm9ybWF0KCk7IH0KLQogICAgIGNvbnN0IFBpeGVsQnVm
ZmVyJiBwaXhlbEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXI7IH0KIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVs
dGlwbGljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gcHJl
bXVsdGlwbGljYXRpb24pCit7CisgICAgc3dpdGNoIChwcmVtdWx0aXBsaWNhdGlvbikgeworICAg
IGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDoKKyAgICAgICAgdHMg
PDwgInByZW11bHRpcGxpZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgdHMgPDwgInVucHJlbXVsdGlw
bGllZCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yCiB9CiAKIG5hbWVzcGFjZSBXVEYgeworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uLApAQCAt
NDcsNCArNDgsNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFsCiAg
ICAgICAgIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZAog
ICAgID47CiB9OworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MiwxNyArMTgyLDQgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgTAogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKLXsKLSAg
ICBzd2l0Y2ggKHByZW11bHRpcGxpY2F0aW9uKSB7Ci0gICAgY2FzZSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkOgotICAgICAgICB0cyA8PCAicHJlbXVsdGlwbGllZCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkOgotICAgICAgICB0cyA8PCAidW5wcmVtdWx0aXBsaWVkIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSwxNyArOTUsMTYgQEAgVmVjdG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CRwog
ewogICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVu
c2FmZUdldCgpKTsKIAorICAgIFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9u
Rm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCiAgICAgQ29uc3RQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuYWxwaGFGb3JtYXQg
PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOwotICAgIHNvdXJjZS5jb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwotICAgIHNvdXJjZS5waXhlbEZv
cm1hdCA9IHBpeGVsRm9ybWF0KCk7CisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsK
ICAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwogICAgIHNvdXJjZS5yb3dz
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSk7CiAgICAgCiAgICAgUGl4
ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBo
YUZvcm1hdCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDsKLSAgICBk
ZXN0aW5hdGlvbi5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwotICAg
IGRlc3RpbmF0aW9uLnBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4OworICAgIGRlc3Rp
bmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwogICAgIGRlc3RpbmF0aW9uLmJ5dGVz
UGVyUm93ID0gbG9naWNhbFNpemUoKS53aWR0aCgpICogNDsKICAgICBkZXN0aW5hdGlvbi5yb3dz
ID0gcmVzdWx0LmRhdGEoKTsKIApAQCAtMTE4LDkgKzExNyw5IEBAIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKIHsKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0
b0JhY2tlbmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKIAotICAgIGF1dG8gZGVzdGluYXRpb25Q
aXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0OjpSR0JBODsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBk
ZXN0aW5hdGlvbkZvcm1hdCB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CiAKLSAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IGRlc3RpbmF0aW9uUGl4ZWxGb3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1h
dCwgc291cmNlUmVjdFNjYWxlZC5zaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTE0MiwxNyArMTQxLDE1IEBAIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlv
bkJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKICAgICB1aW50OF90
KiBkZXN0aW5hdGlvblJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0
aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0Lngo
KSAqIDQ7CiAKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfTsKKwogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBz
b3VyY2U7Ci0gICAgc291cmNlLmFscGhhRm9ybWF0ID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZDsKLSAgICBzb3VyY2UuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQjsKLSAgICBzb3VyY2UucGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdCgpOworICAg
IHNvdXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7CiAgICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
c291cmNlQnl0ZXNQZXJSb3c7CiAgICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwogICAgIAog
ICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRp
b24uYWxwaGFGb3JtYXQgPSBkZXN0aW5hdGlvbkFscGhhRm9ybWF0OwotICAgIGRlc3RpbmF0aW9u
LmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRp
b24ucGl4ZWxGb3JtYXQgPSBkZXN0aW5hdGlvblBpeGVsRm9ybWF0OworICAgIGRlc3RpbmF0aW9u
LmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwogICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93
ID0gZGVzdGluYXRpb25CeXRlc1BlclJvdzsKICAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGlu
YXRpb25Sb3dzOwogCkBAIC0xNjQsNyArMTYxLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IElt
YWdlQnVmZmVyQmFja2VuZAogdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVy
KEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlQWxwaGFGb3JtYXQsIGNvbnN0IFBpeGVsQnVm
ZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RpbmF0aW9uUG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25B
bHBoYUZvcm1hdCwgdm9pZCogZGF0YSkKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IG5vbi1SR0JBOCBwaXhlbCBmb3JtYXRzLgotICAgIEFTU0VSVChwaXhlbEJ1ZmZlci5mb3JtYXQo
KSA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOworICAgIEFTU0VSVChwaXhlbEJ1ZmZlci5mb3JtYXQo
KS5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpOwogCiAgICAgYXV0byBzb3VyY2VS
ZWN0U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAgICAgYXV0byBk
ZXN0aW5hdGlvblBvaW50U2NhbGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdGluYXRpb25Q
b2ludCk7CkBAIC0xODgsMTcgKzE4NSwxNiBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0
UGl4ZWxCdWZmZXIoCiAgICAgdW5zaWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVz
UGVyUm93KCk7CiAgICAgdWludDhfdCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRl
c1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OwogCisgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgc291cmNlRm9ybWF0IHsgc291cmNlQWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVz
dGluYXRpb25Gb3JtYXQgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKwogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmFscGhhRm9ybWF0ID0gc291cmNlQWxwaGFG
b3JtYXQ7Ci0gICAgc291cmNlLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0I7Ci0gICAgc291cmNlLnBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OlJHQkE4OworICAgIHNv
dXJjZS5mb3JtYXQgPSBzb3VyY2VGb3JtYXQ7CiAgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gc291
cmNlQnl0ZXNQZXJSb3c7CiAgICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwogICAgIAogICAg
IFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24u
YWxwaGFGb3JtYXQgPSBkZXN0aW5hdGlvbkFscGhhRm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmNv
bG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRpb24u
cGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdCgpOworICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRl
c3RpbmF0aW9uRm9ybWF0OwogICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRp
b25CeXRlc1BlclJvdzsKICAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
Miw5ICsxNjIsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAotICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwKLSAgICBXZWJDb3Jl
OjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vLAotICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzCisgICAgICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwKKyAgICAgICAgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObywKKyAgICAgICAgV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMKICAgICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwzMSArMzEsMzEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DaGVj
a2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVyZmxvdz4gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJT
aXplKFBpeGVsRm9ybWF0IGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK0NoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAg
ICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCi0g
ICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIGZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwg
Zm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3JtYXQs
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQg
Ynl0ZXNQZXJQaXhlbCA9IDQ7CiAKICAgICByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93
PigpICogYnl0ZXNQZXJQaXhlbDsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBkYXRh
Qnl0ZUxlbmd0aCkKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
Rm9yRGVjb2RpbmcoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgdW5zaWduZWQgZGF0YUJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgQVNTRVJUKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9y
bWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgQVNTRVJUKGNvbXB1
dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgp
OwogCiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoZGF0YUJ5dGVMZW5ndGgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGNvbG9yU3BhY2UsIGZvcm1h
dCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKKyAgICByZXR1cm4geyB7
IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKIH0KIAotT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgLy8g
Tk9URTogT25seSA4LWJpdCBmb3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgotICAgIEFT
U0VSVChmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIEFTU0VSVChmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6
OlJHQkE4IHx8IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAg
ICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAg
ICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCkBAIC02MywxMiArNjMsMTEgQEAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIGF1dG8gcGl4ZWxBcnJh
eSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUu
dW5zYWZlR2V0KCkpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICByZXR1cm4geyB7IGNvbG9yU3BhY2UsIGZvcm1hdCwgc2l6ZSwgcGl4ZWxB
cnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwg
cGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKIH0KIAotUGl4ZWxCdWZmZXI6OlBpeGVs
QnVmZmVyKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBmb3Jt
YXQsIGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRh
dGEpCi0gICAgOiBtX2NvbG9yU3BhY2UgeyBjb2xvclNwYWNlIH0KLSAgICAsIG1fZm9ybWF0IHsg
Zm9ybWF0IH0KK1BpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJh
eT4mJiBkYXRhKQorICAgIDogbV9mb3JtYXQgeyBmb3JtYXQgfQogICAgICwgbV9zaXplIHsgc2l6
ZSB9CiAgICAgLCBtX2RhdGEgeyBXVEZNb3ZlKGRhdGEpIH0KIHsKQEAgLTc5LDEyICs3OCwxMiBA
QCBQaXhlbEJ1ZmZlcjo6flBpeGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQ
aXhlbEJ1ZmZlcjo6ZGVlcENsb25lKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBtX2NvbG9yU3Bh
Y2UsIG1fZm9ybWF0LCBtX3NpemUsIFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+bGVuZ3RoKCkpIH07CisgICAgcmV0dXJuIHsgbV9mb3JtYXQsIG1fc2l6
ZSwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5sZW5n
dGgoKSkgfTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQogewotICAgIHJldHVybiB0cyA8PCAmcGl4ZWxC
dWZmZXIuZGF0YSgpOworICAgIHJldHVybiB0cyA8PCAmcGl4ZWxCdWZmZXIuZGF0YSgpIDw8ICJm
b3JtYXQgKCAiIDw8IHBpeGVsQnVmZmVyLmZvcm1hdCgpIDw8ICIpIjsKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShyZXZp
c2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0
LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9V
aW50OENsYW1wZWRBcnJheS5oPgogCkBAIC0zOSwxNiArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUGl4ZWxCdWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBpeGVs
QnVmZmVyKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IHRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBj
b25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiB0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXpl
Jik7CiAKLSAgICBQaXhlbEJ1ZmZlcihEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYpOworICAgIFBp
eGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIFJlZjxK
U0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGl4ZWxCdWZm
ZXIoKTsKIAogICAgIFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKICAgICBQ
aXhlbEJ1ZmZlciYgb3BlcmF0b3I9KFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKIAotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNw
YWNlOyB9Ci0gICAgUGl4ZWxGb3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7
IH0KKyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CiAgICAgSlNDOjpVaW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5nZXQoKTsgfQogCkBAIC01OCwxMiArNTksMTEgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGVG
b3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCB1bnNp
Z25lZCBkYXRhQnl0ZUxlbmd0aCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2hlY2tl
ZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IGNvbXB1dGVCdWZmZXJTaXplKFBpeGVsRm9ybWF0
LCBjb25zdCBJbnRTaXplJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENoZWNrZWQ8dW5z
aWduZWQsIFJlY29yZE92ZXJmbG93PiBjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYsIGNvbnN0IEludFNpemUmKTsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBt
X2NvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgbV9mb3JtYXQ7CisgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgbV9mb3JtYXQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUmVmPEpTQzo6VWludDhD
bGFtcGVkQXJyYXk+IG1fZGF0YTsKIH07CkBAIC03NCwyNCArNzQsMTggQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcgogewogICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVM
ZW5ndGgoKSA9PSAobV9zaXplLmFyZWEoKS51bnNhZmVHZXQoKSAqIDQpKTsKIAotICAgIGVuY29k
ZXIgPDwgbV9jb2xvclNwYWNlOwogICAgIGVuY29kZXIgPDwgbV9mb3JtYXQ7Ci0gICAgZW5jb2Rl
ciA8PCBtX3NpemU7CiAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5k
YXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0aCgpLCAxKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgUGl4ZWxGb3JtYXQgZm9ybWF0OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvcm1hdCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4K
LSAgICBpZiAoIShmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6QkdSQTgpKQorICAgIGlmICghKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBJbnRTaXplIHNpemU7CkBAIC0x
MDYsNyArMTAwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdQog
ICAgIGlmICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVp
bnQ4X3Q+KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
YXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoY29sb3JTcGFj
ZSwgZm9ybWF0LCBzaXplLCBidWZmZXJTaXplKTsKKyAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhmb3JtYXQsIHNpemUsIGJ1ZmZlclNpemUpOwogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDE0ICs1NiwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVydEltYWdlUGl4ZWxzQWNj
CiAgICAgYXV0byBzb3VyY2VWSW1hZ2VCdWZmZXIgPSBtYWtlVkltYWdlQnVmZmVyKHNvdXJjZSwg
ZGVzdGluYXRpb25TaXplKTsKICAgICBhdXRvIGRlc3RpbmF0aW9uVkltYWdlQnVmZmVyID0gbWFr
ZVZJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKIAotICAgIGlmIChz
b3VyY2UuYWxwaGFGb3JtYXQgIT0gZGVzdGluYXRpb24uYWxwaGFGb3JtYXQpIHsKLSAgICAgICAg
aWYgKGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCkgewotICAgICAgICAgICAgaWYgKHNvdXJjZS5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6UkdCQTgpCisgICAgaWYgKHNvdXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgIT0g
ZGVzdGluYXRpb24uZm9ybWF0LmFscGhhRm9ybWF0KSB7CisgICAgICAgIGlmIChkZXN0aW5hdGlv
bi5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkKSB7CisgICAgICAgICAgICBpZiAoc291cmNlLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6UkdCQTgpCiAgICAgICAgICAgICAgICAgdkltYWdlVW5wcmVtdWx0aXBseURh
dGFfUkdCQTg4ODgoJnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVy
LCBrdkltYWdlTm9GbGFncyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdklt
YWdlVW5wcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3Rp
bmF0aW9uVkltYWdlQnVmZmVyLCBrdkltYWdlTm9GbGFncyk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCkK
KyAgICAgICAgICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpSR0JBOCkKICAgICAgICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFfUkdCQTg4ODgo
JnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVyLCBrdkltYWdlTm9G
bGFncyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdkltYWdlUHJlbXVsdGlw
bHlEYXRhX0JHUkE4ODg4KCZzb3VyY2VWSW1hZ2VCdWZmZXIsICZkZXN0aW5hdGlvblZJbWFnZUJ1
ZmZlciwga3ZJbWFnZU5vRmxhZ3MpOwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY29udmVydEltYWdlUGl4ZWxzQWNjCiAgICAgICAgIHNvdXJjZVZJbWFnZUJ1ZmZlciA9IGRl
c3RpbmF0aW9uVkltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIGlmIChzb3VyY2UucGl4ZWxGb3Jt
YXQgIT0gZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQpIHsKKyAgICBpZiAoc291cmNlLmZvcm1hdC5w
aXhlbEZvcm1hdCAhPSBkZXN0aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQpIHsKICAgICAgICAg
Ly8gU3dhcCBwaXhlbCBjaGFubmVscyBCR1JBIDwtPiBSR0JBLgogICAgICAgICBjb25zdCB1aW50
OF90IG1hcFs0XSA9IHsgMiwgMSwgMCwgMyB9OwogICAgICAgICB2SW1hZ2VQZXJtdXRlQ2hhbm5l
bHNfQVJHQjg4ODgoJnNvdXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVy
LCBtYXAsIGt2SW1hZ2VOb0ZsYWdzKTsKQEAgLTE4MCw0MiArMTgwLDQyIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb252ZXJ0SW1hZ2VQaXhlbHNVbmEKIHZvaWQgY29udmVydEltYWdlUGl4ZWxzKGNv
bnN0IENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyYgc291cmNlLCBjb25zdCBQaXhlbEJ1
ZmZlckNvbnZlcnNpb25WaWV3JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50U2l6ZSYgZGVzdGluYXRp
b25TaXplKQogewogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGNvbnZlcnRpbmcg
cGl4ZWwgZGF0YSB3aXRoIG5vbi04LWJpdCBidWZmZXJzLgotICAgIEFTU0VSVChzb3VyY2UucGl4
ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IHNvdXJjZS5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwotICAgIEFTU0VSVChkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQgPT0gUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoc291cmNlLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6UkdCQTggfHwgc291cmNlLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIEFTU0VSVChkZXN0aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGRlc3RpbmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IHN1cHBv
cnQgY29udmVydGluZyBwaXhlbCBkYXRhIGJldHdlZW4gZGlmZmVyZW50IGNvbG9yIHNwYWNlcy4K
LSAgICBBU1NFUlQoc291cmNlLmNvbG9yU3BhY2UgPT0gZGVzdGluYXRpb24uY29sb3JTcGFjZSk7
CisgICAgQVNTRVJUKHNvdXJjZS5mb3JtYXQuY29sb3JTcGFjZSA9PSBkZXN0aW5hdGlvbi5mb3Jt
YXQuY29sb3JTcGFjZSk7CiAKICNpZiBVU0UoQUNDRUxFUkFURSkKLSAgICBpZiAoc291cmNlLmFs
cGhhRm9ybWF0ID09IGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ICYmIHNvdXJjZS5waXhlbEZvcm1h
dCA9PSBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCkgeworICAgIGlmIChzb3VyY2UuZm9ybWF0LmFs
cGhhRm9ybWF0ID09IGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1hdCAmJiBzb3VyY2UuZm9y
bWF0LnBpeGVsRm9ybWF0ID09IGRlc3RpbmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCkgewogICAg
ICAgICAvLyBGSVhNRTogQ2FuIHRoZXMgYm90aCBqdXN0IHVzZSBwZXItcm93IG1lbWNweT8KLSAg
ICAgICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkKQorICAgICAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgY29udmVy
dEltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxQcmVtdWx0aXBsaWVk
VG9QcmVtdWx0aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNv
bnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5wcmVtdWx0
aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291
cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICB9IGVsc2UKICAgICAgICAg
Y29udmVydEltYWdlUGl4ZWxzQWNjZWxlcmF0ZWQoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGlu
YXRpb25TaXplKTsKICNlbHNlCi0gICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCA9PSBkZXN0aW5h
dGlvbi5hbHBoYUZvcm1hdCkgewotICAgICAgICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ID09IGRl
c3RpbmF0aW9uLnBpeGVsRm9ybWF0KSB7Ci0gICAgICAgICAgICBpZiAoc291cmNlLmFscGhhRm9y
bWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCisgICAgaWYgKHNv
dXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gZGVzdGluYXRpb24uZm9ybWF0LmFscGhhRm9ybWF0
KSB7CisgICAgICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IGRlc3RpbmF0aW9u
LmZvcm1hdC5waXhlbEZvcm1hdCkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5mb3JtYXQuYWxw
aGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKICAgICAg
ICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvbnZlcnRTaW5nbGVQ
aXhlbFByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpO
b25lPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNv
bnZlcnRTaW5nbGVQaXhlbFVucHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkPFBpeGVsRm9y
bWF0Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6
ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uYWxwaGFG
b3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKQorICAgICAg
ICAgICAgaWYgKGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdl
UGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxQcmVtdWx0aXBsaWVkVG9QcmVt
dWx0aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6UGVybXV0ZT4+KHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgY29udmVydEltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnBy
ZW11bHRpcGxpZWRUb1VucHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246OlBlcm11
dGU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHNvdXJjZS5waXhlbEZvcm1hdCA9PSBkZXN0aW5hdGlv
bi5waXhlbEZvcm1hdCkgewotICAgICAgICAgICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCA9PSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQorICAgICAgICBpZiAoc291cmNl
LmZvcm1hdC5waXhlbEZvcm1hdCA9PSBkZXN0aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQpIHsK
KyAgICAgICAgICAgIGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdl
UGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxQcmVtdWx0aXBsaWVkVG9VbnBy
ZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291cmNlLCBkZXN0aW5h
dGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFVucHJl
bXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCkKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5m
b3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29u
dmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkPFBpeGVsRm9ybWF0
Q29udmVyc2lvbjo6UGVybXV0ZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6
ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxz
VW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11bHRpcGxpZWRUb1ByZW11bHRp
cGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpQZXJtdXRlPj4oc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25TaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzcz
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZl
cnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMjYgKzI1LDIwIEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnRTaXplOwogCi1lbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
OiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90Owot
ZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7Ci0KIHN0cnVjdCBQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0Owot
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdDsKICAgICB1bnNpZ25lZCBi
eXRlc1BlclJvdzsKICAgICB1aW50OF90KiByb3dzOwogfTsKIAogc3RydWN0IENvbnN0UGl4ZWxC
dWZmZXJDb252ZXJzaW9uVmlldyB7Ci0gICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZv
cm1hdDsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdDsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7CiAgICAgdW5z
aWduZWQgYnl0ZXNQZXJSb3c7CiAgICAgY29uc3QgdWludDhfdCogcm93czsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJG
b3JtYXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVy
Rm9ybWF0LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUGl4ZWxCdWZmZXJGb3JtYXQmIHBpeGVsQnVmZmVyKQoreworICAgIHJldHVybiB0cyA8PCBw
aXhlbEJ1ZmZlci5hbHBoYUZvcm1hdCA8PCAiICIgPDwgcGl4ZWxCdWZmZXIucGl4ZWxGb3JtYXQg
PDwgIiAiIDw8IHBpeGVsQnVmZmVyLmNvbG9yU3BhY2U7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKKyNp
bmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBQaXhlbEJ1
ZmZlckZvcm1hdCB7CisgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKKyAg
ICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
UGl4ZWxCdWZmZXJGb3JtYXQ+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitXRUJDT1JFX0VYUE9S
VCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmKTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1
ZmZlckZvcm1hdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBhbHBoYUZvcm1hdDsKKyAgICBlbmNvZGVyIDw8IHBpeGVsRm9ybWF0OworICAgIGVuY29k
ZXIgPDwgY29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
UGl4ZWxCdWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYWxwaGFGb3JtYXQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwaXhlbEZvcm1hdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbG9yU3BhY2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHsgeyBhbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQpCit7CisgICAgc3dpdGNoIChwaXhlbEZvcm1hdCkgeworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6
OlJHQkE4OgorICAgICAgICB0cyA8PCAiUkdCQTgiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBpeGVsRm9ybWF0OjpCR1JBODoKKyAgICAgICAgdHMgPDwgIkJHUkE4IjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCMTA6CisgICAgICAgIHRzIDw8ICJSR0IxMCI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OlJHQjEwQTg6CisgICAgICAg
IHRzIDw8ICJSR0IxMEE4IjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsK
K30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3Jt
YXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEZvcm1hdC5oCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw2ICszNyw4IEBAIGVu
dW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90IHsKICAgICBSR0IxMEE4LAogfTsKIAorV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IFBpeGVsRm9ybWF0KTsKKwogfQogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzksNyArNzksOCBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVs
RnJvbVBpeGVscyhpCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQs
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBw
YWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cu
Y3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUz
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7
CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGlt
YWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgo
KSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmNvbG9yU3BhY2UoKSksIGJpdG1hcElu
Zm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0
ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3Jt
YXQoKS5jb2xvclNwYWNlKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1h
eSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhl
IHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFn
ZUJ1ZmZlckNHQmFja2VuCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBh
dXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIGltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1
ZmZlci0+Y29sb3JTcGFjZSgpKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdl
QWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFn
ZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5j
b2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25l
U2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGF1
dG8gbmF0aXZlSW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAg
ICAgIGlmICghbmF0aXZlSW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAko
cmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhKGNvbnN0CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBzb3VyY2Uuc2l6ZSgpOwotICAg
IGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dD
b2xvclNwYWNlKHNvdXJjZS5jb2xvclNwYWNlKCkpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0
IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFn
ZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHNvdXJjZS5mb3JtYXQoKS5jb2xvclNw
YWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92
aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAg
IGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDApKTsKICAgICBpZiAoIWVuY29kZUltYWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCks
IHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lv
biAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNSw3ICs1MDUsOCBAQCB2b2lkIEZp
bHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJlc3VsCiAgICAgICAgICAgICBJbnRTaXplIGlu
cHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
IUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAg
IGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1f
dW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBpbnB1dFNpemUpOworICAg
ICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiB9OworICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBp
eGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbnB1dFNpemUpOwogICAgICAgICAgICAgaWYg
KCFtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEobV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQtPmRhdGEoKSwgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBpbnB1dFNp
emUpOwpAQCAtNTM4LDcgKzUzOSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlw
bGllZFJlc3UKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVy
LmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBpbnB1dFNpemUpOworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgICAg
IG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3Jt
YXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNvcHlQcmVtdWx0aXBs
eWluZ0FscGhhKG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgaW5wdXRTaXplKTsKQEAgLTU4MCw3ICs1ODIsOCBAQCBP
cHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1
bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVm
ZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2Fs
ZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgcmVzdWx0U2l6ZSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIG1fdW5tdWx0aXBs
aWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6
ZSk7CiAgICAgcmV0dXJuIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CiAKQEAgLTU5OCw3
ICs2MDEsOCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAg
SW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NF
UlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVz
dWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHJlc3VsdFNpemUpOworICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3MzgxKQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0xMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgcGl4ZWwgYnVmZmVyIGZv
cm1hdCBkYXRhIG91dCBpbnRvIGEgbmV3IFBpeGVsQnVmZmVyRm9ybWF0IHN0cnVjdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NzA3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIEFkb3B0IFBpeGVs
QnVmZmVyRm9ybWF0LgorCiAyMDIxLTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmb2xsb3ctdXAgdG8gcjI3NzM3Ni4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKFVO
TElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OlJHQkE4LCBzcmNSZWN0LnNpemUoKSk7CisgICAgICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgb3V0cHV0Rm9ybWF0LCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5h
dGlvbkZvcm1hdCwgc3JjUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgc2l6ZV90IGRhdGFTaXpl
ID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428419</attachid>
            <date>2021-05-12 14:17:03 -0700</date>
            <delta_ts>2021-05-13 12:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225707-20210512141702.patch</filename>
            <type>text/plain</type>
            <size>54072</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzM4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDIxLTA1LTEyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9y
bWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4ZWxCdWZmZXJGb3JtYXQgc3RydWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU3MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdHMgb3V0IFBpeGVs
QnVmZmVyRm9ybWF0IGludG8gYSBuZXcgc3RydWN0IGFuZCBhZG9wdHMgaXQgYnkgUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldywKKyAgICAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IGFuZCBQaXhlbEJ1ZmZlci4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgUGl4ZWxCdWZmZXIgbm93Cisg
ICAgICAgIHRyYWNrcyB0aGUgYWxwaGEgZm9ybWF0IG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3
aGljaCB3aWxsIGNvbWUgaW4gaGFuZHkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICBBZGQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAg
YW5kIG1vdmUgVGV4dFN0cmVhbSBzdXBwb3J0CisgICAgICAgIGhlcmUgZnJvbSBHcmFwaGljc1R5
cGVzLmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3Bw
OgorICAgICAgICBNb3ZlIEFscGhhUHJlbXVsdGlwbGljYXRpb24gVGV4dFN0cmVhbSB0byB0aGUg
bW9yZSBhcHByb3ByaWF0ZQorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcC4KKwor
ICAgICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0
YTo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEYXRhOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGF0YTo6Zm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmNv
bXB1dGVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVh
dGVGb3JEZWNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6ZGVlcENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Zm9ybWF0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGl4ZWxCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
Y29sb3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFn
ZVBpeGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVs
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGl4
ZWxCdWZmZXJGb3JtYXQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1
ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZv
cm1hdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAg
ICAgICAgQWRvcHQgUGl4ZWxCdWZmZXJGb3JtYXQuCisKIDIwMjEtMDUtMTIgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgSGFzaFNldDxS
ZWZQdHI8Tm9kZT4+IGluc3RlYWQgb2YgSGFzaFNldDxOb2RlKj4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMTI5MCw2ICsxMjkwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtRGlzcGxheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzcsNiArMTkzNyw3IEBAIHBsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWEKIHBsYXRmb3JtL2dhbWVwYWQvRW1wdHlH
YW1lcGFkUHJvdmlkZXIuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3Bw
CiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25G
cmFtZVJhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcApAQCAtMjAxNCw2ICsyMDE1LDggQEAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aFV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyQ29udmVyc2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNw
cAorcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA1OCw2ICs0MDU4LDggQEAKIAkJQkM2
MDQ5Q0MwREI1NjBDMjAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwNDlDQjBEQjU2MEMyMDAyMDQ3Mzkg
LyogQ1NTQ2FudmFzVmFsdWUuaCAqLzsgfTsKIAkJQkM2MEQ2RTkwRDI4RDgzNDAwQjk5MThGIC8q
IERPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM2MEQ2RTgwRDI4RDgzNDAwQjk5MThGIC8qIERPTUV4Y2VwdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNjBEN0MxMEQyOUE0
NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MEQ3QkYwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhj
ZXB0aW9uLmggKi87IH07CisJCUJDNjM1RThDMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZl
ckZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM2MzVFOEUyNjRDMkNF
NzAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwQ0E3NEMyNjRBRUQwQTAwNEZEQzYyIC8qIFBp
eGVsQnVmZmVyQ29udmVyc2lvbi5oICovOyB9OwogCQlCQzY0NjQwQTExRDdGMzA0MDA2NDU1QjAg
LyogRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzY0NjQwODExRDdGMzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmggKi87IH07
CiAJCUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQxQTExRDdG
NDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oICovOyB9OwogCQlCQzY0NjQ5ODEx
RDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDk2MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RP
TVN0cmluZ01hcC5oICovOyB9OwpAQCAtMTQyNDYsNiArMTQyNDgsMTAgQEAKIAkJQkM2MEQ2RUIw
RDI4RDk5OTAwQjk5MThGIC8qIERPTUV4Y2VwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gRE9NRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2MEQ3
QkUwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM2MEQ3QkYwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXhjZXB0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQ
aXhlbEJ1ZmZlckZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaXhlbEJ1ZmZlckZvcm1hdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU4RjI2NEMyRUNFMDAwRUYzM0EgLyog
UGl4ZWxCdWZmZXJGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxCdWZmZXJGb3Jt
YXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU5MDI2NEM0NjlGMDAw
RUYzM0EgLyogUGl4ZWxGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxGb3JtYXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU5MTI2NEM0NzYwMDAwRUYz
M0EgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbHBo
YVByZW11bHRpcGxpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2
NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01TdHJpbmdNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM2NDY0MUExMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YXNldERPTVN0cmluZ01hcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NjQxQjExRDdGNDE2MDA2NDU1QjAgLyog
RGF0YXNldERPTVN0cmluZ01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI2ODQ4LDYgKzI2ODU0LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyog
b3BlbmdsICovLAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywK
IAkJCQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQlCQzYz
NUU5MTI2NEM0NzYwMDAwRUYzM0EgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgKi8sCiAJ
CQkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAq
LywKIAkJCQkwRjdFNDc1MzI1RUVCNzlCMDAxM0Y5MDkgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3Bw
ICovLAogCQkJCTBGN0U0NzU0MjVFRUI3OUIwMDEzRjkwOSAvKiBBTkdMRVdlYktpdEJyaWRnZS5o
ICovLApAQCAtMjcwNTcsNiArMjcwNjQsOSBAQAogCQkJCUJDNDgzOUJBMjY0NjE4MUEwMEEyOEI2
MiAvKiBQaXhlbEJ1ZmZlci5oICovLAogCQkJCUJDMENBNzREMjY0QUVEMEEwMDRGREM2MiAvKiBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwICovLAogCQkJCUJDMENBNzRDMjY0QUVEMEEwMDRGREM2
MiAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLywKKwkJCQlCQzYzNUU4RjI2NEMyRUNFMDAw
RUYzM0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuY3BwICovLAorCQkJCUJDNjM1RThCMjY0QzJDQUUw
MDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovLAorCQkJCUJDNjM1RTkwMjY0QzQ2OUYw
MDBFRjMzQSAvKiBQaXhlbEZvcm1hdC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0Yx
OUIzIC8qIFBpeGVsRm9ybWF0LmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8q
IFBsYXRmb3JtSW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxh
dGZvcm1JbWFnZUJ1ZmZlci5oICovLApAQCAtMzQ0NjksNiArMzQ0NzksOCBAQAogCQkJCUQwRkYy
QTVFMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0U2OTFFNTI2NDYzN0ZDMDBFQkRDM0EgLyogUGl4ZWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzYzNUU4RTI2NEMyQ0U3MDAwRUYzM0EgLyogUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzYzNUU4QzI2NEMyQ0FFMDAwRUYz
M0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTU1OTE0MjYz
REJENzkwMDdGMTlCMyAvKiBQaXhlbEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFRkEy
MjgxRTc2NjlFODAwMEFFOTlDIC8qIFBsYXRmb3JtQXVkaW9EYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAy
NzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDggQEAgUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUo
Y29ucwogICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEoeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgc2l6
ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOworICAgIAorICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEltYWdlRGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9
LCBzaXplLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CiB9CiAKIFJlZlB0cjxJbWFn
ZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENs
YW1wZWRBcnJheT4mJiBieXRlQXJyYXkpCkBAIC03Miw3ICs3Myw3IEBAIFJlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnMKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dl
ZCgpIHx8IGRhdGFTaXplLnVuc2FmZUdldCgpID4gYnl0ZUFycmF5LT5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEo
eyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgc2l6ZSwg
V1RGTW92ZShieXRlQXJyYXkpIH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURh
dGEoeyB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgV1RGTW92ZShi
eXRlQXJyYXkpIH0pKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0
YTo6Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCkKQEAgLTg5LDcgKzkwLDcgQEAgRXhj
ZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKICAgICB9CiAgICAgYnl0
ZUFycmF5LT56ZXJvRmlsbCgpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW1hZ2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIGJ5
dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPEltYWdl
RGF0YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRlQXJy
YXksIHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHVibGljOgogCiAgICAg
UmVmPEltYWdlRGF0YT4gZGVlcENsb25lKCkgY29uc3Q7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuY29sb3JTcGFj
ZSgpOyB9Ci0gICAgUGl4ZWxGb3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1
ZmZlci5mb3JtYXQoKTsgfQotCiAgICAgY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlcjsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
bHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKK3sK
KyAgICBzd2l0Y2ggKHByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgY2FzZSBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICB0cyA8PCAicHJlbXVsdGlwbGllZCI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkOgorICAgICAgICB0cyA8PCAidW5wcmVtdWx0aXBsaWVkIjsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24u
aAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
IFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3IKIH0KIAogbmFtZXNwYWNl
IFdURiB7CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAg
IFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24sCkBAIC00Nyw0ICs0OCw1IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWwKICAgICAgICAgV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCiAgICAgPjsKIH07CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE3ICsxODIsNCBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMCiAgICAgcmV0dXJuIHRz
OwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIHByZW11bHRpcGxpY2F0aW9uKQotewotICAgIHN3aXRjaCAocHJlbXVsdGlw
bGljYXRpb24pIHsKLSAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxp
ZWQ6Ci0gICAgICAgIHRzIDw8ICJwcmVtdWx0aXBsaWVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6Ci0gICAgICAgIHRz
IDw8ICJ1bnByZW11bHRpcGxpZWQiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHRzOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHJl
dmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE3ICs5NSwxNiBAQCBWZWN0
b3I8dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdCg0ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOwogCisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRpb25Gb3JtYXQgeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lv
blZpZXcgc291cmNlOwotICAgIHNvdXJjZS5hbHBoYUZvcm1hdCA9IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQ7Ci0gICAgc291cmNlLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgc291cmNlLnBpeGVsRm9ybWF0ID0gcGl4ZWxGb3JtYXQo
KTsKKyAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9ybWF0OwogICAgIHNvdXJjZS5ieXRlc1Bl
clJvdyA9IGJ5dGVzUGVyUm93KCk7CiAgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKTsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25W
aWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ID0gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOwotICAgIGRlc3RpbmF0aW9uLmNvbG9yU3Bh
Y2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRpb24ucGl4ZWxG
b3JtYXQgPSBQaXhlbEZvcm1hdDo6QkdSQTg7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVz
dGluYXRpb25Gb3JtYXQ7CiAgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBsb2dpY2FsU2l6
ZSgpLndpZHRoKCkgKiA0OwogICAgIGRlc3RpbmF0aW9uLnJvd3MgPSByZXN1bHQuZGF0YSgpOwog
CkBAIC0xMTgsOSArMTE3LDkgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFj
a2VuZAogewogICAgIGF1dG8gc291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3JkaW5hdGVz
KHNvdXJjZVJlY3QpOwogCi0gICAgYXV0byBkZXN0aW5hdGlvblBpeGVsRm9ybWF0ID0gUGl4ZWxG
b3JtYXQ6OlJHQkE4OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsg
ZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfTsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdGluYXRpb25QaXhlbEZv
cm1hdCwgc291cmNlUmVjdFNjYWxlZC5zaXplKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVk
LnNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIApAQCAtMTQyLDE3ICsxNDEsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdl
QnVmZmVyQmFja2VuZAogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSA0ICog
c291cmNlUmVjdFNjYWxlZC53aWR0aCgpOwogICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93cyA9
IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3Rp
bmF0aW9uQnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKIAorICAgIFBpeGVs
QnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9Owor
CiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2Uu
YWxwaGFGb3JtYXQgPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOwotICAg
IHNvdXJjZS5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwotICAgIHNv
dXJjZS5waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0KCk7CisgICAgc291cmNlLmZvcm1hdCA9IHNv
dXJjZUZvcm1hdDsKICAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsK
ICAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9IGRl
c3RpbmF0aW9uQWxwaGFGb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uY29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9IGRl
c3RpbmF0aW9uUGl4ZWxGb3JtYXQ7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRp
b25Gb3JtYXQ7CiAgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVz
UGVyUm93OwogICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CiAKQEAgLTE2
NCw3ICsxNjEsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kCiB2
b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBzb3VyY2VBbHBoYUZvcm1hdCwgY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb25Qb2lu
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCB2b2lkKiBk
YXRhKQogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLVJHQkE4IHBpeGVsIGZv
cm1hdHMuCi0gICAgQVNTRVJUKHBpeGVsQnVmZmVyLmZvcm1hdCgpID09IFBpeGVsRm9ybWF0OjpS
R0JBOCk7CisgICAgQVNTRVJUKHBpeGVsQnVmZmVyLmZvcm1hdCgpLnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpSR0JBOCk7CiAKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tl
bmRDb29yZGluYXRlcyhzb3VyY2VSZWN0KTsKICAgICBhdXRvIGRlc3RpbmF0aW9uUG9pbnRTY2Fs
ZWQgPSB0b0JhY2tlbmRDb29yZGluYXRlcyhkZXN0aW5hdGlvblBvaW50KTsKQEAgLTE4OCwxNyAr
MTg1LDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigKICAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKICAgICB1aW50
OF90KiBkZXN0aW5hdGlvblJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSAr
IGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRp
b25SZWN0LngoKSAqIDQ7CiAKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBz
b3VyY2VBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7IGRl
c3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiB9OworCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsK
LSAgICBzb3VyY2UuYWxwaGFGb3JtYXQgPSBzb3VyY2VBbHBoYUZvcm1hdDsKLSAgICBzb3VyY2Uu
Y29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBzb3VyY2UucGl4
ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdDo6UkdCQTg7CisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJj
ZUZvcm1hdDsKICAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKICAg
ICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJz
aW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9IGRlc3Rp
bmF0aW9uQWxwaGFGb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uY29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9IHBpeGVs
Rm9ybWF0KCk7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7CiAg
ICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwogICAg
IGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCShy
ZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDkgKzE2Miw5IEBAIG5hbWVz
cGFjZSBXVEYgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlByZXNl
cnZlUmVzb2x1dGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLAotICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
bjo6Tm8sCi0gICAgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMKKyAgICAgICAgV2Vi
Q29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLAorICAgICAgICBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vLAorICAgICAgICBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246OlllcwogICAg
ID47CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMxICsz
MSwzMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNoZWNrZWQ8dW5zaWduZWQsIFJlY29y
ZE92ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoUGl4ZWxGb3JtYXQgZm9y
bWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQorQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZs
b3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIE5PVEU6IE9ubHkgOC1i
aXQgZm9ybWF0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KLSAgICBBU1NFUlRfVU5VU0VEKGZv
cm1hdCwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcm1hdCwgZm9ybWF0LnBpeGVsRm9ybWF0
ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsK
IAogICAgIHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiBieXRlc1BlclBpeGVs
OwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRl
Y29kaW5nKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBmb3Jt
YXQsIGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQorT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBk
YXRhQnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JB
OCB8fCBmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBBU1NFUlQoY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0
LCBzaXplKS51bnNhZmVHZXQoKSA9PSBkYXRhQnl0ZUxlbmd0aCk7CiAKICAgICBhdXRvIHBpeGVs
QXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhQnl0
ZUxlbmd0aCk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotICAgIHJldHVybiB7IHsgY29sb3JTcGFjZSwgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5
LnJlbGVhc2VOb25OdWxsKCkgfSB9OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhl
bEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQorT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZv
cm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZv
cm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCi0gICAgQVNTRVJUKGZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNT
RVJUKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGJ1ZmZlclNpemUg
PSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChidWZmZXJTaXplLmhh
c092ZXJmbG93ZWQoKSkKQEAgLTYzLDEyICs2MywxMSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
UGl4ZWxCdWZmZXI6OnRyeUNyCiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAg
aWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVy
biB7IHsgY29sb3JTcGFjZSwgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxs
KCkgfSB9OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSB9OwogfQogCi1QaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IGZvcm1hdCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSkKLSAgICA6IG1fY29sb3JT
cGFjZSB7IGNvbG9yU3BhY2UgfQotICAgICwgbV9mb3JtYXQgeyBmb3JtYXQgfQorUGl4ZWxCdWZm
ZXI6OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IElu
dFNpemUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCisgICAgOiBt
X2Zvcm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KICAgICAsIG1fZGF0YSB7
IFdURk1vdmUoZGF0YSkgfQogewpAQCAtNzksMTIgKzc4LDEyIEBAIFBpeGVsQnVmZmVyOjp+UGl4
ZWxCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKIFBpeGVsQnVmZmVyIFBpeGVsQnVmZmVyOjpkZWVwQ2xv
bmUoKSBjb25zdAogewotICAgIHJldHVybiB7IG1fY29sb3JTcGFjZSwgbV9mb3JtYXQsIG1fc2l6
ZSwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5sZW5n
dGgoKSkgfTsKKyAgICByZXR1cm4geyBtX2Zvcm1hdCwgbV9zaXplLCBVaW50OENsYW1wZWRBcnJh
eTo6Y3JlYXRlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPmxlbmd0aCgpKSB9OwogfQogCiBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4
ZWxCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIHRzIDw8ICZwaXhlbEJ1ZmZlci5kYXRhKCk7CisgICAg
cmV0dXJuIHRzIDw8ICZwaXhlbEJ1ZmZlci5kYXRhKCkgPDwgImZvcm1hdCAoICIgPDwgcGl4ZWxC
dWZmZXIuZm9ybWF0KCkgPDwgIikiOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDggKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKICNpbmNsdWRlICJQaXhl
bEZvcm1hdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+
CiAKQEAgLTM5LDE2ICs0MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQaXhlbEJ1
ZmZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGl4ZWxCdWZmZXIpOwogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmKTsKIAotICAgIFBpeGVsQnVm
ZmVyKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmLCBS
ZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJy
YXk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxC
dWZmZXIoUGl4ZWxCdWZmZXImJikgPSBkZWZhdWx0OwogICAgIFBpeGVsQnVmZmVyJiBvcGVyYXRv
cj0oUGl4ZWxCdWZmZXImJikgPSBkZWZhdWx0OwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLSAgICBQaXhlbEZv
cm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQorICAgIGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIGNv
bnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBKU0M6OlVp
bnQ4Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAK
QEAgLTU4LDEyICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3Jl
YXRlRm9yRGVjb2RpbmcoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3Qg
SW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3Ro
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRP
dmVyZmxvdz4gY29tcHV0ZUJ1ZmZlclNpemUoUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZs
b3c+IGNvbXB1dGVCdWZmZXJTaXplKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50
U2l6ZSYpOwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLSAgICBQ
aXhlbEZvcm1hdCBtX2Zvcm1hdDsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX2Zvcm1hdDsKICAg
ICBJbnRTaXplIG1fc2l6ZTsKICAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gbV9kYXRh
OwogfTsKQEAgLTc0LDI0ICs3NCwxOCBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBp
eGVsQnVmZmVyCiB7CiAgICAgQVNTRVJUKG1fZGF0YS0+Ynl0ZUxlbmd0aCgpID09IChtX3NpemUu
YXJlYSgpLnVuc2FmZUdldCgpICogNCkpOwogCi0gICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7
CiAgICAgZW5jb2RlciA8PCBtX2Zvcm1hdDsKLSAgICBlbmNvZGVyIDw8IG1fc2l6ZTsKICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5ieXRl
TGVuZ3RoKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBQaXhlbEZv
cm1hdCBmb3JtYXQ7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisg
ICAgaWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3Jt
YXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAogICAgIEludFNpemUgc2l6ZTsKQEAgLTEwNiw3ICsxMDAsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRl
bXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFBpeGVs
QnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb2xvclNwYWNlLCBmb3JtYXQsIHNpemUsIGJ1
ZmZlclNpemUpOworICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRl
Y29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkocmV2
aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDE0IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SW1hZ2VQaXhlbHNBY2MKICAgICBhdXRvIHNvdXJjZVZJ
bWFnZUJ1ZmZlciA9IG1ha2VWSW1hZ2VCdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvblNpemUpOwog
ICAgIGF1dG8gZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIgPSBtYWtlVkltYWdlQnVmZmVyKGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogCi0gICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCAh
PSBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCkgewotICAgICAgICBpZiAoZGVzdGluYXRpb24uYWxw
aGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCkK
KyAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCAhPSBkZXN0aW5hdGlvbi5mb3JtYXQu
YWxwaGFGb3JtYXQpIHsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1h
dCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCkK
ICAgICAgICAgICAgICAgICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc291cmNl
VkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIGt2SW1hZ2VOb0ZsYWdzKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0
YV9CR1JBODg4OCgmc291cmNlVkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIs
IGt2SW1hZ2VOb0ZsYWdzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzb3Vy
Y2UucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQorICAgICAgICAgICAgaWYgKHNv
dXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQogICAgICAgICAg
ICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNv
dXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVyLCBrdkltYWdlTm9GbGFn
cyk7CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb252ZXJ0SW1hZ2VQaXhl
bHNBY2MKICAgICAgICAgc291cmNlVkltYWdlQnVmZmVyID0gZGVzdGluYXRpb25WSW1hZ2VCdWZm
ZXI7CiAgICAgfQogCi0gICAgaWYgKHNvdXJjZS5waXhlbEZvcm1hdCAhPSBkZXN0aW5hdGlvbi5w
aXhlbEZvcm1hdCkgeworICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ICE9IGRlc3Rp
bmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCkgewogICAgICAgICAvLyBTd2FwIHBpeGVsIGNoYW5u
ZWxzIEJHUkEgPC0+IFJHQkEuCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CiAgICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc291cmNl
VkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG1hcCwga3ZJbWFnZU5vRmxh
Z3MpOwpAQCAtMTgwLDQyICsxODAsNDIgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRJbWFn
ZVBpeGVsc1VuYQogdm9pZCBjb252ZXJ0SW1hZ2VQaXhlbHMoY29uc3QgQ29uc3RQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3JiBzb3VyY2UsIGNvbnN0IFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUpCiB7CiAgICAgLy8g
V2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgY29udmVydGluZyBwaXhlbCBkYXRhIHdpdGggbm9u
LTgtYml0IGJ1ZmZlcnMuCi0gICAgQVNTRVJUKHNvdXJjZS5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6UkdCQTggfHwgc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7
Ci0gICAgQVNTRVJUKGRlc3RpbmF0aW9uLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JB
OCB8fCBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IEFTU0VSVChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
QVNTRVJUKGRlc3RpbmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBjb252ZXJ0aW5nIHBpeGVs
IGRhdGEgYmV0d2VlbiBkaWZmZXJlbnQgY29sb3Igc3BhY2VzLgotICAgIEFTU0VSVChzb3VyY2Uu
Y29sb3JTcGFjZSA9PSBkZXN0aW5hdGlvbi5jb2xvclNwYWNlKTsKKyAgICBBU1NFUlQoc291cmNl
LmZvcm1hdC5jb2xvclNwYWNlID09IGRlc3RpbmF0aW9uLmZvcm1hdC5jb2xvclNwYWNlKTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFKQotICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gZGVzdGlu
YXRpb24uYWxwaGFGb3JtYXQgJiYgc291cmNlLnBpeGVsRm9ybWF0ID09IGRlc3RpbmF0aW9uLnBp
eGVsRm9ybWF0KSB7CisgICAgaWYgKHNvdXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gZGVzdGlu
YXRpb24uZm9ybWF0LmFscGhhRm9ybWF0ICYmIHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0g
ZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0KSB7CiAgICAgICAgIC8vIEZJWE1FOiBDYW4g
dGhlcyBib3RoIGp1c3QgdXNlIHBlci1yb3cgbWVtY3B5PwotICAgICAgICBpZiAoc291cmNlLmFs
cGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCisgICAg
ICAgIGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2Vs
ZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQ8UGl4
ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b25TaXplKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxzVW5h
Y2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11bHRpcGxpZWRUb1VucHJlbXVsdGlw
bGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvblNpemUpOwogICAgIH0gZWxzZQogICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNB
Y2NlbGVyYXRlZChzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogI2Vsc2UK
LSAgICBpZiAoc291cmNlLmFscGhhRm9ybWF0ID09IGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0KSB7
Ci0gICAgICAgIGlmIChzb3VyY2UucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24ucGl4ZWxGb3Jt
YXQpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZv
cm1hdCA9PSBkZXN0aW5hdGlvbi5mb3JtYXQuYWxwaGFGb3JtYXQpIHsKKyAgICAgICAgaWYgKHNv
dXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0
KSB7CisgICAgICAgICAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJ
bWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRv
UHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5w
cmVtdWx0aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25l
Pj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpCisgICAgICAgICAgICBpZiAoZGVzdGluYXRp
b24uZm9ybWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCkKICAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVk
PGNvbnZlcnRTaW5nbGVQaXhlbFByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQ8UGl4ZWxGb3Jt
YXRDb252ZXJzaW9uOjpQZXJtdXRlPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25T
aXplKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhl
bHNVbmFjY2VsZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFVucHJlbXVsdGlwbGllZFRvVW5wcmVt
dWx0aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6UGVybXV0ZT4+KHNvdXJjZSwgZGVzdGlu
YXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAg
ICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ID09IGRlc3RpbmF0aW9uLnBpeGVsRm9ybWF0KSB7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlLmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQpCisgICAgICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0
ID09IGRlc3RpbmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCkgeworICAgICAgICAgICAgaWYgKHNv
dXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCkKICAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVk
PGNvbnZlcnRTaW5nbGVQaXhlbFByZW11bHRpcGxpZWRUb1VucHJlbXVsdGlwbGllZDxQaXhlbEZv
cm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNp
emUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVs
c1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5wcmVtdWx0aXBsaWVkVG9QcmVtdWx0
aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZGVz
dGluYXRpb24uYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkKQorICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1hdCA9
PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAg
ICAgY29udmVydEltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxQcmVt
dWx0aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpQZXJtdXRl
Pj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvbnZl
cnRTaW5nbGVQaXhlbFVucHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENv
bnZlcnNpb246OlBlcm11dGU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252
ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSwyNiArMjUsMjAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQaXhl
bEJ1ZmZlckZvcm1hdC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFNpemU7
CiAKLWVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNs
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIFBpeGVsRm9y
bWF0IDogdWludDhfdDsKLQogc3RydWN0IFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgewotICAg
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93OwogICAgIHVp
bnQ4X3QqIHJvd3M7CiB9OwogCiBzdHJ1Y3QgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0Owor
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdzsK
ICAgICBjb25zdCB1aW50OF90KiByb3dzOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3Jt
YXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgcGl4ZWxCdWZmZXIpCit7CisgICAgcmV0dXJuIHRzIDw8IHBpeGVsQnVmZmVyLmFscGhhRm9y
bWF0IDw8ICIgIiA8PCBwaXhlbEJ1ZmZlci5waXhlbEZvcm1hdCA8PCAiICIgPDwgcGl4ZWxCdWZm
ZXIuY29sb3JTcGFjZTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2Uu
aCIKKyNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFBpeGVsQnVmZmVyRm9ybWF0IHsKKyAgICBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OworICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0OworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOworCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4g
ZGVjb2RlKERlY29kZXImKTsKK307CisKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYpOwor
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyRm9ybWF0OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGFscGhhRm9ybWF0Owor
ICAgIGVuY29kZXIgPDwgcGl4ZWxGb3JtYXQ7CisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4g
UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShh
bHBoYUZvcm1hdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBpeGVsRm9ybWF0KSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IGFscGhhRm9ybWF0LCBw
aXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK3sKKyAgICBzd2l0Y2gg
KHBpeGVsRm9ybWF0KSB7CisgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCQTg6CisgICAgICAgIHRz
IDw8ICJSR0JBOCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGl4ZWxGb3JtYXQ6OkJHUkE4
OgorICAgICAgICB0cyA8PCAiQkdSQTgiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBpeGVs
Rm9ybWF0OjpSR0IxMDoKKyAgICAgICAgdHMgPDwgIlJHQjEwIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCMTBBODoKKyAgICAgICAgdHMgPDwgIlJHQjEwQTgiOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgJKHJldmlzaW9u
IDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDggQEAgZW51bSBjbGFzcyBQaXhlbEZvcm1h
dCA6IHVpbnQ4X3QgewogICAgIFJHQjEwQTgsCiB9OwogCitXRUJDT1JFX0VYUE9SVCBXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgUGl4ZWxGb3JtYXQpOworCiB9
CiAKIG5hbWVzcGFjZSBXVEYgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3
ICs3OSw4IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIHsKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICAgICBTY29wZWRQaXhlbFN0b3JhZ2VNb2RlIHBhY2tBbGlnbm1lbnQoR0xfUEFD
S19BTElHTk1FTlQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzM3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dEdMQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VT
aXplID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6
Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UocGl4ZWxCdWZmZXIuY29sb3JTcGFjZSgpKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKKyAgICBhdXRvIGlt
YWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgo
KSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBi
aXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMn
cyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0
aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAx
LDcgKzIwMSw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW4KICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4
ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUo
aW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNp
emUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLT5jb2xvclNwYWNlKCkp
LCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwg
ZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkp
OworICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNo
ZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0g
ZWxzZSBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0g
UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKICAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNv
cHlOYXRpdmVJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKICAgICAgICAgaWYgKCFuYXRpdmVJbWFn
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
VXRpbGl0aWVzQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCShyZXZpc2lvbiAyNzczNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGll
c0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBjZkRhdGEoY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBhdXRvIGltYWdlU2l6ZSA9IHNvdXJjZS5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4
LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2Uoc291cmNlLmNv
bG9yU3BhY2UoKSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNo
ZWRDR0NvbG9yU3BhY2Uoc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRl
T3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogCiAgICAgYXV0byBjZkRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwogICAgIGlm
ICghZW5jb2RlSW1hZ2UoaW1hZ2UuZ2V0KCksIHV0aS5nZXQoKSwgcXVhbGl0eSwgY2ZEYXRhLmdl
dCgpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5t
dWx0aXBsaWVkUmVzdWwKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQ
YWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVO
ZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1f
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAgbV91bm11bHRpcGxpZWRJbWFnZVJl
c3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIGlucHV0U2l6ZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
ICAgICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZShmb3JtYXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBpZiAoIW1fdW5tdWx0aXBsaWVkSW1h
Z2VSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY29weVVucHJl
bXVsdGlwbHlpbmdBbHBoYShtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCksIGlucHV0U2l6ZSk7CkBAIC01MzgsNyArNTM5
LDggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0aXBsaWVkUmVzdQogICAgICAgICAg
ICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7
CiAgICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0g
ICAgICAgICAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgsIGlu
cHV0U2l6ZSk7CisgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgbV9wcmVtdWx0aXBsaWVkSW1h
Z2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAg
ICAgICAgICAgIGlmICghbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgY29weVByZW11bHRpcGx5aW5nQWxwaGEobV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdC0+ZGF0YSgpLCBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdC0+ZGF0
YSgpLCBpbnB1dFNpemUpOwpAQCAtNTgwLDcgKzU4Miw4IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1w
aW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5
Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBy
ZXN1bHRTaXplKTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBp
eGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCByZXN1bHRTaXplKTsKICAgICByZXR1cm4gbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KIApAQCAtNTk4LDcgKzYwMSw4IEBAIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmUKICAgICBJbnRTaXplIHJlc3VsdFNpemUo
bV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKICAgICByZXN1bHRTaXplLnNjYWxlKG1fZmls
dGVyLmZpbHRlclNjYWxlKCkpOwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4
ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgcmVzdWx0U2l6ZSk7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCByZXN1bHRTaXplKTsKICAg
ICByZXR1cm4gbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCShyZXZpc2lvbiAyNzczNzEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQs
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3Jt
YXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NzczODEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDIxLTA1LTEyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9ybWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4
ZWxCdWZmZXJGb3JtYXQgc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgQWRvcHQgUGl4ZWxCdWZmZXJGb3JtYXQuCisKIDIwMjEtMDUtMTIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZv
bGxvdy11cCB0byByMjc3Mzc2LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgJKHJl
dmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDgg
QEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBXZWJDb3JlOjpQaXhlbEZvcm1hdDo6UkdC
QTgsIHNyY1JlY3Quc2l6ZSgpKTsKKyAgICAgICAgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQg
ZGVzdGluYXRpb25Gb3JtYXQgeyBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OlBpeGVsRm9ybWF0OjpS
R0JBOCwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0
aW9uRm9ybWF0LCBzcmNSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICBzaXplX3QgZGF0YVNpemUg
PSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmJ5dGVMZW5ndGgoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428542</attachid>
            <date>2021-05-13 12:06:18 -0700</date>
            <delta_ts>2021-05-13 12:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225707-20210513120617.patch</filename>
            <type>text/plain</type>
            <size>54107</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzM4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDIxLTA1LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9y
bWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4ZWxCdWZmZXJGb3JtYXQgc3RydWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU3MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTcGxpdHMgb3V0IFBpeGVsQnVm
ZmVyRm9ybWF0IGludG8gYSBuZXcgc3RydWN0IGFuZCBhZG9wdHMgaXQgYnkgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldywKKyAgICAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGFu
ZCBQaXhlbEJ1ZmZlci4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgUGl4ZWxCdWZmZXIgbm93CisgICAg
ICAgIHRyYWNrcyB0aGUgYWxwaGEgZm9ybWF0IG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3aGlj
aCB3aWxsIGNvbWUgaW4gaGFuZHkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICBBZGQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgYW5k
IG1vdmUgVGV4dFN0cmVhbSBzdXBwb3J0CisgICAgICAgIGhlcmUgZnJvbSBHcmFwaGljc1R5cGVz
LmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgor
ICAgICAgICBNb3ZlIEFscGhhUHJlbXVsdGlwbGljYXRpb24gVGV4dFN0cmVhbSB0byB0aGUgbW9y
ZSBhcHByb3ByaWF0ZQorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcC4KKworICAg
ICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEYXRhOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGF0YTo6Zm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmNvbXB1
dGVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGVG
b3JEZWNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6ZGVlcENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBpeGVsQnVmZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGl4ZWxCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Y29s
b3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBp
eGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVscyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZl
ckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1h
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAg
ICAgQWRvcHQgUGl4ZWxCdWZmZXJGb3JtYXQuCisKIDIwMjEtMDUtMTIgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgSGFzaFNldDxSZWZQ
dHI8Tm9kZT4+IGluc3RlYWQgb2YgSGFzaFNldDxOb2RlKj4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtMTI5MCw2ICsxMjkwLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRpZXMuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtRGlzcGxheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MzcsNiArMTkzNyw3IEBAIHBsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWEKIHBsYXRmb3JtL2dhbWVwYWQvRW1wdHlHYW1l
cGFkUHJvdmlkZXIuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRDb25zdGFudHMuY3BwCiBw
bGF0Zm9ybS9nYW1lcGFkL0dhbWVwYWRQcm92aWRlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0Fs
cGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFt
ZVJhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmNwcApAQCAtMjAxNCw2ICsyMDE1LDggQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5QmFzZS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA1OCw2ICs0MDU4LDggQEAKIAkJQkM2MDQ5
Q0MwREI1NjBDMjAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwNDlDQjBEQjU2MEMyMDAyMDQ3MzkgLyog
Q1NTQ2FudmFzVmFsdWUuaCAqLzsgfTsKIAkJQkM2MEQ2RTkwRDI4RDgzNDAwQjk5MThGIC8qIERP
TUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM2MEQ2RTgwRDI4RDgzNDAwQjk5MThGIC8qIERPTUV4Y2VwdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNjBEN0MxMEQyOUE0NjMw
MEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM2MEQ3QkYwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0
aW9uLmggKi87IH07CisJCUJDNjM1RThDMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZv
cm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2
MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM2MzVFOEUyNjRDMkNFNzAw
MEVGMzNBIC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwQ0E3NEMyNjRBRUQwQTAwNEZEQzYyIC8qIFBpeGVs
QnVmZmVyQ29udmVyc2lvbi5oICovOyB9OwogCQlCQzY0NjQwQTExRDdGMzA0MDA2NDU1QjAgLyog
RE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzY0NjQwODExRDdGMzA0MDA2NDU1QjAgLyogRE9NU3RyaW5nTWFwLmggKi87IH07CiAJ
CUJDNjQ2NDFDMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQxQTExRDdGNDE2
MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oICovOyB9OwogCQlCQzY0NjQ5ODExRDgy
MzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDk2MTFEODIzNDkwMDY0NTVCMCAvKiBKU0RPTVN0
cmluZ01hcC5oICovOyB9OwpAQCAtMTQyNDYsNiArMTQyNDgsMTAgQEAKIAkJQkM2MEQ2RUIwRDI4
RDk5OTAwQjk5MThGIC8qIERPTUV4Y2VwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RE9NRXhjZXB0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2MEQ3QkUw
RDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkM2MEQ3QkYwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NRXhjZXB0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRXhjZXB0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhl
bEJ1ZmZlckZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaXhlbEJ1ZmZlckZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU4RjI2NEMyRUNFMDAwRUYzM0EgLyogUGl4
ZWxCdWZmZXJGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxCdWZmZXJGb3JtYXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU5MDI2NEM0NjlGMDAwRUYz
M0EgLyogUGl4ZWxGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxGb3JtYXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU5MTI2NEM0NzYwMDAwRUYzM0Eg
LyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NDY0
MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01TdHJpbmdNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM2NDY0MUExMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YXNldERPTVN0cmluZ01hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzY0NjQxQjExRDdGNDE2MDA2NDU1QjAgLyogRGF0
YXNldERPTVN0cmluZ01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEYXRhc2V0RE9NU3RyaW5nTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2ODQ4LDYgKzI2ODU0LDcgQEAKIAkJCQlGQkMyMjBERDEyMzdGQkVCMDBCQ0Y3ODggLyogb3Bl
bmdsICovLAogCQkJCTM3MjE0OTMzMThGMEI2RDYwMDE1NkVEQyAvKiBvcGVudHlwZSAqLywKIAkJ
CQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLywKKwkJCQlCQzYzNUU5
MTI2NEM0NzYwMDAwRUYzM0EgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgKi8sCiAJCQkJ
NzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLywK
IAkJCQkwRjdFNDc1MzI1RUVCNzlCMDAxM0Y5MDkgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICov
LAogCQkJCTBGN0U0NzU0MjVFRUI3OUIwMDEzRjkwOSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICov
LApAQCAtMjcwNTcsNiArMjcwNjQsOSBAQAogCQkJCUJDNDgzOUJBMjY0NjE4MUEwMEEyOEI2MiAv
KiBQaXhlbEJ1ZmZlci5oICovLAogCQkJCUJDMENBNzREMjY0QUVEMEEwMDRGREM2MiAvKiBQaXhl
bEJ1ZmZlckNvbnZlcnNpb24uY3BwICovLAogCQkJCUJDMENBNzRDMjY0QUVEMEEwMDRGREM2MiAv
KiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLywKKwkJCQlCQzYzNUU4RjI2NEMyRUNFMDAwRUYz
M0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuY3BwICovLAorCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBF
RjMzQSAvKiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovLAorCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBF
RjMzQSAvKiBQaXhlbEZvcm1hdC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIz
IC8qIFBpeGVsRm9ybWF0LmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBs
YXRmb3JtSW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZv
cm1JbWFnZUJ1ZmZlci5oICovLApAQCAtMzQ0NjksNiArMzQ0NzksOCBAQAogCQkJCUQwRkYyQTVF
MTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U2
OTFFNTI2NDYzN0ZDMDBFQkRDM0EgLyogUGl4ZWxCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEN0QzMzQ0MUM3QTEyM0YwMDA0MTI5MyAvKiBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQzYzNUU4RTI2NEMyQ0U3MDAwRUYzM0EgLyogUGl4ZWxCdWZmZXJD
b252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzYzNUU4QzI2NEMyQ0FFMDAwRUYzM0Eg
LyogUGl4ZWxCdWZmZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQTU1OTE0MjYzREJE
NzkwMDdGMTlCMyAvKiBQaXhlbEZvcm1hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFRkEyMjgx
RTc2NjlFODAwMEFFOTlDIC8qIFBsYXRmb3JtQXVkaW9EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCShyZXZpc2lvbiAyNzcz
NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDggQEAgUmVmUHRyPEltYWdlRGF0YT4gSW1hZ2VEYXRhOjpjcmVhdGUoY29u
cwogICAgIGF1dG8gYnl0ZUFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQoZGF0YVNpemUudW5zYWZlR2V0KCkpOwogICAgIGlmICghYnl0ZUFycmF5KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEo
eyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgc2l6ZSwg
Ynl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOworICAgIAorICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBz
aXplLCBieXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CiB9CiAKIFJlZlB0cjxJbWFnZURh
dGE+IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFJlZjxVaW50OENsYW1w
ZWRBcnJheT4mJiBieXRlQXJyYXkpCkBAIC03Miw3ICs3Myw3IEBAIFJlZlB0cjxJbWFnZURhdGE+
IEltYWdlRGF0YTo6Y3JlYXRlKGNvbnMKICAgICBpZiAoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgp
IHx8IGRhdGFTaXplLnVuc2FmZUdldCgpID4gYnl0ZUFycmF5LT5sZW5ndGgoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEoeyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgc2l6ZSwgV1RG
TW92ZShieXRlQXJyYXkpIH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEo
eyB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgc2l6ZSwgV1RGTW92ZShieXRl
QXJyYXkpIH0pKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6
Y3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCkKQEAgLTg5LDcgKzkwLDcgQEAgRXhjZXB0
aW9uT3I8UmVmPEltYWdlRGF0YT4+IEltYWdlRGF0YTo6YwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgUmFuZ2VFcnJvciwgIk91dCBvZiBtZW1vcnkiX3MgfTsKICAgICB9CiAgICAgYnl0ZUFy
cmF5LT56ZXJvRmlsbCgpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGF0YSh7IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBzaXplLCBieXRl
QXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1h
Z2VEYXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIGJ5dGVB
cnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IEltYWdlRGF0YTo6Y3JlYXRlKFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiBieXRlQXJyYXks
IHVuc2lnbmVkIHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEYXRhLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgcHVibGljOgogCiAgICAgUmVm
PEltYWdlRGF0YT4gZGVlcENsb25lKCkgY29uc3Q7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXIuY29sb3JTcGFjZSgp
OyB9Ci0gICAgUGl4ZWxGb3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZl
ci5mb3JtYXQoKTsgfQotCiAgICAgY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlcjsgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKHByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgY2FzZSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICB0cyA8PCAicHJlbXVsdGlwbGllZCI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkOgorICAgICAgICB0cyA8PCAidW5wcmVtdWx0aXBsaWVkIjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAko
cmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3IKIH0KIAogbmFtZXNwYWNlIFdU
RiB7CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdl
YkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24sCkBAIC00Nyw0ICs0OCw1IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QWwKICAgICAgICAgV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkCiAgICAgPjsKIH07CisKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
Y3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDE3ICsxODIsNCBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMCiAgICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uIHByZW11bHRpcGxpY2F0aW9uKQotewotICAgIHN3aXRjaCAocHJlbXVsdGlwbGlj
YXRpb24pIHsKLSAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ6
Ci0gICAgICAgIHRzIDw8ICJwcmVtdWx0aXBsaWVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6Ci0gICAgICAgIHRzIDw8
ICJ1bnByZW11bHRpcGxpZWQiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRz
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHJldmlz
aW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDE3ICs5NSwxNiBAQCBWZWN0b3I8
dWludDhfdD4gSW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3VsdCg0ICogbG9naWNhbFNpemUoKS5hcmVhKCkudW5zYWZlR2V0KCkpOwogCisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07
CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRpb25Gb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZp
ZXcgc291cmNlOwotICAgIHNvdXJjZS5hbHBoYUZvcm1hdCA9IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQ7Ci0gICAgc291cmNlLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0I7Ci0gICAgc291cmNlLnBpeGVsRm9ybWF0ID0gcGl4ZWxGb3JtYXQoKTsK
KyAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlRm9ybWF0OwogICAgIHNvdXJjZS5ieXRlc1BlclJv
dyA9IGJ5dGVzUGVyUm93KCk7CiAgICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKTsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ID0gQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOwotICAgIGRlc3RpbmF0aW9uLmNvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRpb24ucGl4ZWxGb3Jt
YXQgPSBQaXhlbEZvcm1hdDo6QkdSQTg7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGlu
YXRpb25Gb3JtYXQ7CiAgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBsb2dpY2FsU2l6ZSgp
LndpZHRoKCkgKiA0OwogICAgIGRlc3RpbmF0aW9uLnJvd3MgPSByZXN1bHQuZGF0YSgpOwogCkBA
IC0xMTgsOSArMTE3LDkgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2Vu
ZAogewogICAgIGF1dG8gc291cmNlUmVjdFNjYWxlZCA9IHRvQmFja2VuZENvb3JkaW5hdGVzKHNv
dXJjZVJlY3QpOwogCi0gICAgYXV0byBkZXN0aW5hdGlvblBpeGVsRm9ybWF0ID0gUGl4ZWxGb3Jt
YXQ6OlJHQkE4OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgZGVz
dGluYXRpb25BbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IgfTsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5
Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdGluYXRpb25QaXhlbEZvcm1h
dCwgc291cmNlUmVjdFNjYWxlZC5zaXplKCkpOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVkLnNp
emUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIApAQCAtMTQyLDE3ICsxNDEsMTUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVm
ZmVyQmFja2VuZAogICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSA0ICogc291
cmNlUmVjdFNjYWxlZC53aWR0aCgpOwogICAgIHVpbnQ4X3QqIGRlc3RpbmF0aW9uUm93cyA9IHBp
eGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0
aW9uQnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKIAorICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCiAg
ICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuYWxw
aGFGb3JtYXQgPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOwotICAgIHNv
dXJjZS5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwotICAgIHNvdXJj
ZS5waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0KCk7CisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJj
ZUZvcm1hdDsKICAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKICAg
ICBzb3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJz
aW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9IGRlc3Rp
bmF0aW9uQWxwaGFGb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uY29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9IGRlc3Rp
bmF0aW9uUGl4ZWxGb3JtYXQ7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25G
b3JtYXQ7CiAgICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVy
Um93OwogICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CiAKQEAgLTE2NCw3
ICsxNjEsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kCiB2b2lk
IEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBzb3VyY2VBbHBoYUZvcm1hdCwgY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb25Qb2ludCwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCB2b2lkKiBkYXRh
KQogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9uLVJHQkE4IHBpeGVsIGZvcm1h
dHMuCi0gICAgQVNTRVJUKHBpeGVsQnVmZmVyLmZvcm1hdCgpID09IFBpeGVsRm9ybWF0OjpSR0JB
OCk7CisgICAgQVNTRVJUKHBpeGVsQnVmZmVyLmZvcm1hdCgpLnBpeGVsRm9ybWF0ID09IFBpeGVs
Rm9ybWF0OjpSR0JBOCk7CiAKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tlbmRD
b29yZGluYXRlcyhzb3VyY2VSZWN0KTsKICAgICBhdXRvIGRlc3RpbmF0aW9uUG9pbnRTY2FsZWQg
PSB0b0JhY2tlbmRDb29yZGluYXRlcyhkZXN0aW5hdGlvblBvaW50KTsKQEAgLTE4OCwxNyArMTg1
LDE2IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigKICAgICB1bnNp
Z25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKICAgICB1aW50OF90
KiBkZXN0aW5hdGlvblJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRl
c3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CiAKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBzb3Vy
Y2VBbHBoYUZvcm1hdCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7IGRlc3Rp
bmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAg
ICBzb3VyY2UuYWxwaGFGb3JtYXQgPSBzb3VyY2VBbHBoYUZvcm1hdDsKLSAgICBzb3VyY2UuY29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBzb3VyY2UucGl4ZWxG
b3JtYXQgPSBQaXhlbEZvcm1hdDo6UkdCQTg7CisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZv
cm1hdDsKICAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBzb3VyY2VCeXRlc1BlclJvdzsKICAgICBz
b3VyY2Uucm93cyA9IHNvdXJjZVJvd3M7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9IGRlc3RpbmF0
aW9uQWxwaGFGb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjsKLSAgICBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9IHBpeGVsRm9y
bWF0KCk7CisgICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7CiAgICAg
ZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OwogICAgIGRl
c3RpbmF0aW9uLnJvd3MgPSBkZXN0aW5hdGlvblJvd3M7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCShyZXZp
c2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDkgKzE2Miw5IEBAIG5hbWVzcGFj
ZSBXVEYgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlByZXNlcnZl
UmVzb2x1dGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uLAotICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6
Tm8sCi0gICAgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMKKyAgICAgICAgV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uLAorICAgICAgICBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b246Ok5vLAorICAgICAgICBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246OlllcwogICAgID47
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMxICszMSwz
MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92
ZXJmbG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoUGl4ZWxGb3JtYXQgZm9ybWF0
LCBjb25zdCBJbnRTaXplJiBzaXplKQorQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYg
Zm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIC8vIE5PVEU6IE9ubHkgOC1iaXQg
Zm9ybWF0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KLSAgICBBU1NFUlRfVU5VU0VEKGZvcm1h
dCwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBBU1NFUlRfVU5VU0VEKGZvcm1hdCwgZm9ybWF0LnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKIAogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNDsKIAog
ICAgIHJldHVybiBzaXplLmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiBieXRlc1BlclBpeGVsOwog
fQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29k
aW5nKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBmb3JtYXQs
IGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKQorT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQaXhl
bEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBkYXRh
Qnl0ZUxlbmd0aCkKIHsKLSAgICBBU1NFUlQoZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NFUlQoZm9ybWF0LnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBBU1NFUlQoY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBz
aXplKS51bnNhZmVHZXQoKSA9PSBkYXRhQnl0ZUxlbmd0aCk7CiAKICAgICBhdXRvIHBpeGVsQXJy
YXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChkYXRhQnl0ZUxl
bmd0aCk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotICAgIHJldHVybiB7IHsgY29sb3JTcGFjZSwgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJl
bGVhc2VOb25OdWxsKCkgfSB9OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFy
cmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4
ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQorT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1h
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBOT1RFOiBPbmx5IDgtYml0IGZvcm1h
dHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCi0gICAgQVNTRVJUKGZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJU
KGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBj
b21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChidWZmZXJTaXplLmhhc092
ZXJmbG93ZWQoKSkKQEAgLTYzLDEyICs2MywxMSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4
ZWxCdWZmZXI6OnRyeUNyCiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYg
KCFwaXhlbEFycmF5KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiB7
IHsgY29sb3JTcGFjZSwgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkg
fSB9OworICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25O
dWxsKCkgfSB9OwogfQogCi1QaXhlbEJ1ZmZlcjo6UGl4ZWxCdWZmZXIoRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYgZGF0YSkKLSAgICA6IG1fY29sb3JTcGFj
ZSB7IGNvbG9yU3BhY2UgfQotICAgICwgbV9mb3JtYXQgeyBmb3JtYXQgfQorUGl4ZWxCdWZmZXI6
OlBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQsIGNvbnN0IEludFNp
emUmIHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCisgICAgOiBtX2Zv
cm1hdCB7IGZvcm1hdCB9CiAgICAgLCBtX3NpemUgeyBzaXplIH0KICAgICAsIG1fZGF0YSB7IFdU
Rk1vdmUoZGF0YSkgfQogewpAQCAtNzksMTIgKzc4LDEyIEBAIFBpeGVsQnVmZmVyOjp+UGl4ZWxC
dWZmZXIoKSA9IGRlZmF1bHQ7CiAKIFBpeGVsQnVmZmVyIFBpeGVsQnVmZmVyOjpkZWVwQ2xvbmUo
KSBjb25zdAogewotICAgIHJldHVybiB7IG1fY29sb3JTcGFjZSwgbV9mb3JtYXQsIG1fc2l6ZSwg
VWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5sZW5ndGgo
KSkgfTsKKyAgICByZXR1cm4geyBtX2Zvcm1hdCwgbV9zaXplLCBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPmxlbmd0aCgpKSB9OwogfQogCiBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxC
dWZmZXIpCiB7Ci0gICAgcmV0dXJuIHRzIDw8ICZwaXhlbEJ1ZmZlci5kYXRhKCk7CisgICAgcmV0
dXJuIHRzIDw8ICZwaXhlbEJ1ZmZlci5kYXRhKCkgPDwgImZvcm1hdCAoICIgPDwgcGl4ZWxCdWZm
ZXIuZm9ybWF0KCkgPDwgIikiOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDggKzI1LDEwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oIgogI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKICNpbmNsdWRlICJQaXhlbEZv
cm1hdC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAK
QEAgLTM5LDE2ICs0MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQaXhlbEJ1ZmZl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGl4ZWxCdWZmZXIpOwogcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZShjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmKTsKIAotICAgIFBpeGVsQnVmZmVy
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmLCBSZWY8
SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJik7CisgICAgUGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJiwgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QaXhlbEJ1ZmZlcigpOwogCiAgICAgUGl4ZWxCdWZm
ZXIoUGl4ZWxCdWZmZXImJikgPSBkZWZhdWx0OwogICAgIFBpeGVsQnVmZmVyJiBvcGVyYXRvcj0o
UGl4ZWxCdWZmZXImJikgPSBkZWZhdWx0OwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KLSAgICBQaXhlbEZvcm1h
dCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQorICAgIGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIGNvbnN0
IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBKU0M6OlVpbnQ4
Q2xhbXBlZEFycmF5JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKQEAg
LTU4LDEyICs1OSwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gdHJ5Q3JlYXRl
Rm9yRGVjb2RpbmcoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSW50
U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVs
QnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIHVuc2lnbmVkIGRhdGFCeXRlTGVuZ3RoKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDaGVja2VkPHVuc2lnbmVkLCBSZWNvcmRPdmVy
Zmxvdz4gY29tcHV0ZUJ1ZmZlclNpemUoUGl4ZWxGb3JtYXQsIGNvbnN0IEludFNpemUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+
IGNvbXB1dGVCdWZmZXJTaXplKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6
ZSYpOwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKLSAgICBQaXhl
bEZvcm1hdCBtX2Zvcm1hdDsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX2Zvcm1hdDsKICAgICBJ
bnRTaXplIG1fc2l6ZTsKICAgICBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gbV9kYXRhOwog
fTsKQEAgLTc0LDcgKzc0LDYgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1
ZmZlcgogewogICAgIEFTU0VSVChtX2RhdGEtPmJ5dGVMZW5ndGgoKSA9PSAobV9zaXplLmFyZWEo
KS51bnNhZmVHZXQoKSAqIDQpKTsKIAotICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOwogICAg
IGVuY29kZXIgPDwgbV9mb3JtYXQ7CiAgICAgZW5jb2RlciA8PCBtX3NpemU7CiAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+Ynl0ZUxlbmd0
aCgpLCAxKTsKQEAgLTgyLDE2ICs4MSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xv
clNwYWNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFBpeGVsRm9ybWF0
IGZvcm1hdDsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmb3JtYXQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBp
ZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5w
aXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgSW50U2l6ZSBzaXplOwpAQCAtMTA2LDcgKzEwMSw3IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29kZXIudGVtcGxh
dGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbG9yU3BhY2UsIGZvcm1hdCwgc2l6ZSwgYnVmZmVy
U2l6ZSk7CisgICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2Rp
bmcoZm9ybWF0LCBzaXplLCBidWZmZXJTaXplKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lv
biAyNzczNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxNCArNTYsMTQgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjYwogICAgIGF1dG8gc291cmNlVkltYWdl
QnVmZmVyID0gbWFrZVZJbWFnZUJ1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAg
YXV0byBkZXN0aW5hdGlvblZJbWFnZUJ1ZmZlciA9IG1ha2VWSW1hZ2VCdWZmZXIoZGVzdGluYXRp
b24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAKLSAgICBpZiAoc291cmNlLmFscGhhRm9ybWF0ICE9IGRl
c3RpbmF0aW9uLmFscGhhRm9ybWF0KSB7Ci0gICAgICAgIGlmIChkZXN0aW5hdGlvbi5hbHBoYUZv
cm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKLSAgICAg
ICAgICAgIGlmIChzb3VyY2UucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQorICAg
IGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0ICE9IGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBo
YUZvcm1hdCkgeworICAgICAgICBpZiAoZGVzdGluYXRpb24uZm9ybWF0LmFscGhhRm9ybWF0ID09
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkgeworICAgICAgICAgICAg
aWYgKHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQogICAg
ICAgICAgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzb3VyY2VWSW1h
Z2VCdWZmZXIsICZkZXN0aW5hdGlvblZJbWFnZUJ1ZmZlciwga3ZJbWFnZU5vRmxhZ3MpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZJbWFnZVVucHJlbXVsdGlwbHlEYXRhX0JH
UkE4ODg4KCZzb3VyY2VWSW1hZ2VCdWZmZXIsICZkZXN0aW5hdGlvblZJbWFnZUJ1ZmZlciwga3ZJ
bWFnZU5vRmxhZ3MpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNvdXJjZS5w
aXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpCisgICAgICAgICAgICBpZiAoc291cmNl
LmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpCiAgICAgICAgICAgICAg
ICAgdkltYWdlUHJlbXVsdGlwbHlEYXRhX1JHQkE4ODg4KCZzb3VyY2VWSW1hZ2VCdWZmZXIsICZk
ZXN0aW5hdGlvblZJbWFnZUJ1ZmZlciwga3ZJbWFnZU5vRmxhZ3MpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9CR1JBODg4OCgmc291cmNl
VkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIGt2SW1hZ2VOb0ZsYWdzKTsK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0Fj
YwogICAgICAgICBzb3VyY2VWSW1hZ2VCdWZmZXIgPSBkZXN0aW5hdGlvblZJbWFnZUJ1ZmZlcjsK
ICAgICB9CiAKLSAgICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ICE9IGRlc3RpbmF0aW9uLnBpeGVs
Rm9ybWF0KSB7CisgICAgaWYgKHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgIT0gZGVzdGluYXRp
b24uZm9ybWF0LnBpeGVsRm9ybWF0KSB7CiAgICAgICAgIC8vIFN3YXAgcGl4ZWwgY2hhbm5lbHMg
QkdSQSA8LT4gUkdCQS4KICAgICAgICAgY29uc3QgdWludDhfdCBtYXBbNF0gPSB7IDIsIDEsIDAs
IDMgfTsKICAgICAgICAgdkltYWdlUGVybXV0ZUNoYW5uZWxzX0FSR0I4ODg4KCZzb3VyY2VWSW1h
Z2VCdWZmZXIsICZkZXN0aW5hdGlvblZJbWFnZUJ1ZmZlciwgbWFwLCBrdkltYWdlTm9GbGFncyk7
CkBAIC0xODAsNDIgKzE4MCw0MiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY29udmVydEltYWdlUGl4
ZWxzVW5hCiB2b2lkIGNvbnZlcnRJbWFnZVBpeGVscyhjb25zdCBDb25zdFBpeGVsQnVmZmVyQ29u
dmVyc2lvblZpZXcmIHNvdXJjZSwgY29uc3QgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyYgZGVz
dGluYXRpb24sIGNvbnN0IEludFNpemUmIGRlc3RpbmF0aW9uU2l6ZSkKIHsKICAgICAvLyBXZSBk
b24ndCBjdXJyZW50bHkgc3VwcG9ydCBjb252ZXJ0aW5nIHBpeGVsIGRhdGEgd2l0aCBub24tOC1i
aXQgYnVmZmVycy4KLSAgICBBU1NFUlQoc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpSR0JBOCB8fCBzb3VyY2UucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKLSAg
ICBBU1NFUlQoZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGRlc3RpbmF0aW9uLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNT
RVJUKHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IHNv
dXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBBU1NF
UlQoZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBkZXN0aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
IAogICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGNvbnZlcnRpbmcgcGl4ZWwgZGF0
YSBiZXR3ZWVuIGRpZmZlcmVudCBjb2xvciBzcGFjZXMuCi0gICAgQVNTRVJUKHNvdXJjZS5jb2xv
clNwYWNlID09IGRlc3RpbmF0aW9uLmNvbG9yU3BhY2UpOworICAgIEFTU0VSVChzb3VyY2UuZm9y
bWF0LmNvbG9yU3BhY2UgPT0gZGVzdGluYXRpb24uZm9ybWF0LmNvbG9yU3BhY2UpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEUpCi0gICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCA9PSBkZXN0aW5hdGlv
bi5hbHBoYUZvcm1hdCAmJiBzb3VyY2UucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24ucGl4ZWxG
b3JtYXQpIHsKKyAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBkZXN0aW5hdGlv
bi5mb3JtYXQuYWxwaGFGb3JtYXQgJiYgc291cmNlLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBkZXN0
aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiB0aGVz
IGJvdGgganVzdCB1c2UgcGVyLXJvdyBtZW1jcHk/Ci0gICAgICAgIGlmIChzb3VyY2UuYWxwaGFG
b3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAgICAgICAg
aWYgKHNvdXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0
ZWQ8Y29udmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZv
cm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNp
emUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2Vs
ZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFVucHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVk
PFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uU2l6ZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2Vs
ZXJhdGVkKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAjZWxzZQotICAg
IGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gZGVzdGluYXRpb24uYWxwaGFGb3JtYXQpIHsKLSAg
ICAgICAgaWYgKHNvdXJjZS5waXhlbEZvcm1hdCA9PSBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCkg
ewotICAgICAgICAgICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKQorICAgIGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0
ID09IGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1hdCkgeworICAgICAgICBpZiAoc291cmNl
LmZvcm1hdC5waXhlbEZvcm1hdCA9PSBkZXN0aW5hdGlvbi5mb3JtYXQucGl4ZWxGb3JtYXQpIHsK
KyAgICAgICAgICAgIGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdl
UGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxQcmVtdWx0aXBsaWVkVG9QcmVt
dWx0aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRp
b24sIGRlc3RpbmF0aW9uU2l6ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Y29udmVydEltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11
bHRpcGxpZWRUb1VucHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCkKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5m
b3JtYXQuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29u
dmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENv
bnZlcnNpb246OlBlcm11dGU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1Vu
YWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5wcmVtdWx0aXBsaWVkVG9VbnByZW11bHRp
cGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpQZXJtdXRlPj4oc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChzb3VyY2UucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQpIHsKLSAgICAg
ICAgICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkKKyAgICAgICAgaWYgKHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0g
ZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0KSB7CisgICAgICAgICAgICBpZiAoc291cmNl
LmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29u
dmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkPFBpeGVsRm9ybWF0
Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxzVW5h
Y2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxp
ZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVz
dGluYXRpb25TaXplKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChkZXN0aW5h
dGlvbi5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQpCisgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uZm9ybWF0LmFscGhhRm9ybWF0ID09IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgICAgICBj
b252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFByZW11bHRp
cGxpZWRUb1VucHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246OlBlcm11dGU+Pihz
b3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNp
bmdsZVBpeGVsVW5wcmVtdWx0aXBsaWVkVG9QcmVtdWx0aXBsaWVkPFBpeGVsRm9ybWF0Q29udmVy
c2lvbjo6UGVybXV0ZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDI2ICsyNSwyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBpeGVsQnVm
ZmVyRm9ybWF0LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW50U2l6ZTsKIAot
ZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKLWVudW0gY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgUGl4ZWxGb3JtYXQg
OiB1aW50OF90OwotCiBzdHJ1Y3QgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyB7Ci0gICAgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZTsKLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKKyAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQ7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3c7CiAgICAgdWludDhf
dCogcm93czsKIH07CiAKIHN0cnVjdCBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgewot
ICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7CisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwogICAgIHVuc2lnbmVkIGJ5dGVzUGVyUm93OwogICAg
IGNvbnN0IHVpbnQ4X3QqIHJvd3M7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQaXhlbEJ1ZmZlckZvcm1hdC5oIgorCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBw
aXhlbEJ1ZmZlcikKK3sKKyAgICByZXR1cm4gdHMgPDwgcGl4ZWxCdWZmZXIuYWxwaGFGb3JtYXQg
PDwgJyAnIDw8IHBpeGVsQnVmZmVyLnBpeGVsRm9ybWF0IDw8ICcgJyA8PCBwaXhlbEJ1ZmZlci5j
b2xvclNwYWNlOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlckZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUGl4ZWxCdWZmZXJGb3JtYXQgeworICAgIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7CisgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQ7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBkZWNv
ZGUoRGVjb2RlciYpOworfTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmKTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlckZvcm1hdDo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBhbHBoYUZvcm1hdCA8PCBwaXhlbEZvcm1hdCA8
PCBjb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhbHBoYUZvcm1hdCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBpeGVsRm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29s
b3JTcGFjZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7
IGFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxG
b3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKHBpeGVsRm9ybWF0KSB7CisgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdC
QTg6CisgICAgICAgIHRzIDw8ICJSR0JBOCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGl4
ZWxGb3JtYXQ6OkJHUkE4OgorICAgICAgICB0cyA8PCAiQkdSQTgiOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBpeGVsRm9ybWF0OjpSR0IxMDoKKyAgICAgICAgdHMgPDwgIlJHQjEwIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQaXhlbEZvcm1hdDo6UkdCMTBBODoKKyAgICAgICAgdHMg
PDwgIlJHQjEwQTgiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9y
bWF0LmgJKHJldmlzaW9uIDI3NzM3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDggQEAgZW51bSBj
bGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIFJHQjEwQTgsCiB9OwogCitXRUJDT1JF
X0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBQaXhlbEZvcm1hdCk7
CisKIH0KIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDggQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaQog
CiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgcGFja0FsaWdubWVudChH
TF9QQUNLX0FMSUdOTUVOVCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkocmV2aXNpb24g
Mjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FuCiAgICAgfSkpOwogCiAgICAgYXV0byBp
bWFnZVNpemUgPSBwaXhlbEJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IE5hdGl2ZUlt
YWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29s
b3JTcGFjZShwaXhlbEJ1ZmZlci5jb2xvclNwYWNlKCkpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOworICAgIGF1
dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFn
ZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53
aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFj
ZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNh
bnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNr
IHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDEsNyArMjAxLDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tl
bgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUg
PSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGlt
YWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXItPmNvbG9yU3Bh
Y2UoKSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBM
YXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0KSk7CisgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZSksIGtD
R0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAg
ICAgfSBlbHNlIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlv
biA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewogICAgICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gY29weU5hdGl2ZUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgICAgICBpZiAoIW5hdGl2
ZUltYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzM3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRp
bGl0aWVzQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YShjb25zdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGF1dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3Vy
Y2UuY29sb3JTcGFjZSgpKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUlu
Zm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZSksIGtDR0JpdG1h
cEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAKICAgICBhdXRvIGNmRGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CiAg
ICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZS5nZXQoKSwgdXRpLmdldCgpLCBxdWFsaXR5LCBjZkRh
dGEuZ2V0KCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MDUsNyArNTA1LDggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNv
cHlVbm11bHRpcGxpZWRSZXN1bAogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7CiAgICAgICAgICAgICBpbnB1dFNpemUuc2Nh
bGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgICAgICAgICBtX3VubXVsdGlwbGllZElt
YWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgaW5wdXRTaXplKTsKKyAgICAgICAgICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5
Q3JlYXRlKGZvcm1hdCwgaW5wdXRTaXplKTsKICAgICAgICAgICAgIGlmICghbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjb3B5
VW5wcmVtdWx0aXBseWluZ0FscGhhKG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCks
IG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgaW5wdXRTaXplKTsKQEAgLTUzOCw3
ICs1MzksOCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1CiAgICAg
ICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhpbnB1dFNp
emUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKLSAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgaW5wdXRTaXplKTsKKyAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgICAgICBtX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbnB1dFNpemUp
OwogICAgICAgICAgICAgaWYgKCFtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjb3B5UHJlbXVsdGlwbHlpbmdBbHBoYShtX3Vu
bXVsdGlwbGllZEltYWdlUmVzdWx0LT5kYXRhKCksIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
LT5kYXRhKCksIGlucHV0U2l6ZSk7CkBAIC01ODAsNyArNTgyLDggQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZQogICAgIEludFNpemUgcmVzdWx0U2l6ZShtX2Fic29s
dXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7Ci0gICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVy
Ojp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdC
QTgsIHJlc3VsdFNpemUpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJldHVy
biBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwogfQogCkBAIC01OTgsNyArNjAxLDggQEAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZQogICAgIEludFNpemUgcmVzdWx0
U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZl
cjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVzdWx0U2l6ZSkpOwogICAgIHJlc3VsdFNpemUuc2NhbGUo
bV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCByZXN1bHRTaXplKTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIG1fcHJlbXVsdGlwbGll
ZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUp
OwogICAgIHJldHVybiBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdDsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9uIDI3NzM3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBhdXRvIHBpeGVs
QnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7Cisg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZv
cm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3MzcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBhdXRvIHBp
eGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7
CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiB9OworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI3NzQxNykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMTMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIFNwbGl0IHBpeGVsIGJ1ZmZlciBmb3JtYXQgZGF0YSBvdXQgaW50byBhIG5l
dyBQaXhlbEJ1ZmZlckZvcm1hdCBzdHJ1Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNTcwNworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oOgorICAgICAgICBBZG9wdCBQaXhlbEJ1ZmZlckZvcm1hdC4KKwogMjAyMS0wNS0x
MiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBb
V2luQ2Fpcm9dIEZhaWxlZCB0byBvcGVuIFdlYkluc3BlY3RvciBVSSBzaW5jZSByMjc3MjMxCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkocmV2aXNpb24gMjc3MzcxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gV2Vi
Q29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFdlYkNvcmU6OlBpeGVsRm9ybWF0OjpSR0JBOCwgc3JjUmVjdC5zaXplKCkpOwor
ICAgICAgICBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7IG91
dHB1dEZvcm1hdCwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OlJHQkE4LCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFdlYkNv
cmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZGVzdGluYXRpb25Gb3JtYXQsIHNyY1JlY3Quc2l6
ZSgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHBpeGVsQnVmZmVyLT5kYXRhKCku
Ynl0ZUxlbmd0aCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428544</attachid>
            <date>2021-05-13 12:29:30 -0700</date>
            <delta_ts>2021-05-13 13:54:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225707-20210513122929.patch</filename>
            <type>text/plain</type>
            <size>54301</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDIxLTA1LTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBTcGxpdCBwaXhlbCBidWZmZXIgZm9y
bWF0IGRhdGEgb3V0IGludG8gYSBuZXcgUGl4ZWxCdWZmZXJGb3JtYXQgc3RydWN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU3MDcKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTcGxpdHMgb3V0IFBpeGVsQnVm
ZmVyRm9ybWF0IGludG8gYSBuZXcgc3RydWN0IGFuZCBhZG9wdHMgaXQgYnkgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldywKKyAgICAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGFu
ZCBQaXhlbEJ1ZmZlci4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgUGl4ZWxCdWZmZXIgbm93CisgICAg
ICAgIHRyYWNrcyB0aGUgYWxwaGEgZm9ybWF0IG9mIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3aGlj
aCB3aWxsIGNvbWUgaW4gaGFuZHkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICBBZGQgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5jcHAgYW5k
IG1vdmUgVGV4dFN0cmVhbSBzdXBwb3J0CisgICAgICAgIGhlcmUgZnJvbSBHcmFwaGljc1R5cGVz
LmNwcC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgor
ICAgICAgICBNb3ZlIEFscGhhUHJlbXVsdGlwbGljYXRpb24gVGV4dFN0cmVhbSB0byB0aGUgbW9y
ZSBhcHByb3ByaWF0ZQorICAgICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcC4KKworICAg
ICAgICAqIGh0bWwvSW1hZ2VEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0ltYWdlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VEYXRhOjpjb2xvclNwYWNlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGF0YTo6Zm9ybWF0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmNvbXB1
dGVCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjp0cnlDcmVhdGVG
b3JEZWNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVyOjpQaXhlbEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6ZGVlcENsb25lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBpeGVsQnVmZmVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UGl4ZWxCdWZmZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6Y29s
b3JTcGFjZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXJDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBp
eGVsc0FjY2VsZXJhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRJbWFnZVBpeGVscyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxC
dWZmZXJGb3JtYXQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZl
ckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1h
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FudmFzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6dG9DRkRhdGEgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2ZEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmNvcHlVbm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAg
ICAgQWRvcHQgUGl4ZWxCdWZmZXJGb3JtYXQuCisKIDIwMjEtMDUtMTMgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBXazIgXSBtZWRpYS9tZWRpYS1m
cmFnbWVudHMvVEMwMDUxLmh0bWwgaXMgZmxha2V5IGNyYXNoaW5nCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UJKHJldmlzaW9uIDI3NzQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOTAsNiArMTI5MCw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2Uu
aApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3NzQ0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTM4LDYgKzE5MzgsNyBAQCBwbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhCiBwbGF0Zm9ybS9nYW1lcGFkL0VtcHR5
R2FtZXBhZFByb3ZpZGVyLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkQ29uc3RhbnRzLmNw
cAogcGxhdGZvcm0vZ2FtZXBhZC9HYW1lcGFkUHJvdmlkZXIuY3BwCitwbGF0Zm9ybS9ncmFwaGlj
cy9BbHBoYVByZW11bHRpcGxpY2F0aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9u
RnJhbWVSYXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5jcHAKQEAgLTIwMTUsNiArMjAxNiw4IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckNvbnZlcnNpb24uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwNTgsNiArNDA1OCw4IEBACiAJCUJD
NjA0OUNDMERCNTYwQzIwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MDQ5Q0IwREI1NjBDMjAwMjA0NzM5
IC8qIENTU0NhbnZhc1ZhbHVlLmggKi87IH07CiAJCUJDNjBENkU5MEQyOEQ4MzQwMEI5OTE4RiAv
KiBET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzYwRDdDMTBEMjlB
NDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4
Y2VwdGlvbi5oICovOyB9OworCQlCQzYzNUU4QzI2NEMyQ0FFMDAwRUYzM0EgLyogUGl4ZWxCdWZm
ZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDNjM1RThFMjY0QzJD
RTcwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMENBNzRDMjY0QUVEMEEwMDRGREM2MiAvKiBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLzsgfTsKIAkJQkM2NDY0MEExMUQ3RjMwNDAwNjQ1NUIw
IC8qIERPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM2NDY0MDgxMUQ3RjMwNDAwNjQ1NUIwIC8qIERPTVN0cmluZ01hcC5oICovOyB9
OwogCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2NDY0MUExMUQ3
RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCAqLzsgfTsKIAkJQkM2NDY0OTgx
MUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzY0NjQ5NjExRDgyMzQ5MDA2NDU1QjAgLyogSlNE
T01TdHJpbmdNYXAuaCAqLzsgfTsKQEAgLTE0MjQ3LDYgKzE0MjQ5LDEwIEBACiAJCUJDNjBENkVC
MEQyOEQ5OTkwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IERPTUV4Y2VwdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBE
N0JFMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNjBEN0JGMEQyOUE0NjMwMEI5OTE4RiAvKiBKU0RPTUV4Y2VwdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUV4Y2VwdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYzNUU4QjI2NEMyQ0FFMDAwRUYzM0EgLyog
UGl4ZWxCdWZmZXJGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGl4ZWxCdWZmZXJGb3JtYXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MzVFOEYyNjRDMkVDRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsQnVmZmVyRm9y
bWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MzVFOTAyNjRDNDY5RjAw
MEVGMzNBIC8qIFBpeGVsRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRm9ybWF0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MzVFOTEyNjRDNDc2MDAwMEVG
MzNBIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
NjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NU3RyaW5nTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNjQ2NDFBMTFEN0Y0MTYwMDY0NTVCMCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFzZXRET01TdHJpbmdNYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2NDY0MUIxMUQ3RjQxNjAwNjQ1NUIwIC8q
IERhdGFzZXRET01TdHJpbmdNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0YXNldERPTVN0cmluZ01hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjg1MCw2ICsyNjg1Niw3IEBACiAJCQkJRkJDMjIwREQxMjM3RkJFQjAwQkNGNzg4IC8q
IG9wZW5nbCAqLywKIAkJCQkzNzIxNDkzMzE4RjBCNkQ2MDAxNTZFREMgLyogb3BlbnR5cGUgKi8s
CiAJCQkJNDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8sCisJCQkJQkM2
MzVFOTEyNjRDNDc2MDAwMEVGMzNBIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwICovLAog
CQkJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgg
Ki8sCiAJCQkJMEY3RTQ3NTMyNUVFQjc5QjAwMTNGOTA5IC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNw
cCAqLywKIAkJCQkwRjdFNDc1NDI1RUVCNzlCMDAxM0Y5MDkgLyogQU5HTEVXZWJLaXRCcmlkZ2Uu
aCAqLywKQEAgLTI3MDU5LDYgKzI3MDY2LDkgQEAKIAkJCQlCQzQ4MzlCQTI2NDYxODFBMDBBMjhC
NjIgLyogUGl4ZWxCdWZmZXIuaCAqLywKIAkJCQlCQzBDQTc0RDI2NEFFRDBBMDA0RkRDNjIgLyog
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcCAqLywKIAkJCQlCQzBDQTc0QzI2NEFFRDBBMDA0RkRD
NjIgLyogUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmggKi8sCisJCQkJQkM2MzVFOEYyNjRDMkVDRTAw
MEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmNwcCAqLywKKwkJCQlCQzYzNUU4QjI2NEMyQ0FF
MDAwRUYzM0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCAqLywKKwkJCQlCQzYzNUU5MDI2NEM0NjlG
MDAwRUYzM0EgLyogUGl4ZWxGb3JtYXQuY3BwICovLAogCQkJCUJDQTU1OTEyMjYzREJENzkwMDdG
MTlCMyAvKiBQaXhlbEZvcm1hdC5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAv
KiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKQEAgLTM0NDcxLDYgKzM0NDgxLDggQEAKIAkJCQlEMEZG
MkE1RTExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFNjkxRTUyNjQ2MzdGQzAwRUJEQzNBIC8qIFBpeGVsQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRDdEMzM0NDFDN0ExMjNGMDAwNDEyOTMgLyogUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkM2MzVFOEUyNjRDMkNFNzAwMEVGMzNBIC8qIFBpeGVsQnVm
ZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2MzVFOEMyNjRDMkNBRTAwMEVG
MzNBIC8qIFBpeGVsQnVmZmVyRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E1NTkxNDI2
M0RCRDc5MDA3RjE5QjMgLyogUGl4ZWxGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERUZB
MjI4MUU3NjY5RTgwMDBBRTk5QyAvKiBQbGF0Zm9ybUF1ZGlvRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmNwcAkocmV2aXNpb24g
Mjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw4IEBAIFJlZlB0cjxJbWFnZURhdGE+IEltYWdlRGF0YTo6Y3JlYXRl
KGNvbnMKICAgICBhdXRvIGJ5dGVBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKGRhdGFTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIWJ5dGVBcnJheSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VE
YXRhKHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHNp
emUsIGJ5dGVBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0pKTsKKyAgICAKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbWFnZURhdGEoeyB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fSwgc2l6ZSwgYnl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOwogfQogCiBSZWZQdHI8SW1h
Z2VEYXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBSZWY8VWludDhD
bGFtcGVkQXJyYXk+JiYgYnl0ZUFycmF5KQpAQCAtNzIsNyArNzMsNyBAQCBSZWZQdHI8SW1hZ2VE
YXRhPiBJbWFnZURhdGE6OmNyZWF0ZShjb25zCiAgICAgaWYgKGRhdGFTaXplLmhhc092ZXJmbG93
ZWQoKSB8fCBkYXRhU2l6ZS51bnNhZmVHZXQoKSA+IGJ5dGVBcnJheS0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEYXRh
KHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgsIHNpemUs
IFdURk1vdmUoYnl0ZUFycmF5KSB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VE
YXRhKHsgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHNpemUsIFdURk1vdmUo
Ynl0ZUFycmF5KSB9KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURh
dGE6OmNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gpCkBAIC04OSw3ICs5MCw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBJbWFnZURhdGE6OmMKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJPdXQgb2YgbWVtb3J5Il9zIH07CiAgICAgfQogICAgIGJ5
dGVBcnJheS0+emVyb0ZpbGwoKTsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURhdGEo
eyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgc2l6ZSwg
Ynl0ZUFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEltYWdlRGF0YSh7IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCBzaXplLCBi
eXRlQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJbWFn
ZURhdGE+PiBJbWFnZURhdGE6OmNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYgYnl0ZUFy
cmF5LCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRGF0YS5oCShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBAIHB1YmxpYzoKIAogICAg
IFJlZjxJbWFnZURhdGE+IGRlZXBDbG9uZSgpIGNvbnN0OwogCi0gICAgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BpeGVsQnVmZmVyLmNvbG9yU3Bh
Y2UoKTsgfQotICAgIFBpeGVsRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxC
dWZmZXIuZm9ybWF0KCk7IH0KLQogICAgIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxCdWZmZXI7IH0KIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVs
dGlwbGljYXRpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gcHJlbXVsdGlwbGljYXRpb24pCit7
CisgICAgc3dpdGNoIChwcmVtdWx0aXBsaWNhdGlvbikgeworICAgIGNhc2UgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDoKKyAgICAgICAgdHMgPDwgInByZW11bHRpcGxpZWQi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZDoKKyAgICAgICAgdHMgPDwgInVucHJlbXVsdGlwbGllZCI7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgJKHJldmlzaW9uIDI3NzQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0FscGhhUHJlbXVsdGlwbGljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QCBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yCiB9CiAKIG5hbWVzcGFj
ZSBXVEYgeworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFscGhhUHJl
bXVsdGlwbGljYXRpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAg
ICBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uLApAQCAtNDcsNCArNDgsNSBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkFsCiAgICAgICAgIFdlYkNvcmU6OkFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZAogICAgID47CiB9OworCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5
cGVzLmNwcAkocmV2aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MiwxNyArMTgyLDQg
QEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgTAogICAgIHJldHVybiB0
czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBwcmVtdWx0aXBsaWNhdGlvbikKLXsKLSAgICBzd2l0Y2ggKHByZW11bHRp
cGxpY2F0aW9uKSB7Ci0gICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkOgotICAgICAgICB0cyA8PCAicHJlbXVsdGlwbGllZCI7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgotICAgICAgICB0
cyA8PCAidW5wcmVtdWx0aXBsaWVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVy
biB0czsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxNyArOTUsMTYgQEAgVmVj
dG9yPHVpbnQ4X3Q+IEltYWdlQnVmZmVyQmFja2VuZDo6dG9CRwogewogICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQoNCAqIGxvZ2ljYWxTaXplKCkuYXJlYSgpLnVuc2FmZUdldCgpKTsKIAorICAg
IFBpeGVsQnVmZmVyRm9ybWF0IHNvdXJjZUZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGRlc3RpbmF0aW9uRm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuYWxwaGFGb3JtYXQgPSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkOwotICAgIHNvdXJjZS5jb2xvclNwYWNlID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOwotICAgIHNvdXJjZS5waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0
KCk7CisgICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZUZvcm1hdDsKICAgICBzb3VyY2UuYnl0ZXNQ
ZXJSb3cgPSBieXRlc1BlclJvdygpOwogICAgIHNvdXJjZS5yb3dzID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YSk7CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDsKLSAgICBkZXN0aW5hdGlvbi5jb2xvclNw
YWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwotICAgIGRlc3RpbmF0aW9uLnBpeGVs
Rm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OkJHUkE4OworICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRl
c3RpbmF0aW9uRm9ybWF0OwogICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gbG9naWNhbFNp
emUoKS53aWR0aCgpICogNDsKICAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVzdWx0LmRhdGEoKTsK
IApAQCAtMTE4LDkgKzExNyw5IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJh
Y2tlbmQKIHsKICAgICBhdXRvIHNvdXJjZVJlY3RTY2FsZWQgPSB0b0JhY2tlbmRDb29yZGluYXRl
cyhzb3VyY2VSZWN0KTsKIAotICAgIGF1dG8gZGVzdGluYXRpb25QaXhlbEZvcm1hdCA9IFBpeGVs
Rm9ybWF0OjpSR0JBODsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBkZXN0aW5hdGlvbkZvcm1hdCB7
IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RpbmF0aW9uUGl4ZWxG
b3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUmVjdFNjYWxl
ZC5zaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKQEAgLTE0MiwxNyArMTQxLDE1IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFn
ZUJ1ZmZlckJhY2tlbmQKICAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93ID0gNCAq
IHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKICAgICB1aW50OF90KiBkZXN0aW5hdGlvblJvd3Mg
PSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0
aW5hdGlvbkJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7CiAKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBzb3VyY2VGb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KwogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNl
LmFscGhhRm9ybWF0ID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDsKLSAg
ICBzb3VyY2UuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKLSAgICBz
b3VyY2UucGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdCgpOworICAgIHNvdXJjZS5mb3JtYXQgPSBz
b3VyY2VGb3JtYXQ7CiAgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gc291cmNlQnl0ZXNQZXJSb3c7
CiAgICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwogICAgIAogICAgIFBpeGVsQnVmZmVyQ29u
dmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uYWxwaGFGb3JtYXQgPSBk
ZXN0aW5hdGlvbkFscGhhRm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQgPSBk
ZXN0aW5hdGlvblBpeGVsRm9ybWF0OworICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0
aW9uRm9ybWF0OwogICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRpb25CeXRl
c1BlclJvdzsKICAgICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOwogCkBAIC0x
NjQsNyArMTYxLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZAog
dm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gc291cmNlQWxwaGFGb3JtYXQsIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uUG9p
bnQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgdm9pZCog
ZGF0YSkKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi1SR0JBOCBwaXhlbCBm
b3JtYXRzLgotICAgIEFTU0VSVChwaXhlbEJ1ZmZlci5mb3JtYXQoKSA9PSBQaXhlbEZvcm1hdDo6
UkdCQTgpOworICAgIEFTU0VSVChwaXhlbEJ1ZmZlci5mb3JtYXQoKS5waXhlbEZvcm1hdCA9PSBQ
aXhlbEZvcm1hdDo6UkdCQTgpOwogCiAgICAgYXV0byBzb3VyY2VSZWN0U2NhbGVkID0gdG9CYWNr
ZW5kQ29vcmRpbmF0ZXMoc291cmNlUmVjdCk7CiAgICAgYXV0byBkZXN0aW5hdGlvblBvaW50U2Nh
bGVkID0gdG9CYWNrZW5kQ29vcmRpbmF0ZXMoZGVzdGluYXRpb25Qb2ludCk7CkBAIC0xODgsMTcg
KzE4NSwxNiBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAg
dW5zaWduZWQgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7CiAgICAgdWlu
dDhfdCogZGVzdGluYXRpb25Sb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkg
KyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb25CeXRlc1BlclJvdyArIGRlc3RpbmF0
aW9uUmVjdC54KCkgKiA0OwogCisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgc291cmNlRm9ybWF0IHsg
c291cmNlQWxwaGFGb3JtYXQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZGVzdGluYXRpb25Gb3JtYXQgeyBk
ZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IgfTsKKwogICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7
Ci0gICAgc291cmNlLmFscGhhRm9ybWF0ID0gc291cmNlQWxwaGFGb3JtYXQ7Ci0gICAgc291cmNl
LmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgc291cmNlLnBp
eGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQ6OlJHQkE4OworICAgIHNvdXJjZS5mb3JtYXQgPSBzb3Vy
Y2VGb3JtYXQ7CiAgICAgc291cmNlLmJ5dGVzUGVyUm93ID0gc291cmNlQnl0ZXNQZXJSb3c7CiAg
ICAgc291cmNlLnJvd3MgPSBzb3VyY2VSb3dzOwogICAgIAogICAgIFBpeGVsQnVmZmVyQ29udmVy
c2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uYWxwaGFGb3JtYXQgPSBkZXN0
aW5hdGlvbkFscGhhRm9ybWF0OwotICAgIGRlc3RpbmF0aW9uLmNvbG9yU3BhY2UgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7Ci0gICAgZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQgPSBwaXhl
bEZvcm1hdCgpOworICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0Owog
ICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gZGVzdGluYXRpb25CeXRlc1BlclJvdzsKICAg
ICBkZXN0aW5hdGlvbi5yb3dzID0gZGVzdGluYXRpb25Sb3dzOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAko
cmV2aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw5ICsxNjIsOSBAQCBuYW1l
c3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwKLSAgICBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRp
b246Ok5vLAotICAgIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzCisgICAgICAgIFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwKKyAgICAgICAgV2ViQ29yZTo6UHJlc2VydmVSZXNv
bHV0aW9uOjpObywKKyAgICAgICAgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMKICAg
ICA+OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzMSAr
MzEsMzEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DaGVja2VkPHVuc2lnbmVkLCBSZWNv
cmRPdmVyZmxvdz4gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKFBpeGVsRm9ybWF0IGZv
cm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK0NoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBOT1RFOiBPbmx5IDgt
Yml0IGZvcm1hdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuCi0gICAgQVNTRVJUX1VOVVNFRChm
b3JtYXQsIGZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgQVNTRVJUX1VOVVNFRChmb3JtYXQsIGZvcm1hdC5waXhlbEZvcm1h
dCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQ7
CiAKICAgICByZXR1cm4gc2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogYnl0ZXNQZXJQaXhl
bDsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JE
ZWNvZGluZyhEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgZm9y
bWF0LCBjb25zdCBJbnRTaXplJiBzaXplLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCkKK09wdGlv
bmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoY29uc3Qg
UGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQg
ZGF0YUJ5dGVMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgQVNTRVJUKGZvcm1hdC5w
aXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgQVNTRVJUKGNvbXB1dGVCdWZmZXJTaXplKGZvcm1h
dCwgc2l6ZSkudW5zYWZlR2V0KCkgPT0gZGF0YUJ5dGVMZW5ndGgpOwogCiAgICAgYXV0byBwaXhl
bEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5
dGVMZW5ndGgpOwogICAgIGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICByZXR1cm4geyB7IGNvbG9yU3BhY2UsIGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJh
eS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4
ZWxBcnJheS5yZWxlYXNlTm9uTnVsbCgpIH0gfTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IGZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK09wdGlvbmFsPFBpeGVs
QnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBm
b3JtYXQsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgLy8gTk9URTogT25seSA4LWJpdCBm
b3JtYXRzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgotICAgIEFTU0VSVChmb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIEFT
U0VSVChmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC5w
aXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBidWZmZXJTaXpl
ID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5o
YXNPdmVyZmxvd2VkKCkpCkBAIC02MywxMiArNjMsMTEgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IFBpeGVsQnVmZmVyOjp0cnlDcgogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFy
cmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUudW5zYWZlR2V0KCkpOwogICAg
IGlmICghcGl4ZWxBcnJheSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1
cm4geyB7IGNvbG9yU3BhY2UsIGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9uTnVs
bCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNl
Tm9uTnVsbCgpIH0gfTsKIH0KIAotUGl4ZWxCdWZmZXI6OlBpeGVsQnVmZmVyKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBmb3JtYXQsIGNvbnN0IEludFNpemUm
IHNpemUsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFycmF5PiYmIGRhdGEpCi0gICAgOiBtX2NvbG9y
U3BhY2UgeyBjb2xvclNwYWNlIH0KLSAgICAsIG1fZm9ybWF0IHsgZm9ybWF0IH0KK1BpeGVsQnVm
ZmVyOjpQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJ
bnRTaXplJiBzaXplLCBSZWY8SlNDOjpVaW50OENsYW1wZWRBcnJheT4mJiBkYXRhKQorICAgIDog
bV9mb3JtYXQgeyBmb3JtYXQgfQogICAgICwgbV9zaXplIHsgc2l6ZSB9CiAgICAgLCBtX2RhdGEg
eyBXVEZNb3ZlKGRhdGEpIH0KIHsKQEAgLTc5LDEyICs3OCwxMiBAQCBQaXhlbEJ1ZmZlcjo6flBp
eGVsQnVmZmVyKCkgPSBkZWZhdWx0OwogCiBQaXhlbEJ1ZmZlciBQaXhlbEJ1ZmZlcjo6ZGVlcENs
b25lKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBtX2NvbG9yU3BhY2UsIG1fZm9ybWF0LCBtX3Np
emUsIFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+bGVu
Z3RoKCkpIH07CisgICAgcmV0dXJuIHsgbV9mb3JtYXQsIG1fc2l6ZSwgVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5sZW5ndGgoKSkgfTsKIH0KIAogVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUGl4ZWxCdWZmZXImIHBp
eGVsQnVmZmVyKQogewotICAgIHJldHVybiB0cyA8PCAmcGl4ZWxCdWZmZXIuZGF0YSgpOworICAg
IHJldHVybiB0cyA8PCAmcGl4ZWxCdWZmZXIuZGF0YSgpIDw8ICJmb3JtYXQgKCAiIDw8IHBpeGVs
QnVmZmVyLmZvcm1hdCgpIDw8ICIpIjsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc0NDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw4ICsyNSwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4
ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5o
PgogCkBAIC0zOSwxNiArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGl4ZWxC
dWZmZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBpeGVsQnVmZmVyKTsKIHB1YmxpYzoK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNyZWF0
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBJbnRTaXplJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGUo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICBQaXhlbEJ1
ZmZlcihEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBJbnRTaXplJiwg
UmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+JiYpOworICAgIFBpeGVsQnVmZmVyKGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiwgY29uc3QgSW50U2l6ZSYsIFJlZjxKU0M6OlVpbnQ4Q2xhbXBlZEFy
cmF5PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGl4ZWxCdWZmZXIoKTsKIAogICAgIFBpeGVs
QnVmZmVyKFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKICAgICBQaXhlbEJ1ZmZlciYgb3BlcmF0
b3I9KFBpeGVsQnVmZmVyJiYpID0gZGVmYXVsdDsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9Ci0gICAgUGl4ZWxG
b3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KKyAgICBjb25zdCBQaXhl
bEJ1ZmZlckZvcm1hdCYgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAgICBj
b25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgSlNDOjpV
aW50OENsYW1wZWRBcnJheSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQog
CkBAIC01OCwxMiArNTksMTEgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0
ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IHRyeUNy
ZWF0ZUZvckRlY29kaW5nKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0
IEludFNpemUmLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0aCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiB0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IEludFNpemUmLCB1bnNpZ25lZCBkYXRhQnl0ZUxlbmd0
aCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3Jk
T3ZlcmZsb3c+IGNvbXB1dGVCdWZmZXJTaXplKFBpeGVsRm9ybWF0LCBjb25zdCBJbnRTaXplJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENoZWNrZWQ8dW5zaWduZWQsIFJlY29yZE92ZXJm
bG93PiBjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYsIGNvbnN0IElu
dFNpemUmKTsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAg
UGl4ZWxGb3JtYXQgbV9mb3JtYXQ7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgbV9mb3JtYXQ7CiAg
ICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUmVmPEpTQzo6VWludDhDbGFtcGVkQXJyYXk+IG1fZGF0
YTsKIH07CkBAIC03NCw3ICs3NCw2IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4
ZWxCdWZmZXIKIHsKICAgICBBU1NFUlQobV9kYXRhLT5ieXRlTGVuZ3RoKCkgPT0gKG1fc2l6ZS5h
cmVhKCkudW5zYWZlR2V0KCkgKiA0KSk7CiAKLSAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsK
ICAgICBlbmNvZGVyIDw8IG1fZm9ybWF0OwogICAgIGVuY29kZXIgPDwgbV9zaXplOwogICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPmJ5dGVM
ZW5ndGgoKSwgMSk7CkBAIC04MiwxNiArODEsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBQaXhlbEZv
cm1hdCBmb3JtYXQ7CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisg
ICAgaWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3Jt
YXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAogICAgIEludFNpemUgc2l6ZTsKQEAgLTEwNiw3ICsxMDEsNyBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRl
bXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFBpeGVs
QnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb2xvclNwYWNlLCBmb3JtYXQsIHNpemUsIGJ1
ZmZlclNpemUpOworICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRl
Y29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkocmV2
aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDE0IEBAIHN0
YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2VsZXJhdGUKICAgICBhdXRvIHNvdXJjZVZJ
bWFnZUJ1ZmZlciA9IG1ha2VWSW1hZ2VCdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvblNpemUpOwog
ICAgIGF1dG8gZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIgPSBtYWtlVkltYWdlQnVmZmVyKGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogCi0gICAgaWYgKHNvdXJjZS5hbHBoYUZvcm1hdCAh
PSBkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCkgewotICAgICAgICBpZiAoZGVzdGluYXRpb24uYWxw
aGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkKSB7Ci0g
ICAgICAgICAgICBpZiAoc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCkK
KyAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCAhPSBkZXN0aW5hdGlvbi5mb3JtYXQu
YWxwaGFGb3JtYXQpIHsKKyAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmZvcm1hdC5hbHBoYUZvcm1h
dCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpIHsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCkK
ICAgICAgICAgICAgICAgICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc291cmNl
VkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIGt2SW1hZ2VOb0ZsYWdzKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2SW1hZ2VVbnByZW11bHRpcGx5RGF0
YV9CR1JBODg4OCgmc291cmNlVkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIs
IGt2SW1hZ2VOb0ZsYWdzKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzb3Vy
Y2UucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQorICAgICAgICAgICAgaWYgKHNv
dXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4KQogICAgICAgICAg
ICAgICAgIHZJbWFnZVByZW11bHRpcGx5RGF0YV9SR0JBODg4OCgmc291cmNlVkltYWdlQnVmZmVy
LCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIGt2SW1hZ2VOb0ZsYWdzKTsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICB2SW1hZ2VQcmVtdWx0aXBseURhdGFfQkdSQTg4ODgoJnNv
dXJjZVZJbWFnZUJ1ZmZlciwgJmRlc3RpbmF0aW9uVkltYWdlQnVmZmVyLCBrdkltYWdlTm9GbGFn
cyk7CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRJbWFnZVBpeGVsc0FjY2Vs
ZXJhdGUKICAgICAgICAgc291cmNlVkltYWdlQnVmZmVyID0gZGVzdGluYXRpb25WSW1hZ2VCdWZm
ZXI7CiAgICAgfQogCi0gICAgaWYgKHNvdXJjZS5waXhlbEZvcm1hdCAhPSBkZXN0aW5hdGlvbi5w
aXhlbEZvcm1hdCkgeworICAgIGlmIChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ICE9IGRlc3Rp
bmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCkgewogICAgICAgICAvLyBTd2FwIHBpeGVsIGNoYW5u
ZWxzIEJHUkEgPC0+IFJHQkEuCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgbWFwWzRdID0geyAyLCAx
LCAwLCAzIH07CiAgICAgICAgIHZJbWFnZVBlcm11dGVDaGFubmVsc19BUkdCODg4OCgmc291cmNl
VkltYWdlQnVmZmVyLCAmZGVzdGluYXRpb25WSW1hZ2VCdWZmZXIsIG1hcCwga3ZJbWFnZU5vRmxh
Z3MpOwpAQCAtMTgxLDQ1ICsxODEsNDUgQEAgc3RhdGljIHZvaWQgY29udmVydEltYWdlUGl4ZWxz
VW5hY2NlbGVyYQogdm9pZCBjb252ZXJ0SW1hZ2VQaXhlbHMoY29uc3QgQ29uc3RQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3JiBzb3VyY2UsIGNvbnN0IFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbnRTaXplJiBkZXN0aW5hdGlvblNpemUpCiB7CiAgICAgLy8g
V2UgZG9uJ3QgY3VycmVudGx5IHN1cHBvcnQgY29udmVydGluZyBwaXhlbCBkYXRhIHdpdGggbm9u
LTgtYml0IGJ1ZmZlcnMuCi0gICAgQVNTRVJUKHNvdXJjZS5waXhlbEZvcm1hdCA9PSBQaXhlbEZv
cm1hdDo6UkdCQTggfHwgc291cmNlLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7
Ci0gICAgQVNTRVJUKGRlc3RpbmF0aW9uLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JB
OCB8fCBkZXN0aW5hdGlvbi5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IEFTU0VSVChzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBzb3VyY2UuZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
QVNTRVJUKGRlc3RpbmF0aW9uLmZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdC
QTggfHwgZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAKICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBjb252ZXJ0aW5nIHBpeGVs
IGRhdGEgYmV0d2VlbiBkaWZmZXJlbnQgY29sb3Igc3BhY2VzLgotICAgIEFTU0VSVChzb3VyY2Uu
Y29sb3JTcGFjZSA9PSBkZXN0aW5hdGlvbi5jb2xvclNwYWNlKTsKKyAgICBBU1NFUlQoc291cmNl
LmZvcm1hdC5jb2xvclNwYWNlID09IGRlc3RpbmF0aW9uLmZvcm1hdC5jb2xvclNwYWNlKTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFKQotICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gZGVzdGlu
YXRpb24uYWxwaGFGb3JtYXQgJiYgc291cmNlLnBpeGVsRm9ybWF0ID09IGRlc3RpbmF0aW9uLnBp
eGVsRm9ybWF0KSB7CisgICAgaWYgKHNvdXJjZS5mb3JtYXQuYWxwaGFGb3JtYXQgPT0gZGVzdGlu
YXRpb24uZm9ybWF0LmFscGhhRm9ybWF0ICYmIHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0g
ZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0KSB7CiAgICAgICAgIC8vIEZJWE1FOiBDYW4g
dGhlcyBib3RoIGp1c3QgdXNlIHBlci1yb3cgbWVtY3B5PwotICAgICAgICBpZiAoc291cmNlLmFs
cGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCisgICAg
ICAgIGlmIChzb3VyY2UuZm9ybWF0LmFscGhhRm9ybWF0ID09IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2Vs
ZXJhdGVkPGNvbnZlcnRTaW5nbGVQaXhlbFByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxpZWQ8UGl4
ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRp
b25TaXplKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxzVW5h
Y2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11bHRpcGxpZWRUb1VucHJlbXVsdGlw
bGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvblNpemUpOwogICAgIH0gZWxzZQogICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNB
Y2NlbGVyYXRlZChzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogI2Vsc2UK
LSAgICBpZiAoc291cmNlLmFscGhhRm9ybWF0ID09IGRlc3RpbmF0aW9uLmFscGhhRm9ybWF0KSB7
Ci0gICAgICAgIGlmIChzb3VyY2UucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24ucGl4ZWxGb3Jt
YXQpIHsKLSAgICAgICAgICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZv
cm1hdCA9PSBkZXN0aW5hdGlvbi5mb3JtYXQuYWxwaGFGb3JtYXQpIHsKKyAgICAgICAgaWYgKHNv
dXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0
KSB7CisgICAgICAgICAgICBpZiAoc291cmNlLmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJ
bWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRv
UHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNpb246Ok5vbmU+Pihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5w
cmVtdWx0aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25l
Pj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgaWYgKGRlc3RpbmF0aW9u
LmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29u
dmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENv
bnZlcnNpb246OlBlcm11dGU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1Vu
YWNjZWxlcmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsVW5wcmVtdWx0aXBsaWVkVG9VbnByZW11bHRp
cGxpZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpQZXJtdXRlPj4oc291cmNlLCBkZXN0aW5hdGlv
biwgZGVzdGluYXRpb25TaXplKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
IChzb3VyY2UucGl4ZWxGb3JtYXQgPT0gZGVzdGluYXRpb24ucGl4ZWxGb3JtYXQpIHsKLSAgICAg
ICAgICAgIGlmIChzb3VyY2UuYWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkKKyAgICAgICAgaWYgKHNvdXJjZS5mb3JtYXQucGl4ZWxGb3JtYXQgPT0g
ZGVzdGluYXRpb24uZm9ybWF0LnBpeGVsRm9ybWF0KSB7CisgICAgICAgICAgICBpZiAoc291cmNl
LmZvcm1hdC5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBs
aWVkKQogICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxlcmF0ZWQ8Y29u
dmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkPFBpeGVsRm9ybWF0
Q29udmVyc2lvbjo6Tm9uZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uU2l6ZSk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxzVW5h
Y2NlbGVyYXRlZDxjb252ZXJ0U2luZ2xlUGl4ZWxVbnByZW11bHRpcGxpZWRUb1ByZW11bHRpcGxp
ZWQ8UGl4ZWxGb3JtYXRDb252ZXJzaW9uOjpOb25lPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVz
dGluYXRpb25TaXplKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChkZXN0aW5h
dGlvbi5hbHBoYUZvcm1hdCA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQpCi0gICAgICAgICAgICAgICAgY29udmVydEltYWdlUGl4ZWxzVW5hY2NlbGVyYXRlZDxjb252
ZXJ0U2luZ2xlUGl4ZWxQcmVtdWx0aXBsaWVkVG9VbnByZW11bHRpcGxpZWQ8UGl4ZWxGb3JtYXRD
b252ZXJzaW9uOjpQZXJtdXRlPj4oc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25TaXpl
KTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5mb3JtYXQu
YWxwaGFGb3JtYXQgPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKICAg
ICAgICAgICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHNVbmFjY2VsZXJhdGVkPGNvbnZlcnRTaW5n
bGVQaXhlbFVucHJlbXVsdGlwbGllZFRvUHJlbXVsdGlwbGllZDxQaXhlbEZvcm1hdENvbnZlcnNp
b246OlBlcm11dGU+Pihzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblNpemUpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnZlcnRJbWFnZVBpeGVsc1VuYWNjZWxl
cmF0ZWQ8Y29udmVydFNpbmdsZVBpeGVsUHJlbXVsdGlwbGllZFRvVW5wcmVtdWx0aXBsaWVkPFBp
eGVsRm9ybWF0Q29udmVyc2lvbjo6UGVybXV0ZT4+KHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uU2l6ZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lv
bi5oCShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMjYgKzI1LDIw
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnRTaXplOwogCi1lbnVtIGNsYXNzIEFscGhh
UHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgOiB1aW50OF90OwotZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7Ci0KIHN0
cnVjdCBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGFscGhhRm9ybWF0OwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwot
ICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dDsKICAgICB1bnNpZ25lZCBieXRlc1BlclJvdzsKICAgICB1aW50OF90KiByb3dzOwogfTsKIAog
c3RydWN0IENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyB7Ci0gICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZTsKLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKKyAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQ7CiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3c7CiAgICAgY29uc3QgdWludDhfdCog
cm93czsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIHBpeGVsQnVmZmVyKQorewor
ICAgIHJldHVybiB0cyA8PCBwaXhlbEJ1ZmZlci5hbHBoYUZvcm1hdCA8PCAnICcgPDwgcGl4ZWxC
dWZmZXIucGl4ZWxGb3JtYXQgPDwgJyAnIDw8IHBpeGVsQnVmZmVyLmNvbG9yU3BhY2U7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9y
bWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXJGb3JtYXQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCIKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiUGl4ZWxG
b3JtYXQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBQaXhlbEJ1ZmZlckZvcm1hdCB7CisgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBhbHBoYUZvcm1hdDsKKyAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKKyAgICBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IFBpeGVsQnVmZmVyRm9ybWF0OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IGFscGhhRm9ybWF0IDw8IHBpeGVsRm9ybWF0IDw8IGNvbG9yU3BhY2U7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQ
aXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFs
cGhhRm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgYWxwaGFGb3JtYXQsIHBp
eGVsRm9ybWF0LCBjb2xvclNwYWNlIH0gfTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQoreworICAgIHN3aXRjaCAo
cGl4ZWxGb3JtYXQpIHsKKyAgICBjYXNlIFBpeGVsRm9ybWF0OjpSR0JBODoKKyAgICAgICAgdHMg
PDwgIlJHQkE4IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQaXhlbEZvcm1hdDo6QkdSQTg6
CisgICAgICAgIHRzIDw8ICJCR1JBOCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGl4ZWxG
b3JtYXQ6OlJHQjEwOgorICAgICAgICB0cyA8PCAiUkdCMTAiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBpeGVsRm9ybWF0OjpSR0IxMEE4OgorICAgICAgICB0cyA8PCAiUkdCMTBBOCI7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaAkocmV2aXNpb24g
Mjc3NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNiArMzcsOCBAQCBlbnVtIGNsYXNzIFBpeGVsRm9ybWF0
IDogdWludDhfdCB7CiAgICAgUkdCMTBBOCwKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFBpeGVsRm9ybWF0KTsKKwogfQogCiBuYW1lc3Bh
Y2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCShyZXZpc2lv
biAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksOCBAQCBz
dGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVscyhpCiAKIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0
cygpCiB7Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgsIGdldEludGVybmFs
RnJhbWVidWZmZXJTaXplKCkpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4
ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkp
OwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgU2NvcGVkUGl4ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5U
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVs
QnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9w
dENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwg
OCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVm
ZmVyLmNvbG9yU3BhY2UoKSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFs
c2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENH
Q29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKSwgYml0bWFwSW5mbywg
ZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkp
KTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0
byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhlIHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0
byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5z
aXplKCk7Ci0gICAgICAgIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci0+Y29sb3JTcGFjZSgpKSwga0NHQml0bWFw
Qnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAg
aW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNw
YWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVy
RGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9IGVsc2UgaWYgKHJl
c29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKSB7CiAgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoQ29weUJhY2tpbmdTdG9yZSk7CiAgICAgICAgIGlmICghbmF0aXZlSW1hZ2UpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkocmV2aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhKGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpbWFn
ZVNpemUgPSBzb3VyY2Uuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBp
bWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHNvdXJjZS5jb2xvclNwYWNlKCkp
LCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1dG8g
aW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNw
YWNlKHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVs
dCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKICAgICBpZiAoIWVuY29kZUlt
YWdlKGltYWdlLmdldCgpLCB1dGkuZ2V0KCksIHF1YWxpdHksIGNmRGF0YS5nZXQoKSkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwNSw3ICs1MDUsOCBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJl
c3VsCiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhpbnB1dFNpemUpKTsKICAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKLSAgICAgICAgICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBpbnB1dFNpemUpOworICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICAgICAgbV91
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBp
bnB1dFNpemUpOwogICAgICAgICAgICAgaWYgKCFtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNvcHlVbnByZW11bHRpcGx5aW5n
QWxwaGEobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdC0+ZGF0YSgpLCBpbnB1dFNpemUpOwpAQCAtNTM4LDcgKzUzOSw4IEBAIHZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5UHJlbXVsdGlwbGllZFJlc3UKICAgICAgICAgICAgIEludFNpemUg
aW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VS
VCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwogICAgICAgICAg
ICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgICAgICAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBpbnB1dFNpemUpOwor
ICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IgfTsKKyAgICAgICAgICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0ID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGlucHV0U2l6ZSk7CiAgICAgICAgICAgICBp
ZiAoIW1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGNvcHlQcmVtdWx0aXBseWluZ0FscGhhKG1fdW5tdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQtPmRhdGEoKSwgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQtPmRhdGEoKSwgaW5wdXRT
aXplKTsKQEAgLTU4MCw3ICs1ODIsOCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVm
ZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRT
aXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAg
ICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpSR0JBOCwgcmVzdWx0U2l6ZSk7
CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiB9OworICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQ7CiB9CiAKQEAgLTU5OCw3ICs2MDEsOCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4mIEZpbHRlckVmZmVjdDo6Y3JlCiAgICAgSW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQ
YWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFt
cGluZyhyZXN1bHRTaXplKSk7CiAgICAgcmVzdWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJT
Y2FsZSgpKTsKLSAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGUoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IHJlc3VsdFNpemUpOworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1f
cHJlbXVsdGlwbGllZEltYWdlUmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkocmV2aXNpb24gMjc3NDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCShyZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5Q
aXhlbAogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKKyAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3NDQ0KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0wNS0xMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgU3Bs
aXQgcGl4ZWwgYnVmZmVyIGZvcm1hdCBkYXRhIG91dCBpbnRvIGEgbmV3IFBpeGVsQnVmZmVyRm9y
bWF0IHN0cnVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI1NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAg
ICAgIEFkb3B0IFBpeGVsQnVmZmVyRm9ybWF0LgorCiAyMDIxLTA1LTEzICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDR0Rpc3BsYXlMaXN0IGRlYnVnIGNvbmZpZ3Vy
YXRpb24gZmFpbHMgdG8gYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShy
ZXZpc2lvbiAyNzc0NDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw4
IEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAg
IGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OlJH
QkE4LCBzcmNSZWN0LnNpemUoKSk7CisgICAgICAgIFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0
IGRlc3RpbmF0aW9uRm9ybWF0IHsgb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpQaXhlbEZvcm1hdDo6
UkdCQTgsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5h
dGlvbkZvcm1hdCwgc3JjUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgc2l6ZV90IGRhdGFTaXpl
ID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>