<?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>193389</bug_id>
          
          <creation_ts>2019-01-13 17:58:38 -0800</creation_ts>
          <short_desc>[WHLSL] Assorted cleanup</short_desc>
          <delta_ts>2019-01-14 11:22:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>193080</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>rmorisset</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494062</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-13 17:58:38 -0800</bug_when>
    <thetext>[WHLSL] Assorted cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494063</commentid>
    <comment_count>1</comment_count>
      <attachid>359011</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-13 18:04:51 -0800</bug_when>
    <thetext>Created attachment 359011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494075</commentid>
    <comment_count>2</comment_count>
      <attachid>359017</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-13 19:36:20 -0800</bug_when>
    <thetext>Created attachment 359017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494189</commentid>
    <comment_count>3</comment_count>
      <attachid>359017</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-14 10:20:53 -0800</bug_when>
    <thetext>Comment on attachment 359017
Patch

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

&gt; Source/WebCore/ChangeLog:16
&gt; +        - EnumTypes have to have non-null base types. The parser will make sure this is always true.

I have not seen this last rule when looking through the patch.
It seems a bit weird to me to have such semantic rule verified by the parser.
The patch LGTM otherwise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494193</commentid>
    <comment_count>4</comment_count>
      <attachid>359017</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-14 10:30:50 -0800</bug_when>
    <thetext>Comment on attachment 359017
Patch

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

rs=me assuming robin&apos;s comment is addressed.

&gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.h:60
&gt; +    UnnamedType* type() { return m_type ? &amp;*m_type : nullptr; }

Is this the syntax we usually use for an Optional&lt;UniqueRef&lt;&gt;&gt; ? It looks weird because at first glance it appears to do nothing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494197</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-14 10:36:59 -0800</bug_when>
    <thetext>(In reply to Robin Morisset from comment #3)
&gt; Comment on attachment 359017 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359017&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        - EnumTypes have to have non-null base types. The parser will make sure this is always true.
&gt; 
&gt; I have not seen this last rule when looking through the patch.
&gt; It seems a bit weird to me to have such semantic rule verified by the parser.
&gt; The patch LGTM otherwise

It’s not verified by the parser; the parser just sets the base type to be a reference to “int” if it isn’t present. This is what the reference compiler does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494198</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-14 10:38:03 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #4)
&gt; Comment on attachment 359017 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359017&amp;action=review
&gt; 
&gt; rs=me assuming robin&apos;s comment is addressed.
&gt; 
&gt; &gt; Source/WebCore/Modules/webgpu/WHLSL/AST/WHLSLExpression.h:60
&gt; &gt; +    UnnamedType* type() { return m_type ? &amp;*m_type : nullptr; }
&gt; 
&gt; Is this the syntax we usually use for an Optional&lt;UniqueRef&lt;&gt;&gt; ? It looks
&gt; weird because at first glance it appears to do nothing :)

I don’t know any better way to get a pointer to the thing inside it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494209</commentid>
    <comment_count>7</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-14 11:04:39 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #5)
&gt; (In reply to Robin Morisset from comment #3)
&gt; &gt; Comment on attachment 359017 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=359017&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; &gt; +        - EnumTypes have to have non-null base types. The parser will make sure this is always true.
&gt; &gt; 
&gt; &gt; I have not seen this last rule when looking through the patch.
&gt; &gt; It seems a bit weird to me to have such semantic rule verified by the parser.
&gt; &gt; The patch LGTM otherwise
&gt; 
&gt; It’s not verified by the parser; the parser just sets the base type to be a
&gt; reference to “int” if it isn’t present. This is what the reference compiler
&gt; does.

OK, I misunderstood your comment as saying that the parser would reject enums who are given an explicit base type by the programmer, when that explicit base type is &quot;null&quot;.
Which sounded a bit weird, but what you are saying is perfectly reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494216</commentid>
    <comment_count>8</comment_count>
      <attachid>359017</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-14 11:21:57 -0800</bug_when>
    <thetext>Comment on attachment 359017
Patch

Clearing flags on attachment: 359017

Committed r239930: &lt;https://trac.webkit.org/changeset/239930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494217</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-14 11:21:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494220</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-14 11:22:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47259060&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359011</attachid>
            <date>2019-01-13 18:04:51 -0800</date>
            <delta_ts>2019-01-13 19:36:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193389-20190113180432.patch</filename>
            <type>text/plain</type>
            <size>104191</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYxMDk5OGVhZjJiOWZh
MGM5ZWVkMDM5NjA1NTM0OGY1MzhiNzNkNS4uYzM1MjZmZmMxMjQ2MGMxOGQzNGNlMDcwMzhlNzQy
NzMzNTYyNGM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1OSBAQAorMjAxOS0wMS0xMyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
QXNzb3J0ZWQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzMzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhIGJ1bmNoIG9mIG5vbi1iZWhhdmlvci1jaGFuZ2luZyBjbGVhbnVw
LgorCisgICAgICAgIC0gVGhlIGNvbXBpbGVyIHVzZXMgVW5pcXVlUmVmIGFsbCBvdmVyIHRoZSBw
bGFjZSwgYW5kIFVuaXF1ZVJlZiBoYXMgYW4gaW1wbGljaXQgb3BlcmF0b3IgVCYuIFRoZXJlZm9y
ZSwKKyAgICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIHN0YXRpY19jYXN0PFQmPiBldmVyeXdoZXJl
LgorICAgICAgICAtIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
IGlzIHRoZSBleGFjdCBzYW1lIHRoaW5nIGFzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgc28K
KyAgICAgICAgICB0aGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGxvbmdlci1uYW1lZCBjbGFzcyBpbiBm
YXZvciBvZiB0aGUgc2hvcnRlci1uYW1lZCBjbGFzcy4KKyAgICAgICAgLSBCZWNhdXNlIG9mIHRo
ZSBoZWFkZXIgZGVwZW5kZW5jeSB0cmVlLCB0aGlzIHBhdGNoIG1vdmVzIEVudHJ5UG9pbnRUeXBl
IGludG8gaXRzIG93biBmaWxlIHNvIGl0IGNhbiBiZQorICAgICAgICAgIHVzZWQgYnkgZmlsZXMg
dGhhdCBGdW5jdGlvbkRlY2xhcmF0aW9uIGRlcGVuZHMgb24uCisgICAgICAgIC0gRW51bVR5cGVz
IGhhdmUgdG8gaGF2ZSBub24tbnVsbCBiYXNlIHR5cGVzLiBUaGUgcGFyc2VyIHdpbGwgbWFrZSBz
dXJlIHRoaXMgaXMgYWx3YXlzIHRydWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ug
dGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQXJyYXlUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpBcnJheVR5cGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
QXJyYXlUeXBlOjp0eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
QXNzaWdubWVudEV4cHJlc3Npb246OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6QXNzaWdubWVudEV4cHJlc3Npb246OnJpZ2h0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGly
ZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
dWlsdEluU2VtYW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xDb25zdGFudEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNv
bnN0YW50RXhwcmVzc2lvbjo6Q29uc3RhbnRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbjo6Y2xvbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjptYXRjaGVzIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Np
b25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmNvbmRpdGlvbmFsKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3Rh
dGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNz
aW9uU3RhdGVtZW50OjplZmZlY3RmdWxFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaC4KKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bjo6RW51bWVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6dHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OkVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsOjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6cmlnaHQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpjbG9uZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6
OmVudW1lcmF0aW9uTWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpzZXRFbnVtZXJh
dGlvbk1lbWJlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhw
cmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6dHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpzZXRUeXBlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU6OmNv
bnZlcnNpb25Db3N0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpG
bG9hdExpdGVyYWxUeXBlOjpwcmVmZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpGb3JMb29wOjpjb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9y
TG9vcDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6
OmJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
RGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb246OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbjo6dHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSWZTdGF0ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50Ojpjb25kaXRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJ
ZlN0YXRlbWVudDo6Ym9keSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJZlN0YXRl
bWVudDo6ZWxzZUJvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEluZGV4RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW5kZXhF
eHByZXNzaW9uOjppbmRleEV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0IGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6cHJl
ZmVycmVkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9n
aWNhbEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxF
eHByZXNzaW9uOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkxvZ2ljYWxF
eHByZXNzaW9uOjpyaWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkxvZ2ljYWxOb3RFeHByZXNzaW9uOjpvcGVyYW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uOjpsVmFs
dWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVy
RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZVBvaW50ZXJF
eHByZXNzaW9uOjpsVmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpiYXNlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uOjpsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbjo6bmV3VmFsdWVFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OnJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlZmVyZW5jZVR5cGU6OmVsZW1lbnRUeXBlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlZmVyZW5jZVR5cGU6OmVsZW1lbnRUeXBl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlw
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVzb2x2YWJsZVR5cGU6OnJlc29s
dmVkVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxl
VHlwZTo6cmVzb2x2ZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2Vt
YW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJldHVybjo6dmFsdWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRT
ZW1hbnRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24gY29u
c3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0
aW9uQ29uc3RhbnRTZW1hbnRpYy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rp
b24gY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdl
SW5PdXRTZW1hbnRpYy5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN0cnVjdHVyZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0cnVj
dHVyZUVsZW1lbnQ6OnR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN3aXRjaFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dp
dGNoU3RhdGVtZW50Ojp2YWx1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVGVybmFyeUV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlRlcm5hcnlFeHByZXNzaW9uOjpwcmVkaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmJvZHlFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlRlcm5hcnlFeHByZXNzaW9uOjplbHNlRXhwcmVzc2lvbik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZURlZmluaXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVEZWZpbml0aW9uOjp0eXBlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJM
aXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmg6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6cHJlZmVy
cmVkVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFi
bGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uOjppbml0aWFsaXplcik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uOjppc0Fub255bW91cyBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmNvbmRpdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OldoaWxlTG9vcDo6Ym9keSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6Y2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjppbmZlclR5cGVzRm9yVHlwZUFyZ3Vt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6aW5mZXJUeXBlc0ZvckNhbGwpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpOYW1lUmVzb2x2ZXI6OnZpc2l0KToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpyZXNvbHZlTmFtZXNJblR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpyZXNvbHZlTmFtZXNJbkZ1bmN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3Jh
bS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmFwcGVuZCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OnN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1
bmN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXpl
U3RydWN0dXJlQWNjZXNzb3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpzeW50aGVz
aXplU3RydWN0dXJlQWNjZXNzb3JzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFZpc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDEtMTMgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWlub3Igb3B0
aW1pemF0aW9uIHRvIFJlbmRlclRleHQ6OnNldFJlbmRlcmVkVGV4dCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5o
CmluZGV4IDg5Nzk0YjgwODBhZDUxYTRjYjY2NzY1NDBhYjRlZGQ0OGI0Y2NmM2UuLmEzZmY2NDUw
YmI4MGQzZjg4YjUwMzU5M2UxMzY2ZjBjMjM1Mjg2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCkBAIC01
NSw4ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVubmFtZWRUeXBlJj4obV9lbGVtZW50VHlw
ZSk7IH0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFt
ZWRUeXBlJj4obV9lbGVtZW50VHlwZSk7IH0KKyAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KKyAgICBVbm5hbWVkVHlwZSYgdHlwZSgp
IHsgcmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KICAgICB1bnNpZ25lZCBudW1FbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtRWxlbWVudHM7IH0KIAogICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlw
ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNz
aW9uLmgKaW5kZXggNzllYjFhZWMyMjEwYjQ3NmQzNTAxZjBlOTk1YTcwNTc4MGQ0OTAxMi4uYjEy
MWZiNmMxZTFkMTc5MjYxNWQ5YmIwMjc0ZmUyMzU4OGE3ZjJiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
c3NpZ25tZW50RXhwcmVzc2lvbi5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNz
aW9uJj4obV9sZWZ0KTsgfQotICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RXhwcmVzc2lvbiY+KG1fcmlnaHQpOyB9CisgICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsg
cmV0dXJuIG1fbGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdo
dDsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNl
U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oCmluZGV4IGZlOTlkYTI0ZjY0ZjlkNmVkNjA2MDQ2NzRjZWI4NzU2MzRm
YjBmZWIuLmRkMmE2NjUwMzVmMzIzMjhlZTNjZTIxMmNlN2I1YmQ4ZGMzYTZmN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1h
bnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEJhc2VTZW1hbnRpYy5oCkBAIC0yNyw4ICsyNywxMCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkK
IAorI2luY2x1ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKICNpbmNsdWRlICJXSExTTExleGVy
LmgiCiAjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IElucHV0LAogICAgICAgICBPdXRwdXQKICAgICB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1
bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRh
YmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBPcHRp
b25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgTGV4ZXI6
OlRva2VuIG1fb3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKaW5kZXggNDE0
YmQ0NWE5YTJhZjc1NWE3ZjQ0MGIxZmIwMzQzNDAzOTA3MzEzYy4uOGU5NWUzOWJmMGQ2M2Y0YjRk
ZTVmZTc5MjEwMTg4OGVlMDY1YzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3Bw
CkBAIC03MywxMCArNzMsMTAgQEAgYm9vbCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5
cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnQKICAgICB9CiB9CiAK
LWJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9u
KFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24m
IGZ1bmN0aW9uRGVmaW5pdGlvbikgY29uc3QKK2Jvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2Vw
dGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9u
LCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAog
ewotICAgIHN3aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0g
ICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4OgorICAg
IHN3aXRjaCAoKmVudHJ5UG9pbnRUeXBlKSB7CisgICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVy
dGV4OgogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgICAgICBjYXNlIFNoYWRlckl0
ZW1EaXJlY3Rpb246OklucHV0OgogICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7CkBA
IC05NSw3ICs5NSw3IEBAIGJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFk
ZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgY2FzZSBGdW5jdGlv
bkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6CisgICAgY2FzZSBFbnRyeVBv
aW50VHlwZTo6RnJhZ21lbnQ6CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgICAg
IGNhc2UgU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6CiAgICAgICAgICAgICBzd2l0Y2ggKG1f
dmFyaWFibGUpIHsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNB
Y2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcgog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgIGNhc2UgRnVuY3Rpb25EZWNsYXJhdGlvbjo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGU6Cisg
ICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
b24pIHsKICAgICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKICAgICAgICAg
ICAgIHN3aXRjaCAobV92YXJpYWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAppbmRl
eCBlYmRlMWQwODRmZDM3NzIxNzJhNGY3ZjUzN2EzMzBmMGExNjEwODUxLi40M2I2OTg2YWY3ZDRi
NzFjMjg2NzdlYzY1Y2VjZDhlYTdjNDczMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMu
aApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0FjY2VwdGFi
bGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJ
dGVtRGlyZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURp
cmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgVmFyaWFibGUgbV92YXJpYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3Rh
bnRFeHByZXNzaW9uLmgKaW5kZXggZGY2OGMyYTEzMzRkMjllOTEzYmFkNDVmY2M0MWEyNTc5MzFj
MDg3YS4uM2QxYWUxY2VjMzU3ODk5YmQ4N2ZmZmQxNDU0MDZkYjMyOWYwODY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRF
eHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUo
V0VCR1BVKQogCiAjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldI
TFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgogI2luY2x1ZGUgIldITFNMRmxv
YXRMaXRlcmFsLmgiCiAjaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgogI2luY2x1ZGUg
IldITFNMTnVsbExpdGVyYWwuaCIKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBDb25zdGFudEV4cHJlc3Npb24oQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRp
b25NZW1iZXJSZWZlcmVuY2UmJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJl
ZmVyZW5jZSkKLSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25F
bnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkpCisgICAgQ29uc3RhbnRFeHByZXNzaW9uKEVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbCYmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKKyAgICAgICAg
OiBtX3ZhcmlhbnQoV1RGTW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKQogICAgIHsKICAg
ICB9CiAKQEAgLTExMCw4ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVs
bExpdGVyYWwuY2xvbmUoKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBi
b29sZWFuTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKICAgICAgICAgICAgIHJldHVy
biBib29sZWFuTGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIGNvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAg
ICAgICAgcmV0dXJuIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
LmNsb25lKCk7CisgICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwm
IGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKKyAgICAg
ICAgICAgIHJldHVybiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuY2xvbmUoKTsKICAgICAgICAg
fSksIG1fdmFyaWFudCk7CiAgICAgfQogCkBAIC0xMzMsMTAgKzEzMywxMCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA9PSBvdGhlckJv
b2xlYW5MaXRlcmFsLnZhbHVlKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U+KG90aGVyLm1f
dmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBvdGhlck1lbWJlclJlZmVy
ZW5jZSA9IFdURjo6Z2V0PENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlPihvdGhlci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVtYmVyKCkg
PT0gb3RoZXJNZW1iZXJSZWZlcmVuY2UuZW51bWVyYXRpb25NZW1iZXIoKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKSB7CisgICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWw+KG90aGVyLm1fdmFyaWFudCkpIHsKKyAgICAgICAgICAgICAgICBjb25z
dCBhdXRvJiBvdGhlck1lbWJlclJlZmVyZW5jZSA9IFdURjo6Z2V0PEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbD4ob3RoZXIubV92YXJpYW50KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBlbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSA9PSBvdGhlck1lbWJlclJl
ZmVyZW5jZS5lbnVtZXJhdGlvbk1lbWJlcigpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIH0pKTsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgfSwgWyZdKGNv
bnN0IEJvb2xlYW5MaXRlcmFsJikgewogICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAg
ICAgIH0sIFsmXShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSYpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYp
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICB9KSk7CiAKQEAgLTE2OSw3
ICsxNjksNyBAQCBwcml2YXRlOgogICAgICAgICBGbG9hdExpdGVyYWwsCiAgICAgICAgIE51bGxM
aXRlcmFsLAogICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgQ29uc3RhbnRFeHByZXNz
aW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsCiAgICAgICAgID4gbV92YXJpYW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NTdkOTQ3Mjg1Yjk2N2FkMTFk
OTE2ZTBlZTAyZmJhNWYxNTBkMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExT
TCB7Ci0KLW5hbWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1j
bGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKLQotY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVy
YXRpb25NZW1iZXJSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci1wdWJsaWM6Ci0gICAg
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uKFdURk1vdmUob3JpZ2luKSkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkK
LSAgICAgICAgLCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5Db25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSgpID0g
ZGVmYXVsdDsKLQotICAgIGV4cGxpY2l0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlJikgPSBkZWZhdWx0OwotICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
JiYpID0gZGVmYXVsdDsKLQotICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlJiBvcGVyYXRvcj0oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZSYgb3BlcmF0b3I9KENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0
aW9uTWVtYmVyUmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKLQotICAgIGNvbnN0IFN0cmluZyYgbGVm
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIGNvbnN0IFN0cmluZyYgcmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3JpZ2h0OyB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZSBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIHJl
c3VsdCA9IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKExleGVy
OjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhtX2xlZnQpLCBTdHJpbmcobV9yaWdodCkpOwotICAg
ICAgICByZXN1bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9IG1fZW51bWVyYXRpb25NZW1iZXI7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9u
KiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVy
YXRpb25EZWZpbml0aW9uOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogZW51
bWVyYXRpb25EZWZpbml0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1l
cmF0aW9uRGVmaW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVy
YXRpb25NZW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7
Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0RW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikK
LSAgICB7Ci0gICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVm
aW5pdGlvbjsKLSAgICAgICAgbV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJl
cjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbGVmdDsKLSAgICBTdHJpbmcgbV9y
aWdodDsKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIG1fZW51bWVyYXRpb25EZWZpbml0aW9u
IHsgbnVsbHB0ciB9OwotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBtX2VudW1lcmF0aW9uTWVtYmVy
IHsgbnVsbHB0ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKaW5kZXggNTQ1OTEyYWIz
OGY3ZjhhYzIxNDRmYWZiN2M0ZjJmYTU4NGE5NDVhNS4uZTEyMTIyZTcxY2ViYTgyMWNhYzhiYWQ4
NjVjMDljOTJmYmMxOTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9u
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhw
cmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Np
b24mIHBvaW50ZXIoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wb2ludGVy
KTsgfQorICAgIEV4cHJlc3Npb24mIHBvaW50ZXIoKSB7IHJldHVybiBtX3BvaW50ZXI7IH0KIAog
cHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wb2ludGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxv
b3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hp
bGVMb29wLmgKaW5kZXggMDE0NzgzNzc1ZTMzZTFjNzc0OWJiYjNkNTNjZDIyZjAzNzczOTZiNS4u
MWQ5MjFmNmRjMDA0YTNlNzkyMGY3MTczMzEzNzRhZDZkNDdjYjgzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxl
TG9vcC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEb1doaWxlTG9v
cCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFN0YXRlbWVudCYgYm9k
eSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KLSAgICBFeHBy
ZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPiht
X2NvbmRpdGlvbmFsKTsgfQorICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsg
fQorICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsg
fQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1
bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAppbmRleCA1NGQwODNh
NWMwNjgwYjc1NDkzYmY0Mzk4ZDZiMzUzZTZkOWY3NTk3Li43MGFlYTRiYjc2OTk5ZGE4NzI1OGM0
Yjc0NDRlMzZjZjNjYzI2ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2VmZmVjdGZ1bEV4cHJlc3Npb24pOyB9CisgICAg
RXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWZmZWN0ZnVsRXhw
cmVzc2lvbjsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2VmZmVj
dGZ1bEV4cHJlc3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjg4
NzcwZDRkYTQ0YWEyOTM0YThiY2FjMTE0ZjYxOWJjNDBjOWYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5
cGUuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworZW51bSBjbGFzcyBF
bnRyeVBvaW50VHlwZSA6IHVpbnQ4X3QgeworICAgIFZlcnRleCwKKyAgICBGcmFnbWVudCwKKyAg
ICBDb21wdXRlLAorICAgIC8vIEZJWE1FOiBBZGQgYW4gZW50cnkgcG9pbnQgdHlwZSBmb3IgdGVz
dGluZworfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oCmluZGV4IDU1MDg5YTFhYjdkMWYwZmExODQwYmZhMWNiMWFjYmY3Mzg0
YmRjMGQuLjBiY2VhOTU5NmRhZDA2MDVmMmZlZGUxY2UyODU1YzRhYTg0MWM2MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVz
cGFjZSBBU1QgewogCiBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRU
eXBlIHsKIHB1YmxpYzoKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYg
b3JpZ2luLCBTdHJpbmcmJiBuYW1lLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiYm
IHR5cGUpCisgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwg
U3RyaW5nJiYgbmFtZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUpCiAgICAgICAgIDog
TmFtZWRUeXBlKFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5
cGUoV1RGTW92ZSh0eXBlKSkKICAgICB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNFbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICBVbm5hbWVkVHlwZSogdHlwZSgpIHsgcmV0dXJuIG1fdHlwZSA/ICZzdGF0
aWNfY2FzdDxVbm5hbWVkVHlwZSY+KCptX3R5cGUpIDogbnVsbHB0cjsgfQorICAgIFVubmFtZWRU
eXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGFkZChFbnVtZXJhdGlv
bk1lbWJlciYmIG1lbWJlcikKICAgICB7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBlPj4gbV90eXBl
OworICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBtX21lbWJlcnM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCmluZGV4IGJhNjQzMDM4
MDJiMWI1YTQxOTdkOTkxNmMxYTE1MjBiMjBmNjBjYzkuLmVlNzQ1ZTU0YmQwNTQyZjM3YmIzZDk4
MTQzNzRlYjNlNjBmY2E1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5oCkBAIC0yNyw5ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5j
bHVkZSAiV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lv
bi5oIgogI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyNSArMzYsNzcgQEAgbmFtZXNw
YWNlIFdITFNMIHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5p
dGlvbjsKK2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyOworCiBjbGFzcyBFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgRW51bWVyYXRpb25NZW1iZXImIGVu
dW1lcmF0aW9uTWVtYmVyKQorICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChMZXhlcjo6VG9r
ZW4mJiBvcmlnaW4sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQogICAgICAgICA6IEV4
cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQotICAgICAgICAsIG1fZW51bWVyYXRpb25NZW1iZXIo
ZW51bWVyYXRpb25NZW1iZXIpCisgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCisgICAg
ICAgICwgbV9yaWdodChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwogCi0gICAgRW51bWVyYXRp
b25NZW1iZXJMaXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRl
OworICAgIGV4cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmKSA9IGRlZmF1bHQ7CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
KEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKKyAgICBFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwm
KSA9IGRlbGV0ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OworCiAgICAgYm9vbCBpc0VudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcigpIHsgcmV0dXJuIG1fZW51bWVy
YXRpb25NZW1iZXI7IH0KKyAgICBzdGF0aWMgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAo
TGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51
bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVt
YmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKKyAgICB7CisgICAgICAgIEVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCByZXN1bHQoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGxlZnQpLCBXVEZNb3ZlKHJp
Z2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICZlbnVtZXJh
dGlvbkRlZmluaXRpb247CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVtYmVyID0gJmVu
dW1lcmF0aW9uTWVtYmVyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIGNvbnN0IFN0
cmluZyYgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9CisKKyAgICBFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwgY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgU3RyaW5n
KG1fbGVmdCksIFN0cmluZyhtX3JpZ2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9u
TWVtYmVyID0gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247CisgICAgfQor
CisgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgIH0K
KworICAgIEVudW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlv
bk1lbWJlciogZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fZW51bWVyYXRpb25NZW1iZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhdGlvbk1l
bWJlcihFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVy
YXRpb25NZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQorICAgIHsKKyAgICAgICAgbV9lbnVtZXJh
dGlvbkRlZmluaXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgICAgICBtX2VudW1l
cmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOworICAgIH0KIAogcHJpdmF0ZToKLSAg
ICBFbnVtZXJhdGlvbk1lbWJlciYgbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICBTdHJpbmcgbV9s
ZWZ0OworICAgIFN0cmluZyBtX3JpZ2h0OworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogbV9l
bnVtZXJhdGlvbkRlZmluaXRpb24geyBudWxscHRyIH07CisgICAgRW51bWVyYXRpb25NZW1iZXIq
IG1fZW51bWVyYXRpb25NZW1iZXIgeyBudWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
U1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEV4cHJlc3Npb24uaAppbmRleCA3NDEzMDBkYmVhYzRjOWYyNjI3ODg5OTA4MDEwYzFh
ODUzNTIzNzI0Li44MDc1MDhkYTlkZWVhYmI0NTI4YTJiYzM5YThhNjUzNzMwYjZmNmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHBy
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRXhwcmVzc2lvbi5oCkBAIC0yOCw3ICsyOCwxMCBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAK
ICNpbmNsdWRlICJXSExTTExleGVyLmgiCisjaW5jbHVkZSAiV0hMU0xVbm5hbWVkVHlwZS5oIgog
I2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNiAr
NTYsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4oKSBjb25z
dCB7IHJldHVybiBtX29yaWdpbjsgfQogCisgICAgVW5uYW1lZFR5cGUqIHR5cGUoKSB7IHJldHVy
biBtX3R5cGUgPyAmKm1fdHlwZSA6IG51bGxwdHI7IH0KKworICAgIHZvaWQgc2V0VHlwZShVbmlx
dWVSZWY8VW5uYW1lZFR5cGU+JiYgdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV90eXBl
KTsKKyAgICAgICAgbV90eXBlID0gV1RGTW92ZSh0eXBlKTsKKyAgICB9CisKICAgICB2aXJ0dWFs
IGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTc2LDYgKzg3LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExleGVyOjpU
b2tlbiBtX29yaWdpbjsKKyAgICBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3R5
cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlw
ZS5jcHAKaW5kZXggODFjOWRkZWVjNzdiNzY0NGYyNDdkMmNmYWViNzEwZjYxNjA4NWVhNy4uMGI2
NzEyNjExNDg0MzlmMGY5YmE4NjUxZTc2MDMxNmEzMjc2OWU2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBGbG9hdExpdGVyYWxUeXBl
OjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiAKIHVuc2lnbmVkIEZsb2F0TGl0
ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkg
Y29uc3QKIHsKLSAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHlwZVJlZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQorICAgIGlmIChtYXRjaGVzKHVubmFt
ZWRUeXBlLCBtX3ByZWZlcnJlZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4g
MTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAppbmRleCA1NjgwNjQzMDM0NzhjZTFj
NDAxMjMxZGNiMzdmYWJmNTQyYjFiMDQ3Li5iYzlmMDM3MDk5ZGUwZDgxMGJlZDg5YWIxMmE0NTFl
NWIzYjA4MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGbG9hdExpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVSZWZlcmVuY2UmPihtX3ByZWZlcnJlZFR5cGUpOyB9
CisgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVk
VHlwZTsgfQogCiAgICAgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlk
ZTsKICAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMRm9yTG9vcC5oCmluZGV4IDcxM2VkYzkyZGY3YjUyNDY3OGNiOGE4MTNiMzVk
YzY0NzFkZjQ2ZDIuLjNjZGM0MThmYWFhMWM4OTNlZDI0MjcyNTU3YTZkYjhiNTlhNzViNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZv
ckxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xGb3JMb29wLmgKQEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNGb3JMb29w
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmFyaWFudDxWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgVW5pcXVlUmVmPEV4cHJlc3Npb24+PiYgaW5pdGlhbGl6
YXRpb24oKSB7IHJldHVybiBtX2luaXRpYWxpemF0aW9uOyB9Ci0gICAgRXhwcmVzc2lvbiogY29u
ZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24gPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+
KCptX2NvbmRpdGlvbikgOiBudWxscHRyOyB9Ci0gICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkg
eyByZXR1cm4gbV9pbmNyZW1lbnQgPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCptX2luY3Jl
bWVudCkgOiBudWxscHRyOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQorICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigp
IHsgcmV0dXJuIG1fY29uZGl0aW9uID8gJiptX2NvbmRpdGlvbiA6IG51bGxwdHI7IH0KKyAgICBF
eHByZXNzaW9uKiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudCA/ICYqbV9pbmNyZW1l
bnQgOiBudWxscHRyOyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9
CiAKIHByaXZhdGU6CiAgICAgVmFyaWFudDxWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwg
VW5pcXVlUmVmPEV4cHJlc3Npb24+PiBtX2luaXRpYWxpemF0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oCmluZGV4IDE5MGJiYjgwYzMwYjM1OTE2YWMyYWJjMzg1YjNiZDU5
NGQzYzY3MmMuLjUwODI4NTg0NjA3MDU3N2Q4OTRjNTM0YTM5NzRiY2UwYWJiMjFmMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXSExTTEVudHJ5UG9pbnRUeXBlLmgiCiAjaW5j
bHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIldITFNMTGV4ZXIuaCIK
ICNpbmNsdWRlICJXSExTTE5vZGUuaCIKQEAgLTQ0LDEzICs0NSw2IEBAIG5hbWVzcGFjZSBBU1Qg
ewogCiBjbGFzcyBGdW5jdGlvbkRlY2xhcmF0aW9uIDogcHVibGljIE5vZGUgewogcHVibGljOgot
ICAgIGVudW0gY2xhc3MgRW50cnlQb2ludFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgVmVydGV4
LAotICAgICAgICBGcmFnbWVudCwKLSAgICAgICAgQ29tcHV0ZSwKLSAgICAgICAgLy8gRklYTUU6
IEFkZCBhbiBlbnRyeSBwb2ludCB0eXBlIGZvciB0ZXN0aW5nCi0gICAgfTsKLQogICAgIEZ1bmN0
aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBBdHRyaWJ1dGVCbG9jayYmIGF0
dHJpYnV0ZUJsb2NrLCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4gZW50cnlQb2ludFR5cGUsIFVu
aXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlLCBTdHJpbmcmJiBuYW1lLCBWYXJpYWJsZURlY2xh
cmF0aW9ucyYmIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFNlbWFudGljPiYmIHNlbWFudGljLCBib29s
IGlzT3BlcmF0b3IpCiAgICAgICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICAg
ICAsIG1fYXR0cmlidXRlQmxvY2soV1RGTW92ZShhdHRyaWJ1dGVCbG9jaykpCkBAIC03Myw4ICs2
Nyw4IEBAIHB1YmxpYzoKIAogICAgIEF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaygpIHsg
cmV0dXJuIG1fYXR0cmlidXRlQmxvY2s7IH0KICAgICBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50
VHlwZT4mIGVudHJ5UG9pbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbnRyeVBvaW50VHlwZTsg
fQotICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgVW5uYW1lZFR5cGUmPihtX3R5cGUpOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5cGUo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fdHlwZSk7IH0KKyAgICBjb25z
dCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFVubmFt
ZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgYm9vbCBpc0Nhc3QoKSBjb25zdCB7IHJl
dHVybiBtX25hbWUgPT0gIm9wZXJhdG9yIGNhc3QiOyB9CiAgICAgY29uc3QgVmFyaWFibGVEZWNs
YXJhdGlvbnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElm
U3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xJZlN0YXRlbWVudC5oCmluZGV4IDliN2NmNGIzN2FmNmRmMGJkOTRlYTI3OWI0ODBiMTNhYmVj
YjMzNDQuLmJmNmY2NTY5NmM2NWE4ODFmOTJjYTFjNzYzMGExMzcwYjRlZDUzMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SWZTdGF0ZW1lbnQuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSWZT
dGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNz
aW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2Nv
bmRpdGlvbmFsKTsgfQotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KLSAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1
cm4gbV9lbHNlQm9keSA/ICZzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPigqbV9lbHNlQm9keSkgOiBu
dWxscHRyOyB9CisgICAgRXhwcmVzc2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiBtX2NvbmRp
dGlvbmFsOyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CisgICAg
U3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkgPyAmKm1fZWxzZUJvZHkg
OiBudWxscHRyOyB9CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fY29u
ZGl0aW9uYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xJbmRleEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCmluZGV4IDI1YmE2ZTc4YTU5Zjc2
Nzg4NjJiODQ4NTA0OGY5ZGVhOGYwMGI3OWUuLjM0N2JjZmVjNGNhNDI2MTRkYjliYWE3MDg2YjUx
MjNiMjI5NmU2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oCkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICJvcGVyYXRvcltdPSJfc3RyOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4
cHJlc3Npb24mPihtX2luZGV4KTsgfQorICAgIEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbigp
IHsgcmV0dXJuIG1faW5kZXg7IH0KIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCmluZGV4IGU4
N2FjZGFjYWI3OTI3YzQ5MTk2ZGNiNDlmODRiNjA5YzdmMmIyMWIuLjRmYzY4NjNhOWQ5YzY3Yzgy
NTg0YjRlYjExMjk1YTg3MjUyMDEwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxU
eXBlLmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVz
b2x2ZShjb25zdCBUeXBlJiB0eXBlKSBjb25zdAogCiB1bnNpZ25lZCBJbnRlZ2VyTGl0ZXJhbFR5
cGU6OmNvbnZlcnNpb25Db3N0KGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkgY29uc3QK
IHsKLSAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgc3RhdGljX2Nhc3Q8Y29uc3QgVHlwZVJl
ZmVyZW5jZSY+KG1fcHJlZmVycmVkVHlwZSkpKQorICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBl
LCBtX3ByZWZlcnJlZFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gMTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEludGVnZXJMaXRlcmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKaW5kZXggNDI2ZjBmZTE4MjU5NmNkZGY4
ZjRhOGFkMzA1ODExMGIyMjJhYTc0OC4uNTU2MTdiNmJhOWVhZmJlMTg1Y2RmZTFlY2YwZWIzMTQ1
ZGNhZWJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5
cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlUmVmZXJlbmNlJj4obV9wcmVmZXJyZWRUeXBl
KTsgfQorICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBtX3ByZWZl
cnJlZFR5cGU7IH0KIAogICAgIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5cGUmKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oCmluZGV4IGFkMzVl
ODhhMWIwZWZjMTY4N2Q0YWU3ZWI1YTI1ZjlkMzRiYzBhZTIuLmZiZmM5MzU5NjExYjg2YWI0NDRh
ODFkNTQ3YjBiYWVmNDgxZmYwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaApA
QCAtNjEsOCArNjEsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uJiBsZWZ0
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbGVmdCk7IH0KLSAgICBFeHBy
ZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3JpZ2h0
KTsgfQorICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBtX2xlZnQ7IH0KKyAgICBFeHBy
ZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuIG1fcmlnaHQ7IH0KIAogcHJpdmF0ZToKICAgICBUeXBl
IG1fdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCmluZGV4IDFhOTcy
YmU2YjJkNmE0YjA3NWYxNWIyYTI5NjE0ZjE0Yzg0M2E1OTkuLjE0OTc2MzI0MTZiY2NhODE2OWM3
ZjI1ODk5YmM0NDM1NTFiM2FjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Np
b24uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9naWNhbE5vdEV4
cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNz
aW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fb3BlcmFu
ZCk7IH0KKyAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gbV9vcGVyYW5kOyB9CiAK
IHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fb3BlcmFuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAppbmRleCBiYzAxOTUz
MWRmNjMwZWE0Y2ZkNWQzYmVjNDQ1ZTA2ZDJjYThlYTI2Li42MzE2ZjU0ZTE2MzI2YjRhNDgzZmE4
NzJlMWY0N2JiMDQ4ZWRmODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVm
ZXJlbmNlRXhwcmVzc2lvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RXhwcmVzc2lvbiY+KG1fbFZhbHVlKTsgfQorICAgIEV4cHJlc3Npb24mIGxWYWx1ZSgpIHsgcmV0
dXJuIG1fbFZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1f
bFZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaAppbmRleCAwNDhh
NDQ0MDFlYTZiMTQ5MmM1MWQ0ZTA5MGE2ZDRiMDllNTRhZDE1Li43YjA1MmI2ZDVmMjg4N2Y1OTJk
ZjQ0ZmQ5NDA5YzRmYTk1MjAzYWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJl
c3Npb24uaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTWFrZVBvaW50
ZXJFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRXhw
cmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbFZh
bHVlKTsgfQorICAgIEV4cHJlc3Npb24mIGxWYWx1ZSgpIHsgcmV0dXJuIG1fbFZhbHVlOyB9CiAK
IHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fbFZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAppbmRleCBlMjg3NTVlZGIyYmI5Yjkw
ZGVlMGFlNzYyYTM4MzFkMGEwM2FkZWQ3Li4yZWMzNGUxNWQ4YTQwZTVhZDJlMmJmODk2ODBjMjFj
MzM0NGM5OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
aApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcG9zc2libGVBbmRPdmVybG9h
ZHMgPSBvdmVybG9hZHM7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbiYgYmFzZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2Jhc2UpOyB9CisgICAgRXhwcmVzc2lvbiYgYmFz
ZSgpIHsgcmV0dXJuIG1fYmFzZTsgfQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxFeHByZXNz
aW9uPiBtX2Jhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
LmgKaW5kZXggZjI5YjI5MzkzZWFlMjI0YWEyZDY3NGVjMjVhODE2NTkwNmEyZTZiOS4uNzlkOGQw
ZjcwOGU4ZDA1NzgzMTJjODE3OTRlODhlZGFmMzQ4N2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApAQCAtODUsMTEgKzg1LDExIEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fbFZhbHVlKTsgfQorICAgIEV4cHJlc3Npb24mIGxWYWx1
ZSgpIHsgcmV0dXJuIG1fbFZhbHVlOyB9CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFs
dWUoKSB7IHJldHVybiBtX29sZFZhbHVlOyB9CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbiYgbmV3
VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9Ci0gICAgRXhwcmVzc2lvbiogbmV3VmFsdWVF
eHByZXNzaW9uKCkgeyByZXR1cm4gbV9uZXdWYWx1ZUV4cHJlc3Npb24gPyAmc3RhdGljX2Nhc3Q8
RXhwcmVzc2lvbiY+KCptX25ld1ZhbHVlRXhwcmVzc2lvbikgOiBudWxscHRyOyB9Ci0gICAgRXhw
cmVzc2lvbiogcmVzdWx0RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fcmVzdWx0RXhwcmVzc2lvbiA/
ICZzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1fcmVzdWx0RXhwcmVzc2lvbikgOiBudWxscHRy
OyB9CisgICAgRXhwcmVzc2lvbiogbmV3VmFsdWVFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9uZXdW
YWx1ZUV4cHJlc3Npb24gPyAmKm1fbmV3VmFsdWVFeHByZXNzaW9uIDogbnVsbHB0cjsgfQorICAg
IEV4cHJlc3Npb24qIHJlc3VsdEV4cHJlc3Npb24oKSB7IHJldHVybiBtX3Jlc3VsdEV4cHJlc3Np
b24gPyAmKm1fcmVzdWx0RXhwcmVzc2lvbiA6IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IFdURjo6
bWFrZVVuaXF1ZVJlZihBcmdzJiYuLi4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCmluZGV4IDY0
Yzg0YmNiNGMzOTVlZDM3NjZjMzdiYzcxYmMwNWJlZWQyNzlhZjUuLmQyNjAyMDE3NjU5NjY2ZWZk
YzU3ZjAyOTU5ZmRhMGYyZGExZjQ3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVuY2VUeXBlLmgKQEAgLTYy
LDggKzYyLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNSZWZlcmVuY2VUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsgfQotICAgIGNvbnN0IFVubmFtZWRUeXBl
JiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVubmFtZWRU
eXBlJj4obV9lbGVtZW50VHlwZSk7IH0KLSAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fZWxlbWVudFR5cGUpOyB9CisgICAg
Y29uc3QgVW5uYW1lZFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
VHlwZTsgfQorICAgIFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIHsgcmV0dXJuIG1fZWxlbWVu
dFR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBBZGRyZXNzU3BhY2UgbV9hZGRyZXNzU3BhY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvbHZhYmxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVzb2x2YWJsZVR5cGUuaAppbmRleCBjZDcxYmQ0Y2M0Yjg0MmZkZmVlZTEyNDlhMzY3
Mzg0MTczZGRkNjQ2Li5mMDFmODY2NDg4MWY4ODA0NDk5YWE5ZTc3NjI3ZGRmYjE3NzgwZThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvbHZhYmxlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKQEAgLTU4LDggKzU4LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBjYW5SZXNvbHZlKGNvbnN0IFR5cGUmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0ID0g
MDsKIAotICAgIGNvbnN0IFVubmFtZWRUeXBlKiByZXNvbHZlZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkVHlwZSA/ICZzdGF0aWNfY2FzdDxjb25zdCBVbm5hbWVkVHlwZSY+KCptX3Jl
c29sdmVkVHlwZSkgOiBudWxscHRyOyB9Ci0gICAgVW5uYW1lZFR5cGUqIHJlc29sdmVkVHlwZSgp
IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJnN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4oKm1f
cmVzb2x2ZWRUeXBlKSA6IG51bGxwdHI7IH0KKyAgICBjb25zdCBVbm5hbWVkVHlwZSogcmVzb2x2
ZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1fcmVzb2x2ZWRUeXBl
IDogbnVsbHB0cjsgfQorICAgIFVubmFtZWRUeXBlKiByZXNvbHZlZFR5cGUoKSB7IHJldHVybiBt
X3Jlc29sdmVkVHlwZSA/ICYqbV9yZXNvbHZlZFR5cGUgOiBudWxscHRyOyB9CiAKICAgICB2b2lk
IHJlc29sdmUoVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VT
ZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmNwcAppbmRleCA4NDQwOTYwYzZlM2I0ODcyZDllOTM0NDNmYjg4
YzczNThlZDM2Y2JkLi5hMmE0MTM4NzI0MjIzYzcwZjQ5N2MyOTc5NjFlODA5NmE4ZmRlNzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZXNvdXJjZVNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApAQCAtNzgsNyArNzgsNyBAQCBib29s
IFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVu
bmFtZWRUeXBlLCBjb25zdCBJbgogICAgIH0KIH0KIAotYm9vbCBSZXNvdXJjZVNlbWFudGljOjpp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdAorYm9vbCBSZXNvdXJjZVNl
bWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJl
Y3Rpb24gZGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdAog
ewogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gU2hhZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmgKaW5kZXggNGIwMmJlMDIwN2JjM2M4MWZkMjky
OWJiYjBlMWU1OThiMzJjZGRkOC4uZTdjYTA2NGI2Njg4NWJjNTQzMjU0NWY5OWJiYThkM2U3YmM2
ZjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJlc291cmNlU2VtYW50aWMuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRU
eXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNBY2Nl
cHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBG
dW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXB0YWJs
ZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29uc3QgT3B0aW9u
YWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTW9k
ZSBtX21vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xSZXR1cm4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFJldHVybi5oCmluZGV4IDc3ZWIyNDY4NGYwNDcyMjQ4NTY0NGRhZjQ5YjcyMDc4
MzAzY2Y0NWEuLmY5ZDIwOWQ0NDg2MWVlMDViMTQzYzRjYmU0ZTkyNTNiMTNiZDZhOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
dHVybi5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXR1cm4oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uKiB2YWx1ZSgp
IHsgcmV0dXJuIG1fdmFsdWUgPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCptX3ZhbHVlKSA6
IG51bGxwdHI7IH0KKyAgICBFeHByZXNzaW9uKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWUgPyAm
Km1fdmFsdWUgOiBudWxscHRyOyB9CiAKICAgICBGdW5jdGlvbkRlZmluaXRpb24qIGZ1bmN0aW9u
KCkgeyByZXR1cm4gbV9mdW5jdGlvbjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb24oRnVuY3Rpb25E
ZWZpbml0aW9uKiBmdW5jdGlvbkRlZmluaXRpb24pIHsgbV9mdW5jdGlvbiA9IGZ1bmN0aW9uRGVm
aW5pdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYy5jcHAKaW5kZXggNDIxYzc5M2M5MjJiYmY2NDkwMTlhYTM5MDc1OWU1MzNhYjQw
NjhjZC4uN2I0NzgwOTUxYjJmN2RlMTczNmVjNzg1OTkwYTZlZDUzYTMxNDZkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwCkBA
IC00OCw3ICs0OCw3IEBAIGJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0Fj
Y2VwdGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkCiAgICAgcmV0dXJuIGRvd25j
YXN0PE5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkp
LmlzTnVtYmVyKCk7CiB9CiAKLWJvb2wgU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjpp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdAorYm9vbCBTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24o
U2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRU
eXBlPiYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0
aW9uOjpJbnB1dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25z
dGFudFNlbWFudGljLmgKaW5kZXggZDYyYWJiY2ViZTU1MGUyYjgxOTAxOTgyYzY4OTNiMzhiYzRj
ZjI0MC4uNjU2MzE1YTc5MmE0ZmViNWE4ZWJjYjRkYjdhODdmMzk5YWMyZjg2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6
YXRpb25Db25zdGFudFNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShj
b25zdCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBib29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVj
dGlvbiwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24s
IGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCmluZGV4IDIyNTcy
YzgxMmM4MzlhOWFhM2M1ZWU2MmZiMzJmNzEwNGQ5MWZlYzUuLmJjYTMxNWFiODU5MDdmYjJkZTc1
M2MzOTgyMzMzMGQ1ODE3ZjJkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGlj
LmNwcApAQCAtNTksMTQgKzU5LDE0IEBAIGJvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2Vw
dGFibGVUeXBlKGNvbnN0IFVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSwgY29uc3QKICAgICAgICAg
fHwgbmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzTWF0cml4KCk7CiB9CiAKLWJvb2wgU3RhZ2VJbk91
dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1E
aXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVm
aW5pdGlvbikgY29uc3QKK2Jvb2wgU3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBP
cHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAogewotICAgIHN3
aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgY2FzZSBG
dW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4OgorICAgIHN3aXRjaCAo
KmVudHJ5UG9pbnRUeXBlKSB7CisgICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246OkVudHJ5UG9p
bnRUeXBlOjpGcmFnbWVudDoKKyAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpGcmFnbWVudDoKICAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKLSAg
ICBjYXNlIEZ1bmN0aW9uRGVjbGFyYXRpb246OkVudHJ5UG9pbnRUeXBlOjpDb21wdXRlOgorICAg
IGNhc2UgRW50cnlQb2ludFR5cGU6OkNvbXB1dGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCmluZGV4IDRhZTg1MzJhZDdj
N2UyY2U4ZTg1MDY2N2NhY2Y3ODg2MTVmNjA2OWEuLjYxNzY0YzllMTQ1ZWI5ZThlM2ZkN2Q5Mjdl
OTBjMTMzMDA3Y2QzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oCkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUo
Y29uc3QgVW5uYW1lZFR5cGUmLCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgYm9vbCBpc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJl
Y3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9u
LCBjb25zdCBPcHRpb25hbDxFbnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5o
CmluZGV4IDRjZDY0ZTJlMjhhZmU1NmNiYjhjZjAzMmMxNDlmYTY5NmFjNGU2ZWIuLjg0NzJmNWM5
NjJjODdjYWUwZDcxNzBlZjQzOGVkNDdkYWJkZDAzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVF
bGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZUVsZW1lbnQo
U3RydWN0dXJlRWxlbWVudCYmKSA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBMZXhlcjo6VG9rZW4m
IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9Ci0gICAgVW5uYW1lZFR5cGUmIHR5
cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KG1fdHlwZSk7IH0KKyAgICBV
bm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYg
bmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIE9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50
aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgK
aW5kZXggNmIxOWQ3MDQyMmM5NGQ5OWVkMTM5MDQyMDUwNjNkZTEyMTQ4YjUzMi4uN2MxNjBiYTRl
NzlkY2MxM2FiYWMzMmYwNWJhMTIxM2MzOWZiMWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVt
ZW50LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1N3aXRjaFN0YXRl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24m
IHZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fdmFsdWUpOyB9Cisg
ICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgVmVjdG9yPFN3
aXRjaENhc2U+JiBzd2l0Y2hDYXNlcygpIHsgcmV0dXJuIG1fc3dpdGNoQ2FzZXM7IH0KIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCmluZGV4IGI0MWQxMmI1ZDIyOWZk
N2Q0OWQwZjg1OTBlOWZkZTFhNTA4MDZjMmQuLmZlNTYxNGRiMTJlMWI0OTBmNTdhMmQ4ZGVkZTNl
MjlmMjM2YjQ0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaApAQCAtNTQsOSAr
NTQsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wcmVkaWNhdGUpOyB9Ci0gICAgRXhw
cmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9u
Jj4obV9ib2R5RXhwcmVzc2lvbik7IH0KLSAgICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2Vsc2VFeHByZXNzaW9uKTsgfQor
ICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0dXJuIG1fcHJlZGljYXRlOyB9CisgICAg
RXhwcmVzc2lvbiYgYm9keUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2JvZHlFeHByZXNzaW9uOyB9
CisgICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX2Vsc2VFeHByZXNz
aW9uOyB9CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fcHJlZGljYXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKaW5kZXggMmUzZmYzNjRkNmJkNjA2MzA1MmZjM2Fm
MWI1ZmM0NmYzMWVmNjRlZi4uYWQ4N2EwMDI3ZGZlNmM2MjBjYzVlNjE2MTEzZjM0NmY2YzczMzE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVHlwZURlZmluaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNUeXBlRGVmaW5pdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFVubmFtZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5u
YW1lZFR5cGUmPihtX3R5cGUpOyB9CisgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBt
X3R5cGU7IH0KIAogICAgIGNvbnN0IFR5cGUmIHVuaWZ5Tm9kZSgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3Bw
CmluZGV4IDAxZjMxOTc5MTQ2YmM3YzRjZTgzNWNiOGY1ZjVkZGM0MmYwYTFlYzguLjdmZGY4Y2I0
ZDk4YzBhYTBjMzEwYWQzMDM4OWVmMjJhM2E3ODFhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBV
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y2FuUmVzb2x2ZShjb25zdCBUeXBlJiB0eXBlKSBj
b25zdAogCiB1bnNpZ25lZCBVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNv
c3QoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAogewotICAgIGlmIChtYXRj
aGVzKHVubmFtZWRUeXBlLCBzdGF0aWNfY2FzdDxjb25zdCBUeXBlUmVmZXJlbmNlJj4obV9wcmVm
ZXJyZWRUeXBlKSkpCisgICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgKaW5kZXggMzYyZWZhOTZkYjNiYjU0OWY3
MjE4NmZlMmYxOWYxYzU5ZmIxN2RiNy4uOTVmYmZmNmI5MDI5ZjA1YWI1MjRmNzMwZjk1NDNmNGQx
ZTcwMjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlw
ZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFR5
cGVSZWZlcmVuY2UmIHByZWZlcnJlZFR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlUmVm
ZXJlbmNlJj4obV9wcmVmZXJyZWRUeXBlKTsgfQorICAgIFR5cGVSZWZlcmVuY2UmIHByZWZlcnJl
ZFR5cGUoKSB7IHJldHVybiBtX3ByZWZlcnJlZFR5cGU7IH0KIAogICAgIGJvb2wgY2FuUmVzb2x2
ZShjb25zdCBUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdW5zaWduZWQgY29udmVyc2lvbkNv
c3QoY29uc3QgVW5uYW1lZFR5cGUmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlRGVjbGFyYXRpb24uaAppbmRleCBiNDQ5NDYwMmNmYmFhYjExMzVkNzE2MjM1NmEwYTIwODcw
MTIyZWJlLi4xOTgyNGY5NDA1NGU0YjNiN2Q3Y2YyNGY2M2MwMTE5YjhhNjNmNGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oCkBAIC02NSw5ICs2NSwxMCBAQCBwdWJsaWM6
CiAgICAgU3RyaW5nJiBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICBjb25zdCBPcHRp
b25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZTsgfSAvLyBBbm9ueW1vdXMgdmFyaWFibGVzIGluc2lkZSBSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9ucyBoYXZlIHRoZWlyIHR5cGUgc2V0IGJ5IHRoZSB0eXBlIGNoZWNrZXIuCi0gICAgVW5uYW1l
ZFR5cGUqIHR5cGUoKSB7IHJldHVybiBtX3R5cGUgPyAmc3RhdGljX2Nhc3Q8VW5uYW1lZFR5cGUm
PigqbV90eXBlKSA6IG51bGxwdHI7IH0KKyAgICBVbm5hbWVkVHlwZSogdHlwZSgpIHsgcmV0dXJu
IG1fdHlwZSA/ICYqbV90eXBlIDogbnVsbHB0cjsgfQogICAgIE9wdGlvbmFsPFNlbWFudGljPiYg
c2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9Ci0gICAgRXhwcmVzc2lvbiogaW5pdGlh
bGl6ZXIoKSB7IHJldHVybiBtX2luaXRpYWxpemVyID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24m
PigqbV9pbml0aWFsaXplcikgOiBudWxscHRyOyB9CisgICAgRXhwcmVzc2lvbiogaW5pdGlhbGl6
ZXIoKSB7IHJldHVybiBtX2luaXRpYWxpemVyID8gJiptX2luaXRpYWxpemVyIDogbnVsbHB0cjsg
fQorICAgIGJvb2wgaXNBbm9ueW1vdXMoKSBjb25zdCB7IHJldHVybiBtX25hbWUuaXNOdWxsKCk7
IH0KIAogcHJpdmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5o
CmluZGV4IGE3ZTg2ODJhZjlkZTIwYzYyZTQ1YWUwMzFhZDIxMDg0ZDQxZmM5YmUuLmE2YzdiNWU5
YTVhMjY3OTc3MDNlOGQ2ZDdkMzViMjdmZTQ1MGM2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCkBAIC01
NCw4ICs1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2NvbmRpdGlvbmFsKTsgfQotICAgIFN0
YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7
IH0KKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7
IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogcHJpdmF0ZToK
ICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKaW5kZXggNTdiNDYyZTBjMWYzN2FkM2NhMmM3MmM5OThl
ZWI1ZDM2ZGQyY2RiOC4uOGQ1ZjY4ZjA3YjZjMDM4ZmU1YmE3YmJjODJkY2VjZDE4YzJlYmVlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucy5jcHAKQEAgLTQxLDkgKzQxLDkg
QEAgYm9vbCBjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25zdCBQcm9ncmFtJiBwcm9ncmFtKQog
ewogICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbj4+IGZ1bmN0aW9uczsKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uRGVmaW5pdGlv
biA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKQotICAgICAgICBmdW5jdGlvbnMuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJj4oZnVuY3Rpb25E
ZWZpbml0aW9uKSk7CisgICAgICAgIGZ1bmN0aW9ucy5hcHBlbmQoZnVuY3Rpb25EZWZpbml0aW9u
KTsKICAgICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkpCi0gICAgICAgIGZ1bmN0aW9ucy5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Y29uc3QgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbikpOworICAgICAgICBmdW5jdGlvbnMuYXBwZW5kKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pOwogCiAgICAgc3RkOjpzb3J0KGZ1bmN0aW9ucy5iZWdpbigpLCBmdW5j
dGlvbnMuZW5kKCksIFtdKGNvbnN0IEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgYSwgY29uc3Qg
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBiKSAtPiBib29sIHsKICAgICAgICAgaWYgKGEubmFt
ZSgpLmxlbmd0aCgpIDwgYi5uYW1lKCkubGVuZ3RoKCkpCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wg
Y2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMoY29uc3QgUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAg
ICAgICYmIGZ1bmN0aW9uc1tpXS5nZXQoKS5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IDIKICAgICAg
ICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgQVNUOjpV
bm5hbWVkVHlwZSY+KCpmdW5jdGlvbnNbaV0uZ2V0KCkucGFyYW1ldGVycygpWzBdLnR5cGUoKSkp
CiAgICAgICAgICAgICAmJiBpczxBU1Q6OlJlZmVyZW5jZVR5cGU+KHN0YXRpY19jYXN0PGNvbnN0
IEFTVDo6VW5uYW1lZFR5cGUmPigqZnVuY3Rpb25zW2ldLmdldCgpLnBhcmFtZXRlcnMoKVsxXS50
eXBlKCkpKQotICAgICAgICAgICAgJiYgbWF0Y2hlcyhzdGF0aWNfY2FzdDxjb25zdCBBU1Q6OlVu
bmFtZWRUeXBlJj4oKmZ1bmN0aW9uc1tpXS5nZXQoKS5wYXJhbWV0ZXJzKClbMF0udHlwZSgpKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgQVNUOjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbnNbaV0uZ2V0KCku
cGFyYW1ldGVycygpWzFdLnR5cGUoKSkpKQorICAgICAgICAgICAgJiYgbWF0Y2hlcygqZnVuY3Rp
b25zW2ldLmdldCgpLnBhcmFtZXRlcnMoKVswXS50eXBlKCksICpmdW5jdGlvbnNbaV0uZ2V0KCku
cGFyYW1ldGVycygpWzFdLnR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKaW5kZXggMjBlMGVmMDllNDE0MTUyNTFl
MDg0YTgyZGViNTVlMWYxZmNlMjllMi4uN2NiZGI2YWZmMmUyNmRmZWU2ZjYxZjQ1MGI3ODZjZTE0
ZDI3MjY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTEluZmVyVHlwZXMuY3BwCkBAIC0xNTksMTYgKzE1OSwxOSBAQCBPcHRpb25hbDxV
bmlxdWVSZWY8QVNUOjpVbm5hbWVkVHlwZT4+IGNvbW1pdChBU1Q6OlJlc29sdmFibGVUeXBlJiBy
ZXNvbHZhYmxlVHlwZQogewogICAgIEFTU0VSVCghcmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBl
KCkpOwogICAgIGlmIChpczxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKSkg
ewotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGRvd25jYXN0PEFTVDo6RmxvYXRMaXRl
cmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpLnByZWZlcnJlZFR5cGUoKS5jbG9uZSgpKTsKLSAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUp
LnByZWZlcnJlZFR5cGUoKS5jbG9uZSgpOworICAgICAgICBhdXRvJiBmbG9hdExpdGVyYWxUeXBl
ID0gZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7CisgICAg
ICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoZmxvYXRMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBl
KCkuY2xvbmUoKSk7CisgICAgICAgIHJldHVybiBmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJlZFR5
cGUoKS5jbG9uZSgpOwogICAgIH0KICAgICBpZiAoaXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+
KHJlc29sdmFibGVUeXBlKSkgewotICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGRvd25j
YXN0PEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkucHJlZmVycmVkVHlw
ZSgpLmNsb25lKCkpOwotICAgICAgICByZXR1cm4gZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJh
bFR5cGU+KHJlc29sdmFibGVUeXBlKS5wcmVmZXJyZWRUeXBlKCkuY2xvbmUoKTsKKyAgICAgICAg
YXV0byYgaW50ZWdlckxpdGVyYWxUeXBlID0gZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlKTsKKyAgICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShpbnRl
Z2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpLmNsb25lKCkpOworICAgICAgICByZXR1cm4g
aW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKS5jbG9uZSgpOwogICAgIH0KICAgICBp
ZiAoaXM8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpKSB7
Ci0gICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpLnByZWZlcnJlZFR5cGUoKS5jbG9uZSgp
KTsKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5
cGU+KHJlc29sdmFibGVUeXBlKS5wcmVmZXJyZWRUeXBlKCkuY2xvbmUoKTsKKyAgICAgICAgYXV0
byYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSk7CisgICAgICAgIHJlc29sdmFibGVUeXBl
LnJlc29sdmUodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpLmNsb25l
KCkpOworICAgICAgICByZXR1cm4gdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVk
VHlwZSgpLmNsb25lKCk7CiAgICAgfQogICAgIGlmIChpczxBU1Q6Ok51bGxMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUcnlpbmcgdG8gbWF0Y2ggbnVs
bHB0ciBhbmQgbnVsbHB0ciBmYWlscy4KQEAgLTE5OSw3ICsyMDIsNyBAQCBib29sIGluZmVyVHlw
ZXNGb3JUeXBlQXJndW1lbnRzKEFTVDo6TmFtZWRUeXBlJiBwb3NzaWJsZVR5cGUsIEFTVDo6VHlw
ZUFyZ3VtZW50cwogICAgICAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7CiAgICAgICAgICAg
ICAgICAgZXhwcmVzc2lvbiA9ICZjb25zdGFudEV4cHJlc3Npb247CiAgICAgICAgICAgICB9LCBb
Jl0oVW5pcXVlUmVmPEFTVDo6VHlwZVJlZmVyZW5jZT4mIHRoZVR5cGVSZWZlcmVuY2UpIHsKLSAg
ICAgICAgICAgICAgICB0eXBlUmVmZXJlbmNlID0gJnN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVy
ZW5jZSY+KHRoZVR5cGVSZWZlcmVuY2UpOworICAgICAgICAgICAgICAgIHR5cGVSZWZlcmVuY2Ug
PSAmdGhlVHlwZVJlZmVyZW5jZTsKICAgICAgICAgICAgIH0pLCB0eXBlQXJndW1lbnQpOwogICAg
ICAgICB9OwogCkBAIC0yMjQsNyArMjI3LDcgQEAgYm9vbCBpbmZlclR5cGVzRm9yQ2FsbChBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24mIHBvc3NpYmxlRnVuY3Rpb24sIFZlY3RvcjxzdGQ6OnIKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9zc2libGVG
dW5jdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBzdWNjZXNz
ID0gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShVbmlxdWVSZWY8QVNUOjpVbm5hbWVk
VHlwZT4mIHVubmFtZWRUeXBlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBtYXRjaGVz
KCpwb3NzaWJsZUZ1bmN0aW9uLnBhcmFtZXRlcnMoKVtpXS50eXBlKCksIHN0YXRpY19jYXN0PEFT
VDo6VW5uYW1lZFR5cGUmPih1bm5hbWVkVHlwZSkpOworICAgICAgICAgICAgcmV0dXJuIG1hdGNo
ZXMoKnBvc3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpW2ldLnR5cGUoKSwgdW5uYW1lZFR5cGUp
OwogICAgICAgICB9LCBbJl0oUmVmPFJlc29sdmFibGVUeXBlUmVmZXJlbmNlPiYgcmVzb2x2YWJs
ZVR5cGVSZWZlcmVuY2UpIC0+IGJvb2wgewogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmFibGVU
eXBlUmVmZXJlbmNlLT5yZXNvbHZhYmxlVHlwZSgpLmNhblJlc29sdmUoKnBvc3NpYmxlRnVuY3Rp
b24ucGFyYW1ldGVycygpW2ldLnR5cGUoKSk7CiAgICAgICAgIH0pLCBhcmd1bWVudFR5cGVzW2ld
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMTmFtZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAppbmRleCA0OGZhOTMwMjIwOGFmZWZlZWU3ZTY0OGNi
Y2Y1ZDM3MzYzYjYzZTJjLi4yZTBlZGVmNDZmNGU1OTJhYmM3YTRlOTEwMzI1MzY3Zjc1NmEwZjhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xOYW1lUmVzb2x2ZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBOYW1lUmVzb2x2
ZXI6OnZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQogICAgIE5hbWVSZXNvbHZl
cihuYW1lQ29udGV4dCkuY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CiAg
ICAgaWYgKGlmU3RhdGVtZW50LmVsc2VCb2R5KCkpIHsKICAgICAgICAgTmFtZUNvbnRleHQgbmFt
ZUNvbnRleHQoJm1fbmFtZUNvbnRleHQpOwotICAgICAgICBOYW1lUmVzb2x2ZXIobmFtZUNvbnRl
eHQpLmNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlN0YXRlbWVudCY+KCppZlN0
YXRlbWVudC5lbHNlQm9keSgpKSk7CisgICAgICAgIE5hbWVSZXNvbHZlcihuYW1lQ29udGV4dCku
Y2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKTsKICAgICB9CiB9CiAK
QEAgLTE2NywxNyArMTY3LDIwIEBAIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OlByb3Bl
cnR5QWNjZXNzRXhwcmVzc2lvbiYgcHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uCiB2b2lkIE5hbWVS
ZXNvbHZlcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQogewogICAg
IGlmIChpczxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9uLmJhc2UoKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlw
ZXMoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZG90RXhwcmVzc2lvbi5iYXNlKCkp
Lm5hbWUoKSkpIHsKKyAgICAgICAgYXV0byBiYXNlTmFtZSA9IGRvd25jYXN0PEFTVDo6VmFyaWFi
bGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKS5uYW1lKCk7CisgICAgICAgIGlmIChh
dXRvIGVudW1lcmF0aW9uVHlwZXMgPSBtX25hbWVDb250ZXh0LmdldFR5cGVzKGJhc2VOYW1lKSkg
ewogICAgICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9uVHlwZXMtPnNpemUoKSA9PSAxKTsKICAg
ICAgICAgICAgIEFTVDo6TmFtZWRUeXBlJiB0eXBlID0gKCplbnVtZXJhdGlvblR5cGVzKVswXTsK
ICAgICAgICAgICAgIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSkpIHsK
ICAgICAgICAgICAgICAgICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25E
ZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KHR5cGUpOwot
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24u
bWVtYmVyQnlOYW1lKGRvdEV4cHJlc3Npb24uZmllbGROYW1lKCkpKSB7CisgICAgICAgICAgICAg
ICAgYXV0byBtZW1iZXJOYW1lID0gZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZpbml0aW9uLm1lbWJlckJ5
TmFtZShtZW1iZXJOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHNp
emVvZihBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkgPD0gc2l6ZW9mKEFTVDo6RG90RXhw
cmVzc2lvbiksICJEb3QgZXhwcmVzc2lvbnMgbmVlZCB0byBiZSBhYmxlIHRvIGJlY29tZSBFbnVt
ZXJhdGlvbk1lbWJlckxpdGVyYWxzIHdpdGhvdXQgdXBkYXRpbmcgYmFja3JlZmVyZW5jZXMiKTsK
ICAgICAgICAgICAgICAgICAgICAgTGV4ZXI6OlRva2VuIG9yaWdpbiA9IGRvdEV4cHJlc3Npb24u
b3JpZ2luKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBQZXJoYXBzIGRvIHRoaXMg
d2l0aCB2YXJpYW50cyBvciBhIFJld3JpdGVyIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAg
IGRvdEV4cHJlc3Npb24ufkRvdEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3
ICgmZG90RXhwcmVzc2lvbikgQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwoV1RGTW92ZShv
cmlnaW4pLCAqbWVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwgPSBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDo6d3JhcChXVEZNb3Zl
KG9yaWdpbiksIFdURk1vdmUoYmFzZU5hbWUpLCBXVEZNb3ZlKG1lbWJlck5hbWUpLCBlbnVtZXJh
dGlvbkRlZmluaXRpb24sICptZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBuZXcgKCZkb3RF
eHByZXNzaW9uKSBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChXVEZNb3ZlKGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CkBAIC0yMTIsMTUgKzIxNSwx
OCBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4
cHJlc3Npb24pCiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxFeHByZXNzaW9uKTsKIH0KIAot
dm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRp
b25NZW1iZXJSZWZlcmVuY2UmIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlKQordm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpCiB7Ci0gICAgaWYgKGF1dG8gZW51bWVy
YXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoY29uc3RhbnRFeHByZXNzaW9uRW51
bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UubGVmdCgpKSkgeworICAgIGlmIChlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8gZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoZW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsLmxlZnQoKSkpIHsKICAgICAgICAgQVNTRVJUKGVudW1lcmF0aW9u
VHlwZXMtPnNpemUoKSA9PSAxKTsKICAgICAgICAgQVNUOjpOYW1lZFR5cGUmIHR5cGUgPSAoKmVu
dW1lcmF0aW9uVHlwZXMpWzBdOwogICAgICAgICBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbkRlZmlu
aXRpb24+KHR5cGUpKSB7CiAgICAgICAgICAgICBBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYg
ZW51bWVyYXRpb25EZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRp
b24+KHR5cGUpOwotICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVm
aW5pdGlvbi5tZW1iZXJCeU5hbWUoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UucmlnaHQoKSkpIHsKLSAgICAgICAgICAgICAgICBjb25zdGFudEV4cHJlc3Npb25F
bnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5zZXRFbnVtZXJhdGlvbk1lbWJlcihlbnVtZXJhdGlv
bkRlZmluaXRpb24sICptZW1iZXIpOworICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5tZW1iZXJCeU5hbWUoZW51bWVyYXRpb25NZW1iZXJMaXRlcmFs
LnJpZ2h0KCkpKSB7CisgICAgICAgICAgICAgICAgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLnNl
dEVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgKm1lbWJlcik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzQsMjIg
KzI0MCwyMiBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Np
b25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYgY29ucwogYm9vbCByZXNvbHZlTmFtZXNJblR5
cGVzKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNvbHZlciYgbmFtZVJlc29sdmVyKQogewogICAg
IGZvciAoYXV0byYgdHlwZURlZmluaXRpb24gOiBwcm9ncmFtLnR5cGVEZWZpbml0aW9ucygpKSB7
Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNU
OjpUeXBlRGVmaW5pdGlvbiY+KHR5cGVEZWZpbml0aW9uKSk7CisgICAgICAgIG5hbWVSZXNvbHZl
ci5jaGVja0Vycm9yQW5kVmlzaXQodHlwZURlZmluaXRpb24pOwogICAgICAgICBpZiAobmFtZVJl
c29sdmVyLmVycm9yKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGZv
ciAoYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlv
bnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19j
YXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiY+KHN0cnVjdHVyZURlZmluaXRpb24pKTsKKyAg
ICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9u
KTsKICAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5lcnJvcigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHBy
b2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpKSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5j
aGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24m
PihlbnVtZXJhdGlvbkRlZmluaXRpb24pKTsKKyAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJy
b3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmluaXRpb24pOwogICAgICAgICBpZiAobmFtZVJlc29s
dmVyLmVycm9yKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGZvciAo
YXV0byYgbmF0aXZlVHlwZURlY2xhcmF0aW9uIDogcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRp
b25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNf
Y2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiY+KG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikp
OworICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbik7CiAgICAgICAgIGlmIChuYW1lUmVzb2x2ZXIuZXJyb3IoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNTksMTQgKzI2NSwxNCBAQCBib29sIHJlc29sdmVO
YW1lc0luVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSwgTmFtZVJlc29sdmVyJiBuYW1lUmVzb2x2ZXIp
CiBib29sIHJlc29sdmVOYW1lc0luRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0sIE5hbWVSZXNv
bHZlciYgbmFtZVJlc29sdmVyKQogewogICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9u
IDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVy
LnNldEN1cnJlbnRGdW5jdGlvbkRlZmluaXRpb24oJnN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uJj4oZnVuY3Rpb25EZWZpbml0aW9uKSk7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5j
aGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mPihm
dW5jdGlvbkRlZmluaXRpb24pKTsKKyAgICAgICAgbmFtZVJlc29sdmVyLnNldEN1cnJlbnRGdW5j
dGlvbkRlZmluaXRpb24oJmZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIG5hbWVSZXNvbHZl
ci5jaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKICAgICAgICAgaWYgKG5h
bWVSZXNvbHZlci5lcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudEZ1bmN0aW9uRGVmaW5pdGlvbihudWxscHRyKTsKICAg
ICBmb3IgKGF1dG8mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JB
bmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKSk7CisgICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlz
aXQobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbik7CiAgICAgICAgIGlmIChuYW1lUmVzb2x2ZXIu
ZXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApp
bmRleCBjNzJlMDhlMDYyMTA2N2RiZTE5MGNhMDQwNjhhOWU5YTcwYmZkY2YxLi42NTE4OWUyYTgz
NWI2ODUxZTVlMGQwYWFlMWNhOGFlY2FmMmIzN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKSBv
dmVycmlkZTsKICAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKSBvdmVycmlkZTsK
LSAgICB2b2lkIHZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1i
ZXJMaXRlcmFsJikgb3ZlcnJpZGU7CiAKICAgICBOYW1lQ29udGV4dCBtX25hbWVDb250ZXh0Owog
ICAgIEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uKiBtX2N1cnJlbnRGdW5jdGlvbiB7IG51bGxwdHIg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5oCmluZGV4IDNjZjY2Y2VkMjIwZjYzMmE5N2MzYTQxZTlkODk1ZmQ1ZjEyYmFmM2MuLjU2NzFj
NDUxM2FkNmViZjM1M2FhOTI4MTliOTIxNzk1ZGNhYWQyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaApAQCAtMzksNyArMzksNiBA
QAogI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJXSExTTENvbW1h
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5j
bHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKICNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNl
RXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKaW5kZXggYzkz
YTc2N2Y4ZmQ5NGY4YjJjN2ViNWM3M2U1MWQ0YjMxNTE3Y2M3NC4uODE1MTBkMzNjOTg5MjVmNDk4
NGFhYmVkMGRiNDFjMDM4NzU1ODIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmgKQEAgLTQ5LDM5ICs0OSwzOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBhcHBlbmQoQVNUOjpUeXBlRGVmaW5pdGlvbiYmIHR5cGVEZWZpbml0aW9uKQog
ICAgIHsKICAgICAgICAgbV90eXBlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNU
OjpUeXBlRGVmaW5pdGlvbj4oV1RGTW92ZSh0eXBlRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0
dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFTVDo6VHlwZURlZmluaXRpb24mPiht
X3R5cGVEZWZpbml0aW9ucy5sYXN0KCkpKTsKKyAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQu
YWRkKG1fdHlwZURlZmluaXRpb25zLmxhc3QoKSk7CiAgICAgfQogCiAgICAgYm9vbCBhcHBlbmQo
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiYgc3RydWN0dXJlRGVmaW5pdGlvbikKICAgICB7CiAg
ICAgICAgIG1fc3RydWN0dXJlRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpT
dHJ1Y3R1cmVEZWZpbml0aW9uPihXVEZNb3ZlKHN0cnVjdHVyZURlZmluaXRpb24pKSk7Ci0gICAg
ICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0aWNfY2FzdDxBU1Q6OlN0cnVjdHVyZURl
ZmluaXRpb24mPihtX3N0cnVjdHVyZURlZmluaXRpb25zLmxhc3QoKSkpOworICAgICAgICByZXR1
cm4gbV9uYW1lQ29udGV4dC5hZGQobV9zdHJ1Y3R1cmVEZWZpbml0aW9ucy5sYXN0KCkpOwogICAg
IH0KIAogICAgIGJvb2wgYXBwZW5kKEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiYgZW51bWVy
YXRpb25EZWZpbml0aW9uKQogICAgIHsKICAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmluaXRpb25z
LmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihXVEZNb3Zl
KGVudW1lcmF0aW9uRGVmaW5pdGlvbikpKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQu
YWRkKHN0YXRpY19jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJj4obV9lbnVtZXJhdGlv
bkRlZmluaXRpb25zLmxhc3QoKSkpOworICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQo
bV9lbnVtZXJhdGlvbkRlZmluaXRpb25zLmxhc3QoKSk7CiAgICAgfQogCiAgICAgYm9vbCBhcHBl
bmQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mJiBmdW5jdGlvbkRlZmluaXRpb24pCiAgICAgewog
ICAgICAgICBtX2Z1bmN0aW9uRGVmaW5pdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZnVuY3Rpb25EZWZpbml0aW9uKSkpOwotICAgICAg
ICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mPihtX2Z1bmN0aW9uRGVmaW5pdGlvbnMubGFzdCgpKSk7CisgICAgICAgIHJldHVybiBt
X25hbWVDb250ZXh0LmFkZChtX2Z1bmN0aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsKICAgICB9CiAK
ICAgICBib29sIGFwcGVuZChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mJiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKQogICAgIHsKICAgICAgICAgbV9uYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24+KFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKTsKLSAgICAgICAgbV9pbnRy
aW5zaWNzLmFkZChzdGF0aWNfY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mPiht
X25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSkpOwotICAgICAgICByZXR1cm4gbV9u
YW1lQ29udGV4dC5hZGQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
Jj4obV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucy5sYXN0KCkpKTsKKyAgICAgICAgbV9pbnRy
aW5zaWNzLmFkZChtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSk7CisgICAgICAg
IHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxh
c3QoKSk7CiAgICAgfQogCiAgICAgYm9vbCBhcHBlbmQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24mJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCiAgICAgewogICAgICAgICBtX25hdGl2ZVR5cGVE
ZWNsYXJhdGlvbnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRp
b24+KFdURk1vdmUobmF0aXZlVHlwZURlY2xhcmF0aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNp
Y3MuYWRkKHN0YXRpY19jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJj4obV9uYXRpdmVU
eXBlRGVjbGFyYXRpb25zLmxhc3QoKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5h
ZGQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mPihtX25hdGl2ZVR5cGVE
ZWNsYXJhdGlvbnMubGFzdCgpKSk7CisgICAgICAgIG1faW50cmluc2ljcy5hZGQobV9uYXRpdmVU
eXBlRGVjbGFyYXRpb25zLmxhc3QoKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFk
ZChtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnMubGFzdCgpKTsKICAgICB9CiAKICAgICBOYW1lQ29u
dGV4dCYgbmFtZUNvbnRleHQoKSB7IHJldHVybiBtX25hbWVDb250ZXh0OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVt
ZXJhdGlvbkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKaW5kZXggNjNmZWZiNDNk
YzdlMDU5ZWExZTMyY2Q5MjhmZWFlZjZjYzk5NDYxMC4uMzk0ZDA2MmE2NzY3YTM2MGQ2MmQ1Mjk4
OWM4ZDIwODE1NWVmNDlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zLmNwcApAQCAtNDEsOCArNDEsOCBAQCB2b2lkIHN5bnRoZXNpemVFbnVtZXJh
dGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAgIGJvb2wgaXNSZXN0cmljdGVkID0g
ZmFsc2U7CiAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmVu
dW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewogICAgICAgICB7Ci0gICAgICAgICAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbjEoTGV4ZXI6OlRva2VuKGVudW1l
cmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5
cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3Jp
Z2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1lcmF0
aW9uRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7
Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlv
bjIoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1
YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1l
cmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbiY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24gdmFyaWFibGVEZWNsYXJhdGlvbjEoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJh
dGlvbkRlZmluaXRpb24pIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlv
bjIoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1
YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1l
cmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pIH0sIFN0
cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7CiAgICAgICAgICAgICBwYXJhbWV0
ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24yKSk7CkBAIC01MCwzMSArNTAs
MjggQEAgdm9pZCBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3Jh
bSkKICAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+dHlwZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGEgbnVsbCBiYXNlIHR5
cGUuCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNf
Y2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikp
IH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7Ci0gICAgICAgICAgICAg
ICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgICAg
IHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAg
ICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRp
b25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxs
b3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS0+Y2xvbmUoKSwgIm9wZXJhdG9yLnZh
bHVlIl9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvciks
IGlzUmVzdHJpY3RlZCk7Ci0gICAgICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uKExl
eGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgQVNUOjpRdWFsaWZp
ZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihlbnVtZXJhdGlv
bkRlZmluaXRpb24tPm9yaWdpbigpKSwgZW51bWVyYXRpb25EZWZpbml0aW9uKSB9LCBTdHJpbmco
KSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOworICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQo
V1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkp
LCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgZW51bWVyYXRpb25EZWZpbml0
aW9uLT50eXBlKCkuY2xvbmUoKSwgIm9wZXJhdG9yLnZhbHVlIl9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvciksIGlzUmVzdHJpY3RlZCk7CisgICAgICAg
ICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsK
KyAgICAgICAgfQogCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9u
RGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkp
LCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1lcmF0aW9uRGVm
aW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7Ci0gICAg
ICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwotICAgICAg
ICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikp
OwotICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4o
ZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwg
V1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS0+Y2xvbmUoKSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09w
ZXJhdG9yKSwgaXNSZXN0cmljdGVkKTsKLSAgICAgICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChX
VEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgeworICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFy
YXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6
OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pIH0s
IFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CisgICAgICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKKyAgICAgICAgICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6
RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5v
cmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlv
bkRlZmluaXRpb24tPnR5cGUoKS5jbG9uZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jlc3RyaWN0ZWQpOwor
ICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKSk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVt
ZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIGVudW1lcmF0
aW9uRGVmaW5pdGlvbi0+dHlwZSgpLT5jbG9uZSgpLCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOwotICAgICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZh
cmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6
OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNf
Y2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikp
IH0sICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9w
dCwgaXNPcGVyYXRvciksIGlzUmVzdHJpY3RlZCk7Ci0gICAgICAgICAgICAgICAgcHJvZ3JhbS5h
cHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJs
ZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigp
KSwgQVNUOjpRdWFsaWZpZXJzKCksIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLmNsb25l
KCksIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CisgICAgICAgICAgICBwYXJhbWV0
ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKKyAgICAgICAgICAgIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9u
LT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCB7IEFTVDo6
VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5v
cmlnaW4oKSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikgfSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSwgaXNSZXN0cmlj
dGVkKTsKKyAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplU3RydWN0dXJlQWNjZXNz
b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAKaW5kZXggYjM0MjJkZGIzNTliNWRhYWY1ZDE5MmQ1
NDc1NWY2ZTg2ZDc5Nzg1Ni4uMGRhOTIwNWJiNmY1MmFkMGZmOGQ0ZWJmYjk0ZmFhZjM2NmU5NGYw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
eW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwCkBA
IC00Niw3ICs0Niw3IEBAIHZvaWQgc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyhQcm9ncmFt
JiBwcm9ncmFtKQogICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1
cmVEZWZpbml0aW9uLT5zdHJ1Y3R1cmVFbGVtZW50cygpKSB7CiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgLy8gVGhlIGdldHRlcjogb3BlcmF0b3IuZmllbGQKLSAgICAgICAgICAgICAg
ICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbihMZXhlcjo6VG9r
ZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVycygpLCB7IEFTVDo6
VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4o
KSksIHN0YXRpY19jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiY+KHN0cnVjdHVyZURlZmlu
aXRpb24pKSB9LCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAg
ICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uKExl
eGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCks
IHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50
Lm9yaWdpbigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikgfSwgU3RyaW5nKCksIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92
ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7CiAgICAgICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpB
dHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIHN0cnVjdHVyZUVsZW1lbnQudHlwZSgpLmNs
b25lKCksIFN0cmluZzo6Zm9ybWF0KCJvcGVyYXRvci4lcyIsIHN0cnVjdHVyZUVsZW1lbnQubmFt
ZSgpLnV0ZjgoKS5kYXRhKCkpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlz
T3BlcmF0b3IpLCBpc1Jlc3RyaWN0ZWQpOwpAQCAtNTUsMTggKzU1LDE4IEBAIHZvaWQgc3ludGhl
c2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyhQcm9ncmFtJiBwcm9ncmFtKQogCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgLy8gVGhlIHNldHRlcjogb3BlcmF0b3IuZmllbGQ9Ci0gICAgICAg
ICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24xKExl
eGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCks
IHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50
Lm9yaWdpbigpKSwgc3RhdGljX2Nhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJj4oc3RydWN0
dXJlRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFy
YXRpb24xKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpRdWFs
aWZpZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1Y3R1
cmVFbGVtZW50Lm9yaWdpbigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikgfSwgU3RyaW5nKCksIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbjIoTGV4ZXI6OlRva2VuKHN0cnVjdHVyZUVs
ZW1lbnQub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBzdHJ1Y3R1cmVFbGVtZW50LnR5
cGUoKS5jbG9uZSgpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAg
ICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAg
ICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlv
bjEpKTsKICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxl
RGVjbGFyYXRpb24yKSk7Ci0gICAgICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9u
KExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVC
bG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9r
ZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIHN0YXRpY19jYXN0PEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiY+KHN0cnVjdHVyZURlZmluaXRpb24pKSwgU3RyaW5nOjpmb3JtYXQoIm9wZXJh
dG9yLiVzPSIsIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpLnV0ZjgoKS5kYXRhKCkpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jlc3RyaWN0ZWQpOwor
ICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oc3Ry
dWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxs
b3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKHN0cnVjdHVyZUVsZW1l
bnQub3JpZ2luKCkpLCBzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgU3RyaW5nOjpmb3JtYXQoIm9wZXJh
dG9yLiVzPSIsIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpLnV0ZjgoKS5kYXRhKCkpLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jlc3RyaWN0ZWQpOwog
ICAgICAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUaGUgYW5kZXI6IG9w
ZXJhdG9yJi5maWVsZAogICAgICAgICAgICAgYXV0byBjcmVhdGVBbmRlciA9IFsmXShBU1Q6OlJl
ZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UpIC0+IEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgICAgICAgICAgICAgYXV0byBhcmd1bWVudFR5cGUgPSBt
YWtlVW5pcXVlUmVmPEFTVDo6UG9pbnRlclR5cGU+KExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVt
ZW50Lm9yaWdpbigpKSwgYWRkcmVzc1NwYWNlLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4
ZXI6OlRva2VuKHN0cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OlN0
cnVjdHVyZURlZmluaXRpb24mPihzdHJ1Y3R1cmVEZWZpbml0aW9uKSkpOworICAgICAgICAgICAg
ICAgIGF1dG8gYXJndW1lbnRUeXBlID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlBvaW50ZXJUeXBlPihM
ZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIGFkZHJlc3NTcGFjZSwgQVNU
OjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdp
bigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikpOwogICAgICAgICAgICAgICAgIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVF
bGVtZW50Lm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIHsgV1RGTW92ZShhcmd1bWVudFR5
cGUpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAg
ICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5j
cHAKaW5kZXggN2ZkMzY3NWFhM2ExYjM3YzI5NmEzMmM5NWNlZTgyZGFkZjY5YTQ4Yi4uNTJkMmU4
ZmNjYjQ3NGE5MGUwZTM0NTJkMDE1ZTVjNmIzOWY0MDViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCkBAIC00MCw3ICs0
MCw2IEBACiAjaW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNM
Q29tbWFFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIK
LSNpbmNsdWRlICJXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiV0hMU0xDb250aW51ZS5oIgogI2luY2x1ZGUgIldITFNMRGVyZWZl
cmVuY2VFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgpAQCAtNDgs
NiArNDcsNyBAQAogI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5o
IgogI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCiAjaW5jbHVkZSAiV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oIgorI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsLmgiCiAjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xG
YWxsdGhyb3VnaC5oIgogI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCkBAIC0xMDQsMTcg
KzEwNCwxNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KFByb2dyYW0mIHByb2dyYW0pCiB7CiAgICAg
Ly8gVGhlc2UgdmlzaXRpbmcgZnVuY3Rpb25zIG1pZ2h0IGFkZCBuZXcgZ2xvYmFsIHN0YXRlbWVu
dHMsIHNvIGRvbid0IHVzZSBmb3JlYWNoIHN5bnRheC4KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uJj4ocHJvZ3JhbS50
eXBlRGVmaW5pdGlvbnMoKVtpXSkpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3Jh
bS50eXBlRGVmaW5pdGlvbnMoKVtpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9n
cmFtLnN0cnVjdHVyZURlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mPihwcm9ncmFt
LnN0cnVjdHVyZURlZmluaXRpb25zKClbaV0pKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKVtpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZp
bml0aW9uJj4ocHJvZ3JhbS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKClbaV0pKTsKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygp
LnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24mPihwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKVtpXSkp
OworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25z
KClbaV0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
c3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJj4ocHJvZ3JhbS5uYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChwcm9ncmFtLm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKClbaV0pOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKCkuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbiY+KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpW2ldKSk7Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMo
KVtpXSk7CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYgdW5uYW1l
ZFR5cGUpCkBAIC0xNTgsOCArMTU4LDcgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCiAKIHZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbikKIHsK
LSAgICBpZiAoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6VW5uYW1lZFR5cGUmPigqZW51bWVyYXRpb25EZWZp
bml0aW9uLnR5cGUoKSkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChlbnVtZXJhdGlvbkRlZmlu
aXRpb24udHlwZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uTWVtYmVyIDogZW51bWVy
YXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQogICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOwogfQpAQCAtMjM0LDcgKzIzMyw3IEBAIHZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmIHR5cGVBcmd1bWVudCkKICAgICBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25z
dGFudEV4cHJlc3Npb24pIHsKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNvbnN0YW50RXhw
cmVzc2lvbik7CiAgICAgfSwgWyZdKFVuaXF1ZVJlZjxBU1Q6OlR5cGVSZWZlcmVuY2U+JiB0eXBl
UmVmZXJlbmNlKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6
OlR5cGVSZWZlcmVuY2UmPih0eXBlUmVmZXJlbmNlKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh0eXBlUmVmZXJlbmNlKTsKICAgICB9KSwgdHlwZUFyZ3VtZW50KTsKIH0KIApAQCAtMjY4
LDggKzI2Nyw4IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb24m
IGNvbnN0YW50RXhwcmVzc2lvbikKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG51bGxMaXRl
cmFsKTsKICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsK
ICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJvb2xlYW5MaXRlcmFsKTsKLSAgICB9LCBbJl0o
QVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYgY29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpIHsKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
KTsKKyAgICB9LCBbJl0oQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0aW9u
TWVtYmVyTGl0ZXJhbCkgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKTsKICAgICB9KSk7CiB9CiAKQEAgLTM0Niw3ICszNDUsNyBAQCB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6TnVsbExpdGVyYWxUeXBlJiBudWxsTGl0ZXJhbFR5cGUpCiAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqbnVsbExpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsK
IH0KIAotdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0
aW9uTWVtYmVyUmVmZXJlbmNlJikKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwmKQogewogfQogCkBAIC0zNjQsNyArMzYzLDcgQEAgdm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCiB2b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQogewogICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDog
YmxvY2suc3RhdGVtZW50cygpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nh
c3Q8QVNUOjpTdGF0ZW1lbnQmPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0YXRlbWVudCk7CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdGF0ZW1lbnQm
IHN0YXRlbWVudCkKQEAgLTQ1MSw2ICs0NTAsOCBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6VGVybmFyeUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKICAgICBlbHNlIGlmIChp
czxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQogICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsPihleHBy
ZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+
KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpF
bnVtZXJhdGlvbk1lbWJlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKICAgICBlbHNlIHsKICAgICAg
ICAgQVNTRVJUKGlzPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKICAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4
cHJlc3Npb24pKTsKQEAgLTQ4Nyw3ICs0ODgsNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
Rm9yTG9vcCYgZm9yTG9vcCkKICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KSB7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh2YXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCk7CiAgICAgfSwgWyZdKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiBleHBy
ZXNzaW9uKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkV4
cHJlc3Npb24mPihleHByZXNzaW9uKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHBy
ZXNzaW9uKTsKICAgICB9KSwgZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKICAgICBpZiAoZm9y
TG9vcC5jb25kaXRpb24oKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmNv
bmRpdGlvbigpKTsKQEAgLTUwMSw3ICs1MDIsNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQogICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRl
bWVudC5jb25kaXRpb25hbCgpKTsKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQu
Ym9keSgpKTsKICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6U3RhdGVtZW50Jj4oKmlmU3RhdGVtZW50LmVs
c2VCb2R5KCkpKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNl
Qm9keSgpKTsKIH0KIAogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3Rh
dGVtZW50KQpAQCAtNTU5LDcgKzU2MCw3IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBc3Np
Z25tZW50RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCiB2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQogewogICAgIGZvciAoYXV0
byYgYXJndW1lbnQgOiBjYWxsRXhwcmVzc2lvbi5hcmd1bWVudHMoKSkKLSAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RXhwcmVzc2lvbiY+KGFyZ3VtZW50KSk7Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhcmd1bWVudCk7CiAgICAgaWYgKGNhbGxFeHByZXNz
aW9uLmNhc3RSZXR1cm5UeXBlKCkpCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjYWxsRXhw
cmVzc2lvbi5jYXN0UmV0dXJuVHlwZSgpLT5nZXQoKSk7CiB9CkBAIC01NjcsNyArNTY4LDcgQEAg
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikK
IHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lv
bikKIHsKICAgICBmb3IgKGF1dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgp
KQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFeHByZXNzaW9u
Jj4oZXhwcmVzc2lvbikpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7
CiB9CiAKIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRl
cmVmZXJlbmNlRXhwcmVzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKaW5kZXggYTZhZTI5M2E5YjgzNmQxNWFhMTY3YjdkNDA5
ZmIyYTZlNjQ1YjQzYy4uYTVlNGM5NmQ4YTAxYzIzMTM4MmQwNmU3YTM5ZjYxYzZiMmUzYmNlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNp
dG9yLmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsKIGNs
YXNzIEZsb2F0TGl0ZXJhbDsKIGNsYXNzIE51bGxMaXRlcmFsOwogY2xhc3MgQm9vbGVhbkxpdGVy
YWw7Ci1jbGFzcyBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTsK
K2NsYXNzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbDsKIGNsYXNzIE51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZTsKIGNsYXNzIEJsb2NrOwogY2xhc3MgU3RhdGVtZW50OwpAQCAtMTQxLDcgKzE0
MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsVHlwZSYpOwogICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZsb2F0TGl0ZXJh
bFR5cGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOdWxsTGl0ZXJhbFR5cGUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYpOwogICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9u
QXR0cmlidXRlJik7CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlJik7CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QmxvY2smKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2NDkzODQ0Yjg4ZDUwNjQzNDEyNTBiNGRkZDVmYzA1MTM1Yjg3Nzc3Li4wMWM4ZGY2MGUzNzU1
ZDIwMzBlMjA1OTYxYWZiNzkzODEzYjVhMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDA2LDcgKzY0MDYsNiBAQAogCQkx
QzI0RUVBNzFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBKU0ZvbnRGYWNlU2V0Lmg7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRm9udEZhY2VTZXQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZGVyTWFj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5MTAxQzZENkEzQjAwN0VE
QjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkxQzMzMjc2QzIxQ0VEQTQyMDAwREM5RjIgLyogV0hMU0xFbnVtZXJhdGlvbk1lbWJl
ckxpdGVyYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzMzI3NzEyMUNGMEJFMTAwMERDOUYy
IC8qIFdITFNMTmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmFtZWRUeXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMzMyNzcyMjFDRjBEMkUwMDBEQzlGMiAvKiBX
SExTTFVubmFtZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVW5uYW1lZFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZv
bnRDYWNoZUNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvbnRDYWNoZUNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0
MTUsNiArNjQxNCw3IEBACiAJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTcwRTk3MzMw
ODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAv
KiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRW50cnlQb2ludFR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM5MDRERjkwQkE5RDJDODAwODFF
OUQwIC8qIFZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
VmVyc2lvbi54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMDMw
REMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50TG9vcE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBMTlFMTUwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMjY3LDcgKzEzMjY3LDcgQEAKIAkJQzIxQkY2RkYyMUNEODlDMjAwMjI3
OTc5IC8qIFdITFNMSWZTdGF0ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xJZlN0YXRlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFCRjcwMDIxQ0Q4OUMyMDAyMjc5
NzkgLyogV0hMU0xGYWxsdGhyb3VnaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZhbGx0aHJvdWdo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3
OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFC
RjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTENvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0
ZXJhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjFCRjcwMzIxQ0Q4OUM1MDAyMjc5NzkgLyog
V0hMU0xSZXR1cm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xSZXR1cm4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hpbGVM
b29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMV2hpbGVMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyMUJGNzA1MjFDRDg5QzcwMDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uQXR0
cmlidXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMzIzLDYgKzEzMzIzLDEwIEBACiAJCUMyMUJGNzNB
MjFDRDhENzAwMDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQ
cm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMUJGNzQyMjFDRDk2M0Iw
MDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXSExTTFN0
YW5kYXJkTGlicmFyeS5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9XSExTTFN0YW5k
YXJkTGlicmFyeS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjFC
Rjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdI
TFNMU3RhbmRhcmRMaWJyYXJ5LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIx
REYyRTcxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFERjJFODFEOUU0RTk5MDBGNUIyNEMg
LyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjM0QTk4NTIxRTg4NkE5MDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMVmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyMzRBOTg3MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMzRBOThB
MjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTE5hbWVSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyMzRBOThDMjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTE5hbWVSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjM0QTk4RDIxRTg4ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTE5hbWVDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzMzQ2LDEwICsxMzM1MCw2IEBACiAJCUMyMzRBOUI1MjFFOTJDMjMwMDNDOTg0
RCAvKiBXSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xTeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyMzRBOUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xJbnRyaW5zaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQzIxREYyRTcxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJpYXRpb25W
YWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250VmFy
aWF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFERjJFODFE
OUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlDMjM0QTk4NTIxRTg4NkE5MDAzQzk4NEQgLyogV0hMU0xWaXNpdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMVmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUMyMzRBOTg3MjFFODg2QUQwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjYwMTdBMTFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyog
Q1NTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9u
dEZhY2VTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDY0LDE1ICsyNTQ2
NCwxNSBAQAogCQkJCUMyMUJGNzE2MjFDRDg5RDUwMDIyNzk3OSAvKiBXSExTTENhbGxFeHByZXNz
aW9uLmggKi8sCiAJCQkJQzIxQkY3MDYyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMQ29tbWFFeHBy
ZXNzaW9uLmggKi8sCiAJCQkJQzIxQkY3MzMyMUNEODlGMDAwMjI3OTc5IC8qIFdITFNMQ29uc3Rh
bnRFeHByZXNzaW9uLmggKi8sCi0JCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNM
Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCAqLywKIAkJCQlD
MjFCRjZGNTIxQ0Q4OUI1MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAogCQkJCUMyMUJG
NzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAog
CQkJCUMyMUJGNzE4MjFDRDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywK
IAkJCQlDMjFCRjZGQjIxQ0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLAog
CQkJCUMyMUJGNzI4MjFDRDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQuaCAqLywKKwkJCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRy
eVBvaW50VHlwZS5oICovLAogCQkJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oICovLAogCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAv
KiBXSExTTEVudW1lcmF0aW9uTWVtYmVyLmggKi8sCi0JCQkJMUMzMzI3NkMyMUNFREE0MjAwMERD
OUYyIC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCisJCQkJQzIxQkY3MDIy
MUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCiAJ
CQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAogCQkJ
CUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCiAJCQkJ
QzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359017</attachid>
            <date>2019-01-13 19:36:20 -0800</date>
            <delta_ts>2019-01-14 11:21:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193389-20190113193601.patch</filename>
            <type>text/plain</type>
            <size>111183</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYxMDk5OGVhZjJiOWZh
MGM5ZWVkMDM5NjA1NTM0OGY1MzhiNzNkNS4uZGJhYjQzNzJjNmI5NmJhNjZmMzIxMDk0YzQ4YTk4
ZWVlODQzODZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MyBAQAorMjAxOS0wMS0xMyAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0g
QXNzb3J0ZWQgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzMzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhIGJ1bmNoIG9mIG5vbi1iZWhhdmlvci1jaGFuZ2luZyBjbGVhbnVw
LgorCisgICAgICAgIC0gVGhlIGNvbXBpbGVyIHVzZXMgVW5pcXVlUmVmIGFsbCBvdmVyIHRoZSBw
bGFjZSwgYW5kIFVuaXF1ZVJlZiBoYXMgYW4gaW1wbGljaXQgb3BlcmF0b3IgVCYuIFRoZXJlZm9y
ZSwKKyAgICAgICAgICB3ZSBkb24ndCBuZWVkIHRvIHN0YXRpY19jYXN0PFQmPiBldmVyeXdoZXJl
LgorICAgICAgICAtIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
IGlzIHRoZSBleGFjdCBzYW1lIHRoaW5nIGFzIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCwgc28K
KyAgICAgICAgICB0aGlzIHBhdGNoIGRlbGV0ZXMgdGhlIGxvbmdlci1uYW1lZCBjbGFzcyBpbiBm
YXZvciBvZiB0aGUgc2hvcnRlci1uYW1lZCBjbGFzcy4KKyAgICAgICAgLSBCZWNhdXNlIG9mIHRo
ZSBoZWFkZXIgZGVwZW5kZW5jeSB0cmVlLCB0aGlzIHBhdGNoIG1vdmVzIEVudHJ5UG9pbnRUeXBl
IGludG8gaXRzIG93biBmaWxlIHNvIGl0IGNhbiBiZQorICAgICAgICAgIHVzZWQgYnkgZmlsZXMg
dGhhdCBGdW5jdGlvbkRlY2xhcmF0aW9uIGRlcGVuZHMgb24uIFNhbWUgdGhpbmcgZm9yIEFkZHJl
c3NTcGFjZS4KKyAgICAgICAgLSBFbnVtVHlwZXMgaGF2ZSB0byBoYXZlIG5vbi1udWxsIGJhc2Ug
dHlwZXMuIFRoZSBwYXJzZXIgd2lsbCBtYWtlIHN1cmUgdGhpcyBpcyBhbHdheXMgdHJ1ZS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2Uu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2Uu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQmFzZVNlbWFudGljLmguCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQXJyYXlUeXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpBcnJheVR5cGU6
OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXJyYXlUeXBlOjp0
eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVudEV4
cHJlc3Npb246OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6QXNzaWdubWVu
dEV4cHJlc3Npb246OnJpZ2h0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCYXNlU2VtYW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCdWlsdEluU2VtYW50aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
QnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50
aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4
cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbjo6Q29uc3RhbnRFeHByZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkNvbnN0YW50RXhwcmVzc2lvbjo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6Q29uc3RhbnRFeHByZXNzaW9uOjptYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZS5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6RG9XaGlsZUxvb3A6OmNvbmRpdGlvbmFsKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50
OjplZmZlY3RmdWxFeHByZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMuaC4KKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6RW51bWVyYXRp
b25EZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbjo6dHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6
OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsOjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1l
cmF0aW9uTWVtYmVyTGl0ZXJhbDo6cmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpjbG9uZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0
aW9uRGVmaW5pdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9uRGVmaW5pdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWw6OmVudW1lcmF0aW9u
TWVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbDo6ZW51bWVyYXRpb25NZW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjpzZXRFbnVtZXJhdGlvbk1lbWJlcik6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6dHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpzZXRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmFkZHJlc3NTcGFjZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpzZXRBZGRyZXNzU3BhY2UpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RmxvYXRMaXRlcmFsVHlwZTo6Y29u
dmVyc2lvbkNvc3QgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZs
b2F0TGl0ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkZvckxvb3A6OmNvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGb3JM
b29wOjppbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6
Ym9keSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25E
ZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbjo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uOjp0eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJZlN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZT
dGF0ZW1lbnQ6OmNvbmRpdGlvbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Oklm
U3RhdGVtZW50Ojpib2R5KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OklmU3RhdGVt
ZW50OjplbHNlQm9keSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
SW5kZXhFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJbmRleEV4
cHJlc3Npb246OmluZGV4RXhwcmVzc2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRlcmFsVHlwZS5o
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SW50ZWdlckxpdGVyYWxUeXBlOjpwcmVm
ZXJyZWRUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbEV4
cHJlc3Npb246OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TG9naWNhbEV4
cHJlc3Npb246OnJpZ2h0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
TG9naWNhbE5vdEV4cHJlc3Npb246Om9wZXJhbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb246OmxWYWx1
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJF
eHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpNYWtlUG9pbnRlckV4
cHJlc3Npb246OmxWYWx1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb246OmJhc2UpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246OmxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uOjpuZXdWYWx1ZUV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6cmVzdWx0RXhwcmVzc2lvbik6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVmZXJlbmNlVHlwZTo6ZWxlbWVudFR5cGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVmZXJlbmNlVHlwZTo6ZWxlbWVudFR5cGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXNvbHZhYmxlVHlwZTo6cmVzb2x2
ZWRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlc29sdmFibGVU
eXBlOjpyZXNvbHZlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlc291cmNlU2VtYW50aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
UmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpSZXNvdXJjZVNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJ
dGVtRGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xSZXNvdXJjZVNlbWFudGljLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmV0dXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZXR1cm46
OnZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFs
aXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJ
dGVtRGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhZ2VJbk91dFNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpTdHJ1Y3R1cmVFbGVtZW50Ojp0eXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlN3aXRjaFN0YXRlbWVudDo6dmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6cHJlZGljYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OlRlcm5hcnlFeHByZXNzaW9uOjpib2R5RXhwcmVzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6ZWxzZUV4
cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVE
ZWZpbml0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlRGVmaW5pdGlv
bjo6dHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGU6OmNvbnZlcnNpb25Db3N0IGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbFR5cGU6OnByZWZlcnJlZFR5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb246OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6aW5pdGlhbGl6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6aXNBbm9ueW1vdXMgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpjb25kaXRpb25hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpXaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6aW5mZXJU
eXBlc0ZvclR5cGVBcmd1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmluZmVyVHlw
ZXNGb3JDYWxsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TmFtZVJlc29sdmVyOjp2aXNpdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cmVzb2x2ZU5hbWVzSW5UeXBlcyk6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6cmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFByb2dyYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQcm9ncmFtOjph
cHBlbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVu
dW1lcmF0aW9uRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpzeW50aGVz
aXplRW51bWVyYXRpb25GdW5jdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6c3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyk6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpWaXNpdG9yOjp2aXNpdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xW
aXNpdG9yLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDE5LTAxLTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1pbm9yIG9wdGltaXphdGlvbiB0byBSZW5kZXJUZXh0OjpzZXRSZW5kZXJlZFRleHQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQWRkcmVzc1NwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBZGRyZXNzU3BhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTZkN2M0Njk1ZGM0Y2FjODI5MDU0
ZTQwNTU1Nzg3NjUxNzVmODYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgPGNzdGRpbnQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKworbmFtZXNwYWNlIEFTVCB7CisKK2VudW0gY2xhc3MgQWRkcmVzc1NwYWNlIDogdWludDhf
dCB7CisgICAgQ29uc3RhbnQsCisgICAgRGV2aWNlLAorICAgIFRocmVhZGdyb3VwLAorICAgIFRo
cmVhZAorfTsKKworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCmluZGV4IDg5
Nzk0YjgwODBhZDUxYTRjYjY2NzY1NDBhYjRlZGQ0OGI0Y2NmM2UuLmEzZmY2NDUwYmI4MGQzZjg4
YjUwMzU5M2UxMzY2ZjBjMjM1Mjg2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFycmF5VHlwZS5oCkBAIC01NSw4ICs1NSw4
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFVubmFtZWRUeXBlJj4obV9lbGVtZW50VHlwZSk7IH0KLSAg
ICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4o
bV9lbGVtZW50VHlwZSk7IH0KKyAgICBjb25zdCBVbm5hbWVkVHlwZSYgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudFR5cGU7IH0KKyAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJu
IG1fZWxlbWVudFR5cGU7IH0KICAgICB1bnNpZ25lZCBudW1FbGVtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fbnVtRWxlbWVudHM7IH0KIAogICAgIFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4gY2xvbmUo
KSBjb25zdCBvdmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKaW5k
ZXggNzllYjFhZWMyMjEwYjQ3NmQzNTAxZjBlOTk1YTcwNTc4MGQ0OTAxMi4uYjEyMWZiNmMxZTFk
MTc5MjYxNWQ5YmIwMjc0ZmUyMzU4OGE3ZjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50
RXhwcmVzc2lvbi5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBc3Np
Z25tZW50RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9s
ZWZ0KTsgfQotICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhw
cmVzc2lvbiY+KG1fcmlnaHQpOyB9CisgICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuIG1f
bGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdodDsgfQogCiBw
cml2YXRlOgogICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2xlZnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCYXNlU2VtYW50aWMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1h
bnRpYy5oCmluZGV4IGZlOTlkYTI0ZjY0ZjlkNmVkNjA2MDQ2NzRjZWI4NzU2MzRmYjBmZWIuLmRk
MmE2NjUwMzVmMzIzMjhlZTNjZTIxMmNlN2I1YmQ4ZGMzYTZmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1hbnRpYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJhc2VTZW1h
bnRpYy5oCkBAIC0yNyw4ICsyNywxMCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1
ZGUgIldITFNMRW50cnlQb2ludFR5cGUuaCIKICNpbmNsdWRlICJXSExTTExleGVyLmgiCiAjaW5j
bHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTksNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIElucHV0LAog
ICAgICAgICBPdXRwdXQKICAgICB9OwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVm
aW5pdGlvbiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hh
ZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxFbnRy
eVBvaW50VHlwZT4mKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1f
b3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5jcHAKaW5kZXggNDE0YmQ0NWE5YTJh
Zjc1NWE3ZjQ0MGIxZmIwMzQzNDAzOTA3MzEzYy4uOGU5NWUzOWJmMGQ2M2Y0YjRkZTVmZTc5MjEw
MTg4OGVlMDY1YzYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCkBAIC03Mywx
MCArNzMsMTAgQEAgYm9vbCBCdWlsdEluU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3Qg
VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbnQKICAgICB9CiB9CiAKLWJvb2wgQnVp
bHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0
ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
RGVmaW5pdGlvbikgY29uc3QKK2Jvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JT
aGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBP
cHRpb25hbDxFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlKSBjb25zdAogewotICAgIHN3
aXRjaCAoKmZ1bmN0aW9uRGVmaW5pdGlvbi5lbnRyeVBvaW50VHlwZSgpKSB7Ci0gICAgY2FzZSBG
dW5jdGlvbkRlY2xhcmF0aW9uOjpFbnRyeVBvaW50VHlwZTo6VmVydGV4OgorICAgIHN3aXRjaCAo
KmVudHJ5UG9pbnRUeXBlKSB7CisgICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6VmVydGV4OgogICAg
ICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewogICAgICAgICBjYXNlIFNoYWRlckl0ZW1EaXJlY3Rp
b246OklucHV0OgogICAgICAgICAgICAgc3dpdGNoIChtX3ZhcmlhYmxlKSB7CkBAIC05NSw3ICs5
NSw3IEBAIGJvb2wgQnVpbHRJblNlbWFudGljOjppc0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGly
ZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24gZGlyCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgY2FzZSBGdW5jdGlvbkRlY2xhcmF0
aW9uOjpFbnRyeVBvaW50VHlwZTo6RnJhZ21lbnQ6CisgICAgY2FzZSBFbnRyeVBvaW50VHlwZTo6
RnJhZ21lbnQ6CiAgICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgICAgIGNhc2UgU2hh
ZGVySXRlbURpcmVjdGlvbjo6SW5wdXQ6CiAgICAgICAgICAgICBzd2l0Y2ggKG1fdmFyaWFibGUp
IHsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEJ1aWx0SW5TZW1hbnRpYzo6aXNBY2NlcHRhYmxl
Rm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uIGRpcgogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIGNhc2Ug
RnVuY3Rpb25EZWNsYXJhdGlvbjo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGU6CisgICAgY2FzZSBF
bnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAg
ICAgICAgY2FzZSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDoKICAgICAgICAgICAgIHN3aXRj
aCAobV92YXJpYWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAppbmRleCBlYmRlMWQw
ODRmZDM3NzIxNzJhNGY3ZjUzN2EzMzBmMGExNjEwODUxLi40M2I2OTg2YWY3ZDRiNzFjMjg2Nzdl
YzY1Y2VjZDhlYTdjNDczMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApAQCAtODEs
NyArODEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNv
bnN0IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGJvb2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0
aW9uLCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwg
Y29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgVmFyaWFibGUgbV92YXJpYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNz
aW9uLmgKaW5kZXggZGY2OGMyYTEzMzRkMjllOTEzYmFkNDVmY2M0MWEyNTc5MzFjMDg3YS4uM2Qx
YWUxY2VjMzU3ODk5YmQ4N2ZmZmQxNDU0MDZkYjMyOWYwODY0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29u
c3RhbnRFeHByZXNzaW9uLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQog
CiAjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgotI2luY2x1ZGUgIldITFNMQ29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExT
TEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgogI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFs
LmgiCiAjaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgogI2luY2x1ZGUgIldITFNMTnVs
bExpdGVyYWwuaCIKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBDb25zdGFudEV4cHJlc3Npb24oQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UmJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSkK
LSAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkpCisgICAgQ29uc3RhbnRFeHByZXNzaW9uKEVudW1lcmF0aW9uTWVt
YmVyTGl0ZXJhbCYmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKKyAgICAgICAgOiBtX3Zhcmlh
bnQoV1RGTW92ZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpKQogICAgIHsKICAgICB9CiAKQEAg
LTExMCw4ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVsbExpdGVyYWwu
Y2xvbmUoKTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0
ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKICAgICAgICAgICAgIHJldHVybiBib29sZWFu
TGl0ZXJhbC5jbG9uZSgpOwotICAgICAgICB9LCBbJl0oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9u
TWVtYmVyUmVmZXJlbmNlKSAtPiBDb25zdGFudEV4cHJlc3Npb24gewotICAgICAgICAgICAgcmV0
dXJuIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmNsb25lKCk7
CisgICAgICAgIH0sIFsmXShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIGVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCkgLT4gQ29uc3RhbnRFeHByZXNzaW9uIHsKKyAgICAgICAgICAgIHJl
dHVybiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuY2xvbmUoKTsKICAgICAgICAgfSksIG1fdmFy
aWFudCk7CiAgICAgfQogCkBAIC0xMzMsMTAgKzEzMywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gYm9vbGVhbkxpdGVyYWwudmFsdWUoKSA9PSBvdGhlckJvb2xlYW5MaXRl
cmFsLnZhbHVlKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByZXN1bHQg
PSBmYWxzZTsKLSAgICAgICAgfSwgWyZdKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0
aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJl
ZmVyZW5jZSkgewotICAgICAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29uc3Rh
bnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U+KG90aGVyLm1fdmFyaWFudCkp
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBvdGhlck1lbWJlclJlZmVyZW5jZSA9IFdU
Rjo6Z2V0PENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlPihvdGhl
ci5tX3ZhcmlhbnQpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmVudW1lcmF0aW9uTWVtYmVyKCkgPT0gb3RoZXJN
ZW1iZXJSZWZlcmVuY2UuZW51bWVyYXRpb25NZW1iZXIoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0
IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYgZW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSB7Cisg
ICAgICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWw+KG90aGVyLm1fdmFyaWFudCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBv
dGhlck1lbWJlclJlZmVyZW5jZSA9IFdURjo6Z2V0PEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbD4o
b3RoZXIubV92YXJpYW50KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBlbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwuZW51bWVyYXRpb25NZW1iZXIoKSA9PSBvdGhlck1lbWJlclJlZmVyZW5jZS5l
bnVtZXJhdGlvbk1lbWJlcigpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIH0pKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgfSwgWyZdKGNvbnN0IEJvb2xl
YW5MaXRlcmFsJikgewogICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIH0sIFsm
XShjb25zdCBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYpIHsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpIHsKICAgICAg
ICAgICAgIHJlc3VsdCA9IGZhbHNlOwogICAgICAgICB9KSk7CiAKQEAgLTE2OSw3ICsxNjksNyBA
QCBwcml2YXRlOgogICAgICAgICBGbG9hdExpdGVyYWwsCiAgICAgICAgIE51bGxMaXRlcmFsLAog
ICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVy
YXRpb25NZW1iZXJSZWZlcmVuY2UKKyAgICAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsCiAg
ICAgICAgID4gbV92YXJpYW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NTdkOTQ3Mjg1Yjk2N2FkMTFkOTE2ZTBlZTAy
ZmJhNWYxNTBkMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaAorKysgL2Rldi9udWxsCkBAIC0x
LDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotCi0jaW5jbHVkZSAiV0hMU0xMZXhlci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBXSExTTCB7Ci0KLW5h
bWVzcGFjZSBBU1QgewotCi1jbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb247Ci1jbGFzcyBFbnVt
ZXJhdGlvbk1lbWJlcjsKLQotY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UgOiBwdWJsaWMgRXhwcmVzc2lvbiB7Ci1wdWJsaWM6Ci0gICAgQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
LCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uKFdU
Rk1vdmUob3JpZ2luKSkKLSAgICAgICAgLCBtX2xlZnQoV1RGTW92ZShsZWZ0KSkKLSAgICAgICAg
LCBtX3JpZ2h0KFdURk1vdmUocmlnaHQpKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5D
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSgpID0gZGVmYXVsdDsK
LQotICAgIGV4cGxpY2l0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlKGNvbnN0IENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikg
PSBkZWZhdWx0OwotICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlKENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiYpID0gZGVm
YXVsdDsKLQotICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNl
JiBvcGVyYXRvcj0oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZl
cmVuY2UmKSA9IGRlbGV0ZTsKLSAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSYgb3BlcmF0b3I9KENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlJiYpID0gZGVmYXVsdDsKLQotICAgIGNvbnN0IFN0cmluZyYgbGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVmdDsgfQotICAgIGNvbnN0IFN0cmluZyYgcmlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3JpZ2h0OyB9Ci0KLSAgICBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSBjbG9uZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIHJlc3VsdCA9IENv
bnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKExleGVyOjpUb2tlbihv
cmlnaW4oKSksIFN0cmluZyhtX2xlZnQpLCBTdHJpbmcobV9yaWdodCkpOwotICAgICAgICByZXN1
bHQubV9lbnVtZXJhdGlvbk1lbWJlciA9IG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJh
dGlvbkRlZmluaXRpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZp
bml0aW9uOwotICAgIH0KLQotICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogZW51bWVyYXRpb25E
ZWZpbml0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uRGVm
aW5pdGlvbjsKLSAgICB9Ci0KLSAgICBFbnVtZXJhdGlvbk1lbWJlciogZW51bWVyYXRpb25NZW1i
ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1iZXI7Ci0gICAgfQot
Ci0gICAgRW51bWVyYXRpb25NZW1iZXIqIGVudW1lcmF0aW9uTWVtYmVyKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uTWVtYmVyOwotICAgIH0KLQotICAgIHZvaWQg
c2V0RW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKLSAgICB7Ci0g
ICAgICAgIG1fZW51bWVyYXRpb25EZWZpbml0aW9uID0gJmVudW1lcmF0aW9uRGVmaW5pdGlvbjsK
LSAgICAgICAgbV9lbnVtZXJhdGlvbk1lbWJlciA9ICZlbnVtZXJhdGlvbk1lbWJlcjsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgU3RyaW5nIG1fbGVmdDsKLSAgICBTdHJpbmcgbV9yaWdodDsKLSAg
ICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIG1fZW51bWVyYXRpb25EZWZpbml0aW9uIHsgbnVsbHB0
ciB9OwotICAgIEVudW1lcmF0aW9uTWVtYmVyKiBtX2VudW1lcmF0aW9uTWVtYmVyIHsgbnVsbHB0
ciB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgQVNUCi0KLX0KLQotfQotCi0jZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKaW5kZXggNTQ1OTEyYWIzOGY3ZjhhYzIx
NDRmYWZiN2M0ZjJmYTU4NGE5NDVhNS4uZTEyMTIyZTcxY2ViYTgyMWNhYzhiYWQ4NjVjMDljOTJm
YmMxOTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24mIHBvaW50
ZXIoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9wb2ludGVyKTsgfQorICAg
IEV4cHJlc3Npb24mIHBvaW50ZXIoKSB7IHJldHVybiBtX3BvaW50ZXI7IH0KIAogcHJpdmF0ZToK
ICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmgK
aW5kZXggMDE0NzgzNzc1ZTMzZTFjNzc0OWJiYjNkNTNjZDIyZjAzNzczOTZiNS4uMWQ5MjFmNmRj
MDA0YTNlNzkyMGY3MTczMzEzNzRhZDZkNDdjYjgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCkBA
IC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PFN0YXRlbWVudCY+KG1fYm9keSk7IH0KLSAgICBFeHByZXNzaW9uJiBj
b25kaXRpb25hbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX2NvbmRpdGlv
bmFsKTsgfQorICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQorICAgIEV4
cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQogCiBwcml2
YXRlOgogICAgIFVuaXF1ZVJlZjxTdGF0ZW1lbnQ+IG1fYm9keTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAppbmRleCA1NGQwODNhNWMwNjgwYjc1
NDkzYmY0Mzk4ZDZiMzUzZTZkOWY3NTk3Li43MGFlYTRiYjc2OTk5ZGE4NzI1OGM0Yjc0NDRlMzZj
ZjNjYzI2ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0
YXRlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFZmZlY3Rm
dWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgRXhwcmVzc2lvbiYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEV4cHJlc3Npb24mPihtX2VmZmVjdGZ1bEV4cHJlc3Npb24pOyB9CisgICAgRXhwcmVzc2lv
biYgZWZmZWN0ZnVsRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsg
fQogCiBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2VmZmVjdGZ1bEV4cHJl
c3Npb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnRyeVBvaW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjg4NzcwZDRkYTQ0
YWEyOTM0YThiY2FjMTE0ZjYxOWJjNDBjOWYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRW50cnlQb2ludFR5cGUuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSA8Y3N0ZGludD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCituYW1lc3BhY2UgQVNUIHsKKworZW51bSBjbGFzcyBFbnRyeVBvaW50
VHlwZSA6IHVpbnQ4X3QgeworICAgIFZlcnRleCwKKyAgICBGcmFnbWVudCwKKyAgICBDb21wdXRl
LAorICAgIC8vIEZJWE1FOiBBZGQgYW4gZW50cnkgcG9pbnQgdHlwZSBmb3IgdGVzdGluZworfTsK
KworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oCmluZGV4IDU1MDg5YTFhYjdkMWYwZmExODQwYmZhMWNiMWFjYmY3Mzg0YmRjMGQuLjBi
Y2VhOTU5NmRhZDA2MDVmMmZlZGUxY2UyODU1YzRhYTg0MWM2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBBU1Qg
ewogCiBjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24gOiBwdWJsaWMgTmFtZWRUeXBlIHsKIHB1
YmxpYzoKLSAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBT
dHJpbmcmJiBuYW1lLCBPcHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiYmIHR5cGUpCisg
ICAgRW51bWVyYXRpb25EZWZpbml0aW9uKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYg
bmFtZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUpCiAgICAgICAgIDogTmFtZWRUeXBl
KFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92
ZSh0eXBlKSkKICAgICB7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNF
bnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBVbm5hbWVkVHlwZSogdHlwZSgpIHsgcmV0dXJuIG1fdHlwZSA/ICZzdGF0aWNfY2FzdDxV
bm5hbWVkVHlwZSY+KCptX3R5cGUpIDogbnVsbHB0cjsgfQorICAgIFVubmFtZWRUeXBlJiB0eXBl
KCkgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICBib29sIGFkZChFbnVtZXJhdGlvbk1lbWJlciYm
IG1lbWJlcikKICAgICB7CkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgT3B0aW9uYWw8VW5pcXVlUmVmPFVubmFtZWRUeXBlPj4gbV90eXBlOworICAgIFVu
aXF1ZVJlZjxVbm5hbWVkVHlwZT4gbV90eXBlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8RW51bWVyYXRpb25NZW1iZXI+PiBtX21lbWJlcnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCmluZGV4IGJhNjQzMDM4MDJiMWI1YTQx
OTdkOTkxNmMxYTE1MjBiMjBmNjBjYzkuLmVlNzQ1ZTU0YmQwNTQyZjM3YmIzZDk4MTQzNzRlYjNl
NjBmY2E1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5o
CkBAIC0yNyw5ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV0hM
U0xFbnVtZXJhdGlvbk1lbWJlci5oIgotI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgogI2lu
Y2x1ZGUgIldITFNMTGV4ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywyNSArMzYsNzcgQEAgbmFtZXNwYWNlIFdITFNM
IHsKIAogbmFtZXNwYWNlIEFTVCB7CiAKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKK2Ns
YXNzIEVudW1lcmF0aW9uTWVtYmVyOworCiBjbGFzcyBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbiB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgRW51bWVyYXRpb25NZW1iZXImIGVudW1lcmF0aW9u
TWVtYmVyKQorICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChMZXhlcjo6VG9rZW4mJiBvcmln
aW4sIFN0cmluZyYmIGxlZnQsIFN0cmluZyYmIHJpZ2h0KQogICAgICAgICA6IEV4cHJlc3Npb24o
V1RGTW92ZShvcmlnaW4pKQotICAgICAgICAsIG1fZW51bWVyYXRpb25NZW1iZXIoZW51bWVyYXRp
b25NZW1iZXIpCisgICAgICAgICwgbV9sZWZ0KFdURk1vdmUobGVmdCkpCisgICAgICAgICwgbV9y
aWdodChXVEZNb3ZlKHJpZ2h0KSkKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RW51bWVy
YXRpb25NZW1iZXJMaXRlcmFsKCkgPSBkZWZhdWx0OwogCi0gICAgRW51bWVyYXRpb25NZW1iZXJM
aXRlcmFsKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCYpID0gZGVsZXRlOworICAgIGV4
cGxpY2l0IEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmKSA9IGRlZmF1bHQ7CiAgICAgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmIG9wZXJhdG9yPShjb25zdCBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKSA9IGRlbGV0
ZTsKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmIG9wZXJhdG9yPShFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWwmJikgPSBkZWZhdWx0OworCiAgICAgYm9vbCBpc0VudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEVudW1lcmF0
aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcigpIHsgcmV0dXJuIG1fZW51bWVyYXRpb25NZW1i
ZXI7IH0KKyAgICBzdGF0aWMgRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsIHdyYXAoTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBTdHJpbmcmJiBsZWZ0LCBTdHJpbmcmJiByaWdodCwgRW51bWVyYXRpb25E
ZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24sIEVudW1lcmF0aW9uTWVtYmVyJiBlbnVt
ZXJhdGlvbk1lbWJlcikKKyAgICB7CisgICAgICAgIEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCBy
ZXN1bHQoV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGxlZnQpLCBXVEZNb3ZlKHJpZ2h0KSk7Cisg
ICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uRGVmaW5pdGlvbiA9ICZlbnVtZXJhdGlvbkRlZmlu
aXRpb247CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVtYmVyID0gJmVudW1lcmF0aW9u
TWVtYmVyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGNvbnN0IFN0cmlu
ZyYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIGNvbnN0IFN0cmluZyYgcmln
aHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwgY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwoTGV4ZXI6OlRva2VuKG9yaWdpbigpKSwgU3RyaW5nKG1fbGVmdCks
IFN0cmluZyhtX3JpZ2h0KSk7CisgICAgICAgIHJlc3VsdC5tX2VudW1lcmF0aW9uTWVtYmVyID0g
bV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBFbnVtZXJhdGlvbkRlZmluaXRpb24qIGVudW1lcmF0aW9uRGVmaW5pdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9lbnVtZXJhdGlvbkRlZmluaXRpb247CisgICAgfQorCisgICAgRW51
bWVyYXRpb25EZWZpbml0aW9uKiBlbnVtZXJhdGlvbkRlZmluaXRpb24oKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgIH0KKworICAgIEVu
dW1lcmF0aW9uTWVtYmVyKiBlbnVtZXJhdGlvbk1lbWJlcigpCisgICAgeworICAgICAgICByZXR1
cm4gbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICB9CisKKyAgICBFbnVtZXJhdGlvbk1lbWJlciog
ZW51bWVyYXRpb25NZW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW51bWVy
YXRpb25NZW1iZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRFbnVtZXJhdGlvbk1lbWJlcihFbnVt
ZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiwgRW51bWVyYXRpb25NZW1i
ZXImIGVudW1lcmF0aW9uTWVtYmVyKQorICAgIHsKKyAgICAgICAgbV9lbnVtZXJhdGlvbkRlZmlu
aXRpb24gPSAmZW51bWVyYXRpb25EZWZpbml0aW9uOworICAgICAgICBtX2VudW1lcmF0aW9uTWVt
YmVyID0gJmVudW1lcmF0aW9uTWVtYmVyOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBFbnVtZXJh
dGlvbk1lbWJlciYgbV9lbnVtZXJhdGlvbk1lbWJlcjsKKyAgICBTdHJpbmcgbV9sZWZ0OworICAg
IFN0cmluZyBtX3JpZ2h0OworICAgIEVudW1lcmF0aW9uRGVmaW5pdGlvbiogbV9lbnVtZXJhdGlv
bkRlZmluaXRpb24geyBudWxscHRyIH07CisgICAgRW51bWVyYXRpb25NZW1iZXIqIG1fZW51bWVy
YXRpb25NZW1iZXIgeyBudWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBU1QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEV4
cHJlc3Npb24uaAppbmRleCA3NDEzMDBkYmVhYzRjOWYyNjI3ODg5OTA4MDEwYzFhODUzNTIzNzI0
Li41ODNhNjJlY2VjOWVkOGY3YmNiMGM2NDkyZGQ2MzFlYjcyNDU2ZTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFeHByZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVz
c2lvbi5oCkBAIC0yNyw4ICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1
ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCiAjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorI2luY2x1
ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKICNpbmNsdWRlICJXSExTTFZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTUzLDYgKzU3LDIyIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExl
eGVyOjpUb2tlbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KIAorICAgIFVu
bmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbV90eXBlID8gJiptX3R5cGUgOiBudWxscHRyOyB9
CisKKyAgICB2b2lkIHNldFR5cGUoVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUpCisgICAg
eworICAgICAgICBBU1NFUlQoIW1fdHlwZSk7CisgICAgICAgIG1fdHlwZSA9IFdURk1vdmUodHlw
ZSk7CisgICAgfQorCisgICAgY29uc3QgT3B0aW9uYWw8QWRkcmVzc1NwYWNlPiYgYWRkcmVzc1Nw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KKworICAgIHZvaWQgc2V0QWRk
cmVzc1NwYWNlKE9wdGlvbmFsPEFkZHJlc3NTcGFjZT4mIGFkZHJlc3NTcGFjZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghbV9hZGRyZXNzU3BhY2UpOworICAgICAgICBtX2FkZHJlc3NTcGFjZSA9
IGFkZHJlc3NTcGFjZTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50RXhw
cmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQm9v
bGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc2LDYgKzk2LDgg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKKyAgICBP
cHRpb25hbDxVbmlxdWVSZWY8VW5uYW1lZFR5cGU+PiBtX3R5cGU7CisgICAgT3B0aW9uYWw8QWRk
cmVzc1NwYWNlPiBtX2FkZHJlc3NTcGFjZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFTVApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAppbmRleCA4MWM5ZGRlZWM3N2I3NjQ0ZjI0N2Qy
Y2ZhZWI3MTBmNjE2MDg1ZWE3Li4wYjY3MTI2MTE0ODQzOWYwZjliYTg2NTFlNzYwMzE2YTMyNzY5
ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVyYWxUeXBlLmNwcApAQCAtNjcsNyArNjcsNyBA
QCBib29sIEZsb2F0TGl0ZXJhbFR5cGU6OmNhblJlc29sdmUoY29uc3QgVHlwZSYgdHlwZSkgY29u
c3QKIAogdW5zaWduZWQgRmxvYXRMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5u
YW1lZFR5cGUmIHVubmFtZWRUeXBlKSBjb25zdAogewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRU
eXBlLCBzdGF0aWNfY2FzdDxjb25zdCBUeXBlUmVmZXJlbmNlJj4obV9wcmVmZXJyZWRUeXBlKSkp
CisgICAgaWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRMaXRlcmFsVHlwZS5o
CmluZGV4IDU2ODA2NDMwMzQ3OGNlMWM0MDEyMzFkY2IzN2ZhYmY1NDJiMWIwNDcuLmJjOWYwMzcw
OTlkZTBkODEwYmVkODlhYjEyYTQ1MWU1YjNiMDgzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGbG9hdExpdGVy
YWxUeXBlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Zsb2F0TGl0
ZXJhbFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBUeXBlUmVm
ZXJlbmNlJiBwcmVmZXJyZWRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZVJlZmVyZW5j
ZSY+KG1fcHJlZmVycmVkVHlwZSk7IH0KKyAgICBUeXBlUmVmZXJlbmNlJiBwcmVmZXJyZWRUeXBl
KCkgeyByZXR1cm4gbV9wcmVmZXJyZWRUeXBlOyB9CiAKICAgICBib29sIGNhblJlc29sdmUoY29u
c3QgVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHVuc2lnbmVkIGNvbnZlcnNpb25Db3N0KGNv
bnN0IFVubmFtZWRUeXBlJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGb3JMb29wLmgKaW5kZXggNzEzZWRj
OTJkZjdiNTI0Njc4Y2I4YTgxM2IzNWRjNjQ3MWRmNDZkMi4uM2NkYzQxOGZhYWExYzg5M2VkMjQy
NzI1NTdhNmRiOGI1OWE3NWI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaApAQCAtNjMsOSArNjMsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVSZWY8
RXhwcmVzc2lvbj4+JiBpbml0aWFsaXphdGlvbigpIHsgcmV0dXJuIG1faW5pdGlhbGl6YXRpb247
IH0KLSAgICBFeHByZXNzaW9uKiBjb25kaXRpb24oKSB7IHJldHVybiBtX2NvbmRpdGlvbiA/ICZz
dGF0aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1fY29uZGl0aW9uKSA6IG51bGxwdHI7IH0KLSAgICBF
eHByZXNzaW9uKiBpbmNyZW1lbnQoKSB7IHJldHVybiBtX2luY3JlbWVudCA/ICZzdGF0aWNfY2Fz
dDxFeHByZXNzaW9uJj4oKm1faW5jcmVtZW50KSA6IG51bGxwdHI7IH0KLSAgICBTdGF0ZW1lbnQm
IGJvZHkoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZW1lbnQmPihtX2JvZHkpOyB9CisgICAg
RXhwcmVzc2lvbiogY29uZGl0aW9uKCkgeyByZXR1cm4gbV9jb25kaXRpb24gPyAmKm1fY29uZGl0
aW9uIDogbnVsbHB0cjsgfQorICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJuIG1f
aW5jcmVtZW50ID8gJiptX2luY3JlbWVudCA6IG51bGxwdHI7IH0KKyAgICBTdGF0ZW1lbnQmIGJv
ZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIAogcHJpdmF0ZToKICAgICBWYXJpYW50PFZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50LCBVbmlxdWVSZWY8RXhwcmVzc2lvbj4+IG1faW5pdGlhbGl6
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKaW5kZXggMTkwYmJiODBj
MzBiMzU5MTZhYzJhYmMzODViM2JkNTk0ZDNjNjcyYy4uNTA4Mjg1ODQ2MDcwNTc3ZDg5NGM1MzRh
Mzk3NGJjZTBhYmIyMWYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldITFNM
RW50cnlQb2ludFR5cGUuaCIKICNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCiAj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgogI2luY2x1ZGUgIldITFNMTm9kZS5oIgpAQCAtNDQsMTMg
KzQ1LDYgQEAgbmFtZXNwYWNlIEFTVCB7CiAKIGNsYXNzIEZ1bmN0aW9uRGVjbGFyYXRpb24gOiBw
dWJsaWMgTm9kZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBFbnRyeVBvaW50VHlwZSA6IHVp
bnQ4X3QgewotICAgICAgICBWZXJ0ZXgsCi0gICAgICAgIEZyYWdtZW50LAotICAgICAgICBDb21w
dXRlLAotICAgICAgICAvLyBGSVhNRTogQWRkIGFuIGVudHJ5IHBvaW50IHR5cGUgZm9yIHRlc3Rp
bmcKLSAgICB9OwotCiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4mJiBvcmln
aW4sIEF0dHJpYnV0ZUJsb2NrJiYgYXR0cmlidXRlQmxvY2ssIE9wdGlvbmFsPEVudHJ5UG9pbnRU
eXBlPiBlbnRyeVBvaW50VHlwZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIHR5cGUsIFN0cmlu
ZyYmIG5hbWUsIFZhcmlhYmxlRGVjbGFyYXRpb25zJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8U2Vt
YW50aWM+JiYgc2VtYW50aWMsIGJvb2wgaXNPcGVyYXRvcikKICAgICAgICAgOiBtX29yaWdpbihX
VEZNb3ZlKG9yaWdpbikpCiAgICAgICAgICwgbV9hdHRyaWJ1dGVCbG9jayhXVEZNb3ZlKGF0dHJp
YnV0ZUJsb2NrKSkKQEAgLTczLDggKzY3LDggQEAgcHVibGljOgogCiAgICAgQXR0cmlidXRlQmxv
Y2smIGF0dHJpYnV0ZUJsb2NrKCkgeyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQogICAgIGNv
bnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2VudHJ5UG9pbnRUeXBlOyB9Ci0gICAgY29uc3QgVW5uYW1lZFR5cGUmIHR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBVbm5hbWVkVHlwZSY+KG1fdHlwZSk7IH0K
LSAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBl
Jj4obV90eXBlKTsgfQorICAgIGNvbnN0IFVubmFtZWRUeXBlJiB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisgICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICBi
b29sIGlzQ2FzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZSA9PSAib3BlcmF0b3IgY2FzdCI7IH0K
ICAgICBjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9ucyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVyczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKaW5kZXggOWI3Y2Y0YjM3YWY2
ZGYwYmQ5NGVhMjc5YjQ4MGIxM2FiZWNiMzM0NC4uYmY2ZjY1Njk2YzY1YTg4MWY5MmNhMWM3NjMw
YTEzNzBiNGVkNTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oCkBAIC01Niw5ICs1Niw5IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8RXhwcmVzc2lvbiY+KG1fY29uZGl0aW9uYWwpOyB9Ci0gICAgU3RhdGVtZW50JiBib2R5
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQotICAgIFN0YXRl
bWVudCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5ID8gJnN0YXRpY19jYXN0PFN0YXRl
bWVudCY+KCptX2Vsc2VCb2R5KSA6IG51bGxwdHI7IH0KKyAgICBFeHByZXNzaW9uJiBjb25kaXRp
b25hbCgpIHsgcmV0dXJuIG1fY29uZGl0aW9uYWw7IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7
IHJldHVybiBtX2JvZHk7IH0KKyAgICBTdGF0ZW1lbnQqIGVsc2VCb2R5KCkgeyByZXR1cm4gbV9l
bHNlQm9keSA/ICYqbV9lbHNlQm9keSA6IG51bGxwdHI7IH0KIAogcHJpdmF0ZToKICAgICBVbmlx
dWVSZWY8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEluZGV4RXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9u
LmgKaW5kZXggMjViYTZlNzhhNTlmNzY3ODg2MmI4NDg1MDQ4ZjlkZWE4ZjAwYjc5ZS4uMzQ3YmNm
ZWM0Y2E0MjYxNGRiOWJhYTcwODZiNTEyM2IyMjk2ZTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHByZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW5kZXhFeHBy
ZXNzaW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIm9wZXJh
dG9yW109Il9zdHI7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1faW5kZXgpOyB9CisgICAgRXhwcmVz
c2lvbiYgaW5kZXhFeHByZXNzaW9uKCkgeyByZXR1cm4gbV9pbmRleDsgfQogCiBwcml2YXRlOgog
ICAgIFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJM
aXRlcmFsVHlwZS5jcHAKaW5kZXggZTg3YWNkYWNhYjc5MjdjNDkxOTZkY2I0OWY4NGI2MDljN2Yy
YjIxYi4uNGZjNjg2M2E5ZDljNjdjODI1ODRiNGViMTEyOTVhODcyNTIwMTA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxp
dGVyYWxUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgSW50
ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0CiAKIHVu
c2lnbmVkIEludGVnZXJMaXRlcmFsVHlwZTo6Y29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlKSBjb25zdAogewotICAgIGlmIChtYXRjaGVzKHVubmFtZWRUeXBlLCBz
dGF0aWNfY2FzdDxjb25zdCBUeXBlUmVmZXJlbmNlJj4obV9wcmVmZXJyZWRUeXBlKSkpCisgICAg
aWYgKG1hdGNoZXModW5uYW1lZFR5cGUsIG1fcHJlZmVycmVkVHlwZSkpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHJldHVybiAxOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWxUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaApp
bmRleCA0MjZmMGZlMTgyNTk2Y2RkZjhmNGE4YWQzMDU4MTEwYjIyMmFhNzQ4Li41NTYxN2I2YmE5
ZWFmYmUxODVjZGZlMWVjZjBlYjMxNDVkY2FlYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0
ZXJhbFR5cGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSW50ZWdl
ckxpdGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgVHlw
ZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVSZWZl
cmVuY2UmPihtX3ByZWZlcnJlZFR5cGUpOyB9CisgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVk
VHlwZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCiAgICAgYm9vbCBjYW5SZXNvbHZl
KGNvbnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29z
dChjb25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxF
eHByZXNzaW9uLmgKaW5kZXggYWQzNWU4OGExYjBlZmMxNjg3ZDRhZTdlYjVhMjVmOWQzNGJjMGFl
Mi4uZmJmYzkzNTk2MTFiODZhYjQ0NGE4MWQ1NDdiMGJhZWY0ODFmZjBlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xMb2dpY2FsRXhwcmVzc2lvbi5oCkBAIC02MSw4ICs2MSw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNMb2dpY2FsRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIEV4cHJlc3Npb24mIGxlZnQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9u
Jj4obV9sZWZ0KTsgfQotICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RXhwcmVzc2lvbiY+KG1fcmlnaHQpOyB9CisgICAgRXhwcmVzc2lvbiYgbGVmdCgpIHsgcmV0
dXJuIG1fbGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gbV9yaWdodDsg
fQogCiBwcml2YXRlOgogICAgIFR5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RF
eHByZXNzaW9uLmgKaW5kZXggMWE5NzJiZTZiMmQ2YTRiMDc1ZjE1YjJhMjk2MTRmMTRjODQzYTU5
OS4uMTQ5NzYzMjQxNmJjY2E4MTY5YzdmMjU4OTliYzQ0MzU1MWIzYWM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4
cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24mIG9wZXJhbmQoKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFeHByZXNzaW9uJj4obV9vcGVyYW5kKTsgfQorICAgIEV4cHJlc3Npb24mIG9wZXJhbmQoKSB7
IHJldHVybiBtX29wZXJhbmQ7IH0KIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5oCmluZGV4IGJjMDE5NTMxZGY2MzBlYTRjZmQ1ZDNiZWM0NDVlMDZkMmNhOGVhMjYu
LjYzMTZmNTRlMTYzMjZiNGE0ODNmYTg3MmUxZjQ3YmIwNDhlZGY4OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVy
ZW5jZUV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uJiBsVmFsdWUo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9sVmFsdWUpOyB9CisgICAgRXhw
cmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gbV9sVmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBV
bmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9sVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVy
RXhwcmVzc2lvbi5oCmluZGV4IDA0OGE0NDQwMWVhNmIxNDkyYzUxZDRlMDkwYTZkNGIwOWU1NGFk
MTUuLjdiMDUyYjZkNWYyODg3ZjU5MmRmNDRmZDk0MDljNGZhOTUyMDNhYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVy
RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFeHByZXNzaW9uJj4obV9sVmFsdWUpOyB9CisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkg
eyByZXR1cm4gbV9sVmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lv
bj4gbV9sVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5o
CmluZGV4IGUyODc1NWVkYjJiYjliOTBkZWUwYWU3NjJhMzgzMWQwYTAzYWRlZDcuLjJlYzM0ZTE1
ZDhhNDBlNWFkMmUyYmY4OTY4MGMyMWMzMzQ0Yzk5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9wb3NzaWJsZUFuZE92ZXJsb2FkcyA9IG92ZXJsb2FkczsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fYmFzZSk7
IH0KKyAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gbV9iYXNlOyB9CiAKIHByaXZhdGU6
CiAgICAgVW5pcXVlUmVmPEV4cHJlc3Npb24+IG1fYmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaAppbmRleCBmMjliMjkzOTNlYWUyMjRhYTJkNjc0ZWMy
NWE4MTY1OTA2YTJlNmI5Li43OWQ4ZDBmNzA4ZThkMDU3ODMxMmM4MTc5NGU4OGVkYWYzNDg3Y2Y5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC04
NSwxMSArODUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFeHByZXNzaW9u
JiBsVmFsdWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV9sVmFsdWUpOyB9
CisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gbV9sVmFsdWU7IH0KICAgICBWYXJp
YWJsZURlY2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KICAgICBW
YXJpYWJsZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgpIHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KLSAg
ICBFeHByZXNzaW9uKiBuZXdWYWx1ZUV4cHJlc3Npb24oKSB7IHJldHVybiBtX25ld1ZhbHVlRXhw
cmVzc2lvbiA/ICZzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1fbmV3VmFsdWVFeHByZXNzaW9u
KSA6IG51bGxwdHI7IH0KLSAgICBFeHByZXNzaW9uKiByZXN1bHRFeHByZXNzaW9uKCkgeyByZXR1
cm4gbV9yZXN1bHRFeHByZXNzaW9uID8gJnN0YXRpY19jYXN0PEV4cHJlc3Npb24mPigqbV9yZXN1
bHRFeHByZXNzaW9uKSA6IG51bGxwdHI7IH0KKyAgICBFeHByZXNzaW9uKiBuZXdWYWx1ZUV4cHJl
c3Npb24oKSB7IHJldHVybiBtX25ld1ZhbHVlRXhwcmVzc2lvbiA/ICYqbV9uZXdWYWx1ZUV4cHJl
c3Npb24gOiBudWxscHRyOyB9CisgICAgRXhwcmVzc2lvbiogcmVzdWx0RXhwcmVzc2lvbigpIHsg
cmV0dXJuIG1fcmVzdWx0RXhwcmVzc2lvbiA/ICYqbV9yZXN1bHRFeHByZXNzaW9uIDogbnVsbHB0
cjsgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPGNsYXNzIFUsIGNsYXNzLi4uIEFyZ3M+IGZy
aWVuZCBVbmlxdWVSZWY8VT4gV1RGOjptYWtlVW5pcXVlUmVmKEFyZ3MmJi4uLik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWZlcmVu
Y2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xS
ZWZlcmVuY2VUeXBlLmgKaW5kZXggNjRjODRiY2I0YzM5NWVkMzc2NmMzN2JjNzFiYzA1YmVlZDI3
OWFmNS4uODgxMWFjOWFkNDI3ZGQwMmU3ZjE0MWIwNjQzMmJjNTAzMzg2OTY1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVmZXJlbmNl
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFJlZmVyZW5jZVR5cGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkK
IAorI2luY2x1ZGUgIldITFNMQWRkcmVzc1NwYWNlLmgiCiAjaW5jbHVkZSAiV0hMU0xMZXhlci5o
IgogI2luY2x1ZGUgIldITFNMVW5uYW1lZFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CkBAIC00MCwxMyArNDEsNiBAQCBuYW1lc3BhY2UgQVNUIHsKIAogY2xhc3MgUmVmZXJlbmNl
VHlwZSA6IHB1YmxpYyBVbm5hbWVkVHlwZSB7CiBwdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBBZGRy
ZXNzU3BhY2UgOiB1aW50OF90IHsKLSAgICAgICAgQ29uc3RhbnQsCi0gICAgICAgIERldmljZSwK
LSAgICAgICAgVGhyZWFkZ3JvdXAsCi0gICAgICAgIFRocmVhZAotICAgIH07Ci0KICAgICBSZWZl
cmVuY2VUeXBlKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgQWRkcmVzc1NwYWNlIGFkZHJlc3NTcGFj
ZSwgVW5pcXVlUmVmPFVubmFtZWRUeXBlPiYmIGVsZW1lbnRUeXBlKQogICAgICAgICA6IFVubmFt
ZWRUeXBlKFdURk1vdmUob3JpZ2luKSkKICAgICAgICAgLCBtX2FkZHJlc3NTcGFjZShhZGRyZXNz
U3BhY2UpCkBAIC02Miw4ICs1Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVmZXJlbmNlVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBBZGRyZXNzU3BhY2Ug
YWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KLSAgICBjb25z
dCBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBVbm5hbWVkVHlwZSY+KG1fZWxlbWVudFR5cGUpOyB9Ci0gICAgVW5uYW1lZFR5cGUmIGVs
ZW1lbnRUeXBlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VW5uYW1lZFR5cGUmPihtX2VsZW1lbnRU
eXBlKTsgfQorICAgIGNvbnN0IFVubmFtZWRUeXBlJiBlbGVtZW50VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZWxlbWVudFR5cGU7IH0KKyAgICBVbm5hbWVkVHlwZSYgZWxlbWVudFR5cGUoKSB7IHJl
dHVybiBtX2VsZW1lbnRUeXBlOyB9CiAKIHByaXZhdGU6CiAgICAgQWRkcmVzc1NwYWNlIG1fYWRk
cmVzc1NwYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFJlc29sdmFibGVUeXBlLmgKaW5kZXggY2Q3MWJkNGNjNGI4NDJm
ZGZlZWUxMjQ5YTM2NzM4NDE3M2RkZDY0Ni4uZjAxZjg2NjQ4ODFmODgwNDQ5OWFhOWU3NzYyN2Rk
ZmIxNzc4MGU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVzb2x2YWJsZVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXNvbHZhYmxlVHlwZS5oCkBAIC01OCw4ICs1OCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVzb2x2ZShjb25zdCBUeXBlJikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgY29udmVyc2lvbkNvc3QoY29uc3QgVW5uYW1lZFR5
cGUmKSBjb25zdCA9IDA7CiAKLSAgICBjb25zdCBVbm5hbWVkVHlwZSogcmVzb2x2ZWRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmc3RhdGljX2Nhc3Q8Y29uc3QgVW5uYW1l
ZFR5cGUmPigqbV9yZXNvbHZlZFR5cGUpIDogbnVsbHB0cjsgfQotICAgIFVubmFtZWRUeXBlKiBy
ZXNvbHZlZFR5cGUoKSB7IHJldHVybiBtX3Jlc29sdmVkVHlwZSA/ICZzdGF0aWNfY2FzdDxVbm5h
bWVkVHlwZSY+KCptX3Jlc29sdmVkVHlwZSkgOiBudWxscHRyOyB9CisgICAgY29uc3QgVW5uYW1l
ZFR5cGUqIHJlc29sdmVkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRUeXBlID8gJipt
X3Jlc29sdmVkVHlwZSA6IG51bGxwdHI7IH0KKyAgICBVbm5hbWVkVHlwZSogcmVzb2x2ZWRUeXBl
KCkgeyByZXR1cm4gbV9yZXNvbHZlZFR5cGUgPyAmKm1fcmVzb2x2ZWRUeXBlIDogbnVsbHB0cjsg
fQogCiAgICAgdm9pZCByZXNvbHZlKFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4mJiB0eXBlKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlc291cmNlU2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKaW5kZXggODQ0MDk2MGM2ZTNiNDg3
MmQ5ZTkzNDQzZmI4OGM3MzU4ZWQzNmNiZC4uYmUxYTg3M2I2MzY4MGNlN2VmNGMwYWRjYTI5NmVj
YTljOTFlZTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXSExTTEFkZHJlc3NT
cGFjZS5oIgogI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSAiV0hMU0xJbmZl
clR5cGVzLmgiCiAjaW5jbHVkZSAiV0hMU0xJbnRyaW5zaWNzLmgiCkBAIC00Niw3ICs0Nyw3IEBA
IGJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBVbm5hbWVkVHlw
ZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEluCiAgICAgY2FzZSBNb2RlOjpVbm9yZGVyZWRBY2Nlc3NW
aWV3OgogICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5cGUpKSB7CiAgICAg
ICAgICAgICBhdXRvJiByZWZlcmVuY2VUeXBlID0gZG93bmNhc3Q8UmVmZXJlbmNlVHlwZT4odW5u
YW1lZFR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNl
KCkgPT0gUmVmZXJlbmNlVHlwZTo6QWRkcmVzc1NwYWNlOjpDb25zdGFudCB8fCByZWZlcmVuY2VU
eXBlLmFkZHJlc3NTcGFjZSgpID09IFJlZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZTo6RGV2aWNl
OworICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZVR5cGUuYWRkcmVzc1NwYWNlKCkgPT0gQWRk
cmVzc1NwYWNlOjpDb25zdGFudCB8fCByZWZlcmVuY2VUeXBlLmFkZHJlc3NTcGFjZSgpID09IEFk
ZHJlc3NTcGFjZTo6RGV2aWNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChpczxBcnJheVR5cGU+
KHVubmFtZWRUeXBlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTksNyArNjAsNyBA
QCBib29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlLCBjb25zdCBJbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2Fz
ZSBNb2RlOjpUZXh0dXJlOgogICAgICAgICBpZiAoaXM8UmVmZXJlbmNlVHlwZT4odW5uYW1lZFR5
cGUpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3BhY2U6OkNvbnN0
YW50OworICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlZmVyZW5jZVR5cGU+KHVubmFtZWRU
eXBlKS5hZGRyZXNzU3BhY2UoKSA9PSBBZGRyZXNzU3BhY2U6OkNvbnN0YW50OwogICAgICAgICBp
ZiAoaXM8QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgaWYgKGlzPFR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBlKSkgewpAQCAtNzEsMTQg
KzcyLDE0IEBAIGJvb2wgUmVzb3VyY2VTZW1hbnRpYzo6aXNBY2NlcHRhYmxlVHlwZShjb25zdCBV
bm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUsIGNvbnN0IEluCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBjYXNlIE1vZGU6OkJ1ZmZlcjoKICAgICAgICAgaWYgKGlzPFJlZmVyZW5jZVR5cGU+KHVu
bmFtZWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1
bm5hbWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gUmVmZXJlbmNlVHlwZTo6QWRkcmVzc1NwYWNl
OjpDb25zdGFudDsKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxSZWZlcmVuY2VUeXBlPih1
bm5hbWVkVHlwZSkuYWRkcmVzc1NwYWNlKCkgPT0gQWRkcmVzc1NwYWNlOjpDb25zdGFudDsKICAg
ICAgICAgcmV0dXJuIGlzPEFycmF5VHlwZT4odW5uYW1lZFR5cGUpOwogICAgIGNhc2UgTW9kZTo6
U2FtcGxlcjoKICAgICAgICAgcmV0dXJuIG1hdGNoZXModW5uYW1lZFR5cGUsIGludHJpbnNpY3Mu
c2FtcGxlclR5cGUoKSk7CiAgICAgfQogfQogCi1ib29sIFJlc291cmNlU2VtYW50aWM6OmlzQWNj
ZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rp
b24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0Citib29sIFJlc291cmNlU2VtYW50
aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBTaGFkZXJJdGVtRGlyZWN0aW9uOjpJbnB1dDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJl
c291cmNlU2VtYW50aWMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlc291cmNlU2VtYW50aWMuaAppbmRleCA0YjAyYmUwMjA3YmMzYzgxZmQyOTI5YmJi
MGUxZTU5OGIzMmNkZGQ4Li5lN2NhMDY0YjY2ODg1YmM1NDMyNTQ1Zjk5YmJhOGQzZTdiYzZmNGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xSZXNvdXJjZVNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5oCkBAIC03Myw3ICs3Myw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICBib29sIGlzQWNjZXB0YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUm
LCBjb25zdCBJbnRyaW5zaWNzJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0FjY2VwdGFi
bGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNvbnN0IEZ1bmN0
aW9uRGVmaW5pdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlcHRhYmxlRm9y
U2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9uLCBjb25zdCBPcHRpb25hbDxF
bnRyeVBvaW50VHlwZT4mKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBNb2RlIG1f
bW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJldHVybi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmV0dXJuLmgKaW5kZXggNzdlYjI0Njg0ZjA0NzIyNDg1NjQ0ZGFmNDliNzIwNzgzMDNj
ZjQ1YS4uZjlkMjA5ZDQ0ODYxZWUwNWIxNDNjNGNiZTRlOTI1M2IxM2JkNmE5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmV0dXJu
LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1JldHVybigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24qIHZhbHVlKCkgeyBy
ZXR1cm4gbV92YWx1ZSA/ICZzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4oKm1fdmFsdWUpIDogbnVs
bHB0cjsgfQorICAgIEV4cHJlc3Npb24qIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZSA/ICYqbV92
YWx1ZSA6IG51bGxwdHI7IH0KIAogICAgIEZ1bmN0aW9uRGVmaW5pdGlvbiogZnVuY3Rpb24oKSB7
IHJldHVybiBtX2Z1bmN0aW9uOyB9CiAgICAgdm9pZCBzZXRGdW5jdGlvbihGdW5jdGlvbkRlZmlu
aXRpb24qIGZ1bmN0aW9uRGVmaW5pdGlvbikgeyBtX2Z1bmN0aW9uID0gZnVuY3Rpb25EZWZpbml0
aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljLmNwcAppbmRleCA0MjFjNzkzYzkyMmJiZjY0OTAxOWFhMzkwNzU5ZTUzM2FiNDA2OGNk
Li43YjQ3ODA5NTFiMmY3ZGUxNzM2ZWM3ODU5OTBhNmVkNTNhMzE0NmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNjZXB0
YWJsZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWQKICAgICByZXR1cm4gZG93bmNhc3Q8
TmF0aXZlVHlwZURlY2xhcmF0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkuaXNO
dW1iZXIoKTsKIH0KIAotYm9vbCBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM6OmlzQWNj
ZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rp
b24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYpIGNvbnN0Citib29sIFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYzo6aXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFk
ZXJJdGVtRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+
JikgY29uc3QKIHsKICAgICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246
OklucHV0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50
U2VtYW50aWMuaAppbmRleCBkNjJhYmJjZWJlNTUwZTJiODE5MDE5ODJjNjg5M2IzOGJjNGNmMjQw
Li42NTYzMTVhNzkyYTRmZWI1YThlYmNiNGRiN2E4N2YzOTlhYzJmODY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlv
bkNvbnN0YW50U2VtYW50aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuaApAQCAtNTksNyAr
NTksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBpc0FjY2VwdGFibGVUeXBlKGNvbnN0
IFVubmFtZWRUeXBlJiwgY29uc3QgSW50cmluc2ljcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJv
b2wgaXNBY2NlcHRhYmxlRm9yU2hhZGVySXRlbURpcmVjdGlvbihTaGFkZXJJdGVtRGlyZWN0aW9u
LCBjb25zdCBGdW5jdGlvbkRlZmluaXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
QWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiwgY29u
c3QgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAKaW5kZXggMjI1NzJjODEy
YzgzOWE5YWEzYzVlZTYyZmIzMmY3MTA0ZDkxZmVjNS4uYmNhMzE1YWI4NTkwN2ZiMmRlNzUzYzM5
ODIzMzMwZDU4MTdmMmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3Bw
CkBAIC01OSwxNCArNTksMTQgQEAgYm9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJs
ZVR5cGUoY29uc3QgVW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlLCBjb25zdAogICAgICAgICB8fCBu
YXRpdmVUeXBlRGVjbGFyYXRpb24uaXNNYXRyaXgoKTsKIH0KIAotYm9vbCBTdGFnZUluT3V0U2Vt
YW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVj
dGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0
aW9uKSBjb25zdAorYm9vbCBTdGFnZUluT3V0U2VtYW50aWM6OmlzQWNjZXB0YWJsZUZvclNoYWRl
ckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IE9wdGlv
bmFsPEVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNo
ICgqZnVuY3Rpb25EZWZpbml0aW9uLmVudHJ5UG9pbnRUeXBlKCkpIHsKLSAgICBjYXNlIEZ1bmN0
aW9uRGVjbGFyYXRpb246OkVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6CisgICAgc3dpdGNoICgqZW50
cnlQb2ludFR5cGUpIHsKKyAgICBjYXNlIEVudHJ5UG9pbnRUeXBlOjpWZXJ0ZXg6CiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIGNhc2UgRnVuY3Rpb25EZWNsYXJhdGlvbjo6RW50cnlQb2ludFR5
cGU6OkZyYWdtZW50OgorICAgIGNhc2UgRW50cnlQb2ludFR5cGU6OkZyYWdtZW50OgogICAgICAg
ICByZXR1cm4gZGlyZWN0aW9uID09IFNoYWRlckl0ZW1EaXJlY3Rpb246OklucHV0OwotICAgIGNh
c2UgRnVuY3Rpb25EZWNsYXJhdGlvbjo6RW50cnlQb2ludFR5cGU6OkNvbXB1dGU6CisgICAgY2Fz
ZSBFbnRyeVBvaW50VHlwZTo6Q29tcHV0ZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKaW5kZXggNGFlODUzMmFkN2M3ZTJj
ZThlODUwNjY3Y2FjZjc4ODYxNWY2MDY5YS4uNjE3NjRjOWUxNDVlYjllOGUzZmQ3ZDkyN2U5MGMx
MzMwMDdjZDMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgaXNBY2NlcHRhYmxlVHlwZShjb25z
dCBVbm5hbWVkVHlwZSYsIGNvbnN0IEludHJpbnNpY3MmKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGlzQWNjZXB0YWJsZUZvclNoYWRlckl0ZW1EaXJlY3Rpb24oU2hhZGVySXRlbURpcmVjdGlv
biwgY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0FjY2VwdGFibGVGb3JTaGFkZXJJdGVtRGlyZWN0aW9uKFNoYWRlckl0ZW1EaXJlY3Rpb24sIGNv
bnN0IE9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgKaW5k
ZXggNGNkNjRlMmUyOGFmZTU2Y2JiOGNmMDMyYzE0OWZhNjk2YWM0ZTZlYi4uODQ3MmY1Yzk2MmM4
N2NhZTBkNzE3MGVmNDM4ZWQ0N2RhYmRkMDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1l
bnQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1
Y3R1cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKIAogICAgIGNvbnN0IExleGVyOjpUb2tlbiYgb3Jp
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KLSAgICBVbm5hbWVkVHlwZSYgdHlwZSgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFVubmFtZWRUeXBlJj4obV90eXBlKTsgfQorICAgIFVubmFt
ZWRUeXBlJiB0eXBlKCkgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgT3B0aW9uYWw8U2VtYW50aWM+JiBzZW1hbnRpYygp
IHsgcmV0dXJuIG1fc2VtYW50aWM7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAppbmRl
eCA2YjE5ZDcwNDIyYzk0ZDk5ZWQxMzkwNDIwNTA2M2RlMTIxNDhiNTMyLi43YzE2MGJhNGU3OWRj
YzEzYWJhYzMyZjA1YmExMjEzYzM5ZmIxZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRXhwcmVzc2lvbiYgdmFs
dWUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFeHByZXNzaW9uJj4obV92YWx1ZSk7IH0KKyAgICBF
eHByZXNzaW9uJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBWZWN0b3I8U3dpdGNo
Q2FzZT4mIHN3aXRjaENhc2VzKCkgeyByZXR1cm4gbV9zd2l0Y2hDYXNlczsgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMVGVybmFyeUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmgKaW5kZXggYjQxZDEyYjVkMjI5ZmQ3ZDQ5
ZDBmODU5MGU5ZmRlMWE1MDgwNmMyZC4uZmU1NjE0ZGIxMmUxYjQ5MGY1N2EyZDhkZWRlM2UyOWYy
MzZiNDRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCkBAIC01NCw5ICs1NCw5
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNUZXJuYXJ5RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24mIHByZWRpY2F0ZSgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPihtX3ByZWRpY2F0ZSk7IH0KLSAgICBFeHByZXNz
aW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHJlc3Npb24mPiht
X2JvZHlFeHByZXNzaW9uKTsgfQotICAgIEV4cHJlc3Npb24mIGVsc2VFeHByZXNzaW9uKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fZWxzZUV4cHJlc3Npb24pOyB9CisgICAg
RXhwcmVzc2lvbiYgcHJlZGljYXRlKCkgeyByZXR1cm4gbV9wcmVkaWNhdGU7IH0KKyAgICBFeHBy
ZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fYm9keUV4cHJlc3Npb247IH0KKyAg
ICBFeHByZXNzaW9uJiBlbHNlRXhwcmVzc2lvbigpIHsgcmV0dXJuIG1fZWxzZUV4cHJlc3Npb247
IH0KIAogcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8RXhwcmVzc2lvbj4gbV9wcmVkaWNhdGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMVHlwZURlZmluaXRpb24uaAppbmRleCAyZTNmZjM2NGQ2YmQ2MDYzMDUyZmMzYWYxYjVm
YzQ2ZjMxZWY2NGVmLi5hZDg3YTAwMjdkZmU2YzYyMGNjNWU2MTYxMTNmMzQ2ZjZjNzMzMTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xU
eXBlRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc1R5cGVEZWZpbml0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgVW5uYW1lZFR5cGUmIHR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxVbm5hbWVk
VHlwZSY+KG1fdHlwZSk7IH0KKyAgICBVbm5hbWVkVHlwZSYgdHlwZSgpIHsgcmV0dXJuIG1fdHlw
ZTsgfQogCiAgICAgY29uc3QgVHlwZSYgdW5pZnlOb2RlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5jcHAKaW5k
ZXggMDFmMzE5NzkxNDZiYzdjNGNlODM1Y2I4ZjVmNWRkYzQyZjBhMWVjOC4uN2ZkZjhjYjRkOThj
MGFhMGMzMTBhZDMwMzg5ZWYyMmEzYTc4MWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVu
c2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBib29sIFVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjYW5SZXNvbHZlKGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0
CiAKIHVuc2lnbmVkIFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlOjpjb252ZXJzaW9uQ29zdChj
b25zdCBVbm5hbWVkVHlwZSYgdW5uYW1lZFR5cGUpIGNvbnN0CiB7Ci0gICAgaWYgKG1hdGNoZXMo
dW5uYW1lZFR5cGUsIHN0YXRpY19jYXN0PGNvbnN0IFR5cGVSZWZlcmVuY2UmPihtX3ByZWZlcnJl
ZFR5cGUpKSkKKyAgICBpZiAobWF0Y2hlcyh1bm5hbWVkVHlwZSwgbV9wcmVmZXJyZWRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJMaXRl
cmFsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuaAppbmRleCAzNjJlZmE5NmRiM2JiNTQ5ZjcyMTg2
ZmUyZjE5ZjFjNTlmYjE3ZGI3Li45NWZiZmY2YjkwMjlmMDVhYjUyNGY3MzBmOTU0M2Y0ZDFlNzAy
NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgVHlwZVJl
ZmVyZW5jZSYgcHJlZmVycmVkVHlwZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGVSZWZlcmVu
Y2UmPihtX3ByZWZlcnJlZFR5cGUpOyB9CisgICAgVHlwZVJlZmVyZW5jZSYgcHJlZmVycmVkVHlw
ZSgpIHsgcmV0dXJuIG1fcHJlZmVycmVkVHlwZTsgfQogCiAgICAgYm9vbCBjYW5SZXNvbHZlKGNv
bnN0IFR5cGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBjb252ZXJzaW9uQ29zdChj
b25zdCBVbm5hbWVkVHlwZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVE
ZWNsYXJhdGlvbi5oCmluZGV4IGI0NDk0NjAyY2ZiYWFiMTEzNWQ3MTYyMzU2YTBhMjA4NzAxMjJl
YmUuLjE5ODI0Zjk0MDU0ZTRiM2I3ZDdjZjI0ZjYzYzAxMTliOGE2M2Y0ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVj
bGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmgKQEAgLTY1LDkgKzY1LDEwIEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcmIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIGNvbnN0IE9wdGlvbmFs
PFVuaXF1ZVJlZjxVbm5hbWVkVHlwZT4+JiB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
IC8vIEFub255bW91cyB2YXJpYWJsZXMgaW5zaWRlIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb25z
IGhhdmUgdGhlaXIgdHlwZSBzZXQgYnkgdGhlIHR5cGUgY2hlY2tlci4KLSAgICBVbm5hbWVkVHlw
ZSogdHlwZSgpIHsgcmV0dXJuIG1fdHlwZSA/ICZzdGF0aWNfY2FzdDxVbm5hbWVkVHlwZSY+KCpt
X3R5cGUpIDogbnVsbHB0cjsgfQorICAgIFVubmFtZWRUeXBlKiB0eXBlKCkgeyByZXR1cm4gbV90
eXBlID8gJiptX3R5cGUgOiBudWxscHRyOyB9CiAgICAgT3B0aW9uYWw8U2VtYW50aWM+JiBzZW1h
bnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWM7IH0KLSAgICBFeHByZXNzaW9uKiBpbml0aWFsaXpl
cigpIHsgcmV0dXJuIG1faW5pdGlhbGl6ZXIgPyAmc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KCpt
X2luaXRpYWxpemVyKSA6IG51bGxwdHI7IH0KKyAgICBFeHByZXNzaW9uKiBpbml0aWFsaXplcigp
IHsgcmV0dXJuIG1faW5pdGlhbGl6ZXIgPyAmKm1faW5pdGlhbGl6ZXIgOiBudWxscHRyOyB9Cisg
ICAgYm9vbCBpc0Fub255bW91cygpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZS5pc051bGwoKTsgfQog
CiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKaW5k
ZXggYTdlODY4MmFmOWRlMjBjNjJlNDVhZTAzMWFkMjEwODRkNDFmYzliZS4uYTZjN2I1ZTlhNWEy
Njc5NzcwM2U4ZDZkN2QzNWIyN2ZlNDUwYzY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKQEAgLTU0LDgg
KzU0LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8RXhwcmVzc2lvbiY+KG1fY29uZGl0aW9uYWwpOyB9Ci0gICAgU3RhdGVt
ZW50JiBib2R5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RhdGVtZW50Jj4obV9ib2R5KTsgfQor
ICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gbV9jb25kaXRpb25hbDsgfQor
ICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCiBwcml2YXRlOgogICAg
IFVuaXF1ZVJlZjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja0R1cGxpY2F0ZUZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVw
bGljYXRlRnVuY3Rpb25zLmNwcAppbmRleCA1N2I0NjJlMGMxZjM3YWQzY2EyYzcyYzk5OGVlYjVk
MzZkZDJjZGI4Li44ZDVmNjhmMDdiNmMwMzhmZTViYTdiYmM4MmRjZWNkMThjMmViZWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrRHVw
bGljYXRlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrRHVwbGljYXRlRnVuY3Rpb25zLmNwcApAQCAtNDEsOSArNDEsOSBAQCBi
b29sIGNoZWNrRHVwbGljYXRlRnVuY3Rpb25zKGNvbnN0IFByb2dyYW0mIHByb2dyYW0pCiB7CiAg
ICAgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uPj4gZnVuY3Rpb25zOwogICAgIGZvciAoYXV0byYgZnVuY3Rpb25EZWZpbml0aW9uIDog
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpCi0gICAgICAgIGZ1bmN0aW9ucy5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y29uc3QgQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mPihmdW5jdGlvbkRlZmlu
aXRpb24pKTsKKyAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChmdW5jdGlvbkRlZmluaXRpb24pOwog
ICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkKLSAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChzdGF0aWNf
Y2FzdDxjb25zdCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKSk7CisgICAgICAgIGZ1bmN0aW9ucy5hcHBlbmQobmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbik7CiAKICAgICBzdGQ6OnNvcnQoZnVuY3Rpb25zLmJlZ2luKCksIGZ1bmN0aW9u
cy5lbmQoKSwgW10oY29uc3QgQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBhLCBjb25zdCBBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24mIGIpIC0+IGJvb2wgewogICAgICAgICBpZiAoYS5uYW1lKCku
bGVuZ3RoKCkgPCBiLm5hbWUoKS5sZW5ndGgoKSkKQEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBjaGVj
a0R1cGxpY2F0ZUZ1bmN0aW9ucyhjb25zdCBQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAg
JiYgZnVuY3Rpb25zW2ldLmdldCgpLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0gMgogICAgICAgICAg
ICAgJiYgaXM8QVNUOjpSZWZlcmVuY2VUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBBU1Q6OlVubmFt
ZWRUeXBlJj4oKmZ1bmN0aW9uc1tpXS5nZXQoKS5wYXJhbWV0ZXJzKClbMF0udHlwZSgpKSkKICAg
ICAgICAgICAgICYmIGlzPEFTVDo6UmVmZXJlbmNlVHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgQVNU
OjpVbm5hbWVkVHlwZSY+KCpmdW5jdGlvbnNbaV0uZ2V0KCkucGFyYW1ldGVycygpWzFdLnR5cGUo
KSkpCi0gICAgICAgICAgICAmJiBtYXRjaGVzKHN0YXRpY19jYXN0PGNvbnN0IEFTVDo6VW5uYW1l
ZFR5cGUmPigqZnVuY3Rpb25zW2ldLmdldCgpLnBhcmFtZXRlcnMoKVswXS50eXBlKCkpLCBzdGF0
aWNfY2FzdDxjb25zdCBBU1Q6OlVubmFtZWRUeXBlJj4oKmZ1bmN0aW9uc1tpXS5nZXQoKS5wYXJh
bWV0ZXJzKClbMV0udHlwZSgpKSkpCisgICAgICAgICAgICAmJiBtYXRjaGVzKCpmdW5jdGlvbnNb
aV0uZ2V0KCkucGFyYW1ldGVycygpWzBdLnR5cGUoKSwgKmZ1bmN0aW9uc1tpXS5nZXQoKS5wYXJh
bWV0ZXJzKClbMV0udHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAppbmRleCAyMGUwZWYwOWU0MTQxNTI1MWUwODRh
ODJkZWI1NWUxZjFmY2UyOWUyLi43Y2JkYjZhZmYyZTI2ZGZlZTZmNjFmNDUwYjc4NmNlMTRkMjcy
NjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TEluZmVyVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSW5mZXJUeXBlcy5jcHAKQEAgLTE1OSwxNiArMTU5LDE5IEBAIE9wdGlvbmFsPFVuaXF1
ZVJlZjxBU1Q6OlVubmFtZWRUeXBlPj4gY29tbWl0KEFTVDo6UmVzb2x2YWJsZVR5cGUmIHJlc29s
dmFibGVUeXBlCiB7CiAgICAgQVNTRVJUKCFyZXNvbHZhYmxlVHlwZS5yZXNvbHZlZFR5cGUoKSk7
CiAgICAgaWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsVHlwZT4ocmVzb2x2YWJsZVR5cGUpKSB7Ci0g
ICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxU
eXBlPihyZXNvbHZhYmxlVHlwZSkucHJlZmVycmVkVHlwZSgpLmNsb25lKCkpOwotICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8QVNUOjpGbG9hdExpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkucHJl
ZmVycmVkVHlwZSgpLmNsb25lKCk7CisgICAgICAgIGF1dG8mIGZsb2F0TGl0ZXJhbFR5cGUgPSBk
b3duY2FzdDxBU1Q6OkZsb2F0TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKKyAgICAgICAg
cmVzb2x2YWJsZVR5cGUucmVzb2x2ZShmbG9hdExpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUoKS5j
bG9uZSgpKTsKKyAgICAgICAgcmV0dXJuIGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgp
LmNsb25lKCk7CiAgICAgfQogICAgIGlmIChpczxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4ocmVz
b2x2YWJsZVR5cGUpKSB7Ci0gICAgICAgIHJlc29sdmFibGVUeXBlLnJlc29sdmUoZG93bmNhc3Q8
QVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKS5wcmVmZXJyZWRUeXBlKCku
Y2xvbmUoKSk7Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsVHlw
ZT4ocmVzb2x2YWJsZVR5cGUpLnByZWZlcnJlZFR5cGUoKS5jbG9uZSgpOworICAgICAgICBhdXRv
JiBpbnRlZ2VyTGl0ZXJhbFR5cGUgPSBkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUpOworICAgICAgICByZXNvbHZhYmxlVHlwZS5yZXNvbHZlKGludGVnZXJM
aXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkuY2xvbmUoKSk7CisgICAgICAgIHJldHVybiBpbnRl
Z2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgpLmNsb25lKCk7CiAgICAgfQogICAgIGlmIChp
czxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkpIHsKLSAg
ICAgICAgcmVzb2x2YWJsZVR5cGUucmVzb2x2ZShkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWxUeXBlPihyZXNvbHZhYmxlVHlwZSkucHJlZmVycmVkVHlwZSgpLmNsb25lKCkpOwot
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZT4o
cmVzb2x2YWJsZVR5cGUpLnByZWZlcnJlZFR5cGUoKS5jbG9uZSgpOworICAgICAgICBhdXRvJiB1
bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSA9IGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbFR5cGU+KHJlc29sdmFibGVUeXBlKTsKKyAgICAgICAgcmVzb2x2YWJsZVR5cGUucmVz
b2x2ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBlKCkuY2xvbmUoKSk7
CisgICAgICAgIHJldHVybiB1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5wcmVmZXJyZWRUeXBl
KCkuY2xvbmUoKTsKICAgICB9CiAgICAgaWYgKGlzPEFTVDo6TnVsbExpdGVyYWxUeXBlPihyZXNv
bHZhYmxlVHlwZSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRyeWluZyB0byBtYXRjaCBudWxscHRy
IGFuZCBudWxscHRyIGZhaWxzLgpAQCAtMTk5LDcgKzIwMiw3IEBAIGJvb2wgaW5mZXJUeXBlc0Zv
clR5cGVBcmd1bWVudHMoQVNUOjpOYW1lZFR5cGUmIHBvc3NpYmxlVHlwZSwgQVNUOjpUeXBlQXJn
dW1lbnRzCiAgICAgICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAg
ICBleHByZXNzaW9uID0gJmNvbnN0YW50RXhwcmVzc2lvbjsKICAgICAgICAgICAgIH0sIFsmXShV
bmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdGhlVHlwZVJlZmVyZW5jZSkgewotICAgICAg
ICAgICAgICAgIHR5cGVSZWZlcmVuY2UgPSAmc3RhdGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNl
Jj4odGhlVHlwZVJlZmVyZW5jZSk7CisgICAgICAgICAgICAgICAgdHlwZVJlZmVyZW5jZSA9ICZ0
aGVUeXBlUmVmZXJlbmNlOwogICAgICAgICAgICAgfSksIHR5cGVBcmd1bWVudCk7CiAgICAgICAg
IH07CiAKQEAgLTIyNCw3ICsyMjcsNyBAQCBib29sIGluZmVyVHlwZXNGb3JDYWxsKEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbiYgcG9zc2libGVGdW5jdGlvbiwgVmVjdG9yPHN0ZDo6cgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3NzaWJsZUZ1bmN0
aW9uLnBhcmFtZXRlcnMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHN1Y2Nlc3MgPSBX
VEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKFVuaXF1ZVJlZjxBU1Q6OlVubmFtZWRUeXBl
PiYgdW5uYW1lZFR5cGUpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXMoKnBv
c3NpYmxlRnVuY3Rpb24ucGFyYW1ldGVycygpW2ldLnR5cGUoKSwgc3RhdGljX2Nhc3Q8QVNUOjpV
bm5hbWVkVHlwZSY+KHVubmFtZWRUeXBlKSk7CisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlcygq
cG9zc2libGVGdW5jdGlvbi5wYXJhbWV0ZXJzKClbaV0udHlwZSgpLCB1bm5hbWVkVHlwZSk7CiAg
ICAgICAgIH0sIFsmXShSZWY8UmVzb2x2YWJsZVR5cGVSZWZlcmVuY2U+JiByZXNvbHZhYmxlVHlw
ZVJlZmVyZW5jZSkgLT4gYm9vbCB7CiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2YWJsZVR5cGVS
ZWZlcmVuY2UtPnJlc29sdmFibGVUeXBlKCkuY2FuUmVzb2x2ZSgqcG9zc2libGVGdW5jdGlvbi5w
YXJhbWV0ZXJzKClbaV0udHlwZSgpKTsKICAgICAgICAgfSksIGFyZ3VtZW50VHlwZXNbaV0uZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xOYW1lUmVzb2x2ZXIuY3BwCmluZGV4IDQ4ZmE5MzAyMjA4YWZlZmVlZTdlNjQ4Y2JjZjVk
MzczNjNiNjNlMmMuLjJlMGVkZWY0NmY0ZTU5MmFiYzdhNGU5MTAzMjUzNjdmNzU2YTBmOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJl
c29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE5hbWVSZXNvbHZlcjo6
dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpCiAgICAgTmFtZVJlc29sdmVyKG5h
bWVDb250ZXh0KS5jaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKICAgICBp
ZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkgewogICAgICAgICBOYW1lQ29udGV4dCBuYW1lQ29u
dGV4dCgmbV9uYW1lQ29udGV4dCk7Ci0gICAgICAgIE5hbWVSZXNvbHZlcihuYW1lQ29udGV4dCku
Y2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6U3RhdGVtZW50Jj4oKmlmU3RhdGVt
ZW50LmVsc2VCb2R5KCkpKTsKKyAgICAgICAgTmFtZVJlc29sdmVyKG5hbWVDb250ZXh0KS5jaGVj
a0Vycm9yQW5kVmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOwogICAgIH0KIH0KIApAQCAt
MTY3LDE3ICsxNjcsMjAgQEAgdm9pZCBOYW1lUmVzb2x2ZXI6OnZpc2l0KEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24KIHZvaWQgTmFtZVJlc29s
dmVyOjp2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCiB7CiAgICAgaWYg
KGlzPEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGRvdEV4cHJlc3Npb24uYmFzZSgpKSkgewotICAg
ICAgICBpZiAoYXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyhk
b3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihkb3RFeHByZXNzaW9uLmJhc2UoKSkubmFt
ZSgpKSkgeworICAgICAgICBhdXRvIGJhc2VOYW1lID0gZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZT4oZG90RXhwcmVzc2lvbi5iYXNlKCkpLm5hbWUoKTsKKyAgICAgICAgaWYgKGF1dG8g
ZW51bWVyYXRpb25UeXBlcyA9IG1fbmFtZUNvbnRleHQuZ2V0VHlwZXMoYmFzZU5hbWUpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25UeXBlcy0+c2l6ZSgpID09IDEpOwogICAgICAg
ICAgICAgQVNUOjpOYW1lZFR5cGUmIHR5cGUgPSAoKmVudW1lcmF0aW9uVHlwZXMpWzBdOwogICAg
ICAgICAgICAgaWYgKGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPih0eXBlKSkgewogICAg
ICAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmlu
aXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4odHlwZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIG1lbWJlciA9IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5tZW1i
ZXJCeU5hbWUoZG90RXhwcmVzc2lvbi5maWVsZE5hbWUoKSkpIHsKKyAgICAgICAgICAgICAgICBh
dXRvIG1lbWJlck5hbWUgPSBkb3RFeHByZXNzaW9uLmZpZWxkTmFtZSgpOworICAgICAgICAgICAg
ICAgIGlmIChhdXRvKiBtZW1iZXIgPSBlbnVtZXJhdGlvbkRlZmluaXRpb24ubWVtYmVyQnlOYW1l
KG1lbWJlck5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKSA8PSBzaXplb2YoQVNUOjpEb3RFeHByZXNz
aW9uKSwgIkRvdCBleHByZXNzaW9ucyBuZWVkIHRvIGJlIGFibGUgdG8gYmVjb21lIEVudW1lcmF0
aW9uTWVtYmVyTGl0ZXJhbHMgd2l0aG91dCB1cGRhdGluZyBiYWNrcmVmZXJlbmNlcyIpOwogICAg
ICAgICAgICAgICAgICAgICBMZXhlcjo6VG9rZW4gb3JpZ2luID0gZG90RXhwcmVzc2lvbi5vcmln
aW4oKTsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFBlcmhhcHMgZG8gdGhpcyB3aXRo
IHZhcmlhbnRzIG9yIGEgUmV3cml0ZXIgaW5zdGVhZC4KICAgICAgICAgICAgICAgICAgICAgZG90
RXhwcmVzc2lvbi5+RG90RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgICAgICBuZXcgKCZk
b3RFeHByZXNzaW9uKSBBU1Q6OkVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbChXVEZNb3ZlKG9yaWdp
biksICptZW1iZXIpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbCA9IEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsOjp3cmFwKFdURk1vdmUob3Jp
Z2luKSwgV1RGTW92ZShiYXNlTmFtZSksIFdURk1vdmUobWVtYmVyTmFtZSksIGVudW1lcmF0aW9u
RGVmaW5pdGlvbiwgKm1lbWJlcik7CisgICAgICAgICAgICAgICAgICAgIG5ldyAoJmRvdEV4cHJl
c3Npb24pIEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsKFdURk1vdmUoZW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgc2V0RXJyb3IoKTsKQEAgLTIxMiwxNSArMjE1LDE4IEBA
IHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVz
c2lvbikKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Npb24pOwogfQogCi12b2lk
IE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1l
bWJlclJlZmVyZW5jZSYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVu
Y2UpCit2b2lkIE5hbWVSZXNvbHZlcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVy
YWwmIGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCkKIHsKLSAgICBpZiAoYXV0byBlbnVtZXJhdGlv
blR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyhjb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZS5sZWZ0KCkpKSB7CisgICAgaWYgKGVudW1lcmF0aW9uTWVtYmVy
TGl0ZXJhbC5lbnVtZXJhdGlvbk1lbWJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
YXV0byBlbnVtZXJhdGlvblR5cGVzID0gbV9uYW1lQ29udGV4dC5nZXRUeXBlcyhlbnVtZXJhdGlv
bk1lbWJlckxpdGVyYWwubGVmdCgpKSkgewogICAgICAgICBBU1NFUlQoZW51bWVyYXRpb25UeXBl
cy0+c2l6ZSgpID09IDEpOwogICAgICAgICBBU1Q6Ok5hbWVkVHlwZSYgdHlwZSA9ICgqZW51bWVy
YXRpb25UeXBlcylbMF07CiAgICAgICAgIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
bj4odHlwZSkpIHsKICAgICAgICAgICAgIEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4o
dHlwZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVyYXRpb25EZWZpbml0
aW9uLm1lbWJlckJ5TmFtZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZS5yaWdodCgpKSkgewotICAgICAgICAgICAgICAgIGNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlLnNldEVudW1lcmF0aW9uTWVtYmVyKGVudW1lcmF0aW9uRGVm
aW5pdGlvbiwgKm1lbWJlcik7CisgICAgICAgICAgICBpZiAoYXV0byogbWVtYmVyID0gZW51bWVy
YXRpb25EZWZpbml0aW9uLm1lbWJlckJ5TmFtZShlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwucmln
aHQoKSkpIHsKKyAgICAgICAgICAgICAgICBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuc2V0RW51
bWVyYXRpb25NZW1iZXIoZW51bWVyYXRpb25EZWZpbml0aW9uLCAqbWVtYmVyKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzNCwyMiArMjQw
LDIyIEBAIHZvaWQgTmFtZVJlc29sdmVyOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVu
dW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zCiBib29sIHJlc29sdmVOYW1lc0luVHlwZXMo
UHJvZ3JhbSYgcHJvZ3JhbSwgTmFtZVJlc29sdmVyJiBuYW1lUmVzb2x2ZXIpCiB7CiAgICAgZm9y
IChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmluaXRpb25zKCkpIHsKLSAg
ICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlR5
cGVEZWZpbml0aW9uJj4odHlwZURlZmluaXRpb24pKTsKKyAgICAgICAgbmFtZVJlc29sdmVyLmNo
ZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbik7CiAgICAgICAgIGlmIChuYW1lUmVzb2x2
ZXIuZXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZm9yIChh
dXRvJiBzdHJ1Y3R1cmVEZWZpbml0aW9uIDogcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygp
KSB7Ci0gICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJj4oc3RydWN0dXJlRGVmaW5pdGlvbikpOworICAgICAg
ICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOwog
ICAgICAgICBpZiAobmFtZVJlc29sdmVyLmVycm9yKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25EZWZpbml0aW9uIDogcHJvZ3Jh
bS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkpIHsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVu
dW1lcmF0aW9uRGVmaW5pdGlvbikpOworICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFu
ZFZpc2l0KGVudW1lcmF0aW9uRGVmaW5pdGlvbik7CiAgICAgICAgIGlmIChuYW1lUmVzb2x2ZXIu
ZXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgZm9yIChhdXRv
JiBuYXRpdmVUeXBlRGVjbGFyYXRpb24gOiBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMo
KSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0
PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJj4obmF0aXZlVHlwZURlY2xhcmF0aW9uKSk7Cisg
ICAgICAgIG5hbWVSZXNvbHZlci5jaGVja0Vycm9yQW5kVmlzaXQobmF0aXZlVHlwZURlY2xhcmF0
aW9uKTsKICAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5lcnJvcigpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTI1OSwxNCArMjY1LDE0IEBAIGJvb2wgcmVzb2x2ZU5hbWVz
SW5UeXBlcyhQcm9ncmFtJiBwcm9ncmFtLCBOYW1lUmVzb2x2ZXImIG5hbWVSZXNvbHZlcikKIGJv
b2wgcmVzb2x2ZU5hbWVzSW5GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgTmFtZVJlc29sdmVy
JiBuYW1lUmVzb2x2ZXIpCiB7CiAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBw
cm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0
Q3VycmVudEZ1bmN0aW9uRGVmaW5pdGlvbigmc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKLSAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNr
RXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiY+KGZ1bmN0
aW9uRGVmaW5pdGlvbikpOworICAgICAgICBuYW1lUmVzb2x2ZXIuc2V0Q3VycmVudEZ1bmN0aW9u
RGVmaW5pdGlvbigmZnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICAgICAgbmFtZVJlc29sdmVyLmNo
ZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlZmluaXRpb24pOwogICAgICAgICBpZiAobmFtZVJl
c29sdmVyLmVycm9yKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIG5h
bWVSZXNvbHZlci5zZXRDdXJyZW50RnVuY3Rpb25EZWZpbml0aW9uKG51bGxwdHIpOwogICAgIGZv
ciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnMoKSkgewotICAgICAgICBuYW1lUmVzb2x2ZXIuY2hlY2tFcnJvckFuZFZp
c2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiY+KG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pKTsKKyAgICAgICAgbmFtZVJlc29sdmVyLmNoZWNrRXJyb3JBbmRWaXNpdChu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKICAgICAgICAgaWYgKG5hbWVSZXNvbHZlci5lcnJv
cigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCmluZGV4
IGM3MmUwOGUwNjIxMDY3ZGJlMTkwY2EwNDA2OGE5ZTlhNzBiZmRjZjEuLjY1MTg5ZTJhODM1YjY4
NTFlNWUwZDBhYWUxY2E4YWVjYWYyYjM3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApAQCAtNjIsNyArNjIs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Np
b24mKSBvdmVycmlkZTsKICAgICB2b2lkIHZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVy
ZW5jZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxp
dGVyYWwmKSBvdmVycmlkZTsKIAogICAgIE5hbWVDb250ZXh0IG1fbmFtZUNvbnRleHQ7CiAgICAg
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qIG1fY3VycmVudEZ1bmN0aW9uIHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmgK
aW5kZXggM2NmNjZjZWQyMjBmNjMyYTk3YzNhNDFlOWQ4OTVmZDVmMTJiYWYzYy4uNTY3MWM0NTEz
YWQ2ZWJmMzUzYWE5MjgxOWI5MjE3OTVkY2FhZDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5oCkBAIC0zOSw3ICszOSw2IEBACiAj
aW5jbHVkZSAiV0hMU0xDYWxsRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMQ29tbWFFeHBy
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKLSNpbmNsdWRl
ICJXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiV0hMU0xDb250aW51ZS5oIgogI2luY2x1ZGUgIldITFNMRGVyZWZlcmVuY2VFeHBy
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaAppbmRleCBjOTNhNzY3
ZjhmZDk0ZjhiMmM3ZWI1YzczZTUxZDRiMzE1MTdjYzc0Li44MTUxMGQzM2M5ODkyNWY0OTg0YWFi
ZWQwZGI0MWMwMzg3NTU4MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFByb2dyYW0uaApAQCAtNDksMzkgKzQ5LDM5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFwcGVuZChBU1Q6OlR5cGVEZWZpbml0aW9uJiYgdHlwZURlZmluaXRpb24pCiAgICAg
ewogICAgICAgICBtX3R5cGVEZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlR5
cGVEZWZpbml0aW9uPihXVEZNb3ZlKHR5cGVEZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1cm4g
bV9uYW1lQ29udGV4dC5hZGQoc3RhdGljX2Nhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbiY+KG1fdHlw
ZURlZmluaXRpb25zLmxhc3QoKSkpOworICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQo
bV90eXBlRGVmaW5pdGlvbnMubGFzdCgpKTsKICAgICB9CiAKICAgICBib29sIGFwcGVuZChBU1Q6
OlN0cnVjdHVyZURlZmluaXRpb24mJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQogICAgIHsKICAgICAg
ICAgbV9zdHJ1Y3R1cmVEZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlN0cnVj
dHVyZURlZmluaXRpb24+KFdURk1vdmUoc3RydWN0dXJlRGVmaW5pdGlvbikpKTsKLSAgICAgICAg
cmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKHN0YXRpY19jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbiY+KG1fc3RydWN0dXJlRGVmaW5pdGlvbnMubGFzdCgpKSk7CisgICAgICAgIHJldHVybiBt
X25hbWVDb250ZXh0LmFkZChtX3N0cnVjdHVyZURlZmluaXRpb25zLmxhc3QoKSk7CiAgICAgfQog
CiAgICAgYm9vbCBhcHBlbmQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24pCiAgICAgewogICAgICAgICBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnMuYXBw
ZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24+KFdURk1vdmUoZW51
bWVyYXRpb25EZWZpbml0aW9uKSkpOwotICAgICAgICByZXR1cm4gbV9uYW1lQ29udGV4dC5hZGQo
c3RhdGljX2Nhc3Q8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mPihtX2VudW1lcmF0aW9uRGVm
aW5pdGlvbnMubGFzdCgpKSk7CisgICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChtX2Vu
dW1lcmF0aW9uRGVmaW5pdGlvbnMubGFzdCgpKTsKICAgICB9CiAKICAgICBib29sIGFwcGVuZChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYmIGZ1bmN0aW9uRGVmaW5pdGlvbikKICAgICB7CiAgICAg
ICAgIG1fZnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbj4oV1RGTW92ZShmdW5jdGlvbkRlZmluaXRpb24pKSk7Ci0gICAgICAgIHJl
dHVybiBtX25hbWVDb250ZXh0LmFkZChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlv
biY+KG1fZnVuY3Rpb25EZWZpbml0aW9ucy5sYXN0KCkpKTsKKyAgICAgICAgcmV0dXJuIG1fbmFt
ZUNvbnRleHQuYWRkKG1fZnVuY3Rpb25EZWZpbml0aW9ucy5sYXN0KCkpOwogICAgIH0KIAogICAg
IGJvb2wgYXBwZW5kKEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYmIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pCiAgICAgewogICAgICAgICBtX25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4o
V1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpOwotICAgICAgICBtX2ludHJpbnNp
Y3MuYWRkKHN0YXRpY19jYXN0PEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiY+KG1fbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVD
b250ZXh0LmFkZChzdGF0aWNfY2FzdDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mPiht
X25hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zLmxhc3QoKSkpOworICAgICAgICBtX2ludHJpbnNp
Y3MuYWRkKG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1fbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMubGFzdCgp
KTsKICAgICB9CiAKICAgICBib29sIGFwcGVuZChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYm
IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikKICAgICB7CiAgICAgICAgIG1fbmF0aXZlVHlwZURlY2xh
cmF0aW9ucy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4o
V1RGTW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKSk7Ci0gICAgICAgIG1faW50cmluc2ljcy5h
ZGQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mPihtX25hdGl2ZVR5cGVE
ZWNsYXJhdGlvbnMubGFzdCgpKSk7Ci0gICAgICAgIHJldHVybiBtX25hbWVDb250ZXh0LmFkZChz
dGF0aWNfY2FzdDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiY+KG1fbmF0aXZlVHlwZURlY2xh
cmF0aW9ucy5sYXN0KCkpKTsKKyAgICAgICAgbV9pbnRyaW5zaWNzLmFkZChtX25hdGl2ZVR5cGVE
ZWNsYXJhdGlvbnMubGFzdCgpKTsKKyAgICAgICAgcmV0dXJuIG1fbmFtZUNvbnRleHQuYWRkKG1f
bmF0aXZlVHlwZURlY2xhcmF0aW9ucy5sYXN0KCkpOwogICAgIH0KIAogICAgIE5hbWVDb250ZXh0
JiBuYW1lQ29udGV4dCgpIHsgcmV0dXJuIG1fbmFtZUNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0
aW9uRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAppbmRleCA2M2ZlZmI0M2RjN2Uw
NTllYTFlMzJjZDkyOGZlYWVmNmNjOTk0NjEwLi44MzQ1NDgzNGY5MjBmZDMxYjM4NDM5Mzc5MGU2
MTYwY2E3YzM1YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25G
dW5jdGlvbnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisj
aW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKICNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIK
ICNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIKIApAQCAtNDEsOCArNDIsOCBAQCB2b2lk
IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAgIGJv
b2wgaXNSZXN0cmljdGVkID0gZmFsc2U7CiAgICAgZm9yIChhdXRvJiBlbnVtZXJhdGlvbkRlZmlu
aXRpb24gOiBwcm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSkgewogICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbjEo
TGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxp
ZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0
aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVm
aW5pdGlvbiY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCk7Ci0gICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24g
dmFyaWFibGVEZWNsYXJhdGlvbjIoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
TGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNfY2Fz
dDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikpIH0s
IFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbjEoTGV4ZXI6OlRva2VuKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pIH0sIFN0cmluZygpLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24g
dmFyaWFibGVEZWNsYXJhdGlvbjIoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
TGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJhdGlv
bkRlZmluaXRpb24pIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAg
ICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24xKSk7CiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24y
KSk7CkBAIC01MCwzMSArNTEsMjggQEAgdm9pZCBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUo
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIGEgbnVsbCBiYXNlIHR5cGUuCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVu
dW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1l
cmF0aW9uRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCk7Ci0gICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJz
OwotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNs
YXJhdGlvbikpOwotICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhl
cjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRl
QmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS0+Y2xv
bmUoKSwgIm9wZXJhdG9yLnZhbHVlIl9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVs
bG9wdCwgaXNPcGVyYXRvciksIGlzUmVzdHJpY3RlZCk7Ci0gICAgICAgICAgICAgICAgcHJvZ3Jh
bS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJp
YWJsZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdp
bigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVy
OjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgZW51bWVyYXRpb25EZWZp
bml0aW9uKSB9LCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOworICAgICAgICAgICAg
cGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7CisgICAgICAg
ICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVm
aW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwg
ZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCkuY2xvbmUoKSwgIm9wZXJhdG9yLnZhbHVlIl9z
dHIsIFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvciksIGlzUmVz
dHJpY3RlZCk7CisgICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6
OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMo
KSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVm
aW5pdGlvbi0+b3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
biY+KGVudW1lcmF0aW9uRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCk7Ci0gICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBw
YXJhbWV0ZXJzOwotICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFy
aWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbihMZXhlcjo6VG9rZW4oZW51bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5
cGUoKS0+Y2xvbmUoKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
V1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSwgaXNSZXN0cmljdGVkKTsKLSAgICAgICAgICAgICAg
ICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0
aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+b3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBBU1Q6OlR5cGVSZWZlcmVuY2U6Ondy
YXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+b3JpZ2luKCkpLCBlbnVtZXJh
dGlvbkRlZmluaXRpb24pIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CisgICAg
ICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsK
KyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oZW51bWVy
YXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpu
dWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKS5jbG9uZSgpLCAib3BlcmF0b3Ig
Y2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3Ip
LCBpc1Jlc3RyaWN0ZWQpOworICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9u
KExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRlZmluaXRpb24tPm9yaWdpbigpKSwgQVNUOjpRdWFs
aWZpZXJzKCksIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLT5jbG9uZSgpLCBTdHJpbmco
KSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwotICAgICAgICAgICAgICAgIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXJz
LmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgICAgICBB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlv
bi0+b3JpZ2luKCkpLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgeyBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+
b3JpZ2luKCkpLCBzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KGVudW1l
cmF0aW9uRGVmaW5pdGlvbikpIH0sICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIFdURjo6bnVsbG9wdCwgaXNPcGVyYXRvciksIGlzUmVzdHJpY3RlZCk7Ci0gICAgICAg
ICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
KSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiB2YXJpYWJsZURlY2xhcmF0aW9uKExleGVyOjpUb2tlbihlbnVtZXJhdGlvbkRl
ZmluaXRpb24tPm9yaWdpbigpKSwgQVNUOjpRdWFsaWZpZXJzKCksIGVudW1lcmF0aW9uRGVmaW5p
dGlvbi0+dHlwZSgpLmNsb25lKCksIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24p
KTsKKyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhlcjo6VG9rZW4oZW51
bWVyYXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RG
OjpudWxsb3B0LCB7IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oZW51bWVy
YXRpb25EZWZpbml0aW9uLT5vcmlnaW4oKSksIGVudW1lcmF0aW9uRGVmaW5pdGlvbikgfSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09w
ZXJhdG9yKSwgaXNSZXN0cmljdGVkKTsKKyAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1v
dmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVz
aXplU3RydWN0dXJlQWNjZXNzb3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAKaW5kZXggYjM0MjJk
ZGIzNTliNWRhYWY1ZDE5MmQ1NDc1NWY2ZTg2ZDc5Nzg1Ni4uYjk5ZGM3NzBiNWRmY2I0MGE1NjA1
Y2VkZmIxMzQ0M2RmZGRiZGE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1
cmVBY2Nlc3NvcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQog
CisjaW5jbHVkZSAiV0hMU0xBZGRyZXNzU3BhY2UuaCIKICNpbmNsdWRlICJXSExTTFBvaW50ZXJU
eXBlLmgiCiAjaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV0hMU0xSZWZlcmVu
Y2VUeXBlLmgiCkBAIC00Niw3ICs0Nyw3IEBAIHZvaWQgc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vz
c29ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1l
bnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLT5zdHJ1Y3R1cmVFbGVtZW50cygpKSB7CiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGdldHRlcjogb3BlcmF0b3IuZmllbGQKLSAg
ICAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlv
bihMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6UXVhbGlmaWVy
cygpLCB7IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxl
bWVudC5vcmlnaW4oKSksIHN0YXRpY19jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiY+KHN0
cnVjdHVyZURlZmluaXRpb24pKSB9LCBTdHJpbmcoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiB2YXJpYWJsZURl
Y2xhcmF0aW9uKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpR
dWFsaWZpZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1
Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikgfSwgU3RyaW5nKCks
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICBBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7CiAgICAgICAgICAgICAgICAgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdp
bigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIHN0cnVjdHVyZUVsZW1l
bnQudHlwZSgpLmNsb25lKCksIFN0cmluZzo6Zm9ybWF0KCJvcGVyYXRvci4lcyIsIHN0cnVjdHVy
ZUVsZW1lbnQubmFtZSgpLnV0ZjgoKS5kYXRhKCkpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6
Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jlc3RyaWN0ZWQpOwpAQCAtNTUsMTggKzU2LDE4IEBA
IHZvaWQgc3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycyhQcm9ncmFtJiBwcm9ncmFtKQogCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIHNldHRlcjogb3BlcmF0b3IuZmll
bGQ9Ci0gICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVj
bGFyYXRpb24xKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpR
dWFsaWZpZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpUb2tlbihzdHJ1
Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgc3RhdGljX2Nhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uJj4oc3RydWN0dXJlRGVmaW5pdGlvbikpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uIHZh
cmlhYmxlRGVjbGFyYXRpb24xKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigp
KSwgQVNUOjpRdWFsaWZpZXJzKCksIHsgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKExleGVyOjpU
b2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgc3RydWN0dXJlRGVmaW5pdGlvbikgfSwg
U3RyaW5nKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24gdmFyaWFibGVEZWNsYXJhdGlvbjIoTGV4ZXI6OlRva2Vu
KHN0cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBzdHJ1Y3R1
cmVFbGVtZW50LnR5cGUoKS5jbG9uZSgpIH0sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJh
bWV0ZXJzOwogICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbjEpKTsKICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZN
b3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24yKSk7Ci0gICAgICAgICAgICAgICAgQVNUOjpOYXRpdmVG
dW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChMZXhlcjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIHN0YXRpY19jYXN0PEFT
VDo6U3RydWN0dXJlRGVmaW5pdGlvbiY+KHN0cnVjdHVyZURlZmluaXRpb24pKSwgU3RyaW5nOjpm
b3JtYXQoIm9wZXJhdG9yLiVzPSIsIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpLnV0ZjgoKS5kYXRh
KCkpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jl
c3RyaWN0ZWQpOworICAgICAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
biBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihMZXhl
cjo6VG9rZW4oc3RydWN0dXJlRWxlbWVudC5vcmlnaW4oKSksIEFTVDo6QXR0cmlidXRlQmxvY2so
KSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKHN0
cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBzdHJ1Y3R1cmVEZWZpbml0aW9uKSwgU3RyaW5nOjpm
b3JtYXQoIm9wZXJhdG9yLiVzPSIsIHN0cnVjdHVyZUVsZW1lbnQubmFtZSgpLnV0ZjgoKS5kYXRh
KCkpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIGlzT3BlcmF0b3IpLCBpc1Jl
c3RyaWN0ZWQpOwogICAgICAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBU
aGUgYW5kZXI6IG9wZXJhdG9yJi5maWVsZAotICAgICAgICAgICAgYXV0byBjcmVhdGVBbmRlciA9
IFsmXShBU1Q6OlJlZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZSBhZGRyZXNzU3BhY2UpIC0+IEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiB7Ci0gICAgICAgICAgICAgICAgYXV0byBhcmd1
bWVudFR5cGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UG9pbnRlclR5cGU+KExleGVyOjpUb2tlbihz
dHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgYWRkcmVzc1NwYWNlLCBBU1Q6OlR5cGVSZWZlcmVu
Y2U6OndyYXAoTGV4ZXI6OlRva2VuKHN0cnVjdHVyZUVsZW1lbnQub3JpZ2luKCkpLCBzdGF0aWNf
Y2FzdDxBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mPihzdHJ1Y3R1cmVEZWZpbml0aW9uKSkpOwor
ICAgICAgICAgICAgYXV0byBjcmVhdGVBbmRlciA9IFsmXShBU1Q6OkFkZHJlc3NTcGFjZSBhZGRy
ZXNzU3BhY2UpIC0+IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiB7CisgICAgICAgICAg
ICAgICAgYXV0byBhcmd1bWVudFR5cGUgPSBtYWtlVW5pcXVlUmVmPEFTVDo6UG9pbnRlclR5cGU+
KExleGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgYWRkcmVzc1NwYWNlLCBB
U1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAoTGV4ZXI6OlRva2VuKHN0cnVjdHVyZUVsZW1lbnQub3Jp
Z2luKCkpLCBzdHJ1Y3R1cmVEZWZpbml0aW9uKSk7CiAgICAgICAgICAgICAgICAgQVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uIHZhcmlhYmxlRGVjbGFyYXRpb24oTGV4ZXI6OlRva2VuKHN0cnVjdHVy
ZUVsZW1lbnQub3JpZ2luKCkpLCBBU1Q6OlF1YWxpZmllcnMoKSwgeyBXVEZNb3ZlKGFyZ3VtZW50
VHlwZSkgfSwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAg
ICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7CkBA
IC03NCwxMCArNzUsMTAgQEAgdm9pZCBzeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzKFByb2dy
YW0mIHByb2dyYW0pCiAgICAgICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKExl
eGVyOjpUb2tlbihzdHJ1Y3R1cmVFbGVtZW50Lm9yaWdpbigpKSwgQVNUOjpBdHRyaWJ1dGVCbG9j
aygpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmV0dXJuVHlwZSksIFN0cmluZzo6Zm9ybWF0KCJv
cGVyYXRvciYuJXMiLCBzdHJ1Y3R1cmVFbGVtZW50Lm5hbWUoKS51dGY4KCkuZGF0YSgpKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBpc09wZXJhdG9yKSwgaXNSZXN0cmljdGVk
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKICAg
ICAgICAgICAgIH07Ci0gICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChjcmVhdGVBbmRlcihBU1Q6
OlJlZmVyZW5jZVR5cGU6OkFkZHJlc3NTcGFjZTo6Q29uc3RhbnQpKTsKLSAgICAgICAgICAgIHBy
b2dyYW0uYXBwZW5kKGNyZWF0ZUFuZGVyKEFTVDo6UmVmZXJlbmNlVHlwZTo6QWRkcmVzc1NwYWNl
OjpEZXZpY2UpKTsKLSAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKGNyZWF0ZUFuZGVyKEFTVDo6
UmVmZXJlbmNlVHlwZTo6QWRkcmVzc1NwYWNlOjpUaHJlYWRncm91cCkpOwotICAgICAgICAgICAg
cHJvZ3JhbS5hcHBlbmQoY3JlYXRlQW5kZXIoQVNUOjpSZWZlcmVuY2VUeXBlOjpBZGRyZXNzU3Bh
Y2U6OlRocmVhZCkpOworICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoY3JlYXRlQW5kZXIoQVNU
OjpBZGRyZXNzU3BhY2U6OkNvbnN0YW50KSk7CisgICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChj
cmVhdGVBbmRlcihBU1Q6OkFkZHJlc3NTcGFjZTo6RGV2aWNlKSk7CisgICAgICAgICAgICBwcm9n
cmFtLmFwcGVuZChjcmVhdGVBbmRlcihBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkZ3JvdXApKTsK
KyAgICAgICAgICAgIHByb2dyYW0uYXBwZW5kKGNyZWF0ZUFuZGVyKEFTVDo6QWRkcmVzc1NwYWNl
OjpUaHJlYWQpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCmluZGV4IDdmZDM2NzVhYTNh
MWIzN2MyOTZhMzJjOTVjZWU4MmRhZGY2OWE0OGIuLjUyZDJlOGZjY2I0NzRhOTBlMGUzNDUyZDAx
NWU1YzZiMzlmNDA1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMVmlzaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldI
TFNMQ2FsbEV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJXSExTTENvbW1hRXhwcmVzc2lvbi5oIgog
I2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCi0jaW5jbHVkZSAiV0hMU0xDb25z
dGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldI
TFNMQ29udGludWUuaCIKICNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgog
I2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJXSExTTEVu
dW1lcmF0aW9uRGVmaW5pdGlvbi5oIgogI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIu
aCIKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbC5oIgogI2luY2x1ZGUg
IldITFNMRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2guaCIKICNpbmNs
dWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgpAQCAtMTA0LDE3ICsxMDQsMTcgQEAgdm9pZCBWaXNp
dG9yOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIC8vIFRoZXNlIHZpc2l0aW5nIGZ1
bmN0aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBzbyBkb24ndCB1c2UgZm9y
ZWFjaCBzeW50YXguCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLnR5cGVEZWZp
bml0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbiY+KHByb2dyYW0udHlwZURlZmluaXRpb25zKClbaV0p
KTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHByb2dyYW0udHlwZURlZmluaXRpb25zKClb
aV0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0
aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nh
c3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJj4ocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9u
cygpW2ldKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChwcm9ncmFtLnN0cnVjdHVyZURl
ZmluaXRpb25zKClbaV0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5lbnVt
ZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KHByb2dyYW0uZW51
bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChw
cm9ncmFtLmVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKVtpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9u
Jj4ocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pKTsKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpW2ldKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXpl
KCk7ICsraSkKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiY+KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bnMoKVtpXSkpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocHJvZ3JhbS5uYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9ucygpW2ldKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dy
YW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mPihwcm9n
cmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKVtpXSkpOworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClbaV0pOwogfQogCiB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQpAQCAtMTU4LDggKzE1
OCw3IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJiBzdHJ1
Y3R1cmVEZWZpbml0aW9uKQogCiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25E
ZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRpb24pCiB7Ci0gICAgaWYgKGVudW1lcmF0aW9u
RGVmaW5pdGlvbi50eXBlKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OlVubmFtZWRUeXBlJj4oKmVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpKTsKKyAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUoKSk7CiAgICAg
Zm9yIChhdXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVt
ZXJhdGlvbk1lbWJlcnMoKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9u
TWVtYmVyKTsKIH0KQEAgLTIzNCw3ICsyMzMsNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCiAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNzaW9uKSB7CiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjb25zdGFudEV4cHJlc3Npb24pOwogICAgIH0sIFsm
XShVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgewotICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpUeXBlUmVmZXJlbmNlJj4odHlw
ZVJlZmVyZW5jZSkpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZVJlZmVyZW5jZSk7
CiAgICAgfSksIHR5cGVBcmd1bWVudCk7CiB9CiAKQEAgLTI2OCw4ICsyNjcsOCBAQCB2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24p
CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChudWxsTGl0ZXJhbCk7CiAgICAgfSwgWyZdKEFT
VDo6Qm9vbGVhbkxpdGVyYWwmIGJvb2xlYW5MaXRlcmFsKSB7CiAgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChib29sZWFuTGl0ZXJhbCk7Ci0gICAgfSwgWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNz
aW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0
aW9uTWVtYmVyUmVmZXJlbmNlKSB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSk7CisgICAgfSwgWyZdKEFTVDo6
RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJiBlbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwpIHsKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVyTGl0ZXJhbCk7CiAgICAg
fSkpOwogfQogCkBAIC0zNDYsNyArMzQ1LDcgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51
bGxMaXRlcmFsVHlwZSYgbnVsbExpdGVyYWxUeXBlKQogICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKm51bGxMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7CiB9CiAKLXZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYp
Cit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsJikKIHsK
IH0KIApAQCAtMzY0LDcgKzM2Myw3IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUmKQogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJsb2NrJiBi
bG9jaykKIHsKICAgICBmb3IgKGF1dG8mIHN0YXRlbWVudCA6IGJsb2NrLnN0YXRlbWVudHMoKSkK
LSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6U3RhdGVtZW50Jj4o
c3RhdGVtZW50KSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0ZW1lbnQpOwogfQog
CiB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCkBAIC00NTEs
NiArNDUwLDggQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Np
b24pCiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7CiAgICAgZWxzZSBpZiAoaXM8QVNUOjpVbnNpZ25lZEludGVn
ZXJMaXRlcmFsPihleHByZXNzaW9uKSkKICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAgIGVsc2Ug
aWYgKGlzPEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25NZW1iZXJMaXRl
cmFsPihleHByZXNzaW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChpczxBU1Q6OlZh
cmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CiAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNp
dChkb3duY2FzdDxBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlPihleHByZXNzaW9uKSk7CkBAIC00ODcs
NyArNDg4LDcgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCiAg
ICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkgewogICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwogICAgIH0s
IFsmXShVbmlxdWVSZWY8QVNUOjpFeHByZXNzaW9uPiYgZXhwcmVzc2lvbikgewotICAgICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFeHByZXNzaW9uJj4oZXhwcmVzc2lv
bikpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7CiAgICAgfSksIGZv
ckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7CiAgICAgaWYgKGZvckxvb3AuY29uZGl0aW9uKCkpCiAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7CkBAIC01MDEs
NyArNTAyLDcgQEAgdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OklmU3RhdGVtZW50JiBpZlN0YXRl
bWVudCkKICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7
CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CiAgICAgaWYgKGlm
U3RhdGVtZW50LmVsc2VCb2R5KCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OlN0YXRlbWVudCY+KCppZlN0YXRlbWVudC5lbHNlQm9keSgpKSk7CisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSk7CiB9CiAKIHZvaWQg
VmlzaXRvcjo6dmlzaXQoQVNUOjpSZXR1cm4mIHJldHVyblN0YXRlbWVudCkKQEAgLTU1OSw3ICs1
NjAsNyBAQCB2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24mIGFz
c2lnbm1lbnRFeHByZXNzaW9uKQogdm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNhbGxFeHByZXNz
aW9uJiBjYWxsRXhwcmVzc2lvbikKIHsKICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogY2FsbEV4
cHJlc3Npb24uYXJndW1lbnRzKCkpCi0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OkV4cHJlc3Npb24mPihhcmd1bWVudCkpOworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYXJndW1lbnQpOwogICAgIGlmIChjYWxsRXhwcmVzc2lvbi5jYXN0UmV0dXJuVHlwZSgp
KQogICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5
cGUoKS0+Z2V0KCkpOwogfQpAQCAtNTY3LDcgKzU2OCw3IEBAIHZvaWQgVmlzaXRvcjo6dmlzaXQo
QVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCiB2b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6Q29tbWFFeHByZXNzaW9uJiBjb21tYUV4cHJlc3Npb24pCiB7CiAgICAgZm9yIChhdXRv
JiBleHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkKLSAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RXhwcmVzc2lvbiY+KGV4cHJlc3Npb24pKTsKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24pOwogfQogCiB2b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZp
c2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRv
ci5oCmluZGV4IGE2YWUyOTNhOWI4MzZkMTVhYTE2N2I3ZDQwOWZiMmE2ZTY0NWI0M2MuLmE1ZTRj
OTZkOGEwMWMyMzEzODJkMDZlN2EzOWY2MWM2YjJlM2JjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCkBAIC02Myw3ICs2Myw3
IEBAIGNsYXNzIFVuc2lnbmVkSW50ZWdlckxpdGVyYWw7CiBjbGFzcyBGbG9hdExpdGVyYWw7CiBj
bGFzcyBOdWxsTGl0ZXJhbDsKIGNsYXNzIEJvb2xlYW5MaXRlcmFsOwotY2xhc3MgQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2U7CitjbGFzcyBFbnVtZXJhdGlvbk1l
bWJlckxpdGVyYWw7CiBjbGFzcyBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU7CiBjbGFzcyBC
bG9jazsKIGNsYXNzIFN0YXRlbWVudDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJik7CiAgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6TnVsbExpdGVyYWxUeXBlJik7Ci0gICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYpOwogICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpOwogICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ5Mzg0NGI4OGQ1MDY0MzQx
MjUwYjRkZGQ1ZmMwNTEzNWI4Nzc3Ny4uZjJmNTE1YTRlNDNlNTE5ZjRmMzQ5NDc0ZTcxNDkyNTM5
YmY4NDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjQwNiw3ICs2NDA2LDYgQEAKIAkJMUMyNEVFQTcxQzcyQTdCNDAwODBG
OEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
SlNGb250RmFjZVNldC5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZvbnRGYWNl
U2V0Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFDMjY0OTc5MEQ3
RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDMzI0OTEwMUM2RDZBM0IwMDdFREIzMiAvKiBGb250VmFyaWFudEJ1
aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udFZhcmlh
bnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUMzMzI3NkMyMUNF
REE0MjAwMERDOUYyIC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDMzMyNzcxMjFDRjBCRTEwMDBEQzlGMiAvKiBXSExTTE5hbWVkVHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTE5hbWVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzMzMjc3MjIxQ0YwRDJFMDAwREM5RjIgLyogV0hMU0xVbm5hbWVkVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFVubmFtZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDMzk2OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDE1LDYgKzY0MTQsOCBAQAogCQkx
QzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0
b3JDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzgx
Qjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEVudHJ5UG9pbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDODQwQjkwMjFFQzMwRjkwMEQwNTAwRCAvKiBXSExTTEFkZHJlc3NT
cGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJlc3NTcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQzkwNERGOTBCQTlEMkM4MDA4MUU5RDAgLyogVmVyc2lvbi54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBWZXJzaW9uLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ExOUUwMzBEQzI1NTk1MDA2NUE5OTQgLyog
RXZlbnRMb29wTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RXZlbnRMb29wTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ExOUUxNTBE
QzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV2ZW50TG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyNjcs
NyArMTMyNjgsNyBAQAogCQlDMjFCRjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTElmU3RhdGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZhbGx0aHJv
dWdoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRmFsbHRocm91Z2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRGVyZWZlcmVu
Y2VFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMUJGNzAyMjFDRDg5QzQwMDIyNzk3
OSAvKiBXSExTTENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxQkY3MDIyMUNEODlD
NDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMRW51bWVyYXRpb25NZW1iZXJMaXRlcmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyMUJGNzAzMjFDRDg5QzUwMDIyNzk3OSAvKiBXSExTTFJldHVybi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFJldHVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjFCRjcwNDIxQ0Q4OUM2MDAyMjc5NzkgLyogV0hMU0xXaGlsZUxvb3AuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xXaGlsZUxvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxQkY3
MDUyMUNEODlDNzAwMjI3OTc5IC8qIFdITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMzMjMsNiArMTMzMjQsMTAgQEAKIAkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5IC8q
IFdITFNMUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByb2dyYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxQkY3NDIyMUNEOTYzQjAwMjI3OTc5IC8qIFdITFNMU3Rh
bmRhcmRMaWJyYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdITFNMU3RhbmRhcmRMaWJyYXJ5Lmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1dITFNMU3RhbmRhcmRMaWJyYXJ5Lmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3
OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0hMU0xTdGFuZGFyZExpYnJhcnku
dHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjFERjJFNzFEOUU0RTk5MDBGNUIy
NEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9u
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlv
blZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMzRBOTg1MjFFODg2QTkw
MDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xWaXNp
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzNEE5ODcyMUU4ODZBRDAw
M0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFZpc2l0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIzNEE5OEEyMUU4ODgzRTAwM0M5ODREIC8q
IFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmFtZVJlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIzNEE5OEMyMUU4ODgzRTAw
M0M5ODREIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTmFtZVJl
c29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMzRBOThEMjFFODg4ODQw
MDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNM
TmFtZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNDYsMTAg
KzEzMzUxLDYgQEAKIAkJQzIzNEE5QjUyMUU5MkMyMzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6
ZVN0cnVjdHVyZUFjY2Vzc29ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN5bnRoZXNpemVTdHJ1
Y3R1cmVBY2Nlc3NvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIzNEE5QjYy
MUU5MkNDMDAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TEludHJpbnNpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIzNEE5QjcyMUU5
MkNDMTAwM0M5ODREIC8qIFdITFNMSW50cmluc2ljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
SExTTEludHJpbnNpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDMjFERjJF
NzFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0QyAvKiBD
U1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTRm9udFZhcmlhdGlvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
MzRBOTg1MjFFODg2QTkwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQzIz
NEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
SExTTFZpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThFNjExRkU4
OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRD
YWNoZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNjAxN0ExMUM3
MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNjAxN0EyMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250RmFjZVNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0NTEsNiArMjU0NTIsNyBAQAogCQlDMjFCRjZGMTIx
Q0Q4OThEMDAyMjc5NzkgLyogQVNUICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3Bh
Y2UuaCAqLywKIAkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVy
ZW5jZVR5cGUuaCAqLywKIAkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJh
eVR5cGUuaCAqLywKIAkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25t
ZW50RXhwcmVzc2lvbi5oICovLApAQCAtMjU0NjQsMTUgKzI1NDY2LDE1IEBACiAJCQkJQzIxQkY3
MTYyMUNEODlENTAwMjI3OTc5IC8qIFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKIAkJCQlDMjFC
RjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKIAkJCQlD
MjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywK
LQkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb25F
bnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5oICovLAogCQkJCUMyMUJGNkY1MjFDRDg5QjUwMDIy
Nzk3OSAvKiBXSExTTENvbnRpbnVlLmggKi8sCiAJCQkJQzIxQkY3MDEyMUNEODlDNDAwMjI3OTc5
IC8qIFdITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmggKi8sCiAJCQkJQzIxQkY3MTgyMUNEODlE
NzAwMjI3OTc5IC8qIFdITFNMRG90RXhwcmVzc2lvbi5oICovLAogCQkJCUMyMUJGNkZCMjFDRDg5
QkUwMDIyNzk3OSAvKiBXSExTTERvV2hpbGVMb29wLmggKi8sCiAJCQkJQzIxQkY3MjgyMUNEODlF
NTAwMjI3OTc5IC8qIFdITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oICovLAorCQkJ
CTFDODQwQjdEMjFFQkUwQjgwMEQwNTAwRCAvKiBXSExTTEVudHJ5UG9pbnRUeXBlLmggKi8sCiAJ
CQkJQzIxQkY3MjAyMUNEODlERDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25EZWZpbml0aW9u
LmggKi8sCiAJCQkJQzIxQkY3MjYyMUNEODlFMzAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25N
ZW1iZXIuaCAqLywKLQkJCQkxQzMzMjc2QzIxQ0VEQTQyMDAwREM5RjIgLyogV0hMU0xFbnVtZXJh
dGlvbk1lbWJlckxpdGVyYWwuaCAqLywKKwkJCQlDMjFCRjcwMjIxQ0Q4OUM0MDAyMjc5NzkgLyog
V0hMU0xFbnVtZXJhdGlvbk1lbWJlckxpdGVyYWwuaCAqLywKIAkJCQlDMjFCRjcwQzIxQ0Q4OUND
MDAyMjc5NzkgLyogV0hMU0xFeHByZXNzaW9uLmggKi8sCiAJCQkJQzIxQkY3MDAyMUNEODlDMjAw
MjI3OTc5IC8qIFdITFNMRmFsbHRocm91Z2guaCAqLywKIAkJCQlDMjFCRjczNTIxQ0Q4OUYyMDAy
Mjc5NzkgLyogV0hMU0xGbG9hdExpdGVyYWwuaCAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>